$linktext=pagetitle(basename($link)) unless defined $linktext;
- return $linktext if length $bestlink && $page eq $bestlink;
+ return "<span class=\"selflink\">$linktext</span>"
+ if length $bestlink && $page eq $bestlink;
# TODO BUG: %renderedfiles may not have it, if the linked to page
# was also added and isn't yet rendered! Note that this bug is
--- /dev/null
+#!/usr/bin/perl
+# Sidebar plugin.
+# by Tuomo Valkonen <tuomov at iki dot fi>
+
+package IkiWiki::Plugin::sidebar;
+
+use warnings;
+use strict;
+use IkiWiki;
+
+sub import { #{{{
+ IkiWiki::hook(type => "pagetemplate", id => "sidebar",
+ call => \&pagetemplate);
+} # }}}
+
+sub sidebar_content ($) { #{{{
+ my $page=shift;
+
+ my $sidebar_page=IkiWiki::bestlink($page, "sidebar") || return;
+ my $sidebar_file=$IkiWiki::pagesources{$sidebar_page} || return;
+ my $sidebar_type=IkiWiki::pagetype($sidebar_file);
+
+ if (defined $sidebar_type) {
+ IkiWiki::add_depends($page, $sidebar_page);
+ my $content=IkiWiki::readfile(IkiWiki::srcfile($sidebar_file));
+ return unless length $content;
+ return IkiWiki::htmlize($sidebar_type,
+ IkiWiki::preprocess($sidebar_page, $page,
+ IkiWiki::linkify($sidebar_page, $page, $content)));
+ }
+
+} # }}}
+
+sub pagetemplate (@) { #{{{
+ my %params=@_;
+
+ my $page=$params{page};
+ my $template=$params{template};
+
+ if ($template->query(name => "sidebar")) {
+ my $content=sidebar_content($page);
+ if (defined $content && length $content) {
+ $template->param(sidebar => $content);
+ }
+ }
+} # }}}
+
+1
.normalPC { font-size: 100%; }
.bigPC { font-size: 115%; }
.biggestPC { font-size: 130%; }
+
+#sidebar {
+ line-height: 3ex;
+ width: 20ex;
+ float: right;
+ margin-left: 40px;
+ margin-bottom: 40px;
+ padding: 2ex 2ex;
+}
+ikiwiki (1.21) UNRELEASED; urgency=low
+
+ * Add a tail fin^W^Wsidebar plugin by Tuomo Valkonen.
+ * If a page links to itself, mark up the link text in a span with
+ class="selflink" so that it can be styled. I don't have a useful style
+ defined for that though.
+
+ -- Joey Hess <joeyh@debian.org> Thu, 17 Aug 2006 20:18:23 -0400
+
ikiwiki (1.20) unstable; urgency=low
* Relicense the templates and basewiki under the 2-clause BSD license.
# To add plugins, list them here.
#add_plugins => [qw{meta tag pagecount brokenlinks search smiley
- # wikitext camelcase pagestats htmltidy fortune}],
+ # wikitext camelcase pagestats htmltidy fortune
+ # sidebar}],
# If you want to disable any of the default plugins, list them here.
#disable_plugins => [qw{inline htmlscrubber}],
}
Most of ikiwiki's [[features]] are implemented as plugins. Beyond the
[[type/core]] features, there are plugins to [[type/format]] text,
use [[type/tags]], show [[type/meta]] information, do other [[type/useful]]
-stuff, or just have [[type/fun]].
+stuff, add [[type/chrome]] to the wiki, or just have [[type/fun]].
There's documentation if you want to [[write]] your own plugins, or you can
install and use plugins contributed by others.
--- /dev/null
+If this plugin is enabled, then a sidebar is added to pages in the wiki.
+The content of the sidebar is simply the content of a page named
+"sidebar".
+
+Typically this will be a page in the root of the wiki, but it can also be a
+[[SubPage]]. In fact, this page, [[plugins/sidebar|plugins/sidebar]], will
+be treated as a sidebar for the [[plugins]] page, and of all of its
+SubPages, if the plugin is enabled.
+
+This plugin is included in ikiwiki, but is not enabled by default.
+
+[[tag type/chrome]]
--- /dev/null
+These plugins affect the look and feel of the wiki.
</div>
</TMPL_IF>
+<TMPL_IF SIDEBAR>
+<div id="sidebar">
+<TMPL_VAR SIDEBAR>
+</div>
+</TMPL_IF>
+
<div id="content">
<TMPL_VAR CONTENT>
</div>