foreach my $page (keys %pagesources) {
if (pagespec_match($page, $params{pages}, location => $params{page})) {
if (exists $params{show} &&
+ exists $pagestate{$page} &&
exists $pagestate{$page}{meta}{$params{show}}) {
$mapitems{$page}=$pagestate{$page}{meta}{$params{show}};
}
else {
- $mapitems{$page}=$page;
+ $mapitems{$page}='';
}
# Check for a common prefix.
if (! defined $common_prefix) {
$common_prefix=IkiWiki::dirname($common_prefix);
}
- # Needs to update whenever a page is added or removed, so
- # register a dependency.
+ # Needs to update whenever a page is added or removed (or in some
+ # cases, when its content changes, if show=title), so register a
+ # dependency.
add_depends($params{page}, $params{pages});
# Explicitly add all currently shown pages, to detect when pages
# are removed.
my $openli=0;
my $dummy=0;
my $map = "<div class='map'>\n<ul>\n";
- foreach my $item (sort { $mapitems{$a} cmp $mapitems{$b} } keys %mapitems) {
+ foreach my $item (sort keys %mapitems) {
+ my @linktext = (length $mapitems{$item} ? (linktext => $mapitems{$item}) : ());
$item=~s/^\Q$common_prefix\E\///
if defined $common_prefix && length $common_prefix;
my $depth = ($item =~ tr/\//\//) + 1;
$map .= "<li>"
.htmllink($params{page}, $params{destpage},
"/".$common_prefix."/".$item,
- linktext => $mapitems{$item},
+ @linktext,
class => "mapitem", noimageinline => 1)
."\n";
$openli=1;
# Metadata collection that needs to happen during the scan pass.
if ($key eq 'title') {
$pagestate{$page}{meta}{title}=HTML::Entities::encode_numeric($value);
+ # fallthrough
+ }
+ elsif ($key eq 'description') {
+ $pagestate{$page}{meta}{description}=HTML::Entities::encode_numeric($value);
+ # fallthrough
}
elsif ($key eq 'license') {
push @{$metaheaders{$page}}, '<link rel="license" href="#page_license" />';
titles, rather than the default page name. Based on a patch from
Jaldhar H. Vyas, Closes: #484510
* hnb: New plugin, contributed by Axel Beckert.
+ * meta: Store "description" in pagestate for use by other plugins.
+ * map: Support show=description.
-- Joey Hess <joeyh@debian.org> Sun, 15 Jun 2008 15:03:33 -0400
Copyright: (c) 2006, 2007 Manoj Srivastava <srivasta@debian.org>
License: GPL-2+
+Files: hnb.pm
+Copyright: Copyright (C) 2008 Axel Beckert <abe@deuxchevaux.org>
+License: GPL-2+
+
Files: doc/logo/*
Copyright: © 2006 Recai Oktaş <roktas@debian.org>
License: GPL-2+
Most of ikiwiki's [[features]] are implemented as plugins. Many of these
plugins are included with ikiwiki.
+[[map pages="plugins/*" show=description]]
+
[[pagestats pages="plugins/type/* and !plugins/type/slow"]]
There's documentation if you want to [[write]] your own plugins, or you can
[[template id=plugin name=map author="Alessandro Dotti Contra"]]
[[tag type/meta]]
+[[meta description="some page description"]]
+
This plugin generates a hierarchical page map for the wiki. Example usage:
\[[map pages="* and !blog/* and !*/Discussion"]]
the wiki are mapped.
By default, the names of pages are shown in the map. The `show` parameter
-can be used to show the titles of pages instead. For example:
-
+can be used to show the titles or descriptions of pages instead (as set by
+the [[meta]] plugin). For example:
+
\[[map pages="* and !blog/* and !*/Discussion" show=title]]
Hint: To limit the map to displaying pages less than a certain level deep,