diff --git a/app/frontend/src/components/forms/PrintOptions.vue b/app/frontend/src/components/forms/PrintOptions.vue
index 99c7a3451..e6b0c4d46 100644
--- a/app/frontend/src/components/forms/PrintOptions.vue
+++ b/app/frontend/src/components/forms/PrintOptions.vue
@@ -1,7 +1,7 @@
@@ -446,6 +466,7 @@ defineExpose({
value="upload"
>
[
+ isValidSize.value || t('trans.documentTemplate.fileSizeError'),
isValidFile.value || t('trans.documentTemplate.invalidFileMessage'),
]);
@@ -83,6 +85,15 @@ function handleFileInput(event) {
if (event && event.length > 0) {
isFileInputEmpty.value = false;
uploadedFile = event[0];
+
+ // validate file size
+ if (uploadedFile.size > 25000000) {
+ isValidSize.value = false;
+ } else {
+ isValidSize.value = true;
+ }
+
+ // validate file extension
const fileExtension = event[0].name.split('.').pop();
if (validFileExtensions.includes(fileExtension)) {
isValidFile.value = true;
@@ -92,6 +103,7 @@ function handleFileInput(event) {
} else {
isFileInputEmpty.value = true;
isValidFile.value = true;
+ isValidSize.value = true;
}
}
@@ -120,12 +132,21 @@ async function handleFileUpload() {
...NotificationTypes.SUCCESS,
});
} catch (e) {
- notificationStore.addNotification({
- text: t('trans.documentTemplate.uploadError'),
- consoleError: t('trans.documentTemplate.uploadError', {
- error: e.message,
- }),
- });
+ if (e.response.status === 413) {
+ notificationStore.addNotification({
+ text: t('trans.documentTemplate.fileSizeError'),
+ consoleError: t('trans.documentTemplate.fileSizeError', {
+ error: e.message,
+ }),
+ });
+ } else {
+ notificationStore.addNotification({
+ text: t('trans.documentTemplate.uploadError'),
+ consoleError: t('trans.documentTemplate.uploadError', {
+ error: e.message,
+ }),
+ });
+ }
} finally {
loading.value = false;
}
@@ -196,6 +217,7 @@ defineExpose({
handleFileInput,
isFileInputEmpty,
isValidFile,
+ isValidSize,
uploadedFile,
});
@@ -322,7 +344,10 @@ defineExpose({
مفتاح الإدخال أو ، أو مسافة لإضافة عناوين بريد إلكتروني متعددة",
diff --git a/app/frontend/src/internationalization/trans/chefs/de/de.json b/app/frontend/src/internationalization/trans/chefs/de/de.json
index c35fa2d65..c2115567f 100644
--- a/app/frontend/src/internationalization/trans/chefs/de/de.json
+++ b/app/frontend/src/internationalization/trans/chefs/de/de.json
@@ -84,7 +84,8 @@
"deleteSuccess": "Vorlage erfolgreich gelöscht.",
"deleteError": "Beim Löschen der Vorlage ist ein Fehler aufgetreten.",
"fetchError": "Beim Abrufen der Vorlage ist ein Fehler aufgetreten.",
- "info": "Laden Sie eine Vorlage hoch, um den Gemeinsamen Dokumenterstellungsdienst (CDOGS) zu verwenden"
+ "info": "Laden Sie eine Vorlage hoch, um den Gemeinsamen Dokumenterstellungsdienst (CDOGS) zu verwenden",
+ "fileSizeError": "Die Dateigröße muss weniger als 25 MB betragen."
},
"formSettings": {
"pressToAddMultiEmail": "Drücken Sie die Eingabetaste oder die Leertaste oder , um mehrere E-Mail-Adressen hinzuzufügen",
diff --git a/app/frontend/src/internationalization/trans/chefs/en/en.json b/app/frontend/src/internationalization/trans/chefs/en/en.json
index 8f52970a2..fe0991616 100644
--- a/app/frontend/src/internationalization/trans/chefs/en/en.json
+++ b/app/frontend/src/internationalization/trans/chefs/en/en.json
@@ -81,7 +81,8 @@
"deleteSuccess": "Template deleted successfully.",
"deleteError": "An error occurred while deleting the template.",
"fetchError": "An error occurred while fetching the template.",
- "info": "Upload a template to use the Common Document Generation Service (CDOGS)"
+ "info": "Upload a template to use the Common Document Generation Service (CDOGS)",
+ "fileSizeError": "File size must be less than 25MB."
},
"externalAPI": {
"info": "Configure External APIs for use in your form.",
diff --git a/app/frontend/src/internationalization/trans/chefs/es/es.json b/app/frontend/src/internationalization/trans/chefs/es/es.json
index aa005e6c0..22ddb28aa 100644
--- a/app/frontend/src/internationalization/trans/chefs/es/es.json
+++ b/app/frontend/src/internationalization/trans/chefs/es/es.json
@@ -84,7 +84,8 @@
"deleteSuccess": "Plantilla eliminada exitosamente.",
"deleteError": "Ocurrió un error al eliminar la plantilla.",
"fetchError": "Ocurrió un error al obtener la plantilla.",
- "info": "Sube una plantilla para usar el Servicio de Generación de Documentos Comunes (CDOGS)"
+ "info": "Sube una plantilla para usar el Servicio de Generación de Documentos Comunes (CDOGS)",
+ "fileSizeError": "El tamaño del archivo debe ser menor de 25 MB."
},
"formSettings": {
"pressToAddMultiEmail": "Presiona enter o , o espacio para agregar varias direcciones de correo electrónico",
diff --git a/app/frontend/src/internationalization/trans/chefs/fa/fa.json b/app/frontend/src/internationalization/trans/chefs/fa/fa.json
index 29cd29556..be613f2e8 100644
--- a/app/frontend/src/internationalization/trans/chefs/fa/fa.json
+++ b/app/frontend/src/internationalization/trans/chefs/fa/fa.json
@@ -84,7 +84,8 @@
"deleteSuccess": "قالب با موفقیت حذف شد.",
"deleteError": "خطایی در هنگام حذف قالب رخ داد.",
"fetchError": "خطایی در هنگام دریافت قالب رخ داد.",
- "info": "قالبی را بارگذاری کنید تا از خدمات تولید سند مشترک (CDOGS) استفاده کنید"
+ "info": "قالبی را بارگذاری کنید تا از خدمات تولید سند مشترک (CDOGS) استفاده کنید",
+ "fileSizeError": "اندازه فایل باید کمتر از 25 مگابایت باشد."
},
"formSettings": {
"pressToAddMultiEmail": "برای افزودن چندین آدرس ایمیل، اینتر یا ، یا فاصله را فشار دهید",
diff --git a/app/frontend/src/internationalization/trans/chefs/fr/fr.json b/app/frontend/src/internationalization/trans/chefs/fr/fr.json
index 0d287188f..11a37d431 100644
--- a/app/frontend/src/internationalization/trans/chefs/fr/fr.json
+++ b/app/frontend/src/internationalization/trans/chefs/fr/fr.json
@@ -84,7 +84,8 @@
"deleteSuccess": "Modèle supprimé avec succès.",
"deleteError": "Une erreur s'est produite lors de la suppression du modèle.",
"fetchError": "Une erreur s'est produite lors de la récupération du modèle.",
- "info": "Téléchargez un modèle pour utiliser le Service de Génération de Documents Communs (CDOGS)"
+ "info": "Téléchargez un modèle pour utiliser le Service de Génération de Documents Communs (CDOGS)",
+ "fileSizeError": "La taille du fichier doit être inférieure à 25 Mo."
},
"formSettings": {
"pressToAddMultiEmail": "Appuyez sur entrée ou , ou espace pour ajouter plusieurs adresses e-mail",
diff --git a/app/frontend/src/internationalization/trans/chefs/hi/hi.json b/app/frontend/src/internationalization/trans/chefs/hi/hi.json
index bf23ba611..bf2b7c9c8 100644
--- a/app/frontend/src/internationalization/trans/chefs/hi/hi.json
+++ b/app/frontend/src/internationalization/trans/chefs/hi/hi.json
@@ -84,7 +84,8 @@
"deleteSuccess": "टेम्पलेट सफलतापूर्वक हटाया गया।",
"deleteError": "टेम्पलेट हटाते समय एक त्रुटि हुई।",
"fetchError": "टेम्पलेट प्राप्त करते समय एक त्रुटि हुई।",
- "info": "कॉमन डॉक्युमेंट जनरेशन सर्विस (CDOGS) का उपयोग करने के लिए एक टेम्पलेट अपलोड करें"
+ "info": "कॉमन डॉक्युमेंट जनरेशन सर्विस (CDOGS) का उपयोग करने के लिए एक टेम्पलेट अपलोड करें",
+ "fileSizeError": "फ़ाइल का आकार 25MB से कम होना चाहिए।"
},
"formSettings": {
"pressToAddMultiEmail": "एकाधिक ईमेल पते जोड़ने के लिए एंटर या , या स्पेस दबाएँ",
diff --git a/app/frontend/src/internationalization/trans/chefs/it/it.json b/app/frontend/src/internationalization/trans/chefs/it/it.json
index d614f6798..077d2f0cb 100644
--- a/app/frontend/src/internationalization/trans/chefs/it/it.json
+++ b/app/frontend/src/internationalization/trans/chefs/it/it.json
@@ -84,7 +84,8 @@
"deleteSuccess": "Template eliminato con successo.",
"deleteError": "Si è verificato un errore durante l'eliminazione del template.",
"fetchError": "Si è verificato un errore durante il recupero del template.",
- "info": "Carica un template per utilizzare il Servizio di Generazione Documenti Comuni (CDOGS)"
+ "info": "Carica un template per utilizzare il Servizio di Generazione Documenti Comuni (CDOGS)",
+ "fileSizeError": "La dimensione del file deve essere inferiore a 25 MB."
},
"formSettings": {
"pressToAddMultiEmail": "Premi invio o , o spazio per aggiungere più indirizzi email",
diff --git a/app/frontend/src/internationalization/trans/chefs/ja/ja.json b/app/frontend/src/internationalization/trans/chefs/ja/ja.json
index 4db0ec2c4..0d0326376 100644
--- a/app/frontend/src/internationalization/trans/chefs/ja/ja.json
+++ b/app/frontend/src/internationalization/trans/chefs/ja/ja.json
@@ -84,7 +84,8 @@
"deleteSuccess": "テンプレートが正常に削除されました。",
"deleteError": "テンプレートの削除中にエラーが発生しました。",
"fetchError": "テンプレートの取得中にエラーが発生しました。",
- "info": "共通ドキュメント生成サービス(CDOGS)を使用するためのテンプレートをアップロードしてください"
+ "info": "共通ドキュメント生成サービス(CDOGS)を使用するためのテンプレートをアップロードしてください",
+ "fileSizeError": "ファイルサイズは25MB以下でなければなりません。"
},
"formSettings": {
"pressToAddMultiEmail": "Enterまたは、またはスペースを押して複数の電子メール アドレスを追加します",
diff --git a/app/frontend/src/internationalization/trans/chefs/ko/ko.json b/app/frontend/src/internationalization/trans/chefs/ko/ko.json
index f59332df6..171bf2ed3 100644
--- a/app/frontend/src/internationalization/trans/chefs/ko/ko.json
+++ b/app/frontend/src/internationalization/trans/chefs/ko/ko.json
@@ -84,7 +84,8 @@
"deleteSuccess": "템플릿이 성공적으로 삭제되었습니다.",
"deleteError": "템플릿 삭제 중 오류가 발생했습니다.",
"fetchError": "템플릿 가져오기 중 오류가 발생했습니다.",
- "info": "공통 문서 생성 서비스(CDOGS)를 사용하기 위해 템플릿을 업로드하십시오"
+ "info": "공통 문서 생성 서비스(CDOGS)를 사용하기 위해 템플릿을 업로드하십시오",
+ "fileSizeError": "파일 크기는 25MB 이하여야 합니다."
},
"formSettings": {
"pressToAddMultiEmail": "여러 이메일 주소를 추가하려면 enter 또는 , 또는 space를 누르십시오.",
diff --git a/app/frontend/src/internationalization/trans/chefs/pa/pa.json b/app/frontend/src/internationalization/trans/chefs/pa/pa.json
index 1c04cf1c7..4175c49ef 100644
--- a/app/frontend/src/internationalization/trans/chefs/pa/pa.json
+++ b/app/frontend/src/internationalization/trans/chefs/pa/pa.json
@@ -84,7 +84,8 @@
"deleteSuccess": "ਟੈਂਪਲੇਟ ਸਫਲਤਾਪੂਰਵਕ ਮਿਟਾਈ ਗਈ।",
"deleteError": "ਟੈਂਪਲੇਟ ਮਿਟਾਉਣ ਸਮੇਂ ਇੱਕ ਗਲਤੀ ਆਈ।",
"fetchError": "ਟੈਂਪਲੇਟ ਲਿਆਉਣ ਸਮੇਂ ਇੱਕ ਗਲਤੀ ਆਈ।",
- "info": "ਕੌਮਨ ਦਸਤਾਵੇਜ਼ ਜਨਰੇਸ਼ਨ ਸਰਵਿਸ (CDOGS) ਵਰਤਣ ਲਈ ਇੱਕ ਟੈਂਪਲੇਟ ਅੱਪਲੋਡ ਕਰੋ"
+ "info": "ਕੌਮਨ ਦਸਤਾਵੇਜ਼ ਜਨਰੇਸ਼ਨ ਸਰਵਿਸ (CDOGS) ਵਰਤਣ ਲਈ ਇੱਕ ਟੈਂਪਲੇਟ ਅੱਪਲੋਡ ਕਰੋ",
+ "fileSizeError": "ਫਾਈਲ ਦਾ ਆਕਾਰ 25MB ਤੋਂ ਘੱਟ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।"
},
"formSettings": {
"pressToAddMultiEmail": "ਕਈ ਈਮੇਲ ਪਤੇ ਜੋੜਨ ਲਈ ਐਂਟਰ ਜਾਂ ਸਪੇਸ ਦਬਾਓ",
diff --git a/app/frontend/src/internationalization/trans/chefs/pt/pt.json b/app/frontend/src/internationalization/trans/chefs/pt/pt.json
index b3a4e6528..2855f8a04 100644
--- a/app/frontend/src/internationalization/trans/chefs/pt/pt.json
+++ b/app/frontend/src/internationalization/trans/chefs/pt/pt.json
@@ -84,7 +84,8 @@
"deleteSuccess": "Modelo excluído com sucesso.",
"deleteError": "Ocorreu um erro ao excluir o modelo.",
"fetchError": "Ocorreu um erro ao buscar o modelo.",
- "info": "Carregue um modelo para usar o Serviço de Geração de Documentos Comuns (CDOGS)"
+ "info": "Carregue um modelo para usar o Serviço de Geração de Documentos Comuns (CDOGS)",
+ "fileSizeError": "O tamanho do arquivo deve ser menor que 25 MB."
},
"formSettings": {
"pressToAddMultiEmail": "Pressione enter ou , ou espaço para adicionar vários endereços de e-mail",
diff --git a/app/frontend/src/internationalization/trans/chefs/ru/ru.json b/app/frontend/src/internationalization/trans/chefs/ru/ru.json
index 8af28b6fc..e54aaebbe 100644
--- a/app/frontend/src/internationalization/trans/chefs/ru/ru.json
+++ b/app/frontend/src/internationalization/trans/chefs/ru/ru.json
@@ -84,7 +84,8 @@
"deleteSuccess": "Шаблон успешно удален.",
"deleteError": "Произошла ошибка при удалении шаблона.",
"fetchError": "Произошла ошибка при получении шаблона.",
- "info": "Загрузите шаблон для использования Общей службы генерации документов (CDOGS)"
+ "info": "Загрузите шаблон для использования Общей службы генерации документов (CDOGS)",
+ "fileSizeError": "Размер файла должен быть менее 25 МБ."
},
"formSettings": {
"pressToAddMultiEmail": "Нажмите Enter или пробел , чтобы добавить несколько адресов электронной почты.",
diff --git a/app/frontend/src/internationalization/trans/chefs/tl/tl.json b/app/frontend/src/internationalization/trans/chefs/tl/tl.json
index bccdaa983..a6df3828c 100644
--- a/app/frontend/src/internationalization/trans/chefs/tl/tl.json
+++ b/app/frontend/src/internationalization/trans/chefs/tl/tl.json
@@ -84,7 +84,8 @@
"deleteSuccess": "Matagumpay na natanggal ang template.",
"deleteError": "Nagkaroon ng error habang tinatanggal ang template.",
"fetchError": "Nagkaroon ng error habang kinukuha ang template.",
- "info": "Mag-upload ng template upang gamitin ang Common Document Generation Service (CDOGS)"
+ "info": "Mag-upload ng template upang gamitin ang Common Document Generation Service (CDOGS)",
+ "fileSizeError": "Ang laki ng file ay dapat mas mababa sa 25MB."
},
"formSettings": {
"pressToAddMultiEmail": "Pindutin ang enter o , o space para magdagdag ng maraming email address",
diff --git a/app/frontend/src/internationalization/trans/chefs/uk/uk.json b/app/frontend/src/internationalization/trans/chefs/uk/uk.json
index e915db0de..1ba0d44f5 100644
--- a/app/frontend/src/internationalization/trans/chefs/uk/uk.json
+++ b/app/frontend/src/internationalization/trans/chefs/uk/uk.json
@@ -84,7 +84,8 @@
"deleteSuccess": "Шаблон успішно видалено.",
"deleteError": "Під час видалення шаблону сталася помилка.",
"fetchError": "Під час отримання шаблону сталася помилка.",
- "info": "Завантажте шаблон, щоб використовувати Спільний сервіс генерації документів (CDOGS)"
+ "info": "Завантажте шаблон, щоб використовувати Спільний сервіс генерації документів (CDOGS)",
+ "fileSizeError": "Розмір файлу має бути менше 25 МБ."
},
"formSettings": {
"pressToAddMultiEmail": "Щоб додати кілька електронних адрес, натисніть enter або , або пробіл",
diff --git a/app/frontend/src/internationalization/trans/chefs/vi/vi.json b/app/frontend/src/internationalization/trans/chefs/vi/vi.json
index 09b45483a..430c073ad 100644
--- a/app/frontend/src/internationalization/trans/chefs/vi/vi.json
+++ b/app/frontend/src/internationalization/trans/chefs/vi/vi.json
@@ -84,7 +84,8 @@
"deleteSuccess": "Xóa mẫu thành công.",
"deleteError": "Có lỗi xảy ra khi xóa mẫu.",
"fetchError": "Có lỗi xảy ra khi lấy mẫu.",
- "info": "Tải lên một mẫu để sử dụng Dịch vụ Tạo Tài liệu Chung (CDOGS)"
+ "info": "Tải lên một mẫu để sử dụng Dịch vụ Tạo Tài liệu Chung (CDOGS)",
+ "fileSizeError": "Kích thước tệp phải nhỏ hơn 25MB."
},
"formSettings": {
"pressToAddMultiEmail": "Nhấn enter hoặc , hoặc dấu cách để thêm nhiều địa chỉ email",
diff --git a/app/frontend/src/internationalization/trans/chefs/zh/zh.json b/app/frontend/src/internationalization/trans/chefs/zh/zh.json
index a093b928c..531af0a66 100644
--- a/app/frontend/src/internationalization/trans/chefs/zh/zh.json
+++ b/app/frontend/src/internationalization/trans/chefs/zh/zh.json
@@ -84,7 +84,8 @@
"deleteSuccess": "模板删除成功。",
"deleteError": "删除模板时发生错误。",
"fetchError": "获取模板时发生错误。",
- "info": "上传模板以使用公共文档生成服务(CDOGS)"
+ "info": "上传模板以使用公共文档生成服务(CDOGS)",
+ "fileSizeError": "文件大小必须小于25MB。"
},
"formSettings": {
"pressToAddMultiEmail": "按Enter或,或空格键添加多个电子邮件地址",
diff --git a/app/frontend/src/internationalization/trans/chefs/zhTW/zh-TW.json b/app/frontend/src/internationalization/trans/chefs/zhTW/zh-TW.json
index a0020fd7b..3761d8d46 100644
--- a/app/frontend/src/internationalization/trans/chefs/zhTW/zh-TW.json
+++ b/app/frontend/src/internationalization/trans/chefs/zhTW/zh-TW.json
@@ -84,7 +84,8 @@
"deleteSuccess": "範本成功刪除。",
"deleteError": "刪除範本時發生錯誤。",
"fetchError": "獲取範本時發生錯誤。",
- "info": "上傳範本以使用公共文檔生成服務(CDOGS)"
+ "info": "上傳範本以使用公共文檔生成服務(CDOGS)",
+ "fileSizeError": "檔案大小必須小於25MB。"
},
"formSettings": {
"pressToAddMultiEmail": "按Enter或,或空格鍵添加多個電子郵件地址",
diff --git a/app/frontend/tests/unit/components/forms/PrintOptions.spec.js b/app/frontend/tests/unit/components/forms/PrintOptions.spec.js
index ff04aec26..5214dfbfd 100644
--- a/app/frontend/tests/unit/components/forms/PrintOptions.spec.js
+++ b/app/frontend/tests/unit/components/forms/PrintOptions.spec.js
@@ -275,7 +275,7 @@ describe('PrintOptions.vue', () => {
expect(addNotificationSpy).toHaveBeenCalledTimes(1);
});
- it('validateFileExtension should remove the file extension from uploadExportFileTypes when the file input is cleared', async () => {
+ it('validateFile should remove the file extension from uploadExportFileTypes when the file input is cleared', async () => {
let submission = undefined;
formStore.form = {
id: 0,
@@ -302,11 +302,11 @@ describe('PrintOptions.vue', () => {
};
// Since this isn't in uploadExportFileTypes then it should be removed from uploadExportFileTypes
wrapper.vm.uploadExportFileTypes = ['pdf', 'txt'];
- wrapper.vm.validateFileExtension([]);
+ wrapper.vm.validateFile([]);
expect(wrapper.vm.uploadExportFileTypes).toEqual(['pdf']);
});
- it('validateFileExtension should set the output filename and set isValidFile to true if the file extension is valid', async () => {
+ it('validateFile should set the output filename and set isValidFile to true if the file extension is valid', async () => {
let submission = undefined;
formStore.form = {
id: 0,
@@ -332,7 +332,7 @@ describe('PrintOptions.vue', () => {
files: [],
};
wrapper.vm.uploadExportFileTypes = ['pdf'];
- wrapper.vm.validateFileExtension([
+ wrapper.vm.validateFile([
{
name: 'filename.txt',
},
@@ -341,7 +341,7 @@ describe('PrintOptions.vue', () => {
expect(wrapper.vm.isValidFile).toBeTruthy();
});
- it('validateFileExtension should set the output filename and set isValidFile to false if the file extension is invalid', async () => {
+ it('validateFile should set the output filename and set isValidFile to false if the file extension is invalid', async () => {
let submission = undefined;
formStore.form = {
id: 0,
@@ -367,7 +367,7 @@ describe('PrintOptions.vue', () => {
files: [],
};
wrapper.vm.uploadExportFileTypes = ['pdf'];
- wrapper.vm.validateFileExtension([
+ wrapper.vm.validateFile([
{
name: 'filename.zip',
},
diff --git a/app/frontend/tests/unit/components/forms/manage/DocumentTemplate.spec.js b/app/frontend/tests/unit/components/forms/manage/DocumentTemplate.spec.js
index e9514c10b..1207bcd6f 100644
--- a/app/frontend/tests/unit/components/forms/manage/DocumentTemplate.spec.js
+++ b/app/frontend/tests/unit/components/forms/manage/DocumentTemplate.spec.js
@@ -338,7 +338,9 @@ describe('DocumentTemplate.vue', () => {
'documentTemplateCreate'
);
documentTemplateCreateSpy.mockImplementation(() => {
- throw new Error('Error');
+ const error = new Error('Error');
+ error.response = { status: 500 };
+ throw error;
});
const wrapper = mount(DocumentTemplate, {
global: {