- use templates for signin form, error messages
- use FormBuilder for edit page forms (also use template) - print debug to stderr in cgi mode to avoid breaking http headers - fix links to page in parentlinks if $url is unset - reorganise how wikilink is used in templates - only make recentchanes link if svn is enabled - change session id cookie to something we control - add support for logging committer name for web commits from signed in users (untested) - probably more changes I forgotmaster
parent
09a97d699e
commit
798c48a1a6
|
@ -72,6 +72,6 @@ optional support for commits from the web.
|
||||||
|
|
||||||
10. Add [[PageHistory]] links to the top of pages. This requires you to have setup [[ViewCVS]] or something similar to access your [[Subversion]] repository. The --historyurl parameter makes ikiwiki add the links, and in that url, "[[]]" is replaced with the name of the file to view. So repeat step 9 to rebuild the wiki post commit wrapper and wiki, adding a historyurl something like this one:
|
10. Add [[PageHistory]] links to the top of pages. This requires you to have setup [[ViewCVS]] or something similar to access your [[Subversion]] repository. The --historyurl parameter makes ikiwiki add the links, and in that url, "[[]]" is replaced with the name of the file to view. So repeat step 9 to rebuild the wiki post commit wrapper and wiki, adding a historyurl something like this one:
|
||||||
|
|
||||||
--historyurl='http://svn.host/trunk/doc/[[]]?root=wiki'
|
--historyurl='http://svn.host/trunk/[[]]?root=wiki'
|
||||||
|
|
||||||
11. Enjoy your new wiki! Add yourself to [[IkiWikiUsers]]
|
11. Enjoy your new wiki! Add yourself to [[IkiWikiUsers]]
|
|
@ -1,13 +1,24 @@
|
||||||
ikiwiki uses the HTML::Template module as its template engine. This supports things like conditionals and loops in templates and is pretty easy to learn.
|
ikiwiki uses the HTML::Template module as its template engine. This
|
||||||
|
supports things like conditionals and loops in templates and is pretty easy
|
||||||
|
to learn.
|
||||||
|
|
||||||
It ships with some basic templates which can be customised:
|
It ships with some basic templates which can be customised:
|
||||||
|
|
||||||
* `templates/page.tmpl` - Used for displaying all regular wiki pages.
|
* `templates/page.tmpl` - Used for displaying all regular wiki pages.
|
||||||
|
* `templates/misc.tmpl` - Generic template used for any page that doesn't
|
||||||
|
have a custom template.
|
||||||
* `templates/recentchanges.tmpl` - Used for the RecentChanges page.
|
* `templates/recentchanges.tmpl` - Used for the RecentChanges page.
|
||||||
* `templates/edit.tmpl' - Edit page.
|
* `templates/editpage.tmpl' - Create/edit page.
|
||||||
* `templates/create.tmpl' - Creating a new page.
|
|
||||||
* `templates/signin.tmpl` - Used for the SignIn form and all assciated forms, if it exists.
|
|
||||||
|
|
||||||
Note that the SignIn form is implemented using CGI::FormBuilder, which interfaces to HTML::Template, so not all of it can be customised with templates, although most of it can, by creating this template. Without the template, CGI::FormBuilder creates the page by itself.
|
If you like, you can add these to further customise it:
|
||||||
|
|
||||||
|
* `templates/signin.tmpl` - If it exists, it is used for customising the
|
||||||
|
layout of the SignIn form and all assciated forms. The misc.tmpl is
|
||||||
|
wrapped around this, so it should only be a template for the form.
|
||||||
|
|
||||||
|
Note that the SignIn form is implemented using CGI::FormBuilder, which
|
||||||
|
interfaces to HTML::Template, so not all of it can be customised with
|
||||||
|
templates, although most of it can, by creating this template. Without
|
||||||
|
the template, CGI::FormBuilder creates the page body by itself.
|
||||||
|
|
||||||
I aim to keep almost all html out of ikiwiki and in the templates.
|
I aim to keep almost all html out of ikiwiki and in the templates.
|
||||||
|
|
284
ikiwiki
284
ikiwiki
|
@ -35,7 +35,7 @@ sub usage { #{{{
|
||||||
sub error ($) { #{{{
|
sub error ($) { #{{{
|
||||||
if ($cgi) {
|
if ($cgi) {
|
||||||
print "Content-type: text/html\n\n";
|
print "Content-type: text/html\n\n";
|
||||||
print "Error: @_\n";
|
print misctemplate("Error", "<p>Error: @_</p>");
|
||||||
exit 1;
|
exit 1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -44,7 +44,12 @@ sub error ($) { #{{{
|
||||||
} #}}}
|
} #}}}
|
||||||
|
|
||||||
sub debug ($) { #{{{
|
sub debug ($) { #{{{
|
||||||
|
if (! $cgi) {
|
||||||
print "@_\n" if $verbose;
|
print "@_\n" if $verbose;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
print STDERR "@_\n" if $verbose;
|
||||||
|
}
|
||||||
} #}}}
|
} #}}}
|
||||||
|
|
||||||
sub mtime ($) { #{{{
|
sub mtime ($) { #{{{
|
||||||
|
@ -115,6 +120,7 @@ sub writefile ($$) { #{{{
|
||||||
|
|
||||||
my $dir=dirname($file);
|
my $dir=dirname($file);
|
||||||
if (! -d $dir) {
|
if (! -d $dir) {
|
||||||
|
print STDERR ">>$dir<<\n";
|
||||||
my $d="";
|
my $d="";
|
||||||
foreach my $s (split(m!/+!, $dir)) {
|
foreach my $s (split(m!/+!, $dir)) {
|
||||||
$d.="$s/";
|
$d.="$s/";
|
||||||
|
@ -240,6 +246,7 @@ sub backlinks ($) { #{{{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# TODO sort by page name
|
||||||
return @links;
|
return @links;
|
||||||
} #}}}
|
} #}}}
|
||||||
|
|
||||||
|
@ -259,11 +266,12 @@ sub parentlinks ($) { #{{{
|
||||||
}
|
}
|
||||||
$path.="../";
|
$path.="../";
|
||||||
}
|
}
|
||||||
|
unshift @ret, { url => $path , page => $wikiname };
|
||||||
return @ret;
|
return @ret;
|
||||||
} #}}}
|
} #}}}
|
||||||
|
|
||||||
sub indexlink () { #{{{
|
sub indexlink () { #{{{
|
||||||
return "<a href=\"$url\">$wikiname</a>/ ";
|
return "<a href=\"$url\">$wikiname</a>";
|
||||||
} #}}}
|
} #}}}
|
||||||
|
|
||||||
sub finalize ($$) { #{{{
|
sub finalize ($$) { #{{{
|
||||||
|
@ -278,8 +286,10 @@ sub finalize ($$) { #{{{
|
||||||
|
|
||||||
if (length $cgiurl) {
|
if (length $cgiurl) {
|
||||||
$template->param(editurl => "$cgiurl?do=edit&page=$page");
|
$template->param(editurl => "$cgiurl?do=edit&page=$page");
|
||||||
|
if ($svn) {
|
||||||
$template->param(recentchangesurl => "$cgiurl?do=recentchanges");
|
$template->param(recentchangesurl => "$cgiurl?do=recentchanges");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (length $historyurl) {
|
if (length $historyurl) {
|
||||||
my $u=$historyurl;
|
my $u=$historyurl;
|
||||||
|
@ -289,7 +299,6 @@ sub finalize ($$) { #{{{
|
||||||
|
|
||||||
$template->param(
|
$template->param(
|
||||||
title => $title,
|
title => $title,
|
||||||
indexlink => $url,
|
|
||||||
wikiname => $wikiname,
|
wikiname => $wikiname,
|
||||||
parentlinks => [parentlinks($page)],
|
parentlinks => [parentlinks($page)],
|
||||||
content => $content,
|
content => $content,
|
||||||
|
@ -658,6 +667,21 @@ EOF
|
||||||
exit 0;
|
exit 0;
|
||||||
} #}}}
|
} #}}}
|
||||||
|
|
||||||
|
sub misctemplate ($$) { #{{{
|
||||||
|
my $title=shift;
|
||||||
|
my $pagebody=shift;
|
||||||
|
|
||||||
|
my $template=HTML::Template->new(
|
||||||
|
filename => "$templatedir/misc.tmpl");
|
||||||
|
$template->param(
|
||||||
|
title => $title,
|
||||||
|
indexlink => indexlink(),
|
||||||
|
wikiname => $wikiname,
|
||||||
|
pagebody => $pagebody,
|
||||||
|
);
|
||||||
|
return $template->output;
|
||||||
|
}#}}}
|
||||||
|
|
||||||
sub cgi_recentchanges ($) { #{{{
|
sub cgi_recentchanges ($) { #{{{
|
||||||
my $q=shift;
|
my $q=shift;
|
||||||
|
|
||||||
|
@ -665,7 +689,7 @@ sub cgi_recentchanges ($) { #{{{
|
||||||
filename => "$templatedir/recentchanges.tmpl");
|
filename => "$templatedir/recentchanges.tmpl");
|
||||||
$template->param(
|
$template->param(
|
||||||
title => "RecentChanges",
|
title => "RecentChanges",
|
||||||
indexlink => $url,
|
indexlink => indexlink(),
|
||||||
wikiname => $wikiname,
|
wikiname => $wikiname,
|
||||||
changelog => [rcs_recentchanges(100)],
|
changelog => [rcs_recentchanges(100)],
|
||||||
);
|
);
|
||||||
|
@ -693,10 +717,10 @@ sub cgi_signin ($$) { #{{{
|
||||||
javascript => 0,
|
javascript => 0,
|
||||||
params => $q,
|
params => $q,
|
||||||
action => $q->request_uri,
|
action => $q->request_uri,
|
||||||
|
header => 0,
|
||||||
template => (-e "$templatedir/signin.tmpl" ? "$templatedir/signin.tmpl" : "")
|
template => (-e "$templatedir/signin.tmpl" ? "$templatedir/signin.tmpl" : "")
|
||||||
);
|
);
|
||||||
|
|
||||||
$form->sessionid($session->id);
|
|
||||||
$form->field(name => "name", required => 0);
|
$form->field(name => "name", required => 0);
|
||||||
$form->field(name => "do", type => "hidden");
|
$form->field(name => "do", type => "hidden");
|
||||||
$form->field(name => "page", type => "hidden");
|
$form->field(name => "page", type => "hidden");
|
||||||
|
@ -761,16 +785,141 @@ sub cgi_signin ($$) { #{{{
|
||||||
$form->field(name => "confirm_password", type => "hidden");
|
$form->field(name => "confirm_password", type => "hidden");
|
||||||
$form->field(name => "email", type => "hidden");
|
$form->field(name => "email", type => "hidden");
|
||||||
$form->text("Registration successful. Now you can Login.");
|
$form->text("Registration successful. Now you can Login.");
|
||||||
print $form->render(submit => ["Login"]);;
|
print $session->header();
|
||||||
|
print misctemplate($form->title, $form->render(submit => ["Login"]));
|
||||||
}
|
}
|
||||||
elsif ($form->submitted eq 'Mail Password') {
|
elsif ($form->submitted eq 'Mail Password') {
|
||||||
# TODO mail password
|
# TODO mail password
|
||||||
$form->text("Your password has been emailed to you.");
|
$form->text("Your password has been emailed to you.");
|
||||||
print $form->render(submit => ["Login", "Register", "Mail Password"]);;
|
print $session->header();
|
||||||
|
print misctemplate($form->title, $form->render(submit => ["Login", "Register", "Mail Password"]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
print $form->render(submit => ["Login", "Register", "Mail Password"]);;
|
print $session->header();
|
||||||
|
print misctemplate($form->title, $form->render(submit => ["Login", "Register", "Mail Password"]));
|
||||||
|
}
|
||||||
|
} #}}}
|
||||||
|
|
||||||
|
sub cgi_editpage ($$) { #{{{
|
||||||
|
my $q=shift;
|
||||||
|
my $session=shift;
|
||||||
|
|
||||||
|
eval q{use CGI::FormBuilder};
|
||||||
|
my $form = CGI::FormBuilder->new(
|
||||||
|
fields => [qw(do from page content comments)],
|
||||||
|
header => 1,
|
||||||
|
method => 'POST',
|
||||||
|
validate => {},
|
||||||
|
required => [qw{}],
|
||||||
|
javascript => 0,
|
||||||
|
params => $q,
|
||||||
|
action => $q->request_uri,
|
||||||
|
table => 0,
|
||||||
|
template => "$templatedir/editpage.tmpl"
|
||||||
|
);
|
||||||
|
|
||||||
|
my ($page)=$form->param('page')=~/$wiki_file_regexp/;
|
||||||
|
if (! defined $page || ! length $page || $page ne $q->param('page') ||
|
||||||
|
$page=~/$wiki_file_prune_regexp/ || $page=~/^\//) {
|
||||||
|
error("bad page name");
|
||||||
|
}
|
||||||
|
$page=lc($page);
|
||||||
|
|
||||||
|
$form->field(name => "do", type => 'hidden');
|
||||||
|
$form->field(name => "from", type => 'hidden');
|
||||||
|
$form->field(name => "page", value => "$page", force => 1);
|
||||||
|
$form->field(name => "comments", type => "text", size => 80);
|
||||||
|
$form->field(name => "content", type => "textarea", rows => 20,
|
||||||
|
cols => 80);
|
||||||
|
|
||||||
|
if (! $form->submitted || ! $form->validate) {
|
||||||
|
if ($form->field("do") eq "create") {
|
||||||
|
if (exists $pagesources{lc($page)}) {
|
||||||
|
# hmm, someone else made the page in the
|
||||||
|
# meantime?
|
||||||
|
print $q->redirect("$url/".htmlpage($page));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
my @page_locs;
|
||||||
|
my ($from)=$form->param('from')=~/$wiki_file_regexp/;
|
||||||
|
if (! defined $from || ! length $from ||
|
||||||
|
$from ne $form->param('from') ||
|
||||||
|
$from=~/$wiki_file_prune_regexp/ || $from=~/^\//) {
|
||||||
|
@page_locs=$page;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
my $dir=$from."/";
|
||||||
|
$dir=~s![^/]+/$!!;
|
||||||
|
push @page_locs, $dir.$page;
|
||||||
|
push @page_locs, "$from/$page";
|
||||||
|
while (length $dir) {
|
||||||
|
$dir=~s![^/]+/$!!;
|
||||||
|
push @page_locs, $dir.$page;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$form->tmpl_param("page_select", 1);
|
||||||
|
$form->field(name => "page", type => 'select',
|
||||||
|
options => \@page_locs);
|
||||||
|
$form->title("creating $page");
|
||||||
|
}
|
||||||
|
elsif ($form->field("do") eq "edit") {
|
||||||
|
my $content="";
|
||||||
|
if (exists $pagesources{lc($page)}) {
|
||||||
|
$content=readfile("$srcdir/$pagesources{lc($page)}");
|
||||||
|
$content=~s/\n/\r\n/g;
|
||||||
|
}
|
||||||
|
$form->tmpl_param("page_select", 0);
|
||||||
|
$form->field(name => "content", value => $content,
|
||||||
|
force => 1);
|
||||||
|
$form->field(name => "page", type => 'hidden');
|
||||||
|
$form->title("editing $page");
|
||||||
|
}
|
||||||
|
|
||||||
|
$form->tmpl_param("can_commit", $svn);
|
||||||
|
$form->tmpl_param("indexlink", indexlink());
|
||||||
|
print $form->render(submit => ["Save Page"]);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
# save page
|
||||||
|
my $file=$page.$default_pagetype;
|
||||||
|
my $newfile=1;
|
||||||
|
if (exists $pagesources{lc($page)}) {
|
||||||
|
$file=$pagesources{lc($page)};
|
||||||
|
$newfile=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $content=$form->field('content');
|
||||||
|
$content=~s/\r\n/\n/g;
|
||||||
|
$content=~s/\r/\n/g;
|
||||||
|
writefile("$srcdir/$file", $content);
|
||||||
|
|
||||||
|
my $message="web commit ";
|
||||||
|
if ($session->param("name")) {
|
||||||
|
$message.="by ".$session->param("name");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$message.="from $ENV{REMOTE_ADDR}";
|
||||||
|
}
|
||||||
|
if (length $form->field('comments')) {
|
||||||
|
$message.=": ".$form->field('comments');
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($svn) {
|
||||||
|
if ($newfile) {
|
||||||
|
rcs_add($file);
|
||||||
|
}
|
||||||
|
# presumably the commit will trigger an update
|
||||||
|
# of the wiki
|
||||||
|
rcs_commit($message);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
print $q->redirect("$url/".htmlpage($page));
|
||||||
}
|
}
|
||||||
} #}}}
|
} #}}}
|
||||||
|
|
||||||
|
@ -791,10 +940,7 @@ sub cgi () { #{{{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
# session id has to be _sessionid for CGI::FormBuilder to work.
|
CGI::Session->name("ikiwiki_session");
|
||||||
# TODO: stop having the formbuilder emit cookies and change session
|
|
||||||
# id to something else.
|
|
||||||
CGI::Session->name("_sessionid");
|
|
||||||
my $session = CGI::Session->new(undef, $q,
|
my $session = CGI::Session->new(undef, $q,
|
||||||
{ Directory=> "$srcdir/.ikiwiki/sessions" });
|
{ Directory=> "$srcdir/.ikiwiki/sessions" });
|
||||||
|
|
||||||
|
@ -804,118 +950,8 @@ sub cgi () { #{{{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
my ($page)=$q->param('page')=~/$wiki_file_regexp/;
|
if ($do eq 'create' || $do eq 'edit') {
|
||||||
if (! defined $page || ! length $page || $page ne $q->param('page') ||
|
cgi_editpage($q, $session);
|
||||||
$page=~/$wiki_file_prune_regexp/ || $page=~/^\//) {
|
|
||||||
error("bad page name");
|
|
||||||
}
|
|
||||||
$page=lc($page);
|
|
||||||
|
|
||||||
my $action=$q->request_uri;
|
|
||||||
$action=~s/\?.*//;
|
|
||||||
|
|
||||||
if ($do eq 'create') {
|
|
||||||
if (exists $pagesources{lc($page)}) {
|
|
||||||
# hmm, someone else made the page in the meantime?
|
|
||||||
print $q->redirect("$url/".htmlpage($page));
|
|
||||||
}
|
|
||||||
|
|
||||||
my @page_locs;
|
|
||||||
my ($from)=$q->param('from')=~/$wiki_file_regexp/;
|
|
||||||
if (! defined $from || ! length $from ||
|
|
||||||
$from ne $q->param('from') ||
|
|
||||||
$from=~/$wiki_file_prune_regexp/ || $from=~/^\//) {
|
|
||||||
@page_locs=$page;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
my $dir=$from."/";
|
|
||||||
$dir=~s![^/]+/$!!;
|
|
||||||
push @page_locs, $dir.$page;
|
|
||||||
push @page_locs, "$from/$page";
|
|
||||||
while (length $dir) {
|
|
||||||
$dir=~s![^/]+/$!!;
|
|
||||||
push @page_locs, $dir.$page;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$q->param("do", "save");
|
|
||||||
print $q->header,
|
|
||||||
$q->start_html("Creating $page"),
|
|
||||||
$q->h1(indexlink()." Creating $page"),
|
|
||||||
$q->start_form(-action => $action),
|
|
||||||
$q->hidden('do'),
|
|
||||||
"Select page location:",
|
|
||||||
$q->popup_menu('page', \@page_locs),
|
|
||||||
$q->textarea(-name => 'content',
|
|
||||||
-default => "",
|
|
||||||
-rows => 20,
|
|
||||||
-columns => 80),
|
|
||||||
$q->br,
|
|
||||||
"Optional comment about this change:",
|
|
||||||
$q->br,
|
|
||||||
$q->textfield(-name => "comments", -size => 80),
|
|
||||||
$q->br,
|
|
||||||
$q->submit("Save Page"),
|
|
||||||
$q->end_form,
|
|
||||||
$q->end_html;
|
|
||||||
}
|
|
||||||
elsif ($do eq 'edit') {
|
|
||||||
my $content="";
|
|
||||||
if (exists $pagesources{lc($page)}) {
|
|
||||||
$content=readfile("$srcdir/$pagesources{lc($page)}");
|
|
||||||
$content=~s/\n/\r\n/g;
|
|
||||||
}
|
|
||||||
$q->param("do", "save");
|
|
||||||
print $q->header,
|
|
||||||
$q->start_html("Editing $page"),
|
|
||||||
$q->h1(indexlink()." Editing $page"),
|
|
||||||
$q->start_form(-action => $action),
|
|
||||||
$q->hidden('do'),
|
|
||||||
$q->hidden('page'),
|
|
||||||
$q->textarea(-name => 'content',
|
|
||||||
-default => $content,
|
|
||||||
-rows => 20,
|
|
||||||
-columns => 80),
|
|
||||||
$q->br,
|
|
||||||
"Optional comment about this change:",
|
|
||||||
$q->br,
|
|
||||||
$q->textfield(-name => "comments", -size => 80),
|
|
||||||
$q->br,
|
|
||||||
$q->submit("Save Page"),
|
|
||||||
$q->end_form,
|
|
||||||
$q->end_html;
|
|
||||||
}
|
|
||||||
elsif ($do eq 'save') {
|
|
||||||
my $file=$page.$default_pagetype;
|
|
||||||
my $newfile=1;
|
|
||||||
if (exists $pagesources{lc($page)}) {
|
|
||||||
$file=$pagesources{lc($page)};
|
|
||||||
$newfile=0;
|
|
||||||
}
|
|
||||||
|
|
||||||
my $content=$q->param('content');
|
|
||||||
$content=~s/\r\n/\n/g;
|
|
||||||
$content=~s/\r/\n/g;
|
|
||||||
writefile("$srcdir/$file", $content);
|
|
||||||
|
|
||||||
my $message="web commit from $ENV{REMOTE_ADDR}";
|
|
||||||
if (defined $q->param('comments')) {
|
|
||||||
$message.=": ".$q->param('comments');
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($svn) {
|
|
||||||
if ($newfile) {
|
|
||||||
rcs_add($file);
|
|
||||||
}
|
|
||||||
# presumably the commit will trigger an update
|
|
||||||
# of the wiki
|
|
||||||
rcs_commit($message);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
refresh();
|
|
||||||
}
|
|
||||||
|
|
||||||
print $q->redirect("$url/".htmlpage($page));
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
error("unknown do parameter");
|
error("unknown do parameter");
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
<html>
|
||||||
|
<head><title><TMPL_VAR FORM-TITLE></title></head>
|
||||||
|
<body>
|
||||||
|
<TMPL_VAR FORM-START>
|
||||||
|
<h1><TMPL_VAR INDEXLINK>/ <TMPL_VAR FORM-TITLE></h1>
|
||||||
|
<TMPL_VAR FIELD-DO>
|
||||||
|
<TMPL_VAR FIELD-FROM>
|
||||||
|
<TMPL_IF NAME="PAGE_SELECT">
|
||||||
|
Page location: <TMPL_VAR FIELD-PAGE><br>
|
||||||
|
<TMPL_ELSE>
|
||||||
|
<TMPL_VAR FIELD-PAGE>
|
||||||
|
</TMPL_IF>
|
||||||
|
<TMPL_VAR FIELD-CONTENT><br>
|
||||||
|
<TMPL_IF NAME="CAN_COMMIT">
|
||||||
|
Optional comment about this change:</br>
|
||||||
|
<TMPL_VAR FIELD-COMMENTS><br>
|
||||||
|
</TMPL_IF>
|
||||||
|
<TMPL_VAR FORM-SUBMIT>
|
||||||
|
<TMPL_VAR FORM-END>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,14 @@
|
||||||
|
<html>
|
||||||
|
<head><title><TMPL_VAR TITLE></title></head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<h1>
|
||||||
|
<TMPL_VAR INDEXLINK>/ <TMPL_VAR TITLE>
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<TMPL_VAR PAGEBODY>
|
||||||
|
|
||||||
|
<!-- from <TMPL_VAR NAME=WIKINAME> -->
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -3,7 +3,6 @@
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
<h1>
|
<h1>
|
||||||
<a href="<TMPL_VAR INDEXLINK>"><TMPL_VAR WIKINAME></a>/
|
|
||||||
<TMPL_LOOP NAME="PARENTLINKS">
|
<TMPL_LOOP NAME="PARENTLINKS">
|
||||||
<a href="<TMPL_VAR NAME=URL>"><TMPL_VAR NAME=PAGE></a>/
|
<a href="<TMPL_VAR NAME=URL>"><TMPL_VAR NAME=PAGE></a>/
|
||||||
</TMPL_LOOP>
|
</TMPL_LOOP>
|
||||||
|
@ -34,5 +33,7 @@
|
||||||
</p>
|
</p>
|
||||||
</TMPL_IF>
|
</TMPL_IF>
|
||||||
|
|
||||||
|
<!-- from <TMPL_VAR NAME=WIKINAME> -->
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
<h1>
|
<h1>
|
||||||
<a href="<TMPL_VAR INDEXLINK>"><TMPL_VAR WIKINAME></a>/ <TMPL_VAR TITLE>
|
<TMPL_VAR INDEXLINK>/ <TMPL_VAR TITLE>
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|
Loading…
Reference in New Issue