125 lines
3.2 KiB
Python
125 lines
3.2 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
MoinMoin monobook theme.
|
|
|
|
Author: Antoine Durand-Gasselin <adg@crans.org>
|
|
"""
|
|
|
|
import datetime
|
|
from MoinMoin.theme import ThemeBase
|
|
|
|
class Theme(ThemeBase):
|
|
|
|
name = "crans"
|
|
today = datetime.date.today()
|
|
def wikipanel(self, d):
|
|
""" Create wiki panel """
|
|
_ = self.request.getText
|
|
html = [
|
|
u'<div class="sidepanel">',
|
|
u'<h1>%s</h1>' % _("Wiki"),
|
|
self.navibar(d),
|
|
u'</div>',
|
|
]
|
|
return u'\n'.join(html)
|
|
|
|
def pagepanel(self, d):
|
|
""" Create page panel """
|
|
_ = self.request.getText
|
|
if self.shouldShowEditbar(d['page']):
|
|
html = [
|
|
u'<div class="sidepanel">',
|
|
u'<h1>%s</h1>' % _("Page"),
|
|
self.editbar(d),
|
|
u'</div>',
|
|
]
|
|
return u'\n'.join(html)
|
|
return ''
|
|
|
|
def userpanel(self, d):
|
|
""" Create user panel """
|
|
_ = self.request.getText
|
|
|
|
html = [
|
|
u'<div class="sidepanel">',
|
|
u'<h1>%s</h1>' % _("User"),
|
|
self.username(d),
|
|
u'</div>'
|
|
]
|
|
return u'\n'.join(html)
|
|
|
|
def header(self, d):
|
|
"""
|
|
Assemble page header
|
|
|
|
@param d: parameter dictionary
|
|
@rtype: string
|
|
@return: page header html
|
|
"""
|
|
_ = self.request.getText
|
|
|
|
if self.today.month == 10 and self.today.day == 31:
|
|
x_class = 'class="halloween"'
|
|
elif self.today.month == 12 and self.today.day == 24:
|
|
x_class = 'class="noel"'
|
|
elif self.today.month == 4 and self.today.day ==1:
|
|
x_class = 'class="april_fool"'
|
|
else: x_class = ''
|
|
|
|
html = [
|
|
# Custom html above header
|
|
self.emit_custom_html(self.cfg.page_header1),
|
|
|
|
u'<div id="titleBar">',
|
|
u'<h1 id="title" %s>' % x_class, self.title(d), u'</h1>',
|
|
u'</div>',
|
|
self.msg(d),
|
|
self.startPage()
|
|
]
|
|
|
|
return u'\n'.join(html)
|
|
|
|
editorheader = header
|
|
|
|
def footer(self, d, **keywords):
|
|
""" Assemble wiki footer
|
|
|
|
@param d: parameter dictionary
|
|
@keyword ...:...
|
|
@rtype: unicode
|
|
@return: page footer html
|
|
"""
|
|
|
|
page = d['page']
|
|
|
|
html = [
|
|
self.pageinfo(page),
|
|
self.endPage(),
|
|
|
|
# Sidebar
|
|
u'<div id="rightSidebar">',
|
|
self.userpanel(d), self.wikipanel(d), self.pagepanel(d),
|
|
self.searchform(d), self.credits(d), self.showversion(d, **keywords),
|
|
u'</div>',
|
|
|
|
# # Pre footer custom html (not recommended!)
|
|
# self.emit_custom_html(self.cfg.page_footer1),
|
|
#
|
|
# # Footer
|
|
# u'<div id="footer">',
|
|
# u'</div>',
|
|
#
|
|
# # Post footer custom html
|
|
# self.emit_custom_html(self.cfg.page_footer2),
|
|
]
|
|
return u'\n'.join(html)
|
|
|
|
def execute(request):
|
|
""" Generate and return a theme object
|
|
|
|
@param request: the request object
|
|
@rtype: MoinTheme
|
|
@return: Theme object
|
|
"""
|
|
return Theme(request)
|