]> git.plutz.net Git - shellwiki/blobdiff - handlers/90_brackets.sh
Merge commit '6bc502434737d7f08379e79b94fc6fda424ef779'
[shellwiki] / handlers / 90_brackets.sh
index f509294c69f470217dc7adc32a8d6844bc7da45e..1960eb76b97cbe854a55a7a84047fa4baf90585b 100755 (executable)
@@ -1,11 +1,32 @@
 #!/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
-  */\[*\]/*)
-    if [ ! "$(mdfile "${PATH_INFO}")" ]; then
+  */\[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
@@ -14,6 +35,11 @@ case "${PATH_INFO}" in
     fi
     return 0
     ;;
+  *)
+    if [ -d "$_DATA/pages${PATH_INFO}/" -o -d "$_EXEC/pages${PATH_INFO}/" ]; then
+      REDIRECT "${_BASE}${PATH_INFO}/"
+    fi
+    ;;
 esac
 
 return 1