]> git.plutz.net Git - shellwiki/blob - handlers/20_revision.sh
introduce css pragma as separate handler
[shellwiki] / handlers / 20_revision.sh
1 #!/bin/sh
2
3 case "${PATH_INFO}" in
4   */\[revision\]/)
5     REDIRECT "${_BASE}${PATH_INFO%/}"
6     ;;
7   */\[revision\])
8     if ! acl_read "${PATH_INFO%\[revision\]}"; then
9       theme_error 403
10     else
11       theme_revisions "${PATH_INFO%\[revision\]}"
12     fi
13     return 0
14     ;;
15   */\[revision\]/\[*\]|*/\[revision\]/*/*)
16     REDIRECT "${_BASE}${PATH_INFO%%\[revision\]/*}${PATH_INFO##*/\[revision\]/}"
17     ;;
18   */\[revision\]/*)
19     page="${PATH_INFO%\[revision\]/*}"
20     rev="${PATH_INFO##*/}"
21     if ! acl_read "${page}"; then
22       theme_error 403
23     else
24     ( export PATH_INFO="${page}"
25       cd "${_DATA}/pages${page}" || cd "${_DATA}/pages/"
26       git -C "${_DATA}" show "${rev}:pages${PATH_INFO}#page.md" \
27       | { printf '<article class="revision">'; md; printf '</article>'; } \
28       | theme_page - "${page##*/}"
29     )
30     fi
31     return 0
32     ;;
33 esac
34
35 return 1