From: Joey Hess Date: Wed, 21 Apr 2010 20:34:50 +0000 (-0400) Subject: Merge branch 'master' of ssh://git.ikiwiki.info/srv/git/ikiwiki.info X-Git-Tag: 3.20100427~81 X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/commitdiff_plain/f03d3d8567cd49a231b74af44251e775bf6321c5?hp=-c Merge branch 'master' of ssh://git.ikiwiki.info/srv/git/ikiwiki.info --- f03d3d8567cd49a231b74af44251e775bf6321c5 diff --combined doc/todo/auto-create_tag_pages_according_to_a_template.mdwn index 724a52ec9,5a1aff928..254ec42b5 --- a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn +++ b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn @@@ -15,86 -15,7 +15,7 @@@ A new setting is used to enable or disa 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 +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`?) @@@ -281,7 -228,6 +228,7 @@@ > quite easy to solve by moving `verify_src_file` to IkiWiki.pm? --[[smcv]] >> True. I'll do that. --[[David_Riebenbauer]] +>> Fixed in my branch --[[Joey]] [[!template id=gitbranch branch=origin/autotag author="[[Joey]]"]] I've pushed an autotag branch of my own, which refactors