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