summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--c3hl.py346
-rw-r--r--c3hl/css/SlideShow.css181
-rw-r--r--c3hl/css/common.css580
-rw-r--r--c3hl/css/msie.css37
-rw-r--r--c3hl/css/print.css68
-rw-r--r--c3hl/css/projection.css33
-rw-r--r--c3hl/css/screen.css592
-rw-r--r--c3hl/img/PythonPowered.pngbin0 -> 1992 bytes
-rw-r--r--c3hl/img/Skyline_Left.pngbin0 -> 1890 bytes
-rw-r--r--c3hl/img/Skyline_Right.pngbin0 -> 4475 bytes
-rw-r--r--c3hl/img/admon-caution.pngbin0 -> 1447 bytes
-rw-r--r--c3hl/img/admon-important.pngbin0 -> 1607 bytes
-rw-r--r--c3hl/img/admon-note.pngbin0 -> 1255 bytes
-rw-r--r--c3hl/img/admon-tip.pngbin0 -> 1910 bytes
-rw-r--r--c3hl/img/admon-warning.pngbin0 -> 1971 bytes
-rw-r--r--c3hl/img/alert.pngbin0 -> 576 bytes
-rw-r--r--c3hl/img/angry.pngbin0 -> 919 bytes
-rw-r--r--c3hl/img/attach.pngbin0 -> 1793 bytes
-rw-r--r--c3hl/img/attention.pngbin0 -> 730 bytes
-rw-r--r--c3hl/img/biggrin.pngbin0 -> 902 bytes
-rw-r--r--c3hl/img/checkmark.pngbin0 -> 589 bytes
-rw-r--r--c3hl/img/devil.pngbin0 -> 932 bytes
-rw-r--r--c3hl/img/draft.pngbin0 -> 9717 bytes
-rw-r--r--c3hl/img/frown.pngbin0 -> 945 bytes
-rw-r--r--c3hl/img/icon-error.pngbin0 -> 820 bytes
-rw-r--r--c3hl/img/icon-info.pngbin0 -> 876 bytes
-rw-r--r--c3hl/img/idea.pngbin0 -> 556 bytes
-rw-r--r--c3hl/img/moin-action.pngbin0 -> 923 bytes
-rw-r--r--c3hl/img/moin-attach.pngbin0 -> 659 bytes
-rw-r--r--c3hl/img/moin-bottom.pngbin0 -> 641 bytes
-rw-r--r--c3hl/img/moin-conflict.pngbin0 -> 719 bytes
-rw-r--r--c3hl/img/moin-deleted.pngbin0 -> 796 bytes
-rw-r--r--c3hl/img/moin-diff.pngbin0 -> 526 bytes
-rw-r--r--c3hl/img/moin-download.pngbin0 -> 1370 bytes
-rw-r--r--c3hl/img/moin-edit.pngbin0 -> 751 bytes
-rw-r--r--c3hl/img/moin-email.pngbin0 -> 563 bytes
-rw-r--r--c3hl/img/moin-ftp.pngbin0 -> 652 bytes
-rw-r--r--c3hl/img/moin-help.pngbin0 -> 996 bytes
-rw-r--r--c3hl/img/moin-home.pngbin0 -> 619 bytes
-rw-r--r--c3hl/img/moin-icon.pngbin0 -> 427 bytes
-rw-r--r--c3hl/img/moin-info.pngbin0 -> 788 bytes
-rw-r--r--c3hl/img/moin-inter.pngbin0 -> 682 bytes
-rw-r--r--c3hl/img/moin-jabber.pngbin0 -> 422 bytes
-rw-r--r--c3hl/img/moin-new.pngbin0 -> 632 bytes
-rw-r--r--c3hl/img/moin-news.pngbin0 -> 474 bytes
-rw-r--r--c3hl/img/moin-parent.pngbin0 -> 599 bytes
-rw-r--r--c3hl/img/moin-print.pngbin0 -> 515 bytes
-rw-r--r--c3hl/img/moin-raw.pngbin0 -> 740 bytes
-rw-r--r--c3hl/img/moin-readonly.pngbin0 -> 430 bytes
-rw-r--r--c3hl/img/moin-renamed.pngbin0 -> 786 bytes
-rw-r--r--c3hl/img/moin-rss.pngbin0 -> 757 bytes
-rw-r--r--c3hl/img/moin-search.pngbin0 -> 935 bytes
-rw-r--r--c3hl/img/moin-show.pngbin0 -> 923 bytes
-rw-r--r--c3hl/img/moin-subscribe.pngbin0 -> 791 bytes
-rw-r--r--c3hl/img/moin-telnet.pngbin0 -> 681 bytes
-rw-r--r--c3hl/img/moin-top.pngbin0 -> 627 bytes
-rw-r--r--c3hl/img/moin-unsubscribe.pngbin0 -> 583 bytes
-rw-r--r--c3hl/img/moin-up.pngbin0 -> 539 bytes
-rw-r--r--c3hl/img/moin-updated.pngbin0 -> 605 bytes
-rw-r--r--c3hl/img/moin-www.pngbin0 -> 928 bytes
-rw-r--r--c3hl/img/ohwell.pngbin0 -> 921 bytes
-rw-r--r--c3hl/img/prio1.pngbin0 -> 266 bytes
-rw-r--r--c3hl/img/prio2.pngbin0 -> 278 bytes
-rw-r--r--c3hl/img/prio3.pngbin0 -> 276 bytes
-rw-r--r--c3hl/img/redface.pngbin0 -> 876 bytes
-rw-r--r--c3hl/img/sad.pngbin0 -> 880 bytes
-rw-r--r--c3hl/img/smile.pngbin0 -> 873 bytes
-rw-r--r--c3hl/img/smile2.pngbin0 -> 860 bytes
-rw-r--r--c3hl/img/smile3.pngbin0 -> 902 bytes
-rw-r--r--c3hl/img/smile4.pngbin0 -> 876 bytes
-rw-r--r--c3hl/img/star_off.pngbin0 -> 738 bytes
-rw-r--r--c3hl/img/star_on.pngbin0 -> 758 bytes
-rw-r--r--c3hl/img/thumbs-up.pngbin0 -> 410 bytes
-rw-r--r--c3hl/img/tired.pngbin0 -> 896 bytes
-rw-r--r--c3hl/img/tongue.pngbin0 -> 920 bytes
-rwxr-xr-xmoin.fcgi88
-rw-r--r--wikiconfig.py184
78 files changed, 2110 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..b25c15b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+*~
diff --git a/c3hl.py b/c3hl.py
new file mode 100644
index 0000000..bdca306
--- /dev/null
+++ b/c3hl.py
@@ -0,0 +1,346 @@
+# -*- coding: iso-8859-1 -*-
+"""
+ MoinMoin - c3hl theme
+
+ @copyright: 2010 C3-HL
+ @license: GNU GPL, see COPYING for details.
+"""
+
+from MoinMoin.theme import ThemeBase
+from MoinMoin import wikiutil
+from MoinMoin.Page import Page
+
+class Theme(ThemeBase):
+
+ name = "c3hl"
+
+ _ = lambda x: x # We don't have gettext at this moment, so we fake it
+ icons = {
+ # key alt icon filename w h
+ # FileAttach
+ 'attach': ("%(attach_count)s", "moin-attach.png", 16, 16),
+ 'info': ("[INFO]", "moin-info.png", 16, 16),
+ 'attachimg': (_("[ATTACH]"), "attach.png", 32, 32),
+ # RecentChanges
+ 'rss': (_("[RSS]"), "moin-rss.png", 16, 16),
+ 'deleted': (_("[DELETED]"), "moin-deleted.png", 16, 16),
+ 'updated': (_("[UPDATED]"), "moin-updated.png", 16, 16),
+ 'renamed': (_("[RENAMED]"), "moin-renamed.png", 16, 16),
+ 'conflict': (_("[CONFLICT]"), "moin-conflict.png", 16, 16),
+ 'new': (_("[NEW]"), "moin-new.png", 16, 16),
+ 'diffrc': (_("[DIFF]"), "moin-diff.png", 16, 16),
+ # General
+ 'bottom': (_("[BOTTOM]"), "moin-bottom.png", 16, 16),
+ 'top': (_("[TOP]"), "moin-top.png", 16, 16),
+ 'www': ("[WWW]", "moin-www.png", 16, 16),
+ 'mailto': ("[MAILTO]", "moin-email.png", 16, 16),
+ 'news': ("[NEWS]", "moin-news.png", 16, 16),
+ 'telnet': ("[TELNET]", "moin-telnet.png", 16, 16),
+ 'ftp': ("[FTP]", "moin-ftp.png", 16, 16),
+ 'file': ("[FILE]", "moin-ftp.png", 16, 16),
+ # search forms
+ 'searchbutton': ("[?]", "moin-search.png", 16, 16),
+ 'interwiki': ("[%(wikitag)s]", "moin-inter.png", 16, 16),
+
+ # smileys (this is CONTENT, but good looking smileys depend on looking
+ # adapted to the theme background color and theme style in general)
+ #vvv == vvv this must be the same for GUI editor converter
+ 'X-(': ("X-(", 'angry.png', 16, 16),
+ ':D': (":D", 'biggrin.png', 16, 16),
+ '<:(': ("<:(", 'frown.png', 16, 16),
+ ':o': (":o", 'redface.png', 16, 16),
+ ':(': (":(", 'sad.png', 16, 16),
+ ':)': (":)", 'smile.png', 16, 16),
+ 'B)': ("B)", 'smile2.png', 16, 16),
+ ':))': (":))", 'smile3.png', 16, 16),
+ ';)': (";)", 'smile4.png', 16, 16),
+ '/!\\': ("/!\\", 'alert.png', 16, 16),
+ '<!>': ("<!>", 'attention.png', 16, 16),
+ '(!)': ("(!)", 'idea.png', 16, 16),
+ ':-?': (":-?", 'tongue.png', 16, 16),
+ ':\\': (":\\", 'ohwell.png', 16, 16),
+ '>:>': (">:>", 'devil.png', 16, 16),
+ '|)': ("|)", 'tired.png', 16, 16),
+ ':-(': (":-(", 'sad.png', 16, 16),
+ ':-)': (":-)", 'smile.png', 16, 16),
+ 'B-)': ("B-)", 'smile2.png', 16, 16),
+ ':-))': (":-))", 'smile3.png', 16, 16),
+ ';-)': (";-)", 'smile4.png', 16, 16),
+ '|-)': ("|-)", 'tired.png', 16, 16),
+ '(./)': ("(./)", 'checkmark.png', 16, 16),
+ '{OK}': ("{OK}", 'thumbs-up.png', 16, 16),
+ '{X}': ("{X}", 'icon-error.png', 16, 16),
+ '{i}': ("{i}", 'icon-info.png', 16, 16),
+ '{1}': ("{1}", 'prio1.png', 15, 13),
+ '{2}': ("{2}", 'prio2.png', 15, 13),
+ '{3}': ("{3}", 'prio3.png', 15, 13),
+ '{*}': ("{*}", 'star_on.png', 16, 16),
+ '{o}': ("{o}", 'star_off.png', 16, 16),
+ }
+ del _
+
+ def shouldShowEditbar(self, page):
+ if not (page.isWritable() and
+ self.request.user.may.write(page.page_name)):
+ return False
+
+ return ThemeBase.shouldShowEditbar(self, page)
+
+
+ def topnav(self, d):
+ request = self.request
+
+ links = []
+
+ for pagename in request.cfg.topnav:
+ page = Page(request, pagename)
+ title = page.split_title()
+ title = self.shortenPagename(title)
+ link = page.link_to(request, title)
+
+ links.append(link)
+
+ return '<div id="topnav">%s</div>' % '<span class="sep"> | </span>'.join(links)
+
+ def parentlinks(self, d):
+ _ = self.request.getText
+ segments = d['page_name'].split('/')
+
+ if len(segments) <= 1:
+ return ''
+
+ content = []
+ curpage = ''
+ for s in segments[:-1]:
+ curpage += s
+ content.append(Page(self.request,
+ curpage).link_to(self.request, s))
+ curpage += '/'
+
+ path_html = u'<span class="sep"> | </span>'.join(content)
+ return u'<div id="parentlinks">Zurück zu: %s</div>' % path_html
+
+ def remoteip(self):
+ nologging = u'Dieser Server loggt keine IP-Adressen.'
+ addr = self.request.environ['REMOTE_ADDR']
+ return u'<div id="ipinfo"><div id="remoteip">Deine IP-Adresse ist %s</div><div id="nologging">%s</div></div>' % (addr, nologging)
+ return ''
+
+ def header(self, d, **kw):
+ """ Assemble wiki header
+
+ @param d: parameter dictionary
+ @rtype: unicode
+ @return: page header html
+ """
+ html = [
+ # Pre header custom html
+ self.emit_custom_html(self.cfg.page_header1),
+
+ # Header
+ u'<div id="pagehead">',
+ self.topnav(d),
+ self.username(d),
+ u'</div>',
+ u'<div id="wrapper">',
+ u'<div id="logoright">',
+ u'<div id="logoleft">',
+ self.logo(),
+ u'</div>',
+ u'</div>',
+ u'<div id="header">',
+ #self.trail(d),
+ self.navibar(d),
+ self.searchform(d),
+ #u'<hr id="pageline">',
+ u'<div id="pageline"><hr style="display:none;"></div>',
+ self.msg(d),
+ self.editbar(d),
+ u'</div>',
+ u'<div id="pagewrapper">',
+ self.parentlinks(d),
+ #u'<h1 id="locationline">',
+ #self.title_with_separators(d),
+ #u'</h1>',
+
+ # Post header custom html (not recommended)
+ self.emit_custom_html(self.cfg.page_header2),
+
+ # Start of page
+ self.startPage(),
+ ]
+ return u'\n'.join(html)
+
+ def editorheader(self, d, **kw):
+ """ Assemble wiki header for editor
+
+ @param d: parameter dictionary
+ @rtype: unicode
+ @return: page header html
+ """
+ html = [
+ # Pre header custom html
+ self.emit_custom_html(self.cfg.page_header1),
+
+ # Header
+ u'<div id="wrapper">',
+ u'<div id="header">',
+ self.msg(d),
+ u'</div>',
+ u'<div id="pagewrapper">',
+ u'<h1 id="locationline">',
+ self.title_with_separators(d),
+ u'</h1>',
+
+ # Post header custom html (not recommended)
+ self.emit_custom_html(self.cfg.page_header2),
+
+ # Start of page
+ self.startPage(),
+ ]
+ return u'\n'.join(html)
+
+ def footer(self, d, **keywords):
+ """ Assemble wiki footer
+
+ @param d: parameter dictionary
+ @keyword ...:...
+ @rtype: unicode
+ @return: page footer html
+ """
+ page = d['page']
+ html = [
+ # End of page
+ self.pageinfo(page),
+ self.endPage(),
+
+ # Pre footer custom html (not recommended!)
+ self.emit_custom_html(self.cfg.page_footer1),
+
+ u'</div>',
+
+ # Footer
+ u'<div id="footer">',
+ #self.editbar(d),
+ self.credits(d),
+ self.showversion(d, **keywords),
+ self.remoteip(),
+ u'</div>',
+ u'</div>',
+
+ # Post footer custom html
+ self.emit_custom_html(self.cfg.page_footer2),
+ ]
+ return u'\n'.join(html)
+
+ def username(self, d):
+ """ Assemble the username / userprefs link
+
+ @param d: parameter dictionary
+ @rtype: unicode
+ @return: username html
+ """
+ request = self.request
+ _ = request.getText
+
+ userlinks = []
+ # Add username/homepage link for registered users. We don't care
+ # if it exists, the user can create it.
+ if request.user.valid and request.user.name:
+ interwiki = wikiutil.getInterwikiHomePage(request)
+ name = request.user.name
+ aliasname = request.user.aliasname
+ if not aliasname:
+ aliasname = name
+ title = "%s @ %s" % (aliasname, interwiki[0])
+ # link to (interwiki) user homepage
+ homelink = (request.formatter.interwikilink(1, title=title, id="userhome", generated=True, *interwiki) +
+ request.formatter.text(name) +
+ request.formatter.interwikilink(0, title=title, id="userhome", *interwiki))
+ userlinks.append(homelink)
+ # link to userprefs action
+ if 'userprefs' not in self.request.cfg.actions_excluded:
+ userlinks.append(d['page'].link_to(request, text=_('Settings'),
+ querystr={'action': 'userprefs'}, id='userprefs', rel='nofollow'))
+
+ if request.user.valid:
+ if request.user.auth_method in request.cfg.auth_can_logout:
+ userlinks.append(d['page'].link_to(request, text=_('Logout'),
+ querystr={'action': 'logout', 'logout': 'logout'}, id='logout', rel='nofollow'))
+ else:
+ query = {'action': 'login'}
+ # special direct-login link if the auth methods want no input
+ if request.cfg.auth_login_inputs == ['special_no_input']:
+ query['login'] = '1'
+ if request.cfg.auth_have_login:
+ userlinks.append(d['page'].link_to(request, text=_("Login"),
+ querystr=query, id='login', rel='nofollow'))
+ userlinks.append('<a href="https://%s%s" id="certlogin" rel="nofollow">Anmelden mit Client-Zertifikat</a>'
+ % (request.cfg.clientcerthost, d['page'].url(request)))
+
+ userlinks_html = u'<span class="sep"> | </span>'.join(userlinks)
+ html = u'<div id="username">%s</div>' % userlinks_html
+ return html
+
+ def trail(self, d):
+ """ Assemble page trail
+
+ @param d: parameter dictionary
+ @rtype: unicode
+ @return: trail html
+ """
+ request = self.request
+ user = request.user
+ html = ''
+ if not user.valid or user.show_page_trail:
+ trail = user.getTrail()
+ if trail:
+ items = []
+ for pagename in trail:
+ try:
+ interwiki, page = wikiutil.split_interwiki(pagename)
+ if interwiki != request.cfg.interwikiname and interwiki != 'Self':
+ link = (self.request.formatter.interwikilink(True, interwiki, page) +
+ self.shortenPagename(page) +
+ self.request.formatter.interwikilink(False, interwiki, page))
+ items.append(link)
+ continue
+ else:
+ pagename = page
+
+ except ValueError:
+ pass
+ page = Page(request, pagename)
+ title = page.split_title()
+ title = self.shortenPagename(title)
+ link = page.link_to(request, title)
+ items.append(link)
+ html = u'<div id="pagetrail">%s</div>' % u'<span class="sep"> &raquo; </span>'.join(items)
+ return html
+
+ def interwiki(self, d):
+ """ Assemble the interwiki name display, linking to page_front_page
+
+ @param d: parameter dictionary
+ @rtype: string
+ @return: interwiki html
+ """
+ if self.request.cfg.show_interwiki:
+ page = wikiutil.getFrontPage(self.request)
+ text = self.request.cfg.interwikiname or 'Self'
+ link = page.link_to(self.request, text=text, rel='nofollow')
+ html = u'<span id="interwiki">%s<span class="sep">: </span></span>' % link
+ else:
+ html = u''
+ return html
+
+def execute(request):
+ """
+ Generate and return a theme object
+
+ @param request: the request object
+ @rtype: MoinTheme
+ @return: Theme object
+ """
+ return Theme(request)
+
diff --git a/c3hl/css/SlideShow.css b/c3hl/css/SlideShow.css
new file mode 100644
index 0000000..180be6a
--- /dev/null
+++ b/c3hl/css/SlideShow.css
@@ -0,0 +1,181 @@
+/*
+ * Single page slide show styles
+ *
+ * Copy SlideShow.css to your theme's css/ directory.
+ *
+ * copyright: 2008 Thomas Waldmann
+ * license: GNU GPL, see COPYING for details
+ */
+
+li p {margin: 0;} /* Workaround for moin's bad list html */
+
+html {
+ background-color: white;
+ color: black;
+ font-family: Arial, Lucida Grande, sans-serif;
+ font-size: 20pt;
+}
+
+body {
+ margin: 1em;
+ padding: 20px;
+}
+
+/* Slide heading */
+h1 {font-size: 32pt; color: #33F;}
+h1:before {content:url(../../common/moinmoin.png); padding-right:10px; display: inline-block; vertical-align: middle;}
+
+/* Slide content */
+
+#content {margin-left: 20pt; margin-right: 0;}
+#content[dir="rtl"] {margin-left: 0; margin-right: 20pt;}
+
+h2 { font-size: 28pt; color: #000;}
+h3 { font-size: 24pt; color: #000;}
+h4 { font-size: 18pt; color: #000;}
+h5 { font-size: 16pt; color: #000;}
+h6 { font-size: 14pt; color: #000;}
+
+li { margin: 12pt; }
+
+a { color: #69F; }
+a:visited { color: #69F; }
+a.nonexistent, a.badinterwiki { color: #666; }
+
+tt { font-size: 18pt; }
+pre { font-size: 14pt; }
+sup, sub { font-size: 14pt; }
+
+pre {
+ border: 1pt dashed #222;
+ padding: 5pt;
+ white-space: pre;
+ background-color: #DDF;
+ color: #444;
+}
+
+
+/* Navigation */
+
+#navigation {
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ padding: 0;
+ margin: 0;
+ color: #EEE;
+ font-size: 14pt;
+}
+
+#navigation ul {
+ margin: 0;
+ padding: 6pt;
+ text-align: center;
+}
+
+#navigation li {
+ display: inline;
+ margin: 0 2pt;
+ padding: 0;
+}
+
+#navigation a {
+ text-decoration: none;
+ color: #ddd;
+}
+
+#navigation a:hover {
+ color: #bbb;
+}
+
+#navigation .current {
+ color: #888;
+}
+
+
+#date {
+ position: fixed;
+ bottom: 0.5em;
+ left: 2em;
+ right: 0;
+ font-size: 12pt;
+ clear: both;
+ display: inline;
+ margin: 0;
+ padding: 0;
+ color: #6C7680;
+}
+
+#author {
+ position: fixed;
+ bottom: 0.5em;
+ left: 2em;
+ right: 0;
+ text-align: center;
+ font-size: 12pt;
+ clear: both;
+ display: inline;
+ margin: 0;
+ padding: 0;
+ color: #6C7680;
+}
+
+#counter {
+ position: fixed;
+ bottom: 0.5em;
+ left: 2em;
+ right: 0;
+ text-align: right;
+ font-size: 12pt;
+ clear: both;
+ display: inline;
+ margin: 0;
+ padding: 0;
+ color: #6C7680;
+}
+
+/* CSS for ParserBase */
+
+div.codearea { /* the div makes the border */
+ margin: 0.5em 0;
+ padding: 0;
+ border: 1pt dashed #222;
+ background-color: #EEF;
+ color: #444;
+}
+
+div.codearea pre { /* the pre has no border and is inside the div */
+ margin: 0;
+ padding: 10pt;
+ border: none;
+}
+
+a.codenumbers { /* format of the line numbering link */
+ margin: 0pt;
+ font-size: 10pt;
+ color: #888;
+ display: none; /* rather annoying to see the link */
+}
+
+/* format of certain syntax spans */
+div.codearea pre span.LineNumber {color: #444;}
+div.codearea pre span.ID {color: #000;}
+div.codearea pre span.Operator {color: #000;}
+div.codearea pre span.Char {color: #048;}
+div.codearea pre span.Comment {color: green;}
+div.codearea pre span.Number {color: red;}
+div.codearea pre span.String {color: magenta;}
+div.codearea pre span.SPChar {color: #00C;}
+div.codearea pre span.ResWord {color: #39F;}
+div.codearea pre span.ConsWord {color: #088; font-weight: bold;}
+div.codearea pre span.Error {color: #F88; border: solid 1.5pt #FF0000;}
+div.codearea pre span.ResWord2 {color: #69F; font-weight: bold;}
+div.codearea pre span.Special {color: #00F;}
+div.codearea pre span.Preprc {color: #839;}
+
+@media print {
+ #navigation {
+ display: none;
+ }
+}
diff --git a/c3hl/css/common.css b/c3hl/css/common.css
new file mode 100644
index 0000000..e57d7de
--- /dev/null
+++ b/c3hl/css/common.css
@@ -0,0 +1,580 @@
+/* common.css - MoinMoin Default Styles
+
+Copyright (c) 2001, 2002, 2003 by Juergen Hermann
+*/
+
+/* content styles */
+
+html {
+ background-color: white;
+ color: black;
+ font-family: sans-serif;
+ font-size: 1em;
+}
+
+body {
+ margin: 0;
+}
+
+/* Links */
+
+a {color: #0044B3;}
+/* a:visited {color: #597BB3;} */
+a:visited {color: #FF7BB3;}
+
+a.nonexistent:visited, a.nonexistent,
+a.badinterwiki:visited, a.badinterwiki {color: gray;}
+
+a.www:before {content: url(../img/moin-www.png); margin: 0 0.2em;}
+a.http:before {content: url(../img/moin-www.png); margin: 0 0.2em;}
+a.https:before {content: url(../img/moin-www.png); margin: 0 0.2em;}
+a.file:before {content: url(../img/moin-ftp.png); margin: 0 0.2em;}
+a.ftp:before {content: url(../img/moin-ftp.png); margin: 0 0.2em;}
+a.nntp:before {content: url(../img/moin-news.png); margin: 0 0.2em;}
+a.news:before {content: url(../img/moin-news.png); margin: 0 0.2em;}
+a.telnet:before, a.ssh:before {content: url(../img/moin-telnet.png); margin: 0 0.2em;}
+a.irc:before, a.ircs:before {content: url(../img/moin-telnet.png); margin: 0 0.2em;}
+a.xmpp:before {content: url(../img/moin-jabber.png); margin: 0 0.2em;}
+a.mailto:before {content: url(../img/moin-email.png); margin: 0 0.2em;}
+a.attachment:before {content: url(../img/moin-attach.png); margin: 0 0.2em;}
+a.badinterwiki:before {content: url(../img/moin-inter.png); margin: 0 0.2em;}
+a.interwiki:before {content: url(../img/moin-inter.png); margin: 0 0.2em;}
+a.action:before {content: url(../img/moin-action.png); margin: 0 0.2em;}
+
+li p {
+ margin: .25em 0;
+}
+
+li.gap {
+ margin-top: 0.5em;
+}
+
+dt {
+ margin-top: 0.5em;
+ font-weight: bold;
+}
+
+dd {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+dd p {
+ margin: 0.25em 0;
+}
+
+a, img, img.drawing {
+ border: 0;
+}
+
+pre {
+ border: 1pt solid #AEBDCC;
+ background-color: #F3F5F7;
+ padding: 5pt;
+ font-family: courier, monospace;
+ white-space: pre;
+ /* begin css 3 or browser specific rules - do not remove!
+ see: http://forums.techguy.org/archive/index.php/t-249849.html */
+ white-space: pre-wrap;
+ word-wrap: break-word;
+ white-space: -moz-pre-wrap;
+ white-space: -pre-wrap;
+ white-space: -o-pre-wrap;
+ /* end css 3 or browser specific rules */
+}
+
+pre.comment {
+ background-color: #CCCCCC;
+ color: red;
+ padding: 0;
+ margin: 0;
+ border: 0;
+}
+
+pre.comment:before {
+ content: url(../img/attention.png);
+}
+
+
+/* .comment css definition must be top of .red/.green/.blue or it won't work */
+.comment { color: #555555; background-color: #DDDDFF; }
+
+.red { background-color: #FFCCCC; }
+.green { background-color: #CCFFCC; }
+.blue { background-color: #CCCCFF; }
+.yellow { background-color: #FFF29F; }
+.orange { background-color: #FFD59B; }
+.grey { background-color: #CCCCCC; }
+
+.solid { border: 2px solid #000000; padding: 2px; }
+.dashed { border: 2px dashed #000000; padding: 2px; }
+.dotted { border: 2px dotted #000000; padding: 2px; }
+
+.left { text-align: left; }
+.center { text-align: center; }
+.right { text-align: right; }
+.justify { text-align: justify; }
+
+table
+{
+ margin: 0.5em 0 0 0.5em;
+ border-collapse: collapse;
+}
+
+th, td
+{
+ padding: 0.25em 0.5em 0.25em 0.5em;
+ border: 1pt solid #ADB9CC;
+}
+
+td p {
+ margin: 0;
+ padding: 0;
+}
+/* TableOfContents macro */
+div.table-of-contents {
+ border: 1px solid #bbbbbb;
+ color: black;
+ background-color: #eeeeee;
+ font-size: 80%;
+ text-align: left;
+ margin: 0.5em 0 0.5em 1em;
+ padding: 0.5em 0.75em 0.5em 0.5em;
+ max-width: 50%;
+ display: inline-table;
+}
+div.table-of-contents ol {
+ margin: 0;
+ padding: 0 0 0 2em;
+}
+div.table-of-contents ul {
+ margin: 0;
+ list-style:none;
+}
+div.table-of-contents li {
+ margin:0;
+ padding: 0;
+}
+p.table-of-contents-heading {
+ font-weight:bold;
+ padding:0;
+ margin: 0 0 0.5em 0;
+ letter-spacing: 0.075em;
+}
+
+/* Navigation macro */
+table.navigation {
+ background: #fff;
+ margin: 0;
+}
+
+.footnotes div {
+ width: 5em;
+ border-top: 1pt solid gray;
+}
+
+.footnotes ol {
+ padding: 0 2em;
+ margin: 0 0 1em;
+}
+
+.footnotes li {
+}
+
+.info {
+ float: right;
+ font-size: 0.7em;
+ color: gray;
+}
+
+#pageinfo {
+ margin-top: 2em;
+}
+
+.seperator {
+ color: gray;
+}
+
+#pagebottom {clear: both;}
+
+/* standard rule ---- */
+hr {
+ height: 1pt;
+ background-color: #9C9C9C;
+ border: 0;
+}
+
+/* custom rules ----- to ---------- */
+.hr1 {height: 2pt;}
+.hr2 {height: 3pt;}
+.hr3 {height: 4pt;}
+.hr4 {height: 5pt;}
+.hr5 {height: 6pt;}
+.hr6 {height: 7pt;}
+
+/* Replacement for deprecated html 3 <u> element and html 4 <strike> */
+.u {text-decoration: underline;}
+.strike {text-decoration: line-through;}
+
+/* eye catchers */
+.warning
+{
+ color: red;
+}
+
+.error
+{
+ color: red;
+}
+
+strong.highlight
+{
+ background-color: #CCE0FF;
+ padding: 1pt;
+}
+
+
+/* Recent changes */
+
+.rcrss {
+ float: right;
+ margin: 0 7px 0 14px;
+ height: 0;
+ position: relative;
+ top: 9px;
+}
+*[div="rtl"] .rcrss {
+ float: left;
+}
+.recentchanges[dir="rtl"] .rcrss {
+ float: left;
+}
+
+.recentchanges table {
+ clear: both;
+ border-collapse: collapse;
+
+ /*border: 1px solid #4d7da9;*/
+ border: 1px solid #987;
+}
+
+.recentchanges td {
+ vertical-align: top;
+ border: none;
+/*background: #e6eaf0;*/
+ background: #f0eae6;
+}
+
+
+.recentchanges .rcdaybreak td {
+ /*background: #81BBF2;
+ border: none;
+ border: 1px solid #4d7da9;*/
+ background: #943;
+ /*border: 1px solid #4d7da9;*/
+ border: 1px solid #987;
+}
+
+.rcdaybreak td a {
+ font-size: 0.88em;
+}
+
+.rcdaybreak td a:link {
+ color: #db9;
+}
+
+.rcdaybreak td a:visited {
+ color: #b99;
+}
+
+.rcicon1, .rcicon2 {
+ text-align: center;
+}
+
+.rcpagelink {
+ width: 33%;
+}
+
+.rctime {
+ font-size: 0.88em;
+ white-space: nowrap;
+}
+
+.rceditor {
+ white-space: nowrap;
+ font-size: 0.88em;
+}
+
+.rccomment {
+ width: 50%;
+ color: gray;
+ font-size: 0.88em;
+}
+
+
+/* User Preferences */
+
+.userpref table, .userpref td {
+ border: none;
+}
+
+/* CSS for new code_area markup used by Colorizer and ParserBase */
+
+div.codemsg {
+ margin: 0.5em 0;
+ padding: 0.5em;
+ padding-left:2.5em;
+ background:none;
+ border: 1pt solid #CCBDAE;
+ background-color: #F7F0E0;
+ background-image:url('../img/alert.png');
+ background-repeat:no-repeat;
+ background-position: 0.5em 0.5em;
+ color: black;
+}
+
+div.codearea { /* the div makes the border */
+ margin: 0.5em 0;
+ padding: 0;
+ border: 1pt solid #AEBDCC;
+ background-color: #F3F5F7;
+ color: black;
+}
+
+div.codearea pre { /* the pre has no border and is inside the div */
+ margin: 0;
+ padding: 10pt;
+ border: none;
+}
+
+a.codenumbers { /* format of the line numbering link */
+ margin: 0 10pt;
+ font-size: 0.85em;
+ color: gray;
+}
+
+/* format of certain syntax spans */
+div.codearea pre span.LineNumber {color: gray;}
+div.codearea pre span.ID {color: #000000;}
+div.codearea pre span.Operator {color: #0000C0;}
+div.codearea pre span.Char {color: #004080;}
+div.codearea pre span.Comment {color: #008000;}
+div.codearea pre span.Number {color: #0080C0;}
+div.codearea pre span.String {color: #004080;}
+div.codearea pre span.SPChar {color: #0000C0;}
+div.codearea pre span.ResWord {color: #A00000;}
+div.codearea pre span.ConsWord {color: #008080; font-weight: bold;}
+div.codearea pre span.Error {color: #FF8080; border: solid 1.5pt #FF0000;}
+div.codearea pre span.ResWord2 {color: #0080ff; font-weight: bold;}
+div.codearea pre span.Special {color: #0000ff;}
+div.codearea pre span.Preprc {color: #803999;}
+
+/* for diff parser */
+div.codearea pre span.DiffAdded {color: #4876FF;}
+div.codearea pre span.DiffRemoved {color: #FF0000;}
+div.codearea pre span.DiffChanged {color: #FF7F50;}
+div.codearea pre span.DiffSeparator {color: #228B22; font-weight: bold}
+
+/* Search results */
+.advancedsearch {
+ border: 1pt solid #ADB9CC;
+}
+
+.advancedsearch td {
+ vertical-align: top;
+ background-color: #E7E7E7;
+ border: 0px;
+}
+
+.advancedsearch td.searchfor {
+ font-weight: bold;
+}
+
+.advancedsearch input {
+ border: 1px solid #ADB9CC;
+ background-color: #fff;
+}
+
+.advancedsearch input[disabled] {
+ background-color: #eee;
+}
+
+.advancedsearch td.submit {
+ border-top: 1px solid #ADB9CC;
+ background-color: #fff;
+ text-align: right;
+}
+
+.advancedsearch optioni,
+.advancedsearch select {
+ border: 1px solid #ADB9CC;
+ background-color: #fff;
+}
+
+
+.searchresults dt {
+ margin-top: 1em;
+ font-weight: normal;
+}
+
+.searchresults dd, .searchresults p {
+ font-size: 0.85em;
+}
+
+.searchresults .searchhitinfobar {
+ color: #008000;
+ margin-left: 15px;
+ margin-top: 0;
+}
+
+p.searchstats {
+ font-size: 0.8em;
+ text-align: right;
+ width: 100%;
+ background-color: #E6EAF0;
+ border-top: 1px solid #9088DC;
+ padding: 2px;
+}
+
+p.searchhint {
+ background-color: #E6EAF0;
+ border: 1px solid #9088DC;
+ padding: 2px;
+}
+
+.searchpages {
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.searchpages tr, .searchpages td {
+ border: 0;
+ padding: 5px;
+ margin: 0;
+ text-align: center;
+ vertical-align: middle;
+ color: #b93a58;
+ font-weight: bold;
+ font-size: 1.05em;
+}
+
+.searchpages td a, .searchpages td a:link {
+ text-decoration: underline;
+}
+
+/* MonthCalendar css */
+
+/* days without and with pages linked to them */
+a.cal-emptyday {
+ color: #777777;
+ text-align: center;
+}
+a.cal-usedday {
+ color: #000000;
+ font-weight: bold;
+ text-align: center;
+}
+/* general stuff: workdays, weekend, today */
+td.cal-workday {
+ background-color: #DDDDFF;
+ text-align: center;
+}
+td.cal-weekend {
+ background-color: #FFDDDD;
+ text-align: center;
+}
+td.cal-today {
+ background-color: #CCFFCC;
+ border-style: solid;
+ border-width: 2pt;
+ text-align: center;
+}
+/* invalid places on the monthly calendar sheet */
+td.cal-invalidday {
+ background-color: #CCCCCC;
+}
+/* links to prev/next month/year */
+a.cal-link {
+ color: #000000;
+ text-decoration: none;
+}
+th.cal-header {
+ background-color: #DDBBFF;
+ text-align: center;
+}
+
+/* for MonthCalendar mouseover info boxes */
+TABLE.tip {
+ color: black;
+ background-color: #FF8888;
+ font-size: small;
+ font-weight: normal;
+ border-style: solid;
+ border-width: 1px;
+}
+
+TH.tip {
+ background-color: #FF4444;
+ font-weight: bold;
+ text-align: center;
+}
+
+TD.tip {
+ text-align: left;
+}
+*[dir="rtl"] TD.tip {
+ text-align: right;
+}
+
+/* end MonthCalendar stuff */
+
+#message .hint {font-style: italic;}
+#message .info {
+ float: none;
+ font-size: 1em;
+ color: black;
+}
+#message .info:before {content: url('../img/icon-info.png'); margin: 0 0.2em;}
+#message .warning:before {content: url('../img/alert.png'); margin: 0 0.2em;}
+#message .error:before {content: url('../img/icon-error.png'); margin: 0 0.2em;}
+
+
+/* admonition start */
+#content div.caution,
+#content div.important,
+#content div.note,
+#content div.tip,
+#content div.warning,
+#content div.news {
+ border: 1pt solid #ccc;
+ background-color: #F8f8f8;
+ color: black;
+
+ margin: 10pt 20pt 10pt 20pt;
+ background-repeat: no-repeat;
+ background-position: 8px 8px;
+ min-height: 64px; /*64=48+8+8 but doesn't work with IE*/
+ padding-left: 64px;
+}
+
+#content div.news {
+ padding-left: 32px;
+ padding-right: 32px;
+}
+
+#content div.caution p,
+#content div.important p,
+#content div.note p,
+#content div.tip p,
+#content div.warning p {
+ margin-top: 8px; /*to align text with bg graphic*/
+}
+
+#content div.tip { background-image: url("../img/admon-tip.png"); }
+#content div.note { background-image: url("../img/admon-note.png"); }
+#content div.important { background-image: url("../img/admon-important.png"); }
+#content div.caution { background-image: url("../img/admon-caution.png"); }
+#content div.warning { background-image: url("../img/admon-warning.png"); }
+
+/* admonition end */
+
diff --git a/c3hl/css/msie.css b/c3hl/css/msie.css
new file mode 100644
index 0000000..6aea986
--- /dev/null
+++ b/c3hl/css/msie.css
@@ -0,0 +1,37 @@
+/* msie.css - MoinMoin MS Internet explorer bug workarounds */
+
+/* IE6 and IE7 both suck with :before */
+a.www { padding-left: 19px; background: url(../img/moin-www.png) left center no-repeat; }
+a.http { padding-left: 19px; background: url(../img/moin-www.png) left center no-repeat; }
+a.https { padding-left: 19px; background: url(../img/moin-www.png) left center no-repeat; }
+a.file { padding-left: 19px; background: url(../img/moin-ftp.png) left center no-repeat; }
+a.ftp { padding-left: 19px; background: url(../img/moin-ftp.png) left center no-repeat; }
+a.nntp { padding-left: 19px; background: url(../img/moin-news.png) left center no-repeat; }
+a.news { padding-left: 19px; background: url(../img/moin-news.png) left center no-repeat; }
+a.telnet, a.ssh { padding-left: 19px; background: url(../img/moin-telnet.png) left center no-repeat; }
+a.irc, a.ircs { padding-left: 19px; background: url(../img/moin-telnet.png) left center no-repeat; }
+a.mailto { padding-left: 19px; background: url(../img/moin-email.png) left center no-repeat; }
+a.attachment { padding-left: 19px; background: url(../img/moin-attach.png) left center no-repeat; }
+a.badinterwiki { padding-left: 19px; background: url(../img/moin-inter.png) left center no-repeat; }
+a.interwiki { padding-left: 19px; background: url(../img/moin-inter.png) left center no-repeat; }
+#message .warning { padding-left: 21px; background: url(../img/alert.png) left center no-repeat; }
+#message .error { padding-left: 21px; background: url(../img/icon-error.png) left center no-repeat; }
+
+#pagetrail li, #pagelocation li {
+ border-left: 1px solid #AAA;
+ padding: 0 0.3em;
+}
+
+/* Spans for line-anchors - needed for IE6 and IE7 where omitting the "display: none" triggers rendering bugs. */
+span.anchor { display: none; }
+
+/* Some * html hacks for IE6 and below only (IE7 ignores * html) */
+
+/* IE6 has a bug with rendering of float elements. We workaround this bug by
+ * assigning those elements a height attribute because we currently don't know
+ * a better solution. This results in IE calculating the correct height of the
+ * characters and displaying them correctly. We don't know any negative side
+ * effects of this workaround:
+ */
+* html div#page, * html div#header { height: 0.001%; }
+
diff --git a/c3hl/css/print.css b/c3hl/css/print.css
new file mode 100644
index 0000000..b8e4d18
--- /dev/null
+++ b/c3hl/css/print.css
@@ -0,0 +1,68 @@
+/* print.css - MoinMoin Default Styles
+
+Copyright (c) 2001, 2002, 2003 by Juergen Hermann
+*/
+
+/* content styles */
+
+html {
+ font-family: Times, serif;
+ font-size: 12pt;
+}
+
+body {
+ /* Give about 3.4cm in Mozilla/Firefox and about 2.2cm in Safari */
+ margin: 1.5cm;
+}
+
+a, a:visited, a.nonexistent, a.badinterwiki {
+ color: black;
+ text-decoration: none;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+.info a {
+ color: gray;
+}
+
+pre {
+ font-size: 10pt;
+}
+
+a.interwiki:before, a.badinterwiki:before {
+ content: attr(title) ":";
+}
+
+a.interwiki img, a.badinterwiki img {
+ display: none;
+}
+
+.footnotes div {
+ width: 5em;
+ border-top: 1pt solid gray;
+}
+
+/* user interface styles */
+
+#logo {
+ font-family: sans-serif;
+ font-weight: bold;
+ font-size: 280%;
+ text-align: center;
+}
+
+#subtitle {
+ font-family: sans-serif;
+ font-weight: bold;
+ text-align: center;
+ font-variant: small-caps;
+ margin-left: 5em;
+ margin-bottom: 45px;
+}
+
+#header, #sidebar, #footer, #timings, #credits, #interwiki, #pagelocation, #pagehead {
+ display: none;
+}
diff --git a/c3hl/css/projection.css b/c3hl/css/projection.css
new file mode 100644
index 0000000..627093e
--- /dev/null
+++ b/c3hl/css/projection.css
@@ -0,0 +1,33 @@
+/* projection.css - MoinMoin Slide Styles
+
+Copyright (c) 2003 by Juergen Hermann
+*/
+
+@import url(screen.css);
+
+html { line-height: 1.8em; }
+
+body, b, em, a, span, div, p, td { font-size: 18pt; }
+
+h1 { font-size: 26pt; }
+h2 { font-size: 22pt; }
+h3 { font-size: 20pt; }
+h4 { font-size: 18pt; }
+h5 { font-size: 16pt; }
+h6 { font-size: 14pt; }
+
+tt, pre { font-size: 16pt; }
+sup, sub { font-size: 12pt; }
+
+table.navigation {
+ float: right;
+ margin: 2px;
+}
+
+.navigation td, .navigation a {
+ font-size: 10pt;
+ padding: 2px;
+}
+
+#interwiki, #pagelocation, #pageinfo { display: none; }
+
diff --git a/c3hl/css/screen.css b/c3hl/css/screen.css
new file mode 100644
index 0000000..7734dec
--- /dev/null
+++ b/c3hl/css/screen.css
@@ -0,0 +1,592 @@
+/* screen.css - MoinMoin Default Styles
+
+Copyright (c) 2001, 2002, 2003 by Juergen Hermann
+*/
+
+/* content styles */
+
+/* debug
+* {border: 1px dotted blue;}
+*/
+
+html {
+ background: #222;
+}
+
+body {
+ padding: 0;
+ border: 0;
+}
+
+#wrapper {
+ padding: 0;
+ border: 0;
+ width: 75%;
+ min-width: 850px;
+ max-width: 1200px;
+ margin: 1em auto;
+}
+
+/*a:link { color: #47f; text-decoration: none; }
+a:link:hover, a:link:active { text-decoration: underline; color: green; }
+a:visited { text-decoration: none; color: #04a;}
+a:visited:hover { text-decoration: none; color: red; }*/
+a:link { color: #c60; text-decoration: none; }
+a:visited { color: #c30; text-decoration: none;}
+a:link:hover, a:link:active, a:visited:hover { text-decoration: underline; }
+
+/*#credits a:link {
+ color: #c60;
+}
+
+#credits a:visited {
+ color: #c30;
+}
+
+#credits a:link:hover, #credits a:visited:hover {
+ text-decoration: underline;
+}*/
+
+a.nonexistent:link { color: #666 }
+a.nonexistent:hover { color: black; text-decoration: underline }
+
+a.download {
+ font-size: 120%;
+ letter-spacing: 0.05em;
+ font-weight: bold;
+ background: #E7E7E7;
+ border: 1px solid #9C9C9C;
+ padding: 0.5em;
+ text-align: center;
+}
+
+input {
+ /* does strange effect to button (text size becomes bigger when clicking)
+ font-size: 1em;
+ font-family: Arial, Lucida Grande, sans-serif;
+ */
+}
+
+textarea {
+ font-size: 1em;
+ font-family: monospace;
+}
+
+.disabled {
+ /* IE ignore disabled attribute, but at least show items in gray */
+ color: gray;
+}
+
+/* user interface styles */
+
+#header {
+ /*margin: 1px;
+ padding: 1px;*/
+ margin: 0;
+ vertical-align: bottom;
+ /*background: #e6eaf0;*/
+ background: #555;
+ position: relative;
+ /*line-height: 1.1em;*/
+}
+
+#logoright {
+ margin: 0;
+ padding: 0;
+ background: url(../img/Skyline_Right.png) no-repeat right bottom;
+}
+
+#logoleft {
+ background: url(../img/Skyline_Left.png) no-repeat left bottom;
+ margin: 0;
+ padding: 0;
+}
+
+#logo {
+ padding: 0.3em 0 20px 0;
+ margin: 0 140px -10px 0;
+ text-align: center;
+ font-size: 100px;
+ font-weight: bold;
+ font-family: sans-serif;
+}
+
+#logo a {
+ color: #888;
+ text-decoration: none;
+}
+
+#pagehead {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ white-space: nowrap;
+ background: #404040;
+ font-size: 0.82em;
+}
+
+#topnav {
+ float: left;
+ padding: 2px 1.5em;
+}
+
+#username {
+ text-align: right;
+ padding: 2px 1.5em;
+}
+
+#pagehead a:link, #pagehead a:visited {
+ color: #ee9000;
+}
+
+#pagehead a:link:hover, #pagehead a:visited:hover {
+ text-decoration: underline;
+}
+
+#pagehead a.nonexistent:link, #pagehead a.nonexistent:visited { color: #888 }
+#pagehead a.nonexistent:link:hover, #pagehead a.nonexistent:visited:hover { color: black; text-decoration: underline }
+
+
+/*#username form {
+ display: inline;
+}
+
+#username input {
+ display: inline;
+ padding: 0;
+ margin: 0;
+ border: none;
+ background: transparent;
+ color: blue;
+ font-size: 0.82em;
+ cursor: pointer;
+}
+
+#username input:hover {
+ color: red;
+}*/
+
+#searchform {
+ position: absolute;
+ top: -1.4em;
+ right: 1em;
+ /*margin: -6px 0.5em -1em 0.5em;*/
+ padding: 0;
+ font-size: 0.82em;
+ float: right;
+ clear: right;
+ text-align: right;
+}
+*[dir="rtl"] #searchform {
+ float: left;
+ clear: left;
+ text-align: left;
+}
+#searchform input {
+ font-size: 100%;
+ vertical-align: middle;
+}
+#pagetrail {
+ clear: right;
+ display: inline;
+ margin: 0 0.88em 0.25em 0.88em;
+ padding: 0;
+ font-size: 0.88em;
+}
+
+*[dir="rtl"] #pagetrail {
+ clear: left;
+}
+
+#interwiki {
+ font-size: 1em;
+}
+
+#locationline {
+ padding: 0;
+ font-size: 100%;
+ font-weight: normal;
+ margin: 0.25em 12px 5px 12px;
+ clear: right;
+}
+*[dir="rtl"] #locationline {
+ clear: left;
+}
+
+#pagelocation {
+ font-size: 1.5em;
+ letter-spacing: 0.05em;
+}
+
+
+*[dir="rtl"] #pagetrail span.sep {
+ visibility: hidden;
+}
+*[dir="rtl"] #pagetrail span.sep:after {
+ content: " « ";
+}
+
+#navibar {
+ clear: both; /* problem: clear: right; aligns nicely right of logo,
+ but lets it float high in the header, disconnected from ground */
+ display: block;
+ margin: 0;
+ padding: 0 10px;
+ font-size: 0.82em;
+ zoom: 1; /* for avoiding a gap between navibar and pageline on IE */
+}
+
+#navibar li {
+ float: left;
+ display: inline;
+ margin: -1.2em 2px 0 2px;
+ padding: 3px 6px;
+ /*border: 1px solid #acd;*/
+ border: 1px solid #aaa;
+ border-bottom: none;
+ white-space: nowrap;
+}
+
+*[dir="rtl"] #navibar li {
+ float: right;
+}
+
+#navibar li.wikilink {
+ background: white; /*url(../img/tab-wiki.png) repeat-x;*/
+}
+
+#navibar li.userlink {
+ background: #E6EAF0; /*url(../img/tab-user.png) repeat-x;*/
+}
+
+#navibar a, #navibar a:visited {
+ color: black;
+ text-decoration: none;
+}
+
+#navibar li.current a {
+ font-weight: bold;
+}
+
+#navibar li:hover {
+ /*background: #d6e4f9;*/
+ background: #bbb;
+}
+
+#navibar li.current, #navibar li.current:hover {
+ /*background: #81BBF2;*/ /* url(../img/tab-selected.png) repeat-x; */
+ background: #999;
+ /*border: 1px solid #4d7da9;
+ border-bottom: 1px solid #81bbf2;*/
+ border: 1px solid #333;
+ border-bottom: 1px solid #999;
+ margin-bottom: -1px;
+}
+
+#pageline {
+ clear: both;
+ margin: 0;
+ padding: 0;
+ width: 100%;
+ /* sync these values, line-height is needed for IE */
+ height: 4px;
+ line-height: 4px;
+ /*border-bottom: 1px solid #4d7da9;
+ border-top: 1px solid #4d7da9;*/
+ border-bottom: 1px solid #333;
+ border-top: 1px solid #333;
+ /*background: #81BBF2;*/
+ background: #999;
+}
+
+.editbar {
+ clear: both;
+ display: block;
+ margin: 0;
+ padding: 2px 8px;
+ /*background: #d6e4f9;*/
+ background: #ccc;
+ font-size: 0.8em;
+ /*border-bottom: 1px solid #4d7da9;
+ border-top: 1px solid #4d7da9;*/
+ border-bottom: 1px solid #666;
+ border-top: 1px solid #666;
+ margin-top: -1px;
+}
+
+.editbar form, .editbar form div {
+ display: inline;
+ margin: 0;
+}
+
+.editbar select {
+ font-size: 100%;
+ vertical-align: middle;
+}
+
+.editbar li {
+ display: inline;
+ padding: 0;
+ margin: 4px 6px;
+}
+
+.editbar a, .editbar a:visited {
+ color: #c30;
+}
+
+#message {
+ clear: both;
+ margin: 0;
+ padding: 5px 10px;
+ border-bottom: 1px solid #c9c9c9;
+ /*background: #E6EAF0;*/
+ background: #eee;
+}
+
+#message p {
+ margin: 5px 0;
+ padding: 0;
+ /* font-weight: bold; */
+}
+
+#message div.buttons {
+ font-weight: normal;
+}
+
+.dialog form {
+ margin: 0 15px;
+}
+
+.dialog td {
+ border: none;
+ padding: 5px;
+}
+
+.dialog td.label {
+ text-align: right;
+ font-weight: bold;
+ width: 25%;
+}
+
+*[dir="rtl"] .dialog td.label {
+ text-align: left;
+}
+
+.dialog td.content input {
+ width: 100%;
+}
+
+.calendar-include-date {
+ color: #666;
+ font-size: 80%;
+ text-align: right;
+ margin: 0;
+ padding: 0;
+}
+
+#pagewrapper {
+ background-color: white;
+ margin: 0;
+ padding: 2px 20px 20px 20px;
+}
+
+#parentlinks {
+ margin: 10px 20px 15px 20px;
+ padding: 3px;
+ float:left;
+ border: 1px solid #808080;
+}
+
+#page {
+ clear: both;
+ margin: 0;
+ padding: 0;
+
+ /* theses are some Firefox 1.5b1 specific extensions, see also the CSS3 draft.
+ -moz-column-width: 25em;
+ -moz-column-gap: 2em;
+ -moz-column-rule: solid black 0.3em; -- doesn't work yet with 1.5b1!
+
+ TODO: make text/gui editor NOT use #page css, we don't want columns there!
+ */
+}
+
+/* We use here dumb css1 ids because of IE suckiness */
+#editor-textarea, #editor-help {
+ font-family: monospace;
+ border: 1px solid #8cacbb;
+ color: black;
+ background-color: white;
+ padding: 3px;
+ width: 100%;
+ margin-top: 0.5em;
+}
+
+#editor-help {
+ font-size: small;
+ background-color: #EEEEFF;
+}
+
+#editor-comment {
+ font-size: 100%;
+ border: 1px solid #8cacbb;
+ color: black;
+ background-color: white;
+ vertical-align: middle;
+ padding: 1px;
+ display: inline;
+ width: 70%;
+}
+
+#preview, #previewbelow {
+ border: 1px solid #6C7680;
+ padding: 10px 30px 20px 30px;
+ background: url(../img/draft.png);
+ margin-top: 0.5em;
+}
+
+#textcha {
+ font-size: 100%;
+ margin-top: 0.5em;
+ border: 2px solid #FF8888;
+ color: black;
+ vertical-align: middle;
+ padding: 3px 2px;
+}
+
+#textcha-answer {
+ border: 2px solid #000000;
+ padding: 3px 2px;
+}
+
+input.button {
+ /*
+ border: 1px solid #8cacbb;
+ color: black;
+ background-color: #CCCCCC;
+ vertical-align: middle;
+ text-decoration: none;
+ font-size: 100%;
+ cursor: pointer;
+ margin: 2px;
+ padding: 1px;
+ display: inline;
+ */
+}
+
+#footer {
+ clear: both;
+ margin: 0;
+ padding: 0;
+}
+
+#credits, #version, #timings{
+ margin: 5px 10px;
+ padding: 0;
+ text-align: center;
+ font-size: 0.82em;
+ color: #6C7680;
+}
+
+#credits {
+ margin-top: 1em;
+}
+
+#credits li, #timings li {
+ display: inline;
+ padding: 0 2px;
+ margin: 0 4px;
+}
+
+#credits a:link {
+ color: #c60;
+}
+
+#credits a:visited {
+ color: #c30;
+}
+
+#credits a:link:hover, #credits a:visited:hover {
+ text-decoration: underline;
+}
+
+#credits img {
+ vertical-align: middle;
+}
+
+#ipinfo {
+ margin-top: 0.8em;
+ color: #ccc;
+ text-align: center;
+ font-size: 0.82em;
+}
+
+.diff {
+ width:99%;
+}
+
+.diff-header {
+ font-weight: bold;
+}
+
+.diff-title {
+ background-color: #C0C0C0;
+}
+
+.diff-added {
+ background-color: #E0FFE0;
+ vertical-align: sub;
+ width: 50%;
+}
+
+.diff-removed {
+ background-color: #FFFFE0;
+ vertical-align: sub;
+ width: 50%;
+}
+
+.diff-added span {
+ background-color: #80FF80;
+}
+
+.diff-removed span {
+ background-color: #FFFF80;
+}
+
+td.diff-info {
+ vertical-align: top;
+}
+
+div.diff-info {
+ white-space: nowrap;
+}
+
+div.diff-info-rev-comment span.diff-info-value {
+ white-space: normal;
+}
+
+div.diff-info-header {
+ background-color: #E8E8E8;
+ width: 100%;
+ padding: 0.25em 0.5em;
+ margin: -0.25em -0.5em;
+ margin-bottom: 0.25em;
+ text-align: center;
+}
+
+td.diff-same {
+ text-align: center;
+ border: 0;
+}
+
+table.navigation {
+ float: right;
+ margin: 2px;
+}
+
+#openididentifier {
+ background: url(../../common/openid.png) no-repeat;
+ background-position: 0 50%;
+ padding-left: 18px;
+}
diff --git a/c3hl/img/PythonPowered.png b/c3hl/img/PythonPowered.png
new file mode 100644
index 0000000..d9d9e6f
--- /dev/null
+++ b/c3hl/img/PythonPowered.png
Binary files differ
diff --git a/c3hl/img/Skyline_Left.png b/c3hl/img/Skyline_Left.png
new file mode 100644
index 0000000..0abcd39
--- /dev/null
+++ b/c3hl/img/Skyline_Left.png
Binary files differ
diff --git a/c3hl/img/Skyline_Right.png b/c3hl/img/Skyline_Right.png
new file mode 100644
index 0000000..5ef19d0
--- /dev/null
+++ b/c3hl/img/Skyline_Right.png
Binary files differ
diff --git a/c3hl/img/admon-caution.png b/c3hl/img/admon-caution.png
new file mode 100644
index 0000000..750ae97
--- /dev/null
+++ b/c3hl/img/admon-caution.png
Binary files differ
diff --git a/c3hl/img/admon-important.png b/c3hl/img/admon-important.png
new file mode 100644
index 0000000..c5726d5
--- /dev/null
+++ b/c3hl/img/admon-important.png
Binary files differ
diff --git a/c3hl/img/admon-note.png b/c3hl/img/admon-note.png
new file mode 100644
index 0000000..d01b8c6
--- /dev/null
+++ b/c3hl/img/admon-note.png
Binary files differ
diff --git a/c3hl/img/admon-tip.png b/c3hl/img/admon-tip.png
new file mode 100644
index 0000000..2ac5747
--- /dev/null
+++ b/c3hl/img/admon-tip.png
Binary files differ
diff --git a/c3hl/img/admon-warning.png b/c3hl/img/admon-warning.png
new file mode 100644
index 0000000..f5c7a6f
--- /dev/null
+++ b/c3hl/img/admon-warning.png
Binary files differ
diff --git a/c3hl/img/alert.png b/c3hl/img/alert.png
new file mode 100644
index 0000000..06148e8
--- /dev/null
+++ b/c3hl/img/alert.png
Binary files differ
diff --git a/c3hl/img/angry.png b/c3hl/img/angry.png
new file mode 100644
index 0000000..1189598
--- /dev/null
+++ b/c3hl/img/angry.png
Binary files differ
diff --git a/c3hl/img/attach.png b/c3hl/img/attach.png
new file mode 100644
index 0000000..9a34c9a
--- /dev/null
+++ b/c3hl/img/attach.png
Binary files differ
diff --git a/c3hl/img/attention.png b/c3hl/img/attention.png
new file mode 100644
index 0000000..b9704e6
--- /dev/null
+++ b/c3hl/img/attention.png
Binary files differ
diff --git a/c3hl/img/biggrin.png b/c3hl/img/biggrin.png
new file mode 100644
index 0000000..8519e02
--- /dev/null
+++ b/c3hl/img/biggrin.png
Binary files differ
diff --git a/c3hl/img/checkmark.png b/c3hl/img/checkmark.png
new file mode 100644
index 0000000..2fd3819
--- /dev/null
+++ b/c3hl/img/checkmark.png
Binary files differ
diff --git a/c3hl/img/devil.png b/c3hl/img/devil.png
new file mode 100644
index 0000000..1fa14fa
--- /dev/null
+++ b/c3hl/img/devil.png
Binary files differ
diff --git a/c3hl/img/draft.png b/c3hl/img/draft.png
new file mode 100644
index 0000000..6b625f4
--- /dev/null
+++ b/c3hl/img/draft.png
Binary files differ
diff --git a/c3hl/img/frown.png b/c3hl/img/frown.png
new file mode 100644
index 0000000..0f05f25
--- /dev/null
+++ b/c3hl/img/frown.png
Binary files differ
diff --git a/c3hl/img/icon-error.png b/c3hl/img/icon-error.png
new file mode 100644
index 0000000..ab6808f
--- /dev/null
+++ b/c3hl/img/icon-error.png
Binary files differ
diff --git a/c3hl/img/icon-info.png b/c3hl/img/icon-info.png
new file mode 100644
index 0000000..e8fbc66
--- /dev/null
+++ b/c3hl/img/icon-info.png
Binary files differ
diff --git a/c3hl/img/idea.png b/c3hl/img/idea.png
new file mode 100644
index 0000000..8eeebdd
--- /dev/null
+++ b/c3hl/img/idea.png
Binary files differ
diff --git a/c3hl/img/moin-action.png b/c3hl/img/moin-action.png
new file mode 100644
index 0000000..46ad8a0
--- /dev/null
+++ b/c3hl/img/moin-action.png
Binary files differ
diff --git a/c3hl/img/moin-attach.png b/c3hl/img/moin-attach.png
new file mode 100644
index 0000000..e9199b0
--- /dev/null
+++ b/c3hl/img/moin-attach.png
Binary files differ
diff --git a/c3hl/img/moin-bottom.png b/c3hl/img/moin-bottom.png
new file mode 100644
index 0000000..f4014f3
--- /dev/null
+++ b/c3hl/img/moin-bottom.png
Binary files differ
diff --git a/c3hl/img/moin-conflict.png b/c3hl/img/moin-conflict.png
new file mode 100644
index 0000000..d7cffa5
--- /dev/null
+++ b/c3hl/img/moin-conflict.png
Binary files differ
diff --git a/c3hl/img/moin-deleted.png b/c3hl/img/moin-deleted.png
new file mode 100644
index 0000000..0532937
--- /dev/null
+++ b/c3hl/img/moin-deleted.png
Binary files differ
diff --git a/c3hl/img/moin-diff.png b/c3hl/img/moin-diff.png
new file mode 100644
index 0000000..283843d
--- /dev/null
+++ b/c3hl/img/moin-diff.png
Binary files differ
diff --git a/c3hl/img/moin-download.png b/c3hl/img/moin-download.png
new file mode 100644
index 0000000..875c55d
--- /dev/null
+++ b/c3hl/img/moin-download.png
Binary files differ
diff --git a/c3hl/img/moin-edit.png b/c3hl/img/moin-edit.png
new file mode 100644
index 0000000..d926dd4
--- /dev/null
+++ b/c3hl/img/moin-edit.png
Binary files differ
diff --git a/c3hl/img/moin-email.png b/c3hl/img/moin-email.png
new file mode 100644
index 0000000..9be90c6
--- /dev/null
+++ b/c3hl/img/moin-email.png
Binary files differ
diff --git a/c3hl/img/moin-ftp.png b/c3hl/img/moin-ftp.png
new file mode 100644
index 0000000..18b7d24
--- /dev/null
+++ b/c3hl/img/moin-ftp.png
Binary files differ
diff --git a/c3hl/img/moin-help.png b/c3hl/img/moin-help.png
new file mode 100644
index 0000000..61cd256
--- /dev/null
+++ b/c3hl/img/moin-help.png
Binary files differ
diff --git a/c3hl/img/moin-home.png b/c3hl/img/moin-home.png
new file mode 100644
index 0000000..a0f8f21
--- /dev/null
+++ b/c3hl/img/moin-home.png
Binary files differ
diff --git a/c3hl/img/moin-icon.png b/c3hl/img/moin-icon.png
new file mode 100644
index 0000000..a644f24
--- /dev/null
+++ b/c3hl/img/moin-icon.png
Binary files differ
diff --git a/c3hl/img/moin-info.png b/c3hl/img/moin-info.png
new file mode 100644
index 0000000..ef68f64
--- /dev/null
+++ b/c3hl/img/moin-info.png
Binary files differ
diff --git a/c3hl/img/moin-inter.png b/c3hl/img/moin-inter.png
new file mode 100644
index 0000000..010a249
--- /dev/null
+++ b/c3hl/img/moin-inter.png
Binary files differ
diff --git a/c3hl/img/moin-jabber.png b/c3hl/img/moin-jabber.png
new file mode 100644
index 0000000..f6e8325
--- /dev/null
+++ b/c3hl/img/moin-jabber.png
Binary files differ
diff --git a/c3hl/img/moin-new.png b/c3hl/img/moin-new.png
new file mode 100644
index 0000000..522fc34
--- /dev/null
+++ b/c3hl/img/moin-new.png
Binary files differ
diff --git a/c3hl/img/moin-news.png b/c3hl/img/moin-news.png
new file mode 100644
index 0000000..a9850ee
--- /dev/null
+++ b/c3hl/img/moin-news.png
Binary files differ
diff --git a/c3hl/img/moin-parent.png b/c3hl/img/moin-parent.png
new file mode 100644
index 0000000..590234a
--- /dev/null
+++ b/c3hl/img/moin-parent.png
Binary files differ
diff --git a/c3hl/img/moin-print.png b/c3hl/img/moin-print.png
new file mode 100644
index 0000000..93be1b1
--- /dev/null
+++ b/c3hl/img/moin-print.png
Binary files differ
diff --git a/c3hl/img/moin-raw.png b/c3hl/img/moin-raw.png
new file mode 100644
index 0000000..2cbcc71
--- /dev/null
+++ b/c3hl/img/moin-raw.png
Binary files differ
diff --git a/c3hl/img/moin-readonly.png b/c3hl/img/moin-readonly.png
new file mode 100644
index 0000000..0466619
--- /dev/null
+++ b/c3hl/img/moin-readonly.png
Binary files differ
diff --git a/c3hl/img/moin-renamed.png b/c3hl/img/moin-renamed.png
new file mode 100644
index 0000000..124d375
--- /dev/null
+++ b/c3hl/img/moin-renamed.png
Binary files differ
diff --git a/c3hl/img/moin-rss.png b/c3hl/img/moin-rss.png
new file mode 100644
index 0000000..32272be
--- /dev/null
+++ b/c3hl/img/moin-rss.png
Binary files differ
diff --git a/c3hl/img/moin-search.png b/c3hl/img/moin-search.png
new file mode 100644
index 0000000..fd7f0b0
--- /dev/null
+++ b/c3hl/img/moin-search.png
Binary files differ
diff --git a/c3hl/img/moin-show.png b/c3hl/img/moin-show.png
new file mode 100644
index 0000000..613f136
--- /dev/null
+++ b/c3hl/img/moin-show.png
Binary files differ
diff --git a/c3hl/img/moin-subscribe.png b/c3hl/img/moin-subscribe.png
new file mode 100644
index 0000000..33e6e31
--- /dev/null
+++ b/c3hl/img/moin-subscribe.png
Binary files differ
diff --git a/c3hl/img/moin-telnet.png b/c3hl/img/moin-telnet.png
new file mode 100644
index 0000000..619db11
--- /dev/null
+++ b/c3hl/img/moin-telnet.png
Binary files differ
diff --git a/c3hl/img/moin-top.png b/c3hl/img/moin-top.png
new file mode 100644
index 0000000..314ae47
--- /dev/null
+++ b/c3hl/img/moin-top.png
Binary files differ
diff --git a/c3hl/img/moin-unsubscribe.png b/c3hl/img/moin-unsubscribe.png
new file mode 100644
index 0000000..9e24ce2
--- /dev/null
+++ b/c3hl/img/moin-unsubscribe.png
Binary files differ
diff --git a/c3hl/img/moin-up.png b/c3hl/img/moin-up.png
new file mode 100644
index 0000000..5c00095
--- /dev/null
+++ b/c3hl/img/moin-up.png
Binary files differ
diff --git a/c3hl/img/moin-updated.png b/c3hl/img/moin-updated.png
new file mode 100644
index 0000000..38b1e10
--- /dev/null
+++ b/c3hl/img/moin-updated.png
Binary files differ
diff --git a/c3hl/img/moin-www.png b/c3hl/img/moin-www.png
new file mode 100644
index 0000000..ac5957a
--- /dev/null
+++ b/c3hl/img/moin-www.png
Binary files differ
diff --git a/c3hl/img/ohwell.png b/c3hl/img/ohwell.png
new file mode 100644
index 0000000..e35daf1
--- /dev/null
+++ b/c3hl/img/ohwell.png
Binary files differ
diff --git a/c3hl/img/prio1.png b/c3hl/img/prio1.png
new file mode 100644
index 0000000..296fcaa
--- /dev/null
+++ b/c3hl/img/prio1.png
Binary files differ
diff --git a/c3hl/img/prio2.png b/c3hl/img/prio2.png
new file mode 100644
index 0000000..850965c
--- /dev/null
+++ b/c3hl/img/prio2.png
Binary files differ
diff --git a/c3hl/img/prio3.png b/c3hl/img/prio3.png
new file mode 100644
index 0000000..0649d2a
--- /dev/null
+++ b/c3hl/img/prio3.png
Binary files differ
diff --git a/c3hl/img/redface.png b/c3hl/img/redface.png
new file mode 100644
index 0000000..2ea4da9
--- /dev/null
+++ b/c3hl/img/redface.png
Binary files differ
diff --git a/c3hl/img/sad.png b/c3hl/img/sad.png
new file mode 100644
index 0000000..a86e6f9
--- /dev/null
+++ b/c3hl/img/sad.png
Binary files differ
diff --git a/c3hl/img/smile.png b/c3hl/img/smile.png
new file mode 100644
index 0000000..361d705
--- /dev/null
+++ b/c3hl/img/smile.png
Binary files differ
diff --git a/c3hl/img/smile2.png b/c3hl/img/smile2.png
new file mode 100644
index 0000000..cc4bea9
--- /dev/null
+++ b/c3hl/img/smile2.png
Binary files differ
diff --git a/c3hl/img/smile3.png b/c3hl/img/smile3.png
new file mode 100644
index 0000000..4cf923e
--- /dev/null
+++ b/c3hl/img/smile3.png
Binary files differ
diff --git a/c3hl/img/smile4.png b/c3hl/img/smile4.png
new file mode 100644
index 0000000..96f3af6
--- /dev/null
+++ b/c3hl/img/smile4.png
Binary files differ
diff --git a/c3hl/img/star_off.png b/c3hl/img/star_off.png
new file mode 100644
index 0000000..2f99cae
--- /dev/null
+++ b/c3hl/img/star_off.png
Binary files differ
diff --git a/c3hl/img/star_on.png b/c3hl/img/star_on.png
new file mode 100644
index 0000000..6a64f93
--- /dev/null
+++ b/c3hl/img/star_on.png
Binary files differ
diff --git a/c3hl/img/thumbs-up.png b/c3hl/img/thumbs-up.png
new file mode 100644
index 0000000..ca277c6
--- /dev/null
+++ b/c3hl/img/thumbs-up.png
Binary files differ
diff --git a/c3hl/img/tired.png b/c3hl/img/tired.png
new file mode 100644
index 0000000..077c98d
--- /dev/null
+++ b/c3hl/img/tired.png
Binary files differ
diff --git a/c3hl/img/tongue.png b/c3hl/img/tongue.png
new file mode 100644
index 0000000..7215ac7
--- /dev/null
+++ b/c3hl/img/tongue.png
Binary files differ
diff --git a/moin.fcgi b/moin.fcgi
new file mode 100755
index 0000000..c15d47d
--- /dev/null
+++ b/moin.fcgi
@@ -0,0 +1,88 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+"""
+ MoinMoin - CGI/FCGI Driver script
+
+ @copyright: 2000-2005 by Juergen Hermann <jh@web.de>,
+ 2008 by MoinMoin:ThomasWaldmann,
+ 2008 by MoinMoin:FlorianKrupicka,
+ 2010 by MoinMoin:RadomirDopieralski
+ @license: GNU GPL, see COPYING for details.
+"""
+
+import sys, os
+
+# a) Configuration of Python's code search path
+# If you already have set up the PYTHONPATH environment variable for the
+# stuff you see below, you don't need to do a1) and a2).
+
+# a1) Path of the directory where the MoinMoin code package is located.
+# Needed if you installed with --prefix=PREFIX or you didn't use setup.py.
+#sys.path.insert(0, 'PREFIX/lib/python2.3/site-packages')
+
+# a2) Path of the directory where wikiconfig.py / farmconfig.py is located.
+# See wiki/config/... for some sample config files.
+#sys.path.insert(0, '/path/to/wikiconfigdir')
+#sys.path.insert(0, '/path/to/farmconfigdir')
+
+
+# b) Configuration of moin's logging
+# If you have set up MOINLOGGINGCONF environment variable, you don't need this!
+# You also don't need this if you are happy with the builtin defaults.
+# See wiki/config/logging/... for some sample config files.
+from MoinMoin import log
+#log.load_config('/path/to/logging_configuration_file')
+logging = log.getLogger(__name__)
+
+## this works around a bug in flup's CGI autodetection (as of flup 1.0.1):
+#os.environ['FCGI_FORCE_CGI'] = 'Y' # 'Y' for (slow) CGI, 'N' for FCGI
+
+# Creating the WSGI application
+# use shared=True to have moin serve the builtin static docs
+# use shared=False to not have moin serve static docs
+# use shared='/my/path/to/htdocs' to serve static docs from that path
+from MoinMoin.web.serving import make_application
+app = make_application(shared=False) # <-- adapt here as needed
+
+# Is fixing the script name needed?
+# Use None if your url looks like http://domain/wiki/moin.fcgi
+# Use '' if you use rewriting to run at http://domain/
+# Use '/mywiki' if you use rewriting to run at http://domain/mywiki/
+#fix_script_name = '' # <-- adapt here as needed
+#
+#if fix_script_name is None:
+# application = app
+#else:
+# def script_name_fixer(env, start):
+# env['SCRIPT_NAME'] = fix_script_name
+# return app(env, start)
+# application = script_name_fixer
+
+from urllib import unquote
+def script_name_fixer(env, start):
+ env['PATH_INFO'] = unquote(env['REQUEST_URI'].split('?', 1)[0])
+ env['SCRIPT_NAME'] = ''
+ return app(env, start)
+application = script_name_fixer
+
+# CGI with Apache2 on Windows (maybe other combinations also) has trouble with
+# URLs of non-ASCII pagenames. Use True to enable middleware that tries to fix.
+fix_apache_win32 = False # <-- adapt here as needed
+
+if fix_apache_win32:
+ from werkzeug.contrib.fixers import PathInfoFromRequestUriFix
+ application = PathInfoFromRequestUriFix(application)
+
+
+## Choose your server mode (threaded, forking or single-thread)
+try:
+ # v-- adapt here as needed
+ from flup.server.fcgi import WSGIServer
+# from flup.server.fcgi_fork import WSGIServer
+# from flup.server.fcgi_single import WSGIServer
+except ImportError:
+ logging.warning("No flup-package installed, only basic CGI support is available.")
+ from MoinMoin.web._fallback_cgi import WSGIServer
+
+WSGIServer(application).run()
+
diff --git a/wikiconfig.py b/wikiconfig.py
new file mode 100644
index 0000000..a748dce
--- /dev/null
+++ b/wikiconfig.py
@@ -0,0 +1,184 @@
+# -*- coding: utf-8 -*-
+# IMPORTANT! This encoding (charset) setting MUST be correct! If you live in a
+# western country and you don't know that you use utf-8, you probably want to
+# use iso-8859-1 (or some other iso charset). If you use utf-8 (a Unicode
+# encoding) you MUST use: coding: utf-8
+# That setting must match the encoding your editor uses when you modify the
+# settings below. If it does not, special non-ASCII chars will be wrong.
+
+"""
+ MoinMoin - Configuration for a single wiki
+
+ If you run a single wiki only, you can omit the farmconfig.py config
+ file and just use wikiconfig.py - it will be used for every request
+ we get in that case.
+
+ Note that there are more config options than you'll find in
+ the version of this file that is installed by default; see
+ the module MoinMoin.config.multiconfig for a full list of names and their
+ default values.
+
+ Also, the URL http://moinmo.in/HelpOnConfiguration has
+ a list of config options.
+
+ ** Please do not use this file for a wiki farm. Use the sample file
+ from the wikifarm directory instead! **
+"""
+
+import os
+
+from MoinMoin.config import multiconfig, url_prefix_static
+from MoinMoin.auth import MoinAuth
+from MoinMoin.auth.sslclientcertlighty import SSLClientCertLightyAuth
+
+
+class Config(multiconfig.DefaultConfig):
+
+ # Critical setup ---------------------------------------------------
+
+ # Directory containing THIS wikiconfig:
+ #wikiconfig_dir = os.path.abspath(os.path.dirname(__file__))
+ wikiconfig_dir = '/var/www/www.ccchl.de'
+
+ # We assume that this config file is located in the instance directory, like:
+ # instance_dir/
+ # wikiconfig.py
+ # data/
+ # underlay/
+ # If that's not true, feel free to just set instance_dir to the real path
+ # where data/ and underlay/ is located:
+ #instance_dir = '/where/ever/your/instance/is'
+ instance_dir = wikiconfig_dir
+
+ # Where your own wiki pages are (make regular backups of this directory):
+ data_dir = os.path.join(instance_dir, 'data', '') # path with trailing /
+
+ # Where system and help pages are (you may exclude this from backup):
+ data_underlay_dir = os.path.join(instance_dir, 'underlay', '') # path with trailing /
+
+ # The URL prefix we use to access the static stuff (img, css, js).
+ # Note: moin runs a static file server at url_prefix_static path (relative
+ # to the script url).
+ # If you run your wiki script at the root of your site (/), just do NOT
+ # use this setting and it will automatically work.
+ # If you run your wiki script at /mywiki, you need to use this:
+ url_prefix_static = '/static'
+
+
+ # Wiki identity ----------------------------------------------------
+
+ # Site name, used by default for wiki name-logo [Unicode]
+ sitename = u'CCC-HL'
+
+ # Wiki logo. You can use an image, text or both. [Unicode]
+ # For no logo or text, use '' - the default is to show the sitename.
+ # See also url_prefix setting below!
+ logo_string = u'<img src="%s/Logo.png" alt="CCC-HL ‒ Chaostreff Lübeck">' % url_prefix_static
+
+ # name of entry page / front page [Unicode], choose one of those:
+
+ # a) if most wiki content is in a single language
+ page_front_page = u"Hauptseite"
+
+ # b) if wiki content is maintained in many languages
+ #page_front_page = u"FrontPage"
+
+ # The interwiki name used in interwiki links
+ #interwikiname = u'UntitledWiki'
+ # Show the interwiki name (and link it to page_front_page) in the Theme,
+ # nice for farm setups or when your logo does not show the wiki's name.
+ #show_interwiki = 1
+
+
+ # Security ----------------------------------------------------------
+
+ auth = [MoinAuth(), SSLClientCertLightyAuth(name_key = False)]
+ clientcerthost = 'www.ccchl.de:423'
+
+ # This is checked by some rather critical and potentially harmful actions,
+ # like despam or PackageInstaller action:
+ superuser = [u"NeoRaider", u"magu", ]
+
+ # IMPORTANT: grant yourself admin rights! replace YourName with
+ # your user name. See HelpOnAccessControlLists for more help.
+ # All acl_rights_xxx options must use unicode [Unicode]
+ acl_rights_before = u"AdminGroup:read,write,delete,revert,admin"
+ acl_rights_default = u"Known:read,write All:read"
+
+ # The default (ENABLED) password_checker will keep users from choosing too
+ # short or too easy passwords. If you don't like this and your site has
+ # rather low security requirements, feel free to DISABLE the checker by:
+ #password_checker = None # None means "don't do any password strength checks"
+
+ # Link spam protection for public wikis (Uncomment to enable)
+ # Needs a reliable internet connection.
+ #from MoinMoin.security.antispam import SecurityPolicy
+
+
+ # Mail --------------------------------------------------------------
+
+ # Configure to enable subscribing to pages (disabled by default)
+ # or sending forgotten passwords.
+
+ # SMTP server, e.g. "mail.provider.com" (None to disable mail)
+ #mail_smarthost = ""
+
+ # The return address, e.g u"Jürgen Wiki <noreply@mywiki.org>" [Unicode]
+ #mail_from = u""
+
+ # "user pwd" if you need to use SMTP AUTH
+ #mail_login = ""
+
+
+ # User interface ----------------------------------------------------
+
+ # Add your wikis important pages at the end. It is not recommended to
+ # remove the default links. Leave room for user links - don't use
+ # more than 6 short items.
+ # You MUST use Unicode strings here, but you need not use localized
+ # page names for system and help pages, those will be used automatically
+ # according to the user selected language. [Unicode]
+ navi_bar = [
+ # If you want to show your page_front_page here:
+ u'%(page_front_page)s',
+ u'Ãœber uns',
+ u'Projekte',
+ ]
+
+ topnav = [
+ u'AktuelleÄnderungen',
+ u'SeiteFinden',
+ u'Impressum',
+ ]
+
+ # The default theme anonymous or new users get
+ theme_default = 'c3hl'
+ theme_force = True
+
+
+ # Language options --------------------------------------------------
+
+ # See http://moinmo.in/ConfigMarket for configuration in
+ # YOUR language that other people contributed.
+
+ # The main wiki language, set the direction of the wiki pages
+ language_default = 'de'
+
+ # the following regexes should match the complete name when used in free text
+ # the group 'all' shall match all, while the group 'key' shall match the key only
+ # e.g. CategoryFoo -> group 'all' == CategoryFoo, group 'key' == Foo
+ # moin's code will add ^ / $ at beginning / end when needed
+ # You must use Unicode strings here [Unicode]
+ page_category_regex = ur'(?P<all>Kategorie(?P<key>(?!Template)\S+))'
+ page_dict_regex = ur'(?P<all>(?P<key>\S+)Dict)'
+ page_group_regex = ur'(?P<all>(?P<key>\S+)Group)'
+ page_template_regex = ur'(?P<all>(?P<key>\S+)Template)'
+
+
+ # Content options ---------------------------------------------------
+
+ # Show users hostnames in RecentChanges
+ show_hosts = 0
+
+ # Enable graphical charts, requires gdchart.
+ #chart_options = {'width': 600, 'height': 300}