From 58ef55c79893190021a441b2ba618178fce13bc5 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 3 Feb 2008 12:16:06 -0500 Subject: web commit by tschwinge: Thanks!, and a bug report. --- doc/plugins/recentchanges/discussion.mdwn | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 doc/plugins/recentchanges/discussion.mdwn (limited to 'doc/plugins/recentchanges') diff --git a/doc/plugins/recentchanges/discussion.mdwn b/doc/plugins/recentchanges/discussion.mdwn new file mode 100644 index 000000000..b563a8d9d --- /dev/null +++ b/doc/plugins/recentchanges/discussion.mdwn @@ -0,0 +1,8 @@ +Thanks for that one, again, it's great! + +One minor thing I noticed, seen on : +The links to user pages of e.g. *MichaelBanck* or *GianlucaGuida* don't work, as they're +being linked to , whereas it should be +. + +--[[tschwinge]] -- cgit v1.2.3 From 6c1cb3f985a0f1d8568ff386cc40e35405bad4f7 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 3 Feb 2008 12:18:26 -0500 Subject: web commit by tschwinge: Another minor bug. --- doc/plugins/recentchanges/discussion.mdwn | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'doc/plugins/recentchanges') diff --git a/doc/plugins/recentchanges/discussion.mdwn b/doc/plugins/recentchanges/discussion.mdwn index b563a8d9d..69145435e 100644 --- a/doc/plugins/recentchanges/discussion.mdwn +++ b/doc/plugins/recentchanges/discussion.mdwn @@ -5,4 +5,8 @@ The links to user pages of e.g. *MichaelBanck* or *GianlucaGuida* don't work, as being linked to , whereas it should be . +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. + --[[tschwinge]] -- cgit v1.2.3 From 340fe9707c61064774658e6ec2aec3b07b33c120 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 3 Feb 2008 14:48:20 -0500 Subject: * 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. --- IkiWiki/Plugin/recentchanges.pm | 58 ++++++++++++++++++++++++++----- debian/changelog | 3 ++ doc/plugins/recentchanges/discussion.mdwn | 2 ++ 3 files changed, 54 insertions(+), 9 deletions(-) (limited to 'doc/plugins/recentchanges') diff --git a/IkiWiki/Plugin/recentchanges.pm b/IkiWiki/Plugin/recentchanges.pm index 337fb7ac5..e23ee491f 100644 --- a/IkiWiki/Plugin/recentchanges.pm +++ b/IkiWiki/Plugin/recentchanges.pm @@ -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")), + "

". + sprintf(gettext("The page %s does not exist."), + htmllink("", "", $page)). + "

"); + } + 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} = "{page},"")."\">". - IkiWiki::pagetitle($_->{page}).""; + if (length $config{cgiurl}) { + $_->{link} = " "recentchanges_link", + page => $_->{page} + ). + "\">". + IkiWiki::pagetitle($_->{page}). + "" } 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 diff --git a/debian/changelog b/debian/changelog index 590c1a84e..e736e7631 100644 --- a/debian/changelog +++ b/debian/changelog @@ -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 Sat, 02 Feb 2008 23:36:31 -0500 diff --git a/doc/plugins/recentchanges/discussion.mdwn b/doc/plugins/recentchanges/discussion.mdwn index 69145435e..922493fe8 100644 --- a/doc/plugins/recentchanges/discussion.mdwn +++ b/doc/plugins/recentchanges/discussion.mdwn @@ -5,6 +5,8 @@ The links to user pages of e.g. *MichaelBanck* or *GianlucaGuida* don't work, as being linked to , whereas it should be . +> 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. -- cgit v1.2.3 From e57749b702137b925064b60120ea22a98965c7d5 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 3 Feb 2008 14:51:03 -0500 Subject: * recentchanges: Exipre all *._change pages, even if the directory they're in has changed. --- IkiWiki/Plugin/recentchanges.pm | 2 +- debian/changelog | 2 ++ doc/plugins/recentchanges/discussion.mdwn | 3 +++ 3 files changed, 6 insertions(+), 1 deletion(-) (limited to 'doc/plugins/recentchanges') diff --git a/IkiWiki/Plugin/recentchanges.pm b/IkiWiki/Plugin/recentchanges.pm index e23ee491f..22f934f2e 100644 --- a/IkiWiki/Plugin/recentchanges.pm +++ b/IkiWiki/Plugin/recentchanges.pm @@ -28,7 +28,7 @@ sub refresh ($) { #{{{ # delete old and excess changes foreach my $page (keys %pagesources) { - if ($page=~/^\Q$config{recentchangespage}\E\/change_/ && ! $seen{$page}) { + if ($page =~ /\._change$/ && ! $seen{$page}) { unlink($config{srcdir}.'/'.$pagesources{$page}); } } diff --git a/debian/changelog b/debian/changelog index e736e7631..99ee5cdc2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -17,6 +17,8 @@ ikiwiki (2.31) UNRELEASED; urgency=low * 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. + * recentchanges: Exipre all *._change pages, even if the directory + they're in has changed. -- Joey Hess Sat, 02 Feb 2008 23:36:31 -0500 diff --git a/doc/plugins/recentchanges/discussion.mdwn b/doc/plugins/recentchanges/discussion.mdwn index 922493fe8..a16cb5217 100644 --- a/doc/plugins/recentchanges/discussion.mdwn +++ b/doc/plugins/recentchanges/discussion.mdwn @@ -12,3 +12,6 @@ that the pages from the old hierarchy will not be removed from the disk. But th this should be a rather uncommon thing. --[[tschwinge]] + +> And fixed this, by making it look at all *._change pages, not just +> those in a specific directory, when deciding which to expire. --[[Joey]] -- cgit v1.2.3