wiki.auth() has wiki-menu page
This commit is contained in:
@@ -1 +1 @@
|
|||||||
Version 2.00.0 (2012-08-22 16:02:59) dev
|
Version 2.00.0 (2012-08-22 17:07:39) dev
|
||||||
|
|||||||
+26
-26
@@ -3136,10 +3136,9 @@ class Auth(object):
|
|||||||
new_record[key] = value
|
new_record[key] = value
|
||||||
id = archive_table.insert(**new_record)
|
id = archive_table.insert(**new_record)
|
||||||
return id
|
return id
|
||||||
def wiki(self,slug=None,env=None,automenu=True,manage_permissions=False,force_prefix=''):
|
def wiki(self,slug=None,env=None,manage_permissions=False,force_prefix=''):
|
||||||
if not hasattr(self,'_wiki'):
|
if not hasattr(self,'_wiki'):
|
||||||
self._wiki = Wiki(self,
|
self._wiki = Wiki(self,
|
||||||
automenu=automenu,
|
|
||||||
manage_permissions=manage_permissions,
|
manage_permissions=manage_permissions,
|
||||||
force_prefix=force_prefix,env=env)
|
force_prefix=force_prefix,env=env)
|
||||||
else:
|
else:
|
||||||
@@ -4468,13 +4467,12 @@ class Wiki(object):
|
|||||||
items = text.split('/')
|
items = text.split('/')
|
||||||
controller, function, args = items[0], items[1], items[2:]
|
controller, function, args = items[0], items[1], items[2:]
|
||||||
return LOAD(controller, function, args=args, ajax=True).xml()
|
return LOAD(controller, function, args=args, ajax=True).xml()
|
||||||
def __init__(self,auth,env=None,automenu=True,render='markmin',
|
def __init__(self,auth,env=None,render='markmin',
|
||||||
manage_permissions=False,force_prefix=''):
|
manage_permissions=False,force_prefix=''):
|
||||||
self.env = env or {}
|
self.env = env or {}
|
||||||
self.env['component'] = Wiki.component
|
self.env['component'] = Wiki.component
|
||||||
if render == 'markmin': render=self.markmin_render
|
if render == 'markmin': render=self.markmin_render
|
||||||
self.auth = auth
|
self.auth = auth
|
||||||
self.automenu = automenu
|
|
||||||
if self.auth.user:
|
if self.auth.user:
|
||||||
self.force_prefix = force_prefix % self.auth.user
|
self.force_prefix = force_prefix % self.auth.user
|
||||||
else:
|
else:
|
||||||
@@ -4489,7 +4487,6 @@ class Wiki(object):
|
|||||||
readable=False,writable=False),
|
readable=False,writable=False),
|
||||||
Field('title',unique=True),
|
Field('title',unique=True),
|
||||||
Field('body','text',notnull=True),
|
Field('body','text',notnull=True),
|
||||||
Field('menu'),
|
|
||||||
Field('tags','list:string'),
|
Field('tags','list:string'),
|
||||||
Field('can_read','list:string',writable=perms,readable=perms,
|
Field('can_read','list:string',writable=perms,readable=perms,
|
||||||
default=[Wiki.everybody]),
|
default=[Wiki.everybody]),
|
||||||
@@ -4555,9 +4552,8 @@ class Wiki(object):
|
|||||||
### END POLICY
|
### END POLICY
|
||||||
def __call__(self):
|
def __call__(self):
|
||||||
request = current.request
|
request = current.request
|
||||||
if self.automenu:
|
automenu = self.menu(request.controller,request.function)
|
||||||
current.response.menu = self.menu(request.controller,
|
current.response.menu += automenu
|
||||||
request.function)
|
|
||||||
zero = request.args(0)
|
zero = request.args(0)
|
||||||
if zero and zero.isdigit():
|
if zero and zero.isdigit():
|
||||||
return self.media(int(zero))
|
return self.media(int(zero))
|
||||||
@@ -4646,8 +4642,10 @@ class Wiki(object):
|
|||||||
db.wiki_page.can_edit.default = [auth.user_group_role()]
|
db.wiki_page.can_edit.default = [auth.user_group_role()]
|
||||||
db.wiki_page.title.default = title_guess
|
db.wiki_page.title.default = title_guess
|
||||||
db.wiki_page.slug.default = slug
|
db.wiki_page.slug.default = slug
|
||||||
db.wiki_page.menu.default = slug
|
if slug == 'wiki-menu':
|
||||||
db.wiki_page.body.default = '## %s\n\npage content' % title_guess
|
db.wiki_page.body.default = '- Menu Item > @////index\n- - Submenu > http://web2py.com'
|
||||||
|
else:
|
||||||
|
db.wiki_page.body.default = '## %s\n\npage content' % title_guess
|
||||||
vars = current.request.post_vars
|
vars = current.request.post_vars
|
||||||
if vars.body:
|
if vars.body:
|
||||||
vars.body=vars.body.replace('://%s' % self.host,'://HOSTNAME')
|
vars.body=vars.body.replace('://%s' % self.host,'://HOSTNAME')
|
||||||
@@ -4718,23 +4716,23 @@ class Wiki(object):
|
|||||||
def menu(self,controller='default',function='index'):
|
def menu(self,controller='default',function='index'):
|
||||||
db = self.auth.db
|
db = self.auth.db
|
||||||
request = current.request
|
request = current.request
|
||||||
rows = db((db.wiki_page.menu!=None)|(db.wiki_page.menu!=''))\
|
menu_page = db.wiki_page(slug='wiki-menu')
|
||||||
.select(db.wiki_page.menu,db.wiki_page.title,db.wiki_page.slug,
|
|
||||||
orderby = db.wiki_page.menu)
|
|
||||||
menu = []
|
menu = []
|
||||||
tree = {'.':menu}
|
if menu_page:
|
||||||
regex = re.compile('\d\:')
|
tree = {'':menu}
|
||||||
for row in rows:
|
regex = re.compile('[\r\n\t]*(?P<base>(\s*\-\s*)+)(?P<title>\w.*?)\s+\>\s+(?P<link>\S+)')
|
||||||
if row.menu:
|
for match in regex.finditer(self.fix_hostname(menu_page.body)):
|
||||||
key = './'+regex.sub('',row.menu)
|
base = match.group('base').replace(' ','')
|
||||||
base = key.rsplit('/',1)[0]
|
title = match.group('title')
|
||||||
subtree = tree[key] = []
|
link = match.group('link')
|
||||||
if base in tree:
|
if link.startswith('@'):
|
||||||
tree[base].append((current.T(row.title),
|
items = link[1:].split('/')
|
||||||
request.args(0)==row.slug,
|
if len(items)>3:
|
||||||
URL(controller,function,args=row.slug),
|
link = URL(a=items[0] or None,c=items[1] or None,f=items[2] or None, args=items[3:])
|
||||||
subtree))
|
parent = tree.get(base[1:],tree[''])
|
||||||
#if self.auth.user:
|
subtree = []
|
||||||
|
tree[base] = subtree
|
||||||
|
parent.append((current.T(title),False,link,subtree))
|
||||||
if True:
|
if True:
|
||||||
submenu = []
|
submenu = []
|
||||||
menu.append((current.T('[Wiki]'),None,None,submenu))
|
menu.append((current.T('[Wiki]'),None,None,submenu))
|
||||||
@@ -4765,6 +4763,8 @@ class Wiki(object):
|
|||||||
# if self.can_manage():
|
# if self.can_manage():
|
||||||
submenu.append((current.T('Manage Pages'),None,
|
submenu.append((current.T('Manage Pages'),None,
|
||||||
URL(controller,function,args=('_pages'))))
|
URL(controller,function,args=('_pages'))))
|
||||||
|
submenu.append((current.T('Edit Menu'),None,
|
||||||
|
URL(controller,function,args=('_edit','wiki-menu'))))
|
||||||
# if self.can_search():
|
# if self.can_search():
|
||||||
submenu.append((current.T('Search Pages'),None,
|
submenu.append((current.T('Search Pages'),None,
|
||||||
URL(controller,function,args=('_search'))))
|
URL(controller,function,args=('_search'))))
|
||||||
|
|||||||
Reference in New Issue
Block a user