* Patch from Dr. Zini to add link() and backlink() to globlists. This allows
for some handy stuff like: - Using links as a kind of tag; creating blog pages that list all pages containing a given tag/link or not containing some other tag. - Subscribing to mail notifications whenever a change is made to a page that is a backlink of page foo. Ie, "Please notify me of changes in all pages that link to my home page in the wiki" - Locking any pages that are linked to from a particular page, so that lists of locks can be exposed in the wiki.master
parent
140658bc51
commit
ad247de723
28
IkiWiki.pm
28
IkiWiki.pm
|
@ -401,13 +401,27 @@ sub glob_match ($$) { #{{{
|
|||
my $page=shift;
|
||||
my $glob=shift;
|
||||
|
||||
# turn glob into safe regexp
|
||||
$glob=quotemeta($glob);
|
||||
$glob=~s/\\\*/.*/g;
|
||||
$glob=~s/\\\?/./g;
|
||||
$glob=~s!\\/!/!g;
|
||||
|
||||
$page=~/^$glob$/i;
|
||||
if ($glob =~ /^link\((.+)\)$/) {
|
||||
my $rev = $links{$page} or return undef;
|
||||
foreach my $p (@$rev) {
|
||||
return 1 if lc $p eq $1;
|
||||
}
|
||||
return 0;
|
||||
} elsif ($glob =~ /^backlink\((.+)\)$/) {
|
||||
my $rev = $links{$1} or return undef;
|
||||
foreach my $p (@$rev) {
|
||||
return 1 if lc $p eq $page;
|
||||
}
|
||||
return 0;
|
||||
} else {
|
||||
# turn glob into safe regexp
|
||||
$glob=quotemeta($glob);
|
||||
$glob=~s/\\\*/.*/g;
|
||||
$glob=~s/\\\?/./g;
|
||||
$glob=~s!\\/!/!g;
|
||||
|
||||
return $page=~/^$glob$/i;
|
||||
}
|
||||
} #}}}
|
||||
|
||||
sub globlist_match ($$) { #{{{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
You can turn any page on this wiki into a weblog by inserting a
|
||||
[[PreProcessorDirective]]. Like this:
|
||||
|
||||
\\[[inline pages="blog/* !*/Discussion" show="10" rootpage="blog"]]
|
||||
\\[[inline pages="blog/* !*/Discussion" show="10" rootpage="blog"]]
|
||||
|
||||
Any pages that match the specified [[GlobList]] (in the example, any
|
||||
[[SubPage]] of "blog") will be part of the blog, and the newest 10
|
||||
|
@ -14,9 +14,20 @@ top of the blog that can be used to add new items.
|
|||
If you want your blog to have an archive page listing every post ever made
|
||||
to it, you can accomplish that like this:
|
||||
|
||||
\\[[inline pages="blog/* !*/Discussion" archive="yes"]]
|
||||
\\[[inline pages="blog/* !*/Discussion" archive="yes"]]
|
||||
|
||||
You can even create an automatically generated list of all the pages on the
|
||||
wiki, with the most recently added at the top, like this:
|
||||
|
||||
\\[[inline pages="* !*/Discussion" archive="yes"]]
|
||||
\\[[inline pages="* !*/Discussion" archive="yes"]]
|
||||
|
||||
If you want to be able to add pages to a given blog feed by tagging them,
|
||||
you can do that too. To tag a page, just make it link to a page or pages
|
||||
that represent its tags. Then use the special link() [[GlobList]] to match
|
||||
all pages that have a given tag:
|
||||
|
||||
\\[[inline pages="link(life)"]]
|
||||
|
||||
Or include some tags and exclude others:
|
||||
|
||||
\\[[inline pages="link(debian) !link(social)"]]
|
||||
|
|
|
@ -14,3 +14,7 @@ pages that match it. So if you want to specify all pages except for
|
|||
Discussion pages and the SandBox:
|
||||
|
||||
* !SandBox !*/Discussion
|
||||
|
||||
It's also possible to match pages that link to a given page, by writing
|
||||
"link(page)" in a globlist. Or, match pages that a given page links to, by
|
||||
writing "backlink(page)".
|
||||
|
|
|
@ -4,8 +4,17 @@ ikiwiki (1.5) UNRELEASED; urgency=low
|
|||
Note that as a side effect, dates will now be displayed using the local
|
||||
timezone, not as GMT.
|
||||
* More security review.
|
||||
* Patch from Dr. Zini to add link() and backlink() to globlists. This allows
|
||||
for some handy stuff like:
|
||||
- Using links as a kind of tag; creating blog pages that list all pages
|
||||
containing a given tag/link or not containing some other tag.
|
||||
- Subscribing to mail notifications whenever a change is made to a page
|
||||
that is a backlink of page foo. Ie, "Please notify me of changes in all
|
||||
pages that link to my home page in the wiki"
|
||||
- Locking any pages that are linked to from a particular page, so that
|
||||
lists of locks can be exposed in the wiki.
|
||||
|
||||
-- Joey Hess <joeyh@debian.org> Thu, 1 Jun 2006 15:12:29 -0400
|
||||
-- Joey Hess <joeyh@debian.org> Thu, 1 Jun 2006 20:56:58 -0400
|
||||
|
||||
ikiwiki (1.4) unstable; urgency=low
|
||||
|
||||
|
|
|
@ -37,12 +37,14 @@ Some of ikiwiki's features:
|
|||
|
||||
* [[blog]]s
|
||||
|
||||
You can turn any page in the wiki into a [[blog]]. Pages with names
|
||||
matching a specified [[GlobList]] will be displayed as a weblog within
|
||||
the blog page. And an RSS feed can be generated to follow the blog.
|
||||
You can turn any page in the wiki into a [[blog]]. Pages matching a
|
||||
specified [[GlobList]] will be displayed as a weblog within the blog
|
||||
page. And an RSS feed can be generated to follow the blog.
|
||||
|
||||
Ikiwiki's own [[TODO]], [[news]], and [[plugins]] pages are good examples of some of
|
||||
the flexible ways that this can be used.
|
||||
Ikiwiki's own [[TODO]], [[news]], and [[plugins]] pages are good examples
|
||||
of some of the flexible ways that this can be used.
|
||||
|
||||
Note that this also includes support for tag-based blogging.
|
||||
|
||||
* Fast compiler
|
||||
|
||||
|
|
Loading…
Reference in New Issue