diff --git a/IkiWiki.pm b/IkiWiki.pm index 5355b838d..dbf50feb4 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -2255,7 +2255,7 @@ sub derel ($$) { if ($path =~ m!^\./!) { $from=~s#/?[^/]+$## if defined $from; $path=~s#^\./##; - $path="$from/$path" if length $from; + $path="$from/$path" if defined $from && length $from; } return $path; diff --git a/IkiWiki/Plugin/tag.pm b/IkiWiki/Plugin/tag.pm index 6a6517671..72ae682f3 100644 --- a/IkiWiki/Plugin/tag.pm +++ b/IkiWiki/Plugin/tag.pm @@ -169,7 +169,9 @@ sub pagetemplate (@) { package IkiWiki::PageSpec; sub match_tagged ($$;@) { - return match_link($_[0], IkiWiki::Plugin::tag::taglink($_[1]), linktype => 'tag'); + my $page=shift; + my $glob=shift; + return match_link($page, IkiWiki::Plugin::tag::taglink($glob), linktype => 'tag', @_); } 1 diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index c3e07baf6..49d080c16 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -517,7 +517,7 @@ sub link_types_changed ($$) { my $old = shift; return 0 if !defined $new && !defined $old; - return 1 if !defined $new || !defined $old; + return 1 if (!defined $new && %$old) || (!defined $old && %$new); while (my ($type, $links) = each %$new) { foreach my $link (keys %$links) { diff --git a/doc/bugs/Comments_dissapeared.mdwn b/doc/bugs/Comments_dissapeared.mdwn index 7ff1a012f..787f18c98 100644 --- a/doc/bugs/Comments_dissapeared.mdwn +++ b/doc/bugs/Comments_dissapeared.mdwn @@ -33,3 +33,37 @@ I have tried rebuilding on my squeeze system and still comments don't appear. An I was worried is was due to a time skew problem I was experiencing on my VPS in the last month, though the time is right now and still comments do not appear on blog posts like + +# Debugging templates + +`sudo apt-get install libhtml-template-compiled-perl` + + hendry@webconverger templates$ cat test-template.perl + #!/usr/bin/perl + use HTML::Template::Compiled; + local $HTML::Template::Compiled::DEBUG = 1; + my $htc = HTML::Template::Compiled->new( + filename => "$ARGV[0]", + ); + eval { + print $htc->output; + }; + if ($@) { + # reports as text + my $msg = $htc->debug_code; + # reports as a html table + my $msg_html = $htc->debug_code('html'); + } + hendry@webconverger templates$ ./test-template.perl page.tmpl + Missing closing tag for 'IF' atend of page.tmpl line 159 + + +I think the problem was before that it was `` and now it is `` ? + + + +# Solved + +A merge with the templates in master with my [html5](http://git.webconverger.org/?p=ikiwiki;a=shortlog;h=refs/heads/html5) branch looks like it has solved the problem. Also see [[bugs/html5_support]]. + +[[bugs/done]] 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 d7637ef1b..32870dd3d 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 @@ -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: @@ -250,6 +171,44 @@ wrong direction. (fixed --[[Joey]] ) >>>> Yes, I forgot about that and that is a bug. I'll fix that. >>>> --[[David_Riebenbauer]] +>>>>> In my branch, it keeps a list of autofiles that were created, +>>>>> not deleted. And I think that turns out to be necessary, really. +>>>>> However, I see no way to clean out that list on deletion and +>>>>> 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]] + +>>>>>>> I agree that the last of these is not desired. It could be avoided +>>>>>>> by extending the list of autofiles to include those that were not +>>>>>>> created due to the file/page already existing. +>>>>>>> +>>>>>>> Hmm, that would fix the previous scenario too. --[[Joey]] + >>> * `autoindex` forgets that a page was deleted when it's no longer needed >>> anyway (this may be harder for `autotag`?) @@ -264,26 +223,23 @@ wrong direction. (fixed --[[Joey]] ) >>>> Good suggestion. Adding the files to RCS is on my todo list anyway. >>>> --[[David_Riebenbauer]] +>>>>> I think it may be better to allow the `add_autofile` caller +>>>>> to specify if it is added to RCS. In my branch, it can do +>>>>> so by just making the callback it registers call `rcs_add`; +>>>>> and I have tag do this. Other plugins might want autofiles +>>>>> that do not get checked in, conceivably. +>>>>> --[[Joey]] + > Regarding the call from `IkiWiki.pm` to `Render.pm`, wouldn't this be > 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 -things a bit. It is untested so far though. --[[Joey]] - ---- - -Known bugs in my branch (probably also in David's): - -* Does not remember that a tag was deleted. - - The code to do that only works if, at the same time the tag - is deleted, one of the pages that has the tag is modified. - That's because `add_autofile` needs to be called before it's - aware the autofile exists, and if it's not aware, it does not - record it as a deleted autofile. +things a bit and fixes bugs around deletion/recreation. +I've tested it somewhat. --[[Joey]] [f3abeac919c4736429bd3362af6edf51ede8e7fe]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=f3abeac919c4736429bd3362af6edf51ede8e7fe (commitdiff for f3abeac919c4736429bd3362af6edf51ede8e7fe) [4af4d26582f0c2b915d7102fb4a604b176385748]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=4af4d26582f0c2b915d7102fb4a604b176385748 (commitdiff for 4af4d26582f0c2b915d7102fb4a604b176385748) diff --git a/doc/todo/auto_rebuild_on_template_change.mdwn b/doc/todo/auto_rebuild_on_template_change.mdwn index b5c107915..a112cb9da 100644 --- a/doc/todo/auto_rebuild_on_template_change.mdwn +++ b/doc/todo/auto_rebuild_on_template_change.mdwn @@ -35,6 +35,10 @@ suffice. (This would also help to clear up the tricky disctinction between wikitemplates and in-wiki templates.) +Note also that when using templates from "$srcdir/templates/", `no_includes` +needs to be set. Currently this is done by the two plugins that use +such templates, while includes are allowed in `templatedir`. + > But would this require that templates be parseable as wiki pages? Because that would be a nuisance. --[[KathrynAndersen]] >> It would be better for them not to be rendered separately at all.