1 # -*- coding: iso-8859-1 -*- 2 """ 3 MoinMoin - ep2008 (EuroPython 2008) theme 4 5 @copyright: 2003-2007 by Nir Soffer, Thomas Waldmann, Paul Boddie 6 @license: GNU GPL, see COPYING for details. 7 """ 8 9 from MoinMoin.theme import ThemeBase 10 #from MoinMoin.theme import modern 11 12 #class Theme(modern.Theme): 13 class Theme(ThemeBase): 14 15 name = "ep2008" 16 17 def header(self, d, **kw): 18 """ Assemble wiki header 19 20 @param d: parameter dictionary 21 @rtype: unicode 22 @return: page header html 23 """ 24 html = [ 25 # Pre header custom html 26 self.emit_custom_html(self.cfg.page_header1), 27 28 # Header 29 u'<div id="header">', 30 self.logo(), 31 32 # Banner 33 self.cfg.banner_string, 34 35 self.searchform(d), 36 self.navibar(d), 37 self.msg(d), 38 39 # NOTE: Hack everything into the header 40 u'<div id="end-of-header">', 41 u'</div>', 42 u'</div>', 43 44 # Post header custom html (not recommended) 45 self.emit_custom_html(self.cfg.page_header2), 46 47 # Start of page 48 u'<div class="page-%s">' % d['page_name'], 49 self.startPage(), 50 ] 51 return u'\n'.join(html) 52 53 def editorheader(self, d, **kw): 54 """ Assemble wiki header for editor 55 56 @param d: parameter dictionary 57 @rtype: unicode 58 @return: page header html 59 """ 60 html = [ 61 # Pre header custom html 62 self.emit_custom_html(self.cfg.page_header1), 63 64 # Header 65 u'<div id="header">', 66 self.title(d), 67 self.msg(d), 68 u'</div>', 69 70 # Post header custom html (not recommended) 71 self.emit_custom_html(self.cfg.page_header2), 72 73 # Start of page 74 u'<div class="page-%s">' % d['page_name'], 75 self.startPage(), 76 ] 77 return u'\n'.join(html) 78 79 def footer(self, d, **keywords): 80 """ Assemble wiki footer 81 82 @param d: parameter dictionary 83 @keyword ...:... 84 @rtype: unicode 85 @return: page footer html 86 """ 87 page = d['page'] 88 89 if self.cfg.special_username: 90 username = self.specialUsername(d) 91 else: 92 username = self.username(d) 93 94 html = [ 95 # End of page 96 self.pageinfo(page), 97 self.endPage(), 98 u'</div>', 99 100 # Pre footer custom html (not recommended!) 101 self.emit_custom_html(self.cfg.page_footer1), 102 103 # Footer 104 u'<div id="footer">', 105 self.cfg.contact_string, 106 u'<div id="contribute">', 107 #self.cfg.contribute_string, 108 #u'<div class="contribute-hidden">', 109 #self.username(d), 110 #u'<div id="locationline">', 111 #self.interwiki(d), 112 #self.title(d), 113 #u'</div>', 114 username, 115 self.editbar(d), 116 self.trail(d), 117 #u'</div>', 118 u'</div>', 119 self.credits(d), 120 self.showversion(d, **keywords), 121 u'</div>', 122 123 # Post footer custom html 124 self.emit_custom_html(self.cfg.page_footer2), 125 ] 126 return u'\n'.join(html) 127 128 def editbarItems(self, page): 129 """ Return list of items to show on the editbar 130 131 This is separate method to make it easy to customize the 132 editbar in sub classes. 133 """ 134 135 request = self.request 136 137 items = [self.editorLink(page), 138 self.infoLink(page), 139 self.subscribeLink(page), 140 self.quicklinkLink(page),] 141 142 if page.isWritable() and request.user.valid and request.user.may.write(page.page_name): 143 items.append(self.attachmentsLink(page)) 144 145 if request.user.valid: 146 items.append(self.actionsMenu(page)) 147 148 return items 149 150 def specialUsername(self, d): 151 request = self.request 152 _ = request.getText 153 154 if request.user.valid and request.user.name: 155 return u'<div class="username">%s</div>' % request.formatter.text(request.user.name) 156 else: 157 # NOTE: Using the contribute string! 158 return u'<div class="no-username">%s</div>' % \ 159 d['page'].link_to(request, text=self.cfg.contribute_string, 160 querystr={'action': 'login'}, id="login") 161 162 def execute(request): 163 """ 164 Generate and return a theme object 165 166 @param request: the request object 167 @rtype: MoinTheme 168 @return: Theme object 169 """ 170 return Theme(request) 171 172 # vim: tabstop=4 expandtab shiftwidth=4