]> git.plutz.net Git - shellwiki/blobdiff - handlers/20_revision.sh
Merge commit '72942c2a358db28190e2a6700a348d179db1c45e'
[shellwiki] / handlers / 20_revision.sh
old mode 100644 (file)
new mode 100755 (executable)
index b34b2b9..08350c7
@@ -2,7 +2,7 @@
 
 case "${PATH_INFO}" in
   */\[revision\]/)
-    REDIRECT "${_BASE}/${PATH_INFO%/}"
+    REDIRECT "${_BASE}${PATH_INFO%/}"
     ;;
   */\[revision\])
     if ! acl_read "${PATH_INFO%\[revision\]}"; then
@@ -12,7 +12,24 @@ case "${PATH_INFO}" in
     fi
     return 0
     ;;
-  */[revision]/*):;;
+  */\[revision\]/\[*\]|*/\[revision\]/*/*)
+    REDIRECT "${_BASE}${PATH_INFO%%\[revision\]/*}${PATH_INFO##*/\[revision\]/}"
+    ;;
+  */\[revision\]/*)
+    page="${PATH_INFO%\[revision\]/*}"
+    rev="${PATH_INFO##*/}"
+    if ! acl_read "${page}"; then
+      theme_error 403
+    else
+    ( export PATH_INFO="${page}"
+      cd "${_DATA}/pages${page}" || cd "${_DATA}/pages/"
+      git -C "${_DATA}" show "${rev}:pages${PATH_INFO}#page.md" \
+      | { printf '<article class="revision">'; md; printf '</article>'; } \
+      | theme_page - "${page##*/}"
+    )
+    fi
+    return 0
+    ;;
 esac
 
 return 1