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.