diff --git a/wiki/theme/bde.py b/wiki/theme/bde.py index dcb61712..b385f1b6 100644 --- a/wiki/theme/bde.py +++ b/wiki/theme/bde.py @@ -17,7 +17,7 @@ class Theme(ThemeCrans): stylesheets = ( # media basename ('all', 'common'), - ('screen', 'crans'), + ('screen', 'layout'), ('screen', 'bde'), ('print', 'print'), ('projection', 'projection'), diff --git a/wiki/theme/crans.py b/wiki/theme/crans.py index 24d88ef1..bbd14307 100644 --- a/wiki/theme/crans.py +++ b/wiki/theme/crans.py @@ -16,49 +16,6 @@ class ThemeCrans(ThemeBase): name = "crans" - # fake _ function to get gettext recognize those texts: - _ = lambda x: x - - icons = { - # key alt icon filename w h - # ------------------------------------------------------------------ - # navibar - 'help': ("%(page_help_contents)s", "moin-help.png", 12, 11), - 'find': ("%(page_find_page)s", "moin-search.png", 12, 12), - 'diff': (_("Diffs"), "moin-diff.png", 22, 22), - 'info': (_("Info"), "moin-info.png", 22, 22), - 'edit': (_("Edit"), "moin-edit.png", 22, 22), - 'unsubscribe':(_("Unsubscribe"), "moin-unsubscribe.png", 22, 22), - 'subscribe': (_("Subscribe"), "moin-subscribe.png",22, 22), - 'raw': (_("Raw"), "moin-raw.png", 12, 13), - 'xml': (_("XML"), "moin-xml.png", 20, 13), - 'print': (_("Print"), "moin-print.png", 16, 14), - 'view': (_("View"), "moin-show.png", 22, 22), - 'home': (_("Home"), "moin-home.png", 13, 12), - 'up': (_("Up"), "moin-parent.png", 15, 13), - # FileAttach - 'attach': ("%(attach_count)s", "moin-attach.png", 7, 15), - # RecentChanges - 'rss': (_("[RSS]"), "moin-rss.png", 36, 14), - 'deleted': (_("[DELETED]"), "moin-supprime.png",51, 12), - 'updated': (_("[UPDATED]"), "moin-modifie.png",45, 12), - 'new': (_("[NEW]"), "moin-nouveau.png", 51, 12), - 'diffrc': (_("[DIFF]"), "moin-diff.png", 22, 22), - # General - 'bottom': (_("[BOTTOM]"), "moin-bottom.png", 14, 10), - 'top': (_("[TOP]"), "moin-top.png", 14, 10), - 'www': ("[WWW]", "moin-www.png", 11, 11), - 'mailto': ("[MAILTO]", "moin-email.png", 14, 10), - 'news': ("[NEWS]", "moin-news.png", 10, 11), - 'telnet': ("[TELNET]", "moin-telnet.png", 10, 11), - 'ftp': ("[FTP]", "moin-ftp.png", 11, 11), - 'file': ("[FILE]", "moin-ftp.png", 11, 11), - # search forms - 'searchbutton': ("[?]", "moin-search.png", 12, 12), - 'interwiki': ("[%(wikitag)s]", "moin-inter.png", 16, 16), - } - del _ - # Standard set of style sheets stylesheets = ( # media basename @@ -68,9 +25,12 @@ class ThemeCrans(ThemeBase): ('projection', 'projection'), ) + # Standard set of scripts + scripts = ( + 'crans', + ) + - scripts = ['scroller',] - # Public functions ##################################################### def header(self, d, **kw): @@ -82,367 +42,69 @@ class ThemeCrans(ThemeBase): parent = d['page'].getParentPage() html = [ u'
', - u'
', + u'
', + u'
', + '

', + self.title(d), + u'

', + u'
', self.msg(d), self.startPage(), - u'
', - self.title(d)[:-6], # On enlève - parent and wikiutil.link_tag(self.request, - parent.page_name, - u'Haut') or u'', - u'' - u'
', ] return u'\n'.join(html) + editorheader = header def footer(self, d, **keywords): """ Assemble wiki footer """ html = [ # End of page - u'
', self.pageinfo(d['page']), self.endPage(), - self.columnone(d), - u'
', - u'
', - u'
', - u"
" + u'
', # fin du div main-content + self.rightcolumn(d), + u'' # fin du div globalWrapper ] return u'\n'.join(html) - def columnone(self, d): + def rightcolumn(self, d): """ assemble all the navigation aids for the page """ + _ = self.request.getText page = d['page'] html = [ u'
', - self.editbar(d), + u"
Personnel
", self.username(d), + u"
Navigation
", self.navibar(d), + u"
%s
" % _("Page"), + self.editbar(d), + u"
%s
" % _('Search'), self.searchform(d), - self.actionmenu(d), - u'
', - u'', - u'
' ] return u'\n'.join(html) - - def extendedAttrs(self, title, accesskey): - """ Helper function for assembling titled access key links - """ - return 'title="%(title)s [alt-%(accesskey)s]" accesskey=%(accesskey)s' % \ - {'accesskey' : accesskey, - 'title' : title} - - def editbar(self, d): - """ Display a list of actions for the page. This list will be turned - into a set of tabbed views on the page by the css. - """ - page = d['page'] - if not self.shouldShowEditbar(page): - return '' - - # Use cached editbar if possible. - cacheKey = 'editbar' - cached = self._cache.get(cacheKey) - if cached: - return cached - - request = self.request - _ = self.request.getText - link = wikiutil.link_tag - quotedname = wikiutil.quoteWikinameURL(page.page_name) - # action, title, description, accesskey - tabs = [('view', 'Article', 'View the page content', 'c'), - ('edit', 'Edit', 'Edit this page', 'e'), - ('diff', 'Show Changes', 'Last page modification', 'd'), - ('info', 'Get Info', 'Page history and information', 'h'), - ('subscribe', 'Subscribe', 'Subscribe to updates to this page', 'w')] - - items = [] - current = self.request.form.get('action', ['view'])[0] - for action, title, description, accesskey in tabs: - if action == current: - cls = 'selected' - else: - cls = 'none' - - if action == "subscribe": - items.append(u'
  • %s
  • \n' % (cls, action, self.make_iconlink( - ["subscribe", "unsubscribe"][self.request.user.isSubscribedTo([d['page_name']])], d))) - else: - items.append(u'
  • %s
  • \n' % (cls, action, self.make_iconlink(action, d))) - - html = [ - u'
    ', - u'', - u'
    ' - ] - html = ''.join(html) - # cache for next call - self._cache[cacheKey] = html - - return html - - - def actionmenu(self, d): - """ different implementation of the actionmenu (aka toolbox) - """ - - page = d['page'] - - # Use cached actionmenu if possible. - cacheKey = 'actionmenu' - cached = self._cache.get(cacheKey) - if cached: - return cached - - request = self.request - _ = request.getText - quotedname = wikiutil.quoteWikinameURL(page.page_name) - - menu = [ - 'raw', - 'print', - u'format&mimetype=text/latex', - u'format&mimetype=text/plain', - 'refresh', - 'AttachFile', - 'SpellCheck', - 'LikePages', - 'LocalSiteMap', - 'RenamePage', - 'DeletePage', - ] - - titles = { - 'raw': _('Show Raw Text', formatted=False), - 'print': _('Show Print View', formatted=False), - u'format&mimetype=text/latex': _('Obtenir le code latex', formatted=False), - u'format&mimetype=text/plain': _('Version texte (en test)', formatted=False), - 'refresh': _('Delete Cache', formatted=False), - 'AttachFile': _('Attach File', formatted=False), - 'SpellCheck': _('Check Spelling', formatted=False), # rename action! - 'RenamePage': _('Rename Page', formatted=False), - 'DeletePage': _('Delete Page', formatted=False), - 'LikePages': _('Show Like Pages', formatted=False), - 'LocalSiteMap': _('Show Local Site Map', formatted=False), - } - - links = [ 'Voir la page web' % page.page_name ] - - # Format standard actions - available = request.getAvailableActions(page) - for action in menu: - # Enable delete cache only if page can use caching - if action == 'refresh': - if not page.canUseCache(): - break - # Actions which are not available for this wiki, user or page - if action[0].isupper() and not action in available: - break; - - link = wikiutil.link_tag(self.request, \ - quotedname + '?action=' + action, titles[action]) - links.append(link) - - # Add custom actions not in the standard menu - more = [item for item in available if not item in titles] - more.sort() - if more: - # Add more actions (all enabled) - for action in more: - data = {'action': action, 'disabled': ''} - title = Page(request, action).split_title(request, force=1) - # Use translated version if available - title = _(title, formatted=False) - link = wikiutil.link_tag(self.request, \ - quotedname + '?action=' + action, title) - links.append(link) - - html = [ - u'
    ', - u'
    Toolbox
    ', - u'
    ', - u'', - u'
    ', - u'
    ', - ] - html = ''.join(html) - # cache for next call - self._cache[cacheKey] = html - return html - - - def username(self, d): - """ Assemble the username / userprefs link - Copied from the base class, modified to include hotkeys and link titles - """ - from MoinMoin.Page import Page - request = self.request - _ = request.getText - - userlinks = [] - # Add username/homepage link for registered users. We don't care - # if it exists, the user can create it. - if request.user.valid: - homepage = Page(request, request.user.name) - title = homepage.split_title(request) - attrs = self.extendedAttrs(_('User Page'), '.') - homelink = homepage.link_to(request, text=title, attrs=attrs) - userlinks.append(homelink) - - # Set pref page to localized Preferences page - attrs = self.extendedAttrs(_('My Preferences'), 'u') - prefpage = wikiutil.getSysPage(request, 'UserPreferences') - title = prefpage.split_title(request) - userlinks.append(prefpage.link_to(request, text=title, attrs=attrs)) - - # Add a logout link (not sure this is really necessary - attrs = self.extendedAttrs(_('log out'), 'o') - page = d['page'] - url = wikiutil.quoteWikinameURL(page.page_name) + \ - '?action=userform&logout=1' - link = wikiutil.link_tag(self.request, url, 'log out', attrs=attrs) - userlinks.append(link) - - else: - # Add prefpage links with title: Login - prefpage = wikiutil.getSysPage(request, 'UserPreferences') - attrs = self.extendedAttrs('Logging in is not required, but brings benefits', 'o') - userlinks.append(prefpage.link_to(request, text=_("Login"), attrs=attrs)) - - html = [ - u'
    ', - u'
    Personnel
    ', - u'', - u'
    ' - ] - return ''.join(html) - - def searchform(self, d): - """ assemble HTML code for the search form - Tweaks from the bass class to wrap in a 'portlet' class, move the - description to a header tag, add an access key of 'f' and - add SearchButton class for the buttons - """ - _ = self.request.getText - form = self.request.form - updates = { - 'search_label' : _('Search:'), - 'search_value': wikiutil.escape(form.get('value', [''])[0], 1), - 'search_full_label' : _('Text', formatted=False), - 'search_title_label' : _('Titles', formatted=False), - } - d.update(updates) - - html = u''' - -''' % d - return html - - def shouldShowEditbar(self, page): - """ Override to include the editbar on edit/preview pages. - (at the risk that the user may accidentally cancel an edit) - """ - if (page.exists(includeDeleted=1) and - self.request.user.may.read(page.page_name)): - return True - return False - - - def navibar(self, d): - """ Alterations from the base class to include access keys and - descriptions for FrontPage/RecentChanges - """ - request = self.request - found = {} # pages we found. prevent duplicates - links = [] # navibar items - 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 == d['page_front_page']: - attrs = self.extendedAttrs('Visit the main page', 'z') - elif pagename == 'RecentChanges': - attrs = self.extendedAttrs('List of recent changes in this wiki', 'r') - else: - attrs = '' - - a = wikiutil.link_tag(request, pagename, attrs=attrs) - links.append(a) - found[pagename] = 1 - - # Add user links to wiki links, eliminating duplicates. - userlinks = request.user.getQuickLinks() - for text in userlinks: - # Split text without localization, user know what she wants - pagename, link = self.splitNavilink(text, localize=0) - if not pagename in found: - a = wikiutil.link_tag(request, pagename, attrs=attrs) - links.append(a) - found[pagename] = 1 - - html = [ - u'
    ', - u'
    Navigation
    ', - u'
    ', - u'', - u'
    ', - u'
    ', - ] - return ''.join(html) - def html_head(self, d): """ add opensearch description to html head """ # common prefix for static content prefix = self.cfg.url_prefix - open_search_desc = u""" - - -""" % {'page':self.request.path_info, 'sitename':d['sitename']} + open_search_desc = '\n' % {'page':d['page'].request.script_name, 'sitename':d['sitename']} classic_head = ThemeBase.html_head(self, d) return classic_head + open_search_desc - + def headscript(self, d): - # Don't add script for print view - if self.request.form.get('action', [''])[0] == 'print': - return u'' + # Check mode + if d.get('print_mode'): + link = "" else: - # Create script links + # Create stylesheets links link = '' prefix = self.cfg.url_prefix csshref = '%s/%s/js' % (prefix, self.name) @@ -450,9 +112,12 @@ class ThemeCrans(ThemeBase): for basename in self.scripts: href = '%s/%s.js' % (csshref, basename) html.append(link % href ) - - return u"\n".join(html) - + + return ThemeBase.headscript(self, d) + u"\n".join(html) + + + + class Theme(ThemeCrans): name = "crans" @@ -461,6 +126,7 @@ class Theme(ThemeCrans): stylesheets = ( # media basename ('all', 'common'), + ('screen', 'layout'), ('screen', 'crans'), ('print', 'print'), ('projection', 'projection'), diff --git a/wiki/theme/ensanime.py b/wiki/theme/ensanime.py index b434c8ff..226d8168 100644 --- a/wiki/theme/ensanime.py +++ b/wiki/theme/ensanime.py @@ -6,7 +6,7 @@ class Theme(ThemeCrans): stylesheets = ( # media basename ('all', 'common'), - ('screen', 'crans'), + ('screen', 'layout'), ('screen', 'ensanime'), ('print', 'print'), ('projection', 'projection'), diff --git a/wiki/theme/movieclub.py b/wiki/theme/movieclub.py index 768d4ed9..bbfc8f02 100644 --- a/wiki/theme/movieclub.py +++ b/wiki/theme/movieclub.py @@ -14,7 +14,7 @@ class Theme(ThemeCrans): stylesheets = ( # media basename ('all', 'common'), - ('screen', 'crans'), + ('screen', 'layout'), ('screen', 'movieclub'), ('print', 'print'), ('projection', 'projection'),