diff options
-rw-r--r-- | IkiWiki/Plugin/theme.pm | 37 | ||||
-rw-r--r-- | IkiWiki/Plugin/wmd.pm | 1 | ||||
-rwxr-xr-x | Makefile.PL | 16 | ||||
-rw-r--r-- | debian/changelog | 1 | ||||
-rw-r--r-- | debian/copyright | 8 | ||||
-rw-r--r-- | doc/css.mdwn | 3 | ||||
-rw-r--r-- | doc/css_market.mdwn | 3 | ||||
-rw-r--r-- | doc/plugins/theme.pm | 11 | ||||
-rw-r--r-- | themes/actiontabs/style.css | 123 | ||||
-rw-r--r-- | themes/bzed/background_darkness.png | bin | 0 -> 165 bytes | |||
-rw-r--r-- | themes/bzed/header_background.png | bin | 0 -> 53693 bytes | |||
-rw-r--r-- | themes/bzed/style.css | 280 |
12 files changed, 480 insertions, 3 deletions
diff --git a/IkiWiki/Plugin/theme.pm b/IkiWiki/Plugin/theme.pm new file mode 100644 index 000000000..ba6966381 --- /dev/null +++ b/IkiWiki/Plugin/theme.pm @@ -0,0 +1,37 @@ +#!/usr/bin/perl +package IkiWiki::Plugin::theme; + +use warnings; +use strict; +use IkiWiki 3.00; + +sub import { + hook(type => "getsetup", id => "theme", call => \&getsetup); + hook(type => "checkconfig", id => "theme", call => \&checkconfig); +} + +sub getsetup () { + return + plugin => { + safe => 1, + rebuild => 0, + section => "web", + }, + theme => { + type => "string", + example => "actiontabs", + description => "name of theme to enable", + safe => 1, + rebuild => 1, + }, +} + +my $added=0; +sub checkconfig () { + if (! $added && exists $config{theme} && $config{theme} =~ /^\w+$/) { + add_underlay("themes/".$config{theme}); + $added=1; + } +} + +1 diff --git a/IkiWiki/Plugin/wmd.pm b/IkiWiki/Plugin/wmd.pm index 99b136281..71d7c9d17 100644 --- a/IkiWiki/Plugin/wmd.pm +++ b/IkiWiki/Plugin/wmd.pm @@ -4,7 +4,6 @@ package IkiWiki::Plugin::wmd; use warnings; use strict; use IkiWiki 3.00; -use Encode; sub import { add_underlay("wmd"); diff --git a/Makefile.PL b/Makefile.PL index 4001c841b..4b2e28544 100755 --- a/Makefile.PL +++ b/Makefile.PL @@ -75,10 +75,24 @@ underlay_install: install -d $(DESTDIR)$(PREFIX)/share/ikiwiki/directives/ikiwiki/directive for file in doc/ikiwiki/directive/*; do \ if [ -f "$$file" ]; then \ + cp -aL $$file $(DESTDIR)$(PREFIX)/share/ikiwiki/directives/ikiwiki/directive 2>/dev/null || \ install -m 644 $$file $(DESTDIR)$(PREFIX)/share/ikiwiki/directives/ikiwiki/directive; \ fi \ done - + + # Themes have their style.css appended to the normal one. + for theme in themes/*; do \ + install -d $(DESTDIR)$(PREFIX)/share/ikiwiki/$$theme; \ + for file in $$theme/*; do \ + if echo "$$file" | grep -q style.css; then \ + (cat doc/style.css; cat $$file) >> $(DESTDIR)$(PREFIX)/share/ikiwiki/$$theme/style.css; \ + elif [ -f "$$file" ]; then \ + cp -aL $$file $(DESTDIR)$(PREFIX)/share/ikiwiki/$$file 2>/dev/null || \ + install -m 644 $$file $(DESTDIR)$(PREFIX)/share/ikiwiki/$$file; \ + fi \ + done; \ + done + extra_install: underlay_install # Install example sites. for dir in `cd doc/examples; find . -type d ! -regex '.*\.svn.*'`; do \ diff --git a/debian/changelog b/debian/changelog index 1f350912e..0d49df676 100644 --- a/debian/changelog +++ b/debian/changelog @@ -22,6 +22,7 @@ ikiwiki (3.20100611) UNRELEASED; urgency=low * git: Gix --gettime to properly support utf8 filenames. * attachment: Support Windows paths when taking basename of client-supplied file name. + * theme: New plugin, allows easily theming a site via the underlay. -- Joey Hess <joeyh@debian.org> Fri, 11 Jun 2010 13:39:15 -0400 diff --git a/debian/copyright b/debian/copyright index 7ef266151..72394eadc 100644 --- a/debian/copyright +++ b/debian/copyright @@ -202,6 +202,14 @@ Files: underlays/openid-selector/ikiwiki/openid/jquery.js Copyright: © 2005-2008 by John Resig, Branden Aaron & Jörn Zaefferer License: GPL-2 +Files: underlays/themes/bzed/* +Copyright: + © 2009,2010 Bernd Zeimetz + © 2008 Yahoo! Inc. +License: GPL-2+ + Parts derived from BSD-C3 licensed YUI library. + http://developer.yahoo.com/yui/license.html + License: BSD-C2 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions diff --git a/doc/css.mdwn b/doc/css.mdwn index 29a335596..35db57b0c 100644 --- a/doc/css.mdwn +++ b/doc/css.mdwn @@ -9,6 +9,9 @@ defining brand new rendering rules. While ikiwiki's default use of stylesheets is intentionally quite plain and minimalistic, CSS allows creating any kind of look you can dream up. +The [[theme_plugin|plugins/theme]] provides some prepackaged themes in an +easy to use way. + The [[css_market]] page is an attempt to collect user contributed local.css files. diff --git a/doc/css_market.mdwn b/doc/css_market.mdwn index a0943547c..0e5a68740 100644 --- a/doc/css_market.mdwn +++ b/doc/css_market.mdwn @@ -5,7 +5,8 @@ these style sheets can be installed by copying them into your wiki's source dir with a filename of `local.css`. Feel free to add your own stylesheets here. (Upload as wiki pages; wiki -gnomes will convert them to css files..) +gnomes will convert them to css files..) Selected ones from here are +included in the [[theme_plugin|plugins/theme]]. * **[[css_market/zack.css]]**, contributed by [[StefanoZacchiroli]], customized mostly for *blogging purposes*, can be seen in action on diff --git a/doc/plugins/theme.pm b/doc/plugins/theme.pm new file mode 100644 index 000000000..7149cc163 --- /dev/null +++ b/doc/plugins/theme.pm @@ -0,0 +1,11 @@ +[[!template id=plugin name=theme author="[[Joey]]"]] +[[!tag type/web]] + +The theme plugin allows easily applying a theme to your wiki, by +configuring the `theme` setting in the setup file with the name of a theme +to use. The themes you can choose from are all subdirectories, typically +inside `/usr/share/ikiwiki/themes/`. + +A theme provides, via the underlay, an enhanced version of the regular +[[style.css]]. This leaves [[local.css]] free for you to further +customise. Themes can also provide header and background images. diff --git a/themes/actiontabs/style.css b/themes/actiontabs/style.css new file mode 100644 index 000000000..f48448e2e --- /dev/null +++ b/themes/actiontabs/style.css @@ -0,0 +1,123 @@ +/* actiontabs theme for ikiwiki + * + * by svend + */ + +a { + text-decoration: none; + color: #005a9c; +} + +a:hover { + text-decoration: underline; +} + + +hr { + border-style: none; + background-color: #999; + height: 1px; +} + +code, pre { + background: #eee; +} + +pre { + padding: .5em; +} + +body { + margin: 0; + padding: 0; + font-family: sans-serif; + color: black; + background: white; +} + +.pageheader { + margin: 0; + padding: 1em 2em 0 2em; + background: #eee; + border-color: #999; + border-style: none none solid none; + border-width: 1px; +} + +.header { + font-size: 100%; + font-weight: normal; +} + +.title { + display: block; + margin-top: .2em; + font: 140% sans-serif; + text-transform: capitalize; +} + +.actions { + text-align: right; + padding: 0; +} + +#content, #comments, #footer { + margin: 1em 2em; +} + +#pageinfo { + border-color: #999; +} + +.inlinepage { + margin: .4em 0; + padding: .4em 0; + border-style: none; + border-top: 1px solid #aaa; +} + +.inlineheader { + font-size: 120%; + font-weight: normal; +} + +h1 { font: 120% sans-serif } +h2 { font: bold 100% sans-serif } +h3 { font: italic 100% sans-serif } +h4, h5, h6 { font: small-caps 100% sans-serif } + +/* Smaller headings for inline pages */ +.inlinepage h1 { font-size: 110% } +.inlinepage h2 { font-size: 100% } +.inlinepage h3 { font-size: 100% } + +.pageheader .actions ul { + border-style: none +} + +.actions ul { + font-size: 75%; + padding: 0; + border-style: none; +} + +.actions ul li a { + text-decoration: none; +} + +.actions ul li { + margin: 0; + padding: .1em .5em 0 .5em; + background: white; + border-color: #999; + border-style: solid solid none solid; + border-width: 1px; +} + +div.recentchanges { + border-style: none; +} + +.pagecloud { + width: auto; +} diff --git a/themes/bzed/background_darkness.png b/themes/bzed/background_darkness.png Binary files differnew file mode 100644 index 000000000..0a1cb4e9e --- /dev/null +++ b/themes/bzed/background_darkness.png diff --git a/themes/bzed/header_background.png b/themes/bzed/header_background.png Binary files differnew file mode 100644 index 000000000..4712ffb8f --- /dev/null +++ b/themes/bzed/header_background.png diff --git a/themes/bzed/style.css b/themes/bzed/style.css new file mode 100644 index 000000000..540cac415 --- /dev/null +++ b/themes/bzed/style.css @@ -0,0 +1,280 @@ +/* bzed theme for ikiwiki + * + * Copyright (C) 2010 Bernd Zeimetz + * Licensed under same license as ikiwiki: GPL v2 or later + * + * Parts of this file are based on the awesome YUI, + * these parts will stay under the BSD license, + * but you're free to apply the GPLv2 to them, of course. + */ + + + +/* ------------------------------------------------------------------------------------------------- +Based on reset-fonts-grids.css from yui. +Copyright (c) 2008, Yahoo! Inc. All rights reserved. +Code licensed under the BSD License: +http://developer.yahoo.net/yui/license.txt +version: 2.5.1 +*/ +body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,legend,p,blockquote,th,td{margin:0;padding:0;} +table{border-collapse:collapse;border-spacing:0;} +img{border:0;} +address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;} +li{list-style:none;} +caption,th{text-align:left;} +h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;} +q:before,q:after{content:'';} +abbr,acronym {border:0;font-variant:normal;} +sup {vertical-align:text-top;} +sub {vertical-align:text-bottom;} +input,textarea,select{font-family:inherit;font-size: 13px/1.23;font-weight:normal;} +input,textarea,select{*font-size:100%;} +legend{color:#000;} +/* body {font:13px/1.231 arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small;} */ +body {font:13px/1.231 "Lucida Grande",Verdana,Lucida,Helvetica,Arial,sans-serif;*font-size:small;*font:x-small;} +table {font-size:inherit;font:100%;} +pre,code,kbd,samp,tt{font-family:monospace;} + + +body{text-align:left;} +.inlinefooter{clear:both;} + +/* #doc,#doc2,#doc3,#doc4,.yui-t1,.yui-t2,.yui-t3,.yui-t4,.yui-t5,.yui-t6,.yui-t7{margin:auto;text-align:left;width:57.69em;*width:56.25em;min-width:750px;} */ +.page {margin:auto;text-align:left;width:57.69em;*width:56.25em;min-width:750px;} + +/* #doc3{margin:auto 10px;width:auto;} */ +.page {margin:auto 10px;width:auto;} + +#pagebody, .sidebar{position:relative;} +#pagebody, .sidebar{_position:static;} +#pagebody {position:static;} +.sidebar {float:right;width:16.5em;*width:16em;} +#pagebody {margin-right:19em;*margin-right:18.5em;} +/* #content {float:none;width:auto;} */ +#pagebody:after, .sidebar:after, .page:after{content:".";display:block;height:0;clear:both;visibility:hidden;} +.page f{zoom:1;} + +/* ------------------------------------------------------------------------------------------------ + * Taken from base.css, part of YUI's CSS Foundation + * Copyright (c) 2008, Yahoo! Inc. All rights reserved. + * Code licensed under the BSD License: + * http://developer.yahoo.net/yui/license.txt + * version: 2.5.1 +*/ +h1 { + /*18px via YUI Fonts CSS foundation*/ + font-size:138.5%; +} +h2 { + /*16px via YUI Fonts CSS foundation*/ + font-size:123.1%; +} +h3 { + /*14px via YUI Fonts CSS foundation*/ + font-size:108%; +} +h1,h2,h3 { + /* top & bottom margin based on font size */ + margin:1em 0; +} +h1,h2,h3,h4,h5,h6,strong { + /*bringing boldness back to headers and the strong element*/ + font-weight:bold; +} +abbr,acronym { + /*indicating to users that more info is available */ + border-bottom:1px dotted #000; + cursor:help; +} +em { + /*bringing italics back to the em element*/ + font-style:italic; +} +blockquote,ul,ol,dl { + /*giving blockquotes and lists room to breath*/ + margin:1em; +} +ol,ul,dl { + /*bringing lists on to the page with breathing room */ + margin-left:2em; +} +ol li { + /*giving OL's LIs generated numbers*/ + list-style: decimal outside; +} +ul li { + /*giving UL's LIs generated disc markers*/ + list-style: disc outside; +} +dl dd { + /*giving UL's LIs generated numbers*/ + margin-left:1em; +} +th,td { + /*borders and padding to make the table readable*/ + border:1px solid #000; + padding:.5em; +} +th { + /*distinguishing table headers from data cells*/ + font-weight:bold; + text-align:center; +} +caption { + /*coordinated margin to match cell's padding*/ + margin-bottom:.5em; + /*centered so it doesn't blend in to other content*/ + text-align:center; +} +p,fieldset,table,pre { + /*so things don't run into each other*/ + margin-bottom:1em; +} + +#searchbox { + width:21.5em;*width:21em; +} + + + +/* ------------------------------------------------------------------------------------------------ + * All CSS below is + * Copyright (C) 2010 Bernd Zeimetz + * Licensed under same license as ikiwiki: GPL v2 or later */ + +.page, .pageheader, .sidebar, #content, #comments, .inlinepage, .recentchanges, .pageheader .actions ul, #pagebody { + border: none; +} + +html, body { + color:#000; + /* background-image: url('body_background.png'); + background-repeat: repeat; */ + background-color: #8da1b8; +} + +body { + padding-left: 5%; + padding-right: 5%; + padding-top: 1em; + padding-bottom: 1em; +} + +.page { + background: #fff; + border: outset #ccc; + padding-left: 1em; + padding-right: 1em; + padding-top: 1em; +} + +.pageheader { + background-image: url('header_background.png'); + background-repeat: repeat-x; + height: 100px; + padding-left: 1em; + padding-right: 1em; + padding-bottom: 1em; + padding-top: 1em; +} + +.pageheader .header { + text-align: top; + clear: both; +} + +.pageheader .header form { + padding: 0em 0em 0em 0em; + float: right; + margin-top: 0.5em; +} + +.pageheader .header .title, .pageheader .header .parentlinks, + .inlinepage .inlineheader, + h1, h2, h3, h4, h5, h6 { + margin-top: 1em; + font-weight: bold; +} + +.pageheader .header .title, .pageheader .header .parentlinks, .pageheader .actions ul li, .pageheader .header span { + padding: 0.25em 0.25em 0.25em 0.25em; + background-image: url('background_darkness.png'); + background-repeat: repeat; + color: white; +} + +.pageheader .header span a, .pageheader .actions ul li a, .pageheader .header .parentlinks a { + color: white; + text-decoration: none; +} + +.pageheader .actions { + text-align: right; + vertical-align: bottom; + clear: both; +} + +#pagebody { + padding-right: 1em; + padding-bottom: 2em; + border-right: ridge #eee; + clear: none; +} + +#content a, #comments a, .sidebar a { + color: #315485; + text-decoration: none; + font-weight: bold; +} + +.sidebar h2 { + border-bottom: ridge #eee; + padding-right: 0; +} + +.sidebar .menu { + margin-left: 1em; +} + + +.inlinepage, .recentchanges, div.recentchanges { + clear: none !important; + margin-bottom: 2em; +} + +.inlinefooter { + border-top: 1px dotted #315485; +} + +.inlinefooter .pagedate, .inlinefooter .tags { + display: inline; + clear: none; + margin-right: 2em; +} + +.calendar .month-calendar th, .calendar .month-calendar td { + padding: 0.22em; +} + +@media print { + .sidebar, .page .pageheader .header .parentlinks { + content:"."; + display:block; + height:0; + visibility:hidden; + } + .page { + padding: 1em 1em 1em 1em; + } + .pageheader .header span a, .pageheader .actions ul li a, .pageheader .header .parentlinks a { + color #315485; + } + #content, #comments, #pagebody { + margin-right: 0; + *margin-right: 0; + border-right: none; + } + +} + |