diff --git a/VERSION b/VERSION
index 9b37dbd4..a7487ac3 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-Version 2.00.0 (2012-08-18 16:21:48) dev
+Version 2.00.0 (2012-08-18 17:50:47) dev
diff --git a/gluon/contrib/markmin/markmin2html.py b/gluon/contrib/markmin/markmin2html.py
index 21d25964..c1672e2a 100755
--- a/gluon/contrib/markmin/markmin2html.py
+++ b/gluon/contrib/markmin/markmin2html.py
@@ -510,7 +510,7 @@ META = '\x06'
LINK = '\x07'
DISABLED_META = '\x08'
LATEX = '
'
-regex_URL=re.compile(r'@\{(?P\w+)/(?P.*?)\}')
+regex_URL=re.compile(r'@\{/(?P\w*)/(?P\w*)/(?P\w*(\.\w+)?)(/(?P[\w\.\-/]+))?\}')
regex_env=re.compile(r'@\{(?P[\w\-\.]+?)(\:(?P.*?))?\}')
regex_expand_meta = re.compile('('+META+'|'+DISABLED_META+')')
regex_dd=re.compile(r'\$\$(?P.*?)\$\$')
@@ -801,8 +801,9 @@ def render(text,
# this is experimental @{function/args}
# turns into a digitally signed URL
def u1(match,URL=URL):
- f,args = match.group('f','args')
- return URL(f,args=args.split('/'), scheme=True, host=True)
+ a,c,f,args = match.group('a','c','f','args')
+ return URL(a=a or None,c=c or None,f = f or None,
+ args=args.split('/'), scheme=True, host=True)
text = regex_URL.sub(u1,text)
if latex == 'google':
diff --git a/gluon/html.py b/gluon/html.py
index c20bb5ee..a25db62d 100644
--- a/gluon/html.py
+++ b/gluon/html.py
@@ -1358,6 +1358,8 @@ class A(DIV):
tag = 'a'
def xml(self):
+ if not self.components and self['_href']:
+ self.append(self['_href'])
if self['delete']:
d = "jQuery(this).closest('%s').remove();" % self['delete']
else:
diff --git a/gluon/tools.py b/gluon/tools.py
index d46799d6..e0520f99 100644
--- a/gluon/tools.py
+++ b/gluon/tools.py
@@ -4552,8 +4552,8 @@ class Wiki(object):
current.response.menu = self.menu(request.controller,
request.function)
zero = request.args(0)
- if zero=='_media':
- return self.media(request.args(1,cast=int))
+ if zero and zero.isdigit():
+ return self.media(int(zero))
elif not zero or not zero.startswith('_'):
return self.read(zero or 'index')
elif zero=='_edit':
@@ -4649,9 +4649,13 @@ class Wiki(object):
def editmedia(self,slug):
auth = self.auth
- db = auth.db
+ db = auth.db
page = db.wiki_page(slug=slug)
if not (page and self.can_edit(page)): return self.not_authorized(page)
+ self.auth.db.wiki_media.id.represent = lambda id,row:\
+ SPAN('@{////%i/%s.%s}' % \
+ (id,IS_SLUG.urlify(row.title.split('.')[0]),
+ row.file.split('.')[-1]))
self.auth.db.wiki_media.wiki_page.default = page.id
self.auth.db.wiki_media.wiki_page.writable = False
content = SQLFORM.grid(
@@ -4672,6 +4676,7 @@ class Wiki(object):
return dict(content=form)
def pages(self):
if not self.can_manage(): return self.not_authorized()
+ self.auth.db.wiki_page.id.represent = lambda id,row:SPAN('@{////%s}' % row.slug)
self.auth.db.wiki_page.title.represent = lambda title,row: \
A(title,_href=URL(args=row.slug))
content=SQLFORM.grid(
@@ -4691,7 +4696,7 @@ class Wiki(object):
media = db.wiki_media(id)
if media:
if self.manage_permissions:
- page = db.wiki_page(media.page)
+ page = db.wiki_page(media.wiki_page)
if not self.can_read(page): return self.not_authorized(page)
request.args = [media.file]
return current.response.download(request,db)