- Adds a tag plugin that allows more easily tagging pages.
The meta plugin can also still be used for that, but the tag plugin also lists a page's tags at the bottom of the page. - Allows preprocessor directives to have parameters with no specified value. - Fixes preprocessor directive parameter parsing so that foo=bar baz now means "foo=bar" and a "baz" with no value. * Run pagetemplate hooks when inlining pages so that inlines pages also list their tags. * Make all plugins with pagetemplate hooks check that variables exist on the template before setting them.master
parent
5017ffd8a5
commit
20eacc2c1f
|
@ -80,7 +80,15 @@ sub preprocess_inline (@) { #{{{
|
||||||
$template->param(content => get_inline_content($params{page}, $page))
|
$template->param(content => get_inline_content($params{page}, $page))
|
||||||
if $params{archive} eq "no";
|
if $params{archive} eq "no";
|
||||||
$template->param(ctime => displaytime($pagectime{$page}));
|
$template->param(ctime => displaytime($pagectime{$page}));
|
||||||
|
|
||||||
|
if (exists $hooks{pagetemplate}) {
|
||||||
|
foreach my $id (keys %{$hooks{pagetemplate}}) {
|
||||||
|
$hooks{pagetemplate}{$id}{call}->($page, $template);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$ret.=$template->output;
|
$ret.=$template->output;
|
||||||
|
$template->clear_params;
|
||||||
}
|
}
|
||||||
|
|
||||||
# TODO: should really add this to renderedfiles and call
|
# TODO: should really add this to renderedfiles and call
|
||||||
|
|
|
@ -56,8 +56,10 @@ sub pagetemplate ($$) { #{{{
|
||||||
my $page=shift;
|
my $page=shift;
|
||||||
my $template=shift;
|
my $template=shift;
|
||||||
|
|
||||||
$template->param(meta => $meta{$page}) if exists $meta{$page};
|
$template->param(meta => $meta{$page})
|
||||||
$template->param(title => $title{$page}) if exists $title{$page};
|
if exists $meta{$page} && $template->query(name => "meta");
|
||||||
|
$template->param(title => $title{$page})
|
||||||
|
if exists $title{$page} && $template->query(name => "title");
|
||||||
} # }}}
|
} # }}}
|
||||||
|
|
||||||
1
|
1
|
||||||
|
|
|
@ -32,6 +32,7 @@ sub pagetemplate ($$) { #{{{
|
||||||
my $template=shift;
|
my $template=shift;
|
||||||
|
|
||||||
# Add search box to page header.
|
# Add search box to page header.
|
||||||
|
if ($template->query(name => "searchform")) {
|
||||||
$template->param(searchform => qq{
|
$template->param(searchform => qq{
|
||||||
<form method="get" action="$IkiWiki::config{cgiurl}" id="searchform">
|
<form method="get" action="$IkiWiki::config{cgiurl}" id="searchform">
|
||||||
<div>
|
<div>
|
||||||
|
@ -41,6 +42,7 @@ sub pagetemplate ($$) { #{{{
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
});
|
});
|
||||||
|
}
|
||||||
} #}}}
|
} #}}}
|
||||||
|
|
||||||
sub delete (@) { #{{{
|
sub delete (@) { #{{{
|
||||||
|
|
|
@ -6,10 +6,13 @@ use warnings;
|
||||||
use strict;
|
use strict;
|
||||||
use IkiWiki;
|
use IkiWiki;
|
||||||
|
|
||||||
my %tag;
|
my %tags;
|
||||||
|
|
||||||
sub import { #{{{
|
sub import { #{{{
|
||||||
IkiWiki::hook(type => "preprocess", id => "tag", call => \&preprocess);
|
IkiWiki::hook(type => "preprocess", id => "tag",
|
||||||
|
call => \&preprocess);
|
||||||
|
IkiWiki::hook(type => "pagetemplate", id => "tag",
|
||||||
|
call => \&pagetemplate);
|
||||||
} # }}}
|
} # }}}
|
||||||
|
|
||||||
sub preprocess (@) { #{{{
|
sub preprocess (@) { #{{{
|
||||||
|
@ -20,7 +23,9 @@ sub preprocess (@) { #{{{
|
||||||
my $page = $params{page};
|
my $page = $params{page};
|
||||||
delete $params{page};
|
delete $params{page};
|
||||||
|
|
||||||
|
$tags{$page} = [];
|
||||||
foreach my $tag (keys %params) {
|
foreach my $tag (keys %params) {
|
||||||
|
push @{$tags{$page}}, $tag;
|
||||||
# hidden WikiLink
|
# hidden WikiLink
|
||||||
push @{$IkiWiki::links{$page}}, $tag;
|
push @{$IkiWiki::links{$page}}, $tag;
|
||||||
}
|
}
|
||||||
|
@ -28,4 +33,14 @@ sub preprocess (@) { #{{{
|
||||||
return "";
|
return "";
|
||||||
} # }}}
|
} # }}}
|
||||||
|
|
||||||
|
sub pagetemplate ($$) { #{{{
|
||||||
|
my $page=shift;
|
||||||
|
my $template=shift;
|
||||||
|
|
||||||
|
$template->param(tags => join(', ',
|
||||||
|
map { IkiWiki::htmllink($page, $page, $_) }
|
||||||
|
@{$tags{$page}}))
|
||||||
|
if exists $tags{$page} && $template->query(name => "tags");
|
||||||
|
} # }}}
|
||||||
|
|
||||||
1
|
1
|
||||||
|
|
|
@ -1,12 +1,17 @@
|
||||||
ikiwiki (1.11) UNRELEASED; urgency=low
|
ikiwiki (1.11) UNRELEASED; urgency=low
|
||||||
|
|
||||||
* Patch from Enrico that
|
* Patch from Enrico that
|
||||||
- allows preprocessor directives to have parameters with no specified
|
- Adds a tag plugin that allows more easily tagging pages.
|
||||||
value
|
The meta plugin can also still be used for that, but the tag plugin
|
||||||
- fixes preprocessor directive parameter parsing so that
|
also lists a page's tags at the bottom of the page.
|
||||||
foo=bar baz now means "foo=bar" and a "baz" with no value
|
- Allows preprocessor directives to have parameters with no specified
|
||||||
- Add a tag plugin that allows more easily tagging pages.
|
value.
|
||||||
The meta plugin can also still be used for this.
|
- Fixes preprocessor directive parameter parsing so that
|
||||||
|
foo=bar baz now means "foo=bar" and a "baz" with no value.
|
||||||
|
* Run pagetemplate hooks when inlining pages so that inlines pages also
|
||||||
|
list their tags.
|
||||||
|
* Make all plugins with pagetemplate hooks check that variables exist
|
||||||
|
on the template before setting them.
|
||||||
|
|
||||||
-- Joey Hess <joeyh@debian.org> Thu, 27 Jul 2006 17:03:09 -0400
|
-- Joey Hess <joeyh@debian.org> Thu, 27 Jul 2006 17:03:09 -0400
|
||||||
|
|
||||||
|
|
|
@ -96,9 +96,16 @@ languages to ikiwiki.
|
||||||
Each time a page is rendered, a [[template|templates]] is filled out.
|
Each time a page is rendered, a [[template|templates]] is filled out.
|
||||||
This hook allows modifying that template. The function is passed the name
|
This hook allows modifying that template. The function is passed the name
|
||||||
of the page, and a `HTML::Template` object that is the template that will
|
of the page, and a `HTML::Template` object that is the template that will
|
||||||
be used to generate the page. It can manipulate that template, the most
|
be used to generate the page. It can manipulate that template object.
|
||||||
common thing to do is probably to call $template->param() to add a new
|
|
||||||
custom parameter to the template.
|
The most common thing to do is probably to call $template->param() to add
|
||||||
|
a new custom parameter to the template. Note that in order to be robust,
|
||||||
|
it's a good idea to check whether the template has a variable before trying
|
||||||
|
to set it, as setting a variable that's not present is an error.
|
||||||
|
|
||||||
|
if ($template->query(name => 'foo')) {
|
||||||
|
$template->param("foo" => "bar");
|
||||||
|
}
|
||||||
|
|
||||||
## sanitize
|
## sanitize
|
||||||
|
|
||||||
|
|
|
@ -38,4 +38,3 @@ Suggestions of ideas for plugins:
|
||||||
All the kinds of plugins that blogging software has is also a possibility:
|
All the kinds of plugins that blogging software has is also a possibility:
|
||||||
|
|
||||||
* Blog post calendar
|
* Blog post calendar
|
||||||
* Tag stuff?
|
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
Stuff still needing to be done with tags:
|
||||||
|
|
||||||
|
* Move the pages they link to into an automatic tag/ namespace?
|
||||||
|
* Include tag info in the RSS feed.
|
||||||
|
* Technorati tag support?
|
|
@ -4,6 +4,9 @@
|
||||||
<TMPL_VAR CONTENT>
|
<TMPL_VAR CONTENT>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<i>(posted <TMPL_VAR CTIME>)</i>
|
<i>
|
||||||
|
Posted <TMPL_VAR CTIME>
|
||||||
|
<TMPL_IF NAME="TAGS">Tags: <TMPL_VAR TAGS></TMPL_IF>
|
||||||
|
</i>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
<p>
|
<p>
|
||||||
<TMPL_VAR PAGELINK><br />
|
<TMPL_VAR PAGELINK><br />
|
||||||
<i>(posted <TMPL_VAR CTIME>)</i>
|
<i>
|
||||||
|
Posted <TMPL_VAR CTIME>
|
||||||
|
<!-- <TMPL_IF NAME="TAGS"><TMPL_VAR TAGS></TMPL_IF> -->
|
||||||
|
</i>
|
||||||
</p>
|
</p>
|
||||||
|
|
|
@ -62,6 +62,7 @@ Links:
|
||||||
<span id="pageinfo">
|
<span id="pageinfo">
|
||||||
<!-- from <TMPL_VAR NAME=WIKINAME> -->
|
<!-- from <TMPL_VAR NAME=WIKINAME> -->
|
||||||
Last edited <TMPL_VAR NAME=MTIME>
|
Last edited <TMPL_VAR NAME=MTIME>
|
||||||
|
<TMPL_IF NAME="TAGS">Tags: <TMPL_VAR TAGS></TMPL_IF>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue