X-Git-Url: https://git.plutz.net/?a=blobdiff_plain;f=handlers%2F90_brackets.sh;h=1960eb76b97cbe854a55a7a84047fa4baf90585b;hb=e9bb2b8721a5a47baa5b41ddead1238ea2a23221;hp=b6b25383f32b4d58e000ac110e3cb0d0b45b64e5;hpb=801a5a731ec85902cd7eba7c4d42e5681e1df40f;p=shellwiki diff --git a/handlers/90_brackets.sh b/handlers/90_brackets.sh index b6b2538..1960eb7 100755 --- a/handlers/90_brackets.sh +++ b/handlers/90_brackets.sh @@ -1,13 +1,45 @@ #!/bin/sh -# spacial case for bracket pages that are not handled otherwise +# Copyright 2022 Paul Hänsch +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED “AS IS” AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +# IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +# ---------------------------------------------------------------------------- +# special case for odd pages that are not handled otherwise +# usually those pages look like handlers (i.e. containing brackets) +# but are not # attachment and edit (and really all) handlers should take precedence case "${PATH_INFO}" in - */\[*\]/*) - theme_page "${PATH_INFO}" + */\[view\]) + # explicit view handler for linking + REDIRECT "${_BASE}${PATH_INFO%\[view\]}" + ;; + */) + if ! mdfile "${PATH_INFO}" >&-; then + theme_error 404 + elif ! acl_read "${PATH_INFO}"; then + theme_error 403 + else + theme_page "${PATH_INFO}" + fi return 0 ;; + *) + if [ -d "$_DATA/pages${PATH_INFO}/" -o -d "$_EXEC/pages${PATH_INFO}/" ]; then + REDIRECT "${_BASE}${PATH_INFO}/" + fi + ;; esac return 1