]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - IkiWiki/Plugin/tag.pm
(no commit message)
[git.ikiwiki.info.git] / IkiWiki / Plugin / tag.pm
index e4c8a11553a116d9fd400cbda39310208417a148..8a0859b5ca48d45f12ccde0f4c823bb5bed913c4 100644 (file)
@@ -7,6 +7,7 @@ use strict;
 use IkiWiki 3.00;
 
 sub import {
+       hook(type => "checkconfig", id => "tag", call => \&checkconfig);
        hook(type => "getopt", id => "tag", call => \&getopt);
        hook(type => "getsetup", id => "tag", call => \&getsetup);
        hook(type => "preprocess", id => "tag", call => \&preprocess_tag, scan => 1);
@@ -53,6 +54,12 @@ sub getsetup () {
                },
 }
 
+sub checkconfig () {
+       if (! defined $config{tag_autocreate_commit}) {
+               $config{tag_autocreate_commit} = 1;
+       }
+}
+
 sub taglink ($) {
        my $tag=shift;
        
@@ -97,6 +104,9 @@ sub gentag ($) {
                else {
                        $tagpage=~s/^\///;
                }
+               if (exists $IkiWiki::pagecase{lc $tagpage}) {
+                       $tagpage=$IkiWiki::pagecase{lc $tagpage}
+               }
 
                my $tagfile = newpagefile($tagpage, $config{default_pageext});
 
@@ -110,6 +120,7 @@ sub gentag ($) {
 
                        my $dir = $config{srcdir};
                        if (! $config{tag_autocreate_commit}) {
+                               no warnings 'once';
                                $dir = $IkiWiki::Plugin::transient::transientdir;
                        }
 
@@ -189,8 +200,10 @@ sub pagetemplate (@) {
        if ($template->query(name => "categories")) {
                # It's an rss/atom template. Add any categories.
                if (defined $tags && %$tags) {
-                       $template->param(categories => [map { category => tagname($_) },
-                               sort keys %$tags]);
+                       eval q{use HTML::Entities};
+                       $template->param(categories =>
+                               [map { category => HTML::Entities::encode_entities_numeric(tagname($_)) },
+                                       sort keys %$tags]);
                }
        }
 }