template for recentchanges
authorjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Sun, 12 Mar 2006 03:29:09 +0000 (03:29 +0000)
committerjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Sun, 12 Mar 2006 03:29:09 +0000 (03:29 +0000)
Makefile
doc/features.mdwn
doc/setup.mdwn
ikiwiki
templates/recentchanges.tmpl [new file with mode: 0644]

index a9e177a271490b7e3ca6c9af2bc3d2c76e21924c..32c4feae106cf52238eab95c470a2adcc23268e3 100644 (file)
--- 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
index 283dec8eccc6400d909bef6657279ad535c53861..8c08b70b97c63923dd4505ca254a13d7069945ba 100644 (file)
@@ -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!
index 373bc90ed4edaf6b20f3adf1876407458aa1e7c5..e69364e36d8130bae0492b91c9d29d09f4f8334e 100644 (file)
@@ -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 2815a8e1dd666cb7685c6b7da8382464c3f41aac..5228c45d68a97e4d07d3a3d1b5bfef31268f442e 100755 (executable)
--- 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 (file)
index 0000000..72e243c
--- /dev/null
@@ -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>