From 6945074c2c496a89665f559d431cf22602199937 Mon Sep 17 00:00:00 2001
From: Karl Semich <0xloem@gmail.com>
Date: Sat, 27 Aug 2016 04:31:52 -0400
Subject: Added ikistrap template
---
backend/.gitignore | 2 +
backend/ikistrap/.gitignore | 5 +
backend/ikistrap/Makefile | 11 +
backend/ikistrap/README.md | 15 +
backend/ikistrap/basewiki/favicon.ico | Bin 0 -> 1345 bytes
backend/ikistrap/basewiki/ikiwiki.mdwn | 17 +
backend/ikistrap/basewiki/ikiwiki/directive.mdwn | 56 +++
backend/ikistrap/basewiki/ikiwiki/formatting.mdwn | 106 ++++++
backend/ikistrap/basewiki/ikiwiki/markdown.mdwn | 11 +
backend/ikistrap/basewiki/ikiwiki/openid.mdwn | 28 ++
backend/ikistrap/basewiki/ikiwiki/pagespec.mdwn | 86 +++++
.../basewiki/ikiwiki/pagespec/attachment.mdwn | 38 ++
backend/ikistrap/basewiki/ikiwiki/pagespec/po.mdwn | 23 ++
.../basewiki/ikiwiki/pagespec/sorting.mdwn | 30 ++
backend/ikistrap/basewiki/ikiwiki/searching.mdwn | 20 ++
backend/ikistrap/basewiki/ikiwiki/subpage.mdwn | 12 +
.../basewiki/ikiwiki/subpage/linkingrules.mdwn | 33 ++
backend/ikistrap/basewiki/ikiwiki/wikilink.mdwn | 29 ++
backend/ikistrap/basewiki/index.mdwn | 7 +
backend/ikistrap/basewiki/local.css | 3 +
backend/ikistrap/basewiki/recentchanges.mdwn | 7 +
backend/ikistrap/basewiki/sandbox.mdwn | 32 ++
backend/ikistrap/basewiki/shortcuts.mdwn | 86 +++++
backend/ikistrap/basewiki/style.css | 191 ++++++++++
backend/ikistrap/basewiki/templates.mdwn | 100 ++++++
backend/ikistrap/basewiki/templates/note.mdwn | 12 +
backend/ikistrap/basewiki/templates/popup.mdwn | 17 +
backend/ikistrap/example.setup | 400 +++++++++++++++++++++
backend/ikistrap/example/Anemones.jpg | Bin 0 -> 87323 bytes
backend/ikistrap/example/Bootstrap_features.mdwn | 136 +++++++
backend/ikistrap/example/Calendars.mdwn | 10 +
backend/ikistrap/example/Comments.mdwn | 3 +
.../ikistrap/example/Comments/comment_1._comment | 9 +
.../ikistrap/example/Comments/comment_2._comment | 9 +
backend/ikistrap/example/Inline_pages.mdwn | 9 +
backend/ikistrap/example/Lemonshark.jpg | Bin 0 -> 31256 bytes
backend/ikistrap/example/Sea_Star.jpg | Bin 0 -> 143211 bytes
backend/ikistrap/example/index.mdwn | 24 ++
backend/ikistrap/example/inlinetest.mdwn | 1 +
.../example/sample_text/Donec_dapibus.mdwn | 1 +
.../ikistrap/example/sample_text/Donec_semper.mdwn | 1 +
.../ikistrap/example/sample_text/Lorem_ipsum.mdwn | 4 +
.../example/sample_text/Nulla_facilisi.mdwn | 2 +
backend/ikistrap/example/sample_text/Sed_eget.mdwn | 1 +
backend/ikistrap/example/sidebar.mdwn | 9 +
backend/ikistrap/ikistrap.svg | 180 ++++++++++
backend/ikistrap/lib/IkiWiki/Plugin/ikistrap.pm | 103 ++++++
backend/ikistrap/templates/aggregatepost.tmpl | 19 +
backend/ikistrap/templates/archivepage.tmpl | 20 ++
backend/ikistrap/templates/atomitem.tmpl | 49 +++
backend/ikistrap/templates/atompage.tmpl | 39 ++
backend/ikistrap/templates/autoindex.tmpl | 1 +
backend/ikistrap/templates/autotag.tmpl | 4 +
backend/ikistrap/templates/blogpost.tmpl | 16 +
backend/ikistrap/templates/calendarmonth.tmpl | 5 +
backend/ikistrap/templates/calendaryear.tmpl | 1 +
backend/ikistrap/templates/carouselimage.tmpl | 3 +
backend/ikistrap/templates/carouselpage.tmpl | 5 +
backend/ikistrap/templates/change.tmpl | 58 +++
backend/ikistrap/templates/comment.tmpl | 66 ++++
backend/ikistrap/templates/commentmoderation.tmpl | 32 ++
backend/ikistrap/templates/editcomment.tmpl | 42 +++
backend/ikistrap/templates/editconflict.tmpl | 7 +
.../ikistrap/templates/editcreationconflict.tmpl | 9 +
backend/ikistrap/templates/editfailedsave.tmpl | 10 +
backend/ikistrap/templates/editpage.tmpl | 94 +++++
backend/ikistrap/templates/editpagegone.tmpl | 7 +
backend/ikistrap/templates/emailauth.tmpl | 10 +
backend/ikistrap/templates/feedlink.tmpl | 9 +
backend/ikistrap/templates/googleform.tmpl | 4 +
backend/ikistrap/templates/inlinepage.tmpl | 77 ++++
backend/ikistrap/templates/login-selector.tmpl | 65 ++++
backend/ikistrap/templates/microblog.tmpl | 18 +
backend/ikistrap/templates/notifyemail.tmpl | 9 +
backend/ikistrap/templates/page.tmpl | 223 ++++++++++++
backend/ikistrap/templates/passwordmail.tmpl | 15 +
backend/ikistrap/templates/pocreatepage.tmpl | 3 +
backend/ikistrap/templates/recentchanges.tmpl | 7 +
backend/ikistrap/templates/renamesummary.tmpl | 30 ++
backend/ikistrap/templates/revert.tmpl | 22 ++
backend/ikistrap/templates/rssitem.tmpl | 28 ++
backend/ikistrap/templates/rsspage.tmpl | 18 +
backend/ikistrap/templates/searchform.tmpl | 6 +
backend/ikistrap/templates/searchquery.tmpl | 113 ++++++
backend/ikistrap/templates/simplecard.tmpl | 3 +
backend/ikistrap/templates/titlepage.tmpl | 7 +
backend/ikistrap/templates/trails.tmpl | 23 ++
backend/ikistrap/tidy.config | 9 +
backend/ikiwiki.setup | 384 ++++++++++++++++++++
backend/resilient/__init__.py | 6 +-
90 files changed, 3451 insertions(+), 4 deletions(-)
create mode 100644 backend/ikistrap/.gitignore
create mode 100644 backend/ikistrap/Makefile
create mode 100644 backend/ikistrap/README.md
create mode 100644 backend/ikistrap/basewiki/favicon.ico
create mode 100644 backend/ikistrap/basewiki/ikiwiki.mdwn
create mode 100644 backend/ikistrap/basewiki/ikiwiki/directive.mdwn
create mode 100644 backend/ikistrap/basewiki/ikiwiki/formatting.mdwn
create mode 100644 backend/ikistrap/basewiki/ikiwiki/markdown.mdwn
create mode 100644 backend/ikistrap/basewiki/ikiwiki/openid.mdwn
create mode 100644 backend/ikistrap/basewiki/ikiwiki/pagespec.mdwn
create mode 100644 backend/ikistrap/basewiki/ikiwiki/pagespec/attachment.mdwn
create mode 100644 backend/ikistrap/basewiki/ikiwiki/pagespec/po.mdwn
create mode 100644 backend/ikistrap/basewiki/ikiwiki/pagespec/sorting.mdwn
create mode 100644 backend/ikistrap/basewiki/ikiwiki/searching.mdwn
create mode 100644 backend/ikistrap/basewiki/ikiwiki/subpage.mdwn
create mode 100644 backend/ikistrap/basewiki/ikiwiki/subpage/linkingrules.mdwn
create mode 100644 backend/ikistrap/basewiki/ikiwiki/wikilink.mdwn
create mode 100644 backend/ikistrap/basewiki/index.mdwn
create mode 100644 backend/ikistrap/basewiki/local.css
create mode 100644 backend/ikistrap/basewiki/recentchanges.mdwn
create mode 100644 backend/ikistrap/basewiki/sandbox.mdwn
create mode 100644 backend/ikistrap/basewiki/shortcuts.mdwn
create mode 100644 backend/ikistrap/basewiki/style.css
create mode 100644 backend/ikistrap/basewiki/templates.mdwn
create mode 100644 backend/ikistrap/basewiki/templates/note.mdwn
create mode 100644 backend/ikistrap/basewiki/templates/popup.mdwn
create mode 100644 backend/ikistrap/example.setup
create mode 100644 backend/ikistrap/example/Anemones.jpg
create mode 100644 backend/ikistrap/example/Bootstrap_features.mdwn
create mode 100644 backend/ikistrap/example/Calendars.mdwn
create mode 100644 backend/ikistrap/example/Comments.mdwn
create mode 100644 backend/ikistrap/example/Comments/comment_1._comment
create mode 100644 backend/ikistrap/example/Comments/comment_2._comment
create mode 100644 backend/ikistrap/example/Inline_pages.mdwn
create mode 100644 backend/ikistrap/example/Lemonshark.jpg
create mode 100644 backend/ikistrap/example/Sea_Star.jpg
create mode 100644 backend/ikistrap/example/index.mdwn
create mode 100644 backend/ikistrap/example/inlinetest.mdwn
create mode 100644 backend/ikistrap/example/sample_text/Donec_dapibus.mdwn
create mode 100644 backend/ikistrap/example/sample_text/Donec_semper.mdwn
create mode 100644 backend/ikistrap/example/sample_text/Lorem_ipsum.mdwn
create mode 100644 backend/ikistrap/example/sample_text/Nulla_facilisi.mdwn
create mode 100644 backend/ikistrap/example/sample_text/Sed_eget.mdwn
create mode 100644 backend/ikistrap/example/sidebar.mdwn
create mode 100644 backend/ikistrap/ikistrap.svg
create mode 100644 backend/ikistrap/lib/IkiWiki/Plugin/ikistrap.pm
create mode 100644 backend/ikistrap/templates/aggregatepost.tmpl
create mode 100644 backend/ikistrap/templates/archivepage.tmpl
create mode 100644 backend/ikistrap/templates/atomitem.tmpl
create mode 100644 backend/ikistrap/templates/atompage.tmpl
create mode 100644 backend/ikistrap/templates/autoindex.tmpl
create mode 100644 backend/ikistrap/templates/autotag.tmpl
create mode 100644 backend/ikistrap/templates/blogpost.tmpl
create mode 100644 backend/ikistrap/templates/calendarmonth.tmpl
create mode 100644 backend/ikistrap/templates/calendaryear.tmpl
create mode 100644 backend/ikistrap/templates/carouselimage.tmpl
create mode 100644 backend/ikistrap/templates/carouselpage.tmpl
create mode 100644 backend/ikistrap/templates/change.tmpl
create mode 100644 backend/ikistrap/templates/comment.tmpl
create mode 100644 backend/ikistrap/templates/commentmoderation.tmpl
create mode 100644 backend/ikistrap/templates/editcomment.tmpl
create mode 100644 backend/ikistrap/templates/editconflict.tmpl
create mode 100644 backend/ikistrap/templates/editcreationconflict.tmpl
create mode 100644 backend/ikistrap/templates/editfailedsave.tmpl
create mode 100644 backend/ikistrap/templates/editpage.tmpl
create mode 100644 backend/ikistrap/templates/editpagegone.tmpl
create mode 100644 backend/ikistrap/templates/emailauth.tmpl
create mode 100644 backend/ikistrap/templates/feedlink.tmpl
create mode 100644 backend/ikistrap/templates/googleform.tmpl
create mode 100644 backend/ikistrap/templates/inlinepage.tmpl
create mode 100644 backend/ikistrap/templates/login-selector.tmpl
create mode 100644 backend/ikistrap/templates/microblog.tmpl
create mode 100644 backend/ikistrap/templates/notifyemail.tmpl
create mode 100644 backend/ikistrap/templates/page.tmpl
create mode 100644 backend/ikistrap/templates/passwordmail.tmpl
create mode 100644 backend/ikistrap/templates/pocreatepage.tmpl
create mode 100644 backend/ikistrap/templates/recentchanges.tmpl
create mode 100644 backend/ikistrap/templates/renamesummary.tmpl
create mode 100644 backend/ikistrap/templates/revert.tmpl
create mode 100644 backend/ikistrap/templates/rssitem.tmpl
create mode 100644 backend/ikistrap/templates/rsspage.tmpl
create mode 100644 backend/ikistrap/templates/searchform.tmpl
create mode 100644 backend/ikistrap/templates/searchquery.tmpl
create mode 100644 backend/ikistrap/templates/simplecard.tmpl
create mode 100644 backend/ikistrap/templates/titlepage.tmpl
create mode 100644 backend/ikistrap/templates/trails.tmpl
create mode 100644 backend/ikistrap/tidy.config
create mode 100644 backend/ikiwiki.setup
diff --git a/backend/.gitignore b/backend/.gitignore
index 9a4efdc..1f1cbc3 100644
--- a/backend/.gitignore
+++ b/backend/.gitignore
@@ -1 +1,3 @@
update_private.py
+auth/ipfs-private
+*.pyc
diff --git a/backend/ikistrap/.gitignore b/backend/ikistrap/.gitignore
new file mode 100644
index 0000000..a9ec7a3
--- /dev/null
+++ b/backend/ikistrap/.gitignore
@@ -0,0 +1,5 @@
+/example.html
+/example/.ikiwiki
+/example/cgi_wrapper
+/example/tag
+*.swp
diff --git a/backend/ikistrap/Makefile b/backend/ikistrap/Makefile
new file mode 100644
index 0000000..d9871c9
--- /dev/null
+++ b/backend/ikistrap/Makefile
@@ -0,0 +1,11 @@
+all:
+ HTML_TIDY=./tidy.config ikiwiki --setup example.setup --refresh
+
+rebuild:
+ HTML_TIDY=./tidy.config ikiwiki --setup example.setup --rebuild
+
+tidy:
+ HTML_TIDY=./tidy.config tidy -m `find example.html/ -type f -name '*.html'`
+
+
+.PHONY: all rebuild
diff --git a/backend/ikistrap/README.md b/backend/ikistrap/README.md
new file mode 100644
index 0000000..76c6f14
--- /dev/null
+++ b/backend/ikistrap/README.md
@@ -0,0 +1,15 @@
+# Ikistrap, a Bootstrap 4 theme for ikiwiki
+
+[Ikiwiki](https://ikiwiki.info/) is a very powerful [wiki](https://en.wikipedia.org/wiki/Wiki) compiler.
+However, its default theme is very minimalistic.
+Ikistrap is a theme that uses [Bootstrap 4](http://v4-alpha.getbootstrap.com/) to ensure you have a wiki that looks professional,
+whether you are viewing it on your desktop computer or on your mobile phone.
+
+To use ikistrap in your own wiki, just add the following to your setup file:
+
+ templatedir: /path/to/ikistrap/templates
+ underlaydir: /path/to/ikistrap/basewiki
+
+Ikistrap comes with an example wiki that shows off its features,
+and shows you how to integrate some Bootstrap 4 features into your `.mdwn` files.
+Use the `Makefile` to compile the example wiki.
diff --git a/backend/ikistrap/basewiki/favicon.ico b/backend/ikistrap/basewiki/favicon.ico
new file mode 100644
index 0000000..51d2781
Binary files /dev/null and b/backend/ikistrap/basewiki/favicon.ico differ
diff --git a/backend/ikistrap/basewiki/ikiwiki.mdwn b/backend/ikistrap/basewiki/ikiwiki.mdwn
new file mode 100644
index 0000000..4d84069
--- /dev/null
+++ b/backend/ikistrap/basewiki/ikiwiki.mdwn
@@ -0,0 +1,17 @@
+[[!meta robots="noindex, follow"]]
+This wiki is powered by [ikiwiki](http://ikiwiki.info/).
+[[!if test="enabled(version)"
+ then="(Currently running version [[!version ]].)"
+]]
+
+Some documentation on using ikiwiki:
+
+* [[ikiwiki/formatting]]
+* [[ikiwiki/wikilink]]
+* [[ikiwiki/subpage]]
+* [[ikiwiki/pagespec]]
+* [[ikiwiki/directive]]
+* [[ikiwiki/markdown]]
+* [[ikiwiki/openid]]
+* [[ikiwiki/searching]]
+* [[templates]]
diff --git a/backend/ikistrap/basewiki/ikiwiki/directive.mdwn b/backend/ikistrap/basewiki/ikiwiki/directive.mdwn
new file mode 100644
index 0000000..1dc1e51
--- /dev/null
+++ b/backend/ikistrap/basewiki/ikiwiki/directive.mdwn
@@ -0,0 +1,56 @@
+[[!meta robots="noindex, follow"]]
+Directives are similar to a [[ikiwiki/WikiLink]] in form, except they
+begin with `!` and may contain parameters. The general form is:
+
+ \[[!directive param="value" param="value"]]
+
+This gets expanded before the rest of the page is processed, and can be used
+to transform the page in various ways.
+
+The quotes around values can be omitted if the value is a simple word.
+Also, some directives may use parameters without values, for example:
+
+ \[[!tag foo]]
+
+A directive does not need to all be on one line, it can be
+wrapped to multiple lines if you like:
+
+ \[[!directive foo="baldersnatch"
+ bar="supercalifragilisticexpialidocious" baz=11]]
+
+Also, multiple lines of *quoted* text can be used for a value.
+To allow quote marks inside the quoted text, delimit the block
+of text with triple-double-quotes or triple-single-quotes:
+
+ \[[!directive text="""
+ 1. "foo"
+ 2. "bar"
+ 3. "baz"
+ """ othertext='''
+ 1. 'quux'
+ 2. "foo"
+ ''']]
+
+If you want to put text with triple quotes into a parameter value, you can
+use perl-style here-doc syntax, even nesting it like this:
+
+ \[[!directive text=<":
+
+> To be or not to be,
+> that is the question.
+
+To write a code block, indent each line with a tab or 4 spaces:
+
+ 10 PRINT "Hello, world!"
+ 20 GOTO 10
+
+To link to an url or email address, you can just put the
+url in angle brackets: <>, or you can use the
+form \[link text\]\(url\)
+
+----
+
+In addition to basic html formatting using [[MarkDown]], this wiki lets
+you use the following additional features:
+
+* To link to another page on the wiki, place the page's name inside double
+ square brackets. So you would use `\[[WikiLink]]` to link to [[WikiLink]].
+
+[[!if test="enabled(smiley) and smileys" then="""
+* Insert [[smileys]] and some other useful symbols. :-)
+"""]]
+
+[[!if test="enabled(shortcut) and shortcuts" then="""
+* Use [[shortcuts]] to link to common resources.
+
+ \[[!wikipedia War\_of\_1812]]
+"""]]
+
+[[!if test="enabled(template) and templates" then="""
+* Create and fill out [[templates]] for repeated chunks of
+ parameterized wiki text.
+"""]]
+
+* Insert various [[directives|directive]] onto a page to perform useful
+ actions.
+[[!if test="enabled(toc) or enabled(meta) or enabled(inline)" then="""
+ For example, you can:
+"""]]
+
+[[!if test="enabled(toc)" then="""
+ * Add a table of contents to a page:
+
+ \[[!toc]]
+"""]]
+
+
+[[!if test="enabled(meta)" then="""
+ * Change the title of a page:
+
+ \[[!meta title="full page title"]]
+"""]]
+
+[[!if test="enabled(inline)" then="""
+ * Create a blog by inlining a set of pages:
+
+ \[[!inline pages="blog/*"]]
+"""]]
+
+[[!if test="enabled(listdirectives)" then="""
+ Full list of [[directives|directive]] enabled for this wiki:
+ [[!listdirectives ]]
+"""]]
diff --git a/backend/ikistrap/basewiki/ikiwiki/markdown.mdwn b/backend/ikistrap/basewiki/ikiwiki/markdown.mdwn
new file mode 100644
index 0000000..6841919
--- /dev/null
+++ b/backend/ikistrap/basewiki/ikiwiki/markdown.mdwn
@@ -0,0 +1,11 @@
+[[!meta robots="noindex, follow"]]
+[Markdown](http://daringfireball.net/projects/markdown/)
+is a minimal markup language that resembles plain text as used in
+email messages. It is the markup language used by this wiki by default.
+
+For documentation about the markdown syntax, see [[formatting]] and
+[Markdown: syntax](http://daringfireball.net/projects/markdown/syntax).
+
+Note that [[WikiLinks|WikiLink]] and [[directives|directive]] are not part
+of the markdown syntax, and are the only bit of markup that this wiki
+handles internally.
diff --git a/backend/ikistrap/basewiki/ikiwiki/openid.mdwn b/backend/ikistrap/basewiki/ikiwiki/openid.mdwn
new file mode 100644
index 0000000..2fa972e
--- /dev/null
+++ b/backend/ikistrap/basewiki/ikiwiki/openid.mdwn
@@ -0,0 +1,28 @@
+[[!meta title="OpenID"]]
+[[!meta robots="noindex, follow"]]
+
+[[!if test="enabled(openid)"
+ then="This wiki has OpenID **enabled**."
+ else="This wiki has OpenID **disabled**."]]
+
+[OpenID](http://openid.net) is a decentralized authentication mechanism
+that allows you to have one login that you can use on a growing number of
+websites.
+
+If you have an account with some of the larger web service providers,
+you might already have an OpenID.
+[Directory of OpenID providers](http://openiddirectory.com/openid-providers-c-1.html)
+
+[[!if test="enabled(openid)" then="""
+To sign in to this wiki using OpenID, just enter it in the OpenID field in the
+signin form. You do not need to give this wiki a password or go through any
+registration process when using OpenID.
+"""]]
+
+---
+
+It's also possible to make a page in the wiki usable as an OpenID url,
+by delegating it to an openid server. Here's an example of how to do that:
+
+ \[[!meta openid="http://yourid.myopenid.com/"
+ server="http://www.myopenid.com/server"]]
diff --git a/backend/ikistrap/basewiki/ikiwiki/pagespec.mdwn b/backend/ikistrap/basewiki/ikiwiki/pagespec.mdwn
new file mode 100644
index 0000000..0f298ad
--- /dev/null
+++ b/backend/ikistrap/basewiki/ikiwiki/pagespec.mdwn
@@ -0,0 +1,86 @@
+[[!meta robots="noindex, follow"]]
+To select a set of pages, such as pages that are locked, pages
+whose commit emails you want subscribe to, or pages to combine into a
+blog, the wiki uses a PageSpec. This is an expression that matches
+a set of pages.
+
+The simplest PageSpec is a simple list of pages. For example, this matches
+any of the three listed pages:
+
+ foo or bar or baz
+
+More often you will want to match any pages that have a particular thing in
+their name. You can do this using a glob pattern. "`*`" stands for any part
+of a page name, and "`?`" for any single letter of a page name. So this
+matches all pages about music, and any [[SubPage]]s of the SandBox, but does
+not match the SandBox itself:
+
+ *music* or SandBox/*
+
+You can also prefix an item with "`!`" to skip pages that match it. So to
+match all pages except for Discussion pages and the SandBox:
+
+ * and !SandBox and !*/Discussion
+
+Some more elaborate limits can be added to what matches using these functions:
+
+* "`glob(someglob)`" - matches pages and other files that match the given glob.
+ Just writing the glob by itself is actually a shorthand for this function.
+* "`page(glob)`" - like `glob()`, but only matches pages, not other files
+* "`link(page)`" - matches only pages that link to a given page (or glob)
+* "`tagged(tag)`" - matches pages that are tagged or link to the given tag (or
+ tags matched by a glob)
+* "`backlink(page)`" - matches only pages that a given page links to
+* "`creation_month(month)`" - matches only files created on the given month
+ number
+* "`creation_day(mday)`" - or day of the month
+* "`creation_year(year)`" - or year
+* "`created_after(page)`" - matches only files created after the given page
+ was created
+* "`created_before(page)`" - matches only files created before the given page
+ was created
+* "`internal(glob)`" - like `glob()`, but matches even internal-use
+ pages that globs do not usually match.
+* "`title(glob)`", "`author(glob)`", "`authorurl(glob)`",
+ "`license(glob)`", "`copyright(glob)`", "`guid(glob)`"
+ - match pages that have the given metadata, matching the specified glob.
+* "`user(username)`" - tests whether a modification is being made by a
+ user with the specified username. If openid is enabled, an openid can also
+ be put here. Glob patterns can be used in the username. For example,
+ to match all openid users, use `user(*://*)`
+* "`admin()`" - tests whether a modification is being made by one of the
+ wiki admins.
+* "`ip(address)`" - tests whether a modification is being made from the
+ specified IP address. Glob patterns can be used in the address. For
+ example, `ip(127.0.0.*)`
+* "`comment(glob)`" - matches comments to a page matching the glob.
+* "`comment_pending(glob)`" - matches unmoderated, pending comments.
+* "`postcomment(glob)`" - matches only when comments are being
+ posted to a page matching the specified glob
+
+For example, to match all pages in a blog that link to the page about music
+and were written in 2005:
+
+ blog/* and link(music) and creation_year(2005)
+
+Note the use of "and" in the above example, that means that only pages that
+match each of the three expressions match the whole. Use "and" when you
+want to combine expression like that; "or" when it's enough for a page to
+match one expression. Note that it doesn't make sense to say "index and
+SandBox", since no page can match both expressions.
+
+More complex expressions can also be created, by using parentheses for
+grouping. For example, to match pages in a blog that are tagged with either
+of two tags, use:
+
+ blog/* and (tagged(foo) or tagged(bar))
+
+Note that page names in PageSpecs are matched against the absolute
+filenames of the pages in the wiki, so a pagespec "foo" used on page
+"a/b" will not match a page named "a/foo" or "a/b/foo". To match
+relative to the directory of the page containing the pagespec, you can
+use "./". For example, "./foo" on page "a/b" matches page "a/foo".
+
+To indicate the name of the page the PageSpec is used in, you can
+use a single dot. For example, `link(.)` matches all the pages
+linking to the page containing the PageSpec.
diff --git a/backend/ikistrap/basewiki/ikiwiki/pagespec/attachment.mdwn b/backend/ikistrap/basewiki/ikiwiki/pagespec/attachment.mdwn
new file mode 100644
index 0000000..fa2bc58
--- /dev/null
+++ b/backend/ikistrap/basewiki/ikiwiki/pagespec/attachment.mdwn
@@ -0,0 +1,38 @@
+[[!meta robots="noindex, follow"]]
+[[!if test="enabled(attachment)"
+ then="This wiki has attachments **enabled**."
+ else="This wiki has attachments **disabled**."]]
+
+If attachments are enabled, the wiki admin can control what types of
+attachments will be accepted, via the `allowed_attachments`
+configuration setting.
+
+For example, to limit most users to uploading small images, and nothing else,
+while allowing larger mp3 files to be uploaded by joey into a specific
+directory, and check all attachments for viruses, something like this could be
+used:
+
+ virusfree() and ((user(joey) and podcast/*.mp3 and mimetype(audio/mpeg) and maxsize(15mb)) or (mimetype(image/*) and maxsize(50kb)))
+
+The regular [[ikiwiki/PageSpec]] syntax is expanded with the following
+additional tests:
+
+* "`maxsize(size)`" - tests whether the attachment is no larger than the
+ specified size. The size defaults to being in bytes, but "kb", "mb", "gb"
+ etc can be used to specify the units.
+
+* "`minsize(size)`" - tests whether the attachment is no smaller than the
+ specified size.
+
+* "`ispage()`" - tests whether the attachment will be treated by ikiwiki as a
+ wiki page. (Ie, if it has an extension of ".mdwn", or of any other enabled
+ page format).
+
+ So, if you don't want to allow wiki pages to be uploaded as attachments,
+ use `!ispage()` ; if you only want to allow wiki pages to be uploaded
+ as attachments, use `ispage()`.
+
+* "`mimetype(foo/bar)`" - checks the MIME type of the attachment. You can
+ include a glob in the type, for example `mimetype(image/*)`.
+
+* "`virusfree()`" - checks the attachment with an antiviral program.
diff --git a/backend/ikistrap/basewiki/ikiwiki/pagespec/po.mdwn b/backend/ikistrap/basewiki/ikiwiki/pagespec/po.mdwn
new file mode 100644
index 0000000..f995640
--- /dev/null
+++ b/backend/ikistrap/basewiki/ikiwiki/pagespec/po.mdwn
@@ -0,0 +1,23 @@
+[[!if test="enabled(po)"
+ then="This wiki has po support **enabled**."
+ else="This wiki has po support **disabled**."]]
+
+If the [[!iki plugins/po desc=po]] plugin is enabled, the regular
+[[ikiwiki/PageSpec]] syntax is expanded with the following additional
+tests that can be used to improve user navigation in a multi-lingual
+wiki:
+
+* "`lang(LL)`" - tests whether a page is written in the language
+ specified as a ISO639-1 (two-letter) language code.
+* "`currentlang()`" - tests whether a page is written in the same
+ language as the current page.
+* "`needstranslation()`" - tests whether a page needs translation
+ work. Only slave pages match this PageSpec. A minimum target
+ translation percentage can optionally be passed as an integer
+ parameter: "`needstranslation(50)`" matches only pages less than 50%
+ translated.
+
+Note that every non-po page is considered to be written in
+`po_master_language`, as specified in `ikiwiki.setup`.
+
+[[!meta robots="noindex, follow"]]
diff --git a/backend/ikistrap/basewiki/ikiwiki/pagespec/sorting.mdwn b/backend/ikistrap/basewiki/ikiwiki/pagespec/sorting.mdwn
new file mode 100644
index 0000000..0c6cc74
--- /dev/null
+++ b/backend/ikistrap/basewiki/ikiwiki/pagespec/sorting.mdwn
@@ -0,0 +1,30 @@
+Some [[directives|ikiwiki/directive]] that use
+[[PageSpecs|ikiwiki/pagespec]] allow
+specifying the order that matching pages are shown in. The following sort
+orders can be specified.
+
+* `age` - List pages from the most recently created to the oldest.
+
+* `mtime` - List pages with the most recently modified first.
+
+* `title` - Order by title (page name), e.g. "z/a a/b a/c"
+
+* `path` - Order by page name including parents, e.g. "a/b a/c z/a"
+[[!if test="enabled(sortnaturally)" then="""
+* `title_natural` - Orders by title, but numbers in the title are treated
+ as such, ("1 2 9 10 20" instead of "1 10 2 20 9")
+
+* `path_natural` - Like `path`, but numbers in the title are treated as such
+"""]]
+[[!if test="enabled(meta)" then="""
+* `meta(title)` - Order according to the `\[[!meta title="foo" sortas="bar"]]`
+ or `\[[!meta title="foo"]]` [[ikiwiki/directive]], or the page name if no
+ full title was set. `meta(author)`, `meta(date)`, `meta(updated)`, etc.
+ also work.
+"""]]
+
+In addition, you can combine several sort orders and/or reverse the order of
+sorting, with a string like `age -title` (which would sort by age, then by
+title in reverse order if two pages have the same age).
+
+[[!meta robots="noindex, follow"]]
diff --git a/backend/ikistrap/basewiki/ikiwiki/searching.mdwn b/backend/ikistrap/basewiki/ikiwiki/searching.mdwn
new file mode 100644
index 0000000..4c12879
--- /dev/null
+++ b/backend/ikistrap/basewiki/ikiwiki/searching.mdwn
@@ -0,0 +1,20 @@
+[[!meta robots="noindex, follow"]]
+
+[[!if test="enabled(search)"
+then="This wiki has searching **enabled**."
+else="This wiki has searching **disabled**."]]
+
+If searching is enabled, you can enter search terms in the search field,
+as you'd expect. There are a few special things you can do to construct
+more powerful searches.
+
+* To match a phrase, enclose it in double quotes.
+* `AND` can be used to search for documents containing two expressions.
+* `OR` can be used to search for documents containing either one of
+ two expressions.
+* Parentheses can be used to build up complicated search expressions. For
+ example, "(foo AND bar) OR (me AND you)"
+* Prefix a search term with "-" to avoid it from appearing in the results.
+ For example, "-discussion" will omit "discussion".
+* To search for a page with a given title, use "title:foo".
+* To search for pages that contain a "bar" link, use "link:bar".
diff --git a/backend/ikistrap/basewiki/ikiwiki/subpage.mdwn b/backend/ikistrap/basewiki/ikiwiki/subpage.mdwn
new file mode 100644
index 0000000..862f45e
--- /dev/null
+++ b/backend/ikistrap/basewiki/ikiwiki/subpage.mdwn
@@ -0,0 +1,12 @@
+[[!meta robots="noindex, follow"]]
+ikiwiki supports placing pages in a directory hierarchy. For example,
+this page, [[SubPage]] has some related pages placed under it, like
+[[SubPage/LinkingRules]]. This is a useful way to add some order to your
+wiki rather than just having a great big directory full of pages.
+
+To add a SubPage, just make a subdirectory and put pages in it. For
+example, this page is subpage.mdwn in this wiki's source, and there is also
+a subpage subdirectory, which contains subpage/linkingrules.mdwn. Subpages
+can be nested as deeply as you'd like.
+
+Linking to and from a SubPage is explained in [[LinkingRules]].
diff --git a/backend/ikistrap/basewiki/ikiwiki/subpage/linkingrules.mdwn b/backend/ikistrap/basewiki/ikiwiki/subpage/linkingrules.mdwn
new file mode 100644
index 0000000..e547f30
--- /dev/null
+++ b/backend/ikistrap/basewiki/ikiwiki/subpage/linkingrules.mdwn
@@ -0,0 +1,33 @@
+[[!meta robots="noindex, follow"]]
+To link to or from a [[SubPage]], you can normally use a regular
+[[WikiLink]] that does not contain the name of the parent directory of
+the [[SubPage]]. Ikiwiki descends the directory hierarchy looking for a
+page that matches your link.
+
+For example, if FooBar/SubPage links to "OtherPage", ikiwiki will first
+prefer pointing the link to FooBar/SubPage/OtherPage if it exists, next
+to FooBar/OtherPage and finally to OtherPage in the root of the wiki.
+
+Note that this means that if a link on FooBar/SomePage to "OtherPage"
+currently links to OtherPage, in the root of the wiki, and FooBar/OtherPage
+is created, the link will _change_ to point to FooBar/OtherPage. On the
+other hand, a link from BazBar to "OtherPage" would be unchanged by this
+creation of a [[SubPage]] of FooBar.
+
+You can also specify a link that contains a directory name, like
+"FooBar/OtherPage" to more exactly specify what page to link to. This is
+the only way to link to an unrelated [[SubPage]].
+
+You can use this to, for example, to link from BazBar to "FooBar/SubPage",
+or from BazBar/SubPage to "FooBar/SubPage".
+
+You can also use "/" at the start of a link, to specify exactly which page
+to link to, when there are multiple pages with similar names and the link
+goes to the wrong page by default. For example, linking from
+"FooBar/SubPage" to "/OtherPage" will link to the "OtherPage" in the root
+of the wiki, even if there is a "FooBar/OtherPage".
+
+Also, if the wiki is configured with a userdir, you can link to pages
+within the userdir without specifying a path to them. This is to allow for
+easy linking to a user's page in the userdir, to sign a comment. These
+links are checked for last of all.
diff --git a/backend/ikistrap/basewiki/ikiwiki/wikilink.mdwn b/backend/ikistrap/basewiki/ikiwiki/wikilink.mdwn
new file mode 100644
index 0000000..cf3b89c
--- /dev/null
+++ b/backend/ikistrap/basewiki/ikiwiki/wikilink.mdwn
@@ -0,0 +1,29 @@
+[[!meta robots="noindex, follow"]]
+WikiLinks provide easy linking between pages of the wiki. To create a
+[[WikiLink]], just put the name of the page to link to in double brackets.
+For example `\[[WikiLink]]`.
+
+If you ever need to write something like `\[[WikiLink]]` without creating a
+wikilink, just prefix it with a `\`, like `\\[[WikiLink]]`.
+
+There are some special [[SubPage/LinkingRules]] that come into play when
+linking between [[SubPages|SubPage]].
+
+WikiLinks are matched with page names in a case-insensitive manner, so you
+don't need to worry about getting the case the same, and can capitalise
+links at the start of a sentence, and so on.
+
+It's also possible to write a WikiLink that uses something other than the page
+name as the link text. For example `\[[foo_bar|SandBox]]` links to the SandBox
+page, but the link will appear like this: [[foo_bar|SandBox]].
+
+To link to an anchor inside a page, you can use something like
+`\[[WikiLink#foo]]` .
+
+If the file linked to by a WikiLink looks like an image, it will
+be displayed inline on the page.
+
+---
+
+You can also put an url in a WikiLink, to link to an external page.
+Email addresses can also be used to generate a mailto link.
diff --git a/backend/ikistrap/basewiki/index.mdwn b/backend/ikistrap/basewiki/index.mdwn
new file mode 100644
index 0000000..4187c11
--- /dev/null
+++ b/backend/ikistrap/basewiki/index.mdwn
@@ -0,0 +1,7 @@
+Welcome to your new wiki.
+
+All wikis are supposed to have a [[SandBox]], so this one does too.
+
+----
+
+This wiki is powered by [[ikiwiki]].
diff --git a/backend/ikistrap/basewiki/local.css b/backend/ikistrap/basewiki/local.css
new file mode 100644
index 0000000..a0dec8c
--- /dev/null
+++ b/backend/ikistrap/basewiki/local.css
@@ -0,0 +1,3 @@
+/* ikiwiki local style sheet */
+
+/* Add local styling here, instead of modifying style.css. */
diff --git a/backend/ikistrap/basewiki/recentchanges.mdwn b/backend/ikistrap/basewiki/recentchanges.mdwn
new file mode 100644
index 0000000..3383fc7
--- /dev/null
+++ b/backend/ikistrap/basewiki/recentchanges.mdwn
@@ -0,0 +1,7 @@
+[[!if test="enabled(meta)" then="""
+[[!meta title="RecentChanges"]]
+"""]]
+Recent changes to this wiki:
+
+[[!inline pages="internal(recentchanges/change_*) and !*/Discussion"
+template=recentchanges show=0]]
diff --git a/backend/ikistrap/basewiki/sandbox.mdwn b/backend/ikistrap/basewiki/sandbox.mdwn
new file mode 100644
index 0000000..c66534f
--- /dev/null
+++ b/backend/ikistrap/basewiki/sandbox.mdwn
@@ -0,0 +1,32 @@
+This is the SandBox, a page anyone can edit to learn how to use the wiki.
+
+----
+
+Here's a paragraph.
+
+Here's another one with *emphasised* text.
+
+# Header
+
+## Subheader
+
+> This is a blockquote.
+>
+> This is the first level of quoting.
+>
+> > This is nested blockquote.
+>
+> Back to the first level.
+
+Numbered list
+
+1. First item.
+1. Another.
+1. And another..
+
+Bulleted list
+
+* *item*
+* item
+
+[[ikiwiki/WikiLink]]
diff --git a/backend/ikistrap/basewiki/shortcuts.mdwn b/backend/ikistrap/basewiki/shortcuts.mdwn
new file mode 100644
index 0000000..1748a02
--- /dev/null
+++ b/backend/ikistrap/basewiki/shortcuts.mdwn
@@ -0,0 +1,86 @@
+[[!if test="enabled(shortcut)"
+ then="This wiki has shortcuts **enabled**."
+ else="This wiki has shortcuts **disabled**."]]
+
+Some examples of using shortcuts include:
+
+ \[[!google foo]]
+ \[[!wikipedia War_of_1812]]
+ \[[!debbug 12345]]
+ Check the \[[!google ikiwiki desc="google search for %s"]].
+
+This page controls what shortcut links the wiki supports.
+
+* [[!shortcut name=google url="https://encrypted.google.com/search?q=%s"]]
+* [[!shortcut name=archive url="http://web.archive.org/*/%S"]]
+* [[!shortcut name=gmap url="https://maps.google.com/maps?q=%s"]]
+* [[!shortcut name=gmsg url="https://groups.google.com/groups?selm=%s"]]
+* [[!shortcut name=wikipedia url="https://en.wikipedia.org/wiki/%W"]]
+* [[!shortcut name=wikitravel url="https://wikitravel.org/en/%s"]]
+* [[!shortcut name=wiktionary url="https://en.wiktionary.org/wiki/%s"]]
+* [[!shortcut name=debbug url="http://bugs.debian.org/%S" desc="Debian bug #%s"]]
+* [[!shortcut name=deblist url="https://lists.debian.org/debian-%s" desc="debian-%s@lists.debian.org"]]
+* [[!shortcut name=debpkg url="http://packages.debian.org/%s"]]
+* [[!shortcut name=debpkgsid url="http://packages.debian.org/sid/%s"]]
+* [[!shortcut name=debpts url="http://packages.qa.debian.org/%s"]]
+* [[!shortcut name=debmsg url="https://lists.debian.org/msgid-search/%s"]]
+* [[!shortcut name=debrt url="https://rt.debian.org/Ticket/Display.html?id=%s"]]
+* [[!shortcut name=debss url="http://snapshot.debian.org/package/%s/"]]
+ * Usage: `\[[!debss package]]` or `\[[!debss package/version]]`. See for details.
+* [[!shortcut name=debwiki url="https://wiki.debian.org/%S"]]
+* [[!shortcut name=fdobug url="https://bugs.freedesktop.org/show_bug.cgi?id=%s" desc="freedesktop.org bug #%s"]]
+* [[!shortcut name=fdolist url="http://lists.freedesktop.org/mailman/listinfo/%s" desc="%s@lists.freedesktop.org"]]
+* [[!shortcut name=gnomebug url="https://bugzilla.gnome.org/show_bug.cgi?id=%s" desc="GNOME bug #%s"]]
+* [[!shortcut name=linuxbug url="https://bugzilla.kernel.org/show_bug.cgi?id=%s" desc="Linux bug #%s"]]
+* [[!shortcut name=mozbug url="https://bugzilla.mozilla.org/show_bug.cgi?id=%s" desc="Mozilla bug #%s"]]
+* [[!shortcut name=gnulist url="https://lists.gnu.org/mailman/listinfo/%s" desc="%s@gnu.org"]]
+* [[!shortcut name=marcmsg url="http://marc.info/?i=%s"]]
+* [[!shortcut name=marclist url="http://marc.info/?l=%s"]]
+* [[!shortcut name=gmane url="http://dir.gmane.org/gmane.%s" desc="gmane.%s"]]
+* [[!shortcut name=gmanemsg url="http://mid.gmane.org/%s"]]
+* [[!shortcut name=cpan url="http://search.cpan.org/search?mode=dist&query=%s"]]
+* [[!shortcut name=ctan url="http://tug.ctan.org/cgi-bin/ctanPackageInformation.py?id=%s"]]
+* [[!shortcut name=hoogle url="http://haskell.org/hoogle/?q=%s"]]
+* [[!shortcut name=iki url="http://ikiwiki.info/%S/"]]
+* [[!shortcut name=ljuser url="http://%s.livejournal.com/"]]
+* [[!shortcut name=rfc url="https://www.ietf.org/rfc/rfc%s.txt" desc="RFC %s"]]
+* [[!shortcut name=c2 url="http://c2.com/cgi/wiki?%s"]]
+* [[!shortcut name=meatballwiki url="http://www.usemod.com/cgi-bin/mb.pl?%s"]]
+* [[!shortcut name=emacswiki url="http://www.emacswiki.org/cgi-bin/wiki/%s"]]
+* [[!shortcut name=haskellwiki url="http://haskell.org/haskellwiki/%s"]]
+* [[!shortcut name=dict url="http://www.dict.org/bin/Dict?Form=Dict1&Strategy=*&Database=*&Query=%s"]]
+* [[!shortcut name=imdb url="http://imdb.com/find?q=%s"]]
+* [[!shortcut name=gpg url="http://pgpkeys.mit.edu:11371/pks/lookup?op=vindex&exact=on&search=0x%s"]]
+* [[!shortcut name=perldoc url="http://perldoc.perl.org/search.html?q=%s"]]
+* [[!shortcut name=whois url="http://reports.internic.net/cgi/whois?whois_nic=%s&type=domain"]]
+* [[!shortcut name=cve url="https://cve.mitre.org/cgi-bin/cvename.cgi?name=%s"]]
+* [[!shortcut name=flickr url="https://secure.flickr.com/photos/%s"]]
+* [[!shortcut name=man url="http://manpages.debian.org/%s"]]
+* [[!shortcut name=ohloh url="https://www.ohloh.net/p/%s"]]
+* [[!shortcut name=cpanrt url="https://rt.cpan.org/Ticket/Display.html?id=%s" desc="CPAN RT#%s"]]
+* [[!shortcut name=novellbug url="https://bugzilla.novell.com/show_bug.cgi?id=%s" desc="bug %s"]]
+* [[!shortcut name=ubupkg url="http://packages.ubuntu.com/%s"]]
+* [[!shortcut name=mozillazinekb url="http://kb.mozillazine.org/%s"]]
+* [[!shortcut name=freebsdwiki url="http://wiki.freebsd.org/%s"]]
+* [[!shortcut name=hackage url="http://hackage.haskell.org/package/%s"]]
+* [[!shortcut name=pkgsrc url="http://pkgsrc.se/%S"]]
+* [[!shortcut name=doi url="http://dx.doi.org/%s" desc="doi:%s"]]
+* [[!shortcut name=arxiv url="http://arxiv.org/abs/%s" desc="arXiv:%s"]]
+
+To add a new shortcut, use the `shortcut`
+[[ikiwiki/directive]]. In the url, "%s" is replaced with the
+text passed to the named shortcut, after [[!wikipedia url_encoding]]
+it, and '%S' is replaced with the raw, non-encoded text.
+Additionally, `%W` is replaced with the text encoded just right for
+Wikipedia. The optional `desc` parameter controls the description of
+the link.
+
+Remember that the `name` you give the shortcut will become a new
+[[ikiwiki/directive]]. Avoid using a `name` that conflicts
+with an existing directive. These directives also accept a `desc`
+parameter that will override the one provided at definition time.
+
+If you come up with a shortcut that you think others might find useful,
+consider contributing it to the [shortcuts page on the ikiwiki
+wiki](http://ikiwiki.info/shortcuts/), so that future versions of
+ikiwiki will include your shortcut in the standard underlay.
diff --git a/backend/ikistrap/basewiki/style.css b/backend/ikistrap/basewiki/style.css
new file mode 100644
index 0000000..c68017d
--- /dev/null
+++ b/backend/ikistrap/basewiki/style.css
@@ -0,0 +1,191 @@
+/* There isn't much space between the Bootstrap navbar and the page content */
+#header {
+ margin-bottom: 1em;
+}
+
+/* Ensure the footer is pushed down to the bottom of the screen,
+ * if the main content doesn't fill it. */
+body, html {
+ height: 100%;
+}
+
+#notfooter {
+ min-height: 100%;
+ padding-bottom: 2em;
+}
+
+#footer {
+ position: relative;
+ margin-top: -2em;
+ height: 2em;
+ color: grey;
+ border-top: 1px solid lightgrey;
+}
+
+#pagedate {
+ float: right;
+}
+
+/* Bootstrap's navbar packs everything without margins or padding.
+ * Ensure the search form has some space. */
+
+#searchform {
+ margin-left: 1em;
+}
+
+.parentlinks {
+ margin-right: 1em;
+}
+
+/* Alignment of header and footer items of the default inline pages.
+ * Using flexbox layout here, since it can wrap when things get too crowded.
+ * It's a bit better than floats. */
+.inlineheader {
+ display: flex;
+}
+
+.inlineheader header {
+ flex: 1 1 auto;
+}
+
+.inlineheader {
+ flex: 0 1 auto;
+}
+
+.inlinefooter {
+ display: flex;
+ flex-wrap: wrap;
+}
+
+.inlinefooter .pageinfo {
+ flex: 1 1 auto;
+}
+
+.inlinefooter .tags {
+ flex: 0 1 auto;
+}
+
+.inline-actions {
+ display: inline;
+}
+
+.inline-actions ul, .inline-actions li {
+ list-style-type: none;
+ display: inline;
+}
+
+/* Popups */
+/* popup template and backlinks hiding */
+.popup .balloon,
+.popup .paren,
+.popup .expand {
+ position: absolute;
+ z-index: 1000;
+ display: none;
+ color: #373a3c;
+ text-align: left;
+ list-style: none;
+ background-color: #fff;
+ background-clip: padding-box;
+ border: 1px solid rgba(0, 0, 0, .15);
+ border-radius: .25rem;
+}
+
+.balloon ul {
+ list-style: none;
+ margin: 0;
+ padding: 0.5em;
+}
+
+.popup:hover .balloon,
+.popup:focus .balloon {
+ display: inline;
+}
+
+/* Table style, similar to Bootstrap .table-border and with .table-inverse headers */
+table {
+ margin-bottom: 1em;
+ background-color: white;
+ display: block;
+ overflow: auto;
+}
+
+table td, table th {
+ border: 1px solid #eceeef;
+ padding: 0.5em;
+}
+
+table th {
+ color: #eceeef;
+ background-color: #373a3c;
+ border-color: #55595c;
+}
+
+table tr:hover {
+ background-color: #f5f5f5;
+}
+
+/* Rounded corners on tables */
+table {
+ border-collapse: separate;
+}
+
+table tr:first-child td:first-child, table tr:first-child th:first-child {
+ border-top-left-radius: 0.25rem;
+}
+table tr:first-child td:last-child, table tr:first-child th:last-child {
+ border-top-right-radius: 0.25rem;
+}
+table tr:last-child td:first-child {
+ border-bottom-left-radius: 0.25rem;
+}
+table tr:last-child td:last-child {
+ border-bottom-right-radius: 0.25rem;
+}
+
+/* Improve look of calendars */
+.month-calendar td,
+.month-calendar th,
+.year-calendar td,
+.year-calendar th {
+ min-width: 2.5em;
+ text-align: center;
+}
+
+.month-calendar-day-link, .year-calendar-month-link {
+ background-color: #d9edf7;
+}
+
+/* Give RSS and Atom buttons an orange color */
+.feedbutton {
+ background: #ff8000;
+ border-color: #e07000;
+ color: white;
+ font-weight: bold;
+}
+
+.feedbutton:hover {
+ background: #ffc080;
+ border-color: #e07000;
+}
+
+/* Carousel alignment */
+.carousel-page {
+ margin: 1em;
+}
+
+.carousel-image {
+ margin: auto;
+}
+
+/* Bootstrap 4.0.0-alpha.2 forgot to define a blockquote style? */
+blockquote {
+ border-left: 4px solid rgba(0,0,0,.1);
+ padding-left: 0.5em;
+}
+
+/* Fix image width in cards. */
+.card-img-top, .card-img-bottom {
+ width: 100%;
+ height: auto;
+}
diff --git a/backend/ikistrap/basewiki/templates.mdwn b/backend/ikistrap/basewiki/templates.mdwn
new file mode 100644
index 0000000..378e579
--- /dev/null
+++ b/backend/ikistrap/basewiki/templates.mdwn
@@ -0,0 +1,100 @@
+[[Ikiwiki]] uses many templates for many purposes. By editing its templates,
+you can fully customise its appearance, and avoid duplicate content.
+
+Ikiwiki uses the HTML::Template module as its template engine. This
+supports things like conditionals and loops in templates and is pretty
+easy to learn. All you really need to know to modify templates is this:
+
+* To insert the value of a template variable, use ``.
+* To make a block of text conditional on a variable being set use
+ `text`.
+* To use one block of text if a variable is set and a second if it's not,
+ use `textother text`
+
+[[!if test="enabled(template) or enabled(edittemplate)" then="""
+## template pages
+
+Template pages are regular wiki pages containing a
+[[!iki ikiwiki/directive/templatebody desc="templatebody directive"]],
+used as templates for other pages. The parts of the template
+page outside the directive can be used to document it.
+"""]]
+
+[[!if test="enabled(template)" then="""
+The [[!iki ikiwiki/directive/template desc="template directive"]] allows
+template pages to be filled out and inserted into other pages in the wiki.
+"""]]
+
+[[!if test="enabled(edittemplate)" then="""
+The [[!iki ikiwiki/directive/edittemplate desc="edittemplate directive"]] can
+be used to make new pages default to containing text from a template
+page, which can be filled out as the page is edited.
+"""]]
+
+[[!if test="(enabled(template) or enabled(edittemplate))
+and enabled(inline)" then="""
+These template pages are currently available:
+
+[[!inline pages="templates/* and !*.tmpl and !templates/*/* and !*/discussion"
+feeds=no archive=yes sort=title template=titlepage
+rootpage=templates postformtext="Add a new template page named:"]]
+"""]]
+
+If the template does not contain a `templatebody` directive, the entire
+source of the page is used for the template. This is deprecated.
+
+## template files
+
+Template files are unlike template pages in that they have the extension
+`.tmpl`. Template files are used extensively by Ikiwiki to generate html.
+They can contain html that would not normally be allowed on a wiki page.
+
+Template files are located in `/usr/share/ikiwiki/templates` by default;
+the `templatedir` setting can be used to make another directory be
+searched first. Customised template files can also be placed inside the
+"templates/" directory in your wiki's source -- files placed there override
+ones in the `templatedir`.
+
+Here is a full list of the template files used:
+
+* `page.tmpl` - Used for displaying all regular wiki pages. This is the
+ key template to customise to change the look and feel of Ikiwiki.
+ [[!if test="enabled(pagetemplate)" then="""
+ (The [[!iki ikiwiki/directive/pagetemplate desc="pagetemplate directive"]]
+ can be used to make a page use a different template than `page.tmpl`.)"""]]
+* `rsspage.tmpl` - Used for generating rss feeds for blogs.
+* `rssitem.tmpl` - Used for generating individual items on rss feeds.
+* `atompage.tmpl` - Used for generating atom feeds for blogs.
+* `atomitem.tmpl` - Used for generating individual items on atom feeds.
+* `inlinepage.tmpl` - Used for displaying a post in a blog.
+* `archivepage.tmpl` - Used for listing a page in a blog archive page.
+* `titlepage.tmpl` - Used for listing a page by title in a blog archive page.
+* `microblog.tmpl` - Used for showing a microblogging post inline.
+* `blogpost.tmpl` - Used for a form to add a post to a blog (and rss/atom links)
+* `feedlink.tmpl` - Used to add rss/atom links if `blogpost.tmpl` is not used.
+* `aggregatepost.tmpl` - Used by the aggregate plugin to create
+ a page for a post.
+* `searchform.tmpl`, `googleform.tmpl` - Used by the search plugin
+ and google plugin to add search forms to wiki pages.
+* `searchquery.tmpl` - This is a Omega template, used by the
+ search plugin.
+* `comment.tmpl` - Used by the comments plugin to display a comment.
+* `change.tmpl` - Used to create a page describing a change made to the wiki.
+* `recentchanges.tmpl` - Used for listing a change on the RecentChanges page.
+* `autoindex.tmpl` - Filled in by the autoindex plugin to make index pages.
+* `autotag.tmpl` - Filled in by the tag plugin to make tag pages.
+* `calendarmonth.tmpl`, `calendaryear.tmpl` - Used by ikiwiki-calendar to
+ make calendar archive pages.
+* `trails.tmpl` - Used by the trail plugin to generate links on each page
+ that is a member of a trail.
+* `notifyemail.tmpl` - Used by the notifymail plugin to generate mails about
+ changed pages.
+* `editpage.tmpl`, `editconflict.tmpl`, `editcreationconflict.tmpl`,
+ `editfailedsave.tmpl`, `editpagegone.tmpl`, `pocreatepage.tmpl`,
+ `editcomment.tmpl` `commentmoderation.tmpl`, `renamesummary.tmpl`,
+ `passwordmail.tmpl`, `emailauth.tmpl`, `login-selector.tmpl`,
+ `revert.tmpl` - Parts of ikiwiki's user interface; do not normally need
+ to be customised.
+
+
+[[!meta robots="noindex, follow"]]
diff --git a/backend/ikistrap/basewiki/templates/note.mdwn b/backend/ikistrap/basewiki/templates/note.mdwn
new file mode 100644
index 0000000..8de7374
--- /dev/null
+++ b/backend/ikistrap/basewiki/templates/note.mdwn
@@ -0,0 +1,12 @@
+[[!templatebody <
+
+
+ENDBODY]]
+
+Use this template to insert a note into a page. The note will be styled to
+float to the right of other text on the page. This template has one
+parameter:
+
+
`text` - the text to display in the note
+
diff --git a/backend/ikistrap/basewiki/templates/popup.mdwn b/backend/ikistrap/basewiki/templates/popup.mdwn
new file mode 100644
index 0000000..b721a95
--- /dev/null
+++ b/backend/ikistrap/basewiki/templates/popup.mdwn
@@ -0,0 +1,17 @@
+Use this template to create a popup window that is displayed when the mouse
+is over part of the page. This template has two parameters:
+
+
`mouseover` - This is the text or other content that triggers the
+popup.
+
`popup` - This should be the content of the popup window. It can be
+anything, even images or a whole little wiki page, but should not be too
+large for good usability.
+
+Note that browsers that do not support the CSS will display the popup
+inline in the page, inside square brackets.
+
+[[templatebody <
+[]
+
+ENDBODY]]
diff --git a/backend/ikistrap/example.setup b/backend/ikistrap/example.setup
new file mode 100644
index 0000000..ca7525e
--- /dev/null
+++ b/backend/ikistrap/example.setup
@@ -0,0 +1,400 @@
+# IkiWiki::Setup::Yaml - YAML formatted setup file
+#
+# Setup file for ikiwiki.
+#
+# Passing this to ikiwiki --setup will make ikiwiki generate
+# wrappers and build the wiki.
+#
+# Remember to re-run ikiwiki --setup any time you edit this file.
+#
+# name of the wiki
+wikiname: Ikistrap example
+# contact email for wiki
+adminemail: me@example.com
+# users who are wiki admins
+adminuser: []
+# users who are banned from the wiki
+banned_users: []
+# where the source of the wiki is located
+srcdir: example
+# where to build the wiki
+destdir: example.html
+# base url to the wiki
+url: file://example.html/
+# url to the ikiwiki.cgi
+cgiurl: cgi
+# do not adjust cgiurl if CGI is accessed via different URL
+reverse_proxy: 0
+# filename of cgi wrapper to generate
+cgi_wrapper: example/cgi_wrapper
+# mode for cgi_wrapper (can safely be made suid)
+cgi_wrappermode: 06755
+# number of seconds to delay CGI requests when overloaded
+cgi_overload_delay: ''
+# message to display when overloaded (may contain html)
+cgi_overload_message: ''
+# enable optimization of only refreshing committed changes?
+only_committed_changes: 0
+# rcs backend to use
+rcs: ''
+# plugins to add to the default configuration
+add_plugins:
+- 404
+- goodstuff
+- favicon
+- poll
+- google
+- sidebar
+- highlight
+- typography
+- comments
+- calendar
+- ikistrap
+# plugins to disable
+disable_plugins: []
+# additional directory to search for template files
+templatedir: templates
+# base wiki source location
+underlaydir: basewiki
+# display verbose messages?
+verbose: 1
+# log to syslog?
+#syslog: 1
+# create output files named page/index.html?
+usedirs: 1
+# use '!'-prefixed preprocessor directives?
+prefix_directives: 1
+# use page/index.mdwn source files
+indexpages: 1
+# enable Discussion pages?
+discussion: 1
+# name of Discussion pages
+discussionpage: Discussion
+# use elements new in HTML5 like ?
+html5: 0
+# only send cookies over SSL connections?
+sslcookie: 0
+# extension to use for new pages
+default_pageext: mdwn
+# extension to use for html files
+htmlext: html
+# strftime format string to display date
+timeformat: '%c'
+# UTF-8 locale to use
+#locale: en_US.UTF-8
+# put user pages below specified page
+userdir: ''
+# how many backlinks to show before hiding excess (0 to show all)
+numbacklinks: 10
+# attempt to hardlink source files? (optimisation for large files)
+hardlink: 0
+# force ikiwiki to use a particular umask (keywords public, group or private, or a number)
+umask: 18
+# group for wrappers to run in
+#wrappergroup: ikiwiki
+# extra library and plugin directories
+libdirs: []
+# extra library and plugin directory (searched after libdirs)
+libdir: lib
+# environment variables
+ENV: {}
+# time zone name
+timezone: :/etc/localtime
+# regexp of normally excluded files to include
+#include: ^\.htaccess$
+# regexp of files that should be skipped
+#exclude: ^(*\.private|Makefile)$
+# specifies the characters that are allowed in source filenames
+wiki_file_chars: -[:alnum:]+/.:_
+# allow symlinks in the path leading to the srcdir (potentially insecure)
+allow_symlinks_before_srcdir: 0
+# cookie control
+cookiejar:
+ file: /home/users/guus/.ikiwiki/cookies
+# set custom user agent string for outbound HTTP requests e.g. when fetching aggregated RSS feeds
+useragent: ikiwiki/3.20160121
+# theme has a responsive layout? (mobile-optimized)
+responsive_layout: 1
+# try harder to produce deterministic output
+deterministic: 0
+
+######################################################################
+# core plugins
+# (editpage, htmlscrubber, inline, link, meta, parentlinks, templatebody)
+######################################################################
+
+# htmlscrubber plugin
+# PageSpec specifying pages not to scrub
+#htmlscrubber_skip: '!*/Discussion'
+
+# inline plugin
+# enable rss feeds by default?
+rss: 1
+# enable atom feeds by default?
+atom: 1
+# allow rss feeds to be used?
+#allowrss: 0
+# allow atom feeds to be used?
+#allowatom: 0
+# urls to ping (using XML-RPC) on feed update
+pingurl: []
+
+######################################################################
+# auth plugins
+# (anonok, blogspam, emailauth, httpauth, lockedit, moderatedcomments,
+# opendiscussion, openid, passwordauth, signinedit)
+######################################################################
+
+# anonok plugin
+# PageSpec to limit which pages anonymous users can edit
+#anonok_pagespec: '*/discussion'
+
+# blogspam plugin
+# PageSpec of pages to check for spam
+#blogspam_pagespec: postcomment(*)
+# options to send to blogspam server
+#blogspam_options: blacklist=1.2.3.4,blacklist=8.7.6.5,max-links=10
+# blogspam server JSON url
+#blogspam_server: ''
+
+# emailauth plugin
+# email address to send emailauth mails as (default: adminemail)
+#emailauth_sender: ''
+
+# httpauth plugin
+# url to redirect to when authentication is needed
+#cgiauthurl: http://example.com/wiki/auth/ikiwiki.cgi
+# PageSpec of pages where only httpauth will be used for authentication
+#httpauth_pagespec: '!*/Discussion'
+
+# lockedit plugin
+# PageSpec controlling which pages are locked
+#locked_pages: '!*/Discussion'
+
+# moderatedcomments plugin
+# PageSpec matching users or comment locations to moderate
+#moderate_pagespec: '*'
+
+# openid plugin
+# url pattern of openid realm (default is cgiurl)
+#openid_realm: ''
+# url to ikiwiki cgi to use for openid authentication (default is cgiurl)
+#openid_cgiurl: ''
+
+# passwordauth plugin
+# a password that must be entered when signing up for an account
+#account_creation_password: s3cr1t
+# cost of generating a password using Authen::Passphrase::BlowfishCrypt
+#password_cost: 8
+
+######################################################################
+# format plugins
+# (creole, highlight, hnb, html, mdwn, otl, rawhtml, rst, textile, txt)
+######################################################################
+
+# highlight plugin
+# types of source files to syntax highlight
+#tohighlight: .c .h .cpp .pl .py Makefile:make
+# location of highlight's filetypes.conf
+filetypes_conf: /etc/highlight/filetypes.conf
+# location of highlight's langDefs directory
+langdefdir: /usr/share/highlight/langDefs
+
+# mdwn plugin
+# enable multimarkdown features?
+multimarkdown: 1
+# disable use of markdown discount?
+#nodiscount: 0
+
+######################################################################
+# special-purpose plugins
+# (osm, underlay)
+######################################################################
+
+# osm plugin
+# the default zoom when you click on the map link
+#osm_default_zoom: 15
+# the icon shown on links and on the main map
+#osm_default_icon: ikiwiki/images/osm.png
+# the alt tag of links, defaults to empty
+#osm_alt: ''
+# the output format for waypoints, can be KML, GeoJSON or CSV (one or many, comma-separated)
+#osm_format: KML
+# the icon attached to a tag, displayed on the map for tagged pages
+#osm_tag_default_icon: icon.png
+# Url for the OpenLayers.js file
+#osm_openlayers_url: http://www.openlayers.org/api/OpenLayers.js
+# Layers to use in the map. Can be either the 'OSM' string or a type option for Google maps (GoogleNormal, GoogleSatellite, GoogleHybrid or GooglePhysical). It can also be an arbitrary URL in a syntax acceptable for OpenLayers.Layer.OSM.url parameter.
+#osm_layers:
+# OSM: GoogleSatellite
+# Google maps API key, Google layer not used if missing, see https://code.google.com/apis/console/ to get an API key
+#osm_google_apikey: ''
+
+# underlay plugin
+# extra underlay directories to add
+#add_underlays:
+#- /home/guus/wiki.underlay
+
+######################################################################
+# web plugins
+# (404, attachment, comments, editdiff, edittemplate, google, goto,
+# ikistrap, mirrorlist, remove, rename, repolist, search, theme,
+# userlist, websetup, wmd)
+######################################################################
+
+# attachment plugin
+# enhanced PageSpec specifying what attachments are allowed
+#allowed_attachments: virusfree() and mimetype(image/*) and maxsize(50kb)
+# virus checker program (reads STDIN, returns nonzero if virus found)
+#virus_checker: clamdscan -
+
+# comments plugin
+# PageSpec of pages where comments are allowed
+comments_pagespec: comments and !*/Discussion
+# PageSpec of pages where posting new comments is not allowed
+comments_closed_pagespec: ''
+# Base name for comments, e.g. "comment_" for pages like "sandbox/comment_12"
+comments_pagename: comment_
+# Interpret directives in comments?
+#comments_allowdirectives: 0
+# Allow anonymous commenters to set an author name?
+#comments_allowauthor: 0
+# commit comments to the VCS
+comments_commit: 1
+# Restrict formats for comments to (no restriction if empty)
+comments_allowformats: ''
+
+# ikistrap plugin
+# install Bootstrap css and js files locally instead of using bootstrapcdn?
+#bootstrap_local: 0
+
+# mirrorlist plugin
+# list of mirrors
+#mirrorlist: {}
+# generate links that point to the mirrors' ikiwiki CGI
+#mirrorlist_use_cgi: 1
+
+# repolist plugin
+# URIs of repositories containing the wiki's source
+#repositories:
+#- svn://svn.example.org/wiki/trunk
+
+# search plugin
+# path to the omega cgi program
+#omega_cgi: /usr/lib/cgi-bin/omega/omega
+# use google site search rather than internal xapian index?
+#google_search: 1
+
+# theme plugin
+# name of theme to enable
+#theme: actiontabs
+
+# websetup plugin
+# list of plugins that cannot be enabled/disabled via the web interface
+#websetup_force_plugins: []
+# list of additional setup field keys to treat as unsafe
+#websetup_unsafe: []
+# show unsafe settings, read-only, in web interface?
+#websetup_show_unsafe: 1
+
+######################################################################
+# widget plugins
+# (calendar, color, conditional, cutpaste, date, format, fortune,
+# graphviz, haiku, headinganchors, img, linkmap, listdirectives, map,
+# more, orphans, pagecount, pagestats, poll, polygen, postsparkline,
+# progress, shortcut, sparkline, table, template, teximg, toc, toggle,
+# version)
+######################################################################
+
+# calendar plugin
+# base of the archives hierarchy
+archivebase: archives
+# PageSpec of pages to include in the archives, if option `calendar_autocreate` is true.
+archive_pagespec: '*'
+# autocreate new calendar pages?
+calendar_autocreate: 1
+# if set, when building calendar pages, also build pages of year and month when no pages were published (building empty calendars).
+calendar_fill_gaps: 0
+
+# listdirectives plugin
+# directory in srcdir that contains directive descriptions
+#directive_description_dir: ikiwiki/directive
+
+# teximg plugin
+# Should teximg use dvipng to render, or dvips and convert?
+#teximg_dvipng: ''
+# LaTeX prefix for teximg plugin
+#teximg_prefix: '\documentclass{article}
+#
+# \usepackage[utf8]{inputenc}
+#
+# \usepackage{amsmath}
+#
+# \usepackage{amsfonts}
+#
+# \usepackage{amssymb}
+#
+# \pagestyle{empty}
+#
+# \begin{document}
+#
+#'
+# LaTeX postfix for teximg plugin
+#teximg_postfix: \end{document}
+
+######################################################################
+# other plugins
+# (aggregate, autoindex, brokenlinks, camelcase, ddate, embed, favicon,
+# filecheck, flattr, goodstuff, htmlbalance, localstyle, loginselector,
+# notifyemail, pagetemplate, pingee, pinger, prettydate, recentchanges,
+# recentchangesdiff, relativedate, rsync, sidebar, smiley,
+# sortnaturally, tag, testpagespec, trail, transient)
+######################################################################
+
+# aggregate plugin
+# enable aggregation to internal pages?
+aggregateinternal: 1
+# allow aggregation to be triggered via the web?
+#aggregate_webtrigger: 0
+
+# autoindex plugin
+# commit autocreated index pages
+#autoindex_commit: 1
+
+# camelcase plugin
+# list of words to not turn into links
+#camelcase_ignore: []
+
+# flattr plugin
+# userid or user name to use by default for Flattr buttons
+#flattr_userid: joeyh
+
+# pinger plugin
+# how many seconds to try pinging before timing out
+#pinger_timeout: 15
+
+# prettydate plugin
+# format to use to display date
+prettydateformat: '%B %o %Y'
+
+# recentchanges plugin
+# name of the recentchanges page
+recentchangespage: recentchanges
+# number of changes to track
+recentchangesnum: 25
+
+# rsync plugin
+# command to run to sync updated pages
+#rsync_command: rsync -qa --delete . user@host:/path/to/docroot/
+
+# sidebar plugin
+# show sidebar page on all pages?
+#global_sidebars: 1
+
+# tag plugin
+# parent page tags are located under
+tagbase: tag
+# autocreate new tag pages?
+#tag_autocreate: 1
+# commit autocreated tag pages
+tag_autocreate_commit: 1
diff --git a/backend/ikistrap/example/Anemones.jpg b/backend/ikistrap/example/Anemones.jpg
new file mode 100644
index 0000000..7151241
Binary files /dev/null and b/backend/ikistrap/example/Anemones.jpg differ
diff --git a/backend/ikistrap/example/Bootstrap_features.mdwn b/backend/ikistrap/example/Bootstrap_features.mdwn
new file mode 100644
index 0000000..12c3a08
--- /dev/null
+++ b/backend/ikistrap/example/Bootstrap_features.mdwn
@@ -0,0 +1,136 @@
+# Bootstrap features
+
+This page will contain a display of various features from Bootstrap.
+They require some manual HTML tags.
+Note that not all Markdown parsers allow Markdown markup inside all HTML tags.
+In the case of ikiwiki, adding `markdown="1"` to `div` elements usually allows markup to be used inside them.
+For a full list of features provided by Bootstrap 4, go to .
+
+
+## Jumbotron
+
+It's big and in your face.
+
+---
+
+You can still use Markdown syntax inside HTML blocks, if you are careful.
+
+Button
+
+
+## Labels Hi!
+
+Span elements work inside Markdown headings.
+
+
+## Cards
+
+Put a border with soft round corners around your content.
+
+
+
+## Card decks
+
+These require some more work.
+You can use the `\[[!img]]` directive, but make sure to add `class="card-img-top"` or `class="card-img-bottom"` where appropriate.
+For images in cards to work properly, they need to have their width forced to 100% of their container.
+This is done in the `style.css` file that comes with ikistrap.
+
+Another issue is that due to all the nested HTML tags, even with `markdown="1"`, Markdown markup does not get parsed anymore.
+
+
+
+## Card columns
+
+These can be created by writing the outer card-columns `div` elements yourself,
+and using `\[[!inline]]` with `template="simplecard"` to generate the cards.
+
+
+[[!inline pages="sample_text/* and !*/Discussion" template="simplecard" feeds="no"]]
+
+
+
+## Carousel
+
+These can be created by writing the outer two carousel `div` elements yourself,
+and using `\[[!inline]]` with `template="carouselpage"` to generate the carousel items.
+
+
+
+
+
+[[!inline pages="sample_text/* and !*/Discussion" template="carouselpage" feeds="no"]]
+
+
+
+## Progress bars
+
+Ikistrap also provides a progress directive which works in the same way as the progress plugin,
+but it also allows an extra class to be specified to change the style per bar.
+
+[[!progress totalpages="* and !*/Discussion" donepages="*/Discussion"]]
+[[!progress percent="33%"]]
+[[!progress percent="66%" class="progress-success progress-striped"]]
+
+## Other stuff
+
+Goes here.
+
diff --git a/backend/ikistrap/example/Calendars.mdwn b/backend/ikistrap/example/Calendars.mdwn
new file mode 100644
index 0000000..5d8e152
--- /dev/null
+++ b/backend/ikistrap/example/Calendars.mdwn
@@ -0,0 +1,10 @@
+# Calendar
+
+This is an example of the ikiwiki calendar function.
+Here is a monthly calendar:
+
+[[!calendar type="month"]]
+
+And this is a yearly calendar:
+
+[[!calendar type="year"]]
diff --git a/backend/ikistrap/example/Comments.mdwn b/backend/ikistrap/example/Comments.mdwn
new file mode 100644
index 0000000..24cc744
--- /dev/null
+++ b/backend/ikistrap/example/Comments.mdwn
@@ -0,0 +1,3 @@
+# Comments
+
+This is an example of a page where comments are allowed.
diff --git a/backend/ikistrap/example/Comments/comment_1._comment b/backend/ikistrap/example/Comments/comment_1._comment
new file mode 100644
index 0000000..ab9901d
--- /dev/null
+++ b/backend/ikistrap/example/Comments/comment_1._comment
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+username="Anonymous Coward"
+subject="Indeed"
+date="2009-06-02T19:05:00Z"
+content="""
+Hi, I just want to say that I totally agree with you.
+Have a nice day!
+"""
+]]
diff --git a/backend/ikistrap/example/Comments/comment_2._comment b/backend/ikistrap/example/Comments/comment_2._comment
new file mode 100644
index 0000000..5b29715
--- /dev/null
+++ b/backend/ikistrap/example/Comments/comment_2._comment
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+username="Pseudonymous Person"
+subject="I am disagree"
+date="2009-06-02T19:05:01Z"
+content="""
+I don't think so. Eggs should neither be capped at the top or at the bottom.
+Symmetry is only attained by slicing it in half in a plane spanned by the line between the top and bottom.
+"""
+]]
diff --git a/backend/ikistrap/example/Inline_pages.mdwn b/backend/ikistrap/example/Inline_pages.mdwn
new file mode 100644
index 0000000..46d540e
--- /dev/null
+++ b/backend/ikistrap/example/Inline_pages.mdwn
@@ -0,0 +1,9 @@
+# Inline pages
+
+Here is an example of inline pages using the default inlining theme:
+
+[[!inline pages="sample_text/* and !*/Discussion" reverse="yes" limit="3"]]
+
+Here is an example of inlining with actions enabled:
+
+[[!inline pages="sample_text/* and !*/Discussion" reverse="yes" skip="3" limit="2" actions="1"]]
diff --git a/backend/ikistrap/example/Lemonshark.jpg b/backend/ikistrap/example/Lemonshark.jpg
new file mode 100644
index 0000000..e568a5b
Binary files /dev/null and b/backend/ikistrap/example/Lemonshark.jpg differ
diff --git a/backend/ikistrap/example/Sea_Star.jpg b/backend/ikistrap/example/Sea_Star.jpg
new file mode 100644
index 0000000..5fb9001
Binary files /dev/null and b/backend/ikistrap/example/Sea_Star.jpg differ
diff --git a/backend/ikistrap/example/index.mdwn b/backend/ikistrap/example/index.mdwn
new file mode 100644
index 0000000..fb9d0c2
--- /dev/null
+++ b/backend/ikistrap/example/index.mdwn
@@ -0,0 +1,24 @@
+# Welcome
+
+This is an example wiki to show off the ikistrap theme.
+Ikistrap tries to provide a fully-featured, modern looking HTML5 theme for ikiwiki.
+It uses Bootstrap 4 and Fonts Awesome.
+
+## Features
+
+Ikistrap has the following features:
+
+* Good use of HTML5 semantic elements.
+* Responsive layout.
+* Standards-compliant.
+* Compatible with text-only browsers.
+* Header supporting parentlinks, wiki actions, search form, language selection and trails.
+* Sidebar styled as a Boostrap 4 card, using the Bootstrap 4 grid system.
+* Footer that is pushed down to the bottom of the screen with tags, backlinks, copyright, license and modification date.
+* [[Inline pages]] that are by default styled as Bootstrap 4 cards.
+* [[Comments]]
+* [[Calendars]]
+
+Note that ikistrap doesn't add any special support for Bootstrap to the Markdown language.
+If you want to make use of [[Bootstrap features]] inside your text, you will have to manually add the appropriate HTML tags.
+
diff --git a/backend/ikistrap/example/inlinetest.mdwn b/backend/ikistrap/example/inlinetest.mdwn
new file mode 100644
index 0000000..95cebf2
--- /dev/null
+++ b/backend/ikistrap/example/inlinetest.mdwn
@@ -0,0 +1 @@
+[[!inline pages="sample_text/*"]]
diff --git a/backend/ikistrap/example/sample_text/Donec_dapibus.mdwn b/backend/ikistrap/example/sample_text/Donec_dapibus.mdwn
new file mode 100644
index 0000000..b995fa6
--- /dev/null
+++ b/backend/ikistrap/example/sample_text/Donec_dapibus.mdwn
@@ -0,0 +1 @@
+Donec dapibus orci sit amet elit. Maecenas rutrum ultrices lectus. Aliquam suscipit, lacus a iaculis adipiscing, eros orci pellentesque nisl, non pharetra dolor urna nec dolor. Integer cursus dolor vel magna. Integer ultrices feugiat sem. Proin nec nibh. Duis eu dui quis nunc sagittis lobortis. Fusce pharetra, enim ut sodales luctus, lectus arcu rhoncus purus, in fringilla augue elit vel lacus. In hac habitasse platea dictumst. Aliquam erat volutpat. Fusce iaculis elit id tellus. Ut accumsan malesuada turpis. Suspendisse potenti. Vestibulum lacus augue, lobortis mattis, laoreet in, varius at, nisi. Nunc gravida. Phasellus faucibus. In hac habitasse platea dictumst. Integer tempor lacus eget lectus. Praesent fringilla augue fringilla dui.
diff --git a/backend/ikistrap/example/sample_text/Donec_semper.mdwn b/backend/ikistrap/example/sample_text/Donec_semper.mdwn
new file mode 100644
index 0000000..bdcb1ab
--- /dev/null
+++ b/backend/ikistrap/example/sample_text/Donec_semper.mdwn
@@ -0,0 +1 @@
+Donec semper, sem nec tristique tempus, justo neque commodo nisl, ut gravida sem tellus suscipit nunc. Aliquam erat volutpat. Ut tincidunt pretium elit. Aliquam pulvinar. Nulla cursus. Suspendisse potenti. Etiam condimentum hendrerit felis. Duis iaculis aliquam enim. Donec dignissim augue vitae orci. Curabitur luctus felis a metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In varius neque at enim. Suspendisse massa nulla, viverra in, bibendum vitae, tempor quis, lorem.
diff --git a/backend/ikistrap/example/sample_text/Lorem_ipsum.mdwn b/backend/ikistrap/example/sample_text/Lorem_ipsum.mdwn
new file mode 100644
index 0000000..f0199bc
--- /dev/null
+++ b/backend/ikistrap/example/sample_text/Lorem_ipsum.mdwn
@@ -0,0 +1,4 @@
+[[!meta author="Cicero"]]
+[[!meta date="45 B.C."]]
+
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed at ante. Mauris eleifend, quam a vulputate dictum, massa quam dapibus leo, eget vulputate orci purus ut lorem. In fringilla mi in ligula. Pellentesque aliquam quam vel dolor. Nunc adipiscing. Sed quam odio, tempus ac, aliquam molestie, varius ac, tellus. Vestibulum ut nulla aliquam risus rutrum interdum. Pellentesque lorem. Curabitur sit amet erat quis risus feugiat viverra. Pellentesque augue justo, sagittis et, lacinia at, venenatis non, arcu. Nunc nec libero. In cursus dictum risus. Etiam tristique nisl a nulla. Ut a orci. Curabitur dolor nunc, egestas at, accumsan at, malesuada nec, magna.
diff --git a/backend/ikistrap/example/sample_text/Nulla_facilisi.mdwn b/backend/ikistrap/example/sample_text/Nulla_facilisi.mdwn
new file mode 100644
index 0000000..0e8a0b9
--- /dev/null
+++ b/backend/ikistrap/example/sample_text/Nulla_facilisi.mdwn
@@ -0,0 +1,2 @@
+[[!tag Cicero Latin typesetting]]
+Nulla facilisi. Nunc volutpat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Ut sit amet orci vel mauris blandit vehicula. Nullam quis enim. Integer dignissim viverra velit. Curabitur in odio. In hac habitasse platea dictumst. Ut consequat, tellus eu volutpat varius, justo orci elementum dolor, sed imperdiet nulla tellus ut diam. Vestibulum ipsum ante, malesuada quis, tempus ac, placerat sit amet, elit.
diff --git a/backend/ikistrap/example/sample_text/Sed_eget.mdwn b/backend/ikistrap/example/sample_text/Sed_eget.mdwn
new file mode 100644
index 0000000..d360de3
--- /dev/null
+++ b/backend/ikistrap/example/sample_text/Sed_eget.mdwn
@@ -0,0 +1 @@
+Sed eget turpis a pede tempor malesuada. Vivamus quis mi at leo pulvinar hendrerit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Pellentesque aliquet lacus vitae pede. Nullam mollis dolor ac nisi. Phasellus sit amet urna. Praesent pellentesque sapien sed lacus. Donec lacinia odio in odio. In sit amet elit. Maecenas gravida interdum urna. Integer pretium, arcu vitae imperdiet facilisis, elit tellus tempor nisi, vel feugiat ante velit sit amet mauris. Vivamus arcu. Integer pharetra magna ac lacus. Aliquam vitae sapien in nibh vehicula auctor. Suspendisse leo mauris, pulvinar sed, tempor et, consequat ac, lacus. Proin velit. Nulla semper lobortis mauris. Duis urna erat, ornare et, imperdiet eu, suscipit sit amet, massa. Nulla nulla nisi, pellentesque at, egestas quis, fringilla eu, diam.
diff --git a/backend/ikistrap/example/sidebar.mdwn b/backend/ikistrap/example/sidebar.mdwn
new file mode 100644
index 0000000..06f20e8
--- /dev/null
+++ b/backend/ikistrap/example/sidebar.mdwn
@@ -0,0 +1,9 @@
+This is the sidebar.
+
+* [[/index]]
+* [[ikiwiki]]
+* [[sandbox]]
+* [[shortcuts]]
+* [[templates]]
+
+``Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam tortor augue, lacinia eget libero eget, imperdiet scelerisque neque. Nam pretium dui sit amet rhoncus commodo. Sed eget faucibus purus, vel vulputate nulla. Sed accumsan odio ac dui vulputate, non venenatis velit iaculis. Quisque efficitur orci in tellus tincidunt, non maximus nisi finibus. Vestibulum tristique id eros ut dictum. Integer congue euismod metus, at feugiat nunc sagittis quis. Curabitur iaculis mi eget volutpat sodales. Ut nec dui et mi cursus tempor ac et sem. Nulla felis neque, congue tristique ultricies a, vehicula a ante.''
diff --git a/backend/ikistrap/ikistrap.svg b/backend/ikistrap/ikistrap.svg
new file mode 100644
index 0000000..7121469
--- /dev/null
+++ b/backend/ikistrap/ikistrap.svg
@@ -0,0 +1,180 @@
+
+
+
+
diff --git a/backend/ikistrap/lib/IkiWiki/Plugin/ikistrap.pm b/backend/ikistrap/lib/IkiWiki/Plugin/ikistrap.pm
new file mode 100644
index 0000000..7c4e7f8
--- /dev/null
+++ b/backend/ikistrap/lib/IkiWiki/Plugin/ikistrap.pm
@@ -0,0 +1,103 @@
+#!/usr/bin/perl
+package IkiWiki::Plugin::ikistrap;
+
+use warnings;
+use strict;
+use IkiWiki 3.00;
+
+sub import {
+ hook(type => "getsetup", id => "ikistrap", call => \&getsetup);
+ hook(type => "refresh", id => "ikistrap", call => \&refresh);
+ hook(type => "pagetemplate", id => "ikistrap", call => \&pagetemplate);
+ hook(type => "preprocess", id => "progress", call => \&progress);
+}
+
+sub getsetup() {
+ return
+ plugin => {
+ description => "Bootstrap 4 theme support",
+ section => "web",
+ safe => 1,
+ },
+ bootstrap_local => {
+ description => "install Bootstrap css and js files locally instead of using bootstrapcdn?",
+ example => 0,
+ type => "boolean",
+ default => 0,
+ rebuild => 1,
+ },
+}
+
+sub check($$) {
+ my($basename, $href) = @_;
+ my $filename = "$config{destdir}/$basename";
+ return if(-e $filename);
+ debug("Fetching missing $basename...");
+ system("/usr/bin/curl -# \"$href\" -o \"$filename\"");
+}
+
+sub refresh() {
+ return 0 unless($config{bootstrap_local});
+ mkdir("$config{destdir}/css");
+ mkdir("$config{destdir}/js");
+ mkdir("$config{destdir}/fonts");
+ check("css/bootstrap.min.css", "https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.2/css/bootstrap.min.css");
+ check("js/bootstrap.min.js", "https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.2/js/bootstrap.min.js");
+ check("css/font-awesome.min.css", "https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css");
+ check("fonts/fontawesome-webfont.eot", "https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/fonts/fontawesome-webfont.eot");
+ check("fonts/fontawesome-webfont.woff2", "https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/fonts/fontawesome-webfont.woff2");
+ check("fonts/fontawesome-webfont.woff", "https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/fonts/fontawesome-webfont.woff");
+ check("fonts/fontawesome-webfont.ttf", "https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/fonts/fontawesome-webfont.ttf");
+ check("fonts/fontawesome-webfont.svg", "https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/fonts/fontawesome-webfont.svg");
+ check("js/jquery.min.js", "https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js");
+ check("js/tether.min.js", "https://cdnjs.cloudflare.com/ajax/libs/tether/1.2.0/js/tether.min.js");
+}
+
+sub pagetemplate(@) {
+ my %params = @_;
+ my $template = $params{template};
+
+ $template->param(bootstrap_local => $config{bootstrap_local});
+}
+
+# Emulate the progress plugin, but do it the HTML5 + Bootstrap way.
+# Also allow setting an extra class attribute.
+sub progress(@) {
+ my %params = @_;
+ my $percentage_pattern = qr/[0-9]+\%?/; # pattern to validate percentages
+ my ($fill, $value, $max);
+
+ if (defined $params{percent}) {
+ $fill = $params{percent};
+ ($fill) = $fill =~ m/($percentage_pattern)/; # fill is untainted now
+ $fill =~ s/%$//;
+ if (! defined $fill || ! length $fill || $fill > 100 || $fill < 0) {
+ error(sprintf(gettext("illegal percent value %s"), $params{percent}));
+ }
+ $value = $fill;
+ $max = "100";
+ $fill .= "%";
+ } elsif (defined $params{totalpages} and defined $params{donepages}) {
+ $max = pagespec_match_list($params{page}, $params{totalpages}, deptype => deptype("presence"));
+ $value = pagespec_match_list($params{page}, $params{donepages}, deptype => deptype("presence"));
+
+ if ($max == 0) {
+ $fill = "100%";
+ } else {
+ $fill = sprintf("%u%%", $value / $max * 100);
+ }
+ } else {
+ error(gettext("need either `percent` or `totalpages` and `donepages` parameters"));
+ }
+
+ my $class = "progress";
+ if (defined $params{class}) {
+ $class .= " $params{class}";
+ }
+
+ return <$fill
+EODIV
+}
+
+1
diff --git a/backend/ikistrap/templates/aggregatepost.tmpl b/backend/ikistrap/templates/aggregatepost.tmpl
new file mode 100644
index 0000000..5a0f6e7
--- /dev/null
+++ b/backend/ikistrap/templates/aggregatepost.tmpl
@@ -0,0 +1,19 @@
+
+
+[[!tag ]]
+
+
+[[!meta title=""]]
+
+
+[[!meta permalink=""]]
+
+
+[[!meta copyright=""]]
+
+
+[[!meta author=" ()"]]
+
+[[!meta author=""]]
+
+[[!meta authorurl=""]]
diff --git a/backend/ikistrap/templates/archivepage.tmpl b/backend/ikistrap/templates/archivepage.tmpl
new file mode 100644
index 0000000..f829904
--- /dev/null
+++ b/backend/ikistrap/templates/archivepage.tmpl
@@ -0,0 +1,20 @@
+
diff --git a/backend/ikistrap/templates/editconflict.tmpl b/backend/ikistrap/templates/editconflict.tmpl
new file mode 100644
index 0000000..1252033
--- /dev/null
+++ b/backend/ikistrap/templates/editconflict.tmpl
@@ -0,0 +1,7 @@
+
+Your changes conflict with other changes made to the page.
+
+
+Conflict markers have been inserted into the page content. Reconcile the
+conflict and commit again to save your changes.
+
diff --git a/backend/ikistrap/templates/editcreationconflict.tmpl b/backend/ikistrap/templates/editcreationconflict.tmpl
new file mode 100644
index 0000000..c99102f
--- /dev/null
+++ b/backend/ikistrap/templates/editcreationconflict.tmpl
@@ -0,0 +1,9 @@
+
+While you were creating this page, someone else independently created a page
+with the same name.
+
+
+The edit box below contains the page's current content, followed by the
+content you entered previously, to allow you to merge the two
+together before saving.
+
diff --git a/backend/ikistrap/templates/editfailedsave.tmpl b/backend/ikistrap/templates/editfailedsave.tmpl
new file mode 100644
index 0000000..5184f7d
--- /dev/null
+++ b/backend/ikistrap/templates/editfailedsave.tmpl
@@ -0,0 +1,10 @@
+
+Failed to save your changes.
+
+
+Your changes were not able to be saved to disk. The system gave the error:
+
+
+
+Your changes are preserved below, and you can try again to save them.
+
diff --git a/backend/ikistrap/templates/editpage.tmpl b/backend/ikistrap/templates/editpage.tmpl
new file mode 100644
index 0000000..f4ea2ce
--- /dev/null
+++ b/backend/ikistrap/templates/editpage.tmpl
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/backend/ikistrap/templates/editpagegone.tmpl b/backend/ikistrap/templates/editpagegone.tmpl
new file mode 100644
index 0000000..2eed03a
--- /dev/null
+++ b/backend/ikistrap/templates/editpagegone.tmpl
@@ -0,0 +1,7 @@
+
+The page you were editing has disappeared.
+
+
+Perhaps someone else has deleted it or moved it. If you want to recreate
+this page with your text, click "Save Page" again.
+
diff --git a/backend/ikistrap/templates/emailauth.tmpl b/backend/ikistrap/templates/emailauth.tmpl
new file mode 100644
index 0000000..5561406
--- /dev/null
+++ b/backend/ikistrap/templates/emailauth.tmpl
@@ -0,0 +1,10 @@
+To log into , just open the following link:
+
+
+
+This link can only be used once to log in, and will expire in one day.
+
+(Please disregard this email if you were not trying to log in.)
+
+--
+ikiwiki
diff --git a/backend/ikistrap/templates/feedlink.tmpl b/backend/ikistrap/templates/feedlink.tmpl
new file mode 100644
index 0000000..3fbbcf6
--- /dev/null
+++ b/backend/ikistrap/templates/feedlink.tmpl
@@ -0,0 +1,9 @@
+
diff --git a/backend/ikistrap/templates/microblog.tmpl b/backend/ikistrap/templates/microblog.tmpl
new file mode 100644
index 0000000..ff761a6
--- /dev/null
+++ b/backend/ikistrap/templates/microblog.tmpl
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ —
+
+
diff --git a/backend/ikistrap/templates/notifyemail.tmpl b/backend/ikistrap/templates/notifyemail.tmpl
new file mode 100644
index 0000000..5087668
--- /dev/null
+++ b/backend/ikistrap/templates/notifyemail.tmpl
@@ -0,0 +1,9 @@
+A comment has been posted atchange has been made to
+
+----
+
+
+
+----
+
+To stop these notifications, visit
diff --git a/backend/ikistrap/templates/page.tmpl b/backend/ikistrap/templates/page.tmpl
new file mode 100644
index 0000000..6b964a3
--- /dev/null
+++ b/backend/ikistrap/templates/page.tmpl
@@ -0,0 +1,223 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/backend/ikistrap/templates/passwordmail.tmpl b/backend/ikistrap/templates/passwordmail.tmpl
new file mode 100644
index 0000000..aa8a68c
--- /dev/null
+++ b/backend/ikistrap/templates/passwordmail.tmpl
@@ -0,0 +1,15 @@
+Someone[1], possibly you, requested that the password for
+ on [2] be reset.
+
+To change your password, visit the following url, and enter a new password:
+
+
+
+This url can only be used once to change your password, and it will also
+stop working the next time you successfully log in.
+
+--
+ikiwiki
+
+[1] Their IP address was
+[2] Located at
diff --git a/backend/ikistrap/templates/pocreatepage.tmpl b/backend/ikistrap/templates/pocreatepage.tmpl
new file mode 100644
index 0000000..f22ee50
--- /dev/null
+++ b/backend/ikistrap/templates/pocreatepage.tmpl
@@ -0,0 +1,3 @@
+
+WARNING this page must be written in .
+
diff --git a/backend/ikistrap/templates/recentchanges.tmpl b/backend/ikistrap/templates/recentchanges.tmpl
new file mode 100644
index 0000000..a2e8811
--- /dev/null
+++ b/backend/ikistrap/templates/recentchanges.tmpl
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/backend/ikistrap/tidy.config b/backend/ikistrap/tidy.config
new file mode 100644
index 0000000..e0ee067
--- /dev/null
+++ b/backend/ikistrap/tidy.config
@@ -0,0 +1,9 @@
+quiet: yes
+indent: yes
+indent-with-tabs: yes
+wrap: 0
+hide-comments: yes
+omit-optional-tags: yes
+punctuation-wrap: yes
+tidy-mark: no
+drop-empty-elements: no
diff --git a/backend/ikiwiki.setup b/backend/ikiwiki.setup
new file mode 100644
index 0000000..e58ddbc
--- /dev/null
+++ b/backend/ikiwiki.setup
@@ -0,0 +1,384 @@
+# IkiWiki::Setup::Yaml - YAML formatted setup file
+#
+# Setup file for ikiwiki.
+#
+# Passing this to ikiwiki --setup will make ikiwiki generate
+# wrappers and build the wiki.
+#
+# Remember to re-run ikiwiki --setup any time you edit this file.
+#
+# name of the wiki
+wikiname: A Wiki for Targeted Individuals
+# contact email for wiki
+#adminemail: me@example.com
+# users who are wiki admins
+adminuser: []
+# users who are banned from the wiki
+banned_users: []
+# where the source of the wiki is located
+srcdir: ../wiki
+# where to build the wiki
+destdir: ../html
+# base url to the wiki
+url: ''
+# url to the ikiwiki.cgi
+cgiurl: ''
+# do not adjust cgiurl if CGI is accessed via different URL
+reverse_proxy: 0
+# filename of cgi wrapper to generate
+cgi_wrapper: ''
+# mode for cgi_wrapper (can safely be made suid)
+cgi_wrappermode: 06755
+# number of seconds to delay CGI requests when overloaded
+cgi_overload_delay: ''
+# message to display when overloaded (may contain html)
+cgi_overload_message: ''
+# enable optimization of only refreshing committed changes?
+only_committed_changes: 0
+# rcs backend to use
+rcs: ''
+# plugins to add to the default configuration
+add_plugins:
+- ikistrap
+# plugins to disable
+disable_plugins: []
+# additional directory to search for template files
+templatedir: ikistrap/templates
+# base wiki source location
+underlaydir: ikistrap/basewiki
+# display verbose messages?
+#verbose: 1
+# log to syslog?
+#syslog: 1
+# create output files named page/index.html?
+usedirs: 1
+# use '!'-prefixed preprocessor directives?
+prefix_directives: 1
+# use page/index.mdwn source files
+indexpages: 0
+# enable Discussion pages?
+discussion: 1
+# name of Discussion pages
+discussionpage: Discussion
+# generate HTML5?
+html5: 0
+# only send cookies over SSL connections?
+sslcookie: 0
+# extension to use for new pages
+default_pageext: mdwn
+# extension to use for html files
+htmlext: html
+# strftime format string to display date
+timeformat: '%c'
+# UTF-8 locale to use
+#locale: en_US.UTF-8
+# put user pages below specified page
+userdir: ''
+# how many backlinks to show before hiding excess (0 to show all)
+numbacklinks: 10
+# attempt to hardlink source files? (optimisation for large files)
+hardlink: 0
+# force ikiwiki to use a particular umask (keywords public, group or private, or a number)
+#umask: public
+# group for wrappers to run in
+#wrappergroup: ikiwiki
+# extra library and plugin directory
+libdir: ikistrap/lib
+# environment variables
+ENV: {}
+# time zone name
+#timezone: US/Eastern
+# regexp of normally excluded files to include
+#include: ^\.htaccess$
+# regexp of files that should be skipped
+#exclude: ^(*\.private|Makefile)$
+# specifies the characters that are allowed in source filenames
+wiki_file_chars: -[:alnum:]+/.:_
+# allow symlinks in the path leading to the srcdir (potentially insecure)
+allow_symlinks_before_srcdir: 0
+# cookie control
+cookiejar:
+ file: /home/user/.ikiwiki/cookies
+# set custom user agent string for outbound HTTP requests e.g. when fetching aggregated RSS feeds
+useragent: ikiwiki/3.20141016.3
+
+######################################################################
+# core plugins
+# (editpage, htmlscrubber, inline, link, meta, parentlinks, templatebody)
+######################################################################
+
+# htmlscrubber plugin
+# PageSpec specifying pages not to scrub
+#htmlscrubber_skip: '!*/Discussion'
+
+# inline plugin
+# enable rss feeds by default?
+#rss: 0
+# enable atom feeds by default?
+#atom: 0
+# allow rss feeds to be used?
+#allowrss: 0
+# allow atom feeds to be used?
+#allowatom: 0
+# urls to ping (using XML-RPC) on feed update
+pingurl: []
+
+######################################################################
+# auth plugins
+# (anonok, blogspam, httpauth, lockedit, moderatedcomments,
+# opendiscussion, openid, passwordauth, signinedit)
+######################################################################
+
+# anonok plugin
+# PageSpec to limit which pages anonymous users can edit
+#anonok_pagespec: '*/discussion'
+
+# blogspam plugin
+# PageSpec of pages to check for spam
+#blogspam_pagespec: postcomment(*)
+# options to send to blogspam server
+#blogspam_options: blacklist=1.2.3.4,blacklist=8.7.6.5,max-links=10
+# blogspam server JSON url
+#blogspam_server: ''
+
+# httpauth plugin
+# url to redirect to when authentication is needed
+#cgiauthurl: http://example.com/wiki/auth/ikiwiki.cgi
+# PageSpec of pages where only httpauth will be used for authentication
+#httpauth_pagespec: '!*/Discussion'
+
+# lockedit plugin
+# PageSpec controlling which pages are locked
+#locked_pages: '!*/Discussion'
+
+# moderatedcomments plugin
+# PageSpec matching users or comment locations to moderate
+#moderate_pagespec: '*'
+
+# openid plugin
+# url pattern of openid realm (default is cgiurl)
+#openid_realm: ''
+# url to ikiwiki cgi to use for openid authentication (default is cgiurl)
+#openid_cgiurl: ''
+
+# passwordauth plugin
+# a password that must be entered when signing up for an account
+#account_creation_password: s3cr1t
+# cost of generating a password using Authen::Passphrase::BlowfishCrypt
+#password_cost: 8
+
+######################################################################
+# format plugins
+# (creole, highlight, hnb, html, mdwn, otl, rawhtml, rst, textile, txt)
+######################################################################
+
+# highlight plugin
+# types of source files to syntax highlight
+#tohighlight: .c .h .cpp .pl .py Makefile:make
+# location of highlight's filetypes.conf
+#filetypes_conf: /etc/highlight/filetypes.conf
+# location of highlight's langDefs directory
+#langdefdir: /usr/share/highlight/langDefs
+
+# mdwn plugin
+# enable multimarkdown features?
+#multimarkdown: 0
+# disable use of markdown discount?
+#nodiscount: 0
+
+######################################################################
+# special-purpose plugins
+# (osm, underlay)
+######################################################################
+
+# osm plugin
+# the default zoom when you click on the map link
+#osm_default_zoom: 15
+# the icon shown on links and on the main map
+#osm_default_icon: ikiwiki/images/osm.png
+# the alt tag of links, defaults to empty
+#osm_alt: ''
+# the output format for waypoints, can be KML, GeoJSON or CSV (one or many, comma-separated)
+#osm_format: KML
+# the icon attached to a tag, displayed on the map for tagged pages
+#osm_tag_default_icon: icon.png
+# Url for the OpenLayers.js file
+#osm_openlayers_url: http://www.openlayers.org/api/OpenLayers.js
+# Layers to use in the map. Can be either the 'OSM' string or a type option for Google maps (GoogleNormal, GoogleSatellite, GoogleHybrid or GooglePhysical). It can also be an arbitrary URL in a syntax acceptable for OpenLayers.Layer.OSM.url parameter.
+#osm_layers:
+# OSM: GoogleSatellite
+# Google maps API key, Google layer not used if missing, see https://code.google.com/apis/console/ to get an API key
+#osm_google_apikey: ''
+
+# underlay plugin
+# extra underlay directories to add
+#add_underlays:
+#- /home/user/wiki.underlay
+
+######################################################################
+# web plugins
+# (404, attachment, comments, editdiff, edittemplate, getsource, google,
+# goto, mirrorlist, remove, rename, repolist, search, theme, userlist,
+# websetup, wmd)
+######################################################################
+
+# attachment plugin
+# enhanced PageSpec specifying what attachments are allowed
+#allowed_attachments: virusfree() and mimetype(image/*) and maxsize(50kb)
+# virus checker program (reads STDIN, returns nonzero if virus found)
+#virus_checker: clamdscan -
+
+# comments plugin
+# PageSpec of pages where comments are allowed
+#comments_pagespec: blog/* and !*/Discussion
+# PageSpec of pages where posting new comments is not allowed
+#comments_closed_pagespec: blog/controversial or blog/flamewar
+# Base name for comments, e.g. "comment_" for pages like "sandbox/comment_12"
+#comments_pagename: ''
+# Interpret directives in comments?
+#comments_allowdirectives: 0
+# Allow anonymous commenters to set an author name?
+#comments_allowauthor: 0
+# commit comments to the VCS
+#comments_commit: 1
+# Restrict formats for comments to (no restriction if empty)
+#comments_allowformats: mdwn txt
+
+# getsource plugin
+# Mime type for returned source.
+#getsource_mimetype: text/plain; charset=utf-8
+
+# mirrorlist plugin
+# list of mirrors
+#mirrorlist: {}
+# generate links that point to the mirrors' ikiwiki CGI
+#mirrorlist_use_cgi: 1
+
+# repolist plugin
+# URIs of repositories containing the wiki's source
+#repositories:
+#- svn://svn.example.org/wiki/trunk
+
+# search plugin
+# path to the omega cgi program
+#omega_cgi: /usr/lib/cgi-bin/omega/omega
+# use google site search rather than internal xapian index?
+#google_search: 1
+
+# theme plugin
+# name of theme to enable
+#theme: actiontabs
+
+# websetup plugin
+# list of plugins that cannot be enabled/disabled via the web interface
+#websetup_force_plugins: []
+# list of additional setup field keys to treat as unsafe
+#websetup_unsafe: []
+# show unsafe settings, read-only, in web interface?
+#websetup_show_unsafe: 1
+
+######################################################################
+# widget plugins
+# (calendar, color, conditional, cutpaste, date, format, fortune,
+# graphviz, haiku, headinganchors, img, linkmap, listdirectives, map,
+# more, orphans, pagecount, pagestats, poll, polygen, postsparkline,
+# progress, shortcut, sparkline, table, template, teximg, toc, toggle,
+# version)
+######################################################################
+
+# calendar plugin
+# base of the archives hierarchy
+#archivebase: archives
+# PageSpec of pages to include in the archives; used by ikiwiki-calendar command
+#archive_pagespec: page(posts/*) and !*/Discussion
+
+# img plugin
+# Image formats to process (jpeg, png, gif, svg, pdf or 'everything' to accept all)
+#img_allowed_formats: ''
+
+# listdirectives plugin
+# directory in srcdir that contains directive descriptions
+#directive_description_dir: ikiwiki/directive
+
+# teximg plugin
+# Should teximg use dvipng to render, or dvips and convert?
+#teximg_dvipng: ''
+# LaTeX prefix for teximg plugin
+#teximg_prefix: '\documentclass{article}
+#
+# \usepackage[utf8]{inputenc}
+#
+# \usepackage{amsmath}
+#
+# \usepackage{amsfonts}
+#
+# \usepackage{amssymb}
+#
+# \pagestyle{empty}
+#
+# \begin{document}
+#
+#'
+# LaTeX postfix for teximg plugin
+#teximg_postfix: \end{document}
+
+######################################################################
+# other plugins
+# (aggregate, autoindex, brokenlinks, camelcase, ddate, embed, favicon,
+# filecheck, flattr, goodstuff, htmlbalance, localstyle, notifyemail,
+# pagetemplate, pingee, pinger, prettydate, recentchanges,
+# recentchangesdiff, relativedate, rsync, sidebar, smiley,
+# sortnaturally, tag, testpagespec, trail, transient)
+######################################################################
+
+# aggregate plugin
+# enable aggregation to internal pages?
+#aggregateinternal: 1
+# allow aggregation to be triggered via the web?
+#aggregate_webtrigger: 0
+
+# autoindex plugin
+# commit autocreated index pages
+#autoindex_commit: 1
+
+# camelcase plugin
+# list of words to not turn into links
+#camelcase_ignore: []
+
+# flattr plugin
+# userid or user name to use by default for Flattr buttons
+#flattr_userid: joeyh
+
+# pinger plugin
+# how many seconds to try pinging before timing out
+#pinger_timeout: 15
+
+# prettydate plugin
+# format to use to display date
+#prettydateformat: '%X, %B %o, %Y'
+
+# recentchanges plugin
+# name of the recentchanges page
+recentchangespage: recentchanges
+# number of changes to track
+recentchangesnum: 100
+
+# rsync plugin
+# command to run to sync updated pages
+#rsync_command: rsync -qa --delete . user@host:/path/to/docroot/
+
+# sidebar plugin
+# show sidebar page on all pages?
+#global_sidebars: 1
+
+# tag plugin
+# parent page tags are located under
+#tagbase: tag
+# autocreate new tag pages?
+#tag_autocreate: 1
+# commit autocreated tag pages
+#tag_autocreate_commit: 1
+
+# ikistrap plugin
+# css/js/fonts are stored locally
+bootstrap_local: 1
diff --git a/backend/resilient/__init__.py b/backend/resilient/__init__.py
index 07f3793..818a6f5 100644
--- a/backend/resilient/__init__.py
+++ b/backend/resilient/__init__.py
@@ -8,14 +8,12 @@ import urllib
__all__ = ["freenet"]
-## Set to change default title
-name = 'A Wiki for Targeted Individuals'
-
backend_path = os.path.normpath(os.path.join(os.path.dirname(__file__), '..'))
auth_path = os.path.join(backend_path, 'auth')
html_path = os.path.normpath(os.path.join(backend_path, '../html'))
wiki_src_path = os.path.normpath(os.path.join(backend_path, '../wiki'))
+ikiwiki_setup_path = os.path.join(backend_path, 'ikiwiki.setup')
git_path = os.path.normpath(os.path.join(backend_path, '../.git'))
ssh_config_path = os.path.join(auth_path, "ssh-config")
@@ -78,7 +76,7 @@ class ikiwiki:
shutil.rmtree(html_path)
os.mkdir(html_path)
- status = os.system("ikiwiki --wikiname '%s' --rebuild '%s' '%s'" % (name.replace("'","'\"'\"'"), wiki_src_path, html_path))
+ status = os.system("ikiwiki --setup '%s' '%s' '%s'" % (ikiwiki_setup_path, wiki_src_path, html_path))
ikiwiki.synced = (status == 0)
if ikiwiki.synced:
--
cgit v1.2.3