* recentchanges: Improve handling of links on the very static changes pages
by thunking to the CGI, which can redirect to the page, or allow it to be created if it doesn't exist.master
parent
42e5b8dfdc
commit
340fe9707c
|
@ -8,8 +8,9 @@ use IkiWiki 2.00;
|
|||
sub import { #{{{
|
||||
hook(type => "checkconfig", id => "recentchanges", call => \&checkconfig);
|
||||
hook(type => "refresh", id => "recentchanges", call => \&refresh);
|
||||
hook(type => "htmlize", id => "_change", call => \&htmlize);
|
||||
hook(type => "pagetemplate", id => "recentchanges", call => \&pagetemplate);
|
||||
hook(type => "htmlize", id => "_change", call => \&htmlize);
|
||||
hook(type => "cgi", id => "recentchanges", call => \&cgi);
|
||||
} #}}}
|
||||
|
||||
sub checkconfig () { #{{{
|
||||
|
@ -51,6 +52,39 @@ sub htmlize (@) { #{{{
|
|||
return $params{content};
|
||||
} #}}}
|
||||
|
||||
sub cgi ($) { #{{{
|
||||
my $cgi=shift;
|
||||
if (defined $cgi->param('do') && $cgi->param('do') eq "recentchanges_link") {
|
||||
# This is a link from a change page to some
|
||||
# other page. Since the change pages are only generated
|
||||
# once, statically, links on them won't be updated if the
|
||||
# page they link to is deleted, or newly created, or
|
||||
# changes for whatever reason. So this CGI handles that
|
||||
# dynamic linking stuff.
|
||||
my $page=$cgi->param("page");
|
||||
if (!defined $page) {
|
||||
error("missing page parameter");
|
||||
}
|
||||
|
||||
IkiWiki::loadindex();
|
||||
|
||||
my $link=bestlink("", $page);
|
||||
if (! length $link) {
|
||||
print "Content-type: text/html\n\n";
|
||||
print IkiWiki::misctemplate(gettext(gettext("missing page")),
|
||||
"<p>".
|
||||
sprintf(gettext("The page %s does not exist."),
|
||||
htmllink("", "", $page)).
|
||||
"</p>");
|
||||
}
|
||||
else {
|
||||
IkiWiki::redirect($cgi, $config{url}."/".htmlpage($link));
|
||||
}
|
||||
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
sub store ($$$) { #{{{
|
||||
my $change=shift;
|
||||
|
||||
|
@ -65,10 +99,15 @@ sub store ($$$) { #{{{
|
|||
delete @{$change->{pages}}[10 .. @{$change->{pages}}] if $is_excess;
|
||||
$change->{pages} = [
|
||||
map {
|
||||
if (length $config{url}) {
|
||||
$_->{link} = "<a href=\"$config{url}/".
|
||||
urlto($_->{page},"")."\">".
|
||||
IkiWiki::pagetitle($_->{page})."</a>";
|
||||
if (length $config{cgiurl}) {
|
||||
$_->{link} = "<a href=\"".
|
||||
IkiWiki::cgiurl(
|
||||
do => "recentchanges_link",
|
||||
page => $_->{page}
|
||||
).
|
||||
"\">".
|
||||
IkiWiki::pagetitle($_->{page}).
|
||||
"</a>"
|
||||
}
|
||||
else {
|
||||
$_->{link} = IkiWiki::pagetitle($_->{page});
|
||||
|
@ -87,10 +126,11 @@ sub store ($$$) { #{{{
|
|||
$change->{authorurl}=$change->{user};
|
||||
$change->{user}=$oiduser;
|
||||
}
|
||||
elsif (length $config{url}) {
|
||||
$change->{authorurl}="$config{url}/".
|
||||
(length $config{userdir} ? "$config{userdir}/" : "").
|
||||
$change->{user};
|
||||
elsif (length $config{cgiurl}) {
|
||||
$change->{authorurl} = IkiWiki::cgiurl(
|
||||
do => "recentchanges_link",
|
||||
page => (length $config{userdir} ? "$config{userdir}/" : "").$change->{author},
|
||||
);
|
||||
}
|
||||
|
||||
# escape wikilinks and preprocessor stuff in commit messages
|
||||
|
|
|
@ -14,6 +14,9 @@ ikiwiki (2.31) UNRELEASED; urgency=low
|
|||
much better.
|
||||
* aggregate: Revert use of forking to not save state, that was not the right
|
||||
approach.
|
||||
* recentchanges: Improve handling of links on the very static changes pages
|
||||
by thunking to the CGI, which can redirect to the page, or allow it to be
|
||||
created if it doesn't exist.
|
||||
|
||||
-- Joey Hess <joeyh@debian.org> Sat, 02 Feb 2008 23:36:31 -0500
|
||||
|
||||
|
|
|
@ -5,6 +5,8 @@ The links to user pages of e.g. *MichaelBanck* or *GianlucaGuida* don't work, as
|
|||
being linked to <http://www.bddebian.com/~wiki/user/MichaelBanck>, whereas it should be
|
||||
<http://www.bddebian.com/~wiki/user/michaelbanck>.
|
||||
|
||||
> I've fixed this.. --[[Joey]]
|
||||
|
||||
Another one. If you change the *recentchangespage* configuration option, (it seems to me)
|
||||
that the pages from the old hierarchy will not be removed from the disk. But then, changing
|
||||
this should be a rather uncommon thing.
|
||||
|
|
Loading…
Reference in New Issue