Patch added
parent
62dd681b3a
commit
dc15be03d6
|
@ -7,3 +7,54 @@ If sandbox/page.mdwn has been generated and sandbox/sidebar.mdwn is created, the
|
|||
# currently requires a wiki rebuild.
|
||||
add_depends($page, $sidebar_page);
|
||||
|
||||
----
|
||||
Below is a patch for the bug. It's inspired by trying to solve [[todo/Post-compilation inclusion of the sidebar]].
|
||||
What do you think about it? I have a concern though. If a sidebar is removed, it takes two refreshes to update
|
||||
the affected pages. Is this a feature or a bug? --[[harishcm]]
|
||||
|
||||
--- sidebar.pm.orig 2009-11-21 17:40:02.000000000 +0800
|
||||
+++ sidebar_bugfix.pm 2009-11-21 18:16:11.000000000 +0800
|
||||
@@ -10,6 +10,7 @@
|
||||
|
||||
sub import {
|
||||
hook(type => "getsetup", id => "sidebar", call => \&getsetup);
|
||||
+ hook(type => "needsbuild", id => "sidebar", call => \&needsbuild);
|
||||
hook(type => "pagetemplate", id => "sidebar", call => \&pagetemplate);
|
||||
}
|
||||
|
||||
@@ -21,6 +22,22 @@
|
||||
},
|
||||
}
|
||||
|
||||
+sub needsbuild (@) {
|
||||
+ my $needsbuild=shift;
|
||||
+
|
||||
+ # Determine every pages' sidebar page
|
||||
+ foreach my $page (keys %pagesources) {
|
||||
+ my $sidebar_page='';
|
||||
+ $sidebar_page=bestlink($page, "sidebar");
|
||||
+
|
||||
+ # If a page's sidebar has changed, force rebuild
|
||||
+ if (!exists $pagestate{$page}{sidebar}{sidebar_page} || $pagestate{$page}{sidebar}{sidebar_page} ne $sidebar_page) {
|
||||
+ $pagestate{$page}{sidebar}{sidebar_page} = $sidebar_page;
|
||||
+ push @$needsbuild, $pagesources{$page};
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
sub sidebar_content ($) {
|
||||
my $page=shift;
|
||||
|
||||
@@ -29,9 +46,9 @@
|
||||
my $sidebar_type=pagetype($sidebar_file);
|
||||
|
||||
if (defined $sidebar_type) {
|
||||
- # FIXME: This isn't quite right; it won't take into account
|
||||
- # adding a new sidebar page. So adding such a page
|
||||
- # currently requires a wiki rebuild.
|
||||
+ # Record current sidebar page for rechecking bestlink
|
||||
+ # during wiki refresh. Also add depends on the sidebar page.
|
||||
+ $pagestate{$page}{sidebar}{sidebar_page}=$sidebar_page;
|
||||
add_depends($page, $sidebar_page);
|
||||
|
||||
my $content=readfile(srcfile($sidebar_file));
|
||||
|
|
Loading…
Reference in New Issue