Switch to side-by-side view

--- a/ForgeWiki/forgewiki/wiki_main.py
+++ b/ForgeWiki/forgewiki/wiki_main.py
@@ -146,10 +146,45 @@
             return [
                 SitemapEntry(menu_id, '.')[SitemapEntry('Pages')[pages]] ]
 
+    def create_common_wiki_menu(self,
+                                has_create_access,
+                                create_page_url,
+                                create_page_class,
+                                admin_menu=False):
+        links = []
+        if has_create_access:
+            links += [SitemapEntry('Create Page', create_page_url,
+                                    ui_icon=g.icons['plus'],
+                                    className=create_page_class)]
+        if not admin_menu:
+            links += [SitemapEntry(''),
+                SitemapEntry('Wiki Home', self.url, className='wiki_home')]
+        links += [SitemapEntry('Browse Pages', self.url + 'browse_pages/'),
+                  SitemapEntry('Browse Labels', self.url + 'browse_tags/')]
+        discussion = c.app.config.discussion
+        pending_mod_count = M.Post.query.find({'discussion_id':discussion._id, 'status':'pending'}).count() if discussion else 0
+        if pending_mod_count and h.has_access(discussion, 'moderate')():
+            links.append(SitemapEntry('Moderate', discussion.url() + 'moderate', ui_icon=g.icons['pencil'],
+                small = pending_mod_count))
+        if not admin_menu:
+            links += [SitemapEntry(''),
+                SitemapEntry('Formatting Help',self.url+'markdown_syntax/')]
+        return links
+
     def admin_menu(self):
-        admin_url = c.project.url() + 'admin/' + self.config.options.mount_point + '/'
-        links = [SitemapEntry('Set Home', admin_url + 'home', className='admin_modal')]
+        admin_url = c.project.url() + \
+                    'admin/' + \
+                    self.config.options.mount_point + '/'
+        links = [SitemapEntry('Set Home',
+                              admin_url + 'home',
+                              className='admin_modal')]
+
+        if not self.show_left_bar:
+            links += self.create_common_wiki_menu(True,
+                        admin_url + 'create_wiki_page',
+                        'admin_modal', admin_menu=True)
         links += super(ForgeWikiApp, self).admin_menu(force_options=True)
+
         return links
 
     @h.exceptionless([], log)
@@ -160,24 +195,7 @@
             page = WM.Page.query.find(dict(app_config_id=self.config._id, title=page, deleted=False)).first()
         except:
             page = None
-        links = []
-        if has_access(self, 'create'):
-            links += [SitemapEntry('Create Page', c.app.url,
-                        ui_icon=g.icons['plus'], className='add_wiki_page'),
-                      SitemapEntry('')]
-        links += [
-            SitemapEntry('Wiki Home', c.app.url),
-            SitemapEntry('Browse Pages', c.app.url + 'browse_pages/'),
-            SitemapEntry('Browse Labels', c.app.url + 'browse_tags/')]
-        discussion = c.app.config.discussion
-        pending_mod_count = M.Post.query.find({'discussion_id':discussion._id, 'status':'pending'}).count() if discussion else 0
-        if pending_mod_count and h.has_access(discussion, 'moderate')():
-            links.append(SitemapEntry('Moderate', discussion.url() + 'moderate', ui_icon=g.icons['pencil'],
-                small = pending_mod_count))
-        links += [SitemapEntry(''),
-            SitemapEntry('Formatting Help',c.app.url+'markdown_syntax/')
-        ]
-        return links
+        return self.create_common_wiki_menu(has_access(self, 'create'),c.app.url,'add_wiki_page')
 
     def install(self, project):
         'Set up any default permissions and roles here'
@@ -456,7 +474,7 @@
         if cur > 1: prev = cur-1
         else: prev = None
         next = cur+1
-        hide_left_bar = not (c.app.show_left_bar or has_access(self.page, 'edit')())
+        hide_left_bar = not (c.app.show_left_bar)
         return dict(
             page=page,
             cur=cur, prev=prev, next=next,
@@ -478,7 +496,9 @@
         c.attachment_add = W.attachment_add
         c.attachment_list = W.attachment_list
         c.label_edit = W.label_edit
-        return dict(page=page, page_exists=page_exists)
+        hide_left_bar = not c.app.show_left_bar
+        return dict(page=page, page_exists=page_exists,
+            hide_left_bar=hide_left_bar)
 
     @without_trailing_slash
     @expose('json')
@@ -584,6 +604,7 @@
                labels=None, labels_old=None,
                viewable_by=None,
                new_viewable_by=None,**kw):
+        activity_verb = 'created'
         if not title:
             flash('You must provide a title for the page.','error')
             redirect('edit')
@@ -594,6 +615,7 @@
             self.page.viewable_by = ['all']
         else:
             require_access(self.page, 'edit')
+            activity_verb = 'modified'
         name_conflict = None
         if self.page.title != title:
             name_conflict = WM.Page.query.find(dict(app_config_id=c.app.config._id, title=title, deleted=False)).first()
@@ -603,12 +625,15 @@
                 if self.page.title == c.app.root_page_name:
                     WM.Globals.query.get(app_config_id=c.app.config._id).root = title
                 self.page.title = title
+                activity_verb = 'renamed'
         self.page.text = text
         if labels:
             self.page.labels = labels.split(',')
         else:
             self.page.labels = []
         self.page.commit()
+        g.director.create_activity(c.user, activity_verb, self.page,
+                target=c.project)
         if new_viewable_by:
             if new_viewable_by == 'all':
                 self.page.viewable_by.append('all')
@@ -723,6 +748,11 @@
                     home=self.app.root_page_name,
                     allow_config=has_access(self.app, 'configure')())
 
+    @expose('jinja:forgewiki:templates/wiki/admin_add_page.html')
+    def create_wiki_page(self):
+        return dict(app=self.app,
+                    allow_config=has_access(self.app, 'configure')())
+
     @without_trailing_slash
     @expose('jinja:forgewiki:templates/wiki/admin_options.html')
     def options(self):