diff --git a/src/pages/sponsors-global/page-templates/page-template-list-page.js b/src/pages/sponsors-global/page-templates/page-template-list-page.js
index 0b4b05d21..5f0bc4d53 100644
--- a/src/pages/sponsors-global/page-templates/page-template-list-page.js
+++ b/src/pages/sponsors-global/page-templates/page-template-list-page.js
@@ -285,6 +285,7 @@ const PageTemplateListPage = ({
pageTemplate={pageTemplate}
onClose={handleClosePageDialog}
onSave={handleSavePageTemplate}
+ isGlobal
/>
)}
{openCloneDialog && (
diff --git a/src/pages/sponsors-global/page-templates/page-template-popup/index.js b/src/pages/sponsors-global/page-templates/page-template-popup/index.js
index 91a7b2068..46636cea3 100644
--- a/src/pages/sponsors-global/page-templates/page-template-popup/index.js
+++ b/src/pages/sponsors-global/page-templates/page-template-popup/index.js
@@ -41,7 +41,8 @@ const PageTemplatePopup = ({
summitId,
sponsorId,
sponsorshipIds,
- title
+ title,
+ isGlobal
}) => {
const popupTitle =
title ??
@@ -82,7 +83,7 @@ const PageTemplatePopup = ({
kind: yup.string().equals([PAGES_MODULE_KINDS.MEDIA]),
name: yup.string().required(T.translate("validation.required")),
type: yup.string().required(T.translate("validation.required")),
- upload_deadline: yup.date().required(T.translate("validation.required")),
+ upload_deadline: yup.date().nullable(),
description: yup.string().required(T.translate("validation.required")),
max_file_size: yup.number().when("type", {
is: PAGE_MODULES_MEDIA_TYPES.FILE,
@@ -301,7 +302,7 @@ const PageTemplatePopup = ({
-
+
@@ -323,7 +324,8 @@ PageTemplatePopup.propTypes = {
sponsorshipIds: PropTypes.array,
summitId: PropTypes.number,
sponsorId: PropTypes.number,
- title: PropTypes.string
+ title: PropTypes.string,
+ isGlobal: PropTypes.bool
};
export default PageTemplatePopup;
diff --git a/src/pages/sponsors-global/page-templates/page-template-popup/modules/page-template-media-request-module.js b/src/pages/sponsors-global/page-templates/page-template-popup/modules/page-template-media-request-module.js
index 72f11853e..610959506 100644
--- a/src/pages/sponsors-global/page-templates/page-template-popup/modules/page-template-media-request-module.js
+++ b/src/pages/sponsors-global/page-templates/page-template-popup/modules/page-template-media-request-module.js
@@ -8,10 +8,14 @@ import MuiFormikDatepicker from "openstack-uicore-foundation/lib/components/mui/
import MuiFormikTextField from "../../../../../components/mui/formik-inputs/mui-formik-textfield";
import MuiFormikRadioGroup from "../../../../../components/mui/formik-inputs/mui-formik-radio-group";
import MuiFormikFilesizeField from "../../../../../components/mui/formik-inputs/mui-formik-file-size-field";
-import { PAGE_MODULES_MEDIA_TYPES } from "../../../../../utils/constants";
+import {
+ COLUMN_6,
+ COLUMN_12,
+ PAGE_MODULES_MEDIA_TYPES
+} from "../../../../../utils/constants";
import MuiFormikSelect from "../../../../../components/mui/formik-inputs/mui-formik-select";
-const MediaRequestModule = ({ baseName, index, mediaFileTypes }) => {
+const MediaRequestModule = ({ baseName, index, mediaFileTypes, isGlobal }) => {
const { values } = useFormikContext();
const buildFieldName = (field) => `${baseName}[${index}].${field}`;
@@ -47,7 +51,7 @@ const MediaRequestModule = ({ baseName, index, mediaFileTypes }) => {
-
+
{T.translate("page_template_list.page_crud.name")}
@@ -57,15 +61,17 @@ const MediaRequestModule = ({ baseName, index, mediaFileTypes }) => {
margin="none"
/>
-
-
- {T.translate("page_template_list.page_crud.upload_deadline")}
-
-
-
+ {!isGlobal && (
+
+
+ {T.translate("page_template_list.page_crud.upload_deadline")}
+
+
+
+ )}
{mediaType === PAGE_MODULES_MEDIA_TYPES.FILE && (
<>
@@ -129,7 +135,9 @@ const MediaRequestModule = ({ baseName, index, mediaFileTypes }) => {
MediaRequestModule.propTypes = {
baseName: PropTypes.string.isRequired,
- index: PropTypes.number.isRequired
+ index: PropTypes.number.isRequired,
+ mediaFileTypes: PropTypes.array.isRequired,
+ isGlobal: PropTypes.bool
};
const mapStateToProps = ({ mediaUploadState }) => ({
diff --git a/src/pages/sponsors-global/page-templates/page-template-popup/page-template-modules-form.js b/src/pages/sponsors-global/page-templates/page-template-popup/page-template-modules-form.js
index 67bf40ecc..0ee76ecc0 100644
--- a/src/pages/sponsors-global/page-templates/page-template-popup/page-template-modules-form.js
+++ b/src/pages/sponsors-global/page-templates/page-template-popup/page-template-modules-form.js
@@ -25,7 +25,7 @@ import DocumentDownloadModule from "./modules/page-template-document-download-mo
import MediaRequestModule from "./modules/page-template-media-request-module";
import { getAllMediaFileTypes } from "../../../../actions/media-file-type-actions";
-const PageModules = ({ name = "modules", getAllMediaFileTypes }) => {
+const PageModules = ({ name = "modules", getAllMediaFileTypes, isGlobal }) => {
const { values, setFieldValue, errors, submitCount } = useFormikContext();
const modules = getIn(values, name) || [];
const moduleErrors = getIn(errors, name);
@@ -129,7 +129,13 @@ const PageModules = ({ name = "modules", getAllMediaFileTypes }) => {
case PAGES_MODULE_KINDS.DOCUMENT:
return ;
case PAGES_MODULE_KINDS.MEDIA:
- return ;
+ return (
+
+ );
default:
return null;
}
@@ -225,7 +231,8 @@ const PageModules = ({ name = "modules", getAllMediaFileTypes }) => {
};
PageModules.propTypes = {
- name: PropTypes.string
+ name: PropTypes.string,
+ isGlobal: PropTypes.bool
};
const mapStateToProps = () => ({});
diff --git a/src/utils/__tests__/page-template.test.js b/src/utils/__tests__/page-template.test.js
index 60d402b48..68b7b4a81 100644
--- a/src/utils/__tests__/page-template.test.js
+++ b/src/utils/__tests__/page-template.test.js
@@ -93,6 +93,30 @@ describe("normalizePageTemplateModules", () => {
const [result] = normalizePageTemplateModules([module]);
expect(result.max_file_size).toBe(2048);
});
+
+ it("should omit upload_deadline from payload when null (global template)", () => {
+ const module = {
+ kind: PAGES_MODULE_KINDS.MEDIA,
+ type: PAGE_MODULES_MEDIA_TYPES.FILE,
+ upload_deadline: null,
+ file_type_id: 3,
+ max_file_size: 1024
+ };
+ const [result] = normalizePageTemplateModules([module]);
+ expect(result).not.toHaveProperty("upload_deadline");
+ });
+
+ it("should omit upload_deadline from payload when undefined", () => {
+ const module = {
+ kind: PAGES_MODULE_KINDS.MEDIA,
+ type: PAGE_MODULES_MEDIA_TYPES.FILE,
+ upload_deadline: undefined,
+ file_type_id: 3,
+ max_file_size: 1024
+ };
+ const [result] = normalizePageTemplateModules([module]);
+ expect(result).not.toHaveProperty("upload_deadline");
+ });
});
describe("MEDIA kind — INPUT type", () => {
@@ -116,7 +140,17 @@ describe("normalizePageTemplateModules", () => {
type: PAGE_MODULES_MEDIA_TYPES.INPUT
};
const [result] = normalizePageTemplateModules([module]);
- expect(result.upload_deadline).toBeUndefined();
+ expect(result).not.toHaveProperty("upload_deadline");
+ });
+
+ it("should omit upload_deadline from payload when null (global template)", () => {
+ const module = {
+ kind: PAGES_MODULE_KINDS.MEDIA,
+ type: PAGE_MODULES_MEDIA_TYPES.INPUT,
+ upload_deadline: null
+ };
+ const [result] = normalizePageTemplateModules([module]);
+ expect(result).not.toHaveProperty("upload_deadline");
});
});
diff --git a/src/utils/constants.js b/src/utils/constants.js
index 4b217d060..858f1f13b 100644
--- a/src/utils/constants.js
+++ b/src/utils/constants.js
@@ -154,8 +154,12 @@ export const ONE_HUNDRED = 100;
export const COLUMN_4 = 4;
+export const COLUMN_6 = 6;
+
export const COLUMN_8 = 8;
+export const COLUMN_12 = 12;
+
export const DEFAULT_Z_INDEX = 1;
export const HIGH_Z_INDEX = 9999;
diff --git a/src/utils/page-template.js b/src/utils/page-template.js
index c57d8d831..775be4541 100644
--- a/src/utils/page-template.js
+++ b/src/utils/page-template.js
@@ -46,6 +46,8 @@ export const normalizePageTemplateModules = (modules = [], timeZone = null) =>
normalizedModule.upload_deadline = timeZone
? moment.tz(module.upload_deadline, timeZone).unix()
: moment.utc(module.upload_deadline).unix();
+ } else {
+ delete normalizedModule.upload_deadline;
}
if (module.file_type_id) {
@@ -81,4 +83,3 @@ export const normalizePageTemplateModules = (modules = [], timeZone = null) =>
return normalizedModule;
});
-
\ No newline at end of file