Skip to content

Commit 6419900

Browse files
committed
Issue #86
- Use messages YAML files for display of messages instead of hard-coded messages
1 parent 96b5c92 commit 6419900

File tree

5 files changed

+61
-10
lines changed

5 files changed

+61
-10
lines changed

src/RemoteContentAssets/Presentation/Resources/assets/controllers/remote_asset_browser_controller.ts

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,13 @@ export default class extends Controller {
2222
windowSize: { type: Number, default: 20 },
2323
addToChatLabel: { type: String, default: "Add to chat" },
2424
openInNewTabLabel: { type: String, default: "Open in new tab" },
25+
uploadProcessingLabel: { type: String, default: "New images are being processed..." },
26+
refreshPromptLabel: { type: String, default: "New images are available. Refresh the asset list now?" },
27+
uploadProcessingDelayedErrorLabel: {
28+
type: String,
29+
default: "Upload completed. New images are still processing. Please try again shortly.",
30+
},
31+
uploadPartialFailureLabel: { type: String, default: "%errorCount% of %total% uploads failed." },
2532
// Upload configuration (optional - if not set, upload is disabled)
2633
uploadUrl: { type: String, default: "" },
2734
uploadCsrfToken: { type: String, default: "" },
@@ -49,6 +56,10 @@ export default class extends Controller {
4956
declare readonly windowSizeValue: number;
5057
declare readonly addToChatLabelValue: string;
5158
declare readonly openInNewTabLabelValue: string;
59+
declare readonly uploadProcessingLabelValue: string;
60+
declare readonly refreshPromptLabelValue: string;
61+
declare readonly uploadProcessingDelayedErrorLabelValue: string;
62+
declare readonly uploadPartialFailureLabelValue: string;
5263
declare readonly uploadUrlValue: string;
5364
declare readonly uploadCsrfTokenValue: string;
5465
declare readonly workspaceIdValue: string;
@@ -253,14 +264,14 @@ export default class extends Controller {
253264
if (waitSucceeded) {
254265
this.markRefreshAvailable();
255266
} else {
256-
this.showUploadError("Upload completed. New images are still processing. Please try again shortly.");
267+
this.showUploadError(this.uploadProcessingDelayedErrorLabelValue);
257268
}
258269
}
259270

260271
if (errorCount > 0 && successCount === 0) {
261-
this.showUploadError("Upload failed. Please try again.");
272+
this.showUploadError(this.getUploadErrorFallbackLabel());
262273
} else if (errorCount > 0) {
263-
this.showUploadError(`${errorCount} of ${total} uploads failed.`);
274+
this.showUploadError(this.formatUploadPartialFailureLabel(errorCount, total));
264275
}
265276

266277
this.isUploading = false;
@@ -539,8 +550,8 @@ export default class extends Controller {
539550
if (this.hasUploadProcessingMessageTarget) {
540551
this.uploadProcessingMessageTarget.textContent =
541552
this.uploadProcessingMode === "refreshPrompt"
542-
? "Neue Bilder sind verfügbar. Bildliste jetzt aktualisieren?"
543-
: "Neue Bilder werden verarbeitet...";
553+
? this.refreshPromptLabelValue
554+
: this.uploadProcessingLabelValue;
544555
}
545556

546557
if (this.hasUploadRefreshActionsTarget) {
@@ -554,6 +565,22 @@ export default class extends Controller {
554565
setTimeout(() => this.showUploadStatus("none"), 3000);
555566
}
556567

568+
private formatUploadPartialFailureLabel(errorCount: number, total: number): string {
569+
return this.uploadPartialFailureLabelValue
570+
.replaceAll("%errorCount%", String(errorCount))
571+
.replaceAll("%total%", String(total));
572+
}
573+
574+
private getUploadErrorFallbackLabel(): string {
575+
if (this.hasUploadErrorTarget) {
576+
const textEl = this.uploadErrorTarget.querySelector("[data-error-text]");
577+
if (textEl && textEl.textContent !== null && textEl.textContent !== "") {
578+
return textEl.textContent;
579+
}
580+
}
581+
return "Upload failed. Please try again.";
582+
}
583+
557584
private normalizeManifestData(data: { urls?: string[]; revision?: string }): { urls: string[]; revision: string } {
558585
const urls = data.urls ?? [];
559586
const revision = data.revision ?? this.computeManifestRevision(urls);

src/RemoteContentAssets/Presentation/Resources/templates/remote_asset_area.twig

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@
66
windowSize: remoteAssetBrowserWindowSize,
77
addToChatLabel: 'remote_content_assets.browser_add_to_chat'|trans,
88
openInNewTabLabel: 'remote_content_assets.browser_open_in_new_tab'|trans,
9+
uploadProcessingLabel: 'remote_content_assets.browser_upload_processing'|trans,
10+
refreshPromptLabel: 'remote_content_assets.browser_refresh_prompt'|trans,
11+
uploadProcessingDelayedErrorLabel: 'remote_content_assets.browser_upload_processing_delayed'|trans,
12+
uploadPartialFailureLabel: 'remote_content_assets.browser_upload_partial_failure'|trans,
913
uploadUrl: project.hasS3UploadConfigured() ? path('remote_content_assets.presentation.upload', { projectId: project.id }) : '',
1014
uploadCsrfToken: project.hasS3UploadConfigured() ? csrf_token('remote_asset_upload') : '',
1115
workspaceId: workspace.id
@@ -57,18 +61,18 @@
5761
<circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle>
5862
<path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path>
5963
</svg>
60-
<span {{ stimulus_target('remote-asset-browser', 'uploadProcessingMessage') }}>Neue Bilder werden verarbeitet...</span>
64+
<span {{ stimulus_target('remote-asset-browser', 'uploadProcessingMessage') }}>{{ 'remote_content_assets.browser_upload_processing'|trans }}</span>
6165
<div {{ stimulus_target('remote-asset-browser', 'uploadRefreshActions') }}
6266
class="hidden ml-2 flex items-center gap-2">
6367
<button type="button"
6468
{{ stimulus_action('remote-asset-browser', 'confirmRefresh', 'click') }}
6569
class="px-2 py-1 rounded bg-primary-600 text-white text-xs hover:bg-primary-700 focus:outline-none focus:ring-1 focus:ring-primary-500">
66-
Ja
70+
{{ 'remote_content_assets.browser_refresh_yes'|trans }}
6771
</button>
6872
<button type="button"
6973
{{ stimulus_action('remote-asset-browser', 'dismissRefresh', 'click') }}
7074
class="px-2 py-1 rounded border border-dark-300 dark:border-dark-600 text-dark-700 dark:text-dark-200 text-xs hover:bg-dark-100 dark:hover:bg-dark-700">
71-
Nein
75+
{{ 'remote_content_assets.browser_refresh_no'|trans }}
7276
</button>
7377
</div>
7478
</div>

tests/frontend/unit/RemoteContentAssets/remote_asset_browser_controller.test.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -586,6 +586,10 @@ describe("RemoteAssetBrowserController", () => {
586586
data-remote-asset-browser-upload-url-value="/api/projects/test-id/remote-assets/upload"
587587
data-remote-asset-browser-upload-csrf-token-value="csrf-token-123"
588588
data-remote-asset-browser-workspace-id-value="workspace-123"
589+
data-remote-asset-browser-upload-processing-label-value="New images are being processed..."
590+
data-remote-asset-browser-refresh-prompt-label-value="New images are available. Refresh the asset list now?"
591+
data-remote-asset-browser-upload-processing-delayed-error-label-value="Upload completed. New images are still processing. Please try again shortly."
592+
data-remote-asset-browser-upload-partial-failure-label-value="%errorCount% of %total% uploads failed."
589593
data-remote-asset-browser-window-size-value="50">
590594
<input type="text"
591595
data-remote-asset-browser-target="search"
@@ -1109,6 +1113,10 @@ describe("RemoteAssetBrowserController", () => {
11091113
data-remote-asset-browser-upload-url-value="/api/projects/test-id/remote-assets/upload"
11101114
data-remote-asset-browser-upload-csrf-token-value="csrf-token-123"
11111115
data-remote-asset-browser-workspace-id-value="workspace-123"
1116+
data-remote-asset-browser-upload-processing-label-value="New images are being processed..."
1117+
data-remote-asset-browser-refresh-prompt-label-value="New images are available. Refresh the asset list now?"
1118+
data-remote-asset-browser-upload-processing-delayed-error-label-value="Upload completed. New images are still processing. Please try again shortly."
1119+
data-remote-asset-browser-upload-partial-failure-label-value="%errorCount% of %total% uploads failed."
11121120
data-remote-asset-browser-window-size-value="50">
11131121
<div data-remote-asset-browser-target="dropzone"
11141122
data-action="click->remote-asset-browser#openFileDialog"

translations/messages.de.yaml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -465,8 +465,14 @@ remote_content_assets:
465465
browser_upload_dropzone: "Bilder hierher ziehen oder klicken"
466466
browser_upload_hint: "Mehrere Dateien möglich. JPEG, PNG, GIF, WebP, SVG, AVIF (max. 10MB)"
467467
browser_uploading: "Wird hochgeladen..."
468-
browser_upload_success: "Upload abgeschlossen. Asset-Liste wird aktualisiert..."
468+
browser_upload_success: "Upload abgeschlossen."
469469
browser_upload_error: "Upload fehlgeschlagen. Bitte erneut versuchen."
470+
browser_upload_processing: "Neue Bilder werden verarbeitet..."
471+
browser_refresh_prompt: "Neue Bilder sind verfügbar. Bildliste jetzt aktualisieren?"
472+
browser_refresh_yes: "Ja"
473+
browser_refresh_no: "Nein"
474+
browser_upload_processing_delayed: "Upload abgeschlossen. Neue Bilder werden noch verarbeitet. Bitte versuchen Sie es in Kürze erneut."
475+
browser_upload_partial_failure: "%errorCount% von %total% Uploads fehlgeschlagen."
470476

471477
# PhotoBuilder vertical
472478
photo_builder:

translations/messages.en.yaml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -465,8 +465,14 @@ remote_content_assets:
465465
browser_upload_dropzone: "Drop images here or click to upload"
466466
browser_upload_hint: "Multiple files supported. JPEG, PNG, GIF, WebP, SVG, AVIF (max 10MB)"
467467
browser_uploading: "Uploading..."
468-
browser_upload_success: "Upload complete. Refreshing asset list..."
468+
browser_upload_success: "Upload complete."
469469
browser_upload_error: "Upload failed. Please try again."
470+
browser_upload_processing: "New images are being processed..."
471+
browser_refresh_prompt: "New images are available. Refresh the asset list now?"
472+
browser_refresh_yes: "Yes"
473+
browser_refresh_no: "No"
474+
browser_upload_processing_delayed: "Upload completed. New images are still processing. Please try again shortly."
475+
browser_upload_partial_failure: "%errorCount% of %total% uploads failed."
470476

471477
# PhotoBuilder vertical
472478
photo_builder:

0 commit comments

Comments
 (0)