From cdc8d00fa0b467ead9bc588ff243af7e1e232e46 Mon Sep 17 00:00:00 2001 From: Jeremy Zimmerman Date: Thu, 1 Dec 2022 14:25:11 -0500 Subject: [PATCH 01/10] Adding ability to have page overrides per client. --- src/helpers/cms-content-helper.js | 73 +++++++++++++++++++------------ 1 file changed, 46 insertions(+), 27 deletions(-) diff --git a/src/helpers/cms-content-helper.js b/src/helpers/cms-content-helper.js index c4767e61..26e684fe 100644 --- a/src/helpers/cms-content-helper.js +++ b/src/helpers/cms-content-helper.js @@ -2,37 +2,56 @@ import { dynamicStrings } from "@/constants/dynamic-strings"; import { useMainStore } from '@/store'; export function fetchCmsContentForPage(issPage) { - return useMainStore().getPageData(issPage) - .then((response) => { - const pageDataFromCms = {}; - - response.data.Result.forEach((widget) => { - let widgetWithReplacements = findAndReplaceGlobalStateValues( - widget.Model, - widget.Name - ); - - // If we already have this widget, push it on the collection - if (widgetWithReplacements.Name in pageDataFromCms) { - pageDataFromCms[widgetWithReplacements.Name].push( - widgetWithReplacements.Model - ); - return; + const store = useMainStore(); + store.order.accountNumber = 10; + const pageName = issPage + (store.order.accountNumber == 0 ? "" : store.order.accountNumber); + + return store.getPageData(pageName) + .then( + // Get the client specific page if it exists. + (response) => { return processPageData(response); }, + (error) => { + // If the client specific page does not exist, get the base page. + if ( store.order.accountNumber != 0 ) + { + return store.getPageData(issPage) + .then((response) => { + return processPageData(response); + }); } + } + ); + } + + function processPageData(response) { + const pageDataFromCms = {}; + + response.data.Result.forEach((widget) => { + let widgetWithReplacements = findAndReplaceGlobalStateValues( + widget.Model, + widget.Name + ); - pageDataFromCms[widgetWithReplacements.Name] = [ - widgetWithReplacements.Model, - ]; - }); + // If we already have this widget, push it on the collection + if (widgetWithReplacements.Name in pageDataFromCms) { + pageDataFromCms[widgetWithReplacements.Name].push( + widgetWithReplacements.Model + ); + return; + } - Object.keys(pageDataFromCms).forEach((key) => { - if (pageDataFromCms[key].length === 1) { - pageDataFromCms[key] = pageDataFromCms[key][0]; - } - }); + pageDataFromCms[widgetWithReplacements.Name] = [ + widgetWithReplacements.Model, + ]; + }); - return pageDataFromCms; - }); + Object.keys(pageDataFromCms).forEach((key) => { + if (pageDataFromCms[key].length === 1) { + pageDataFromCms[key] = pageDataFromCms[key][0]; + } + }); + + return pageDataFromCms; } // Parent function for processWidgetItemForReplacement. This will loop through the parent From 07a01cd2f82d8abc6d54007d278ab3ad530e3b8a Mon Sep 17 00:00:00 2001 From: Jeremy Zimmerman Date: Thu, 1 Dec 2022 14:36:17 -0500 Subject: [PATCH 02/10] Updates. --- src/helpers/cms-content-helper.js | 8 ++++---- src/store/index.js | 5 +++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/helpers/cms-content-helper.js b/src/helpers/cms-content-helper.js index 26e684fe..0cc89739 100644 --- a/src/helpers/cms-content-helper.js +++ b/src/helpers/cms-content-helper.js @@ -2,9 +2,9 @@ import { dynamicStrings } from "@/constants/dynamic-strings"; import { useMainStore } from '@/store'; export function fetchCmsContentForPage(issPage) { - const store = useMainStore(); - store.order.accountNumber = 10; - const pageName = issPage + (store.order.accountNumber == 0 ? "" : store.order.accountNumber); + const store = useMainStore() + const clientName = store.issConfig.clientName; + const pageName = issPage + (clientName.length == 0 ? "" : "_" + clientName); return store.getPageData(pageName) .then( @@ -12,7 +12,7 @@ export function fetchCmsContentForPage(issPage) { (response) => { return processPageData(response); }, (error) => { // If the client specific page does not exist, get the base page. - if ( store.order.accountNumber != 0 ) + if ( clientName.length > 0 ) { return store.getPageData(issPage) .then((response) => { diff --git a/src/store/index.js b/src/store/index.js index 6a098a76..2480a166 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -80,6 +80,11 @@ const getDefaultState = () => { lastPageVisited: null, triggeredSiteEntry: false, }, + issConfig: { + clientName: "", + styleSheet: "", + clientTag: "", + } }; }; From a575ca628d2ce9a8d0f17df84c2e32679c336216 Mon Sep 17 00:00:00 2001 From: Jeremy Zimmerman Date: Thu, 1 Dec 2022 14:38:41 -0500 Subject: [PATCH 03/10] Updates. --- src/helpers/cms-content-helper.js | 89 ++++++++++++++++--------------- 1 file changed, 45 insertions(+), 44 deletions(-) diff --git a/src/helpers/cms-content-helper.js b/src/helpers/cms-content-helper.js index 0cc89739..079ecde7 100644 --- a/src/helpers/cms-content-helper.js +++ b/src/helpers/cms-content-helper.js @@ -6,53 +6,54 @@ export function fetchCmsContentForPage(issPage) { const clientName = store.issConfig.clientName; const pageName = issPage + (clientName.length == 0 ? "" : "_" + clientName); - return store.getPageData(pageName) - .then( - // Get the client specific page if it exists. - (response) => { return processPageData(response); }, - (error) => { - // If the client specific page does not exist, get the base page. - if ( clientName.length > 0 ) - { - return store.getPageData(issPage) - .then((response) => { - return processPageData(response); - }); - } + return store.getPageData(pageName) + .then( + // Get the client specific page if it exists. + (response) => { return processPageData(response); }, + (error) => { + // If the client specific page does not exist, get the base page. + if ( clientName.length > 0 ) + { + return store.getPageData(issPage) + .then((response) => { + return processPageData(response); + }); } - ); - } + } + ); +} - function processPageData(response) { - const pageDataFromCms = {}; - - response.data.Result.forEach((widget) => { - let widgetWithReplacements = findAndReplaceGlobalStateValues( - widget.Model, - widget.Name +// Support method for processing the page data from the CMS call. +function processPageData(response) { + const pageDataFromCms = {}; + + response.data.Result.forEach((widget) => { + let widgetWithReplacements = findAndReplaceGlobalStateValues( + widget.Model, + widget.Name + ); + + // If we already have this widget, push it on the collection + if (widgetWithReplacements.Name in pageDataFromCms) { + pageDataFromCms[widgetWithReplacements.Name].push( + widgetWithReplacements.Model ); - - // If we already have this widget, push it on the collection - if (widgetWithReplacements.Name in pageDataFromCms) { - pageDataFromCms[widgetWithReplacements.Name].push( - widgetWithReplacements.Model - ); - return; - } - - pageDataFromCms[widgetWithReplacements.Name] = [ - widgetWithReplacements.Model, - ]; - }); - - Object.keys(pageDataFromCms).forEach((key) => { - if (pageDataFromCms[key].length === 1) { - pageDataFromCms[key] = pageDataFromCms[key][0]; - } - }); - - return pageDataFromCms; - } + return; + } + + pageDataFromCms[widgetWithReplacements.Name] = [ + widgetWithReplacements.Model, + ]; + }); + + Object.keys(pageDataFromCms).forEach((key) => { + if (pageDataFromCms[key].length === 1) { + pageDataFromCms[key] = pageDataFromCms[key][0]; + } + }); + + return pageDataFromCms; +} // Parent function for processWidgetItemForReplacement. This will loop through the parent // object and pass any objects that need additional processing to the processWidgetItemForReplacement function. From 88abd55ecca7e1e3f12c46a6710fc9042f6643b4 Mon Sep 17 00:00:00 2001 From: Jeremy Zimmerman Date: Thu, 8 Dec 2022 14:40:39 -0500 Subject: [PATCH 04/10] Base merging implementation. --- src/helpers/cms-content-helper.js | 63 +++++++++++++++++++++++-------- 1 file changed, 47 insertions(+), 16 deletions(-) diff --git a/src/helpers/cms-content-helper.js b/src/helpers/cms-content-helper.js index 079ecde7..f44de513 100644 --- a/src/helpers/cms-content-helper.js +++ b/src/helpers/cms-content-helper.js @@ -3,31 +3,62 @@ import { useMainStore } from '@/store'; export function fetchCmsContentForPage(issPage) { const store = useMainStore() - const clientName = store.issConfig.clientName; + const clientName = "ClientOverrideTest";//store.issConfig.clientName; const pageName = issPage + (clientName.length == 0 ? "" : "_" + clientName); - return store.getPageData(pageName) + return store.getPageData(issPage) .then( - // Get the client specific page if it exists. - (response) => { return processPageData(response); }, - (error) => { - // If the client specific page does not exist, get the base page. - if ( clientName.length > 0 ) - { - return store.getPageData(issPage) - .then((response) => { - return processPageData(response); - }); - } + // Get the base/default page first. + (baseResponse) => { + store.getPageData(pageName) + .then( + // Get the client overridge if it exists. + (clientResponse) => { + return processPageData(baseResponse, clientResponse); + }, + (error) => { + return processPageData(baseResponse, null); + } + ); } ); -} +}; // Support method for processing the page data from the CMS call. -function processPageData(response) { +// baseResponse = contains the widgets from the base page. +// clientResponse = contains the widgets from the client override page. (null if none) +function processPageData(baseResponse, clientResponse) { const pageDataFromCms = {}; + let widgets = []; + + if ( clientResponse === null ) + { + widgets = baseResponse.data.Result; + } + else + { + // Overide any base widgets with the client override widgets if found. + baseResponse.data.Result.forEach((baseWidget) => { + let found = false; + clientResponse.data.Result.forEach((clientWidget) => { + + if ( clientWidget.Name == baseWidget.Name ) + { + widgets.push(clientWidget); + found = true; + } + }); + + if ( !found ) + widgets.push(baseWidget); + + }); + } + + console.log(widgets); - response.data.Result.forEach((widget) => { + widgets.forEach((widget) => { + // Global state value replacement. let widgetWithReplacements = findAndReplaceGlobalStateValues( widget.Model, widget.Name From dd4f686cad78c58f638111a507b7d2490ba94617 Mon Sep 17 00:00:00 2001 From: Jeremy Zimmerman Date: Thu, 8 Dec 2022 14:58:03 -0500 Subject: [PATCH 05/10] Updates --- src/helpers/cms-content-helper.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/helpers/cms-content-helper.js b/src/helpers/cms-content-helper.js index f44de513..6deadf3e 100644 --- a/src/helpers/cms-content-helper.js +++ b/src/helpers/cms-content-helper.js @@ -10,7 +10,7 @@ export function fetchCmsContentForPage(issPage) { .then( // Get the base/default page first. (baseResponse) => { - store.getPageData(pageName) + return store.getPageData(pageName) .then( // Get the client overridge if it exists. (clientResponse) => { From 1acc33044f248952dd0bfa1f71447747c7da6ffe Mon Sep 17 00:00:00 2001 From: Jeremy Zimmerman Date: Thu, 8 Dec 2022 15:09:11 -0500 Subject: [PATCH 06/10] Updates. --- src/helpers/cms-content-helper.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/helpers/cms-content-helper.js b/src/helpers/cms-content-helper.js index 6deadf3e..d6c89b2e 100644 --- a/src/helpers/cms-content-helper.js +++ b/src/helpers/cms-content-helper.js @@ -12,7 +12,7 @@ export function fetchCmsContentForPage(issPage) { (baseResponse) => { return store.getPageData(pageName) .then( - // Get the client overridge if it exists. + // Get the client override if it exists. (clientResponse) => { return processPageData(baseResponse, clientResponse); }, @@ -29,7 +29,7 @@ export function fetchCmsContentForPage(issPage) { // clientResponse = contains the widgets from the client override page. (null if none) function processPageData(baseResponse, clientResponse) { const pageDataFromCms = {}; - let widgets = []; + const widgets = []; if ( clientResponse === null ) { @@ -45,8 +45,8 @@ function processPageData(baseResponse, clientResponse) { if ( clientWidget.Name == baseWidget.Name ) { widgets.push(clientWidget); - found = true; - } + found = true; + } }); if ( !found ) @@ -54,8 +54,6 @@ function processPageData(baseResponse, clientResponse) { }); } - - console.log(widgets); widgets.forEach((widget) => { // Global state value replacement. From 0a3f9c9df4d5e98b8faf804f98b2a51e391a6fce Mon Sep 17 00:00:00 2001 From: Jeremy Zimmerman Date: Fri, 9 Dec 2022 16:00:31 -0500 Subject: [PATCH 07/10] Updates --- src/helpers/cms-content-helper.js | 33 ++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/src/helpers/cms-content-helper.js b/src/helpers/cms-content-helper.js index d6c89b2e..6805908b 100644 --- a/src/helpers/cms-content-helper.js +++ b/src/helpers/cms-content-helper.js @@ -4,22 +4,31 @@ import { useMainStore } from '@/store'; export function fetchCmsContentForPage(issPage) { const store = useMainStore() const clientName = "ClientOverrideTest";//store.issConfig.clientName; - const pageName = issPage + (clientName.length == 0 ? "" : "_" + clientName); + const clientOverride = (clientName.length == 0); + const pageName = issPage + (clientOverride ? "" : "_" + clientName.toLowerCase().replace(/ /g, "")); return store.getPageData(issPage) .then( // Get the base/default page first. - (baseResponse) => { - return store.getPageData(pageName) - .then( - // Get the client override if it exists. - (clientResponse) => { - return processPageData(baseResponse, clientResponse); - }, - (error) => { - return processPageData(baseResponse, null); - } - ); + (baseResponse) => { + if ( !clientOverride ){ + // Return the base page if there are no client override. + return processPageData(baseResponse, null); + } + else { + // Else get the client override page. + return store.getPageData(pageName) + .then( + (clientResponse) => { + // Process the client override if it exists. + return processPageData(baseResponse, clientResponse); + }, + (error) => { + // Process the just the base if no client override exists. + return processPageData(baseResponse, null); + } + ); + } } ); }; From a80fd8cf9f71a1db6d0d86e2518db4f7f551a0d0 Mon Sep 17 00:00:00 2001 From: Jeremy Zimmerman Date: Mon, 12 Dec 2022 13:18:38 -0500 Subject: [PATCH 08/10] Updates. --- src/helpers/cms-content-helper.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/helpers/cms-content-helper.js b/src/helpers/cms-content-helper.js index 6805908b..644ef934 100644 --- a/src/helpers/cms-content-helper.js +++ b/src/helpers/cms-content-helper.js @@ -4,14 +4,15 @@ import { useMainStore } from '@/store'; export function fetchCmsContentForPage(issPage) { const store = useMainStore() const clientName = "ClientOverrideTest";//store.issConfig.clientName; - const clientOverride = (clientName.length == 0); - const pageName = issPage + (clientOverride ? "" : "_" + clientName.toLowerCase().replace(/ /g, "")); + const clientOverride = (clientName.length > 0); + const pageName = issPage + (clientOverride ? "_" + clientName.toLowerCase().replace(/ /g, "") : ""); return store.getPageData(issPage) .then( // Get the base/default page first. (baseResponse) => { - if ( !clientOverride ){ + if ( !clientOverride ) + { // Return the base page if there are no client override. return processPageData(baseResponse, null); } From d437196d11f75411d3fbb72a69451ab172675745 Mon Sep 17 00:00:00 2001 From: Jeremy Zimmerman Date: Mon, 12 Dec 2022 13:21:49 -0500 Subject: [PATCH 09/10] Updates. --- src/helpers/cms-content-helper.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/helpers/cms-content-helper.js b/src/helpers/cms-content-helper.js index 644ef934..753b85ea 100644 --- a/src/helpers/cms-content-helper.js +++ b/src/helpers/cms-content-helper.js @@ -5,7 +5,6 @@ export function fetchCmsContentForPage(issPage) { const store = useMainStore() const clientName = "ClientOverrideTest";//store.issConfig.clientName; const clientOverride = (clientName.length > 0); - const pageName = issPage + (clientOverride ? "_" + clientName.toLowerCase().replace(/ /g, "") : ""); return store.getPageData(issPage) .then( @@ -18,6 +17,8 @@ export function fetchCmsContentForPage(issPage) { } else { // Else get the client override page. + const pageName = issPage + "_" + clientName.toLowerCase().replace(/ /g, ""); + return store.getPageData(pageName) .then( (clientResponse) => { From 77feda48990959646cd381ed84c906fc61e2e0d6 Mon Sep 17 00:00:00 2001 From: Jeremy Zimmerman Date: Mon, 12 Dec 2022 15:55:39 -0500 Subject: [PATCH 10/10] Updates. --- src/helpers/cms-content-helper.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/helpers/cms-content-helper.js b/src/helpers/cms-content-helper.js index 753b85ea..d132ae48 100644 --- a/src/helpers/cms-content-helper.js +++ b/src/helpers/cms-content-helper.js @@ -3,7 +3,7 @@ import { useMainStore } from '@/store'; export function fetchCmsContentForPage(issPage) { const store = useMainStore() - const clientName = "ClientOverrideTest";//store.issConfig.clientName; + const clientName = store.issConfig.clientName; const clientOverride = (clientName.length > 0); return store.getPageData(issPage) @@ -18,7 +18,7 @@ export function fetchCmsContentForPage(issPage) { else { // Else get the client override page. const pageName = issPage + "_" + clientName.toLowerCase().replace(/ /g, ""); - + return store.getPageData(pageName) .then( (clientResponse) => { @@ -40,7 +40,7 @@ export function fetchCmsContentForPage(issPage) { // clientResponse = contains the widgets from the client override page. (null if none) function processPageData(baseResponse, clientResponse) { const pageDataFromCms = {}; - const widgets = []; + let widgets = []; if ( clientResponse === null ) {