From 65c6bc687ee76cdb1cf5810fbaa51a1d5b91beb9 Mon Sep 17 00:00:00 2001 From: "http://taozhyn.myopenid.com/" Date: Fri, 20 Feb 2009 04:58:52 -0500 Subject: Adding patch, moved from plugins/tag/discussion --- ...o-create_tag_pages_according_to_a_template.mdwn | 99 ++++++++++++++++++++++ 1 file changed, 99 insertions(+) (limited to 'doc') diff --git a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn index bfb4a863b..ab9263556 100644 --- a/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn +++ b/doc/todo/auto-create_tag_pages_according_to_a_template.mdwn @@ -7,3 +7,102 @@ Also see: and "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(); + +} + + + + +This uses a template called `autotagpage.tmpl`, here is my template file: + + \[[!inline pages="link()" archive="yes"]] + + +A quirk I have not figured out is during the `sub change`, see my comments in the code. +I am not sure if that is the best way to handle it. + +[[!tag patch]] +-- Jeremy Schultz -- cgit v1.2.3