X-Git-Url: https://git.plutz.net/?a=blobdiff_plain;f=handlers%2F40_revision.sh;fp=handlers%2F40_revision.sh;h=08350c7b80855bca4624a5091ea00f760edc6939;hb=c2d4d148a5155b27e7573462b12476df231e23f9;hp=0000000000000000000000000000000000000000;hpb=d5f49dcedc32f9eaa2932c0a9e9bf5ffbc92cab9;p=shellwiki diff --git a/handlers/40_revision.sh b/handlers/40_revision.sh new file mode 100755 index 0000000..08350c7 --- /dev/null +++ b/handlers/40_revision.sh @@ -0,0 +1,35 @@ +#!/bin/sh + +case "${PATH_INFO}" in + */\[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 + ( export PATH_INFO="${page}" + cd "${_DATA}/pages${page}" || cd "${_DATA}/pages/" + git -C "${_DATA}" show "${rev}:pages${PATH_INFO}#page.md" \ + | { printf '
'; md; printf '
'; } \ + | theme_page - "${page##*/}" + ) + fi + return 0 + ;; +esac + +return 1