Blame Extras/Moin/1.5.7-1.el5.rf/Modern.py

4c79b5
# -*- coding: iso-8859-1 -*-
4c79b5
"""
4c79b5
    MoinMoin - Modern Theme
4c79b5
4c79b5
    Created for the CentOS Project Wiki. This is a
4c79b5
    modification of the MoinMoin's modern default
4c79b5
    wiki theme, and a continuation of previous
4c79b5
    modern-CentOS theme.
4c79b5
4c79b5
    @copyright: 2008 by The CentOS ArtWork SIG.
4c79b5
    @license: GNU GPL, see COPYING for details.  
4c79b5
"""
4c79b5
4c79b5
from MoinMoin.theme import ThemeBase
4c79b5
from MoinMoin import wikiutil
4c79b5
4c79b5
class Theme(ThemeBase):
4c79b5
4c79b5
    name = "Modern"
4c79b5
4c79b5
    def header(self, d):
4c79b5
        """
4c79b5
        Assemble page header
4c79b5
        
4c79b5
        @param d: parameter dictionary
4c79b5
        @rtype: string
4c79b5
        @return: page header html
4c79b5
        """
4c79b5
4c79b5
        html = [
4c79b5
            # Custom html above header
4c79b5
            self.emit_custom_html(self.cfg.page_header1),
4c79b5
4c79b5
            # Header
4c79b5
            u'
4c79b5
            self.logo(),
4c79b5
	    self.navigation(d),
4c79b5
	    self.errormsg(d),
4c79b5
            #self.googleads(d),
4c79b5
            #self.trail(d),
4c79b5
	    #self.navibar(d),
4c79b5
	    #u'

',
4c79b5
 	    #self.editbar(d),
4c79b5
            u'',
4c79b5
4c79b5
            # Custom html below header (not recomended!)
4c79b5
            #self.emit_custom_html(self.cfg.page_header2),
4c79b5
4c79b5
            # Page
4c79b5
            self.msg(d),
4c79b5
            u'
',
4c79b5
            u'',
4c79b5
            self.startPage(),
4c79b5
            ]
4c79b5
        return u'\n'.join(html)
4c79b5
4c79b5
    def editorheader(self, d):
4c79b5
        """
4c79b5
        Assemble page header for editor
4c79b5
        
4c79b5
        @param d: parameter dictionary
4c79b5
        @rtype: string
4c79b5
        @return: page header html
4c79b5
        """
4c79b5
4c79b5
        html = [
4c79b5
            # Custom html above header
4c79b5
            self.emit_custom_html(self.cfg.page_header1),
4c79b5
4c79b5
            # Header
4c79b5
            u'
4c79b5
            self.logo(),
4c79b5
	    self.navigation(d),
4c79b5
	    self.errormsg(d),
4c79b5
            u'',
4c79b5
4c79b5
            # Custom html below header (not recomended!)
4c79b5
            # self.emit_custom_html(self.cfg.page_header2),
4c79b5
            
4c79b5
            # Page
4c79b5
            self.msg(d),
4c79b5
            u'
',
4c79b5
	    self.title(d),
4c79b5
            u'',
4c79b5
            self.startPage(),
4c79b5
            ]
4c79b5
        return u'\n'.join(html)
4c79b5
4c79b5
    def footer(self, d, **keywords):
4c79b5
        """ Assemble wiki footer
4c79b5
        
4c79b5
        @param d: parameter dictionary
4c79b5
        @keyword ...:...
4c79b5
        @rtype: unicode
4c79b5
        @return: page footer html
4c79b5
        """
4c79b5
        page = d['page']
4c79b5
        html = [
4c79b5
            # End of page
4c79b5
            self.pageinfo(page),
4c79b5
            self.endPage(),
4c79b5
4c79b5
            # Pre footer custom html (not recommended!)
4c79b5
            # self.emit_custom_html(self.cfg.page_footer1),
4c79b5
4c79b5
            # Footer
4c79b5
	    u'
4c79b5
            self.navibar(d),
4c79b5
            self.editbar(d),
4c79b5
            self.credits(d),
4c79b5
            #self.showversion(d, **keywords),
4c79b5
            u'',
4c79b5
            
4c79b5
            # Post footer custom html
4c79b5
            # self.emit_custom_html(self.cfg.page_footer2),
4c79b5
            ]
4c79b5
        return u'\n'.join(html)
4c79b5
4c79b5
    def navigation (self, d): 
4c79b5
    	"""
4c79b5
	assemble HTML code for CentOS Global Navigation
4c79b5
        
4c79b5
        @rtype: unicode
4c79b5
        @return: CentOS Global Navigation
4c79b5
        """
4c79b5
4c79b5
	html = u'''
4c79b5
    
4c79b5
    
    4c79b5
                
  • Home
  • 4c79b5
                
  • Downloads
  • 4c79b5
                
  • Docs
  • 4c79b5
                
  • Wiki
  • 4c79b5
                
  • Lists
  • 4c79b5
                
  • Bugs
  • 4c79b5
                
  • Forums
  • 4c79b5
                
  • Projects
  • 4c79b5
        
    4c79b5
        
    4c79b5
    ''' % d
    4c79b5
            return html
    4c79b5
    4c79b5
        def errormsg(self, d): 
    4c79b5
        	"""
    4c79b5
    	assemble HTML code for CentOS Identification
    4c79b5
            
    4c79b5
            @rtype: unicode
    4c79b5
            @return: CentOS Global Identification
    4c79b5
            """
    4c79b5
            html = [
    4c79b5
                u'
    ',
    4c79b5
    	    u'Wiki',
    4c79b5
    	    u'
    4c79b5
    	    self.username(d),
    4c79b5
                self.editbar(d),
    4c79b5
    	    self.searchform(d),
    4c79b5
    	    u'',
    4c79b5
                u'

    Wiki

    ',
    4c79b5
                self.navibar(d),
    4c79b5
                self.interwiki(d),
    4c79b5
                self.trail(d),
    4c79b5
                self.title(d),
    4c79b5
                u'',
    4c79b5
                ]
    4c79b5
            return u'\n'.join(html)
    4c79b5
    4c79b5
        def googleads(self, d):
    4c79b5
            """
    4c79b5
            assemble HTML code for the Google Ads
    4c79b5
            
    4c79b5
            @rtype: unicode
    4c79b5
            @return: Google Ads
    4c79b5
            """
    4c79b5
    4c79b5
            html = u'''
    4c79b5
    4c79b5
    <script type="text/javascript">
    4c79b5
    google_ad_client = "pub-6973128787810819";
    4c79b5
    google_ad_width = 468;
    4c79b5
    google_ad_height = 68;
    4c79b5
    google_ad_format = "468x60_as";
    4c79b5
    google_ad_type = "text_image";
    4c79b5
    google_ad_channel = "";
    4c79b5
    google_color_border = "204c8d";
    4c79b5
    google_color_bg = "345c97";
    4c79b5
    google_color_link = "0000FF";
    4c79b5
    google_color_text = "FFFFFF";
    4c79b5
    google_color_url = "008000";
    4c79b5
    //-->
    4c79b5
    </script>
    4c79b5
    4c79b5
      src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
    4c79b5
    </script>
    4c79b5
    4c79b5
    ''' % d
    4c79b5
            return html
    4c79b5
    4c79b5
        def credits(self, d):
    4c79b5
            """
    4c79b5
            assemble HTML code for the credits.
    4c79b5
            
    4c79b5
            @rtype: unicode
    4c79b5
            @return: Creative Common Reference
    4c79b5
            """
    4c79b5
    4c79b5
            html = u'''
    4c79b5
    4c79b5
    4c79b5
    Creative Commons License
    4c79b5
    4c79b5

    This wiki is licensed under a
    4c79b5
    Creative Commons Attribution-Share Alike 3.0 Unported License.
    4c79b5
    4c79b5

    The CentOS Project

    4c79b5

    The Community Enterprise Operating System.

    4c79b5
    4c79b5
    4c79b5
    ''' % d
    4c79b5
            return html
    4c79b5
    4c79b5
        def searchform(self, d):
    4c79b5
            """
    4c79b5
            assemble HTML code for the search forms
    4c79b5
            
    4c79b5
            @param d: parameter dictionary
    4c79b5
            @rtype: unicode
    4c79b5
            @return: search form html
    4c79b5
            """
    4c79b5
            _ = self.request.getText
    4c79b5
            form = self.request.form
    4c79b5
            updates = {
    4c79b5
                'search_label' : _('Search:'),
    4c79b5
                'search_value': wikiutil.escape(form.get('value', [''])[0], 1),
    4c79b5
                'search_full_label' : _('Text', formatted=False),
    4c79b5
                'search_title_label' : _('Titles', formatted=False),
    4c79b5
                }
    4c79b5
            d.update(updates)
    4c79b5
    4c79b5
            html = u'''
    4c79b5
    <form id="searchform" method="get" action="">
    4c79b5
    4c79b5
    <input type="hidden" name="action" value="fullsearch">
    4c79b5
    <input type="hidden" name="context" value="180">
    4c79b5
    <label for="searchinput">%(search_label)s</label>
    4c79b5
    4c79b5
        onfocus="searchFocus(this)" onblur="searchBlur(this)"
    4c79b5
        onkeyup="searchChange(this)" onchange="searchChange(this)" alt="Search">
    4c79b5
    4c79b5
        value="%(search_full_label)s" alt="Search Full Text">
    4c79b5
    4c79b5
        value="%(search_title_label)s" alt="Search Titles">
    4c79b5
    4c79b5
    </form>
    4c79b5
    <script type="text/javascript">
    4c79b5
    4c79b5
    var f = document.getElementById('searchform');
    4c79b5
    f.getElementsByTagName('label')[0].style.display = 'none';
    4c79b5
    var e = document.getElementById('searchinput');
    4c79b5
    searchChange(e);
    4c79b5
    searchBlur(e);
    4c79b5
    //-->
    4c79b5
    </script>
    4c79b5
    ''' % d
    4c79b5
            return html
    4c79b5
    4c79b5
    4c79b5
    # The following code make the navibar visible to users with
    4c79b5
    # write access right ONLY!.
    4c79b5
    4c79b5
        def shouldShowEditbar(self, page):
    4c79b5
            """ Hide the edit bar if you can't edit """
    4c79b5
            if self.request.user.may.write(page.page_name):
    4c79b5
                return ThemeBase.shouldShowEditbar(self, page)
    4c79b5
            return False
    4c79b5
    4c79b5
    # The follwing code is just to use class instead of id in
    4c79b5
    # the navibar element. It is not recommended by CCS v2.1
    4c79b5
    # standard the use of two equals id elements on the same
    4c79b5
    # page.
    4c79b5
    4c79b5
        def navibar(self, d):
    4c79b5
            """ Assemble the navibar
    4c79b5
    4c79b5
            @param d: parameter dictionary
    4c79b5
            @rtype: unicode
    4c79b5
            @return: navibar html
    4c79b5
            """
    4c79b5
            request = self.request
    4c79b5
            found = {} # pages we found. prevent duplicates
    4c79b5
            items = [] # navibar items
    4c79b5
            item = u'
  • %s
  • '
    4c79b5
            current = d['page_name']
    4c79b5
    4c79b5
            # Process config navi_bar
    4c79b5
            if request.cfg.navi_bar:
    4c79b5
                for text in request.cfg.navi_bar:
    4c79b5
                    pagename, link = self.splitNavilink(text)
    4c79b5
                    if pagename == current:
    4c79b5
                        cls = 'wikilink current'
    4c79b5
                    else:
    4c79b5
                        cls = 'wikilink'
    4c79b5
                    items.append(item % (cls, link))
    4c79b5
                    found[pagename] = 1
    4c79b5
    4c79b5
            # Add user links to wiki links, eliminating duplicates.
    4c79b5
            userlinks = request.user.getQuickLinks()
    4c79b5
            for text in userlinks:
    4c79b5
                # Split text without localization, user knows what he wants
    4c79b5
                pagename, link = self.splitNavilink(text, localize=0)
    4c79b5
                if not pagename in found:
    4c79b5
                    if pagename == current:
    4c79b5
                        cls = 'userlink current'
    4c79b5
                    else:
    4c79b5
                        cls = 'userlink'
    4c79b5
                    items.append(item % (cls, link))
    4c79b5
                    found[pagename] = 1
    4c79b5
    4c79b5
            # Add current page at end
    4c79b5
            if not current in found:
    4c79b5
                title = d['page'].split_title(request)
    4c79b5
                title = self.shortenPagename(title)
    4c79b5
                link = d['page'].link_to(request, title)
    4c79b5
                cls = 'current'
    4c79b5
                items.append(item % (cls, link))
    4c79b5
    4c79b5
            # Assemble html
    4c79b5
            items = u''.join(items)
    4c79b5
            html = u'''
    4c79b5
      4c79b5
      %s
      4c79b5
      4c79b5
      ''' % items
      4c79b5
              return html
      4c79b5
      4c79b5
      def execute(request):
      4c79b5
          """ Generate and return a theme object
      4c79b5
              
      4c79b5
          @param request: the request object
      4c79b5
          @rtype: MoinTheme
      4c79b5
          @return: Theme object
      4c79b5
          """
      4c79b5
          return Theme(request)