allpagesfrom 매크로 추가
- 특정한 페이지 안에 있는 링크의 목록을 출력하는 매크로. <allpagesto> 와 반대의 개념.
- 사용법 - <allpagesfrom(페이지이름[,옵션])>
- 페이지이름은 "페이지" 또는 "상위페이지/하위페이지"의 형식이다. "/하위페이지"는 지원하지 않는다.
- 옵션은 0,1,2 중의 하나. 생략하면 기본값은 2 이다.
- 0 - 현재 존재하지 않는 페이지에 대한 링크만 출력
- 1 - 현재 존재하는 페이지에 대한 링크만 출력
- 2 - 모든 링크를 출력
-
sub MacroSubst {
...
$txt =~ s/\&__LT__;allpagesfrom\(([^,\n]+)(,\d)?\)\&__GT__;/&MacroAllPagesFrom($1, $2)/gei;
return $txt;
}
-
sub MacroAllPagesFrom {
my ($string, $exists) = @_;
my (@x, @links, $pagename, %seen, %pgExists);
my $txt;
$string = &RemoveLink($string);
$string = &FreeToNormal($string);
if (&ValidId($string) ne "") {
return "<allpagesfrom($string)>";
}
if ($exists =~ /,(\d)/) {
$exists = $1;
} else {
$exists = 2;
}
%pgExists = ();
foreach $pagename (&AllPagesList()) {
$pgExists{$pagename} = 1;
}
@x = &GetPageLinksFromFile($string, 1, 0, 0);
foreach $pagename (@x) {
$pagename = (split('/',$string))[0]."$pagename" if ($pagename =~ /^\//);
if ($seen{$pagename} != 0) {
next;
}
if (($exists == 0) && ($pgExists{$pagename} == 1)) {
next;
}
if (($exists == 1) && ($pgExists{$pagename} != 1)) {
next;
}
$seen{$pagename}++;
push (@links, $pagename);
}
@links = sort(@links);
foreach $pagename (@links) {
$txt .= ".... " if ($pagename =~ m|/|);
$txt .= &GetPageOrEditLink($pagename) . "<br>";
}
return $txt;
}
1.1. 추가 업데이트 내역
ext1.90 - /매크로파라메터에이중대괄호허용함
위키위키분류