From 921501b14a0d7c114466b349451486d0d5faae02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Castillo?= Date: Sun, 1 Feb 2026 03:23:03 -0300 Subject: [PATCH 1/6] feat: add edit popup on sponsor pages list MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tomás Castillo --- src/actions/page-template-actions.js | 7 +- src/actions/sponsor-pages-actions.js | 119 +++++++++++++++++- src/i18n/en.json | 2 + .../page-templates/page-template-list-page.js | 4 +- .../page-template-popup/index.js | 22 +++- .../sponsors/sponsor-pages-list-page/index.js | 28 +++-- .../sponsors/sponsor-pages-list-reducer.js | 15 ++- 7 files changed, 181 insertions(+), 16 deletions(-) diff --git a/src/actions/page-template-actions.js b/src/actions/page-template-actions.js index 1fa0f7fab..9c6fe5443 100644 --- a/src/actions/page-template-actions.js +++ b/src/actions/page-template-actions.js @@ -55,7 +55,10 @@ export const getPageTemplates = orderDir = DEFAULT_ORDER_DIR, hideArchived = false ) => - async (dispatch) => { + async (dispatch, getState) => { + const { currentSummitState } = getState(); + const { currentSummit } = currentSummitState; + const summitTZ = currentSummit.time_zone.name; const accessToken = await getAccessTokenSafely(); const filter = []; @@ -93,7 +96,7 @@ export const getPageTemplates = createAction(RECEIVE_PAGE_TEMPLATES), `${window.SPONSOR_PAGES_API_URL}/api/v1/page-templates`, authErrorHandler, - { order, orderDir, page, perPage, term, hideArchived } + { order, orderDir, page, perPage, term, hideArchived, summitTZ } )(params)(dispatch).then(() => { dispatch(stopLoading()); }); diff --git a/src/actions/sponsor-pages-actions.js b/src/actions/sponsor-pages-actions.js index bc4fa17ba..9d68471df 100644 --- a/src/actions/sponsor-pages-actions.js +++ b/src/actions/sponsor-pages-actions.js @@ -22,17 +22,22 @@ import { stopLoading } from "openstack-uicore-foundation/lib/utils/actions"; import T from "i18n-react/dist/i18n-react"; +import moment from "moment-timezone"; import { escapeFilterValue, getAccessTokenSafely } from "../utils/methods"; import { DEFAULT_CURRENT_PAGE, DEFAULT_ORDER_DIR, - DEFAULT_PER_PAGE + DEFAULT_PER_PAGE, + PAGES_MODULE_KINDS } from "../utils/constants"; import { snackbarErrorHandler, snackbarSuccessHandler } from "./base-actions"; export const REQUEST_SPONSOR_PAGES = "REQUEST_SPONSOR_PAGES"; export const RECEIVE_SPONSOR_PAGES = "RECEIVE_SPONSOR_PAGES"; +export const RECEIVE_SPONSOR_PAGE = "RECEIVE_SPONSOR_PAGE"; +export const SPONSOR_PAGE_UPDATED = "SPONSOR_PAGE_UPDATED"; +export const SPONSOR_PAGE_ADDED = "SPONSOR_PAGE_ADDED"; export const SPONSOR_PAGE_ARCHIVED = "SPONSOR_PAGE_ARCHIVED"; export const SPONSOR_PAGE_UNARCHIVED = "SPONSOR_PAGE_UNARCHIVED"; @@ -97,6 +102,118 @@ export const getSponsorPages = }); }; +export const getSponsorPage = (pageId) => async (dispatch, getState) => { + const { currentSummitState } = getState(); + const { currentSummit } = currentSummitState; + const accessToken = await getAccessTokenSafely(); + + dispatch(startLoading()); + + const params = { + access_token: accessToken + }; + + return getRequest( + null, + createAction(RECEIVE_SPONSOR_PAGE), + `${window.SPONSOR_PAGES_API_URL}/api/v1/summits/${currentSummit.id}/show-pages/${pageId}`, + authErrorHandler + )(params)(dispatch).then(() => { + dispatch(stopLoading()); + }); +}; + +const normalizeSponsorPage = (entity) => { + const normalizedEntity = { ...entity }; + + normalizedEntity.modules = entity.modules.map((module) => { + const normalizedModule = { ...module }; + + if (module.kind === PAGES_MODULE_KINDS.MEDIA && module.upload_deadline) { + normalizedModule.upload_deadline = moment + .utc(module.upload_deadline) + .unix(); + } + + if (module.kind === PAGES_MODULE_KINDS.MEDIA && module.file_type_id) { + normalizedModule.file_type_id = + module.file_type_id?.value || module.file_type_id; + } + + if (module.kind === PAGES_MODULE_KINDS.DOCUMENT && module.file) { + normalizedModule.file = module.file[0] || null; + } + + delete normalizedModule._tempId; + + return normalizedModule; + }); + + return normalizedEntity; +}; + +export const saveSponsorPage = (entity) => async (dispatch, getState) => { + const { currentSummitState } = getState(); + const { currentSummit } = currentSummitState; + const accessToken = await getAccessTokenSafely(); + + dispatch(startLoading()); + + const params = { + access_token: accessToken + }; + + const normalizedSponsorPage = normalizeSponsorPage(entity); + + if (entity.id) { + return putRequest( + null, + createAction(SPONSOR_PAGE_UPDATED), + `${window.SPONSOR_PAGES_API_URL}/api/v1/summits/${currentSummit.id}/show-pages/${entity.id}`, + normalizedSponsorPage, + snackbarErrorHandler, + entity + )(params)(dispatch) + .then(() => { + dispatch( + snackbarSuccessHandler({ + title: T.translate("general.success"), + html: T.translate("sponsor_pages.page_saved") + }) + ); + }) + .catch((err) => { + console.error(err); + }) + .finally(() => { + dispatch(stopLoading()); + }); + } + + return postRequest( + null, + createAction(SPONSOR_PAGE_ADDED), + `${window.SPONSOR_PAGES_API_URL}/api/v1/summits/${currentSummit.id}/show-pages`, + normalizedSponsorPage, + snackbarErrorHandler, + entity + )(params)(dispatch) + .then(() => { + dispatch( + snackbarSuccessHandler({ + title: T.translate("general.success"), + html: T.translate("sponsor_pages.page_created") + }) + ); + }) + .catch((err) => { + console.error(err); + }) + .finally(() => { + dispatch(stopLoading()); + }); +}; + export const cloneGlobalPage = (pagesIds, sponsorIds, allSponsors) => async (dispatch, getState) => { const { currentSummitState } = getState(); diff --git a/src/i18n/en.json b/src/i18n/en.json index e2a953b18..e5a054a32 100644 --- a/src/i18n/en.json +++ b/src/i18n/en.json @@ -2650,6 +2650,8 @@ "filter": "Filter", "sort_by": "Sort By", "no_sponsors_pages": "No pages found for this search criteria.", + "page_saved": "Page updated successfully.", + "page_created": "Page created successfully.", "placeholders": { "search": "Search..." }, 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 473b5fc0c..caa97692b 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 @@ -50,7 +50,8 @@ const PageTemplateListPage = ({ archivePageTemplate, unarchivePageTemplate, savePageTemplate, - deletePageTemplate + deletePageTemplate, + summitTZ }) => { const [pageTemplateId, setPageTemplateId] = useState(null); const [openCloneDialog, setOpenCloneDialog] = useState(false); @@ -268,6 +269,7 @@ const PageTemplateListPage = ({ open={!!pageTemplateId} onClose={() => setPageTemplateId(null)} onSave={handleSavePageTemplate} + summitTZ={summitTZ} /> { +const PageTemplatePopup = ({ + pageTemplate, + open, + onClose, + onSave, + summitTZ +}) => { const handleClose = () => { onClose(); }; @@ -108,10 +115,21 @@ const PageTemplatePopup = ({ pageTemplate, open, onClose, onSave }) => { } }); + const normalizeModules = (modules = [], summitTZ = "UTC") => + modules.map((m) => { + if (m.kind === PAGES_MODULE_KINDS.MEDIA && m.upload_deadline) { + return { + ...m, + upload_deadline: epochToMomentTimeZone(m.upload_deadline, summitTZ) + }; + } + return m; + }); + const formik = useFormik({ initialValues: { ...pageTemplate, - modules: pageTemplate?.modules || [] + modules: normalizeModules(pageTemplate?.modules, summitTZ) || [] }, validationSchema: yup.object().shape({ code: yup.string().required(T.translate("validation.required")), diff --git a/src/pages/sponsors/sponsor-pages-list-page/index.js b/src/pages/sponsors/sponsor-pages-list-page/index.js index 68d6fe1ff..507534619 100644 --- a/src/pages/sponsors/sponsor-pages-list-page/index.js +++ b/src/pages/sponsors/sponsor-pages-list-page/index.js @@ -26,12 +26,14 @@ import AddIcon from "@mui/icons-material/Add"; import { getSponsorPages, archiveSponsorPage, - unarchiveSponsorPage + unarchiveSponsorPage, + getSponsorPage, + saveSponsorPage } from "../../../actions/sponsor-pages-actions"; -import { getSponsorForm } from "../../../actions/sponsor-forms-actions"; import CustomAlert from "../../../components/mui/custom-alert"; import MuiTable from "../../../components/mui/table/mui-table"; import GlobalPagePopup from "./components/global-page/global-page-popup"; +import PageTemplatePopup from "../../sponsors-global/page-templates/page-template-popup"; const SponsorPagesListPage = ({ sponsorPages, @@ -42,10 +44,12 @@ const SponsorPagesListPage = ({ orderDir, hideArchived, totalCount, + currentSponsorPage, getSponsorPages, archiveSponsorPage, unarchiveSponsorPage, - getSponsorForm + getSponsorPage, + saveSponsorPage }) => { const [openPopup, setOpenPopup] = useState(null); @@ -73,7 +77,7 @@ const SponsorPagesListPage = ({ }; const handleRowEdit = (row) => { - getSponsorForm(row.id).then(() => { + getSponsorPage(row.id).then(() => { setOpenPopup("new"); }); }; @@ -99,6 +103,13 @@ const SponsorPagesListPage = ({ ); }; + const handleSaveSponsorPage = (entity) => { + saveSponsorPage(entity).then(() => { + setOpenPopup(null); + getSponsorPages(); + }); + }; + const columns = [ { columnKey: "code", @@ -222,10 +233,12 @@ const SponsorPagesListPage = ({ open={openPopup === "clone"} onClose={() => setOpenPopup(null)} /> - {/* setOpenPopup(null)} - /> */} + onSave={handleSaveSponsorPage} + /> ); }; @@ -238,5 +251,6 @@ export default connect(mapStateToProps, { getSponsorPages, archiveSponsorPage, unarchiveSponsorPage, - getSponsorForm + getSponsorPage, + saveSponsorPage })(SponsorPagesListPage); diff --git a/src/reducers/sponsors/sponsor-pages-list-reducer.js b/src/reducers/sponsors/sponsor-pages-list-reducer.js index 2a57d10b1..80d4133e6 100644 --- a/src/reducers/sponsors/sponsor-pages-list-reducer.js +++ b/src/reducers/sponsors/sponsor-pages-list-reducer.js @@ -13,6 +13,7 @@ import { LOGOUT_USER } from "openstack-uicore-foundation/lib/security/actions"; import { + RECEIVE_SPONSOR_PAGE, RECEIVE_SPONSOR_PAGES, REQUEST_SPONSOR_PAGES, SPONSOR_PAGE_ARCHIVED, @@ -30,7 +31,9 @@ const DEFAULT_STATE = { lastPage: 1, perPage: 10, totalCount: 0, - hideArchived: false + hideArchived: false, + currentSponsorPage: null, + summitTZ: null }; const sponsorPagesListReducer = (state = DEFAULT_STATE, action) => { @@ -42,7 +45,7 @@ const sponsorPagesListReducer = (state = DEFAULT_STATE, action) => { return DEFAULT_STATE; } case REQUEST_SPONSOR_PAGES: { - const { order, orderDir, page, term, hideArchived } = payload; + const { order, orderDir, page, term, hideArchived, summitTZ } = payload; return { ...state, @@ -51,7 +54,8 @@ const sponsorPagesListReducer = (state = DEFAULT_STATE, action) => { sponsorPages: [], currentPage: page, term, - hideArchived + hideArchived, + summitTZ }; } case RECEIVE_SPONSOR_PAGES: { @@ -104,6 +108,11 @@ const sponsorPagesListReducer = (state = DEFAULT_STATE, action) => { sponsorPages: [...pages] }; } + case RECEIVE_SPONSOR_PAGE: { + const sponsorPage = payload.response; + + return { ...state, currentSponsorPage: sponsorPage }; + } default: return state; } From c9d47a78f6d90ed25782c15c819dbd7e88f6a5a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Castillo?= Date: Mon, 2 Feb 2026 18:25:43 -0300 Subject: [PATCH 2/6] fix: adjust initial value for file types on media modules at edit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tomás Castillo --- src/actions/sponsor-pages-actions.js | 3 ++- .../page-template-popup/index.js | 20 ++++++++++++++----- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/actions/sponsor-pages-actions.js b/src/actions/sponsor-pages-actions.js index 9d68471df..0dc717160 100644 --- a/src/actions/sponsor-pages-actions.js +++ b/src/actions/sponsor-pages-actions.js @@ -110,7 +110,8 @@ export const getSponsorPage = (pageId) => async (dispatch, getState) => { dispatch(startLoading()); const params = { - access_token: accessToken + access_token: accessToken, + expand: "modules.file_type" }; return getRequest( 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 5029dae4c..aeb787db2 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 @@ -117,11 +117,21 @@ const PageTemplatePopup = ({ const normalizeModules = (modules = [], summitTZ = "UTC") => modules.map((m) => { - if (m.kind === PAGES_MODULE_KINDS.MEDIA && m.upload_deadline) { - return { - ...m, - upload_deadline: epochToMomentTimeZone(m.upload_deadline, summitTZ) - }; + if (m.kind === PAGES_MODULE_KINDS.MEDIA) { + const normalizeModule = { ...m }; + if (m.upload_deadline) { + normalizeModule.upload_deadline = epochToMomentTimeZone( + m.upload_deadline, + summitTZ + ); + } + if (m.file_type) { + normalizeModule.file_type_id = { + value: m.file_type.id, + label: `${m.file_type.name} (${m.file_type.allowed_extensions})` + }; + } + return normalizeModule; } return m; }); From f13f30524e693ed8dd42579d0175ef967dcdb6e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Castillo?= Date: Mon, 2 Feb 2026 18:52:04 -0300 Subject: [PATCH 3/6] fix: reset form on close for sponsor page popup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tomás Castillo --- src/actions/sponsor-pages-actions.js | 5 +++++ .../sponsors/sponsor-pages-list-page/index.js | 16 ++++++++++++---- .../sponsors/sponsor-pages-list-reducer.js | 14 ++++++++++++-- 3 files changed, 29 insertions(+), 6 deletions(-) diff --git a/src/actions/sponsor-pages-actions.js b/src/actions/sponsor-pages-actions.js index 0dc717160..3dc0a80b0 100644 --- a/src/actions/sponsor-pages-actions.js +++ b/src/actions/sponsor-pages-actions.js @@ -40,6 +40,7 @@ export const SPONSOR_PAGE_UPDATED = "SPONSOR_PAGE_UPDATED"; export const SPONSOR_PAGE_ADDED = "SPONSOR_PAGE_ADDED"; export const SPONSOR_PAGE_ARCHIVED = "SPONSOR_PAGE_ARCHIVED"; export const SPONSOR_PAGE_UNARCHIVED = "SPONSOR_PAGE_UNARCHIVED"; +export const RESET_SPONSOR_PAGE_FORM = "RESET_SPONSOR_PAGE_FORM"; export const GLOBAL_PAGE_CLONED = "GLOBAL_PAGE_CLONED"; @@ -215,6 +216,10 @@ export const saveSponsorPage = (entity) => async (dispatch, getState) => { }); }; +export const resetSponsorPageForm = () => (dispatch) => { + dispatch(createAction(RESET_SPONSOR_PAGE_FORM)({})); +}; + export const cloneGlobalPage = (pagesIds, sponsorIds, allSponsors) => async (dispatch, getState) => { const { currentSummitState } = getState(); diff --git a/src/pages/sponsors/sponsor-pages-list-page/index.js b/src/pages/sponsors/sponsor-pages-list-page/index.js index 507534619..c22e94bc0 100644 --- a/src/pages/sponsors/sponsor-pages-list-page/index.js +++ b/src/pages/sponsors/sponsor-pages-list-page/index.js @@ -28,7 +28,8 @@ import { archiveSponsorPage, unarchiveSponsorPage, getSponsorPage, - saveSponsorPage + saveSponsorPage, + resetSponsorPageForm } from "../../../actions/sponsor-pages-actions"; import CustomAlert from "../../../components/mui/custom-alert"; import MuiTable from "../../../components/mui/table/mui-table"; @@ -49,7 +50,8 @@ const SponsorPagesListPage = ({ archiveSponsorPage, unarchiveSponsorPage, getSponsorPage, - saveSponsorPage + saveSponsorPage, + resetSponsorPageForm }) => { const [openPopup, setOpenPopup] = useState(null); @@ -110,6 +112,11 @@ const SponsorPagesListPage = ({ }); }; + const handleTemplatePopupClose = () => { + resetSponsorPageForm(); + setOpenPopup(null); + }; + const columns = [ { columnKey: "code", @@ -236,7 +243,7 @@ const SponsorPagesListPage = ({ setOpenPopup(null)} + onClose={handleTemplatePopupClose} onSave={handleSaveSponsorPage} /> @@ -252,5 +259,6 @@ export default connect(mapStateToProps, { archiveSponsorPage, unarchiveSponsorPage, getSponsorPage, - saveSponsorPage + saveSponsorPage, + resetSponsorPageForm })(SponsorPagesListPage); diff --git a/src/reducers/sponsors/sponsor-pages-list-reducer.js b/src/reducers/sponsors/sponsor-pages-list-reducer.js index 80d4133e6..67f600950 100644 --- a/src/reducers/sponsors/sponsor-pages-list-reducer.js +++ b/src/reducers/sponsors/sponsor-pages-list-reducer.js @@ -17,11 +17,18 @@ import { RECEIVE_SPONSOR_PAGES, REQUEST_SPONSOR_PAGES, SPONSOR_PAGE_ARCHIVED, - SPONSOR_PAGE_UNARCHIVED + SPONSOR_PAGE_UNARCHIVED, + RESET_SPONSOR_PAGE_FORM } from "../../actions/sponsor-pages-actions"; import { SET_CURRENT_SUMMIT } from "../../actions/summit-actions"; import { PAGES_MODULE_KINDS } from "../../utils/constants"; +const DEFAULT_SPONSOR_PAGE = { + code: "", + name: "", + modules: [] +}; + const DEFAULT_STATE = { sponsorPages: [], term: "", @@ -32,7 +39,7 @@ const DEFAULT_STATE = { perPage: 10, totalCount: 0, hideArchived: false, - currentSponsorPage: null, + currentSponsorPage: DEFAULT_SPONSOR_PAGE, summitTZ: null }; @@ -113,6 +120,9 @@ const sponsorPagesListReducer = (state = DEFAULT_STATE, action) => { return { ...state, currentSponsorPage: sponsorPage }; } + case RESET_SPONSOR_PAGE_FORM: { + return { ...state, currentSponsorPage: DEFAULT_SPONSOR_PAGE }; + } default: return state; } From 218d880b373f9af56cc4a6cc61944a82991ba50b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Castillo?= Date: Wed, 11 Feb 2026 17:10:56 -0300 Subject: [PATCH 4/6] fix: add missing expand for page modules MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tomás Castillo --- src/actions/sponsor-pages-actions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/actions/sponsor-pages-actions.js b/src/actions/sponsor-pages-actions.js index 3dc0a80b0..2de241fe7 100644 --- a/src/actions/sponsor-pages-actions.js +++ b/src/actions/sponsor-pages-actions.js @@ -112,7 +112,7 @@ export const getSponsorPage = (pageId) => async (dispatch, getState) => { const params = { access_token: accessToken, - expand: "modules.file_type" + expand: "modules,modules.file_type" }; return getRequest( From 157b2a7b28187f6d0be0c5a59812567c7c28d542 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Castillo?= Date: Fri, 13 Feb 2026 02:00:57 -0300 Subject: [PATCH 5/6] fix: renaming and adjust structure to show pages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tomás Castillo --- src/actions/show-pages-actions.js | 271 ++++++++++++++++++ src/actions/sponsor-pages-actions.js | 260 +---------------- .../select-page-template-dialog/index.js | 16 +- src/i18n/en.json | 2 +- src/layouts/sponsor-layout.js | 6 +- .../global-page/global-page-popup.js | 17 +- .../index.js | 119 ++++---- ...-reducer.js => show-pages-list-reducer.js} | 56 ++-- src/store.js | 4 +- 9 files changed, 377 insertions(+), 374 deletions(-) create mode 100644 src/actions/show-pages-actions.js rename src/pages/sponsors/{sponsor-pages-list-page => show-pages-list-page}/components/global-page/global-page-popup.js (85%) rename src/pages/sponsors/{sponsor-pages-list-page => show-pages-list-page}/index.js (66%) rename src/reducers/sponsors/{sponsor-pages-list-reducer.js => show-pages-list-reducer.js} (70%) diff --git a/src/actions/show-pages-actions.js b/src/actions/show-pages-actions.js new file mode 100644 index 000000000..590ab74a7 --- /dev/null +++ b/src/actions/show-pages-actions.js @@ -0,0 +1,271 @@ +/** + * Copyright 2018 OpenStack Foundation + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * */ + +import { + authErrorHandler, + createAction, + getRequest, + postRequest, + putRequest, + deleteRequest, + startLoading, + stopLoading +} from "openstack-uicore-foundation/lib/utils/actions"; +import T from "i18n-react/dist/i18n-react"; +import moment from "moment-timezone"; +import { escapeFilterValue, getAccessTokenSafely } from "../utils/methods"; +import { + DEFAULT_CURRENT_PAGE, + DEFAULT_ORDER_DIR, + DEFAULT_PER_PAGE, + PAGES_MODULE_KINDS +} from "../utils/constants"; +import { snackbarErrorHandler, snackbarSuccessHandler } from "./base-actions"; + +export const REQUEST_SHOW_PAGES = "REQUEST_SHOW_PAGES"; +export const RECEIVE_SHOW_PAGES = "RECEIVE_SHOW_PAGES"; + +export const RECEIVE_SHOW_PAGE = "RECEIVE_SHOW_PAGE"; +export const SHOW_PAGE_UPDATED = "SHOW_PAGE_UPDATED"; +export const SHOW_PAGE_ADDED = "SHOW_PAGE_ADDED"; +export const SHOW_PAGE_ARCHIVED = "SHOW_PAGE_ARCHIVED"; +export const SHOW_PAGE_UNARCHIVED = "SHOW_PAGE_UNARCHIVED"; +export const RESET_SHOW_PAGE_FORM = "RESET_SHOW_PAGE_FORM"; + +export const GLOBAL_PAGE_CLONED = "GLOBAL_PAGE_CLONED"; + +export const getShowPages = + ( + term = "", + page = DEFAULT_CURRENT_PAGE, + perPage = DEFAULT_PER_PAGE, + order = "id", + orderDir = DEFAULT_ORDER_DIR, + hideArchived = false, + sponsorshipTypesId = [] + ) => + async (dispatch, getState) => { + const { currentSummitState } = getState(); + const { currentSummit } = currentSummitState; + const accessToken = await getAccessTokenSafely(); + const filter = []; + + dispatch(startLoading()); + + if (term) { + const escapedTerm = escapeFilterValue(term); + filter.push(`name=@${escapedTerm},code=@${escapedTerm}`); + } + + const params = { + page, + per_page: perPage, + access_token: accessToken, + expand: "sponsorship_types" + }; + + if (hideArchived) filter.push("is_archived==0"); + + if (sponsorshipTypesId?.length > 0) { + const formattedSponsorships = sponsorshipTypesId.join("&&"); + filter.push("applies_to_all_tiers==0"); + filter.push(`sponsorship_type_id_not_in==${formattedSponsorships}`); + } + + if (filter.length > 0) { + params["filter[]"] = filter; + } + + // order + if (order != null && orderDir != null) { + const orderDirSign = orderDir === 1 ? "" : "-"; + params.order = `${orderDirSign}${order}`; + } + + return getRequest( + createAction(REQUEST_SHOW_PAGES), + createAction(RECEIVE_SHOW_PAGES), + `${window.SPONSOR_PAGES_API_URL}/api/v1/summits/${currentSummit.id}/show-pages`, + authErrorHandler, + { order, orderDir, page, term, hideArchived } + )(params)(dispatch).then(() => { + dispatch(stopLoading()); + }); + }; + +export const getShowPage = (pageId) => async (dispatch, getState) => { + const { currentSummitState } = getState(); + const { currentSummit } = currentSummitState; + const accessToken = await getAccessTokenSafely(); + + dispatch(startLoading()); + + const params = { + access_token: accessToken, + expand: "modules,modules.file_type" + }; + + return getRequest( + null, + createAction(RECEIVE_SHOW_PAGE), + `${window.SPONSOR_PAGES_API_URL}/api/v1/summits/${currentSummit.id}/show-pages/${pageId}`, + authErrorHandler + )(params)(dispatch).then(() => { + dispatch(stopLoading()); + }); +}; + +const normalizeShowPage = (entity) => { + const normalizedEntity = { ...entity }; + + normalizedEntity.modules = entity.modules.map((module) => { + const normalizedModule = { ...module }; + + if (module.kind === PAGES_MODULE_KINDS.MEDIA && module.upload_deadline) { + normalizedModule.upload_deadline = moment + .utc(module.upload_deadline) + .unix(); + } + + if (module.kind === PAGES_MODULE_KINDS.MEDIA && module.file_type_id) { + normalizedModule.file_type_id = + module.file_type_id?.value || module.file_type_id; + } + + if (module.kind === PAGES_MODULE_KINDS.DOCUMENT && module.file) { + normalizedModule.file = module.file[0] || null; + } + + delete normalizedModule._tempId; + + return normalizedModule; + }); + + return normalizedEntity; +}; + +export const saveShowPage = (entity) => async (dispatch, getState) => { + const { currentSummitState } = getState(); + const { currentSummit } = currentSummitState; + const accessToken = await getAccessTokenSafely(); + + dispatch(startLoading()); + + const params = { + access_token: accessToken + }; + + const normalizedShowPage = normalizeShowPage(entity); + + if (entity.id) { + return putRequest( + null, + createAction(SHOW_PAGE_UPDATED), + `${window.SPONSOR_PAGES_API_URL}/api/v1/summits/${currentSummit.id}/show-pages/${entity.id}`, + normalizedShowPage, + snackbarErrorHandler, + entity + )(params)(dispatch) + .then(() => { + dispatch( + snackbarSuccessHandler({ + title: T.translate("general.success"), + html: T.translate("show_pages.page_saved") + }) + ); + }) + .finally(() => { + dispatch(stopLoading()); + }); + } + + return postRequest( + null, + createAction(SHOW_PAGE_ADDED), + `${window.SPONSOR_PAGES_API_URL}/api/v1/summits/${currentSummit.id}/show-pages`, + normalizedShowPage, + snackbarErrorHandler, + entity + )(params)(dispatch) + .then(() => { + dispatch( + snackbarSuccessHandler({ + title: T.translate("general.success"), + html: T.translate("show_pages.page_created") + }) + ); + }) + .finally(() => { + dispatch(stopLoading()); + }); +}; + +export const resetShowPageForm = () => (dispatch) => { + dispatch(createAction(RESET_SHOW_PAGE_FORM)({})); +}; + +export const archiveShowPage = (pageId) => async (dispatch, getState) => { + const { currentSummitState } = getState(); + const { currentSummit } = currentSummitState; + const accessToken = await getAccessTokenSafely(); + const params = { access_token: accessToken }; + + dispatch(startLoading()); + + return putRequest( + null, + createAction(SHOW_PAGE_ARCHIVED)({ pageId }), + `${window.SPONSOR_PAGES_API_URL}/api/v1/summits/${currentSummit.id}/show-pages/${pageId}/archive`, + null, + snackbarErrorHandler + )(params)(dispatch) + .then(() => { + dispatch( + snackbarSuccessHandler({ + title: T.translate("general.success"), + html: T.translate("show_pages.archived") + }) + ); + }) + .finally(() => { + dispatch(stopLoading()); + }); +}; + +export const unarchiveShowPage = (pageId) => async (dispatch, getState) => { + const { currentSummitState } = getState(); + const { currentSummit } = currentSummitState; + const accessToken = await getAccessTokenSafely(); + const params = { access_token: accessToken }; + + dispatch(startLoading()); + + return deleteRequest( + null, + createAction(SHOW_PAGE_UNARCHIVED)({ pageId }), + `${window.SPONSOR_PAGES_API_URL}/api/v1/summits/${currentSummit.id}/show-pages/${pageId}/archive`, + null, + snackbarErrorHandler + )(params)(dispatch) + .then(() => { + dispatch( + snackbarSuccessHandler({ + title: T.translate("general.success"), + html: T.translate("show_pages.unarchived") + }) + ); + }) + .finally(() => { + dispatch(stopLoading()); + }); +}; diff --git a/src/actions/sponsor-pages-actions.js b/src/actions/sponsor-pages-actions.js index 2de241fe7..02b20bde8 100644 --- a/src/actions/sponsor-pages-actions.js +++ b/src/actions/sponsor-pages-actions.js @@ -12,214 +12,18 @@ * */ import { - authErrorHandler, createAction, - getRequest, postRequest, - putRequest, - deleteRequest, startLoading, stopLoading } from "openstack-uicore-foundation/lib/utils/actions"; import T from "i18n-react/dist/i18n-react"; -import moment from "moment-timezone"; -import { escapeFilterValue, getAccessTokenSafely } from "../utils/methods"; -import { - DEFAULT_CURRENT_PAGE, - DEFAULT_ORDER_DIR, - DEFAULT_PER_PAGE, - PAGES_MODULE_KINDS -} from "../utils/constants"; +import { getAccessTokenSafely } from "../utils/methods"; import { snackbarErrorHandler, snackbarSuccessHandler } from "./base-actions"; - -export const REQUEST_SPONSOR_PAGES = "REQUEST_SPONSOR_PAGES"; -export const RECEIVE_SPONSOR_PAGES = "RECEIVE_SPONSOR_PAGES"; - -export const RECEIVE_SPONSOR_PAGE = "RECEIVE_SPONSOR_PAGE"; -export const SPONSOR_PAGE_UPDATED = "SPONSOR_PAGE_UPDATED"; -export const SPONSOR_PAGE_ADDED = "SPONSOR_PAGE_ADDED"; -export const SPONSOR_PAGE_ARCHIVED = "SPONSOR_PAGE_ARCHIVED"; -export const SPONSOR_PAGE_UNARCHIVED = "SPONSOR_PAGE_UNARCHIVED"; -export const RESET_SPONSOR_PAGE_FORM = "RESET_SPONSOR_PAGE_FORM"; +import { getShowPages } from "./show-pages-actions"; export const GLOBAL_PAGE_CLONED = "GLOBAL_PAGE_CLONED"; -export const getSponsorPages = - ( - term = "", - page = DEFAULT_CURRENT_PAGE, - perPage = DEFAULT_PER_PAGE, - order = "id", - orderDir = DEFAULT_ORDER_DIR, - hideArchived = false, - sponsorshipTypesId = [] - ) => - async (dispatch, getState) => { - const { currentSummitState } = getState(); - const { currentSummit } = currentSummitState; - const accessToken = await getAccessTokenSafely(); - const filter = []; - - dispatch(startLoading()); - - if (term) { - const escapedTerm = escapeFilterValue(term); - filter.push(`name=@${escapedTerm},code=@${escapedTerm}`); - } - - const params = { - page, - per_page: perPage, - access_token: accessToken, - expand: "sponsorship_types" - }; - - if (hideArchived) filter.push("is_archived==0"); - - if (sponsorshipTypesId?.length > 0) { - const formattedSponsorships = sponsorshipTypesId.join("&&"); - filter.push("applies_to_all_tiers==0"); - filter.push(`sponsorship_type_id_not_in==${formattedSponsorships}`); - } - - if (filter.length > 0) { - params["filter[]"] = filter; - } - - // order - if (order != null && orderDir != null) { - const orderDirSign = orderDir === 1 ? "" : "-"; - params.order = `${orderDirSign}${order}`; - } - - return getRequest( - createAction(REQUEST_SPONSOR_PAGES), - createAction(RECEIVE_SPONSOR_PAGES), - `${window.SPONSOR_PAGES_API_URL}/api/v1/summits/${currentSummit.id}/show-pages`, - authErrorHandler, - { order, orderDir, page, term, hideArchived } - )(params)(dispatch).then(() => { - dispatch(stopLoading()); - }); - }; - -export const getSponsorPage = (pageId) => async (dispatch, getState) => { - const { currentSummitState } = getState(); - const { currentSummit } = currentSummitState; - const accessToken = await getAccessTokenSafely(); - - dispatch(startLoading()); - - const params = { - access_token: accessToken, - expand: "modules,modules.file_type" - }; - - return getRequest( - null, - createAction(RECEIVE_SPONSOR_PAGE), - `${window.SPONSOR_PAGES_API_URL}/api/v1/summits/${currentSummit.id}/show-pages/${pageId}`, - authErrorHandler - )(params)(dispatch).then(() => { - dispatch(stopLoading()); - }); -}; - -const normalizeSponsorPage = (entity) => { - const normalizedEntity = { ...entity }; - - normalizedEntity.modules = entity.modules.map((module) => { - const normalizedModule = { ...module }; - - if (module.kind === PAGES_MODULE_KINDS.MEDIA && module.upload_deadline) { - normalizedModule.upload_deadline = moment - .utc(module.upload_deadline) - .unix(); - } - - if (module.kind === PAGES_MODULE_KINDS.MEDIA && module.file_type_id) { - normalizedModule.file_type_id = - module.file_type_id?.value || module.file_type_id; - } - - if (module.kind === PAGES_MODULE_KINDS.DOCUMENT && module.file) { - normalizedModule.file = module.file[0] || null; - } - - delete normalizedModule._tempId; - - return normalizedModule; - }); - - return normalizedEntity; -}; - -export const saveSponsorPage = (entity) => async (dispatch, getState) => { - const { currentSummitState } = getState(); - const { currentSummit } = currentSummitState; - const accessToken = await getAccessTokenSafely(); - - dispatch(startLoading()); - - const params = { - access_token: accessToken - }; - - const normalizedSponsorPage = normalizeSponsorPage(entity); - - if (entity.id) { - return putRequest( - null, - createAction(SPONSOR_PAGE_UPDATED), - `${window.SPONSOR_PAGES_API_URL}/api/v1/summits/${currentSummit.id}/show-pages/${entity.id}`, - normalizedSponsorPage, - snackbarErrorHandler, - entity - )(params)(dispatch) - .then(() => { - dispatch( - snackbarSuccessHandler({ - title: T.translate("general.success"), - html: T.translate("sponsor_pages.page_saved") - }) - ); - }) - .catch((err) => { - console.error(err); - }) - .finally(() => { - dispatch(stopLoading()); - }); - } - - return postRequest( - null, - createAction(SPONSOR_PAGE_ADDED), - `${window.SPONSOR_PAGES_API_URL}/api/v1/summits/${currentSummit.id}/show-pages`, - normalizedSponsorPage, - snackbarErrorHandler, - entity - )(params)(dispatch) - .then(() => { - dispatch( - snackbarSuccessHandler({ - title: T.translate("general.success"), - html: T.translate("sponsor_pages.page_created") - }) - ); - }) - .catch((err) => { - console.error(err); - }) - .finally(() => { - dispatch(stopLoading()); - }); -}; - -export const resetSponsorPageForm = () => (dispatch) => { - dispatch(createAction(RESET_SPONSOR_PAGE_FORM)({})); -}; - export const cloneGlobalPage = (pagesIds, sponsorIds, allSponsors) => async (dispatch, getState) => { const { currentSummitState } = getState(); @@ -250,69 +54,13 @@ export const cloneGlobalPage = snackbarErrorHandler )(params)(dispatch) .then(() => { - dispatch(getSponsorPages()); + dispatch(getShowPages()); dispatch( snackbarSuccessHandler({ title: T.translate("general.success"), - html: T.translate("sponsor_pages.global_page_popup.success") + html: T.translate("show_pages.global_page_popup.success") }) ); }) .finally(() => dispatch(stopLoading())); }; - -export const archiveSponsorPage = (pageId) => async (dispatch, getState) => { - const { currentSummitState } = getState(); - const { currentSummit } = currentSummitState; - const accessToken = await getAccessTokenSafely(); - const params = { access_token: accessToken }; - - dispatch(startLoading()); - - return putRequest( - null, - createAction(SPONSOR_PAGE_ARCHIVED)({ pageId }), - `${window.SPONSOR_PAGES_API_URL}/api/v1/summits/${currentSummit.id}/show-pages/${pageId}/archive`, - null, - snackbarErrorHandler - )(params)(dispatch) - .then(() => { - dispatch( - snackbarSuccessHandler({ - title: T.translate("general.success"), - html: T.translate("sponsor_pages.archived") - }) - ); - }) - .finally(() => { - dispatch(stopLoading()); - }); -}; - -export const unarchiveSponsorPage = (pageId) => async (dispatch, getState) => { - const { currentSummitState } = getState(); - const { currentSummit } = currentSummitState; - const accessToken = await getAccessTokenSafely(); - const params = { access_token: accessToken }; - - dispatch(startLoading()); - - return deleteRequest( - null, - createAction(SPONSOR_PAGE_UNARCHIVED)({ pageId }), - `${window.SPONSOR_PAGES_API_URL}/api/v1/summits/${currentSummit.id}/show-pages/${pageId}/archive`, - null, - snackbarErrorHandler - )(params)(dispatch) - .then(() => { - dispatch( - snackbarSuccessHandler({ - title: T.translate("general.success"), - html: T.translate("sponsor_pages.unarchived") - }) - ); - }) - .finally(() => { - dispatch(stopLoading()); - }); -}; diff --git a/src/components/select-page-template-dialog/index.js b/src/components/select-page-template-dialog/index.js index f52f696bf..108ad0d96 100644 --- a/src/components/select-page-template-dialog/index.js +++ b/src/components/select-page-template-dialog/index.js @@ -114,27 +114,27 @@ const SelectPageTemplateDialog = ({ }, { columnKey: "code", - header: T.translate("sponsor_pages.global_page_popup.code"), + header: T.translate("show_pages.global_page_popup.code"), sortable: true }, { columnKey: "name", - header: T.translate("sponsor_pages.global_page_popup.name"), + header: T.translate("show_pages.global_page_popup.name"), sortable: true }, { columnKey: "info_mod", - header: T.translate("sponsor_pages.global_page_popup.info_mod"), + header: T.translate("show_pages.global_page_popup.info_mod"), sortable: false }, { columnKey: "download_mod", - header: T.translate("sponsor_pages.global_page_popup.download_mod"), + header: T.translate("show_pages.global_page_popup.download_mod"), sortable: false }, { columnKey: "upload_mod", - header: T.translate("sponsor_pages.global_page_popup.upload_mod"), + header: T.translate("show_pages.global_page_popup.upload_mod"), sortable: false } ]; @@ -146,7 +146,7 @@ const SelectPageTemplateDialog = ({ component="div" > - {T.translate("sponsor_pages.global_page_popup.title")} + {T.translate("show_pages.global_page_popup.title")} handleClose()}> @@ -162,7 +162,7 @@ const SelectPageTemplateDialog = ({ @@ -187,7 +187,7 @@ const SelectPageTemplateDialog = ({ fullWidth variant="contained" > - {T.translate("sponsor_pages.global_page_popup.add_selected")} + {T.translate("show_pages.global_page_popup.add_selected")} diff --git a/src/i18n/en.json b/src/i18n/en.json index e5a054a32..18117565f 100644 --- a/src/i18n/en.json +++ b/src/i18n/en.json @@ -2635,7 +2635,7 @@ "items_added": "Items added successfully." } }, - "sponsor_pages": { + "show_pages": { "pages": "Pages", "alert_info": "Note: These Pages will be visible to all sponsors of the selected level in this program.", "using_template": "Using Template", diff --git a/src/layouts/sponsor-layout.js b/src/layouts/sponsor-layout.js index f43964319..b36d21d87 100644 --- a/src/layouts/sponsor-layout.js +++ b/src/layouts/sponsor-layout.js @@ -25,7 +25,7 @@ import SponsorSettingsPage from "../pages/sponsor_settings/sponsor-settings-page import SponsorFormsListPage from "../pages/sponsors/sponsor-forms-list-page"; import SponsorFormItemListPage from "../pages/sponsors/sponsor-form-item-list-page"; import SponsorUsersListPage from "../pages/sponsors/sponsor-users-list-page"; -import SponsorPagesListPage from "../pages/sponsors/sponsor-pages-list-page"; +import ShowPagesListPage from "../pages/sponsors/show-pages-list-page"; const SponsorLayout = ({ match }) => (
@@ -70,7 +70,7 @@ const SponsorLayout = ({ match }) => (
@@ -78,7 +78,7 @@ const SponsorLayout = ({ match }) => ( )} strict exact - component={SponsorPagesListPage} + component={ShowPagesListPage} /> { +const GlobalPagePopup = ({ open, onClose, cloneGlobalPage, getShowPages }) => { const [stage, setStage] = useState("pages"); const [selectedTemplates, setSelectedTemplates] = useState([]); const dialogSize = stage === "pages" ? "md" : "sm"; @@ -32,7 +25,7 @@ const GlobalPagePopup = ({ const handleOnSave = (selectedTiers, allTiers) => { cloneGlobalPage(selectedTemplates, selectedTiers, allTiers).finally(() => { - getSponsorPages(); + getShowPages(); handleClose(); }); }; @@ -62,5 +55,5 @@ const mapStateToProps = () => ({}); export default connect(mapStateToProps, { cloneGlobalPage, - getSponsorPages + getShowPages })(GlobalPagePopup); diff --git a/src/pages/sponsors/sponsor-pages-list-page/index.js b/src/pages/sponsors/show-pages-list-page/index.js similarity index 66% rename from src/pages/sponsors/sponsor-pages-list-page/index.js rename to src/pages/sponsors/show-pages-list-page/index.js index c22e94bc0..11bd93eb9 100644 --- a/src/pages/sponsors/sponsor-pages-list-page/index.js +++ b/src/pages/sponsors/show-pages-list-page/index.js @@ -24,20 +24,20 @@ import { } from "@mui/material"; import AddIcon from "@mui/icons-material/Add"; import { - getSponsorPages, - archiveSponsorPage, - unarchiveSponsorPage, - getSponsorPage, - saveSponsorPage, - resetSponsorPageForm -} from "../../../actions/sponsor-pages-actions"; + getShowPages, + archiveShowPage, + unarchiveShowPage, + getShowPage, + saveShowPage, + resetShowPageForm +} from "../../../actions/show-pages-actions"; import CustomAlert from "../../../components/mui/custom-alert"; import MuiTable from "../../../components/mui/table/mui-table"; import GlobalPagePopup from "./components/global-page/global-page-popup"; import PageTemplatePopup from "../../sponsors-global/page-templates/page-template-popup"; -const SponsorPagesListPage = ({ - sponsorPages, +const ShowPagesListPage = ({ + showPages, currentPage, perPage, term, @@ -45,41 +45,34 @@ const SponsorPagesListPage = ({ orderDir, hideArchived, totalCount, - currentSponsorPage, - getSponsorPages, - archiveSponsorPage, - unarchiveSponsorPage, - getSponsorPage, - saveSponsorPage, - resetSponsorPageForm + currentShowPage, + getShowPages, + archiveShowPage, + unarchiveShowPage, + getShowPage, + saveShowPage, + resetShowPageForm }) => { const [openPopup, setOpenPopup] = useState(null); useEffect(() => { - getSponsorPages(); + getShowPages(); }, []); const handlePageChange = (page) => { - getSponsorPages(term, page, perPage, order, orderDir, hideArchived); + getShowPages(term, page, perPage, order, orderDir, hideArchived); }; const handleSort = (key, dir) => { - getSponsorPages(term, currentPage, perPage, key, dir, hideArchived); + getShowPages(term, currentPage, perPage, key, dir, hideArchived); }; const handlePerPageChange = (newPerPage) => { - getSponsorPages( - term, - currentPage, - newPerPage, - order, - orderDir, - hideArchived - ); + getShowPages(term, currentPage, newPerPage, order, orderDir, hideArchived); }; const handleRowEdit = (row) => { - getSponsorPage(row.id).then(() => { + getShowPage(row.id).then(() => { setOpenPopup("new"); }); }; @@ -90,12 +83,10 @@ const SponsorPagesListPage = ({ }; const handleArchiveItem = (item) => - item.is_archived - ? unarchiveSponsorPage(item.id) - : archiveSponsorPage(item.id); + item.is_archived ? unarchiveShowPage(item.id) : archiveShowPage(item.id); const handleHideArchivedForms = (ev) => { - getSponsorPages( + getShowPages( term, currentPage, perPage, @@ -105,44 +96,44 @@ const SponsorPagesListPage = ({ ); }; - const handleSaveSponsorPage = (entity) => { - saveSponsorPage(entity).then(() => { + const handleSaveShowPage = (entity) => { + saveShowPage(entity).then(() => { setOpenPopup(null); - getSponsorPages(); + getShowPages(); }); }; const handleTemplatePopupClose = () => { - resetSponsorPageForm(); + resetShowPageForm(); setOpenPopup(null); }; const columns = [ { columnKey: "code", - header: T.translate("sponsor_pages.code_column_label"), + header: T.translate("show_pages.code_column_label"), sortable: true }, { columnKey: "name", - header: T.translate("sponsor_pages.name_column_label"), + header: T.translate("show_pages.name_column_label"), sortable: true }, { columnKey: "tier", - header: T.translate("sponsor_pages.tier_column_label") + header: T.translate("show_pages.tier_column_label") }, { columnKey: "info_mod", - header: T.translate("sponsor_pages.info_mod_column_label") + header: T.translate("show_pages.info_mod_column_label") }, { columnKey: "upload_mod", - header: T.translate("sponsor_pages.upload_mod_column_label") + header: T.translate("show_pages.upload_mod_column_label") }, { columnKey: "download_mod", - header: T.translate("sponsor_pages.download_mod_column_label") + header: T.translate("show_pages.download_mod_column_label") } ]; @@ -154,8 +145,8 @@ const SponsorPagesListPage = ({ return (
-

{T.translate("sponsor_pages.pages")}

- +

{T.translate("show_pages.pages")}

+ - {totalCount} {T.translate("sponsor_pages.pages")} + {totalCount} {T.translate("show_pages.pages")} @@ -178,11 +169,11 @@ const SponsorPagesListPage = ({ onChange={handleHideArchivedForms} checked={hideArchived} inputProps={{ - "aria-label": T.translate("sponsor_pages.hide_archived") + "aria-label": T.translate("show_pages.hide_archived") }} /> } - label={T.translate("sponsor_pages.hide_archived")} + label={T.translate("show_pages.hide_archived")} /> @@ -196,7 +187,7 @@ const SponsorPagesListPage = ({ startIcon={} sx={{ height: "36px" }} > - {T.translate("sponsor_pages.using_template")} + {T.translate("show_pages.using_template")} @@ -208,20 +199,20 @@ const SponsorPagesListPage = ({ startIcon={} sx={{ height: "36px" }} > - {T.translate("sponsor_pages.new_page")} + {T.translate("show_pages.new_page")} - {sponsorPages.length === 0 && ( -
{T.translate("sponsor_pages.no_sponsors_pages")}
+ {showPages.length === 0 && ( +
{T.translate("show_pages.no_sponsors_pages")}
)} - {sponsorPages.length > 0 && ( + {showPages.length > 0 && (
); }; -const mapStateToProps = ({ sponsorPagesListState }) => ({ - ...sponsorPagesListState +const mapStateToProps = ({ showPagesListState }) => ({ + ...showPagesListState }); export default connect(mapStateToProps, { - getSponsorPages, - archiveSponsorPage, - unarchiveSponsorPage, - getSponsorPage, - saveSponsorPage, - resetSponsorPageForm -})(SponsorPagesListPage); + getShowPages, + archiveShowPage, + unarchiveShowPage, + getShowPage, + saveShowPage, + resetShowPageForm +})(ShowPagesListPage); diff --git a/src/reducers/sponsors/sponsor-pages-list-reducer.js b/src/reducers/sponsors/show-pages-list-reducer.js similarity index 70% rename from src/reducers/sponsors/sponsor-pages-list-reducer.js rename to src/reducers/sponsors/show-pages-list-reducer.js index 67f600950..86d8ce696 100644 --- a/src/reducers/sponsors/sponsor-pages-list-reducer.js +++ b/src/reducers/sponsors/show-pages-list-reducer.js @@ -13,24 +13,24 @@ import { LOGOUT_USER } from "openstack-uicore-foundation/lib/security/actions"; import { - RECEIVE_SPONSOR_PAGE, - RECEIVE_SPONSOR_PAGES, - REQUEST_SPONSOR_PAGES, - SPONSOR_PAGE_ARCHIVED, - SPONSOR_PAGE_UNARCHIVED, - RESET_SPONSOR_PAGE_FORM -} from "../../actions/sponsor-pages-actions"; + RECEIVE_SHOW_PAGE, + RECEIVE_SHOW_PAGES, + REQUEST_SHOW_PAGES, + SHOW_PAGE_ARCHIVED, + SHOW_PAGE_UNARCHIVED, + RESET_SHOW_PAGE_FORM +} from "../../actions/show-pages-actions"; import { SET_CURRENT_SUMMIT } from "../../actions/summit-actions"; import { PAGES_MODULE_KINDS } from "../../utils/constants"; -const DEFAULT_SPONSOR_PAGE = { +const DEFAULT_SHOW_PAGE = { code: "", name: "", modules: [] }; const DEFAULT_STATE = { - sponsorPages: [], + showPages: [], term: "", order: "name", orderDir: 1, @@ -39,11 +39,11 @@ const DEFAULT_STATE = { perPage: 10, totalCount: 0, hideArchived: false, - currentSponsorPage: DEFAULT_SPONSOR_PAGE, + currentShowPage: DEFAULT_SHOW_PAGE, summitTZ: null }; -const sponsorPagesListReducer = (state = DEFAULT_STATE, action) => { +const showPagesListReducer = (state = DEFAULT_STATE, action) => { const { type, payload } = action; switch (type) { @@ -51,28 +51,28 @@ const sponsorPagesListReducer = (state = DEFAULT_STATE, action) => { case LOGOUT_USER: { return DEFAULT_STATE; } - case REQUEST_SPONSOR_PAGES: { + case REQUEST_SHOW_PAGES: { const { order, orderDir, page, term, hideArchived, summitTZ } = payload; return { ...state, order, orderDir, - sponsorPages: [], + showPages: [], currentPage: page, term, hideArchived, summitTZ }; } - case RECEIVE_SPONSOR_PAGES: { + case RECEIVE_SHOW_PAGES: { const { current_page: currentPage, total, last_page: lastPage } = payload.response; - const sponsorPages = payload.response.data.map((a) => ({ + const showPages = payload.response.data.map((a) => ({ id: a.id, code: a.code, name: a.name, @@ -89,43 +89,43 @@ const sponsorPagesListReducer = (state = DEFAULT_STATE, action) => { return { ...state, - sponsorPages, + showPages, currentPage, totalCount: total, lastPage }; } - case SPONSOR_PAGE_ARCHIVED: { + case SHOW_PAGE_ARCHIVED: { const { pageId } = payload; - const pages = state.sponsorPages.map((page) => + const pages = state.showPages.map((page) => page.id === pageId ? { ...page, is_archived: true } : page ); return { ...state, - sponsorPages: [...pages] + showPages: [...pages] }; } - case SPONSOR_PAGE_UNARCHIVED: { + case SHOW_PAGE_UNARCHIVED: { const { pageId } = payload; - const pages = state.sponsorPages.map((page) => + const pages = state.showPages.map((page) => page.id === pageId ? { ...page, is_archived: false } : page ); return { ...state, - sponsorPages: [...pages] + showPages: [...pages] }; } - case RECEIVE_SPONSOR_PAGE: { - const sponsorPage = payload.response; + case RECEIVE_SHOW_PAGE: { + const showPage = payload.response; - return { ...state, currentSponsorPage: sponsorPage }; + return { ...state, currentShowPage: showPage }; } - case RESET_SPONSOR_PAGE_FORM: { - return { ...state, currentSponsorPage: DEFAULT_SPONSOR_PAGE }; + case RESET_SHOW_PAGE_FORM: { + return { ...state, currentShowPage: DEFAULT_SHOW_PAGE }; } default: return state; } }; -export default sponsorPagesListReducer; +export default showPagesListReducer; diff --git a/src/store.js b/src/store.js index 86973bf8a..e1f77bbd3 100644 --- a/src/store.js +++ b/src/store.js @@ -167,7 +167,7 @@ import sponsorPageFormsListReducer from "./reducers/sponsors/sponsor-page-forms- import sponsorCustomizedFormReducer from "./reducers/sponsors/sponsor-customized-form-reducer.js"; import sponsorPageCartListReducer from "./reducers/sponsors/sponsor-page-cart-list-reducer"; import sponsorCustomizedFormItemsListReducer from "./reducers/sponsors/sponsor-customized-form-items-list-reducer.js"; -import sponsorPagesListReducer from "./reducers/sponsors/sponsor-pages-list-reducer.js"; +import showPagesListReducer from "./reducers/sponsors/show-pages-list-reducer.js"; import sponsorPagePurchaseListReducer from "./reducers/sponsors/sponsor-page-purchase-list-reducer.js"; // default: localStorage if web, AsyncStorage if react-native @@ -252,7 +252,7 @@ const reducers = persistCombineReducers(config, { currentSponsorState: sponsorReducer, sponsorFormsListState: sponsorFormsListReducer, sponsorFormItemsListState: sponsorFormItemsListReducer, - sponsorPagesListState: sponsorPagesListReducer, + showPagesListState: showPagesListReducer, sponsorUsersListState: sponsorUsersListReducer, sponsorPageFormsListState: sponsorPageFormsListReducer, sponsorPageCartListState: sponsorPageCartListReducer, From 273e2dd51a1a3be2c340ed1a867ddbb00f1b64ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Castillo?= Date: Fri, 13 Feb 2026 02:04:22 -0300 Subject: [PATCH 6/6] fix: update select page template test resources MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tomás Castillo --- .../select-page-template-dialog.test.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/components/select-page-template-dialog/__tests__/select-page-template-dialog.test.js b/src/components/select-page-template-dialog/__tests__/select-page-template-dialog.test.js index 6875e2811..7508192fa 100644 --- a/src/components/select-page-template-dialog/__tests__/select-page-template-dialog.test.js +++ b/src/components/select-page-template-dialog/__tests__/select-page-template-dialog.test.js @@ -105,7 +105,7 @@ describe("SelectPageTemplateDialog", () => { renderWithStore(); expect( - screen.getByText("sponsor_pages.global_page_popup.title") + screen.getByText("show_pages.global_page_popup.title") ).toBeInTheDocument(); }); @@ -136,7 +136,7 @@ describe("SelectPageTemplateDialog", () => { renderWithStore(); expect( - screen.getByPlaceholderText("sponsor_pages.placeholders.search") + screen.getByPlaceholderText("show_pages.placeholders.search") ).toBeInTheDocument(); }); @@ -144,7 +144,7 @@ describe("SelectPageTemplateDialog", () => { renderWithStore(); const saveButton = screen.getByRole("button", { - name: "sponsor_pages.global_page_popup.add_selected" + name: "show_pages.global_page_popup.add_selected" }); expect(saveButton).toBeDisabled(); }); @@ -199,7 +199,7 @@ describe("SelectPageTemplateDialog", () => { const checkboxes = screen.getAllByRole("checkbox"); const saveButton = screen.getByRole("button", { - name: "sponsor_pages.global_page_popup.add_selected" + name: "show_pages.global_page_popup.add_selected" }); expect(saveButton).toBeDisabled(); @@ -220,7 +220,7 @@ describe("SelectPageTemplateDialog", () => { await userEvent.click(checkboxes[2]); const saveButton = screen.getByRole("button", { - name: "sponsor_pages.global_page_popup.add_selected" + name: "show_pages.global_page_popup.add_selected" }); await userEvent.click(saveButton); @@ -258,7 +258,7 @@ describe("SelectPageTemplateDialog", () => { const radioButtons = screen.getAllByRole("radio"); const saveButton = screen.getByRole("button", { - name: "sponsor_pages.global_page_popup.add_selected" + name: "show_pages.global_page_popup.add_selected" }); expect(saveButton).toBeDisabled(); @@ -277,7 +277,7 @@ describe("SelectPageTemplateDialog", () => { await userEvent.click(radioButtons[1]); const saveButton = screen.getByRole("button", { - name: "sponsor_pages.global_page_popup.add_selected" + name: "show_pages.global_page_popup.add_selected" }); await userEvent.click(saveButton); @@ -293,7 +293,7 @@ describe("SelectPageTemplateDialog", () => { renderWithStore(); const searchInput = screen.getByPlaceholderText( - "sponsor_pages.placeholders.search" + "show_pages.placeholders.search" ); await userEvent.type(searchInput, "Template");