When editing a page, show that page's sidebar. (Thanks, privat)

master
Joey Hess 2010-06-09 16:00:12 -04:00
parent 2eefd84d0a
commit e96cf38ecc
4 changed files with 38 additions and 8 deletions

View File

@ -1739,11 +1739,20 @@ sub template ($;@) {
sub misctemplate ($$;@) {
my $title=shift;
my $content=shift;
my %params=@_;
my $template=template("page.tmpl");
my $page="";
if (exists $params{page}) {
$page=delete $params{page};
}
run_hooks(pagetemplate => sub {
shift->(page => "", destpage => "", template => $template);
shift->(
page => $page,
destpage => $page,
template => $template,
);
});
templateactions($template, "");
@ -1754,7 +1763,7 @@ sub misctemplate ($$;@) {
content => $content,
baseurl => baseurl(),
html5 => $config{html5},
@_,
%params,
);
return $template->output;

View File

@ -312,7 +312,8 @@ sub cgi_editpage ($$) {
$form->title(sprintf(gettext("editing %s"), pagetitle($page)));
}
showform($form, \@buttons, $session, $q, forcebaseurl => $baseurl);
showform($form, \@buttons, $session, $q,
forcebaseurl => $baseurl, page => $page);
}
else {
# save page
@ -329,7 +330,8 @@ sub cgi_editpage ($$) {
$form->field(name => "page", type => 'hidden');
$form->field(name => "type", type => 'hidden');
$form->title(sprintf(gettext("editing %s"), $page));
showform($form, \@buttons, $session, $q, forcebaseurl => $baseurl);
showform($form, \@buttons, $session, $q,
forcebaseurl => $baseurl, page => $page);
exit;
}
elsif ($form->field("do") eq "create" && $exists) {
@ -343,7 +345,8 @@ sub cgi_editpage ($$) {
value => readfile("$config{srcdir}/$file").
"\n\n\n".$form->field("editcontent"),
force => 1);
showform($form, \@buttons, $session, $q, forcebaseurl => $baseurl);
showform($form, \@buttons, $session, $q,
forcebaseurl => $baseurl, page => $page);
exit;
}
@ -384,7 +387,7 @@ sub cgi_editpage ($$) {
$form->field(name => "type", type => 'hidden');
$form->title(sprintf(gettext("editing %s"), $page));
showform($form, \@buttons, $session, $q,
forcebaseurl => $baseurl);
forcebaseurl => $baseurl, page => $page);
exit;
}
@ -423,7 +426,7 @@ sub cgi_editpage ($$) {
$form->field(name => "type", type => 'hidden');
$form->title(sprintf(gettext("editing %s"), $page));
showform($form, \@buttons, $session, $q,
forcebaseurl => $baseurl);
forcebaseurl => $baseurl, page => $page);
}
else {
# The trailing question mark tries to avoid broken

1
debian/changelog vendored
View File

@ -6,6 +6,7 @@ ikiwiki (3.20100609) unstable; urgency=low
* Remove example blog tag pages; allow autotag creation to create them
when used.
* Fix support for globbing in tagged() pagespecs.
* When editing a page, show that page's sidebar. (Thanks, privat)
-- Joey Hess <joeyh@debian.org> Mon, 31 May 2010 20:44:17 -0400

View File

@ -18,6 +18,12 @@ But it causes some nasty bugs for plugins that use the pagetemplate hook. It is
* -> Problem: 404, the browser goes to "/bar/foo"
* -> Was expected: the browser goes to "/foo"
> You must have a locally modified `page.tmpl` that omits the "TMPL_IF DYNAMIC"
> that adds a `<base>` tag. That is needed to make all links displayed by
> cgis work reliably. Not just in this page editing case.
> The [[version_3.20100515]] announcment mentions that you need to
> update old `page.tmpl` files to include that on upgrade. --[[Joey]]
### A second example
* create "/bar/sidebar.mdwn" with "world"
@ -28,6 +34,10 @@ But it causes some nasty bugs for plugins that use the pagetemplate hook. It is
* -> Problem: the sidebar now shows the foo link (it is the root sidebar!)
* -> Was expecte : the sidebar displays "world"
> One could argue that the behavior here is right, or wrong.
> Is a page edit page really the same as the page being edited?
> The next case is more clear.. --[[Joey]]
### A last example
* with the web browser edit the page "bar"
@ -36,6 +46,8 @@ But it causes some nasty bugs for plugins that use the pagetemplate hook. It is
* -> Problem: the sidebar still displays the foo link
* -> Was expected: the sidebar display "goodby"
> I think this is worth fixing. --[[Joey]]
## Some superficial hacking
With the following workaround hacks, I manage to solve the 3 examples shown above:
@ -47,4 +59,9 @@ With the following workaround hacks, I manage to solve the 3 examples shown abov
<pre>my %params=@_;
shift->(page => $params{page}, destpage => $params{destpage}, template => $template);</pre>
I do not guarantee (I do not even expect) that it is the proper way to solve this bug but it may help developers to find and solve the real problem.
I do not guarantee (I do not even expect) that it is the proper way to solve
this bug but it may help developers to find and solve the real problem.
> Oh, it's pretty reasonable. I don't think it breaks anything. :)
> [[done]]
> --[[Joey]]