From: Paul Hänsch Date: Tue, 2 Aug 2022 12:51:56 +0000 (+0200) Subject: attachment rename X-Git-Url: https://git.plutz.net/?a=commitdiff_plain;h=3bcd1005c129a3423499239eb0099e4ca7b19e56;p=shellwiki attachment rename --- diff --git a/handlers/20_edit_attachment.sh b/handlers/20_edit_attachment.sh index f400523..97a4b9d 100755 --- a/handlers/20_edit_attachment.sh +++ b/handlers/20_edit_attachment.sh @@ -121,6 +121,100 @@ elif [ "$action" = move ]; then fi REDIRECT "${_BASE}${PATH_INFO}" +elif [ "$action" = rename ]; then + fail='' success='' + set -- + + for file in "${_DATA}/pages${page}#attachments"/*; do + rename="$(POST rename_"$(slopecode "${file##*/}" |sed 's;=;%3D;g')")" + + if [ "$REV_ATTACHMENTS" = true -a \ + -f "${file}" -a \ + "$rename" -a \ + "${rename%/*}" = "${rename}" -a \ + ! -e "${_DATA}/pages${page}#attachments/${rename}" ] \ + && git -C "$_DATA" mv -- "pages${page}#attachments/${file##*/}" "pages${page}#attachments/${rename}"; then + success="${success}$(HTML "${file##*/}/${rename}")${BR}" + set -- "$@" "pages${page}#attachments/${file##*/}" "pages${page}#attachments/${rename}" + + elif [ "$REV_ATTACHMENTS" = true -a "${rename}" ]; then + fail="${fail}$(HTML "${file##*/}/${rename}")${BR}" + + elif [ -f "${file}" -a \ + "$rename" -a \ + "${rename%/*}" = "${rename}" -a \ + ! -e "${_DATA}/pages${page}#attachments/${rename}" ] \ + && mv -- "${file}" "${_DATA}/pages${page}#attachments/${rename}"; then + success="${success}$(HTML "${file##*/}/${rename}")${BR}" + + elif [ "${rename}" ]; then + fail="${fail}$(HTML "${file##*/}/${rename}")${BR}" + + fi + done + + if [ "$REV_ATTACHMENTS" = true -a $# -gt 2 ]; then + git -C "$_DATA" commit -qm \ + "Attachment files renamed by @ $USER_NAME @" -- "$@" + elif [ "$REV_ATTACHMENTS" = true -a $# -eq 2 ]; then + git -C "$_DATA" commit -qm \ + "Attachment file renamed by @ $USER_NAME @" -- "$@" + fi + + if [ "$success" -a "$fail" ]; then + printf "%s\r\n" "Status: 500 Internal Server Error" + theme_page - "Attachment rename" <<-EOF +

Some files could not be renamed

+

Successfully renamed:

+ +

Errors:

+ + OK + EOF + exit 0 + + elif [ "$fail" ]; then + printf "%s\r\n" "Status: 500 Internal Server Error" + theme_page - "Attachment rename" <<-EOF +

Files could not be renamed

+ + OK + EOF + exit 0 + + elif [ "$success" ]; then + printf 'Refresh: %i\r\n' 4 + theme_page - "Attachment rename" <<-EOF +

Files were renamed

+ + OK + EOF + exit 0 + + else + REDIRECT "${_BASE}${PATH_INFO}" + + fi fi return 1 diff --git a/themes/default.sh b/themes/default.sh index 3c803f4..e8b5f2f 100755 --- a/themes/default.sh +++ b/themes/default.sh @@ -129,7 +129,7 @@ theme_attachments(){ %s ' \ "$hfile" "$hfile" "$hfile" "$hfile" \ - "$hfile" "$hfile" "$hfile" "$hfile" \ + "$(slopecode "${file##*/}")" "$hfile" "$hfile" "$hfile" \ "$(size_human "$size")" "$(date -d @"$date" +"%F %T")" done)