Add .webm extension for <video>
[geekigeeki.git] / geekigeeki.py
index 044c7bfa55600abaebbee95d59a2b307fb1e0bd4..7700585b975aefeda856cefd643d4276f66cb1d0 100755 (executable)
@@ -21,7 +21,7 @@ title_done = False
 import cgi, sys, os, re, errno, stat, glob
 
 image_ext = 'png|gif|jpg|jpeg|bmp|ico'
-video_ext = "ogg|ogv|oga" # Not supported by Firefox 3.5: mkv|mpg|mpeg|mp4|avi|asf|flv|wmv|qt
+video_ext = "ogg|ogv|oga|webm" # Not supported by Firefox 3.5: mkv|mpg|mpeg|mp4|avi|asf|flv|wmv|qt
 image_re = re.compile(r".*\.(" + image_ext + "|" +  video_ext + ")$", re.IGNORECASE)
 video_re = re.compile(r".*\.(" + video_ext + ")$", re.IGNORECASE)
 # FIXME: we accept stuff like foo/../bar and we shouldn't
@@ -107,6 +107,8 @@ def url_args(kvargs):
 
 def emit_header(mtime=None, mime_type="text/html"):
     if mtime:
+        # Prevent caching when the wiki engine gets updated
+        mtime = max(mtime, os.stat(__file__).st_mtime)
         print("Last-Modified: " + strftime("%a, %d %b %Y %H:%M:%S GMT", gmtime(mtime)))
     if mime_type:
         print("Content-type: " + mime_type + "; charset=utf-8")
@@ -173,7 +175,7 @@ def link_inline(name, descr=None, kvargs={}):
 def link_inline_glob(pattern, descr=None, kvargs={}):
     if not url_re.match(pattern) and bool(set(pattern) & set('?*[')):
         s = ''
-        for name in glob.glob(pattern):
+        for name in sorted(glob.glob(pattern), reverse=bool(int(kvargs.get('reverse', '0'))) ):
             s += link_inline(name, descr, kvargs)
         return s
     else:
@@ -228,7 +230,7 @@ def handle_atom(pagename, form):
     Page(pagename).send_atom()
 
 def handle_edit(pagename, form):
-    pg  = Page(form['q'].value)
+    pg  = Page(pagename)
     if 'save' in form:
         if form['file'].value:
             pg.save(form['file'].file.read(), form['changelog'].value)
@@ -573,7 +575,7 @@ class Page:
         except IOError, err:
             if err.errno == errno.ENOENT:
                 if default is None:
-                    default = '//[[?a=edit&q=%s|Describe %s]]//' % (self.page_name, self.page_name)
+                    default = '//[[%s?a=edit|Describe %s]]//' % (self.page_name, self.page_name)
                 return default
             if err.errno == errno.EISDIR:
                 return self.format_dir()
@@ -661,7 +663,7 @@ class Page:
         editable = name and self.can_write() and is_privileged()
         if editable:
             print(' <link rel="alternate" type="application/x-wiki" title="Edit this page" href="%s" />' \
-                % relative_url('?a=edit&q=' + name, privileged=True))
+                % relative_url(name + '?a=edit', privileged=True))
 
         history = config_get('history_url')
         if history is not None:
@@ -672,7 +674,7 @@ class Page:
 
         # BODY
         if editable:
-            print('<body ondblclick="location.href=\'' + relative_url('?a=edit&q=' + name, privileged=True) + '\'">')
+            print('<body ondblclick="location.href=\'' + relative_url(name + '?a=edit', privileged=True) + '\'">')
         else:
             print('<body>')
 
@@ -699,13 +701,13 @@ class Page:
             print(' | ' + link_tag(name + '?a=raw', 'Raw Text', cssclass='navlink'))
             if config_get('privileged_url') is not None:
                 if self.can_write():
-                    print(' | ' + link_tag('?a=edit&q=' + name, 'Edit', cssclass='navlink', privileged=True))
+                    print(' | ' + link_tag(name + '?a=edit', 'Edit', cssclass='navlink', privileged=True))
                 else:
-                    print(' | ' + link_tag(name, 'Login', cssclass='navlink', privileged=True))
+                    print(' | ' + link_tag(name, 'Login', cssclass='login', privileged=True))
 
         user = remote_user()
         if user != 'AnonymousCoward':
-            print(' | <span class="login"><i><b>' + link_tag('User/' + user, user) + '</b></i></span>')
+            print(' | ' + link_tag('user/' + user, user, cssclass='login'))
 
         print('<hr /></div></nav>')