some blogging capabilities to auth.wiki
This commit is contained in:
@@ -1 +1 @@
|
|||||||
Version 2.00.0 (2012-07-29 18:09:36) dev
|
Version 2.00.0 (2012-07-29 20:54:57) dev
|
||||||
|
|||||||
+37
-25
@@ -4386,6 +4386,7 @@ def first_paragraph(mm):
|
|||||||
|
|
||||||
class Wiki(object):
|
class Wiki(object):
|
||||||
everybody = 'everybody'
|
everybody = 'everybody'
|
||||||
|
rows_page = 25
|
||||||
regex_redirect = re.compile('redirect\s+(\w+\://\S+)\s*')
|
regex_redirect = re.compile('redirect\s+(\w+\://\S+)\s*')
|
||||||
def __init__(self,auth,env=None,automenu=True,render='markmin',
|
def __init__(self,auth,env=None,automenu=True,render='markmin',
|
||||||
manage_permissions=False,force_prefix=None):
|
manage_permissions=False,force_prefix=None):
|
||||||
@@ -4425,33 +4426,42 @@ class Wiki(object):
|
|||||||
Field('file','upload',required=True),
|
Field('file','upload',required=True),
|
||||||
auth.signature,format='%(title)s')
|
auth.signature,format='%(title)s')
|
||||||
def update_tags_insert(page,id,db=db):
|
def update_tags_insert(page,id,db=db):
|
||||||
for tag in page.tags:
|
for tag in page.tags or []:
|
||||||
tag = tag.strip().lower()
|
tag = tag.strip().lower()
|
||||||
if tag: db.wiki_tag.insert(name=tag,wiki_page=id)
|
if tag: db.wiki_tag.insert(name=tag,wiki_page=id)
|
||||||
def update_tags_update(dbset,page,db=db):
|
def update_tags_update(dbset,page,db=db):
|
||||||
page = dbset.select().first()
|
page = dbset.select().first()
|
||||||
db(db.wiki_tag.wiki_page==page.id).delete()
|
db(db.wiki_tag.wiki_page==page.id).delete()
|
||||||
for tag in page.tags:
|
for tag in page.tags or []:
|
||||||
tag = tag.strip().lower()
|
tag = tag.strip().lower()
|
||||||
if tag: db.wiki_tag.insert(name=tag,wiki_page=page.id)
|
if tag: db.wiki_tag.insert(name=tag,wiki_page=page.id)
|
||||||
db.wiki_page._after_insert.append(update_tags_insert)
|
db.wiki_page._after_insert.append(update_tags_insert)
|
||||||
db.wiki_page._after_update.append(update_tags_update)
|
db.wiki_page._after_update.append(update_tags_update)
|
||||||
def __call__(self):
|
def __call__(self):
|
||||||
|
request = current.request
|
||||||
if self.automenu:
|
if self.automenu:
|
||||||
current.response.menu = self.menu(current.request.controller,
|
current.response.menu = self.menu(request.controller,
|
||||||
current.request.function)
|
request.function)
|
||||||
if current.request.args(0)=='_edit':
|
if request.args(0)=='_edit':
|
||||||
return self.edit(current.request.args(1) or 'index')
|
return self.edit(request.args(1) or 'index')
|
||||||
elif current.request.args(0)=='_pages':
|
elif request.args(0)=='_pages':
|
||||||
return self.pages()
|
return self.pages()
|
||||||
elif current.request.args(0)=='_media':
|
elif request.args(0)=='_media':
|
||||||
return self.media(current.request.args(1,cast=int))
|
return self.media(request.args(1,cast=int))
|
||||||
elif current.request.args(0)=='_search':
|
elif request.args(0)=='_search':
|
||||||
return self.search()
|
return self.search()
|
||||||
elif current.request.args(0)=='_cloud':
|
elif request.args(0)=='_recent':
|
||||||
|
ipage = int(request.vars.page or 0)
|
||||||
|
query = self.auth.db.wiki_page.created_by==request.args(1,cast=int)
|
||||||
|
return self.search(query=query,
|
||||||
|
orderby=~self.auth.db.wiki_page.created_on,
|
||||||
|
limitby=(ipage*self.rows_page,
|
||||||
|
(ipage+1)*self.rows_page),
|
||||||
|
)
|
||||||
|
elif request.args(0)=='_cloud':
|
||||||
return self.cloud()
|
return self.cloud()
|
||||||
else:
|
else:
|
||||||
return self.read(current.request.args(0) or 'index')
|
return self.read(request.args(0) or 'index')
|
||||||
def check_permission(self,page,field='can_read'):
|
def check_permission(self,page,field='can_read'):
|
||||||
if not self.manage_permissions:
|
if not self.manage_permissions:
|
||||||
return True
|
return True
|
||||||
@@ -4543,8 +4553,9 @@ 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().select(db.wiki_page.menu,db.wiki_page.title,db.wiki_page.slug,
|
rows = db((db.wiki_page.menu!=None)|(db.wiki_page.menu!=''))\
|
||||||
orderby = db.wiki_page.menu)
|
.select(db.wiki_page.menu,db.wiki_page.title,db.wiki_page.slug,
|
||||||
|
orderby = db.wiki_page.menu)
|
||||||
menu = []
|
menu = []
|
||||||
tree = {'.':menu}
|
tree = {'.':menu}
|
||||||
for row in rows:
|
for row in rows:
|
||||||
@@ -4572,11 +4583,11 @@ class Wiki(object):
|
|||||||
URL(controller,function,args=('_cloud'))))
|
URL(controller,function,args=('_cloud'))))
|
||||||
menu.append((current.T('[Wiki]'),None,None,submenu))
|
menu.append((current.T('[Wiki]'),None,None,submenu))
|
||||||
return menu
|
return menu
|
||||||
def search(self,tags=None,cloud=True,preview=True,
|
def search(self,tags=None,query=None,cloud=True,preview=True,
|
||||||
limitby=(0,100),orderby=None):
|
limitby=(0,100),orderby=None):
|
||||||
|
request = current.request
|
||||||
content = CAT()
|
content = CAT()
|
||||||
if not tags:
|
if tags is None and query is None:
|
||||||
request = current.request
|
|
||||||
form = SQLFORM.factory(Field('tags',requires=IS_NOT_EMPTY(),
|
form = SQLFORM.factory(Field('tags',requires=IS_NOT_EMPTY(),
|
||||||
default=request.vars.tags,
|
default=request.vars.tags,
|
||||||
label=current.T('Search')))
|
label=current.T('Search')))
|
||||||
@@ -4584,18 +4595,20 @@ class Wiki(object):
|
|||||||
if request.vars:
|
if request.vars:
|
||||||
tags = [v.strip() for v in request.vars.tags.split(',')]
|
tags = [v.strip() for v in request.vars.tags.split(',')]
|
||||||
tags = [v for v in tags if v]
|
tags = [v for v in tags if v]
|
||||||
if tags:
|
if tags or not query is None:
|
||||||
db = self.auth.db
|
db = self.auth.db
|
||||||
count = db.wiki_tag.wiki_page.count()
|
count = db.wiki_tag.wiki_page.count()
|
||||||
fields = [db.wiki_page.id,db.wiki_page.slug,
|
fields = [db.wiki_page.id,db.wiki_page.slug,
|
||||||
db.wiki_page.title,db.wiki_page.tags]
|
db.wiki_page.title,db.wiki_page.tags]
|
||||||
if preview:
|
if preview:
|
||||||
fields.append(db.wiki_page.body)
|
fields.append(db.wiki_page.body)
|
||||||
pages = db(db.wiki_page.id==db.wiki_tag.wiki_page) \
|
if query is None:
|
||||||
(db.wiki_tag.name.belongs(tags)).select(
|
query = (db.wiki_page.id==db.wiki_tag.wiki_page)&\
|
||||||
*fields,**dict(orderby=orderby or ~count,
|
(db.wiki_tag.name.belongs(tags))
|
||||||
groupby=db.wiki_page.id,
|
pages = db(query).select(
|
||||||
limitby=limitby))
|
*fields,**dict(orderby=orderby or ~count,
|
||||||
|
groupby=db.wiki_page.id,
|
||||||
|
limitby=limitby))
|
||||||
if request.extension in ('html','load'):
|
if request.extension in ('html','load'):
|
||||||
if not pages:
|
if not pages:
|
||||||
content.append(DIV(T("No results",_class='w2p_wiki_form')))
|
content.append(DIV(T("No results",_class='w2p_wiki_form')))
|
||||||
@@ -4605,8 +4618,7 @@ class Wiki(object):
|
|||||||
MARKMIN(first_paragraph(p.body)) \
|
MARKMIN(first_paragraph(p.body)) \
|
||||||
if preview else '',
|
if preview else '',
|
||||||
SPAN(*[link(t.strip()) for t in \
|
SPAN(*[link(t.strip()) for t in \
|
||||||
p.tags.split(',') \
|
p.tags or [] if t.strip()]),
|
||||||
if t.strip()]),
|
|
||||||
_class='w2p_wiki_tags')
|
_class='w2p_wiki_tags')
|
||||||
for p in pages]
|
for p in pages]
|
||||||
content.append(DIV(_class='w2p_wiki_pages',*items))
|
content.append(DIV(_class='w2p_wiki_pages',*items))
|
||||||
|
|||||||
Reference in New Issue
Block a user