X-Git-Url: https://git.plutz.net/?a=blobdiff_plain;f=themes%2Fdefault.sh;h=6807242cd2d6dd0445e419bd72ae62dfe5834f23;hb=1b8f9a660793917c33769e345500814f5b5cdd60;hp=6370166017775241ed9691cfca7c23c78b7282d7;hpb=4fb35b146e7aca6faf5945105ab36a270b7f1ad5;p=shellwiki diff --git a/themes/default.sh b/themes/default.sh index 6370166..6807242 100755 --- a/themes/default.sh +++ b/themes/default.sh @@ -1,27 +1,175 @@ #!/bin/sh -theme_404(){ - printf "%s\r\n" "Status: 404 Not Found" +. "$_EXEC/tools.sh" - theme_page '/[404]/' +theme_head(){ + local IFS="$BR" + printf ' + + ' + for css in "$_BASE/[.]/cgilite/common.css" "$_BASE/[.]/themes/default.css" $PAGE_CSS; do + printf '' \ + "$(HTML "${css##*//}")" + done +} + +theme_header(){ + printf '
%s
' "$(wiki '[wiki]/header/')" +} + +theme_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" "" cat <<-EOF - - - $(HTML "${title}") - -
-
$(wiki "$page" || printf 'Page not found')
- + $(theme_head) + ${title} + + $(theme_header) +
+ $(theme_pagemenu) + $(if [ "$page" = '-' ]; then + cat + else + printf '
' + wiki "$page" + printf '
' + fi) +
+ $(theme_footer) EOF } + +theme_editor(){ + local page="$1" template="$2" title + title="${page%/}"; title="${title##*/}" + + [ "$template" ] && acl_read "$template" || template="$page" + + theme_page - "Editor: $title" <<-EOF +
+ + + + +
+ EOF +} + +theme_revisions(){ + local page="$1" title + title="${page%/}"; title="${title##*/}" + + "$_EXEC/macros/revisions" "$page" \ + | theme_page - "Revisions: $title" +} + +theme_attachments(){ + local page="$1" title + title="${page%/}"; title="${title##*/}" + + if acl_write "$page"; then + theme_page - "Attachments: $title" <<-EOF +
+

Upload

+ + + +
+ +
+

Attachments

+ + + + + + + + + +
+ EOF + else + theme_page - "Attachments: $title" <<-EOF + + EOF + fi +} + +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 +}