
sinon, le champs recherche vas se cacher hors écrans pour les gens qui n'ont pas de 1080p truc étrange au commit précédent précédent
256 lines
9.8 KiB
Python
256 lines
9.8 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
MoinMoin monobook theme.
|
|
|
|
Author: Antoine Durand-Gasselin <adg@crans.org>
|
|
"""
|
|
|
|
import datetime
|
|
from MoinMoin.theme import ThemeBase
|
|
|
|
class Theme(ThemeBase):
|
|
|
|
name = "crans"
|
|
Name = name.capitalize()
|
|
today = datetime.date.today()
|
|
_ = lambda x: x
|
|
icons = {
|
|
# key alt icon filename w h
|
|
# ------------------------------------------------------------------
|
|
# navibar
|
|
'help': ("%(page_help_contents)s", "moin-help.png", 16, 16),
|
|
'find': ("%(page_find_page)s", "moin-search.png", 16, 16),
|
|
'diff': (_("Diffs"), "moin-diff.png", 16, 16),
|
|
'info': (_("Info"), "moin-info.png", 16, 16),
|
|
'edit': (_("Edit"), "moin-edit.png", 16, 16),
|
|
'unsubscribe': (_("Unsubscribe"), "moin-unsubscribe.png", 16, 16),
|
|
'subscribe': (_("Subscribe"), "moin-subscribe.png", 16, 16),
|
|
'raw': (_("Raw"), "moin-raw.png", 16, 16),
|
|
'xml': (_("XML"), "moin-xml.png", 20, 13),
|
|
'print': (_("Print"), "moin-print.png", 16, 16),
|
|
'view': (_("View"), "moin-show.png", 16, 16),
|
|
'home': (_("Home"), "moin-home.png", 16, 16),
|
|
'up': (_("Up"), "moin-parent.png", 16, 16),
|
|
# FileAttach
|
|
'attach': ("%(attach_count)s", "moin-attach.png", 16, 16),
|
|
'attachimg': ("", "attach.png", 32, 32),
|
|
# RecentChanges
|
|
'rss': (_("[RSS]"), "moin-rss.png", 16, 16),
|
|
'deleted': (_("[DELETED]"), "moin-deleted.png", 16, 16),
|
|
'updated': (_("[UPDATED]"), "moin-updated.png", 16, 16),
|
|
'renamed': (_("[RENAMED]"), "moin-renamed.png", 16, 16),
|
|
'conflict': (_("[CONFLICT]"), "moin-conflict.png", 16, 16),
|
|
'new': (_("[NEW]"), "moin-new.png", 16, 16),
|
|
'diffrc': (_("[DIFF]"), "moin-diff.png", 16, 16),
|
|
# General
|
|
'bottom': (_("[BOTTOM]"), "moin-bottom.png", 16, 16),
|
|
'top': (_("[TOP]"), "moin-top.png", 16, 16),
|
|
'www': ("[WWW]", "moin-www.png", 16, 16),
|
|
'mailto': ("[MAILTO]", "moin-email.png", 16, 16),
|
|
'news': ("[NEWS]", "moin-news.png", 16, 16),
|
|
'telnet': ("[TELNET]", "moin-telnet.png", 16, 16),
|
|
'ftp': ("[FTP]", "moin-ftp.png", 16, 16),
|
|
'file': ("[FILE]", "moin-ftp.png", 16, 16),
|
|
# search forms
|
|
'searchbutton': ("[?]", "moin-search.png", 16, 16),
|
|
'interwiki': ("[%(wikitag)s]", "moin-inter.png", 16, 16),
|
|
|
|
# smileys (this is CONTENT, but good looking smileys depend on looking
|
|
# adapted to the theme background color and theme style in general)
|
|
#vvv == vvv this must be the same for GUI editor converter
|
|
'X-(': ("X-(", "angry.png", 16, 16),
|
|
':D': (":D", "biggrin.png", 16, 16),
|
|
'<:(': ("<:(", "frown.png", 16, 16),
|
|
':o': (":o", "redface.png", 16, 16),
|
|
':(': (":(", "sad.png", 16, 16),
|
|
':)': (":)", "smile.png", 16, 16),
|
|
'B)': ("B)", "smile2.png", 16, 16),
|
|
':))': (":))", "smile3.png", 16, 16),
|
|
';)': (";)", "smile4.png", 16, 16),
|
|
'/!\\': ("/!\\", "alert.png", 16, 16),
|
|
'<!>': ("<!>", "attention.png", 16, 16),
|
|
'(!)': ("(!)", "idea.png", 16, 16),
|
|
|
|
# copied 2001-11-16 from http://pikie.darktech.org/cgi/pikie.py?EmotIcon
|
|
':-?': (":-?", "tongue.png", 16, 16),
|
|
':\\': (":\\", "ohwell.png", 16, 16),
|
|
'>:>': (">:>", "devil.png", 16, 16),
|
|
'|)': ("|)", "tired.png", 16, 16),
|
|
|
|
# some folks use noses in their emoticons
|
|
':-(': (":-(", "sad.png", 16, 16),
|
|
':-)': (":-)", "smile.png", 16, 16),
|
|
'B-)': ("B-)", "smile2.png", 16, 16),
|
|
':-))': (":-))", "smile3.png", 16, 16),
|
|
';-)': (";-)", "smile4.png", 16, 16),
|
|
'|-)': ("|-)", "tired.png", 16, 16),
|
|
|
|
# version 1.0
|
|
'(./)': ("(./)", "checkmark.png", 16, 16),
|
|
'{OK}': ("{OK}", "thumbs-up.png", 16, 16),
|
|
'{X}': ("{X}", "icon-error.png", 16, 16),
|
|
'{i}': ("{i}", "icon-info.png", 16, 16),
|
|
'{1}': ("{1}", "prio1.png", 15, 13),
|
|
'{2}': ("{2}", "prio2.png", 15, 13),
|
|
'{3}': ("{3}", "prio3.png", 15, 13),
|
|
|
|
# version 1.3.4 (stars)
|
|
# try {*}{*}{o}
|
|
'{*}': ("{*}", "star_on.png", 16, 16),
|
|
'{o}': ("{o}", "star_off.png", 16, 16),
|
|
}
|
|
|
|
def navibar(self, d):
|
|
""" Assemble the navibar
|
|
|
|
@param d: parameter dictionary
|
|
@rtype: unicode
|
|
@return: navibar html
|
|
"""
|
|
request = self.request
|
|
found = {} # pages we found. prevent duplicates
|
|
items = [] # navibar items
|
|
item = u'<li class="%s">%s</li>'
|
|
current = d['page_name']
|
|
|
|
# Process config navi_bar
|
|
if request.cfg.navi_bar:
|
|
for text in request.cfg.navi_bar:
|
|
pagename, link = self.splitNavilink(text)
|
|
if pagename == current:
|
|
cls = 'wikilink current'
|
|
else:
|
|
cls = 'wikilink'
|
|
items.append(item % (cls, link))
|
|
found[pagename] = 1
|
|
|
|
# Add current page at end of local pages
|
|
if not current in found:
|
|
title = d['page'].split_title()
|
|
title = self.shortenPagename(title)
|
|
link = d['page'].link_to(request, title)
|
|
cls = 'current'
|
|
items.append(item % (cls, link))
|
|
|
|
# Assemble html
|
|
items = u''.join(items)
|
|
html = u'''
|
|
<ul id="navibar">
|
|
%s
|
|
</ul>
|
|
''' % items
|
|
return html
|
|
|
|
|
|
|
|
def wikipanel(self, d):
|
|
""" Create wiki panel """
|
|
_ = self.request.getText
|
|
html = [
|
|
u'<div class="sidepanel">',
|
|
u'<h1>%s</h1>' % _("Wiki"),
|
|
self.navibar(d),
|
|
u'</div>',
|
|
]
|
|
return u'\n'.join(html)
|
|
|
|
def pagepanel(self, d):
|
|
""" Create page panel """
|
|
_ = self.request.getText
|
|
if self.shouldShowEditbar(d['page']):
|
|
html = [
|
|
u'<div class="sidepanel">',
|
|
u'<h1>%s</h1>' % _("Page"),
|
|
self.editbar(d),
|
|
u'</div>',
|
|
]
|
|
return u'\n'.join(html)
|
|
return ''
|
|
|
|
def userpanel(self, d):
|
|
""" Create user panel """
|
|
_ = self.request.getText
|
|
|
|
html = [
|
|
u'<div class="sidepanel">',
|
|
u'<h1>%s</h1>' % _("User"),
|
|
self.username(d),
|
|
u'</div>'
|
|
]
|
|
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:
|
|
x_class = 'class="halloween"'
|
|
elif self.today.month == 12 and self.today.day == 24:
|
|
x_class = 'class="noel"'
|
|
elif self.today.month == 4 and self.today.day ==1:
|
|
x_class = 'class="april_fool"'
|
|
else: x_class = ''
|
|
|
|
html = [
|
|
# Custom html above header
|
|
self.emit_custom_html(self.cfg.page_header1),
|
|
|
|
u'<div id="titleBar">',
|
|
u'<h1 id="title" %s>' % x_class, self.title(d), u'</h1>',
|
|
u'</div>',
|
|
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'<div id="rightSidebar">',
|
|
self.userpanel(d), self.wikipanel(d), self.pagepanel(d),
|
|
self.searchform(d), self.credits(d), self.showversion(d, **keywords),
|
|
u'</div>',
|
|
|
|
# # Pre footer custom html (not recommended!)
|
|
# self.emit_custom_html(self.cfg.page_footer1),
|
|
#
|
|
# # Footer
|
|
# u'<div id="footer">',
|
|
# u'</div>',
|
|
#
|
|
# # 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)
|