--- 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):