X-Git-Url: https://git.plutz.net/?a=blobdiff_plain;f=themes%2Fdefault.sh;h=0b850078a06c321a6892813b1d129b8b1fabd9af;hb=8dc20ae866df18ef4de24a8936bc81418859f80a;hp=1830e26673ccd60c29e95a85f446143cce3dd18c;hpb=ee0162b0ee46d258908de998cfa220edb4074d96;p=shellwiki diff --git a/themes/default.sh b/themes/default.sh index 1830e26..0b85007 100755 --- a/themes/default.sh +++ b/themes/default.sh @@ -15,12 +15,29 @@ theme_header(){ } theme_footer(){ - printf '' "$(wiki '[wiki]/footer/' ||echo No footer)" + printf '' "$(wiki '[wiki]/footer/')" +} + +theme_pagemenu(){ + local page="$1" + + if acl_write "$page"; then + printf ' + ' + fi } theme_page(){ - local page="$1" title - title="${page%/}"; title="${title##*/}" + local page="$1" title="$2" + title="$(HTML "${title:-"${page}"}")" # Important! Web Server response including newline printf "%s\r\n" "Content-Type: text/html; charset=utf-8" "" @@ -29,17 +46,18 @@ theme_page(){ $(theme_head) - $(HTML "${title}") - + ${title} + $(theme_header)
- -
- $(wiki "$page" || printf 'Page not found') -
+ $(theme_pagemenu) + $(if [ "$page" = '-' ]; then + cat + else + printf '
' + wiki "$page" + printf '
' + fi)
$(theme_footer) @@ -47,78 +65,90 @@ theme_page(){ } theme_editor(){ - local page="$1" title + local page="$1" template="$2" title title="${page%/}"; title="${title##*/}" - # Important! Web Server response including newline - printf "%s\r\n" "Content-Type: text/html; charset=utf-8" "" + [ "$template" ] && acl_read "$template" || template="$page" - cat <<-EOF - - - $(theme_head) - $(HTML "${title}") - - $(theme_header) -
- - - - -
- $(theme_footer) - + theme_page - "Editor: $title" <<-EOF +
+ + + + +
EOF } -theme_attachments(){ +theme_revisions(){ local page="$1" title title="${page%/}"; title="${title##*/}" - # Important! Web Server response including newline - printf "%s\r\n" "Content-Type: text/html; charset=utf-8" "" - - cat <<-EOF - - - $(theme_head) - Attachments $(HTML "${title}") - - $(theme_header) -
-
- - -
- - -
- $(theme_footer) - - EOF + "$_EXEC/macros/revisions" "$page" \ + | theme_page - "Revisions: $title" } -theme_login(){ - theme_page '[wiki]/login/' -} +theme_attachments(){ + local page="$1" title + title="${page%/}"; title="${title##*/}" -theme_register(){ - theme_page '[wiki]/register/' + if acl_write "$page"; then + theme_page - "Attachments: $title" <<-EOF +
+ + + +
+ +
+ EOF + else + theme_page - "Attachments: $title" <<-EOF + + EOF + fi } -theme_404(){ - printf "%s\r\n" "Status: 404 Not Found" - - theme_page '[wiki]/404/' +theme_error(){ + local errno="$1" + + 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]/$errno/")" ]; then + theme_page "/[wiki]/$errno/" + else + printf "Content-Length: 0\r\n\r\n" + fi }