case "${PATH_INFO}" in
*/\[revision\]/)
- REDIRECT "${_BASE}/${PATH_INFO%/}"
+ REDIRECT "${_BASE}${PATH_INFO%/}"
;;
*/\[revision\])
if ! acl_read "${PATH_INFO%\[revision\]}"; then
fi
return 0
;;
- */[revision]/*):;;
+ */\[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 '<article class="revision">'; md; printf '</article>'; } \
+ | theme_page - "${page##*/}"
+ )
+ fi
+ return 0
+ ;;
esac
return 1