From 439de1500f5740c8813208bbe4f6cf3b10178a7f Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Mon, 26 Oct 2026 10:11:35 -0700 Subject: [PATCH] case 4602 - logo and attachment forms: upload and delete only shown when usable Business logos: file choosers only with change rights on global settings, Upload only once a file is chosen (cleared after upload), Delete only for a logo that exists (image load / error). Removed the unused, undeclared readOnly. Attachments: Upload only once a file is selected. Co-Authored-By: Claude Opus 5.5 --- ayanova/src/components/attachment-control.vue | 10 ++- ayanova/src/views/adm-global-logo.vue | 80 ++++++++++++++----- 2 files changed, 68 insertions(+), 22 deletions(-) diff --git a/ayanova/src/components/attachment-control.vue b/ayanova/src/components/attachment-control.vue index 2147910b..757a0013 100644 --- a/ayanova/src/components/attachment-control.vue +++ b/ayanova/src/components/attachment-control.vue @@ -115,9 +115,13 @@ v-model="notes" :label="$ay.t('AttachmentNotes')" > - {{ - $ay.t("Upload") - }} + {{ $ay.t("Upload") }} diff --git a/ayanova/src/views/adm-global-logo.vue b/ayanova/src/views/adm-global-logo.vue index afc0345b..09a1c8e9 100644 --- a/ayanova/src/views/adm-global-logo.vue +++ b/ayanova/src/views/adm-global-logo.vue @@ -16,8 +16,11 @@ class="grey lighten-2" :src="smallUrl" :alt="$ay.t('SmallLogo')" + @load="hasSmall = true" + @error="hasSmall = false" /> - {{ - $ay.t("Delete") - }} - {{ - $ay.t("Upload") - }} + {{ $ay.t("Delete") }} + {{ $ay.t("Upload") }} - {{ - $ay.t("Delete") - }} - {{ - $ay.t("Upload") - }} + {{ $ay.t("Delete") }} + {{ $ay.t("Upload") }} - {{ - $ay.t("Delete") - }} - {{ - $ay.t("Upload") - }} + {{ $ay.t("Delete") }} + {{ $ay.t("Upload") }} @@ -94,6 +127,10 @@ export default { mediumUrl: null, largeUrl: null, smallUrl: null, + //case 4602: Delete is shown only for a logo that exists (set by the image's load / error) + hasSmall: false, + hasMedium: false, + hasLarge: false, fileSizeExceededWarning: "", formState: { ready: false, @@ -119,7 +156,6 @@ export default { try { await initForm(vm); vm.formState.ready = true; - vm.readOnly = !vm.rights.change; window.$gz.eventBus.$on("menu-click", clickHandler); //NOTE: this would normally be in getDataFromAPI but this form doesn't really need that function so doing it here generateMenu(vm); @@ -171,12 +207,15 @@ export default { switch (size) { case "small": vm.smallUrl = `${window.$gz.api.logoUrl(size)}?x=${Date.now()}`; + vm.uploadSmall = null; break; case "medium": vm.mediumUrl = `${window.$gz.api.logoUrl(size)}?x=${Date.now()}`; + vm.uploadMedium = null; break; case "large": vm.largeUrl = `${window.$gz.api.logoUrl(size)}?x=${Date.now()}`; + vm.uploadLarge = null; break; default: return; @@ -207,12 +246,15 @@ export default { switch (size) { case "small": vm.smallUrl = null; + vm.hasSmall = false; break; case "medium": vm.mediumUrl = null; + vm.hasMedium = false; break; case "large": vm.largeUrl = null; + vm.hasLarge = false; break; default: return;