Skip to content

Commit ed71523

Browse files
committed
Display an error message if the file cannot be deleted
1 parent a6f5c0e commit ed71523

File tree

6 files changed

+44
-6
lines changed

6 files changed

+44
-6
lines changed

ts/WoltLabSuite/Core/Form/Builder/Field/Controller/FileProcessor.ts

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import {
1616
trackUploadProgress,
1717
} from "WoltLabSuite/Core/Component/File/Helper";
1818
import { clearPreviousErrors } from "WoltLabSuite/Core/Component/File/Upload";
19+
import { innerError } from "WoltLabSuite/Core/Dom/Util";
1920

2021
type FileId = string;
2122
const fileProcessors = new Map<FileId, FileProcessor>();
@@ -129,9 +130,21 @@ export class FileProcessor {
129130
deleteButton.classList.add("button", "small");
130131
deleteButton.textContent = getPhrase("wcf.global.button.delete");
131132
deleteButton.addEventListener("click", async () => {
132-
await deleteFile(element.fileId!);
133+
const result = await deleteFile(element.fileId!);
134+
if (result.ok) {
135+
this.#unregisterFile(element);
136+
} else {
137+
let container: HTMLElement = element;
138+
if (!this.#useBigPreview) {
139+
container = container.parentElement!;
140+
}
133141

134-
this.#unregisterFile(element);
142+
if (result.error.code === "permission_denied") {
143+
innerError(container, getPhrase("wcf.upload.error.delete.permissionDenied"), true);
144+
} else {
145+
innerError(container, result.error.message ?? getPhrase("wcf.upload.error.delete.unknownError"));
146+
}
147+
}
135148
});
136149

137150
return deleteButton;

wcfsetup/install/files/js/WoltLabSuite/Core/Form/Builder/Field/Controller/FileProcessor.js

Lines changed: 17 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

wcfsetup/install/files/lib/system/event/listener/PreloadPhrasesCollectingListener.class.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,8 @@ public function __invoke(PreloadPhrasesCollecting $event): void
153153
$event->preload('wcf.upload.error.fileExtensionNotPermitted');
154154
$event->preload('wcf.upload.error.fileSizeTooLarge');
155155
$event->preload('wcf.upload.error.maximumCountReached');
156+
$event->preload('wcf.upload.error.delete.permissionDenied');
157+
$event->preload('wcf.upload.error.delete.unknownError');
156158

157159
$event->preload('wcf.user.activityPoint');
158160
$event->preload('wcf.user.language');

wcfsetup/install/files/style/ui/fileList.scss

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@
2525
grid-template-areas:
2626
"file filename"
2727
"file fileSize"
28-
"file buttons";
28+
"file buttons"
29+
"file error";
2930
grid-template-columns: 80px auto;
3031
padding: 10px;
3132
}
@@ -38,6 +39,10 @@
3839
color: var(--wcfStatusErrorText);
3940
}
4041

42+
.fileList__item .innerError {
43+
grid-area: error;
44+
}
45+
4146
.fileList__item__file {
4247
display: flex;
4348
grid-area: file;

wcfsetup/install/lang/de.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5566,6 +5566,8 @@ Benachrichtigungen auf <a href="{link isHtmlEmail=true}{/link}">{PAGE_TITLE|phra
55665566
<item name="wcf.upload.error.fileSizeTooLarge"><![CDATA[Die Datei ist zu groß.]]></item>
55675567
<item name="wcf.upload.error.maximumCountReached"><![CDATA[Es {plural value=$maximumCount 1='darf nur eine Datei' other='dürfen nur # Dateien'} hochgeladen werden.]]></item>
55685568
<item name="wcf.upload.error.adopt"><![CDATA[Die Datei „{$filename}“ kann nicht zugewiesen werden.]]></item>
5569+
<item name="wcf.upload.error.delete.unknownError"><![CDATA[Beim Löschen der Datei ist ein unbekannter Fehler aufgetreten.]]></item>
5570+
<item name="wcf.upload.error.delete.permissionDenied"><![CDATA[Die Datei kann nicht gelöscht werden, {if LANGUAGE_USE_INFORMAL_VARIANT}verwende{else}verwenden Sie{/if} stattdessen <b>Ersetzen</b>, um die Datei zu erneuern.]]></item>
55695571
</category>
55705572
</import>
55715573
<delete>

wcfsetup/install/lang/en.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5568,6 +5568,8 @@ your notifications on <a href="{link isHtmlEmail=true}{/link}">{PAGE_TITLE|phras
55685568
<item name="wcf.upload.error.fileSizeTooLarge"><![CDATA[The file is too large.]]></item>
55695569
<item name="wcf.upload.error.maximumCountReached"><![CDATA[{plural value=$maximumCount 1='Only one file' other='Only up to # files'} may be uploaded.]]></item>
55705570
<item name="wcf.upload.error.adopt"><![CDATA[The file “{$filename}” cannot be assigned.]]></item>
5571+
<item name="wcf.upload.error.delete.unknownError"><![CDATA[An unknown error occurred while deleting the file.]]></item>
5572+
<item name="wcf.upload.error.delete.permissionDenied"><![CDATA[The file cannot be deleted, use <b>Replace</b> instead to renew the file.]]></item>
55715573
</category>
55725574
</import>
55735575
<delete>

0 commit comments

Comments
 (0)