From 2bb886d2674a39bf65974e5a8a810645121a2b0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=B6khan=20DEM=C4=B0R?= Date: Fri, 26 Feb 2021 18:42:00 +0300 Subject: [PATCH 1/3] Fix for #2208 +Setting Ids for models; -Matching models by Name; +Matching models by Id; --- .../Controllers/SettingController.cs | 35 +++++++------------ .../Settings/CustomerUserSettingsModel.cs | 3 ++ .../Views/Setting/CustomerUser.cshtml | 9 +++-- 3 files changed, 21 insertions(+), 26 deletions(-) diff --git a/src/Presentation/SmartStore.Web/Administration/Controllers/SettingController.cs b/src/Presentation/SmartStore.Web/Administration/Controllers/SettingController.cs index 724cd4774c..740c723af2 100644 --- a/src/Presentation/SmartStore.Web/Administration/Controllers/SettingController.cs +++ b/src/Presentation/SmartStore.Web/Administration/Controllers/SettingController.cs @@ -1060,7 +1060,8 @@ public ActionResult CookieInfoList(GridCommand command) Name = x.Name, Description = x.Description, IsPluginInfo = systemCookies.Contains(x.Name), - CookieTypeName = x.CookieType.ToString() + CookieTypeName = x.CookieType.ToString(), + id=x.Id }; }) .ToList(), @@ -1105,6 +1106,7 @@ public ActionResult CookieInfoCreatePopup() [AdminAuthorize] public ActionResult CookieInfoCreatePopup(string btnId, string formId, CookieInfoModel model) { + ModelState["id"].Errors.Clear(); if (!ModelState.IsValid) return View(model); @@ -1114,25 +1116,14 @@ public ActionResult CookieInfoCreatePopup(string btnId, string formId, CookieInf if (ciList == null) ciList = new List(); - - var cookieInfo = ciList - .Select(x => x) - .Where(x => x.Name.IsCaseInsensitiveEqual(model.Name)) - .FirstOrDefault(); - - if (cookieInfo != null) - { - // Remove item if it's already there. - ciList.Remove(x => x.Name.IsCaseInsensitiveEqual(cookieInfo.Name)); - } - - cookieInfo = new CookieInfo + var cookieInfo = new CookieInfo { // TODO: Use MiniMapper CookieType = model.CookieType, Name = model.Name, Description = model.Description, - SelectedStoreIds = model.SelectedStoreIds + SelectedStoreIds = model.SelectedStoreIds, + Id = (ciList.Count > 0 ? ciList.Max(x => x.Id) + 1 : 0), }; ciList.Add(cookieInfo); @@ -1157,13 +1148,13 @@ public ActionResult CookieInfoCreatePopup(string btnId, string formId, CookieInf } [AdminAuthorize] - public ActionResult CookieInfoEditPopup(string name) + public ActionResult CookieInfoEditPopup(int Id) { var privacySettings = Services.Settings.LoadSetting(); var ciList = JsonConvert.DeserializeObject>(privacySettings.CookieInfos); var cookieInfo = ciList .Select(x => x) - .Where(x => x.Name.IsCaseInsensitiveEqual(name)) + .Where(x => x.Id == Id) .FirstOrDefault(); if (cookieInfo == null) @@ -1177,7 +1168,8 @@ public ActionResult CookieInfoEditPopup(string name) CookieType = cookieInfo.CookieType, Name = cookieInfo.Name, Description = cookieInfo.Description, - SelectedStoreIds = cookieInfo.SelectedStoreIds + SelectedStoreIds = cookieInfo.SelectedStoreIds, + id = cookieInfo.Id }; AddLocales(_languageService, model.Locales, (locale, languageId) => @@ -1198,7 +1190,7 @@ public ActionResult CookieInfoEditPopup(string btnId, string formId, CookieInfoM var ciList = JsonConvert.DeserializeObject>(privacySettings.CookieInfos); var cookieInfo = ciList .Select(x => x) - .Where(x => x.Name.IsCaseInsensitiveEqual(model.Name)) + .Where(x => x.Id==model.id) .FirstOrDefault(); if (cookieInfo == null) @@ -1217,9 +1209,6 @@ public ActionResult CookieInfoEditPopup(string btnId, string formId, CookieInfoM cookieInfo.CookieType = model.CookieType; cookieInfo.SelectedStoreIds = model.SelectedStoreIds; - ciList.Remove(x => x.Name.IsCaseInsensitiveEqual(cookieInfo.Name)); - ciList.Add(cookieInfo); - privacySettings.CookieInfos = JsonConvert.SerializeObject(ciList, Formatting.None); Services.Settings.SaveSetting(privacySettings, x => x.CookieInfos, 0, true); @@ -1360,7 +1349,7 @@ public ActionResult GeneralCommon( #region POST mapping // Set CountryId explicitly else it can't be resetted. - companySettings.CountryId = model.CompanyInformationSettings.CountryId ?? 0; + companySettings.CountryId = model.CompanyInformationSettings.CountryId ?? 0; // (Un)track PDF logo id _mediaTracker.Value.Track(pdfSettings, prevPdfLogoId, x => x.LogoPictureId); diff --git a/src/Presentation/SmartStore.Web/Administration/Models/Settings/CustomerUserSettingsModel.cs b/src/Presentation/SmartStore.Web/Administration/Models/Settings/CustomerUserSettingsModel.cs index 1e55a4ce33..7c275ec908 100644 --- a/src/Presentation/SmartStore.Web/Administration/Models/Settings/CustomerUserSettingsModel.cs +++ b/src/Presentation/SmartStore.Web/Administration/Models/Settings/CustomerUserSettingsModel.cs @@ -303,6 +303,9 @@ public CookieInfoModel() [SmartResourceDisplayName("Admin.Configuration.Settings.CustomerUser.Privacy.CookieInfo.Description")] public string Description { get; set; } + [SmartResourceDisplayName("Admin.Configuration.Settings.CustomerUser.Privacy.CookieInfo.Id")] + public int id { get; set; } + [SmartResourceDisplayName("Admin.Configuration.Settings.CustomerUser.Privacy.CookieInfo.CookieType")] public CookieType CookieType { get; set; } diff --git a/src/Presentation/SmartStore.Web/Administration/Views/Setting/CustomerUser.cshtml b/src/Presentation/SmartStore.Web/Administration/Views/Setting/CustomerUser.cshtml index 13295bb750..0a738e87c8 100644 --- a/src/Presentation/SmartStore.Web/Administration/Views/Setting/CustomerUser.cshtml +++ b/src/Presentation/SmartStore.Web/Administration/Views/Setting/CustomerUser.cshtml @@ -869,7 +869,7 @@
@(Html.Telerik().Grid() .Name("cookie-infos-grid") - .DataKeys(keys => keys.Add(x => x.Name).RouteKey("Name")) + .DataKeys(keys => keys.Add(x => x.id).RouteKey("Id")) .ClientEvents(events => events .OnRowDataBound("onRowDataBound")) .DataBinding(dataBinding => dataBinding @@ -879,6 +879,7 @@ ) .Columns(columns => { + columns.Bound(x => x.id); columns.Bound(x => x.Name) .Width("15%") .ReadOnly(); @@ -927,9 +928,11 @@ $('#cookie-infos-grid').on('click', '.t-grid-edit-cookie-infos', function (e) { e.preventDefault(); var grid = $('#cookie-infos-grid').data('tGrid'); - var tr = $(this).closest('tr'); + var tr = $(this).closest('tr'); + console.log(grid.dataItem(tr)); var name = grid.dataItem(tr).Name; - var href = '@Url.Action("CookieInfoEditPopup", "Setting")?name=' + name + '&btnId=btnRefreshCookieInfos&formId=cookie-infos-form'; + var id = grid.dataItem(tr).id; + var href = '@Url.Action("CookieInfoEditPopup", "Setting")/' + id + '?btnId=btnRefreshCookieInfos&formId=cookie-infos-form'; openPopup(href, false); From 87f3a2cbc994b35bac033a5d77aa70934999939f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=B6khan=20DEM=C4=B0R?= Date: Fri, 26 Feb 2021 18:58:39 +0300 Subject: [PATCH 2/3] fix delete fixed delete funciton also, removed console.log --- .../Administration/Controllers/SettingController.cs | 8 ++++---- .../Administration/Views/Setting/CustomerUser.cshtml | 2 -- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/Presentation/SmartStore.Web/Administration/Controllers/SettingController.cs b/src/Presentation/SmartStore.Web/Administration/Controllers/SettingController.cs index 740c723af2..9191fcbca4 100644 --- a/src/Presentation/SmartStore.Web/Administration/Controllers/SettingController.cs +++ b/src/Presentation/SmartStore.Web/Administration/Controllers/SettingController.cs @@ -1061,7 +1061,7 @@ public ActionResult CookieInfoList(GridCommand command) Description = x.Description, IsPluginInfo = systemCookies.Contains(x.Name), CookieTypeName = x.CookieType.ToString(), - id=x.Id + id = x.Id }; }) .ToList(), @@ -1075,13 +1075,13 @@ public ActionResult CookieInfoList(GridCommand command) } [GridAction(EnableCustomBinding = true)] - public ActionResult CookieInfoDelete(string name, GridCommand command) + public ActionResult CookieInfoDelete(int Id, GridCommand command) { // First deserialize setting. var privacySettings = Services.Settings.LoadSetting(); var ciList = JsonConvert.DeserializeObject>(privacySettings.CookieInfos); - ciList.Remove(x => x.Name.IsCaseInsensitiveEqual(name)); + ciList.Remove(x => x.Id == Id); // Now serialize again. privacySettings.CookieInfos = JsonConvert.SerializeObject(ciList, Formatting.None); @@ -1190,7 +1190,7 @@ public ActionResult CookieInfoEditPopup(string btnId, string formId, CookieInfoM var ciList = JsonConvert.DeserializeObject>(privacySettings.CookieInfos); var cookieInfo = ciList .Select(x => x) - .Where(x => x.Id==model.id) + .Where(x => x.Id == model.id) .FirstOrDefault(); if (cookieInfo == null) diff --git a/src/Presentation/SmartStore.Web/Administration/Views/Setting/CustomerUser.cshtml b/src/Presentation/SmartStore.Web/Administration/Views/Setting/CustomerUser.cshtml index 0a738e87c8..74516d7738 100644 --- a/src/Presentation/SmartStore.Web/Administration/Views/Setting/CustomerUser.cshtml +++ b/src/Presentation/SmartStore.Web/Administration/Views/Setting/CustomerUser.cshtml @@ -929,8 +929,6 @@ e.preventDefault(); var grid = $('#cookie-infos-grid').data('tGrid'); var tr = $(this).closest('tr'); - console.log(grid.dataItem(tr)); - var name = grid.dataItem(tr).Name; var id = grid.dataItem(tr).id; var href = '@Url.Action("CookieInfoEditPopup", "Setting")/' + id + '?btnId=btnRefreshCookieInfos&formId=cookie-infos-form'; From 9fb5bed49dbe3f898be35cc3949fe5c0a519176d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=B6khan=20DEM=C4=B0R?= Date: Fri, 26 Feb 2021 19:02:08 +0300 Subject: [PATCH 3/3] removed id from displayed columns --- .../Administration/Views/Setting/CustomerUser.cshtml | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Presentation/SmartStore.Web/Administration/Views/Setting/CustomerUser.cshtml b/src/Presentation/SmartStore.Web/Administration/Views/Setting/CustomerUser.cshtml index 74516d7738..3ea470d98c 100644 --- a/src/Presentation/SmartStore.Web/Administration/Views/Setting/CustomerUser.cshtml +++ b/src/Presentation/SmartStore.Web/Administration/Views/Setting/CustomerUser.cshtml @@ -879,7 +879,6 @@ ) .Columns(columns => { - columns.Bound(x => x.id); columns.Bound(x => x.Name) .Width("15%") .ReadOnly();