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 html = [ 89 # End of page 90 self.pageinfo(page), 91 self.endPage(), 92 u'</div>', 93 94 # Pre footer custom html (not recommended!) 95 self.emit_custom_html(self.cfg.page_footer1), 96 97 # Footer 98 u'<div id="footer">', 99 self.cfg.contact_string, 100 u'<div id="contribute">', 101 #self.cfg.contribute_string, 102 #u'<div class="contribute-hidden">', 103 #self.username(d), 104 #u'<div id="locationline">', 105 #self.interwiki(d), 106 #self.title(d), 107 #u'</div>', 108 self.specialUsername(d), 109 self.editbar(d), 110 self.trail(d), 111 #u'</div>', 112 u'</div>', 113 self.credits(d), 114 self.showversion(d, **keywords), 115 u'</div>', 116 117 # Post footer custom html 118 self.emit_custom_html(self.cfg.page_footer2), 119 ] 120 return u'\n'.join(html) 121 122 def editbarItems(self, page): 123 """ Return list of items to show on the editbar 124 125 This is separate method to make it easy to customize the 126 editbar in sub classes. 127 """ 128 129 request = self.request 130 131 items = [self.editorLink(page), 132 self.infoLink(page), 133 self.subscribeLink(page), 134 self.quicklinkLink(page),] 135 136 if page.isWritable() and request.user.valid and request.user.may.write(page.page_name): 137 items.append(self.attachmentsLink(page)) 138 139 if request.user.valid: 140 items.append(self.actionsMenu(page)) 141 142 return items 143 144 def specialUsername(self, d): 145 request = self.request 146 _ = request.getText 147 148 if request.user.valid and request.user.name: 149 return u'<div class="username">%s</div>' % request.formatter.text(request.user.name) 150 else: 151 # NOTE: Using the contribute string! 152 return u'<div class="no-username">%s</div>' % \ 153 d['page'].link_to(request, text=self.cfg.contribute_string, 154 querystr={'action': 'login'}, id="login") 155 156 def execute(request): 157 """ 158 Generate and return a theme object 159 160 @param request: the request object 161 @rtype: MoinTheme 162 @return: Theme object 163 """ 164 return Theme(request) 165 166 # vim: tabstop=4 expandtab shiftwidth=4