1 # -*- coding: iso-8859-1 -*-
3 Evolution Events, website theme
5 This theme is meant for wiki's that are meant to function as a website,
6 meaning nothing fancy and wiki-ish (at least when you're not logged in).
8 This theme is meant to be subclassed. Subclasses should at least define a
9 name, and possibly override other stuff.
12 from MoinMoin.theme import ThemeBase
13 from MoinMoin.Page import Page
14 from MoinMoin import wikiutil
16 class SiteTheme(ThemeBase):
19 if self.request.user.valid:
20 return ThemeBase.editbar(self, d)
24 def searchform(self, d):
25 if self.request.user.valid:
26 return ThemeBase.searchform(self, d)
31 if self.request.user.valid:
32 return ThemeBase.navibar(self, d)
36 def header(self, d, **kw):
37 """ Assemble wiki header
39 @param d: parameter dictionary
41 @return: page header html
44 # Pre header custom html
45 self.emit_custom_html(self.cfg.page_header1),
52 #u'<div id="locationline">',
57 #u'<hr id="pageline">',
58 #u'<div id="pageline"><hr style="display:none;"></div>',
62 # Post header custom html (not recommended)
63 self.emit_custom_html(self.cfg.page_header2),
71 return u'\n'.join(html)
73 def editorheader(self, d, **kw):
74 """ Assemble wiki header for editor
76 @param d: parameter dictionary
78 @return: page header html
81 # Pre header custom html
82 self.emit_custom_html(self.cfg.page_header1),
89 # Post header custom html (not recommended)
90 self.emit_custom_html(self.cfg.page_header2),
96 return u'\n'.join(html)
98 def footer(self, d, **keywords):
99 """ Assemble wiki footer
101 @param d: parameter dictionary
104 @return: page footer html
111 # Pre footer custom html (not recommended!)
112 self.emit_custom_html(self.cfg.page_footer1),
115 u'<div id="footer">',
121 #self.showversion(d, **keywords),
124 # Post footer custom html
125 self.emit_custom_html(self.cfg.page_footer2),
127 return u'\n'.join(html)
130 """ Assemble a "main" menu
132 @param d: parameter dictionary
136 items = Page(self.request, 'Site/Menu').data.split('\n')
138 html = '<ul id="menubar">'
141 if (not item.startswith("#")):
142 (pagename, link) = self.splitNavilink(item)
143 html = html + ("<li class=\"menulink\">%s</li>" % link)
145 html = html + '</ul>'
149 def theme_script(self, name):
150 """ Format script html from this theme's static dir """
151 src = '%s/%s/js/%s.js' % (self.request.cfg.url_prefix_static, self.name, name)
152 return '<script type="text/javascript" src="%s"></script>' % src
154 def pageinfo(self, page):
155 """ Output page name and "last modified". This overwrites the pageinfo
156 from ThemeBase to hide the username, which is useless and always
157 produces a link to the non-existing homepage of the last editor. """
158 _ = self.request.getText
160 if self.shouldShowPageinfo(page):
161 info = page.lastEditInfo()
163 info = _("last modified %(time)s") % info
164 pagename = page.page_name
165 info = "%s (%s)" % (wikiutil.escape(pagename), info)
166 html = '<p id="pageinfo" class="info"%(lang)s>%(info)s</p>\n' % {
167 'lang': self.ui_lang_attr(),
172 def startPage(self, d):
173 html = ThemeBase.startPage(self)
174 if d['page'].page_name != 'Site':
175 html += u'<div id="pagetop"></div>\n'
176 html += u'<div id="pagemiddle">'
179 def endPage(self, d):
180 if d['page'].page_name != 'Site':
181 html = u'</div><!-- #pagemiddle -->'
182 html += u'<div id=pagebottom></div>'
186 #html += ThemeBase.endPage(self)
189 def execute(request):
191 Generate and return a theme object
193 @param request: the request object
195 @return: Theme object
197 return Theme(request)
199 # vim: set sw=4 sts=4 expandtab: