From 5f7570bda08f91e231e88a1f439be562a75bc763 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Castillo?= Date: Sun, 1 Feb 2026 04:22:39 -0300 Subject: [PATCH 1/8] feat: add sponsor pages tab, add customized and managed tables MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tomás Castillo --- src/pages/sponsors/sponsor-pages-tab/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/sponsors/sponsor-pages-tab/index.js b/src/pages/sponsors/sponsor-pages-tab/index.js index f14224c8f..df9030da4 100644 --- a/src/pages/sponsors/sponsor-pages-tab/index.js +++ b/src/pages/sponsors/sponsor-pages-tab/index.js @@ -276,7 +276,7 @@ const SponsorPagesTab = ({ variant="contained" size="medium" fullWidth - onClick={() => console.log("open popup template")} + onClick={() => setOpenPopup("template")} startIcon={} sx={{ height: "36px" }} > @@ -288,7 +288,7 @@ const SponsorPagesTab = ({ variant="contained" size="medium" fullWidth - onClick={() => console.log("open popup new")} + onClick={() => setCustomFormEdit("new")} startIcon={} sx={{ height: "36px" }} > From 2afde037c36fc5303ef40e4a77b51afc713fb660 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Castillo?= Date: Mon, 2 Feb 2026 16:03:25 -0300 Subject: [PATCH 2/8] fix: adjust reducer and actions, fix typo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tomás Castillo --- src/pages/sponsors/sponsor-pages-tab/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/sponsors/sponsor-pages-tab/index.js b/src/pages/sponsors/sponsor-pages-tab/index.js index df9030da4..f14224c8f 100644 --- a/src/pages/sponsors/sponsor-pages-tab/index.js +++ b/src/pages/sponsors/sponsor-pages-tab/index.js @@ -276,7 +276,7 @@ const SponsorPagesTab = ({ variant="contained" size="medium" fullWidth - onClick={() => setOpenPopup("template")} + onClick={() => console.log("open popup template")} startIcon={} sx={{ height: "36px" }} > @@ -288,7 +288,7 @@ const SponsorPagesTab = ({ variant="contained" size="medium" fullWidth - onClick={() => setCustomFormEdit("new")} + onClick={() => console.log("open popup new")} startIcon={} sx={{ height: "36px" }} > From b3b91329e88746890c318a65f677842f949cd1e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Castillo?= Date: Wed, 25 Feb 2026 12:29:21 -0300 Subject: [PATCH 3/8] feat: add new template popup on sponsor tab to add managed pages from templates 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 | 50 ++- .../formik-inputs/mui-formik-select-group.js | 124 ++++--- src/i18n/en.json | 5 +- .../add-sponsor-page-template-popup/index.js | 311 ++++++++++++++++++ src/pages/sponsors/sponsor-pages-tab/index.js | 36 +- 5 files changed, 472 insertions(+), 54 deletions(-) create mode 100644 src/pages/sponsors/sponsor-pages-tab/components/add-sponsor-page-template-popup/index.js diff --git a/src/actions/sponsor-pages-actions.js b/src/actions/sponsor-pages-actions.js index 78091a090..e8806fcc5 100644 --- a/src/actions/sponsor-pages-actions.js +++ b/src/actions/sponsor-pages-actions.js @@ -23,12 +23,17 @@ import { import T from "i18n-react/dist/i18n-react"; import { getAccessTokenSafely } from "../utils/methods"; import { snackbarErrorHandler, snackbarSuccessHandler } from "./base-actions"; -import { DEFAULT_CURRENT_PAGE, DEFAULT_ORDER_DIR, DEFAULT_PER_PAGE } from "../utils/constants"; +import { + DEFAULT_CURRENT_PAGE, + DEFAULT_ORDER_DIR, + DEFAULT_PER_PAGE +} from "../utils/constants"; export const GLOBAL_PAGE_CLONED = "GLOBAL_PAGE_CLONED"; export const REQUEST_SPONSOR_MANAGED_PAGES = "REQUEST_SPONSOR_MANAGED_PAGES"; export const RECEIVE_SPONSOR_MANAGED_PAGES = "RECEIVE_SPONSOR_MANAGED_PAGES"; +export const SPONSOR_MANAGED_PAGE_ADDED = "SPONSOR_MANAGED_PAGE_ADDED"; export const REQUEST_SPONSOR_CUSTOMIZED_PAGES = "REQUEST_SPONSOR_CUSTOMIZED_PAGES"; @@ -135,6 +140,49 @@ export const getSponsorManagedPages = }); }; +export const saveSponsorManagedPage = + (entity) => async (dispatch, getState) => { + const { currentSummitState, currentSponsorState } = getState(); + const { currentSummit } = currentSummitState; + const { + entity: { id: sponsorId } + } = currentSponsorState; + const accessToken = await getAccessTokenSafely(); + + dispatch(startLoading()); + + const normalizedEntity = normalizeSponsorManagedPage(entity); + + const params = { + access_token: accessToken, + fields: "id,code,name,kind,modules_count,allowed_add_ons" + }; + + return postRequest( + null, + createAction(SPONSOR_MANAGED_PAGE_ADDED), + `${window.SPONSOR_PAGES_API_URL}/api/v1/summits/${currentSummit.id}/sponsors/${sponsorId}/managed-pages`, + normalizedEntity, + snackbarErrorHandler + )(params)(dispatch).then(() => { + dispatch(stopLoading()); + }); + }; + +const normalizeSponsorManagedPage = (entity) => { + const normalizedEntity = { + show_page_ids: entity.pages, + allowed_add_ons: entity.add_ons.map((a) => a.id), + apply_to_all_add_ons: false + }; + + if (entity.add_ons.includes("all")) { + normalizedEntity.apply_to_all_add_ons = true; + normalizedEntity.allowed_add_ons = []; + } + + return normalizedEntity; +}; /* ************************************************************************ */ /* CUSTOMIZED PAGES */ /* ************************************************************************ */ diff --git a/src/components/mui/formik-inputs/mui-formik-select-group.js b/src/components/mui/formik-inputs/mui-formik-select-group.js index 9a1261d0a..60be7c1df 100644 --- a/src/components/mui/formik-inputs/mui-formik-select-group.js +++ b/src/components/mui/formik-inputs/mui-formik-select-group.js @@ -44,6 +44,7 @@ const MuiFormikSelectGroup = ({ selectAllLabel = "Select All", getOptionLabel = (item) => item.name, getOptionValue = (item) => item.id, + noOptionsLabel = "No items", getGroupId = null, getGroupLabel = null, disabled = false @@ -213,6 +214,79 @@ const MuiFormikSelectGroup = ({ .flat() .filter(Boolean); + const renderMenuContent = () => { + if (loading) { + return ( + + + + ); + } + + if (options.length === 0) { + return ( + + + + ); + } + + return ( + <> + {showSelectAll && ( + <> + { + // custom event value to select all + handleChange({ target: { value: ["selectAll"] } }); + }} + > + 0 && !isAllSelected} + sx={{ + p: 1, + "& svg": { + fontSize: 24 + } + }} + /> + + + + + )} + {renderGroupedOptions()} + + ); + }; + const IconWithLoading = useMemo(() => getCustomIcon(loading), [loading]); return ( @@ -243,54 +317,7 @@ const MuiFormikSelectGroup = ({ error={Boolean(error)} IconComponent={IconWithLoading} > - {loading ? ( - - - - ) : ( - <> - {showSelectAll && options.length > 0 && ( - <> - { - // custom event value to select all - handleChange({ target: { value: ["selectAll"] } }); - }} - > - 0 && !isAllSelected} - sx={{ - p: 1, - "& svg": { - fontSize: 24 - } - }} - /> - - - - - )} - {renderGroupedOptions()} - - )} + {renderMenuContent()} {error && (
{ + const [searchTerm, setSearchTerm] = useState(""); + const [selectedPages, setSelectedPages] = useState([]); + + const sponsorshipIds = sponsor.sponsorships.map((e) => e.id); + + const sponsorshipTypeIds = sponsor.sponsorships.map((e) => e.type.id); + + const formik = useFormik({ + initialValues: { + add_ons: [] + }, + validationSchema: yup.object({ + add_ons: yup + .array() + .test( + "add_ons-required", + "Select at least one add-on", + (value) => value?.includes("all") || value?.length > 0 + ) + }), + onSubmit: (values) => { + const { add_ons } = values; + const entity = { + pages: selectedPages, + add_ons + }; + onSubmit(entity); + }, + enableReinitialize: true + }); + + useEffect(() => { + getShowPages( + term, + currentPage, + FIVE_PER_PAGE, + order, + orderDir, + false, + sponsorshipTypeIds + ); + }, []); + + const handlePageChange = (page) => { + getShowPages( + term, + page, + FIVE_PER_PAGE, + order, + orderDir, + false, + sponsorshipTypeIds + ); + }; + + const handleSort = (key, dir) => { + getShowPages( + term, + currentPage, + FIVE_PER_PAGE, + key, + dir, + false, + sponsorshipTypeIds + ); + }; + + const handleOnSearch = (ev) => { + if (ev.key === "Enter") + getShowPages( + searchTerm, + currentPage, + perPage, + order, + orderDir, + false, + sponsorshipTypeIds + ); + }; + + const handleSelected = (id, isSelected) => { + if (isSelected) { + setSelectedPages([...selectedPages, id]); + return; + } + const updatedSelected = selectedPages.filter((e) => e !== id); + setSelectedPages(updatedSelected); + }; + + const handleClose = () => { + onClose(); + }; + + const tableOptions = { + sortCol: order, + sortDir: orderDir + }; + + const columns = [ + { + columnKey: "select", + header: "", + width: 30, + align: "center", + render: (row) => ( + handleSelected(row.id, ev.target.checked)} + /> + } + /> + ) + }, + { + columnKey: "code", + header: T.translate("edit_sponsor.pages_tab.code"), + sortable: false + }, + { + columnKey: "name", + header: T.translate("edit_sponsor.pages_tab.name"), + sortable: false + }, + { + columnKey: "info_mod", + header: T.translate("edit_sponsor.pages_tab.info_mod") + }, + { + columnKey: "upload_mod", + header: T.translate("edit_sponsor.pages_tab.upload_mod") + }, + { + columnKey: "download_mod", + header: T.translate("edit_sponsor.pages_tab.download_mod") + } + ]; + + return ( + + + + {T.translate("edit_sponsor.pages_tab.add_page_using_template")} + + handleClose()} sx={{ mr: 1 }}> + + + + + + + + + addon.sponsorship.type.id} + getGroupLabel={(addon) => addon.sponsorship.type.type.name} + noOptionsLabel={T.translate( + "edit_sponsor.pages_tab.no_add_ons" + )} + placeholder={T.translate( + "edit_sponsor.placeholders.select_add_ons" + )} + /> + + + + {selectedPages.length} items selected + + + + handleSort("name", 1) }, + { label: "Z-A", onClick: () => handleSort("name", 0) } + ]} + > + sort by + + + + + } + }} + onChange={(event) => setSearchTerm(event.target.value)} + onKeyDown={handleOnSearch} + fullWidth + sx={{ + "& .MuiOutlinedInput-root": { + height: "36px" + } + }} + /> + + + + + {sponsorPages.length > 0 && ( + + + + )} + + + + + + + + + ); +}; + +AddSponsorPageTemplatePopup.propTypes = { + onClose: PropTypes.func.isRequired +}; + +const mapStateToProps = ({ sponsorPagesListState }) => ({ + ...sponsorPagesListState +}); + +export default connect(mapStateToProps, { + getShowPages +})(AddSponsorPageTemplatePopup); diff --git a/src/pages/sponsors/sponsor-pages-tab/index.js b/src/pages/sponsors/sponsor-pages-tab/index.js index f14224c8f..02efe4c17 100644 --- a/src/pages/sponsors/sponsor-pages-tab/index.js +++ b/src/pages/sponsors/sponsor-pages-tab/index.js @@ -11,7 +11,7 @@ * limitations under the License. * */ -import React, { useEffect } from "react"; +import React, { useEffect, useState } from "react"; import { connect } from "react-redux"; import T from "i18n-react/dist/i18n-react"; import { @@ -25,21 +25,28 @@ import { import AddIcon from "@mui/icons-material/Add"; import { getSponsorManagedPages, - getSponsorCustomizedPages + getSponsorCustomizedPages, + saveSponsorManagedPage } from "../../../actions/sponsor-pages-actions"; import CustomAlert from "../../../components/mui/custom-alert"; import SearchInput from "../../../components/mui/search-input"; import MuiTable from "../../../components/mui/table/mui-table"; import { DEFAULT_CURRENT_PAGE } from "../../../utils/constants"; +import AddSponsorPageTemplatePopup from "./components/add-sponsor-page-template-popup"; const SponsorPagesTab = ({ + sponsor, + summitId, term, hideArchived, managedPages, customizedPages, getSponsorManagedPages, - getSponsorCustomizedPages + getSponsorCustomizedPages, + saveSponsorManagedPage }) => { + const [openPopup, setOpenPopup] = useState(null); + useEffect(() => { getSponsorManagedPages(); getSponsorCustomizedPages(); @@ -140,6 +147,10 @@ const SponsorPagesTab = ({ ); }; + const handleUsingTemplate = () => { + setOpenPopup("template"); + }; + const handleArchiveCustomizedPage = (item) => console.log("ARCHIVE CUSTOMIZED ", item); @@ -181,6 +192,13 @@ const SponsorPagesTab = ({ ); }; + const handleSaveManagedPageFromTemplate = (entity) => { + saveSponsorManagedPage(entity).then(() => { + setOpenPopup(null); + getSponsorManagedPages(); + }); + }; + const baseColumns = (name) => [ { columnKey: "name", @@ -276,7 +294,7 @@ const SponsorPagesTab = ({ variant="contained" size="medium" fullWidth - onClick={() => console.log("open popup template")} + onClick={handleUsingTemplate} startIcon={} sx={{ height: "36px" }} > @@ -336,6 +354,15 @@ const SponsorPagesTab = ({ onArchive={handleArchiveManagedPage} />
+ + {openPopup === "template" && ( + setOpenPopup(null)} + /> + )} ); }; @@ -346,5 +373,6 @@ const mapStateToProps = ({ sponsorPagePagesListState }) => ({ export default connect(mapStateToProps, { getSponsorManagedPages, + saveSponsorManagedPage, getSponsorCustomizedPages })(SponsorPagesTab); From e86dd288cf9bb393855792e24fbc28588b0f2933 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Castillo?= Date: Wed, 25 Feb 2026 15:10:56 -0300 Subject: [PATCH 4/8] fix: adjust reducer and props, add i18n resources MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tomás Castillo --- src/i18n/en.json | 2 ++ .../add-sponsor-page-template-popup/index.js | 31 ++++++++++++------- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/src/i18n/en.json b/src/i18n/en.json index f73eeaffb..86d575590 100644 --- a/src/i18n/en.json +++ b/src/i18n/en.json @@ -75,6 +75,8 @@ "error": "Error!", "unarchive": "Unarchive", "archive": "Archive", + "sort_asc_label": "A-Z", + "sort_desc_label": "Z-A", "placeholders": { "search_speakers": "Search Speakers by Name, Email, Speaker Id or Member Id", "select_acceptance_criteria": "Select acceptance criteria", diff --git a/src/pages/sponsors/sponsor-pages-tab/components/add-sponsor-page-template-popup/index.js b/src/pages/sponsors/sponsor-pages-tab/components/add-sponsor-page-template-popup/index.js index 041ef846b..e21904aac 100644 --- a/src/pages/sponsors/sponsor-pages-tab/components/add-sponsor-page-template-popup/index.js +++ b/src/pages/sponsors/sponsor-pages-tab/components/add-sponsor-page-template-popup/index.js @@ -26,13 +26,16 @@ import MuiTable from "../../../../../components/mui/table/mui-table"; import MenuButton from "../../../../../components/mui/menu-button"; import { querySponsorAddons } from "../../../../../actions/sponsor-actions"; import { getShowPages } from "../../../../../actions/show-pages-actions"; -import { FIVE_PER_PAGE } from "../../../../../utils/constants"; +import { + DEFAULT_CURRENT_PAGE, + FIVE_PER_PAGE +} from "../../../../../utils/constants"; import MuiFormikSelectGroup from "../../../../../components/mui/formik-inputs/mui-formik-select-group"; const AddSponsorPageTemplatePopup = ({ onClose, onSubmit, - sponsorPages, + showPages, currentPage, perPage, order, @@ -77,7 +80,7 @@ const AddSponsorPageTemplatePopup = ({ useEffect(() => { getShowPages( term, - currentPage, + DEFAULT_CURRENT_PAGE, FIVE_PER_PAGE, order, orderDir, @@ -101,7 +104,7 @@ const AddSponsorPageTemplatePopup = ({ const handleSort = (key, dir) => { getShowPages( term, - currentPage, + DEFAULT_CURRENT_PAGE, FIVE_PER_PAGE, key, dir, @@ -114,7 +117,7 @@ const AddSponsorPageTemplatePopup = ({ if (ev.key === "Enter") getShowPages( searchTerm, - currentPage, + DEFAULT_CURRENT_PAGE, perPage, order, orderDir, @@ -234,8 +237,14 @@ const AddSponsorPageTemplatePopup = ({ buttonId="sort-button" menuId="sort-menu" menuItems={[ - { label: "A-Z", onClick: () => handleSort("name", 1) }, - { label: "Z-A", onClick: () => handleSort("name", 0) } + { + label: T.translate("general.sort_asc_label"), + onClick: () => handleSort("name", 1) + }, + { + label: T.translate("general.sort_desc_label"), + onClick: () => handleSort("name", 0) + } ]} > sort by @@ -266,11 +275,11 @@ const AddSponsorPageTemplatePopup = ({ - {sponsorPages.length > 0 && ( + {showPages.length > 0 && ( ({ - ...sponsorPagesListState +const mapStateToProps = ({ showPagesListState }) => ({ + ...showPagesListState }); export default connect(mapStateToProps, { From 47d910db66c8e2595dc12a978a70c1329a794499 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Castillo?= Date: Wed, 25 Feb 2026 17:21:14 -0300 Subject: [PATCH 5/8] fix: add no results text, prevent default on search pages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tomás Castillo --- src/i18n/en.json | 3 ++- .../add-sponsor-page-template-popup/index.js | 10 +++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/i18n/en.json b/src/i18n/en.json index 86d575590..d8c5c6552 100644 --- a/src/i18n/en.json +++ b/src/i18n/en.json @@ -3,7 +3,7 @@ "user_not_authz": "Hold on. Your user is not authorized!.", "user_not_set": "Hold on. Can not get any valid user.", "session_expired": "Hold on. Your session expired!.", - "empty_list": "there not are any item that match your criteria.", + "empty_list": "there not are any {item} that match your criteria.", "server_error": "There was a problem with our server, please contact admin.", "empty_list_schedule_events": "Please select a Day and a Location ...", "not_allowed": "You are not allowed here, please login with another user to access this page.", @@ -2480,6 +2480,7 @@ "archive": "Archive", "unarchive": "Unarchive", "no_add_ons": "No Add-ons Available", + "no_pages": "There is no pages that match the criteria", "add_page_using_template": "Add Page Template", "add_selected_page_template": "Add Selected Page Template" }, diff --git a/src/pages/sponsors/sponsor-pages-tab/components/add-sponsor-page-template-popup/index.js b/src/pages/sponsors/sponsor-pages-tab/components/add-sponsor-page-template-popup/index.js index e21904aac..8de90cc68 100644 --- a/src/pages/sponsors/sponsor-pages-tab/components/add-sponsor-page-template-popup/index.js +++ b/src/pages/sponsors/sponsor-pages-tab/components/add-sponsor-page-template-popup/index.js @@ -114,7 +114,9 @@ const AddSponsorPageTemplatePopup = ({ }; const handleOnSearch = (ev) => { - if (ev.key === "Enter") + if (ev.key === "Enter") { + ev.preventDefault(); + ev.stopPropagation(); getShowPages( searchTerm, DEFAULT_CURRENT_PAGE, @@ -124,6 +126,7 @@ const AddSponsorPageTemplatePopup = ({ false, sponsorshipTypeIds ); + } }; const handleSelected = (id, isSelected) => { @@ -289,6 +292,11 @@ const AddSponsorPageTemplatePopup = ({ /> )} + {showPages.length === 0 && ( + + {T.translate("errors.pages_tab.no_pages")} + + )} From 76a430a591262276ca01193d2f0d3a7e702eea45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Castillo?= Date: Thu, 26 Feb 2026 15:50:05 -0300 Subject: [PATCH 6/8] fix: add i18n resources, close popup after save or error MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tomás Castillo --- src/i18n/en.json | 3 ++- .../components/add-sponsor-page-template-popup/index.js | 2 +- src/pages/sponsors/sponsor-pages-tab/index.js | 7 +++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/i18n/en.json b/src/i18n/en.json index d8c5c6552..e2c2366c8 100644 --- a/src/i18n/en.json +++ b/src/i18n/en.json @@ -97,7 +97,8 @@ "date": "Wrong date format.", "after": "'{field1}' must be after '{field2}'.", "boolean": "Must be a boolean.", - "mib_aligned": "Must be a MiB aligned value" + "mib_aligned": "Must be a MiB aligned value", + "add_on_required": "Select at least one add-on" }, "landing": { "os_summit_admin": "Show Admin", diff --git a/src/pages/sponsors/sponsor-pages-tab/components/add-sponsor-page-template-popup/index.js b/src/pages/sponsors/sponsor-pages-tab/components/add-sponsor-page-template-popup/index.js index 8de90cc68..b78d10cde 100644 --- a/src/pages/sponsors/sponsor-pages-tab/components/add-sponsor-page-template-popup/index.js +++ b/src/pages/sponsors/sponsor-pages-tab/components/add-sponsor-page-template-popup/index.js @@ -62,7 +62,7 @@ const AddSponsorPageTemplatePopup = ({ .array() .test( "add_ons-required", - "Select at least one add-on", + T.translate("validation.add_on_required"), (value) => value?.includes("all") || value?.length > 0 ) }), diff --git a/src/pages/sponsors/sponsor-pages-tab/index.js b/src/pages/sponsors/sponsor-pages-tab/index.js index 02efe4c17..5ca762e97 100644 --- a/src/pages/sponsors/sponsor-pages-tab/index.js +++ b/src/pages/sponsors/sponsor-pages-tab/index.js @@ -193,10 +193,9 @@ const SponsorPagesTab = ({ }; const handleSaveManagedPageFromTemplate = (entity) => { - saveSponsorManagedPage(entity).then(() => { - setOpenPopup(null); - getSponsorManagedPages(); - }); + saveSponsorManagedPage(entity) + .then(() => getSponsorManagedPages()) + .finally(() => setOpenPopup(null)); }; const baseColumns = (name) => [ From 478d516e50b50cc03862182d42cd66a49faadca2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Castillo?= Date: Thu, 26 Feb 2026 17:36:22 -0300 Subject: [PATCH 7/8] fix: add i18n resources, adjust actions 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 +- src/i18n/en.json | 2 ++ .../form-templates/add-form-template-item-popup.js | 13 ++++++++++--- .../form-template-from-duplicate-popup.js | 13 ++++++++++--- .../add-sponsor-form-template-popup/index.js | 13 ++++++++++--- .../sponsor-form-item-from-inventory.js | 3 ++- .../add-sponsor-page-template-popup/index.js | 10 +++++++--- 7 files changed, 42 insertions(+), 14 deletions(-) diff --git a/src/actions/sponsor-pages-actions.js b/src/actions/sponsor-pages-actions.js index e8806fcc5..13667ace3 100644 --- a/src/actions/sponsor-pages-actions.js +++ b/src/actions/sponsor-pages-actions.js @@ -164,7 +164,7 @@ export const saveSponsorManagedPage = `${window.SPONSOR_PAGES_API_URL}/api/v1/summits/${currentSummit.id}/sponsors/${sponsorId}/managed-pages`, normalizedEntity, snackbarErrorHandler - )(params)(dispatch).then(() => { + )(params)(dispatch).finally(() => { dispatch(stopLoading()); }); }; diff --git a/src/i18n/en.json b/src/i18n/en.json index e2c2366c8..3979369a3 100644 --- a/src/i18n/en.json +++ b/src/i18n/en.json @@ -75,6 +75,7 @@ "error": "Error!", "unarchive": "Unarchive", "archive": "Archive", + "sort_by": "Sort By", "sort_asc_label": "A-Z", "sort_desc_label": "Z-A", "placeholders": { @@ -2480,6 +2481,7 @@ "download_mod": "Download Mod", "archive": "Archive", "unarchive": "Unarchive", + "items_selected": "items selected", "no_add_ons": "No Add-ons Available", "no_pages": "There is no pages that match the criteria", "add_page_using_template": "Add Page Template", diff --git a/src/pages/sponsors-global/form-templates/add-form-template-item-popup.js b/src/pages/sponsors-global/form-templates/add-form-template-item-popup.js index 12ae8f10c..809714b1b 100644 --- a/src/pages/sponsors-global/form-templates/add-form-template-item-popup.js +++ b/src/pages/sponsors-global/form-templates/add-form-template-item-popup.js @@ -206,11 +206,18 @@ const AddFormTemplateItemDialog = ({ // onClick: () => handleSort("date", "+") // }, // { label: "Newest", onClick: () => handleSort("date", "+") }, - { label: "A-Z", onClick: () => handleSort("name", 1) }, - { label: "Z-A", onClick: () => handleSort("name", 0) } + { + label: T.translate("general.sort_asc_label"), + onClick: () => handleSort("name", 1) + }, + { + label: T.translate("general.sort_desc_label"), + onClick: () => handleSort("name", 0) + } ]} > - sort by + {" "} + {T.translate("general.sort_by")} diff --git a/src/pages/sponsors-global/form-templates/form-template-from-duplicate-popup.js b/src/pages/sponsors-global/form-templates/form-template-from-duplicate-popup.js index f9a2336d4..67dcf3f10 100644 --- a/src/pages/sponsors-global/form-templates/form-template-from-duplicate-popup.js +++ b/src/pages/sponsors-global/form-templates/form-template-from-duplicate-popup.js @@ -119,11 +119,18 @@ const FormTemplateFromDuplicateDialog = ({ buttonSx={{ color: "#000" }} menuItems={[ // { label: "Newest", onClick: () => handleSort("+date") }, - { label: "A-Z", onClick: () => handleSort("name", 1) }, - { label: "Z-A", onClick: () => handleSort("name", 0) } + { + label: T.translate("general.sort_asc_label"), + onClick: () => handleSort("name", 1) + }, + { + label: T.translate("general.sort_desc_label"), + onClick: () => handleSort("name", 0) + } ]} > - sort by + {" "} + {T.translate("general.sort_by")} diff --git a/src/pages/sponsors/sponsor-forms-tab/components/add-sponsor-form-template-popup/index.js b/src/pages/sponsors/sponsor-forms-tab/components/add-sponsor-form-template-popup/index.js index 3a6ff11f7..77d604d3e 100644 --- a/src/pages/sponsors/sponsor-forms-tab/components/add-sponsor-form-template-popup/index.js +++ b/src/pages/sponsors/sponsor-forms-tab/components/add-sponsor-form-template-popup/index.js @@ -227,11 +227,18 @@ const AddSponsorFormTemplatePopup = ({ buttonId="sort-button" menuId="sort-menu" menuItems={[ - { label: "A-Z", onClick: () => handleSort("name", 1) }, - { label: "Z-A", onClick: () => handleSort("name", 0) } + { + label: T.translate("general.sort_asc_label"), + onClick: () => handleSort("name", 1) + }, + { + label: T.translate("general.sort_desc_label"), + onClick: () => handleSort("name", 0) + } ]} > - sort by + {" "} + {T.translate("general.sort_by")} diff --git a/src/pages/sponsors/sponsor-forms-tab/components/manage-items/sponsor-form-item-from-inventory.js b/src/pages/sponsors/sponsor-forms-tab/components/manage-items/sponsor-form-item-from-inventory.js index 8bb4643eb..f8b8fd61c 100644 --- a/src/pages/sponsors/sponsor-forms-tab/components/manage-items/sponsor-form-item-from-inventory.js +++ b/src/pages/sponsors/sponsor-forms-tab/components/manage-items/sponsor-form-item-from-inventory.js @@ -220,7 +220,8 @@ const SponsorFormItemFromInventoryPopup = ({ } ]} > - sort by + {" "} + {T.translate("general.sort_by")} diff --git a/src/pages/sponsors/sponsor-pages-tab/components/add-sponsor-page-template-popup/index.js b/src/pages/sponsors/sponsor-pages-tab/components/add-sponsor-page-template-popup/index.js index b78d10cde..f9ac1046a 100644 --- a/src/pages/sponsors/sponsor-pages-tab/components/add-sponsor-page-template-popup/index.js +++ b/src/pages/sponsors/sponsor-pages-tab/components/add-sponsor-page-template-popup/index.js @@ -232,7 +232,10 @@ const AddSponsorPageTemplatePopup = ({ size={6} sx={{ alignItems: "baseline" }} > - {selectedPages.length} items selected + + {selectedPages.length}{" "} + {T.translate("edit_sponsor.pages_tab.items_selected")} + @@ -250,7 +253,8 @@ const AddSponsorPageTemplatePopup = ({ } ]} > - sort by + {" "} + {T.translate("general.sort_by")} @@ -294,7 +298,7 @@ const AddSponsorPageTemplatePopup = ({ )} {showPages.length === 0 && ( - {T.translate("errors.pages_tab.no_pages")} + {T.translate("edit_sponsor.pages_tab.no_pages")} )} From 8083abd46c66c7a3a039de11b1d6bb3e45747def Mon Sep 17 00:00:00 2001 From: Santi Date: Fri, 27 Feb 2026 12:08:48 -0300 Subject: [PATCH 8/8] adding header Added licensing information and copyright notice to the file. Signed-off-by: Santi --- .../add-sponsor-page-template-popup/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/pages/sponsors/sponsor-pages-tab/components/add-sponsor-page-template-popup/index.js b/src/pages/sponsors/sponsor-pages-tab/components/add-sponsor-page-template-popup/index.js index f9ac1046a..80ae664f6 100644 --- a/src/pages/sponsors/sponsor-pages-tab/components/add-sponsor-page-template-popup/index.js +++ b/src/pages/sponsors/sponsor-pages-tab/components/add-sponsor-page-template-popup/index.js @@ -1,3 +1,16 @@ +/** + * Copyright 2026 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 React, { useEffect, useState } from "react"; import T from "i18n-react/dist/i18n-react"; import { connect } from "react-redux";