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 <noreply@anthropic.com>
This commit is contained in:
@@ -115,9 +115,13 @@
|
|||||||
v-model="notes"
|
v-model="notes"
|
||||||
:label="$ay.t('AttachmentNotes')"
|
:label="$ay.t('AttachmentNotes')"
|
||||||
></v-text-field>
|
></v-text-field>
|
||||||
<v-btn color="primary" text @click="upload">{{
|
<v-btn
|
||||||
$ay.t("Upload")
|
v-if="uploadFiles && uploadFiles.length > 0"
|
||||||
}}</v-btn>
|
color="primary"
|
||||||
|
text
|
||||||
|
@click="upload"
|
||||||
|
>{{ $ay.t("Upload") }}</v-btn
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
</v-tab-item>
|
</v-tab-item>
|
||||||
</v-tabs-items>
|
</v-tabs-items>
|
||||||
|
|||||||
@@ -16,8 +16,11 @@
|
|||||||
class="grey lighten-2"
|
class="grey lighten-2"
|
||||||
:src="smallUrl"
|
:src="smallUrl"
|
||||||
:alt="$ay.t('SmallLogo')"
|
:alt="$ay.t('SmallLogo')"
|
||||||
|
@load="hasSmall = true"
|
||||||
|
@error="hasSmall = false"
|
||||||
/>
|
/>
|
||||||
<v-file-input
|
<v-file-input
|
||||||
|
v-if="rights.change"
|
||||||
v-model="uploadSmall"
|
v-model="uploadSmall"
|
||||||
dense
|
dense
|
||||||
accept="image/*"
|
accept="image/*"
|
||||||
@@ -26,20 +29,31 @@
|
|||||||
:rules="rules"
|
:rules="rules"
|
||||||
data-cy="uploadSmall"
|
data-cy="uploadSmall"
|
||||||
></v-file-input>
|
></v-file-input>
|
||||||
<v-btn color="primary" text @click="remove('small')">{{
|
<v-btn
|
||||||
$ay.t("Delete")
|
v-if="rights.change && hasSmall"
|
||||||
}}</v-btn>
|
color="primary"
|
||||||
<v-btn color="primary" text @click="upload('small')">{{
|
text
|
||||||
$ay.t("Upload")
|
@click="remove('small')"
|
||||||
}}</v-btn>
|
>{{ $ay.t("Delete") }}</v-btn
|
||||||
|
>
|
||||||
|
<v-btn
|
||||||
|
v-if="rights.change && uploadSmall"
|
||||||
|
color="primary"
|
||||||
|
text
|
||||||
|
@click="upload('small')"
|
||||||
|
>{{ $ay.t("Upload") }}</v-btn
|
||||||
|
>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="12" class="mt-10">
|
<v-col cols="12" class="mt-10">
|
||||||
<img
|
<img
|
||||||
class="mt-10 grey lighten-2"
|
class="mt-10 grey lighten-2"
|
||||||
:src="mediumUrl"
|
:src="mediumUrl"
|
||||||
:alt="$ay.t('MediumLogo')"
|
:alt="$ay.t('MediumLogo')"
|
||||||
|
@load="hasMedium = true"
|
||||||
|
@error="hasMedium = false"
|
||||||
/>
|
/>
|
||||||
<v-file-input
|
<v-file-input
|
||||||
|
v-if="rights.change"
|
||||||
v-model="uploadMedium"
|
v-model="uploadMedium"
|
||||||
dense
|
dense
|
||||||
accept="image/*"
|
accept="image/*"
|
||||||
@@ -47,20 +61,31 @@
|
|||||||
:label="$ay.t('MediumLogo')"
|
:label="$ay.t('MediumLogo')"
|
||||||
:rules="rules"
|
:rules="rules"
|
||||||
></v-file-input>
|
></v-file-input>
|
||||||
<v-btn color="primary" text @click="remove('medium')">{{
|
<v-btn
|
||||||
$ay.t("Delete")
|
v-if="rights.change && hasMedium"
|
||||||
}}</v-btn>
|
color="primary"
|
||||||
<v-btn color="primary" text @click="upload('medium')">{{
|
text
|
||||||
$ay.t("Upload")
|
@click="remove('medium')"
|
||||||
}}</v-btn>
|
>{{ $ay.t("Delete") }}</v-btn
|
||||||
|
>
|
||||||
|
<v-btn
|
||||||
|
v-if="rights.change && uploadMedium"
|
||||||
|
color="primary"
|
||||||
|
text
|
||||||
|
@click="upload('medium')"
|
||||||
|
>{{ $ay.t("Upload") }}</v-btn
|
||||||
|
>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="12" class="mt-10">
|
<v-col cols="12" class="mt-10">
|
||||||
<img
|
<img
|
||||||
class="mt-10 grey lighten-2"
|
class="mt-10 grey lighten-2"
|
||||||
:src="largeUrl"
|
:src="largeUrl"
|
||||||
:alt="$ay.t('LargeLogo')"
|
:alt="$ay.t('LargeLogo')"
|
||||||
|
@load="hasLarge = true"
|
||||||
|
@error="hasLarge = false"
|
||||||
/>
|
/>
|
||||||
<v-file-input
|
<v-file-input
|
||||||
|
v-if="rights.change"
|
||||||
v-model="uploadLarge"
|
v-model="uploadLarge"
|
||||||
dense
|
dense
|
||||||
accept="image/*"
|
accept="image/*"
|
||||||
@@ -68,12 +93,20 @@
|
|||||||
:label="$ay.t('LargeLogo')"
|
:label="$ay.t('LargeLogo')"
|
||||||
:rules="rules"
|
:rules="rules"
|
||||||
></v-file-input>
|
></v-file-input>
|
||||||
<v-btn color="primary" text @click="remove('large')">{{
|
<v-btn
|
||||||
$ay.t("Delete")
|
v-if="rights.change && hasLarge"
|
||||||
}}</v-btn>
|
color="primary"
|
||||||
<v-btn color="primary" text @click="upload('large')">{{
|
text
|
||||||
$ay.t("Upload")
|
@click="remove('large')"
|
||||||
}}</v-btn>
|
>{{ $ay.t("Delete") }}</v-btn
|
||||||
|
>
|
||||||
|
<v-btn
|
||||||
|
v-if="rights.change && uploadLarge"
|
||||||
|
color="primary"
|
||||||
|
text
|
||||||
|
@click="upload('large')"
|
||||||
|
>{{ $ay.t("Upload") }}</v-btn
|
||||||
|
>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
</v-form>
|
</v-form>
|
||||||
@@ -94,6 +127,10 @@ export default {
|
|||||||
mediumUrl: null,
|
mediumUrl: null,
|
||||||
largeUrl: null,
|
largeUrl: null,
|
||||||
smallUrl: 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: "",
|
fileSizeExceededWarning: "",
|
||||||
formState: {
|
formState: {
|
||||||
ready: false,
|
ready: false,
|
||||||
@@ -119,7 +156,6 @@ export default {
|
|||||||
try {
|
try {
|
||||||
await initForm(vm);
|
await initForm(vm);
|
||||||
vm.formState.ready = true;
|
vm.formState.ready = true;
|
||||||
vm.readOnly = !vm.rights.change;
|
|
||||||
window.$gz.eventBus.$on("menu-click", clickHandler);
|
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
|
//NOTE: this would normally be in getDataFromAPI but this form doesn't really need that function so doing it here
|
||||||
generateMenu(vm);
|
generateMenu(vm);
|
||||||
@@ -171,12 +207,15 @@ export default {
|
|||||||
switch (size) {
|
switch (size) {
|
||||||
case "small":
|
case "small":
|
||||||
vm.smallUrl = `${window.$gz.api.logoUrl(size)}?x=${Date.now()}`;
|
vm.smallUrl = `${window.$gz.api.logoUrl(size)}?x=${Date.now()}`;
|
||||||
|
vm.uploadSmall = null;
|
||||||
break;
|
break;
|
||||||
case "medium":
|
case "medium":
|
||||||
vm.mediumUrl = `${window.$gz.api.logoUrl(size)}?x=${Date.now()}`;
|
vm.mediumUrl = `${window.$gz.api.logoUrl(size)}?x=${Date.now()}`;
|
||||||
|
vm.uploadMedium = null;
|
||||||
break;
|
break;
|
||||||
case "large":
|
case "large":
|
||||||
vm.largeUrl = `${window.$gz.api.logoUrl(size)}?x=${Date.now()}`;
|
vm.largeUrl = `${window.$gz.api.logoUrl(size)}?x=${Date.now()}`;
|
||||||
|
vm.uploadLarge = null;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
@@ -207,12 +246,15 @@ export default {
|
|||||||
switch (size) {
|
switch (size) {
|
||||||
case "small":
|
case "small":
|
||||||
vm.smallUrl = null;
|
vm.smallUrl = null;
|
||||||
|
vm.hasSmall = false;
|
||||||
break;
|
break;
|
||||||
case "medium":
|
case "medium":
|
||||||
vm.mediumUrl = null;
|
vm.mediumUrl = null;
|
||||||
|
vm.hasMedium = false;
|
||||||
break;
|
break;
|
||||||
case "large":
|
case "large":
|
||||||
vm.largeUrl = null;
|
vm.largeUrl = null;
|
||||||
|
vm.hasLarge = false;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user