themes: Remove some unused code.
[matthijs/projects/wipi.git] / plugin / theme / site.py
1 # -*- coding: iso-8859-1 -*-
2 """
3     Evolution Events, website theme
4
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).
7
8     This theme is meant to be subclassed. Subclasses should at least define a
9     name, and possibly override other stuff.
10 """
11
12 from MoinMoin.theme import ThemeBase
13 from MoinMoin.Page import Page
14 from MoinMoin import wikiutil
15
16 class SiteTheme(ThemeBase):
17
18     def editbar(self, d):
19         if self.request.user.valid:
20             return ThemeBase.editbar(self, d)
21         else:
22             return ''
23
24     def searchform(self, d):
25         if self.request.user.valid:
26             return ThemeBase.searchform(self, d)
27         else:
28             return ''
29     
30     def navibar(self, d):
31         if self.request.user.valid:
32             return ThemeBase.navibar(self, d)
33         else:
34             return ''
35
36     def header(self, d, **kw):
37         """ Assemble wiki header
38         
39         @param d: parameter dictionary
40         @rtype: unicode
41         @return: page header html
42         """
43         html = [
44             # Pre header custom html
45             self.emit_custom_html(self.cfg.page_header1),
46
47             # Header
48             u'<div id="header">',
49             self.logo(),
50             self.menu(d),
51             #self.username(d),
52             #u'<div id="locationline">',
53             #self.interwiki(d),
54             #self.title(d),
55             #u'</div>',
56             #self.navibar(d),
57             #u'<hr id="pageline">',
58             #u'<div id="pageline"><hr style="display:none;"></div>',
59             ##self.trail(d),
60             u'</div>',
61
62             # Post header custom html (not recommended)
63             self.emit_custom_html(self.cfg.page_header2),
64
65             self.msg(d),
66             self.editbar(d),
67
68             # Start of page
69             self.startPage(d),
70         ]
71         return u'\n'.join(html)
72
73     def editorheader(self, d, **kw):
74         """ Assemble wiki header for editor
75         
76         @param d: parameter dictionary
77         @rtype: unicode
78         @return: page header html
79         """
80         html = [
81             # Pre header custom html
82             self.emit_custom_html(self.cfg.page_header1),
83
84             # Header
85             u'<div id="header">',
86             self.logo(),
87             self.menu(d),
88             u'</div>',
89
90             # Post header custom html (not recommended)
91             self.emit_custom_html(self.cfg.page_header2),
92
93             # Start of page
94             self.startPage(d),
95             self.msg(d),
96         ]
97         return u'\n'.join(html)
98
99     def footer(self, d, **keywords):
100         """ Assemble wiki footer
101         
102         @param d: parameter dictionary
103         @keyword ...:...
104         @rtype: unicode
105         @return: page footer html
106         """
107         page = d['page']
108         html = [
109             # End of page
110             self.endPage(d),
111
112             # Pre footer custom html (not recommended!)
113             self.emit_custom_html(self.cfg.page_footer1),
114
115             # Footer
116             u'<div id="footer">',
117             self.username(d),
118             self.pageinfo(page),
119             self.searchform(d),
120             #self.editbar(d),
121             #self.credits(d),
122             #self.showversion(d, **keywords),
123             u'<div id="footerbottom"></div>',
124             u'</div>',
125
126             # Post footer custom html
127             self.emit_custom_html(self.cfg.page_footer2),
128             ]
129         return u'\n'.join(html)
130
131     def menu(self, d):
132         """ Assemble a "main" menu
133             
134             @param d: parameter dictionary
135             @rtype:   unicode
136             @return: menu html
137         """
138         items = Page(self.request, 'Site/Menu').data.split('\n')
139         
140         html = '<ul id="menubar">'
141
142         for item in items:
143             if (not item.startswith("#")):
144                 (pagename, link) = self.splitNavilink(item)
145                 html = html + ("<li class=\"menulink\">%s</li>" % link)
146         
147         html = html + '</ul>'
148
149         return html
150
151     def theme_script(self, name):
152         """ Format script html from this theme's static dir """
153         src = '%s/%s/js/%s.js' % (self.request.cfg.url_prefix_static, self.name, name)
154         return '<script type="text/javascript" src="%s"></script>' % src
155
156     def pageinfo(self, page):
157         """ Output page name and "last modified". This overwrites the pageinfo
158         from ThemeBase to hide the username, which is useless and always
159         produces a link to the non-existing homepage of the last editor. """
160         _ = self.request.getText
161         html = ''
162         if self.shouldShowPageinfo(page):
163             info = page.lastEditInfo()
164             if info:
165                 info = _("last modified %(time)s") % info
166                 pagename = page.page_name
167                 info = "%s  (%s)" % (wikiutil.escape(pagename), info)
168                 html = '<p id="pageinfo" class="info"%(lang)s>%(info)s</p>\n' % {
169                     'lang': self.ui_lang_attr(),
170                     'info': info
171                     }
172         return html
173
174     def startPage(self, d):
175         # This opens up #page
176         html = ThemeBase.startPage(self)
177         html += u'<div id="pagetop"></div>\n'
178         html += u'<div id="pagemiddle">\n'
179         return html
180
181     def endPage(self, d):
182         html = u'</div><!-- #pagemiddle -->\n'
183         html += ThemeBase.endPage(self)
184         # This adds #pagebottom and closes #page
185         return html
186
187 # vim: set sw=4 sts=4 expandtab: