Merge branch 'master' of ssh://git.ikiwiki.info/srv/git/ikiwiki.info
commit
f03d3d8567
|
@ -15,86 +15,7 @@ A new setting is used to enable or disable auto-create tag pages, `tag_autocreat
|
|||
The new tag file is created during the preprocess phase.
|
||||
The new tag file is then complied during the change phase.
|
||||
|
||||
_tag.pm from version 3.01_
|
||||
|
||||
|
||||
--- tag.pm 2009-02-06 10:26:03.000000000 -0700
|
||||
+++ tag_new.pm 2009-02-06 12:17:19.000000000 -0700
|
||||
@@ -14,6 +14,7 @@
|
||||
hook(type => "preprocess", id => "tag", call => \&preprocess_tag, scan => 1);
|
||||
hook(type => "preprocess", id => "taglink", call => \&preprocess_taglink, scan => 1);
|
||||
hook(type => "pagetemplate", id => "tag", call => \&pagetemplate);
|
||||
+ hook(type => "change", id => "tag", call => \&change);
|
||||
}
|
||||
|
||||
sub getopt () {
|
||||
@@ -36,6 +37,36 @@
|
||||
safe => 1,
|
||||
rebuild => 1,
|
||||
},
|
||||
+ tag_autocreate => {
|
||||
+ type => "boolean",
|
||||
+ example => 0,
|
||||
+ description => "Auto-create the new tag pages, uses autotagpage.tmpl ",
|
||||
+ safe => 1,
|
||||
+ rebulid => 1,
|
||||
+ },
|
||||
+}
|
||||
+
|
||||
+my $autocreated_page = 0;
|
||||
+
|
||||
+sub gen_tag_page($) {
|
||||
+ my $tag=shift;
|
||||
+
|
||||
+ my $tag_file=$tag.'.'.$config{default_pageext};
|
||||
+ return if (-f $config{srcdir}.$tag_file);
|
||||
+
|
||||
+ my $template=template("autotagpage.tmpl");
|
||||
+ $template->param(tag => $tag);
|
||||
+ writefile($tag_file, $config{srcdir}, $template->output);
|
||||
+ $autocreated_page = 1;
|
||||
+
|
||||
+ if ($config{rcs}) {
|
||||
+ IkiWiki::disable_commit_hook();
|
||||
+ IkiWiki::rcs_add($tag_file);
|
||||
+ IkiWiki::rcs_commit_staged(
|
||||
+ gettext("Automatic tag page generation"),
|
||||
+ undef, undef);
|
||||
+ IkiWiki::enable_commit_hook();
|
||||
+ }
|
||||
}
|
||||
|
||||
sub tagpage ($) {
|
||||
@@ -47,6 +78,10 @@
|
||||
$tag=~y#/#/#s; # squash dups
|
||||
}
|
||||
|
||||
+ if (defined $config{tag_autocreate} && $config{tag_autocreate} ) {
|
||||
+ gen_tag_page($tag);
|
||||
+ }
|
||||
+
|
||||
return $tag;
|
||||
}
|
||||
|
||||
@@ -125,4 +160,18 @@
|
||||
}
|
||||
}
|
||||
|
||||
+sub change(@) {
|
||||
+ return unless($autocreated_page);
|
||||
+ $autocreated_page = 0;
|
||||
+
|
||||
+ # This refresh/saveindex is to complie the autocreated tag pages
|
||||
+ IkiWiki::refresh();
|
||||
+ IkiWiki::saveindex();
|
||||
+
|
||||
+ # This refresh/saveindex is to fix the Tags link
|
||||
+ # With out this additional refresh/saveindex the tag link displays ?tag
|
||||
+ IkiWiki::refresh();
|
||||
+ IkiWiki::saveindex();
|
||||
+}
|
||||
+
|
||||
|
||||
*see git history of this page if you want the patch --[[smcv]]*
|
||||
|
||||
This uses a [[template|wikitemplates]] called `autotagpage.tmpl`, here is my template file:
|
||||
|
||||
|
@ -256,6 +177,32 @@ wrong direction. (fixed --[[Joey]] )
|
|||
>>>>> manual recreation -- it still needs to remember it was once an autofile,
|
||||
>>>>> in order to avoid recreating it if it's deleted yet again. --[[Joey]]
|
||||
|
||||
>>>>>> Are these really the semantics we want? It seems strange to me
|
||||
>>>>>> that this:
|
||||
>>>>>>
|
||||
>>>>>> * tag a page as foo
|
||||
>>>>>> * tags/foo automatically appears
|
||||
>>>>>> * delete tags/foo
|
||||
>>>>>> * create tags/foo manually
|
||||
>>>>>> * delete tags/foo again
|
||||
>>>>>> * tags/foo isn't automatically created
|
||||
>>>>>>
|
||||
>>>>>> isn't the same as this:
|
||||
>>>>>>
|
||||
>>>>>> * create tags/foo
|
||||
>>>>>> * delete tags/foo
|
||||
>>>>>> * tag a page as foo
|
||||
>>>>>> * tags/foo automatically appears
|
||||
>>>>>>
|
||||
>>>>>> or even this:
|
||||
>>>>>>
|
||||
>>>>>> * create tags/foo
|
||||
>>>>>> * tag a page as foo
|
||||
>>>>>> * delete tags/foo
|
||||
>>>>>> * tags/foo automatically appears (?)
|
||||
>>>>>>
|
||||
>>>>>> --[[smcv]]
|
||||
|
||||
>>> * `autoindex` forgets that a page was deleted when it's no longer needed
|
||||
>>> anyway (this may be harder for `autotag`?)
|
||||
|
||||
|
|
Loading…
Reference in New Issue