X-Git-Url: https://git.plutz.net/?a=blobdiff_plain;f=themes%2Fdefault.sh;h=3c5f2a1819a000277c06dc31451a2013f1335812;hb=190657ed71861114213d0bd8128bd157a69f17ff;hp=7edd4b9986c60ad8e989f07a2740c7dc327d7c48;hpb=048d632f308bf93536f35fcebbe56d82671e0a14;p=shellwiki diff --git a/themes/default.sh b/themes/default.sh index 7edd4b9..3c5f2a1 100755 --- a/themes/default.sh +++ b/themes/default.sh @@ -23,10 +23,10 @@ theme_page(){ title="${page%/}"; title="${title##*/}" if [ ! "$(mdfile "$page")" ]; then - theme_404 + theme_error 404 return 0 elif ! acl_read "$page"; then - theme_403 + theme_error 403 return 0 fi @@ -57,17 +57,16 @@ theme_page(){ } theme_editor(){ - local page="$1" title + local page="$1" template="$2" title title="${page%/}"; title="${title##*/}" - if [ ! "$(mdfile "$page")" ]; then - theme_404 - return 0 - elif ! acl_write "$page"; then - theme_403 + if ! acl_write "$page"; then + theme_error 403 return 0 fi + [ "$template" ] && acl_read "$template" || template="$page" + # Important! Web Server response including newline printf "%s\r\n" "Content-Type: text/html; charset=utf-8" "" @@ -78,9 +77,10 @@ theme_editor(){ $(HTML "${title}") $(theme_header) -
+
- +
@@ -94,10 +94,10 @@ theme_attachments(){ title="${page%/}"; title="${title##*/}" if [ ! "$(mdfile "$page")" ]; then - theme_404 + theme_error 404 return 0 elif ! acl_read "$page"; then - theme_403 + theme_error 403 return 0 fi @@ -114,11 +114,13 @@ theme_attachments(){ $(theme_header)
+
    + $(for file in "$_EXEC/pages/$page/#attachments"/* "$_DATA/pages/$page/#attachments"/*; do [ "$file" = "$_EXEC/pages/$page/#attachments/${file##*/}" \ -a -f "$_DATA/pages/$page/#attachments/${file##*/}" ] && continue @@ -163,29 +165,19 @@ theme_attachments(){ fi } -theme_login(){ - theme_page '/[wiki]/login/' -} - -theme_register(){ - theme_page '/[wiki]/register/' -} - -theme_403(){ - printf "%s\r\n" "Status: 403 Forbidden" - - if [ "$(mdfile '/[wiki]/403/')" ]; then - theme_page '/[wiki]/403/' - else - printf "Content-Length: 0\r\n\r\n" - fi -} +theme_error(){ + local errno="$1" -theme_404(){ - printf "%s\r\n" "Status: 404 Not Found" + case $errno in + 400) printf "%s\r\n" "Status: 400 Bad Request";; + 403) printf "%s\r\n" "Status: 403 Forbidden";; + 404) printf "%s\r\n" "Status: 404 Not Found";; + 409) printf "%s\r\n" "Status: 409 Conflict";; + 500) printf "%s\r\n" "Status: 500 Internal Server Error";; + esac - if [ "$(mdfile '/[wiki]/404/')" ]; then - theme_page '/[wiki]/404/' + if [ "$(mdfile "/[wiki]/$errno/")" ]; then + theme_page "/[wiki]/$errno/" else printf "Content-Length: 0\r\n\r\n" fi