From 7c70bbf15030e513a545ca88954f66135f28b268 Mon Sep 17 00:00:00 2001 From: Marcus Gesing Date: Fri, 26 Feb 2021 09:46:27 +0100 Subject: [PATCH 001/101] RecentlyViewedProducts: remove the oldest product and put the newest product in front as soon as the maximum number of products is reached --- .../Catalog/RecentlyViewedProductsService.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Libraries/SmartStore.Services/Catalog/RecentlyViewedProductsService.cs b/src/Libraries/SmartStore.Services/Catalog/RecentlyViewedProductsService.cs index fc47f54a93..e7c26224f7 100644 --- a/src/Libraries/SmartStore.Services/Catalog/RecentlyViewedProductsService.cs +++ b/src/Libraries/SmartStore.Services/Catalog/RecentlyViewedProductsService.cs @@ -128,8 +128,7 @@ public virtual void AddProductToRecentlyViewedList(int productId) maxProducts = 8; } - var skip = Math.Max(0, newProductIds.Count - maxProducts); - newProductIds.Skip(skip).Take(maxProducts).Each(x => + newProductIds.Take(maxProducts).Each(x => { recentlyViewedCookie.Values.Add("RecentlyViewedProductIds", x.ToString()); }); From 5861bfe2f2a1fc9b093ed9c2b3e8f2d9eda5a1e9 Mon Sep 17 00:00:00 2001 From: Marcus Gesing Date: Mon, 1 Mar 2021 14:58:04 +0100 Subject: [PATCH 002/101] Web API: fixes OData Connected Service error when accessing MediaFiles and MediaFolders lists --- .../Controllers/OData/MediaFilesController.cs | 21 ++++++++----------- .../OData/MediaFoldersController.cs | 13 ++++++------ .../WebApiConfigurationProvider.cs | 4 ++-- 3 files changed, 18 insertions(+), 20 deletions(-) diff --git a/src/Plugins/SmartStore.WebApi/Controllers/OData/MediaFilesController.cs b/src/Plugins/SmartStore.WebApi/Controllers/OData/MediaFilesController.cs index 042a8c5d08..cd442f49e6 100644 --- a/src/Plugins/SmartStore.WebApi/Controllers/OData/MediaFilesController.cs +++ b/src/Plugins/SmartStore.WebApi/Controllers/OData/MediaFilesController.cs @@ -105,22 +105,19 @@ public IHttpActionResult Delete() public static void Init(WebApiConfigurationBroadcaster configData) { - var entityConfig = configData.ModelBuilder.EntityType(); + const string infoSetName = "FileItemInfos"; + configData.ModelBuilder.EntitySet(infoSetName); + + var entityConfig = configData.ModelBuilder.EntityType(); entityConfig.Collection .Action("GetFileByPath") - .ReturnsFromEntitySet("MediaFiles") + .ReturnsFromEntitySet(infoSetName) .Parameter("Path"); - //entityConfig.Collection - // .Action("GetFileByName") - // .ReturnsFromEntitySet("MediaFiles") - // .AddParameter("FileName") - // .AddParameter("FolderId"); - entityConfig.Collection .Function("GetFilesByIds") - .ReturnsFromEntitySet("MediaFiles") + .ReturnsFromEntitySet(infoSetName) .CollectionParameter("Ids"); entityConfig.Collection @@ -130,7 +127,7 @@ public static void Init(WebApiConfigurationBroadcaster configData) entityConfig.Collection .Action("SearchFiles") - .ReturnsFromEntitySet("MediaFiles") + .ReturnsFromEntitySet(infoSetName) .Parameter("Query"); entityConfig.Collection @@ -155,7 +152,7 @@ public static void Init(WebApiConfigurationBroadcaster configData) entityConfig .Action("MoveFile") - .ReturnsFromEntitySet("MediaFiles") + .ReturnsFromEntitySet(infoSetName) .AddParameter("DestinationFileName") .AddParameter("DuplicateFileHandling", true); @@ -172,7 +169,7 @@ public static void Init(WebApiConfigurationBroadcaster configData) entityConfig.Collection .Action("SaveFile") - .ReturnsFromEntitySet("MediaFiles"); + .ReturnsFromEntitySet(infoSetName); } /// POST /MediaFiles/GetFileByPath {"Path":"content/my-file.jpg"} diff --git a/src/Plugins/SmartStore.WebApi/Controllers/OData/MediaFoldersController.cs b/src/Plugins/SmartStore.WebApi/Controllers/OData/MediaFoldersController.cs index 51ac97d138..d0e81f211a 100644 --- a/src/Plugins/SmartStore.WebApi/Controllers/OData/MediaFoldersController.cs +++ b/src/Plugins/SmartStore.WebApi/Controllers/OData/MediaFoldersController.cs @@ -83,9 +83,10 @@ public IHttpActionResult Delete() public static void Init(WebApiConfigurationBroadcaster configData) { - var entityConfig = configData.ModelBuilder.EntityType(); + const string infoSetName = "FolderNodeInfos"; + configData.ModelBuilder.EntitySet(infoSetName); - configData.ModelBuilder.ComplexType(); + var entityConfig = configData.ModelBuilder.EntityType(); entityConfig.Collection .Action("FolderExists") @@ -94,12 +95,12 @@ public static void Init(WebApiConfigurationBroadcaster configData) entityConfig.Collection .Action("CreateFolder") - .ReturnsFromEntitySet("MediaFolders") + .ReturnsFromEntitySet(infoSetName) .Parameter("Path"); entityConfig.Collection .Action("MoveFolder") - .ReturnsFromEntitySet("MediaFolders") + .ReturnsFromEntitySet(infoSetName) .AddParameter("Path") .AddParameter("DestinationPath"); @@ -123,11 +124,11 @@ public static void Init(WebApiConfigurationBroadcaster configData) entityConfig.Collection .Function("GetRootNode") - .ReturnsCollectionFromEntitySet("MediaFolders"); + .ReturnsCollectionFromEntitySet(infoSetName); entityConfig.Collection .Action("GetNodeByPath") - .ReturnsCollectionFromEntitySet("MediaFolders") + .ReturnsCollectionFromEntitySet(infoSetName) .Parameter("Path"); } diff --git a/src/Plugins/SmartStore.WebApi/WebApiConfigurationProvider.cs b/src/Plugins/SmartStore.WebApi/WebApiConfigurationProvider.cs index f7ab36c07e..f57ae9a42a 100644 --- a/src/Plugins/SmartStore.WebApi/WebApiConfigurationProvider.cs +++ b/src/Plugins/SmartStore.WebApi/WebApiConfigurationProvider.cs @@ -54,8 +54,8 @@ public void Configure(WebApiConfigurationBroadcaster configData) m.EntitySet("MeasureDimensions"); m.EntitySet("MeasureWeights"); - m.EntitySet("MediaFiles"); - m.EntitySet("MediaFolders"); + m.EntitySet("MediaFiles"); + m.EntitySet("MediaFolders"); m.EntitySet("MediaTags"); m.EntitySet("MediaTracks"); From 4fed7c8aa9fece1c8cc635adacf9385f9b1bd2ce Mon Sep 17 00:00:00 2001 From: Murat Cakir Date: Mon, 1 Mar 2021 19:48:12 +0100 Subject: [PATCH 003/101] Typo --- .../Catalog/Modelling/ProductVariantQueryFactory.cs | 4 +++- .../SmartStore.Web.Framework/UI/Menus/MenuBase.cs | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Libraries/SmartStore.Services/Catalog/Modelling/ProductVariantQueryFactory.cs b/src/Libraries/SmartStore.Services/Catalog/Modelling/ProductVariantQueryFactory.cs index 27fceaee69..c7cb504693 100644 --- a/src/Libraries/SmartStore.Services/Catalog/Modelling/ProductVariantQueryFactory.cs +++ b/src/Libraries/SmartStore.Services/Catalog/Modelling/ProductVariantQueryFactory.cs @@ -159,7 +159,9 @@ public ProductVariantQuery CreateFromQuery() { return new DateTime(year, month, day); } - catch { } + catch + { + } } return null; diff --git a/src/Presentation/SmartStore.Web.Framework/UI/Menus/MenuBase.cs b/src/Presentation/SmartStore.Web.Framework/UI/Menus/MenuBase.cs index a3587455c5..1b96e73908 100644 --- a/src/Presentation/SmartStore.Web.Framework/UI/Menus/MenuBase.cs +++ b/src/Presentation/SmartStore.Web.Framework/UI/Menus/MenuBase.cs @@ -151,7 +151,7 @@ protected virtual T GetRequestValue(ControllerContext context, string name) { Guard.NotNull(context, nameof(context)); Guard.NotEmpty(name, nameof(name)); - + var value = context.RouteData?.Values[name]?.ToString(); if (value.IsEmpty()) { From bb559b3aab2ff66175dbf8944e377a71d8e62373 Mon Sep 17 00:00:00 2001 From: Marcus Gesing Date: Wed, 3 Mar 2021 13:42:54 +0100 Subject: [PATCH 004/101] AmazonPay: do not send order GUID if it's empty (e.g. due to expired browser session) --- src/Plugins/SmartStore.AmazonPay/Services/AmazonPayService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Plugins/SmartStore.AmazonPay/Services/AmazonPayService.cs b/src/Plugins/SmartStore.AmazonPay/Services/AmazonPayService.cs index 3c90065b68..88d41c6aad 100644 --- a/src/Plugins/SmartStore.AmazonPay/Services/AmazonPayService.cs +++ b/src/Plugins/SmartStore.AmazonPay/Services/AmazonPayService.cs @@ -954,7 +954,7 @@ public bool SetOrderReferenceDetails( .WithStoreName(store.Name); var paymentRequest = _httpContext.Session["OrderPaymentInfo"] as ProcessPaymentRequest; - if (paymentRequest != null) + if (paymentRequest != null && paymentRequest.OrderGuid != Guid.Empty) { setOrderRequest = setOrderRequest.WithSellerOrderId(paymentRequest.OrderGuid.ToString()); } From a4159db495aaa170ff1e868befffc363a5fb09d1 Mon Sep 17 00:00:00 2001 From: Marcel Schmidt Date: Tue, 9 Mar 2021 16:26:03 +0100 Subject: [PATCH 005/101] Missing Twitter setting ressource --- .../SmartStore.Data/Migrations/MigrationsConfiguration.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Libraries/SmartStore.Data/Migrations/MigrationsConfiguration.cs b/src/Libraries/SmartStore.Data/Migrations/MigrationsConfiguration.cs index a9b11851ec..8f7d627a9a 100644 --- a/src/Libraries/SmartStore.Data/Migrations/MigrationsConfiguration.cs +++ b/src/Libraries/SmartStore.Data/Migrations/MigrationsConfiguration.cs @@ -55,7 +55,9 @@ public void MigrateSettings(SmartObjectContext context) public void MigrateLocaleResources(LocaleResourcesBuilder builder) { - + builder.AddOrUpdate("Admin.Configuration.Settings.GeneralCommon.SocialSettings.TwitterSite.Error", + "The Twitter username must begin with an '@'.", + "Der Twitter-Benutzername muss mit einem '@' beginnen."); } } -} +} \ No newline at end of file From 658512492c95274ffe352bb203602f1d5f3b685c Mon Sep 17 00:00:00 2001 From: Marcus Gesing Date: Tue, 6 Apr 2021 09:46:20 +0200 Subject: [PATCH 006/101] Fixes NullReferenceException in order details view --- src/Presentation/SmartStore.Web/Views/Order/Details.cshtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Presentation/SmartStore.Web/Views/Order/Details.cshtml b/src/Presentation/SmartStore.Web/Views/Order/Details.cshtml index 10932dd3d0..fb55499a91 100644 --- a/src/Presentation/SmartStore.Web/Views/Order/Details.cshtml +++ b/src/Presentation/SmartStore.Web/Views/Order/Details.cshtml @@ -472,7 +472,7 @@ @if (Model.ShowProductBundleImages) {
- @if (item.Picture.ImageUrl.HasValue() && !item.HideThumbnail) + @if (item.Picture != null && item.Picture.ImageUrl.HasValue() && !item.HideThumbnail) { @item.Picture.AlternateText } From 2aef31287f37b8147902d972569c81c17c4ae093 Mon Sep 17 00:00:00 2001 From: Marcus Gesing Date: Sun, 11 Apr 2021 11:47:22 +0200 Subject: [PATCH 007/101] Fixes HttpAntiForgeryException when applying a live currency rate --- .../Administration/Controllers/CurrencyController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Presentation/SmartStore.Web/Administration/Controllers/CurrencyController.cs b/src/Presentation/SmartStore.Web/Administration/Controllers/CurrencyController.cs index 944150f302..1af8691b17 100644 --- a/src/Presentation/SmartStore.Web/Administration/Controllers/CurrencyController.cs +++ b/src/Presentation/SmartStore.Web/Administration/Controllers/CurrencyController.cs @@ -246,7 +246,7 @@ public ActionResult List(bool liveRates = false) } [Permission(Permissions.Configuration.Currency.Update)] - [ValidateAntiForgeryToken] + //[ValidateAntiForgeryToken] public ActionResult ApplyRate(string currencyCode, decimal rate) { var currency = _currencyService.GetCurrencyByCode(currencyCode); From fe4a039964d1fdfd6d0de8098c835b2a0897436e Mon Sep 17 00:00:00 2001 From: Michael Herzog Date: Mon, 19 Apr 2021 11:19:00 +0200 Subject: [PATCH 008/101] Fixed widget zone rendering problem with PDF documents --- src/Plugins/SmartStore.DevTools/Filters/WidgetZoneFilter.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Plugins/SmartStore.DevTools/Filters/WidgetZoneFilter.cs b/src/Plugins/SmartStore.DevTools/Filters/WidgetZoneFilter.cs index 299f2a3d3d..498341f28e 100644 --- a/src/Plugins/SmartStore.DevTools/Filters/WidgetZoneFilter.cs +++ b/src/Plugins/SmartStore.DevTools/Filters/WidgetZoneFilter.cs @@ -101,6 +101,10 @@ private bool ShouldRender(HttpContextBase ctx) { if (!_services.WorkContext.CurrentCustomer.IsAdmin()) { + if (ctx.Request.Url.AbsolutePath == "/common/pdfreceiptfooter" || ctx.Request.Url.AbsolutePath == "/common/pdfreceiptheader") + { + return false; + } return ctx.Request.IsLocal; } From 5b4e60ae7124df0898975cb8f994f9f23db1fae3 Mon Sep 17 00:00:00 2001 From: Marcus Gesing Date: Mon, 10 May 2021 19:14:02 +0200 Subject: [PATCH 009/101] Fixed text issue in private messages of forum --- .../SmartStore.Web/Views/PrivateMessages/View.cshtml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Presentation/SmartStore.Web/Views/PrivateMessages/View.cshtml b/src/Presentation/SmartStore.Web/Views/PrivateMessages/View.cshtml index d87dd93ae5..2425199937 100644 --- a/src/Presentation/SmartStore.Web/Views/PrivateMessages/View.cshtml +++ b/src/Presentation/SmartStore.Web/Views/PrivateMessages/View.cshtml @@ -1,5 +1,6 @@ @model PrivateMessageModel @using SmartStore.Web.Models.PrivateMessages; +@using SmartStore.Core.Html; @{ Layout = "_Layout"; Html.AddTitleParts(T("PageTitle.ViewPM").Text); @@ -28,7 +29,7 @@
- @Html.Raw(Model.Message) + @Html.Raw(HtmlUtils.SanitizeHtml(Model.Message, true))
From ae03d45e23734555a2aef0b0c3d33c21e076c20f Mon Sep 17 00:00:00 2001 From: Marcel Schmidt Date: Mon, 10 May 2021 20:10:01 +0200 Subject: [PATCH 010/101] Fixed text issue in forum posts --- .../Views/Boards/Partials/_ForumPost.cshtml | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/Presentation/SmartStore.Web/Views/Boards/Partials/_ForumPost.cshtml b/src/Presentation/SmartStore.Web/Views/Boards/Partials/_ForumPost.cshtml index 8cc24f3ac5..20b00c4bcd 100644 --- a/src/Presentation/SmartStore.Web/Views/Boards/Partials/_ForumPost.cshtml +++ b/src/Presentation/SmartStore.Web/Views/Boards/Partials/_ForumPost.cshtml @@ -1,4 +1,6 @@ @using SmartStore.Web.Models.Boards; +@using SmartStore.Core.Html; + @model ForumPostModel @Html.Raw("".FormatInvariant(Model.Id)) @@ -22,7 +24,7 @@ @Html.ActionLink(T("Forum.EditPost").Text, "PostEdit", new { id = Model.Id }, new { @class = "edit-post-link-button" }) } - + @if (Model.IsCurrentCustomerAllowedToDeletePost) { @@ -49,38 +51,38 @@ @if (Model.IsCustomerForumModerator) {
- @T("Forum.Status"): - @T("Forum.Moderator") + @T("Forum.Status"): + @T("Forum.Moderator")
} @if (Model.ShowCustomersPostCount) {
- @T("Forum.TotalPosts"): - @Model.ForumPostCount.ToString("N0") + @T("Forum.TotalPosts"): + @Model.ForumPostCount.ToString("N0")
} @if (Model.ShowCustomersJoinDate && !Model.IsCustomerGuest) {
@T("Forum.Joined"): - @Model.CustomerJoinDate.ToNativeString("d") + @Model.CustomerJoinDate.ToNativeString("d")
} @if (Model.ShowCustomersLocation && !Model.IsCustomerGuest && Model.CustomerLocation.HasValue()) {
@T("Forum.Location"): - @Model.CustomerLocation + @Model.CustomerLocation
} @if (Model.AllowPrivateMessages && !Model.IsCustomerGuest) - { + { @T("Forum.PrivateMessages.PM") - } + }
@@ -88,17 +90,17 @@
@T("Forum.Posted"): - @Model.PostCreatedOnStr + @Model.PostCreatedOnStr · - @Model.VoteCount.ToString("N0") + @Model.VoteCount.ToString("N0")
- @Html.Raw(Model.FormattedText) + @Html.Raw(HtmlUtils.SanitizeHtml(Model.FormattedText))
@Html.Hidden("Id", Model.Id)
From 9eebbb975f1cef238eb10cd53f39ddbe7b6303ce Mon Sep 17 00:00:00 2001 From: Marcus Gesing Date: Wed, 12 May 2021 13:40:53 +0200 Subject: [PATCH 011/101] Minor export fix --- .../DataExchange/Export/DynamicEntityHelper.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Libraries/SmartStore.Services/DataExchange/Export/DynamicEntityHelper.cs b/src/Libraries/SmartStore.Services/DataExchange/Export/DynamicEntityHelper.cs index 14cc1d7b56..98700180d4 100644 --- a/src/Libraries/SmartStore.Services/DataExchange/Export/DynamicEntityHelper.cs +++ b/src/Libraries/SmartStore.Services/DataExchange/Export/DynamicEntityHelper.cs @@ -353,7 +353,7 @@ private dynamic ToDynamic(DataExporterContext ctx, Address address) dynamic sp = new DynamicEntity(address.StateProvince); var translations = ctx.Translations[nameof(StateProvince)]; - sp.Name = translations.GetValue(ctx.LanguageId, address.StateProvince.Id, nameof(StateProvince)) ?? address.StateProvince.Name; + sp.Name = translations.GetValue(ctx.LanguageId, address.StateProvince.Id, nameof(StateProvince.Name)) ?? address.StateProvince.Name; sp._Localized = GetLocalized(ctx, translations, null, address.StateProvince, x => x.Name); result.StateProvince = sp; From d185d791920e93fdab5e9dfccbea2682956e16bf Mon Sep 17 00:00:00 2001 From: Marcus Gesing Date: Wed, 12 May 2021 13:54:05 +0200 Subject: [PATCH 012/101] PayPal Express: fixed order may have been placed even if DoExpressCheckoutPayment failed --- .../Providers/PayPalExpressProvider.cs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/Plugins/SmartStore.PayPal/Providers/PayPalExpressProvider.cs b/src/Plugins/SmartStore.PayPal/Providers/PayPalExpressProvider.cs index 304dd74102..ecc68c7cd0 100644 --- a/src/Plugins/SmartStore.PayPal/Providers/PayPalExpressProvider.cs +++ b/src/Plugins/SmartStore.PayPal/Providers/PayPalExpressProvider.cs @@ -123,7 +123,17 @@ public override ProcessPaymentResult ProcessPayment(ProcessPaymentRequest proces { result.NewPaymentStatus = PaymentStatus.Pending; - result.Errors.Each(x => result.AddError(x)); + if (doPayment?.Errors?.Any() ?? false) + { + foreach (var error in doPayment.Errors) + { + result.AddError(string.Format("{0} | {1} | {2}", error.ErrorCode, error.ShortMessage, error.LongMessage)); + } + } + else + { + result.AddError(T("Admin.Common.UnknownError") + " " + doPayment.Ack.ToString()); + } } return result; From 30f66021fd24da35a618f39a2f93c0fa0021c37f Mon Sep 17 00:00:00 2001 From: Marcus Gesing Date: Tue, 18 May 2021 15:12:05 +0200 Subject: [PATCH 013/101] Fixes 'token is not defined' when deleting an export deployment --- .../Administration/Views/Export/_Tab.Deployment.cshtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Presentation/SmartStore.Web/Administration/Views/Export/_Tab.Deployment.cshtml b/src/Presentation/SmartStore.Web/Administration/Views/Export/_Tab.Deployment.cshtml index 85a4192186..0921d8cba9 100644 --- a/src/Presentation/SmartStore.Web/Administration/Views/Export/_Tab.Deployment.cshtml +++ b/src/Presentation/SmartStore.Web/Administration/Views/Export/_Tab.Deployment.cshtml @@ -276,7 +276,7 @@ // delete deployment $('#export-deployment-list').find('.delete-depoyment').click(function () { $(this).doPostData({ - data: { "__RequestVerificationToken": token }, + data: { "__RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() }, ask: @T("Admin.Common.AskToProceed").JsText }); }); From 2af3bfc368a9c700564174a3493cefc92af1ed57 Mon Sep 17 00:00:00 2001 From: Marcus Gesing Date: Tue, 18 May 2021 16:13:17 +0200 Subject: [PATCH 014/101] Fixed canonical HTML link for blog, forum and news page --- src/Presentation/SmartStore.Web/Controllers/BlogController.cs | 2 +- src/Presentation/SmartStore.Web/Views/Boards/Forum.cshtml | 2 +- src/Presentation/SmartStore.Web/Views/News/List.cshtml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Presentation/SmartStore.Web/Controllers/BlogController.cs b/src/Presentation/SmartStore.Web/Controllers/BlogController.cs index fed1a38bcf..a059c6c674 100644 --- a/src/Presentation/SmartStore.Web/Controllers/BlogController.cs +++ b/src/Presentation/SmartStore.Web/Controllers/BlogController.cs @@ -338,7 +338,7 @@ public ActionResult List(BlogPagingFilteringModel command) if (_seoSettings.CanonicalUrlsEnabled) { - var url = Url.RouteUrl("Blog", Request.Url.Scheme); + var url = Url.RouteUrl("Blog", null, Request.Url.Scheme); _pageAssetsBuilder.AddCanonicalUrlParts(url); } diff --git a/src/Presentation/SmartStore.Web/Views/Boards/Forum.cshtml b/src/Presentation/SmartStore.Web/Views/Boards/Forum.cshtml index 0723caade4..854a856451 100644 --- a/src/Presentation/SmartStore.Web/Views/Boards/Forum.cshtml +++ b/src/Presentation/SmartStore.Web/Views/Boards/Forum.cshtml @@ -14,7 +14,7 @@ var canonicalUrlsEnabled = EngineContext.Current.Resolve().CanonicalUrlsEnabled; if (canonicalUrlsEnabled) { - var forumUrl = Url.RouteUrl("Boards", this.Request.Url.Scheme); + var forumUrl = Url.RouteUrl("Boards", null, this.Request.Url.Scheme); Html.AddCanonicalUrlParts(forumUrl); } diff --git a/src/Presentation/SmartStore.Web/Views/News/List.cshtml b/src/Presentation/SmartStore.Web/Views/News/List.cshtml index 4904460e6f..e85f88e2e5 100644 --- a/src/Presentation/SmartStore.Web/Views/News/List.cshtml +++ b/src/Presentation/SmartStore.Web/Views/News/List.cshtml @@ -12,7 +12,7 @@ var canonicalUrlsEnabled = EngineContext.Current.Resolve().CanonicalUrlsEnabled; if (canonicalUrlsEnabled) { - var newsUrl = Url.RouteUrl("NewsArchive", this.Request.Url.Scheme); + var newsUrl = Url.RouteUrl("NewsArchive", null, this.Request.Url.Scheme); Html.AddCanonicalUrlParts(newsUrl); } } From 0ff2a9f7f06fc93d288cb25a8520c6b1abd05f9a Mon Sep 17 00:00:00 2001 From: Marcus Gesing Date: Wed, 19 May 2021 13:34:04 +0200 Subject: [PATCH 015/101] Cache needs to be cleared after category import --- .../Catalog/Importer/CategoryImporter.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Libraries/SmartStore.Services/Catalog/Importer/CategoryImporter.cs b/src/Libraries/SmartStore.Services/Catalog/Importer/CategoryImporter.cs index 324b9261f3..0e7e928198 100644 --- a/src/Libraries/SmartStore.Services/Catalog/Importer/CategoryImporter.cs +++ b/src/Libraries/SmartStore.Services/Catalog/Importer/CategoryImporter.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Linq.Expressions; using SmartStore.Core.Async; +using SmartStore.Core.Caching; using SmartStore.Core.Data; using SmartStore.Core.Domain.Catalog; using SmartStore.Core.Domain.DataExchange; @@ -26,6 +27,7 @@ public class CategoryImporter : EntityImporterBase private readonly IFolderService _folderService; private readonly ILocalizedEntityService _localizedEntityService; private readonly FileDownloadManager _fileDownloadManager; + private readonly ICacheManager _cache; private static readonly Dictionary>> _localizableProperties = new Dictionary>> { @@ -44,7 +46,8 @@ public CategoryImporter( IMediaService mediaService, IFolderService folderService, ILocalizedEntityService localizedEntityService, - FileDownloadManager fileDownloadManager) + FileDownloadManager fileDownloadManager, + ICacheManager cache) { _categoryRepository = categoryRepository; _categoryTemplateService = categoryTemplateService; @@ -52,6 +55,7 @@ public CategoryImporter( _folderService = folderService; _localizedEntityService = localizedEntityService; _fileDownloadManager = fileDownloadManager; + _cache = cache; } protected override void Import(ImportExecuteContext context) @@ -175,6 +179,9 @@ protected override void Import(ImportExecuteContext context) } } } + + // Hooks are disabled but category tree may have changed. + _cache.Clear(); } protected virtual int ProcessPictures(ImportExecuteContext context, IEnumerable> batch) From 78ef5b652e120f23d59032638d2751efa31f2124 Mon Sep 17 00:00:00 2001 From: Marcel Schmidt Date: Fri, 28 May 2021 16:09:20 +0200 Subject: [PATCH 016/101] Updated documentation link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 35f3686a9d..f21249db24 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,7 @@ The state-of-the-art architecture of Smartstore - with `ASP.NET 4.5` + `MVC 5`, * **Forum:** [http://community.smartstore.com](http://community.smartstore.com) * **Marketplace:** [http://community.smartstore.com/marketplace](http://community.smartstore.com/marketplace) * **Translations:** [http://translate.smartstore.com/](http://translate.smartstore.com/) -* **Documentation:** [Smartstore Documentation in English](http://docs.smartstore.com/display/SMNET/SmartStore.NET+Documentation+Home) +* **Documentation:** [Smartstore Documentation in English](http://docs.smartstore.com/display/SMNET/Smartstore+Documentation+Home) * **Developer Extension:** [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=SmartStoreAG.Smartstore)

 

From 6a804c4c5f58c221c69cfc5f1fb3130f054ba0cd Mon Sep 17 00:00:00 2001 From: zihniartar Date: Fri, 28 May 2021 16:12:45 +0200 Subject: [PATCH 017/101] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f21249db24..f0eb0bbcc5 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@

Try Online ∙ - Docs ∙ + DocsForumMarketplaceTranslations @@ -54,7 +54,7 @@ The state-of-the-art architecture of Smartstore - with `ASP.NET 4.5` + `MVC 5`, * **Forum:** [http://community.smartstore.com](http://community.smartstore.com) * **Marketplace:** [http://community.smartstore.com/marketplace](http://community.smartstore.com/marketplace) * **Translations:** [http://translate.smartstore.com/](http://translate.smartstore.com/) -* **Documentation:** [Smartstore Documentation in English](http://docs.smartstore.com/display/SMNET/Smartstore+Documentation+Home) +* **Documentation:** [Smartstore Documentation in English](http://docs.smartstore.com/display/SMNET) * **Developer Extension:** [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=SmartStoreAG.Smartstore)

 

From b9bcc6224211b0355b86a44d81c5b5713b596034 Mon Sep 17 00:00:00 2001 From: Michael Herzog Date: Mon, 7 Jun 2021 10:30:34 +0200 Subject: [PATCH 018/101] Added more anonymizable properties (cherry picked from commit ebb302e1d88bd8b0bb72520221cc698a2f16e2dc) --- src/Libraries/SmartStore.Services/Customers/GdprTool.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Libraries/SmartStore.Services/Customers/GdprTool.cs b/src/Libraries/SmartStore.Services/Customers/GdprTool.cs index 2b6fa43a63..45fecf45a6 100644 --- a/src/Libraries/SmartStore.Services/Customers/GdprTool.cs +++ b/src/Libraries/SmartStore.Services/Customers/GdprTool.cs @@ -279,6 +279,10 @@ public virtual void AnonymizeCustomer(Customer customer, bool pseudomyzeContent) AnonymizeData(customer, x => x.Username, IdentifierDataType.UserName, language); AnonymizeData(customer, x => x.Email, IdentifierDataType.EmailAddress, language); AnonymizeData(customer, x => x.LastIpAddress, IdentifierDataType.IpAddress, language); + AnonymizeData(customer, x => x.FirstName, IdentifierDataType.Name, language); + AnonymizeData(customer, x => x.LastName, IdentifierDataType.Name, language); + AnonymizeData(customer, x => x.BirthDate, IdentifierDataType.DateTime, language); + if (pseudomyzeContent) { AnonymizeData(customer, x => x.AdminComment, IdentifierDataType.LongText, language); From 44ac7bf9c9cf899718453f1a3ff4f975d353beb6 Mon Sep 17 00:00:00 2001 From: Michael Herzog Date: Thu, 10 Jun 2021 10:52:14 +0200 Subject: [PATCH 019/101] Always use configured SSL setting else files can't be downloaded --- .../SmartStore.Services/Catalog/ProductAttributeFormatter.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Libraries/SmartStore.Services/Catalog/ProductAttributeFormatter.cs b/src/Libraries/SmartStore.Services/Catalog/ProductAttributeFormatter.cs index 2877c4800f..8e54c8d8a1 100644 --- a/src/Libraries/SmartStore.Services/Catalog/ProductAttributeFormatter.cs +++ b/src/Libraries/SmartStore.Services/Catalog/ProductAttributeFormatter.cs @@ -145,7 +145,7 @@ public string FormatAttributes( if (allowHyperlinks) { - var downloadLink = string.Format("{0}download/getfileupload/?downloadId={1}", _webHelper.GetStoreLocation(false), download.DownloadGuid); + var downloadLink = string.Format("{0}download/getfileupload/?downloadId={1}", _webHelper.GetStoreLocation(), download.DownloadGuid); attributeText = string.Format("{1}", downloadLink, fileName); } else From 1e9b8c33f4e30bb2299b26e4710f2cdf95a84551 Mon Sep 17 00:00:00 2001 From: Marcus Gesing Date: Sat, 12 Jun 2021 10:00:38 +0200 Subject: [PATCH 020/101] Removes a duplicate statement --- .../Administration/Controllers/ExportController.cs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/Presentation/SmartStore.Web/Administration/Controllers/ExportController.cs b/src/Presentation/SmartStore.Web/Administration/Controllers/ExportController.cs index 0f59008923..66b1a53782 100644 --- a/src/Presentation/SmartStore.Web/Administration/Controllers/ExportController.cs +++ b/src/Presentation/SmartStore.Web/Administration/Controllers/ExportController.cs @@ -495,10 +495,6 @@ private void PrepareProfileModelForEdit(ExportProfileModel model, ExportProfile model.Filter.SelectedCategories = new List(); } - model.Filter.AvailableManufacturers = allManufacturers - .Select(x => new SelectListItem { Text = x.Name, Value = x.Id.ToString() }) - .ToList(); - model.Filter.AvailableManufacturers = allManufacturers .Select(x => new SelectListItem { Text = x.Name, Value = x.Id.ToString() }) .ToList(); From 1efa13bca6dd45be75f17d31c1f51eb01cc799e9 Mon Sep 17 00:00:00 2001 From: zihniartar Date: Tue, 15 Jun 2021 14:38:08 +0200 Subject: [PATCH 021/101] Update README.md Added Azure Marketplace link --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f0eb0bbcc5..acf1060718 100644 --- a/README.md +++ b/README.md @@ -56,6 +56,7 @@ The state-of-the-art architecture of Smartstore - with `ASP.NET 4.5` + `MVC 5`, * **Translations:** [http://translate.smartstore.com/](http://translate.smartstore.com/) * **Documentation:** [Smartstore Documentation in English](http://docs.smartstore.com/display/SMNET) * **Developer Extension:** [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=SmartStoreAG.Smartstore) +* **Azure Marketplace:** [Azure Marketplace](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/smartstore-ag.smartstorenet?tab=Overview)

 

From 8de0a6cbdf090ef7c33fb54a5a0c2a8fd5ed21c8 Mon Sep 17 00:00:00 2001 From: Marcus Gesing Date: Mon, 21 Jun 2021 10:38:51 +0200 Subject: [PATCH 022/101] Fixes missing images in product PDF export (due to custom projection picture size) --- .../DataExchange/Export/DynamicEntityHelper.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/Libraries/SmartStore.Services/DataExchange/Export/DynamicEntityHelper.cs b/src/Libraries/SmartStore.Services/DataExchange/Export/DynamicEntityHelper.cs index 98700180d4..946769b317 100644 --- a/src/Libraries/SmartStore.Services/DataExchange/Export/DynamicEntityHelper.cs +++ b/src/Libraries/SmartStore.Services/DataExchange/Export/DynamicEntityHelper.cs @@ -728,8 +728,14 @@ private dynamic ToDynamic(DataExporterContext ctx, Product product, bool isParen product.MergeWithCombination(productContext.Combination); var numberOfPictures = ctx.Projection.NumberOfMediaFiles ?? int.MaxValue; - var productDetailsPictureSize = ctx.Projection.PictureSize > 0 ? ctx.Projection.PictureSize : _mediaSettings.Value.ProductDetailsPictureSize; - var imageQuery = ctx.Projection.PictureSize > 0 ? new ProcessImageQuery { MaxWidth = ctx.Projection.PictureSize } : null; + var productDetailsPictureSize = _mediaSettings.Value.ProductDetailsPictureSize; + ProcessImageQuery imageQuery = null; + + if (ctx.Projection.PictureSize > 0) + { + productDetailsPictureSize = _mediaSettings.Value.GetNextValidThumbnailSize(ctx.Projection.PictureSize); + imageQuery = new ProcessImageQuery { MaxWidth = productDetailsPictureSize }; + } IEnumerable productPictures = ctx.ProductExportContext.ProductPictures.GetOrLoad(product.Id); var productManufacturers = ctx.ProductExportContext.ProductManufacturers.GetOrLoad(product.Id); From 10fe72abf5435004f0902230de4790eca5050f94 Mon Sep 17 00:00:00 2001 From: Marcus Gesing Date: Mon, 21 Jun 2021 12:06:41 +0200 Subject: [PATCH 023/101] Fixes discount issue of attribute price adjustments with linked products --- .../SmartStore.Services/Catalog/PriceCalculationService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Libraries/SmartStore.Services/Catalog/PriceCalculationService.cs b/src/Libraries/SmartStore.Services/Catalog/PriceCalculationService.cs index 1c1c86a845..e0454c592a 100644 --- a/src/Libraries/SmartStore.Services/Catalog/PriceCalculationService.cs +++ b/src/Libraries/SmartStore.Services/Catalog/PriceCalculationService.cs @@ -1035,7 +1035,7 @@ public virtual decimal GetProductVariantAttributeValuePriceAdjustment(ProductVar if (linkedProduct != null) { - var productPrice = GetFinalPrice(linkedProduct, true) * attributeValue.Quantity; + var productPrice = GetFinalPrice(linkedProduct, false) * attributeValue.Quantity; return productPrice; } } From e7488f48e2105c619227d8ef09988bfd1c2e63b1 Mon Sep 17 00:00:00 2001 From: Murat Cakir Date: Mon, 21 Jun 2021 21:27:09 +0200 Subject: [PATCH 024/101] MemoryCache: don't release SemaphoreSlim if current count is > 0. --- .../SmartStore.Core/Utilities/Threading/KeyedLock.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/Libraries/SmartStore.Core/Utilities/Threading/KeyedLock.cs b/src/Libraries/SmartStore.Core/Utilities/Threading/KeyedLock.cs index 158dff77d1..3837a2a775 100644 --- a/src/Libraries/SmartStore.Core/Utilities/Threading/KeyedLock.cs +++ b/src/Libraries/SmartStore.Core/Utilities/Threading/KeyedLock.cs @@ -114,7 +114,12 @@ public void Dispose() _locks.TryRemove(_item.Key, out _); } - _item.Semaphore.Release(); + if (_item.Semaphore.CurrentCount == 0) + { + _item.Semaphore.Release(); + } + + _item.Semaphore.Dispose(); _item = null; } } From ff95b76a675875a1c79f3dd7af11b4f230e9baf6 Mon Sep 17 00:00:00 2001 From: Marcus Gesing Date: Tue, 22 Jun 2021 10:37:52 +0200 Subject: [PATCH 025/101] Fixes rare forum exception "The value must not be NULL or empty. Parameter name: linkText" --- .../SmartStore.Web/Views/Boards/Partials/LastPost.cshtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Presentation/SmartStore.Web/Views/Boards/Partials/LastPost.cshtml b/src/Presentation/SmartStore.Web/Views/Boards/Partials/LastPost.cshtml index 653e2b96f0..7d34a4e844 100644 --- a/src/Presentation/SmartStore.Web/Views/Boards/Partials/LastPost.cshtml +++ b/src/Presentation/SmartStore.Web/Views/Boards/Partials/LastPost.cshtml @@ -20,7 +20,7 @@ @T("Forum.By"): @if (Model.AllowViewingProfiles && !Model.IsCustomerGuest) { - @Html.RouteLink(Model.CustomerName, "CustomerProfile", new { Id = Model.CustomerId }) + @Html.RouteLink(Model.CustomerName.NaIfEmpty(), "CustomerProfile", new { Id = Model.CustomerId }) } else { From 36d763fbf4b9215ed2a2683e020146ef28430cec Mon Sep 17 00:00:00 2001 From: Murat Cakir Date: Tue, 22 Jun 2021 19:39:45 +0200 Subject: [PATCH 026/101] Don't dispose semaphore --- src/Libraries/SmartStore.Core/Utilities/Threading/KeyedLock.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Libraries/SmartStore.Core/Utilities/Threading/KeyedLock.cs b/src/Libraries/SmartStore.Core/Utilities/Threading/KeyedLock.cs index 3837a2a775..adaaec5992 100644 --- a/src/Libraries/SmartStore.Core/Utilities/Threading/KeyedLock.cs +++ b/src/Libraries/SmartStore.Core/Utilities/Threading/KeyedLock.cs @@ -119,7 +119,7 @@ public void Dispose() _item.Semaphore.Release(); } - _item.Semaphore.Dispose(); + //_item.Semaphore.Dispose(); _item = null; } } From 6e6d28fde3cecfc5f36326e1686f10298bce8ae1 Mon Sep 17 00:00:00 2001 From: Marcus Gesing Date: Wed, 23 Jun 2021 11:09:00 +0200 Subject: [PATCH 027/101] Customer export filter for shipping and billing country was wrong. Limit was ignored in export preview. --- .../DataExchange/Export/DataExporter.cs | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/Libraries/SmartStore.Services/DataExchange/Export/DataExporter.cs b/src/Libraries/SmartStore.Services/DataExchange/Export/DataExporter.cs index c7464e9272..c1f09c939b 100644 --- a/src/Libraries/SmartStore.Services/DataExchange/Export/DataExporter.cs +++ b/src/Libraries/SmartStore.Services/DataExchange/Export/DataExporter.cs @@ -1225,12 +1225,12 @@ private IQueryable GetCustomerQuery(DataExporterContext ctx, int? skip if (ctx.Filter.BillingCountryIds != null && ctx.Filter.BillingCountryIds.Any()) { - query = query.Where(x => x.BillingAddress != null && ctx.Filter.BillingCountryIds.Contains(x.BillingAddress.Id)); + query = query.Where(x => x.BillingAddress != null && ctx.Filter.BillingCountryIds.Contains(x.BillingAddress.CountryId ?? 0)); } if (ctx.Filter.ShippingCountryIds != null && ctx.Filter.ShippingCountryIds.Any()) { - query = query.Where(x => x.ShippingAddress != null && ctx.Filter.ShippingCountryIds.Contains(x.ShippingAddress.Id)); + query = query.Where(x => x.ShippingAddress != null && ctx.Filter.ShippingCountryIds.Contains(x.ShippingAddress.CountryId ?? 0)); } if (ctx.Filter.LastActivityFrom.HasValue) @@ -2060,8 +2060,11 @@ public DataExportPreviewResult Preview(DataExportRequest request, int pageIndex) var cancellation = new CancellationTokenSource(TimeSpan.FromMinutes(5.0)); var ctx = new DataExporterContext(request, cancellation.Token, true); - var unused = Init(ctx); - var skip = Math.Max(ctx.Request.Profile.Offset, 0) + (pageIndex * PageSize); + Init(ctx); + + var limit = Math.Max(request.Profile.Limit, 0); + var take = limit > 0 && limit < PageSize ? limit : PageSize; + var skip = Math.Max(ctx.Request.Profile.Offset, 0) + (pageIndex * take); if (!HasPermission(ctx)) { @@ -2074,43 +2077,43 @@ public DataExportPreviewResult Preview(DataExportRequest request, int pageIndex) { case ExportEntityType.Product: { - var items = GetProductQuery(ctx, skip, PageSize).ToList(); + var items = GetProductQuery(ctx, skip, take).ToList(); items.Each(x => result.Data.Add(ToDynamic(ctx, x))); } break; case ExportEntityType.Order: { - var items = GetOrderQuery(ctx, skip, PageSize).ToList(); + var items = GetOrderQuery(ctx, skip, take).ToList(); items.Each(x => result.Data.Add(ToDynamic(ctx, x))); } break; case ExportEntityType.Category: { - var items = GetCategoryQuery(ctx, skip, PageSize).ToList(); + var items = GetCategoryQuery(ctx, skip, take).ToList(); items.Each(x => result.Data.Add(ToDynamic(ctx, x))); } break; case ExportEntityType.Manufacturer: { - var items = GetManufacturerQuery(ctx, skip, PageSize).ToList(); + var items = GetManufacturerQuery(ctx, skip, take).ToList(); items.Each(x => result.Data.Add(ToDynamic(ctx, x))); } break; case ExportEntityType.Customer: { - var items = GetCustomerQuery(ctx, skip, PageSize).ToList(); + var items = GetCustomerQuery(ctx, skip, take).ToList(); items.Each(x => result.Data.Add(ToDynamic(ctx, x))); } break; case ExportEntityType.NewsLetterSubscription: { - var items = GetNewsLetterSubscriptionQuery(ctx, skip, PageSize).ToList(); + var items = GetNewsLetterSubscriptionQuery(ctx, skip, take).ToList(); items.Each(x => result.Data.Add(ToDynamic(ctx, x))); } break; case ExportEntityType.ShoppingCartItem: { - var items = GetShoppingCartItemQuery(ctx, skip, PageSize).ToList(); + var items = GetShoppingCartItemQuery(ctx, skip, take).ToList(); items.Each(x => result.Data.Add(ToDynamic(ctx, x))); } break; From bd89638ff66a842ac9f93a6656ebab53475778da Mon Sep 17 00:00:00 2001 From: Marcus Gesing Date: Mon, 5 Jul 2021 10:35:44 +0200 Subject: [PATCH 028/101] Fix for attribute text input with commas was truncated on the product detail page --- .../Views/Shared/ChoiceTemplates/Choice.TextArea.cshtml | 2 +- .../Views/Shared/ChoiceTemplates/Choice.TextBox.cshtml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Presentation/SmartStore.Web/Views/Shared/ChoiceTemplates/Choice.TextArea.cshtml b/src/Presentation/SmartStore.Web/Views/Shared/ChoiceTemplates/Choice.TextArea.cshtml index bb7680ffc0..9a32a18a77 100644 --- a/src/Presentation/SmartStore.Web/Views/Shared/ChoiceTemplates/Choice.TextArea.cshtml +++ b/src/Presentation/SmartStore.Web/Views/Shared/ChoiceTemplates/Choice.TextArea.cshtml @@ -7,4 +7,4 @@ var placeholder = Model.Description.RemoveHtml().TrimSafe(); } - \ No newline at end of file + \ No newline at end of file diff --git a/src/Presentation/SmartStore.Web/Views/Shared/ChoiceTemplates/Choice.TextBox.cshtml b/src/Presentation/SmartStore.Web/Views/Shared/ChoiceTemplates/Choice.TextBox.cshtml index e47ee49ec4..84fe5ef6ec 100644 --- a/src/Presentation/SmartStore.Web/Views/Shared/ChoiceTemplates/Choice.TextBox.cshtml +++ b/src/Presentation/SmartStore.Web/Views/Shared/ChoiceTemplates/Choice.TextBox.cshtml @@ -7,4 +7,4 @@ var placeholder = Model.Description.RemoveHtml().TrimSafe(); } - \ No newline at end of file + \ No newline at end of file From eb8ad68351beca2482b742e0aa3c6caf4040abc5 Mon Sep 17 00:00:00 2001 From: Michael Herzog Date: Thu, 22 Jul 2021 20:50:32 +0200 Subject: [PATCH 029/101] Fixes display problem with uploaded media files which contain a + character --- src/Presentation/SmartStore.Web/Web.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Presentation/SmartStore.Web/Web.config b/src/Presentation/SmartStore.Web/Web.config index 4ef39c9998..2fcfc3470e 100644 --- a/src/Presentation/SmartStore.Web/Web.config +++ b/src/Presentation/SmartStore.Web/Web.config @@ -206,7 +206,7 @@ - + From da96154f3559b5cf5eb4f94cdbc9330d2a8b9c34 Mon Sep 17 00:00:00 2001 From: mgesing Date: Fri, 13 Aug 2021 15:13:04 +0200 Subject: [PATCH 030/101] Fixed the uploaded file of a product attribute is lost as soon as another attribute is selected --- .../Views/Shared/ChoiceTemplates/Choice.FileUpload.cshtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Presentation/SmartStore.Web/Views/Shared/ChoiceTemplates/Choice.FileUpload.cshtml b/src/Presentation/SmartStore.Web/Views/Shared/ChoiceTemplates/Choice.FileUpload.cshtml index fa1c08e954..988f78cd63 100644 --- a/src/Presentation/SmartStore.Web/Views/Shared/ChoiceTemplates/Choice.FileUpload.cshtml +++ b/src/Presentation/SmartStore.Web/Views/Shared/ChoiceTemplates/Choice.FileUpload.cshtml @@ -15,7 +15,7 @@
- +
@(Html.SmartStore().FileUploader() .Name(clientId) From 8c9d1b4fef430a667702049b883e2110aa64f7e8 Mon Sep 17 00:00:00 2001 From: Michael Herzog Date: Mon, 16 Aug 2021 19:20:43 +0200 Subject: [PATCH 031/101] Minor correction --- .../Administration/Views/Setting/CustomerUser.cshtml | 2 +- 1 file changed, 1 insertion(+), 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 13295bb750..93d1cb2167 100644 --- a/src/Presentation/SmartStore.Web/Administration/Views/Setting/CustomerUser.cshtml +++ b/src/Presentation/SmartStore.Web/Administration/Views/Setting/CustomerUser.cshtml @@ -920,7 +920,7 @@