Shuffle the layout around a bit again.
[matthijs/projects/wipi.git] / plugin / theme / site.py
index e9344851be65d92f702aa69a199296f8e569cbaf..37bff91f75dc2e4b3341aa25054417f6f7bf8ab1 100644 (file)
@@ -10,6 +10,8 @@
 """
 
 from MoinMoin.theme import ThemeBase
+from MoinMoin.Page import Page
+from MoinMoin import wikiutil
 
 class SiteTheme(ThemeBase):
 
@@ -24,6 +26,12 @@ class SiteTheme(ThemeBase):
             return ThemeBase.searchform(self, d)
         else:
             return ''
+    
+    def navibar(self, d):
+        if self.request.user.valid:
+            return ThemeBase.navibar(self, d)
+        else:
+            return ''
 
     def header(self, d, **kw):
         """ Assemble wiki header
@@ -38,19 +46,17 @@ class SiteTheme(ThemeBase):
 
             # Header
             u'<div id="header">',
+            self.menu(d),
             #self.logo(),
-            self.searchform(d),
             #self.username(d),
-            u'<div id="locationline">',
+            #u'<div id="locationline">',
             #self.interwiki(d),
-            self.title(d),
-            u'</div>',
-            self.trail(d),
+            #self.title(d),
+            #u'</div>',
             #self.navibar(d),
             #u'<hr id="pageline">',
             #u'<div id="pageline"><hr style="display:none;"></div>',
-            self.msg(d),
-            self.editbar(d),
+            ##self.trail(d),
             u'</div>',
 
             # Post header custom html (not recommended)
@@ -58,6 +64,8 @@ class SiteTheme(ThemeBase):
 
             # Start of page
             self.startPage(),
+            self.editbar(d),
+            self.msg(d),
         ]
         return u'\n'.join(html)
 
@@ -74,8 +82,7 @@ class SiteTheme(ThemeBase):
 
             # Header
             u'<div id="header">',
-            self.title(d),
-            self.msg(d),
+            self.menu(d),
             u'</div>',
 
             # Post header custom html (not recommended)
@@ -83,6 +90,7 @@ class SiteTheme(ThemeBase):
 
             # Start of page
             self.startPage(),
+            self.msg(d),
         ]
         return u'\n'.join(html)
 
@@ -97,7 +105,6 @@ class SiteTheme(ThemeBase):
         page = d['page']
         html = [
             # End of page
-            self.pageinfo(page),
             self.endPage(),
 
             # Pre footer custom html (not recommended!)
@@ -106,6 +113,8 @@ class SiteTheme(ThemeBase):
             # Footer
             u'<div id="footer">',
             self.username(d),
+            self.pageinfo(page),
+            self.searchform(d),
             #self.editbar(d),
             #self.credits(d),
             #self.showversion(d, **keywords),
@@ -116,6 +125,48 @@ class SiteTheme(ThemeBase):
             ]
         return u'\n'.join(html)
 
+    def menu(self, d):
+        """ Assemble a "main" menu
+            
+            @param d: parameter dictionary
+            @rtype:   unicode
+            @return: menu html
+        """
+        items = Page(self.request, 'Site/Menu').data.split('\n')
+        
+        html = '<ul id="menubar">'
+
+        for item in items:
+            if (not item.startswith("#")):
+                (pagename, link) = self.splitNavilink(item)
+                html = html + ("<li class=\"menulink\">%s</li>" % link)
+        
+        html = html + '</ul>'
+
+        return html
+
+    def theme_script(self, name):
+        """ Format script html from this theme's static dir """
+        src = '%s/%s/js/%s.js' % (self.request.cfg.url_prefix_static, self.name, name)
+        return '<script type="text/javascript" src="%s"></script>' % src
+
+    def pageinfo(self, page):
+        """ Output page name and "last modified". This overwrites the pageinfo
+        from ThemeBase to hide the username, which is useless and always
+        produces a link to the non-existing homepage of the last editor. """
+        _ = self.request.getText
+        html = ''
+        if self.shouldShowPageinfo(page):
+            info = page.lastEditInfo()
+            if info:
+                info = _("last modified %(time)s") % info
+                pagename = page.page_name
+                info = "%s  (%s)" % (wikiutil.escape(pagename), info)
+                html = '<p id="pageinfo" class="info"%(lang)s>%(info)s</p>\n' % {
+                    'lang': self.ui_lang_attr(),
+                    'info': info
+                    }
+        return html
 
 def execute(request):
     """
@@ -127,3 +178,4 @@ def execute(request):
     """
     return Theme(request)
 
+# vim: set sw=4 sts=4 expandtab: