X-Git-Url: https://git.plutz.net/?a=blobdiff_plain;f=handlers%2F60_move_rename_delete.sh;h=27246bd108acecac61ba2d7dc17406979aa2272d;hb=e1441ae3543689244e9275c0581ad6c00d610f67;hp=d27fb3937c103f564e30bd6e0e1e05a874b9a512;hpb=d6f2b884f3b9f094b08d2d4e66e666f5b04c46ad;p=shellwiki diff --git a/handlers/60_move_rename_delete.sh b/handlers/60_move_rename_delete.sh index d27fb39..27246bd 100755 --- a/handlers/60_move_rename_delete.sh +++ b/handlers/60_move_rename_delete.sh @@ -85,20 +85,40 @@ l10n_deletepage >/dev/null 2>&1 \

Delete Page

$(HTML "${page}")

This page and its attachments will be deleted

+ EOF } +list_writable() { + local PATH_INFO page="${1%/}/" + + if acl_write "$page"; then + PATH_INFO="$page" + page_glob "*" 0 \ + | while read page; do + list_writable "${PATH_INFO}${page}" + done + printf %s\\n "$page" |debug + fi +} + if [ "$REQUEST_METHOD" = POST ]; then action="$(POST action)" newname="$(POST newname |grep -m1 -xE '[^#/]*')" newlocation="$(POST newlocation |grep -m1 -xE '/[^#]*')" + delsub="$(POST delete_subpages |grep -m1 -xE 'true|false')" else case "${PATH_INFO}" in */\[move\]) location="${page%/}" location="${location%/*}/" @@ -189,19 +209,46 @@ elif [ "$action" = delete ]; then printf 'Refresh: %i\r\n' 4 theme_error 403 return 0 - elif [ "$REV_PAGES" = true ]; then - git -C "$_DATA" rm "pages/${oldname}/#page.md" - git -C "$_DATA" commit -m 'Page # '"$oldname"' # deleted by user @ '"$USER_NAME"' @' \ - -- "pages/${oldname}/#page.md" - rm -r -- "$_DATA/pages/${oldname}"/\#* - rmdir -- "$_DATA/pages/${oldname}/" || true - REDIRECT ./ - else - rm -- "$_DATA/pages/${oldname}/#page.md" - rm -r -- "$_DATA/pages/${oldname}"/\#* - rmdir -- "$_DATA/pages/${oldname}/" || true - REDIRECT ./ fi + + printf 'Status: 202 Accepted\r\n' + { [ "$delsub" = true ] \ + && list_writable "$oldname" \ + || printf %s\\n "$oldname" + } | while read oldname; do + if [ "$REV_PAGES" = true -a "$REV_ATTACHMENTS" = true ]; then + git -C "$_DATA" rm "pages/${oldname}/#page.md" >&2 + git -C "$_DATA" rm -r "pages/${oldname}/#attachments/" >&2 + git -C "$_DATA" commit -m 'Page # '"$oldname"' # deleted by user @ '"$USER_NAME"' @' \ + -- "pages/${oldname}/#page.md" "pages/${oldname}/#attachments/" >&2 + rm -r -- "$_DATA/pages/${oldname}"/\#* + rmdir -- "$_DATA/pages/${oldname}/" || true + elif [ "$REV_PAGES" = true ]; then + git -C "$_DATA" rm "pages/${oldname}/#page.md" >&2 + git -C "$_DATA" commit -m 'Page # '"$oldname"' # deleted by user @ '"$USER_NAME"' @' \ + -- "pages/${oldname}/#page.md" >&2 + rm -r -- "$_DATA/pages/${oldname}"/\#* + rmdir -- "$_DATA/pages/${oldname}/" || true + else + rm -- "$_DATA/pages/${oldname}/#page.md" + rm -r -- "$_DATA/pages/${oldname}"/\#* + rmdir -- "$_DATA/pages/${oldname}/" || true + fi + printf '%s\n' "$oldname" + done | { + cat <<-EOF +
+

$(_ "Pages deleted:")

+ + $(_ OK) +
+ EOF + } | theme_page - + return 0 elif [ "$action" = cancel ]; then REDIRECT ./ elif [ "$action" ]; then