summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile4
-rw-r--r--doc/features.mdwn7
-rw-r--r--doc/setup.mdwn5
-rwxr-xr-xikiwiki42
-rw-r--r--templates/recentchanges.tmpl25
5 files changed, 52 insertions, 31 deletions
diff --git a/Makefile b/Makefile
index a9e177a27..32c4feae1 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
all:
- ./ikiwiki doc html --wikiname="ikiwiki" --verbose --nosvn
+ ./ikiwiki doc templates html --wikiname="ikiwiki" --verbose --nosvn
clean:
rm -rf html
- rm -f doc/.index
+ rm -rf doc/.ikiwiki
diff --git a/doc/features.mdwn b/doc/features.mdwn
index 283dec8ec..8c08b70b9 100644
--- a/doc/features.mdwn
+++ b/doc/features.mdwn
@@ -31,6 +31,11 @@ Currently implemented:
ikiwiki is fast and smart about updating a wiki, it only builds pages that have changed (and tracks things like creation of new pages and links that can indirectly cause a page to need a rebuild)
+* [[Templates]]
+
+ ikiwiki generates html using templates so you can change the look and
+ layout of all pages in any way you would like.
+
* [[BackLinks]]
Automatically included on pages. Rather faster than eg [[MoinMoin]] and always there to help with navigation.
@@ -45,4 +50,4 @@ Currently implemented:
----
-It also has lots of [[TODO]] items and [[Bugs]]. This wiki is not ready for production! \ No newline at end of file
+It also has lots of [[TODO]] items and [[Bugs]]. This wiki is not ready for production!
diff --git a/doc/setup.mdwn b/doc/setup.mdwn
index 373bc90ed..e69364e36 100644
--- a/doc/setup.mdwn
+++ b/doc/setup.mdwn
@@ -6,7 +6,8 @@ optional support for commits from the web.
apt-get install ikiwiki # soon
- Ikiwiki requires [[MarkDown]] be installed, and also uses the following perl modules: `CGI::Session` `CGI::FormBuilder`
+ Ikiwiki requires [[MarkDown]] be installed, and also uses the following
+ perl modules: `CGI::Session` `CGI::FormBuilder` `HTML::Template`
2. Create the subversion repository for your wiki.
@@ -70,4 +71,4 @@ optional support for commits from the web.
--historyurl='http://svn.host/trunk/doc/[[]]?root=wiki'
-11. Enjoy your new wiki! \ No newline at end of file
+11. Enjoy your new wiki!
diff --git a/ikiwiki b/ikiwiki
index 2815a8e1d..5228c45d6 100755
--- a/ikiwiki
+++ b/ikiwiki
@@ -242,7 +242,7 @@ sub backlinks ($) { #{{{
return @links;
} #}}}
-sub parentlinks ($) {
+sub parentlinks ($) { #{{{
my $page=shift;
my @ret;
@@ -259,7 +259,7 @@ sub parentlinks ($) {
$path.="../";
}
return @ret;
-}
+} #}}}
sub indexlink () { #{{{
return "<a href=\"$url\">$wikiname</a>/ ";
@@ -418,7 +418,8 @@ sub rcs_recentchanges ($) { #{{{
$when=concise(ago(time - str2time($3)));
}
elsif ($state eq 'header' && /^\s+[A-Z]\s+\Q$svn_base\E\/(.+)$/) {
- push @pages, pagename($1) if length $1;
+ push @pages, htmllink("", pagename($1), 1)
+ if length $1;
}
elsif ($state eq 'header' && /^$/) {
$state='body';
@@ -588,7 +589,7 @@ sub gen_wrapper ($$) { #{{{
error("$this doesn't seem to be executable");
}
- my @params=($srcdir, $destdir, "--wikiname=$wikiname");
+ my @params=($srcdir, $templatedir, $destdir, "--wikiname=$wikiname");
push @params, "--verbose" if $verbose;
push @params, "--rebuild" if $rebuild;
push @params, "--nosvn" if !$svn;
@@ -655,29 +656,18 @@ EOF
exit 0;
} #}}}
-sub cgi_recentchanges ($) { #{{{
+sub cgi_recentchanges () { #{{{
my $q=shift;
-
-
- my $list="<ul>\n";
- foreach my $change (rcs_recentchanges(100)) {
- $list.="<li>";
- $list.=join(", ", map { htmllink("", $_, 1) } @{$change->{pages}});
- $list.="<br>\n";
- $list.="changed ".$change->{when}." by ".
- htmllink("", $change->{user}, 1).
- ": <i>".$change->{message}."</i>\n";
- $list.="</li>\n";
- }
- $list.="</ul>\n";
-
- print $q->header,
- $q->start_html("RecentChanges"),
- $q->h1(indexlink()." RecentChanges"),
- $list,
- $q->end_form,
- $q->end_html;
+ my $template=HTML::Template->new(
+ filename => "$templatedir/recentchanges.tmpl");
+ $template->param(
+ title => "RecentChanges",
+ indexlink => $url,
+ wikiname => $wikiname,
+ changelog => [rcs_recentchanges(100)],
+ );
+ return $template->output;
} #}}}
sub cgi_signin ($$) { #{{{
@@ -798,7 +788,7 @@ sub cgi () { #{{{
}
if ($do eq 'recentchanges') {
- cgi_recentchanges($q);
+ cgi_recentchanges();
return;
}
diff --git a/templates/recentchanges.tmpl b/templates/recentchanges.tmpl
new file mode 100644
index 000000000..72e243c60
--- /dev/null
+++ b/templates/recentchanges.tmpl
@@ -0,0 +1,25 @@
+<html>
+<head><title><TMPL_VAR TITLE></title></head>
+<body>
+
+<h1>
+<a href="<TMPL_VAR INDEXLINK>"><TMPL_VAR WIKINAME></a>/ <TMPL_VAR TITLE>
+</h1>
+
+<hr>
+
+<ul>
+<TMPL_LOOP NAME="CHANGELOG">
+ <li>
+ <TMPL_LOOP NAME="PAGES">
+ <TMPL_VAR NAME="LINK"></a>
+ </TMPL_LOOP>
+ <br>
+ changed <TMPL_LOOP NAME="WHEN"> by <TMPL_LOOP NAME="USER">:
+ <i><TMPL_LOOP NAME="MESSAGE"></i>
+ </li>
+</TMPL_LOOP>
+</ul>
+
+</body>
+</html>