]> git.plutz.net Git - shellwiki/blob - handlers/40_revision.sh
handle accidental double language links
[shellwiki] / handlers / 40_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       "$_EXEC/macros/revisions" --list --diff "$page" \
12       | theme_revisions -
13     fi
14     return 0
15     ;;
16   */\[revision\]/\[*\]|*/\[revision\]/*/*)
17     REDIRECT "${_BASE}${PATH_INFO%%\[revision\]/*}${PATH_INFO##*/\[revision\]/}"
18     ;;
19   */\[revision\]/*)
20     page="${PATH_INFO%\[revision\]/*}"
21     rev="${PATH_INFO##*/}"
22     if ! acl_read "${page}"; then
23       theme_error 403
24     else
25     ( export PATH_INFO="${page}"
26       cd "${_DATA}/pages${page}" || cd "${_DATA}/pages/"
27       git -C "${_DATA}" show "${rev}:pages${PATH_INFO}#page.md" \
28       | { printf '<article class="revision">'; md; printf '</article>'; } \
29       | theme_page - "${page##*/}"
30     )
31     fi
32     return 0
33     ;;
34 esac
35
36 return 1