diff --git a/wiki/theme/crans-www.py b/wiki/theme/crans-www.py new file mode 100755 index 00000000..cef3660b --- /dev/null +++ b/wiki/theme/crans-www.py @@ -0,0 +1,124 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +""" + MoinMoin monobook theme. + + Author: Antoine Durand-Gasselin +""" + +from MoinMoin.theme import ThemeBase + +class Theme(ThemeBase): + + name = "crans-www" + + # liste des liens du menu + menu_links = [ + # tire #lien + + (u"Accueil", u"http://www.crans.org/"), + (u"Webmail", u"https://webmail.crans.org/"), + (u"Accès SSH", u"http://www.crans.org/VieCrans/OpenSsh"), + (u"Accès Intranet",u"https://intranet.crans.org/"), + (u"Pages persos", u"http://www.crans.org/PagesPerso"), + ] + + # Chemin des badges + badgesPath = u'/wiki/additional/badges/' + + + # liste des badges + support_badges = [ + # page, # image # alt text + (u'http://www.mozilla-europe.org/fr/firefox/', + u'badges_80x15_firefox.gif', u'Get firefox'), + (u'http://www.debian.org/', u'badges_80x15_debian.png', u'Debian powered'), + (u'http://www.apache.org/', u'badges_80x15_apache.gif', u'Apache powered'), + (u'http://www.python.org/', u'badges_80x15_python.png', u'Python powered'), + (u'http://www.federez.org/', u'badges_80x15_federez.png', u'Membre du réseau federez'), + (u'http://moinmo.in/', u'badges_80x15_moinmoin.png', u'Moinmoin powered'), + (u'http://jigsaw.w3.org/css-validator/check?uri=referer&profile=css3&warning=no', + u'valid_css_80x15.png', u'Valid css3'), + (u'http://validator.w3.org/check?uri=referer', + u'valid_html401_80x15.gif', u'Valid HTML 4.01'), + ] + + def img_url(self, img): + return "%s/crans/img/%s" % (self.cfg.url_prefix_static, img) + + def header(self, d): + """ + Assemble page header + + @param d: parameter dictionary + @rtype: string + @return: page header html + """ + html = [ self.emit_custom_html(self.cfg.page_header1), + u'
', self.logo(), ] + if d['page'].page_name != 'VieCrans': + html += [u'

', self.title(d), u'

'] + html += [ 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(), + self.menu(d), + u'
', + self.username(d), + self.badges(d) + ] + return u'\n'.join(html) + + def menu(self, d): + """ assemble all the navigation aids for the page + """ + liens = [] + for titre, lien in self.menu_links: + liens.append(u'
  • %s
  • ' % (lien, titre)) + html = [ + u'', + ] + return u''.join(html) + + def badges(self,d ): + badges_html = [] + for page, image, alt_text in self.support_badges: + badges_html.append(u'
  • %(alt)s
  • ' % {'href':page, 'path':self.badgesPath, 'image':image, 'alt':alt_text}) + html = [ + u'
    \n ' + u'\n
    \n\n', + ] + return ''.join(html) + + +def execute(request): + """ Generate and return a theme object + + @param request: the request object + @rtype: MoinTheme + @return: Theme object + """ + return Theme(request) diff --git a/wiki/theme/crans.py b/wiki/theme/crans.py new file mode 100755 index 00000000..5a73cb60 --- /dev/null +++ b/wiki/theme/crans.py @@ -0,0 +1,123 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +""" + MoinMoin monobook theme. + + Author: Antoine Durand-Gasselin +""" + +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'
    ', + u'

    %s

    ' % _("Wiki"), + self.navibar(d), + u'
    ', + ] + return u'\n'.join(html) + + def pagepanel(self, d): + """ Create page panel """ + _ = self.request.getText + if self.shouldShowEditbar(d['page']): + html = [ + u'
    ', + u'

    %s

    ' % _("Page"), + self.editbar(d), + u'
    ', + ] + return u'\n'.join(html) + return '' + + def userpanel(self, d): + """ Create user panel """ + _ = self.request.getText + + html = [ + u'
    ', + u'

    %s

    ' % _("User"), + self.username(d), + u'
    ' + ] + 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: + extra_style = 'class="halloween"' + elif self.today.month == 12 and self.today.day == 24: + extra_style = 'class="noel"' + else: extra_style = '' + + html = [ + # Custom html above header + self.emit_custom_html(self.cfg.page_header1), + + u'
    ' % extra_style, + u'

    ', self.title(d), u'

    ', + u'
    ', + 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'', + + # # Pre footer custom html (not recommended!) + # self.emit_custom_html(self.cfg.page_footer1), + # + # # Footer + # u'', + # + # # 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)