aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--IkiWiki/Plugin/localstyle.pm35
-rw-r--r--debian/changelog2
-rw-r--r--doc/css.mdwn3
-rw-r--r--doc/plugins/localstyle.mdwn12
-rw-r--r--templates/page.tmpl5
5 files changed, 57 insertions, 0 deletions
diff --git a/IkiWiki/Plugin/localstyle.pm b/IkiWiki/Plugin/localstyle.pm
new file mode 100644
index 000000000..111f4dc30
--- /dev/null
+++ b/IkiWiki/Plugin/localstyle.pm
@@ -0,0 +1,35 @@
+#!/usr/bin/perl
+
+package IkiWiki::Plugin::localstyle;
+
+use warnings;
+use strict;
+use IkiWiki 3.00;
+
+sub import {
+ hook(type => "getsetup", id => "localstyle", call => \&getsetup);
+ hook(type => "pagetemplate", id => "localstyle", call => \&pagetemplate);
+}
+
+sub getsetup () {
+ return
+ plugin => {
+ safe => 1,
+ rebuild => 1,
+ },
+}
+
+sub pagetemplate (@) {
+ my %params=@_;
+
+ my $template=$params{template};
+
+ if ($template->query(name => "local_css")) {
+ my $best=bestlink($params{page}, 'local.css');
+ if ($best) {
+ $template->param(local_css => $best);
+ }
+ }
+}
+
+1
diff --git a/debian/changelog b/debian/changelog
index 6a5ae30ab..4ab63f175 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -8,6 +8,8 @@ ikiwiki (3.20091032) UNRELEASED; urgency=low
the template is filled out. This improves the search plugin's indexing,
since it will not include navigational elements from the page template
or sidebar.
+ * localstyle: New plugin, allows overrding the toplevel local.css
+ with one that is closer to a page.
-- Joey Hess <joeyh@debian.org> Fri, 06 Nov 2009 12:04:29 -0500
diff --git a/doc/css.mdwn b/doc/css.mdwn
index 20790b3d1..29a335596 100644
--- a/doc/css.mdwn
+++ b/doc/css.mdwn
@@ -16,3 +16,6 @@ files.
The [[plugins/meta]] plugin can be used to add additional style sheets to a
page.
+
+The [[plugins/localstyle]] plugin can be used to override the toplevel
+[[local.css]] for a whole section of the wiki.
diff --git a/doc/plugins/localstyle.mdwn b/doc/plugins/localstyle.mdwn
new file mode 100644
index 000000000..70a909d68
--- /dev/null
+++ b/doc/plugins/localstyle.mdwn
@@ -0,0 +1,12 @@
+[[!template id=plugin name=localstyle author="[[Joey]]"]]
+[[!tag type/chrome]]
+
+This plugin allows styling different sections of a wiki using different
+versions of the local.css [[CSS]] file. Normally this file is read from the
+top level of the wiki, but with this plugin enabled, standard
+[[ikiwiki/subpage/LinkingRules]] are used to find the closest local.css
+file to each page.
+
+So, for example, to use different styling for page `foo`, as well as all
+of its [[SubPages|ikiwiki/subpage]], such as `foo/bar`, create a
+`foo/local.css`.
diff --git a/templates/page.tmpl b/templates/page.tmpl
index e71ba316d..0e73463ec 100644
--- a/templates/page.tmpl
+++ b/templates/page.tmpl
@@ -7,8 +7,13 @@
<TMPL_IF NAME="FAVICON">
<link rel="icon" href="<TMPL_VAR BASEURL><TMPL_VAR FAVICON>" type="image/x-icon" />
</TMPL_IF>
+<TMPL_IF NAME="STYLE_CSS">
<link rel="stylesheet" href="<TMPL_VAR BASEURL>style.css" type="text/css" />
+<TMPL_IF NAME="LOCAL_CSS">
+<link rel="stylesheet" href="<TMPL_VAR BASEURL><TMPL_VAR LOCAL_CSS>" type="text/css" />
+<TMPL_ELSE>
<link rel="stylesheet" href="<TMPL_VAR BASEURL>local.css" type="text/css" />
+</TMPL_IF>
<TMPL_IF NAME="EDITURL">
<link rel="alternate" type="application/x-wiki" title="Edit this page" href="<TMPL_VAR EDITURL>" />
</TMPL_IF>