A tag like ./foo is searched for relative to the tagging page.
However, if multiple pages use such a tag, the only one sure
to be in common is in the root, so autocreate it there to
avoid scattering redunadant autocreated tags around the tree.
(This is probably not ideal.)
Also renamed the tagpage and taglink functions for clarity.
my $tag=shift;
if ($tag !~ m{^\.?/} &&
my $tag=shift;
if ($tag !~ m{^\.?/} &&
+sub htmllink_tag ($$$;@) {
my $page=shift;
my $destpage=shift;
my $tag=shift;
my %opts=@_;
my $page=shift;
my $destpage=shift;
my $tag=shift;
my %opts=@_;
- return htmllink($page, $destpage, tagpage($tag), %opts);
+ return htmllink($page, $destpage, taglink($tag), %opts);
}
sub gentag ($) {
my $tag=shift;
}
sub gentag ($) {
my $tag=shift;
if ($config{tag_autocreate}) {
if ($config{tag_autocreate}) {
- my $tagfile = newpagefile(tagpage($tag), $config{default_pageext});
- $tagfile=~s/^\///;
+ my $tagpage=taglink($tag);
+ if ($tagpage=~/^\.\/(.*)/) {
+ $tagpage=$1;
+ }
+ else {
+ $tagpage=~s/^\///;
+ }
+
+ my $tagfile = newpagefile($tagpage, $config{default_pageext});
add_autofile($tagfile, "tag", sub {
debug(sprintf(gettext("creating tag page %s"), $tag));
add_autofile($tagfile, "tag", sub {
debug(sprintf(gettext("creating tag page %s"), $tag));
$tag=linkpage($tag);
# hidden WikiLink
$tag=linkpage($tag);
# hidden WikiLink
- add_link($page, tagpage($tag), 'tag');
+ add_link($page, taglink($tag), 'tag');
return join(" ", map {
if (/(.*)\|(.*)/) {
my $tag=linkpage($2);
return join(" ", map {
if (/(.*)\|(.*)/) {
my $tag=linkpage($2);
- add_link($params{page}, tagpage($tag), 'tag');
+ add_link($params{page}, taglink($tag), 'tag');
- return taglink($params{page}, $params{destpage}, $tag,
+ return htmllink_tag($params{page}, $params{destpage}, $tag,
linktext => pagetitle($1));
}
else {
my $tag=linkpage($_);
linktext => pagetitle($1));
}
else {
my $tag=linkpage($_);
- add_link($params{page}, tagpage($tag), 'tag');
+ add_link($params{page}, taglink($tag), 'tag');
- return taglink($params{page}, $params{destpage}, $tag);
+ return htmllink_tag($params{page}, $params{destpage}, $tag);
$template->param(tags => [
map {
$template->param(tags => [
map {
- link => taglink($page, $destpage, $_, rel => "tag")
+ link => htmllink_tag($page, $destpage, $_, rel => "tag")
}, sort keys %$tags
]) if defined $tags && %$tags && $template->query(name => "tags");
}, sort keys %$tags
]) if defined $tags && %$tags && $template->query(name => "tags");
package IkiWiki::PageSpec;
sub match_tagged ($$;@) {
package IkiWiki::PageSpec;
sub match_tagged ($$;@) {
- return match_link($_[0], IkiWiki::Plugin::tag::tagpage($_[1]), linktype => 'tag');
+ return match_link($_[0], IkiWiki::Plugin::tag::taglink($_[1]), linktype => 'tag');