auth.wiki() has _create

This commit is contained in:
mdipierro
2012-08-02 00:17:23 -05:00
parent 1233eea690
commit 071b39f39b
2 changed files with 36 additions and 18 deletions
+1 -1
View File
@@ -1 +1 @@
Version 2.00.0 (2012-08-02 00:02:42) dev Version 2.00.0 (2012-08-02 00:17:19) dev
+35 -17
View File
@@ -4411,8 +4411,9 @@ class Wiki(object):
db = auth.db db = auth.db
db.define_table( db.define_table(
'wiki_page', 'wiki_page',
Field('slug',requires=[IS_SLUG(),IS_NOT_IN_DB(db,'wiki_page.slug')], Field('slug',
readable=False,writable=False), requires=[IS_SLUG(),IS_NOT_IN_DB(db,'wiki_page.slug')],
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('menu'),
@@ -4479,17 +4480,22 @@ class Wiki(object):
if self.automenu: if self.automenu:
current.response.menu = self.menu(request.controller, current.response.menu = self.menu(request.controller,
request.function) request.function)
if request.args(0)=='_edit': zero = request.args(0)
return self.edit(request.args(1) or 'index') if zero=='_media':
elif request.args(0)=='_editmedia':
return self.editmedia(request.args(1) or 'index')
elif request.args(0)=='_pages':
return self.pages()
elif request.args(0)=='_media':
return self.media(request.args(1,cast=int)) return self.media(request.args(1,cast=int))
elif request.args(0)=='_search': elif not zero or not zero.startswith('_'):
return self.read(zero or 'index')
elif zero=='_edit':
return self.edit(request.args(1) or 'index')
elif zero=='_editmedia':
return self.editmedia(request.args(1) or 'index')
elif zero=='_create':
return self.create()
elif zero=='_pages':
return self.pages()
elif zero=='_search':
return self.search() return self.search()
elif request.args(0)=='_recent': elif zero=='_recent':
ipage = int(request.vars.page or 0) ipage = int(request.vars.page or 0)
query = self.auth.db.wiki_page.created_by==request.args(1,cast=int) query = self.auth.db.wiki_page.created_by==request.args(1,cast=int)
return self.search(query=query, return self.search(query=query,
@@ -4497,10 +4503,9 @@ class Wiki(object):
limitby=(ipage*self.rows_page, limitby=(ipage*self.rows_page,
(ipage+1)*self.rows_page), (ipage+1)*self.rows_page),
) )
elif request.args(0)=='_cloud': elif zero=='_cloud':
return self.cloud() return self.cloud()
else:
return self.read(request.args(0) or 'index')
def first_paragraph(self,page): def first_paragraph(self,page):
if not self.can_read(page): if not self.can_read(page):
@@ -4514,6 +4519,8 @@ class Wiki(object):
if slug in '_cloud': if slug in '_cloud':
return self.cloud() return self.cloud()
page = self.auth.db.wiki_page(slug=slug) page = self.auth.db.wiki_page(slug=slug)
if not page:
redirect(URL(args=('_create',slug)))
if not self.can_read(page): return self.not_authorized(page) if not self.can_read(page): return self.not_authorized(page)
if current.request.extension == 'html': if current.request.extension == 'html':
if not page: if not page:
@@ -4582,7 +4589,16 @@ class Wiki(object):
args=['_editmedia',slug], args=['_editmedia',slug],
user_signature=False) user_signature=False)
return dict(content=content) return dict(content=content)
def create(self):
if not self.can_edit(): return self.not_authorized()
db = self.auth.db
form = SQLFORM.factory(
Field('slug',default=current.request.args(1),
label = 'New Page',
requires=(IS_SLUG(),IS_NOT_IN_DB(db,db.wiki_page.slug))))
if form.process().accepted:
redirect(URL(args=('_edit',form.vars.slug)))
return dict(content=form)
def pages(self): def pages(self):
if not self.can_manage(): return self.not_authorized() if not self.can_manage(): return self.not_authorized()
self.auth.db.wiki_page.title.represent = lambda title,row: \ self.auth.db.wiki_page.title.represent = lambda title,row: \
@@ -4594,7 +4610,7 @@ class Wiki(object):
A('edit',_href=URL(args=('_edit',row.slug))), A('edit',_href=URL(args=('_edit',row.slug))),
lambda row: \ lambda row: \
A('media',_href=URL(args=('_editmedia',row.slug)))], A('media',_href=URL(args=('_editmedia',row.slug)))],
details=False,editable=False,deletable=False, details=False,editable=False,deletable=False,create=False,
orderby=self.auth.db.wiki_page.title, orderby=self.auth.db.wiki_page.title,
args=['_pages'], args=['_pages'],
user_signature=False) user_signature=False)
@@ -4655,9 +4671,11 @@ class Wiki(object):
submenu.append((current.T('Edit Page Media'),None, submenu.append((current.T('Edit Page Media'),None,
URL(controller,function,args=('_editmedia',slug)))) URL(controller,function,args=('_editmedia',slug))))
submenu.append((current.T('Create New Page'),None,
URL(controller,function,args=('_create'))))
# 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'))))
# 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'))))