X-Git-Url: https://git.plutz.net/?a=blobdiff_plain;f=handlers%2F20_revision.sh;h=08350c7b80855bca4624a5091ea00f760edc6939;hb=8a93d4ef20815df18bfc1a580d3cffb8c6a31ea2;hp=a9c5d3975e75097502d1fe48c1c7e6a0a0dfed19;hpb=a6ae272ce0af6b93cabddf4aa4a3cebc7350f5a0;p=shellwiki diff --git a/handlers/20_revision.sh b/handlers/20_revision.sh old mode 100644 new mode 100755 index a9c5d39..08350c7 --- a/handlers/20_revision.sh +++ b/handlers/20_revision.sh @@ -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 '
'; md; printf '
'; } \ + | theme_page - "${page##*/}" + ) fi return 0 ;; - */[revision]/*):;; esac return 1