]> sipb.mit.edu Git - ikiwiki.git/commitdiff
Merge commit '156f70912213b6520e9056050a8827de66e80176' into sipb
authorAnders Kaseorg <andersk@mit.edu>
Fri, 31 Jan 2014 05:54:44 +0000 (00:54 -0500)
committerAnders Kaseorg <andersk@mit.edu>
Fri, 31 Jan 2014 05:54:44 +0000 (00:54 -0500)
Conflicts:
templates/page.tmpl

14 files changed:
IkiWiki/CGI.pm
IkiWiki/Plugin/git.pm
IkiWiki/Plugin/httpauth.pm
IkiWiki/Plugin/mdwn.pm
IkiWiki/Plugin/parentlinks.pm
IkiWiki/Plugin/toc.pm
IkiWiki/UserInfo.pm
IkiWiki/Wrapper.pm
README.SIPB [new file with mode: 0644]
TODO.SIPB [new file with mode: 0644]
doc/favicon.ico
po/Makefile
templates/editpage.tmpl
templates/page.tmpl

index 62383b6fd22cf3ca6bed2dc3571f5cafb3c10715..12d785c3fad1c4c19bfe7f6572dd91b1e1a4e04b 100644 (file)
@@ -159,7 +159,9 @@ sub cgi_signin ($$;$) {
                template => {type => 'div'},
                stylesheet => 1,
        );
-       my $buttons=["Login"];
+       # MITLOGIN: These should be restored when logins are allowed again.
+       #my $buttons=["Login"];
+       my $buttons=[];
        
        $form->field(name => "do", type => "hidden", value => "signin",
                force => 1);
@@ -258,13 +260,16 @@ sub cgi_prefs ($$) {
                force => 1);
        $form->field(name => "sid", type => "hidden", value => $session->id,
                force => 1);
-       $form->field(name => "email", size => 50, fieldset => "preferences");
+            #$form->field(name => "email", size => 50, fieldset => "preferences");
+       $form->field(name => "realname", size => 50, fieldset => "preferences");
        
        my $user_name=$session->param("name");
 
        if (! $form->submitted) {
-               $form->field(name => "email", force => 1,
-                       value => userinfo_get($user_name, "email"));
+            #$form->field(name => "email", force => 1,
+            #value => userinfo_get($user_name, "email"));
+               $form->field(name => "realname", force => 1,
+                       value => userinfo_get($user_name, "realname"));
        }
        
        if ($form->submitted eq 'Logout') {
@@ -281,7 +286,10 @@ sub cgi_prefs ($$) {
                        userinfo_set($user_name, 'email', $form->field('email')) ||
                                error("failed to set email");
                }
-
+               if (defined $form->field('realname')) {
+                       userinfo_set($user_name, 'realname', $form->field('realname')) ||
+                               error("failed to set realname");
+                }
                $form->text(gettext("Preferences saved."));
        }
        
index 3117e42914d5f8b8f4f5d49ec3e3f0b5865d1891..7896625dffdb8086ce8fa1f6270548fdf435e236 100644 (file)
@@ -4,6 +4,7 @@ package IkiWiki::Plugin::git;
 use warnings;
 use strict;
 use IkiWiki;
+use IkiWiki::UserInfo;
 use Encode;
 use open qw{:utf8 :std};
 
@@ -527,7 +528,8 @@ sub rcs_commit_helper (@) {
                }
                if (defined $u) {
                        $u=encode_utf8($u);
-                       $ENV{GIT_AUTHOR_NAME}=$u;
+                       # MITLOGIN This algorithm could be improved
+                       $ENV{GIT_AUTHOR_NAME}=IkiWiki::userinfo_get($u, "realname");
                }
                if (defined $params{session}->param("nickname")) {
                        $u=encode_utf8($params{session}->param("nickname"));
@@ -535,7 +537,7 @@ sub rcs_commit_helper (@) {
                        $u=~s/[^-_0-9[:alnum:]]+//g;
                }
                if (defined $u) {
-                       $ENV{GIT_AUTHOR_EMAIL}="$u\@web";
+                       $ENV{GIT_AUTHOR_EMAIL}="$u\@mit.edu";
                }
        }
 
index cb488449dd680b2ae36aefde23636ba3fdfe6ab8..817c2b48719fcaf5cbcdd37d074cf6e301081411 100644 (file)
@@ -5,6 +5,7 @@ package IkiWiki::Plugin::httpauth;
 use warnings;
 use strict;
 use IkiWiki 3.00;
+use Data::Dumper;
 
 sub import {
        hook(type => "getsetup", id => "httpauth", call => \&getsetup);
@@ -53,7 +54,14 @@ sub auth ($$) {
        my $session=shift;
 
        if (defined $cgi->remote_user()) {
-               $session->param("name", $cgi->remote_user());
+               my $user = $cgi->remote_user();
+               $session->param("name", $user);
+               eval IkiWiki::possibly_foolish_untaint($ENV{SSL_CLIENT_S_DN_CN});
+               my $realname = IkiWiki::userinfo_get($user, "realname");
+               if ((!defined $realname || $realname eq "") &&
+                   defined $ENV{SSL_CLIENT_S_DN_CN}) {
+               IkiWiki::userinfo_set($user, "realname", $ENV{SSL_CLIENT_S_DN_CN});
+               }
        }
 }
 
index b892eabee29be50387fa493baafd5dbd6d1024a8..68765c6b8c0c71fb4a1d75992a51290522134d90 100644 (file)
@@ -52,7 +52,7 @@ sub htmlize (@) {
                }
                if (! defined $markdown_sub) {
                        eval q{use Text::Markdown};
-                       if (! $@) {
+                       if (1) {#! $@) {  # Text::Markdown throws this but works.  Shrug.
                                if (Text::Markdown->can('markdown')) {
                                        $markdown_sub=\&Text::Markdown::markdown;
                                }
index 9f16dd08296a5743084fc390ddde362e3a6a5fe9..ef08118b4557ecd8a7b819c6a0bd0dffcc938af1 100644 (file)
@@ -41,10 +41,17 @@ sub parentlinks ($) {
 
        my @pagepath=(split("/", $page));
        my $pagedepth=@pagepath;
+
+       # The last element in @pagepath is the page itself, so punt that
+       # (These are /parent/ links, after all.)
+       pop @pagepath;
+
        foreach my $dir (@pagepath) {
                next if $dir eq 'index';
                $depth=$i;
                $height=($pagedepth - $depth);
+               $path.="/".$dir;
+               $title=pagetitle($dir);
                push @ret, {
                        url => urlto(bestlink($page, $path), $page),
                        page => $title,
@@ -53,8 +60,6 @@ sub parentlinks ($) {
                        "depth_$depth" => 1,
                        "height_$height" => 1,
                };
-               $path.="/".$dir;
-               $title=pagetitle($dir);
                $i++;
        }
        return @ret;
index ac07b9af6b860f0e5a36909197b4d98d0388fa41..1e888a82d0222a5814bdfe0aa86f75dc4a94c2f8 100644 (file)
@@ -29,6 +29,7 @@ sub preprocess (@) {
 
        if ($params{page} eq $params{destpage}) {
                $params{levels}=1 unless exists $params{levels};
+               $params{startlevel}=2 unless exists $params{startlevel};
 
                # It's too early to generate the toc here, so just record the
                # info.
index 0bf100a959c934d23c8f73ac1f0962f856732a35..31f20c51736ad930908676c0e694ddacfceb3cac 100644 (file)
@@ -36,8 +36,17 @@ sub userinfo_get ($$) {
        if (! defined $userinfo ||
            ! exists $userinfo->{$user} || ! ref $userinfo->{$user} ||
             ! exists $userinfo->{$user}->{$field}) {
+               if ($field eq "realname" && defined $ENV{SSL_CLIENT_S_DN_CN}) {
+                       userinfo_set($user, "realname", $ENV{SSL_CLIENT_S_DN_CN});
+                       return $ENV{SSL_CLIENT_S_DN_CN};
+               }
                return "";
        }
+       if ($field eq "realname" && $userinfo->{$user}->{$field} eq "" &&
+           defined $ENV{SSL_CLIENT_S_DN_CN}) {
+               userinfo_set($user, "realname", $ENV{SSL_CLIENT_S_DN_CN});
+               return $ENV{SSL_CLIENT_S_DN_CN};
+       }
        return $userinfo->{$user}->{$field};
 }
 
index c39aa2ef7d678207ef86c938baef3f7af1933c30..fa378a9abc544cdf05a59f762950050d28ada2e5 100644 (file)
@@ -48,7 +48,7 @@ sub gen_wrapper () {
        my @envsave;
        push @envsave, qw{REMOTE_ADDR QUERY_STRING REQUEST_METHOD REQUEST_URI
                       CONTENT_TYPE CONTENT_LENGTH GATEWAY_INTERFACE
-                      HTTP_COOKIE REMOTE_USER HTTPS REDIRECT_STATUS
+                      HTTP_COOKIE REMOTE_USER HTTPS SSL_CLIENT_S_DN_CN REDIRECT_STATUS
                       HTTP_HOST SERVER_PORT HTTPS HTTP_ACCEPT
                       REDIRECT_URL} if $config{cgi};
        my $envsave="";
@@ -219,7 +219,6 @@ EOF
                #translators: The parameter is a C filename.
                error(sprintf(gettext("failed to compile %s"), "$wrapper.c"));
        }
-       unlink("$wrapper.c");
        if (defined $config{wrappergroup}) {
                my $gid=(getgrnam($config{wrappergroup}))[2];
                if (! defined $gid) {
diff --git a/README.SIPB b/README.SIPB
new file mode 100644 (file)
index 0000000..c88f193
--- /dev/null
@@ -0,0 +1,56 @@
+README for SIPB maintainers
+
+Basic instructions on scripts of interest. Also,
+How this repository is set up, and how to keep IkiWiki up to date.
+
+
+Setup:
+
+There are three branches of interest: remotes/origin/master, master
+and sipb.  remotes/origin/master is the remote branch we are tracking;
+all upstream changes show up in this branch when we `git fetch`.
+
+master is our "awaiting upstream approval" branch, based off of
+remotes/origin/master. Any patches in this branch should be immediately
+suitable for submission to IkiWiki maintainers/. Ideally, this branch
+should be equivalent to remotes/origin/master.
+
+sipb is our live branch. It contains all of the ugly hacks and custom
+modifications that we needed to make our website run. Ideally, this
+branch is equivalent to master. Don't expect it to be without a lot
+of rearchitecting and upstream cooperation.
+
+
+Keeping up to date:
+
+XXX: This is what we'd do in our original clone of upstream.
+  How do we do this now that we have our own internal repo to clone?
+
+This two-tiered setup means that you will need to rebase twice in order
+to propagate changes; possibly once if master == origin/master. Your
+commands will look like this:
+
+$ git checkout master
+$ git pull --rebase
+$ git checkout sipb
+$ git rebase master
+
+TODO: Make a script that does this.
+
+
+Scripts:
+
+The source repository has a hook that automatically deploys changes when
+you push to it.  If bad things happen, however, there are two scripts of
+interest:
+
+~/bin/reinstall-ikiwiki
+    This script runs make and make install, reinstalling the source files to
+    make it live.
+
+~/bin/update-ikiwiki
+    This script recompiles the website from its source directory
+    ikiwiki/src into the live wiki directory web_scripts/wiki.
+
+Normally, these don't need to be run.
+
diff --git a/TODO.SIPB b/TODO.SIPB
new file mode 100644 (file)
index 0000000..1208f15
--- /dev/null
+++ b/TODO.SIPB
@@ -0,0 +1,12 @@
+Todo list
+
+* Presently, we only allow certificate'ed logins to edit the wiki. Eventually,
+  we will want to allow for some passworded users. When this happens, several
+  considerations must be taken:
+
+  * Unless user accounts are made on a case-by-case basis manually by
+    SIPB members (which should definitely be considered), there must be
+    anti-spam measures in the registration process.
+
+  * Certain files had hacks added to them. They are marked by MITLOGIN
+
index b55eba2800de9d41d9288bc084cde8ff649f8414..5adc83a647a79a061e05faaff12f7e330567336b 100644 (file)
Binary files a/doc/favicon.ico and b/doc/favicon.ico differ
index dfb018c81eea6377d901a65d11b783f1de0c6883..c1c37443b3002b45c08dc248640430e5e04d8210 100644 (file)
@@ -5,29 +5,16 @@ POTFILES=$(sort $(shell find ../IkiWiki -type f -name \*.pm)) \
 POFILES=$(wildcard *.po)
 MOFILES=$(POFILES:.po=.mo)
 
-# Translated underlays can only be generated if po4a is available.
-TRANSLATED_UNDERLAYS=$(shell if perl -e 'use Locale::Po4a::Common' 2>/dev/null; then echo ../underlays/locale; fi)
-
-all: ikiwiki.pot mo $(TRANSLATED_UNDERLAYS)
+all: ikiwiki.pot mo
 
 mo: $(MOFILES)
 
 install: all
-       # Normal mo files for program translation.
        for file in $(MOFILES); do \
                lang=`echo $$file | sed 's/\.mo//'`; \
                install -d $(DESTDIR)$(PREFIX)/share/locale/$$lang/LC_MESSAGES/; \
                install -m 0644 $$file $(DESTDIR)$(PREFIX)/share/locale/$$lang/LC_MESSAGES/ikiwiki.mo; \
        done
-       
-       # Underlay translation via po files that go in special per-language
-       # underlays.
-       for file in `cd underlays && find . -type f -name \*.po`; do \
-               lang=`echo $$file | sed -e 's/.po$$//' -e 's/.*\\.//'`; \
-               dir=`dirname "$(DESTDIR)$(PREFIX)/share/ikiwiki/po/$$lang/$$file"`; \
-               install -d $$dir; \
-               install -m 0644 underlays/$$file $$dir; \
-       done
 
 ikiwiki.pot: $(POTFILES)
        @if perl -e '($$ver)=`xgettext -V | head -n 1`=~/.*\s+([0-9]+\.[0-9]+)/; die "gettext $$ver too old, not updating the pot file\n" if $$ver < 0.16'; then \
@@ -36,9 +23,7 @@ ikiwiki.pot: $(POTFILES)
        fi
 
 clean:
-       rm -f $(MOFILES) messages messages.mo *_stamp
-       rm -rf html underlays/.ikiwiki $(TRANSLATED_UNDERLAYS)
-       find underlays -name \*.mdwn -or -name \*.pot | xargs rm -f
+       rm -f $(MOFILES) messages messages.mo
 
 %.mo: %.po
        msgfmt -o $@ $<
@@ -61,34 +46,3 @@ check:
                printf "$$lang: "; \
                msgfmt -o /dev/null -c -v --statistics $$lang.po;\
        done
-
-underlays_copy_stamp:
-       # copy all the files we want to translate into a srcdir
-       for file in `cd ..; find underlays -follow -name \*.mdwn`; do \
-               install -d $$(dirname $$file); \
-               cp -aL ../$$file $$file 2>/dev/null || \
-               install -m 644 ../$$file $$file; \
-       done
-       install -d underlays/directives/ikiwiki/directive
-       for file in `cd ..; find doc/ikiwiki/directive/ -maxdepth 1 -type f`; do \
-               cp -a ../$$file underlays/directives/ikiwiki/directive ||  \
-               install -m 644 ../$$file underlays/directives/ikiwiki/directive; \
-       done
-       install -d underlays/empty
-       touch $@
-
-underlays: ../ikiwiki.out underlays_copy_stamp
-       ../ikiwiki.out -libdir .. -setup underlay.setup -refresh
-
-../ikiwiki.out: ../Makefile
-       make -C .. ikiwiki.out
-
-../Makefile: ../Makefile.PL
-       cd .. && ./Makefile.PL
-
-$(TRANSLATED_UNDERLAYS): po2wiki_stamp
-po2wiki_stamp: po2wiki underlays_copy_stamp
-       PERL5LIB=.. ./po2wiki underlay.setup
-       touch $@
-
-.PHONY: underlays
index 696c8dcad197134bb7264d17d9f5cf950c24aba0..4334d97f7132fdcdd1f1f3582ab7fbc891f3bb6b 100644 (file)
@@ -66,6 +66,15 @@ $(function () { $('#fileupload').fileupload(); }); // initialize upload widget
 </div> 
 </div>
 </TMPL_IF>
+<div class="license">
+    <p>By submitting content to this wiki, you agree to release your work under
+    the dual license of</p>
+    <ul>
+      <li>the Creative Commons Attribution-Share Alike license, and</li>
+      <li>the GNU Free Documentation License, with no Invariant Sections, no
+         Front-Cover Texts, and no Back-Cover-Texts.</li>
+    </ul>
+</div>
 <TMPL_VAR FORM-END>
 <TMPL_VAR WMD_PREVIEW>
 <TMPL_IF NAME="PAGE_PREVIEW">
index 770ac2399ba36b6e1513379db6e00ab87e6c2f98..dd6b3320999eeedd8fab0132337b1bb2ee2af785 100644 (file)
@@ -1,8 +1,8 @@
 <TMPL_IF HTML5><!DOCTYPE html>
-<html>
+<html lang="en">
 <TMPL_ELSE><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 </TMPL_IF>
 <head>
 <TMPL_IF DYNAMIC>
 </TMPL_IF>
 <TMPL_IF HTML5><meta charset="utf-8" /><TMPL_ELSE><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></TMPL_IF>
 <title><TMPL_VAR TITLE></title>
-<TMPL_IF FAVICON>
-<link rel="icon" href="<TMPL_VAR BASEURL><TMPL_VAR FAVICON>" type="image/x-icon" />
-</TMPL_IF>
-<link rel="stylesheet" href="<TMPL_VAR BASEURL>style.css" type="text/css" />
-<TMPL_IF 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>
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<meta name="robots" content="all" />
+<meta name="author" content="SIPB" />
+<meta name="description" content="MIT Student Information Processing Board" /> 
+<meta name="keywords" content="SIPB, MIT, hackers" />
+<link rel="stylesheet" type="text/css" href="<TMPL_VAR BASEURL>style.css" />
 <TMPL_IF EDITURL>
 <link rel="alternate" type="application/x-wiki" title="Edit this page" href="<TMPL_VAR EDITURL>" />
 </TMPL_IF>
 </head>
 <body>
 
-<TMPL_IF HTML5><article class="page"><TMPL_ELSE><div class="page"></TMPL_IF>
+<div id="content-block">
+
+<div id="logo">
+<a href="<TMPL_VAR BASEURL>./"><img src="<TMPL_VAR BASEURL>images/grumpyfuzzball_half.png" alt="grumpy fuzzball" /></a>
+<a href="<TMPL_VAR BASEURL>./"><img src="<TMPL_VAR BASEURL>images/SIPBlogo.png" alt="MIT Student Information Processing Board" id="sipb-logo" /></a>
+<div id="hidden-title"><h1>SIPB: MIT Student Information Processing Board</h1></div>
+</div>
+
+<ul id="navigation">
+<li class="first-navbox">
+<a href="<TMPL_VAR BASEURL>projects/"><span>Projects</span></a>
+</li>
+<li class="second-navbox">
+<a href="<TMPL_VAR BASEURL>doc/"><span>Docs</span></a>
+</li>
+<li class="third-navbox">
+<a href="<TMPL_VAR BASEURL>office/"><span>Office</span></a>
+</li>
+<li class="fourth-navbox">
+<a href="<TMPL_VAR BASEURL>join/"><span>Join</span></a>
+</li>
+</ul>
+
+<h1><TMPL_VAR TITLE></h1>
 
-<TMPL_IF HTML5><section class="pageheader"><TMPL_ELSE><div class="pageheader"></TMPL_IF>
-<TMPL_IF HTML5><header class="header"><TMPL_ELSE><div class="header"></TMPL_IF>
-<span>
-<span class="parentlinks">
+<TMPL_IF PARENTLINKS>
+<div id="breadcrumbs">
+<ul>
 <TMPL_LOOP PARENTLINKS>
-<a href="<TMPL_VAR URL>"><TMPL_VAR PAGE></a>/ 
+<li><a href="<TMPL_VAR URL>"><TMPL_VAR PAGE></a>&#187;</li>
 </TMPL_LOOP>
-</span>
-<span class="title">
-<TMPL_VAR TITLE>
-<TMPL_IF ISTRANSLATION>
-&nbsp;(<TMPL_VAR PERCENTTRANSLATED>%)
-</TMPL_IF>
-</span>
-</span>
-<TMPL_IF SEARCHFORM>
-<TMPL_VAR SEARCHFORM>
-</TMPL_IF>
-<TMPL_IF HTML5></header><TMPL_ELSE></div></TMPL_IF>
+</ul>
+<br style="clear:both;" />
+</div>
+</TMPL_IF>
+
+<div id="featured-block" class="<TMPL_UNLESS PARENTLINKS>is-top</TMPL_UNLESS>">
+<TMPL_VAR CONTENT>
+</div>
+
+<div id="prefooter"></div>
+
+</div>
+
+<div id="footer">
 
 <TMPL_IF HAVE_ACTIONS>
 <TMPL_IF HTML5><nav class="actions"><TMPL_ELSE><div class="actions"></TMPL_IF>
 <TMPL_IF HTML5></nav><TMPL_ELSE></div></TMPL_IF>
 </TMPL_IF>
 
-<TMPL_IF OTHERLANGUAGES>
-<TMPL_IF HTML5><nav id="otherlanguages"><TMPL_ELSE><div id="otherlanguages"></TMPL_IF>
-<ul>
-<TMPL_LOOP OTHERLANGUAGES>
-<li>
-<a href="<TMPL_VAR URL>"><TMPL_VAR LANGUAGE></a>
-<TMPL_IF MASTER>
-(master)
-<TMPL_ELSE>
-&nbsp;(<TMPL_VAR PERCENT>%)
-</TMPL_IF>
-</li>
-</TMPL_LOOP>
-</ul>
-<TMPL_IF HTML5></nav><TMPL_ELSE></div></TMPL_IF>
-</TMPL_IF>
-
-<TMPL_VAR TRAILS>
+<p>&copy; 2009 Student Information Processing Board</p>
+<p>Unless otherwise specified, all content on this wiki is released under a dual license of the Creative Commons Attribution-Share Alike license, and the GNU Free Documentation License, with no Invariant Sections, no Front-Cover Texts, and no Back-Cover-Texts.<br />
+ This follows the SIPB Documentation Licensing Recommendation.</p>
 
-<TMPL_IF HTML5></section><TMPL_ELSE></div></TMPL_IF>
-
-<TMPL_IF SIDEBAR>
-<TMPL_IF HTML5><aside class="sidebar"><TMPL_ELSE><div class="sidebar"></TMPL_IF>
-<TMPL_VAR SIDEBAR>
-<TMPL_IF HTML5></aside><TMPL_ELSE></div></TMPL_IF>
-</TMPL_IF>
-
-<div id="pagebody">
-
-<TMPL_IF HTML5><section id="content"><TMPL_ELSE><div id="content"></TMPL_IF>
-<TMPL_VAR CONTENT>
-<TMPL_IF HTML5></section><TMPL_ELSE></div></TMPL_IF>
-
-<TMPL_UNLESS DYNAMIC>
-<TMPL_IF COMMENTS>
-<TMPL_IF HTML5><section id="comments"><TMPL_ELSE><div id="comments"></TMPL_IF>
-<TMPL_VAR COMMENTS>
-<TMPL_IF ADDCOMMENTURL>
-<div class="addcomment">
-<a href="<TMPL_VAR ADDCOMMENTURL>">Add a comment</a>
-</div>
-<TMPL_ELSE>
-<div class="addcomment">Comments on this page are closed.</div>
-</TMPL_IF>
-<TMPL_IF HTML5></section><TMPL_ELSE></div></TMPL_IF>
-</TMPL_IF>
-</TMPL_UNLESS>
-
-</div>
-
-<TMPL_IF HTML5><footer id="footer" class="pagefooter"><TMPL_ELSE><div id="footer" class="pagefooter"></TMPL_IF>
-<TMPL_UNLESS DYNAMIC>
-<TMPL_IF HTML5><nav id="pageinfo"><TMPL_ELSE><div id="pageinfo"></TMPL_IF>
-
-<TMPL_IF TAGS>
-<TMPL_IF HTML5><nav class="tags"><TMPL_ELSE><div class="tags"></TMPL_IF>
-Tags:
-<TMPL_LOOP TAGS>
-<TMPL_VAR LINK>
-</TMPL_LOOP>
-<TMPL_IF HTML5></nav><TMPL_ELSE></div></TMPL_IF>
-</TMPL_IF>
-
-<TMPL_IF BACKLINKS>
-<TMPL_IF HTML5><nav id="backlinks"><TMPL_ELSE><div id="backlinks"></TMPL_IF>
-Links:
-<TMPL_LOOP BACKLINKS>
-<a href="<TMPL_VAR URL>"><TMPL_VAR PAGE></a>
-</TMPL_LOOP>
-<TMPL_IF MORE_BACKLINKS>
-<span class="popup">...
-<span class="balloon">
-<TMPL_LOOP MORE_BACKLINKS>
-<a href="<TMPL_VAR URL>"><TMPL_VAR PAGE></a>
-</TMPL_LOOP>
-</span>
-</span>
-</TMPL_IF>
-<TMPL_IF HTML5></nav><TMPL_ELSE></div></TMPL_IF>
-</TMPL_IF>
-
-<TMPL_IF COPYRIGHT>
-<div class="pagecopyright">
-<a name="pagecopyright"></a>
-<TMPL_VAR COPYRIGHT>
 </div>
-</TMPL_IF>
-
-<TMPL_IF LICENSE>
-<div class="pagelicense">
-<a name="pagelicense"></a>
-License: <TMPL_VAR LICENSE>
-</div>
-</TMPL_IF>
-
-<div class="pagedate">
-Last edited <TMPL_VAR MTIME>
-<!-- Created <TMPL_VAR CTIME> -->
-</div>
-
-<TMPL_IF HTML5></nav><TMPL_ELSE></div></TMPL_IF>
-<TMPL_IF EXTRAFOOTER><TMPL_VAR EXTRAFOOTER></TMPL_IF>
-</TMPL_UNLESS>
-<!-- from <TMPL_VAR WIKINAME> -->
-<TMPL_IF HTML5></footer><TMPL_ELSE></div></TMPL_IF>
 
-<TMPL_IF HTML5></article><TMPL_ELSE></div></TMPL_IF>
+<script type="text/javascript">
+var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+</script>
+<script type="text/javascript">
+try {
+var pageTracker = _gat._getTracker("UA-15235584-1");
+pageTracker._trackPageview();
+} catch(err) {}</script>
 
 </body>
 </html>