* Add a tail fin^W^Wsidebar plugin by Tuomo Valkonen.
authorjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Fri, 18 Aug 2006 00:24:22 +0000 (00:24 +0000)
committerjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Fri, 18 Aug 2006 00:24:22 +0000 (00:24 +0000)
* 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.

IkiWiki.pm
IkiWiki/Plugin/sidebar.pm [new file with mode: 0644]
basewiki/style.css
debian/changelog
doc/ikiwiki.setup
doc/plugins.mdwn
doc/plugins/sidebar.mdwn [new file with mode: 0644]
doc/plugins/type/chrome.mdwn [new file with mode: 0644]
templates/page.tmpl

index 4fc37110b95940a1340d721b6a6e93e17813f0d1..4e30119182c81d3e376027cfac05031c384d9729 100644 (file)
@@ -345,7 +345,8 @@ sub htmllink ($$$;$$$) { #{{{
 
        $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
diff --git a/IkiWiki/Plugin/sidebar.pm b/IkiWiki/Plugin/sidebar.pm
new file mode 100644 (file)
index 0000000..a6efc6b
--- /dev/null
@@ -0,0 +1,48 @@
+#!/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
index 3eb565da2355a541751f6ac430cb0c9a87345543..b975c89f2c38d80ad3cca4135160b9e23b0fadea 100644 (file)
@@ -129,3 +129,12 @@ td.changelog {
 .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;
+}
index af03c72f584461cdf60d4f83024da705cc3133aa..9223500f928a8de57f30f386e0ddba1e69ba42e6 100644 (file)
@@ -1,3 +1,12 @@
+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.
index e149912994010d4beab2f98938bcc84b93b8d78a..a0ce5a468a3fb32243141d162906bc59ce09defd 100644 (file)
@@ -80,7 +80,8 @@ use IkiWiki::Setup::Standard {
        
        # 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}],
 }
index 1c04d09f597bba7aeab2b01207e2907365054a4a..efcf65a7ddf6b51d67268fc626c1375598844ad0 100644 (file)
@@ -1,7 +1,7 @@
 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. 
diff --git a/doc/plugins/sidebar.mdwn b/doc/plugins/sidebar.mdwn
new file mode 100644 (file)
index 0000000..644d1e6
--- /dev/null
@@ -0,0 +1,12 @@
+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]]
diff --git a/doc/plugins/type/chrome.mdwn b/doc/plugins/type/chrome.mdwn
new file mode 100644 (file)
index 0000000..d3f0eb3
--- /dev/null
@@ -0,0 +1 @@
+These plugins affect the look and feel of the wiki.
index 5bdde1fbc1b951b47f35d1a1b85a7c98142de99a..47bbfcda3ff7785bd8f00dded08c1181562df4b6 100644 (file)
 </div>
 </TMPL_IF>
 
+<TMPL_IF SIDEBAR>
+<div id="sidebar">
+<TMPL_VAR SIDEBAR>
+</div>
+</TMPL_IF>
+
 <div id="content">
 <TMPL_VAR CONTENT>
 </div>