PDA 에서 보기 좋은 형태의 클립 페이지 출력
- 제목 그대로.. 최근변경내역 페이지에서 자잘한 링크들을 제외하고, 각 페이지에서 상단 메뉴바와 하단 편집 가이드 등을 제외하여 출력한다. PDA 용 오프라인 웹브라우저로 긁어서 읽기 편한 형태로 출력한다.
- UseModWiki소스수정/ForPalm 를 참조하여 이 곳 소스에 맞게 작업. (진작에 했으면 그대로 베끼는 선에서 되었을지 모르는데.. 그 사이에 소스가 워낙 바뀐게 많아져서 결국 거의 대부분 새로 해야 했다.. ㅠ,.ㅠ)
- 사용법:
- wiki.pl?action=rc&pda=1[&days=숫자] 로 URL 을 지정하면 된다. (예: 이 홈페이지의 경우 http://gypark.pe.kr/cgi-bin/wiki/wiki.pl?action=rc&pda=1 )
- 최근변경내역이 간단한 형태로 출력된다.
- days 값은 최근 몇일 동안의 변경 내역을 출력할 지를 지정한다. 생략하면 기본값은 7이다. 매일 긁어올 경우는 값을 1로 주면 될 것이다.
- 오프라인 브라우저로 긁어올 때 깊이를 1 로 주면 된다.
- 아무 페이지라도 뒤에 pda=1 인자를 주면 마찬가지로 출력된다. (하지만 wiki.pl?페이지이름&pda=1 으로는 안 된다. wiki.pl?action=browse&id=페이지이름&pda=1 의 형식으로 해야 된다. 좀 불편하다)
- 부작용:
- 매우 지저분한 패치.. -_-; 원래의 UseModWiki 소스였다면 오히려 수월하게 수정했을 것을, 그동안 쌓인 이런저런 패치들 때문에 오히려 예전 소스의 코드들의 일부를 되살리는 형식의 패치가 되었다.
wiki.pl 수정
IsPDA 변수 추가
...
use vars qw(%RevisionTs $FS_lt $FS_gt $StartTime $Sec_Revision $Sec_Ts
$ViewCount $AnchoredFreeLinkPattern %UserInterest %HiddenPage
$pageid $IsPDA);
...
아래의 소스들은 예전에 다른 패치 때문에 수정되었던 부분들을 다시 수정하는 부분이 많으니 주의.
sub DoBrowseRequest {
...
$id = &GetParam('keywords', '');
$IsPDA = &GetParam("pda", "");
$EmbedWiki = 1 if ($IsPDA);
if ($id) {
...
} elsif ($action eq 'rc') {
if ($IsPDA) {
my $temp_id = T("$RCName");
print &GetHeader($temp_id, &QuoteHtml($temp_id), "");
&DoRc();
print $q->end_html;
} else {
&BrowsePage(T($RCName));
}
return 1;
} elsif ($action eq 'random') {
...
}
sub DoRc {
...
my $showbar = 0;
if ($IsPDA) {
$daysago = &GetParam("days", 0);
$daysago = 7 if ($daysago == 0);
$starttime = $Now - ((24*60*60)*$daysago);
print "<h2>$SiteName : " .
Ts('Updates in the last %s day' . (($daysago != 1)?"s":""), $daysago) . "</h2>\n";
} else {
if (&GetParam("sincelastvisit", 0)) {
...
}
}
($status, $fileData) = &ReadFile($RcFile);
...
print '<b>(' . Ts('for %s only', &ScriptLink($idOnly, $idOnly))
. ')</b><br>';
}
if (!($IsPDA)) {
foreach $i (@RcDays) {
print " | " if $showbar;
...
Ts('currently set to %s', &TimeToText($bookmark)).
")<br>\n";
}
}
$i = 0;
...
}
sub GetRcHtml {
...
$inlist = 0;
if ($IsPDA) {
$html = "";
} else {
$html = "<TABLE class='rc'>";
}
$all = &GetParam("rcall", 0);
...
if ($inlist) {
$html .= "</UL>\n" if ($IsPDA);
$inlist = 0;
...
if ($IsPDA) {
$html .= "<p><strong>" . $date . "</strong><p>\n";
} else {
$html .= "<TR class='rc'><TD colspan='6' class='rcblank'> </TD></TR>".
"<TR class='rc'>".
"<TD colspan=6 class='rcdate'><b>" . $date . "</b>";
if ($bookmarkuser eq "") {
$html .= "</TD></TR>\n";
} else {
$html .= " [" .&ScriptLink("action=bookmark&time=$ts",T('set bookmark')) ."]"
. "</TD></TR>\n";
}
}
}
if (!$inlist) {
$html .= "<UL>\n" if ($IsPDA);
$inlist = 1;
}
$host = &QuoteHtml($host);
if (defined($extra{'name'}) && defined($extra{'id'})) {
if ($IsPDA) {
$author = &GetPageLink($extra{'name'});
} else {
$author = &GetAuthorLink($host, $extra{'name'}, $extra{'id'});
}
} else {
$author = &GetAuthorLink($host, "", 0);
}
...
}
if (!($IsPDA)) {
$html .= "<TR class='rc'>"
. "<TD class='rc'>"
. ((defined ($UserInterest{$pagename}))?"$rcinterest":" ")
. "</TD>"
. "<TD class='rc'>$link </TD>"
. "<TD class='rcpage'>" . &GetPageOrEditLink($pagename) . "</TD>"
. "<TD class='rctime'>" . &CalcTime($ts) . "</TD>"
. "<TD class='rccount'>$count$edit</TD>"
. "<TD class='rcauthor'>$author</TD></TR>\n";
if ($sum ne "") {
$html .= "<TR class='rc'><TD colspan=2 class='rc'></TD>"
. "<TD colspan=4 class='rcsummary'> $sum</TD></TR>\n";
}
} else {
$link = &GetPageLink($pagename);
$html .= "<li>$link ... ";
$html .= &CalcTime($ts) . " - $author $sum\n";
}
}
if ($IsPDA) {
$html .= "</UL>\n";
} else {
$html .= "</table>";
}
return $html;
}
sub GetPageLink {
my ($id) = @_;
...
$name =~ s/_/ /g;
}
if ($IsPDA) {
return &ScriptLink("action=browse&pda=1&id=$id", $name);
}
return &ScriptLink($id, $name);
}
sub GetPageLinkText {
my ($id, $name) = @_;
...
}
if ($IsPDA) {
return &ScriptLink("action=browse&pda=1&id=$id", $name);
}
return &ScriptLink($id, $name);
}
sub GetHeader {
...
$result .= &GetHtmlHeader("$SiteName: $title", $title);
if ($IsPDA) {
$result .= "<h1>$title</h1>\n<hr>";
}
return $result if ($embed);
...
}
Notes
ext1.50a - URL 에 days 인자를 주어 변경내역에서 출력할 날의 범위를 지정할 수 있게 함
위키위키분류