Template Page 기능 추가
See also 다른페이지의내용을포함하여출력하기
$TemplatePage = "TemplatePage";
- $TemplatePage 변수의 값이 없을 경우는 이 기능이 동작하지 않는다.
- 예를 들어, 이 변수의 값이 "템플릿"이라 하면, 새로운 페이지를 만들 때 다음과 같이 동작한다.
- 새로운 페이지를 만들 때, "템플릿"페이지가 있다면, 그 페이지의 내용을 그대로 복사해서 편집창에 표시한다. "템플릿" 페이지가 없다면 예전처럼 기본값 문자열이 표시된다.
- 새로운 하위페이지를 만들 때, "상위페이지/템플릿" 페이지가 있다면, 그 페이지의 내용을 복사해서 표시한다. 없다면, "템플릿" 페이지를 찾아 그 내용을 복사한다. 역시 없다면, 기본값 문자열을 표시한다.
- Diary 같이 매번 하위 페이지에 특정한 매크로나 내용을 적어야 하는 곳에서 유용하게 사용할 수 있다.
- 주의사항
- 당연한 얘기지만, 템플릿 페이지의 내용을 작성할 때 mysign 이나 comment 처럼 '저장할 때' 치환되는 매크로를 쓰면 치환되어 버리니 주의할 것. /TemplateMacro를 적절히 써서 이런 의도하지 않은 치환을 막을 수 있다.
config.pl 수정
다음 항목 추가
$TemplatePage = "TemplatePage";
wiki.pl 수정
전역 변수인 TemplatePage 추가
use vars qw(
$UserGotoBar $UserGotoBar2 $UserGotoBar3 $UserGotoBar4
...
$HiddenPageFile $TemplatePage
);
함수 수정
sub OpenNewText {
...
$Text{'text'} = T('Describe the new page here.') . "\n";
}
if (($TemplatePage) && (&GetParam("action","") eq "edit")) {
my $temp;
$temp = &GetTemplatePageText(&GetParam("id",""));
if ($temp ne "") {
$Text{'text'} = $temp;
}
}
$Text{'text'} .= "\n" if (substr($Text{'text'}, -1, 1) ne "\n");
...
}
다음 함수 통채로 추가
sub GetTemplatePageText {
my ($newpage) = @_;
my $templatePage = "";
my ($fname, $status, $data);
if ($newpage eq "") {
return "";
}
if ($newpage =~ /^(.*)\/(.*)/) {
$templatePage = $1 . "/" . $TemplatePage;
} else {
$templatePage = $TemplatePage;
}
$fname = &GetPageFile($templatePage);
if (!(-f $fname)) {
$fname = &GetPageFile($TemplatePage);
if (!(-f $fname)) {
return "";
}
}
($status, $data) = &ReadFile($fname);
if (!$status) {
return "";
}
my %temp_Page = split(/$FS1/, $data, -1);
my %temp_Section = split(/$FS2/, $temp_Page{'text_default'}, -1);
my %temp_Text = split(/$FS3/, $temp_Section{'data'}, -1);
return $temp_Text{'text'};
}
Notes
소스를 약간 고쳤습니다만, 동작에 차이가 있는 것이 아니니 이미 반영하신 분들은 다시 고칠 필요는 없습니다.
위키위키분류