def __init__(self, request): ThemeBase.__init__(self, request) _ = self.request.getText _ = lambda x: x self.icons['diffrc'] = (_('Diffs'), 'gnome-moin-diff.png', 16, 16) self.icons.update({ 'attach': ('%(attach_count)s', 'mail-attachment-symbolic.png', 16, 16), 'bottom': (_('[BOTTOM]'), 'go-bottom-symbolic.png', 16, 16), 'deleted': (_('[DELETED]'), 'edit-delete-symbolic.png', 16, 16), 'diff': (_('Diffs'), 'gnome-moin-diff.png', 16, 16), 'diffrc': (_('[DIFF]'), 'gnome-moin-diff.png', 16, 16), 'edit': (_('Edit'), 'text-editor-symbolic.png', 16, 16), 'find': ('%(page_find_page)s', 'edit-find-symbolic.png', 16, 16), 'help': ('%(page_help_contents)s', 'help-browser-symbolic.png', 16, 16), 'home': (_('Home'), 'go-home-symbolic.png', 16, 16), 'interwiki': ('[%(wikitag)s]', 'send-to-symbolic.png', 16, 16), 'new': (_('[NEW]'), 'gnome-moin-new.png', 16, 16), 'print': (_('Print'), 'printer-symbolic.png', 16, 16), 'rss': (_('[RSS]'), 'gnome-moin-rss.png', 16, 16), 'searchbutton': ('[?]', 'edit-find-symbolic.png', 16, 16), 'top': (_('[TOP]'), 'go-top-symbolic.png', 16, 16), 'updated': (_('[UPDATED]'), 'view-refresh-symbolic.png', 16, 16), 'www': ('[WWW]', 'web-browser-symbolic.png', 16, 16), '/!\\': ("/!\\", 'dialog-warning-symbolic.png', 16, 16), '(!)': ("(!)", 'dialog-information-symbolic.png', 16, 16), '<!>': ("<!>", 'dialog-question-symbolic.png', 16, 16), '(./)': ("(./)", 'object-select-symbolic.png', 16, 16) })
def __init__(self, request): ThemeBase.__init__(self, request) append_translation = self.get_config('append_translation', default=True, by_user=False) self._translations = self.theme_translations(append_translation) self.cms_mode = self.get_config('cms_mode', default=False, by_user=False) self._remove_old_userprefs() self.userprefs_allowed = self.get_config('userprefs', default=False, by_user=False) if self.userprefs_allowed: self.userprefs_definition = [ (bool, 'clear', self._('Clear look')), (bool, 'shadow', self._('Shadows for box mode')), (bool, 'full_screen', self._('Full screen mode')) ] try: self.static_prefix = self.cfg.url_prefix_static except AttributeError: self.static_prefix = self.cfg.url_prefix
def send_title(self, text, **keywords): """ Capture original send_title() and rewrite DOCTYPE for html5 """ # add some CSS class info to the body tag keywords['body_attr']='class="modern t-dark-w colorskin-orchard csstransforms csstransforms3d csstransitions orchard"' # for mobile additional_head = u""" <!-- Mobile Specific Metas ================================================== --> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <!-- Font ================================================== --> <link href='http://fonts.googleapis.com/css?family=Source+Sans+Pro:300italic,400italic,400,300,600,700,900|Varela|Arapey:400,400italic' rel="stylesheet" type='text/css' > <!-- JS ================================================== --> <script src="%(prefix)s/%(theme)s/js/jquery.min.js" type="text/javascript"></script> <script src="%(prefix)s/%(theme)s/layerslider/js/greensock.js" type="text/javascript"></script> <!--[if lt IE 9]> <script src="%(prefix)s/%(theme)s/js/modernizr.custom.11889.js" type="text/javascript"></script> <script src="%(prefix)s/%(theme)s/js/respond.js" type="text/javascript"></script> <![endif]--> <!-- HTML5 Shiv events (end)--> <!-- MEGA MENU --> """ % {'prefix': self.cfg.url_prefix_static, 'theme': self.name } try: if not self.request.cfg.memodump_additional_head: raise AttributeError except AttributeError: self.request.cfg.html_head = u'%s%s' % (additional_head, self.request.cfg.html_head) self.request.cfg.memodump_additional_head = True buffer = StringIO.StringIO() self.request.redirect(buffer) try: ThemeBase.send_title(self, text, **keywords) finally: self.request.redirect() html = re.sub(ur'^<!DOCTYPE HTML .*?>\n', ur'<!DOCTYPE html>\n', buffer.getvalue()) self.request.write(html)
def send_title(self, text, **keywords): """ Capture original send_title() and rewrite DOCTYPE for html5 """ # for mobile additional_head = u'<meta name="viewport" content="width=device-width,initial-scale=1.0">\n' try: if not self.request.cfg.memodump_additional_head: raise AttributeError except AttributeError: self.request.cfg.html_head = u'%s%s' % (additional_head, self.request.cfg.html_head) self.request.cfg.memodump_additional_head = True buffer = StringIO.StringIO() self.request.redirect(buffer) try: ThemeBase.send_title(self, text, **keywords) finally: self.request.redirect() html = re.sub(ur'^<!DOCTYPE HTML .*?>\n', ur'<!DOCTYPE html>\n', buffer.getvalue()) self.request.write(html)
class TestEditBarActions(object): def setup_method(self, method): self.savedValid = self.request.user.valid self.savedMailEnabled = self.request.cfg.mail_enabled self.request.cfg.mail_enabled = True self.page = Page(self.request, u'FrontPage') self.ThemeBase = ThemeBase(self.request) def teardown_method(self, method): self.request.user.valid = self.savedValid self.request.cfg.mail_enabled = self.savedMailEnabled def test_editbar_for_anonymous_user(self): assert not self.request.user.valid assert not self.ThemeBase.subscribeLink(self.page) assert not self.ThemeBase.quicklinkLink(self.page) def test_editbar_for_valid_user(self): self.request.user.valid = True assert self.request.user.valid assert 'subscribe' in self.ThemeBase.subscribeLink(self.page) assert 'quicklink' in self.ThemeBase.quicklinkLink(self.page)
def html_head(self, d): """ Assemble html head modifications to ThemeBase method: - Add javascript source file @param d: parameter dictionary @rtype: unicode @return: formatted header """ head = ThemeBase.html_head(self, d) head += u'\n<script type="text/javascript" src="%s/%s/js/actionmenuoptions.js"></script>' % (self.cfg.url_prefix_static, self.name) return head
def html_head(self, d): """ Assemble html head modifications to ThemeBase method: - Add javascript source file @param d: parameter dictionary @rtype: unicode @return: formatted header """ head = ThemeBase.html_head(self, d) head += u'\n<script type="text/javascript" src="%s/%s/js/actionmenuoptions.js"></script>' % ( self.cfg.url_prefix_static, self.name) return head
def html_head(self, d): html = ThemeBase.html_head(self, d) html += '\n<link rel="canonical" href="http://wiki.ros.org/%s" />' % wikiutil.quoteWikinameURL(d['page'].page_name) return html
def navibar(self, d): html = ThemeBase.navibar(self, d) return html.replace('<ul id="navibar">', '<ul class="nav">')
def html_head(self, d): extra_line = u'<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>' return ThemeBase.html_head(self, d) + '\n' + extra_line
def __init__(self, *args, **kwargs): ThemeBase.__init__(self, *args, **kwargs) self.j2env = Environment(loader=FileSystemLoader( self.cfg.templates_path), autoescape=select_autoescape(['html', 'xml']))
def setup_method(self, method): self.savedValid = self.request.user.valid self.savedMailEnabled = self.request.cfg.mail_enabled self.request.cfg.mail_enabled = True self.page = Page(self.request, u'FrontPage') self.ThemeBase = ThemeBase(self.request)
def make_icon(self, icon, vars=None): if icon == 'www' or icon == 'mailto': return '' else: return ThemeBase.make_icon(self, icon, vars)
def recentchanges_header(self, d): """ Override """ html = ThemeBase.recentchanges_header(self,d) return html.replace('<table>', '<table class="table table-bordered">')
def make_icon(self, icon, vars=None, **kwargs): if icon in self.fa_icons: return '<i class="%s" aria-hidden="true"></i>' % self.fa_icons[icon] return ThemeBase.make_icon(self, icon, vars=vars, **kwargs)
def splitNavilink(self, text, localize=1): pagename, link = ThemeBase.splitNavilink(self, text, localize = localize) return (pagename, re.sub(r'(<a.*?>)(.*)(</a>)', r'\1<span>\2</span>\3', link))
def html_head(self, d): return ThemeBase.html_head(self, d) + '\n' + self.faviconLink()
def splitNavilink(self, text, localize=1): pagename, link = ThemeBase.splitNavilink(self, text, localize=localize) return (pagename, re.sub(r'(<a.*?>)(.*)(</a>)', r'\1<span>\2</span>\3', link))