+#!/bin/sh
+
+case $PATH_INFO in
+ */\[newpage\]):;;
+ *) return 1;;
+esac
+
+if [ "$(POST action)" != newpage ]; then
+ printf 'Refresh: %i; url=%s\r\n' 4 ./
+ export ERROR_MSG="Formdata invalid"
+ theme_error 400
+ return 0
+fi
+
+pattern="$(POST pattern)"
+template="$(POST template)"
+page="$(POST page)"
+
+if [ "$page" ]; then
+ pattern="$(date +"$pattern")"
+ page="$(printf -- "$pattern" "$page")"
+else
+ printf 'Refresh: %i; url=%s\r\n' 4 ./
+ export ERROR_MSG="Page name required"
+ theme_error 400
+ return 0
+fi
+
+page="$(page_abs "$page")"
+[ "$template" ] \
+&& template="$(page_abs "$template")" \
+|| template="$page"
+
+if [ -f "$_DATA/pages/$page/#page.md" -o \
+ -f "$_EXEC/pages/$page/#page.md" ]; then
+ printf 'Refresh: %i; url=%s\r\n' 4 ./
+ export ERROR_MSG="Page exists already"
+ theme_error 409
+ return 0
+
+elif ! acl_write "$page"; then
+ printf 'Refresh: %i; url=%s\r\n' 4 ./
+ export ERROR_MSG="You don't have permission to write to this page"
+ theme_error 403
+ return 0
+
+elif mkdir -p -- "$_DATA/pages/${page}" \
+ && S_LOCK "$_DATA/pages/$page/#page.md"; then
+ theme_editor "$page" "$template"
+ return 0
+
+else
+ printf 'Refresh: %i; url=%s\r\n' 4 ./
+ export ERROR_MSG="Unable to lock page for editing"
+ theme_error 409
+ return 0
+fi
+
+return 1