]> git.plutz.net Git - shellwiki/blobdiff - handlers/20_revision.sh
Merge commit '3812fa77d2234432e57912e3a6501259b30b1be5'
[shellwiki] / handlers / 20_revision.sh
old mode 100644 (file)
new mode 100755 (executable)
index a9c5d39..08350c7
@@ -1,15 +1,35 @@
 #!/bin/sh
 
 case "${PATH_INFO}" in
-  */\[revision\]|*/\[revision\]/)
-    if ! acl_read "${PATH_INFO%\[revision\]?}"; then
+  */\[revision\]/)
+    REDIRECT "${_BASE}${PATH_INFO%/}"
+    ;;
+  */\[revision\])
+    if ! acl_read "${PATH_INFO%\[revision\]}"; then
+      theme_error 403
+    else
+      theme_revisions "${PATH_INFO%\[revision\]}"
+    fi
+    return 0
+    ;;
+  */\[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
-      theme_revisions "${PATH_INFO%\[revision\]?}"
+    ( 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
     ;;
-  */[revision]/*):;;
 esac
 
 return 1