From fe4a116cb44b2df51d77c2d596de92f50c1e6139 Mon Sep 17 00:00:00 2001 From: Hannan Azam Khan Date: Fri, 6 Jan 2017 01:37:18 +0500 Subject: [PATCH 1/4] [Fixes #6316] Update Alias when importing AutoroutePart (#7485) Fixes #6316 --- .../Implementation/Holder/AliasHolder.cs | 22 ++++++++++++++----- .../Views/Admin/IndexManaged.cshtml | 1 - 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.Alias/Implementation/Holder/AliasHolder.cs b/src/Orchard.Web/Modules/Orchard.Alias/Implementation/Holder/AliasHolder.cs index 59aaab795..c396afd24 100644 --- a/src/Orchard.Web/Modules/Orchard.Alias/Implementation/Holder/AliasHolder.cs +++ b/src/Orchard.Web/Modules/Orchard.Alias/Implementation/Holder/AliasHolder.cs @@ -3,14 +3,26 @@ using System.Collections.Generic; using System.Linq; using System.Collections.Concurrent; using Orchard.Alias.Implementation.Map; +using Orchard.Alias.Implementation.Updater; namespace Orchard.Alias.Implementation.Holder { public class AliasHolder : IAliasHolder { - public AliasHolder() { + private readonly Lazy _aliasHolderUpdater; + private readonly ConcurrentDictionary _aliasMaps; + + public AliasHolder(Lazy aliasHolderUpdater) { + _aliasHolderUpdater = aliasHolderUpdater; _aliasMaps = new ConcurrentDictionary(StringComparer.OrdinalIgnoreCase); } - private readonly ConcurrentDictionary _aliasMaps; + private ConcurrentDictionary GetOrRefreshAliasMaps() { + lock (_aliasMaps) { + if (_aliasMaps.Count == 0) + _aliasHolderUpdater.Value.Refresh(); + } + + return _aliasMaps; + } public void SetAliases(IEnumerable aliases) { var grouped = aliases.GroupBy(alias => alias.Area ?? String.Empty, StringComparer.InvariantCultureIgnoreCase); @@ -25,7 +37,7 @@ namespace Orchard.Alias.Implementation.Holder { } public void SetAlias(AliasInfo alias) { - foreach (var map in _aliasMaps.Values) { + foreach (var map in GetOrRefreshAliasMaps().Values) { map.Remove(alias); } @@ -33,11 +45,11 @@ namespace Orchard.Alias.Implementation.Holder { } public IEnumerable GetMaps() { - return _aliasMaps.Values; + return GetOrRefreshAliasMaps().Values; } public AliasMap GetMap(string areaName) { - return _aliasMaps.GetOrAdd(areaName ?? String.Empty, key => new AliasMap(key)); + return GetOrRefreshAliasMaps().GetOrAdd(areaName ?? String.Empty, key => new AliasMap(key)); } public void RemoveAlias(AliasInfo aliasInfo) { diff --git a/src/Orchard.Web/Modules/Orchard.Alias/Views/Admin/IndexManaged.cshtml b/src/Orchard.Web/Modules/Orchard.Alias/Views/Admin/IndexManaged.cshtml index 6404513b8..7bcee7ab4 100644 --- a/src/Orchard.Web/Modules/Orchard.Alias/Views/Admin/IndexManaged.cshtml +++ b/src/Orchard.Web/Modules/Orchard.Alias/Views/Admin/IndexManaged.cshtml @@ -44,7 +44,6 @@ @T("Alias") @T("Route") -   @foreach (var aliasEntry in Model.AliasEntries) { From ddfcfd7379e592d0ca4f1703abe07edb2d3af4f7 Mon Sep 17 00:00:00 2001 From: Matt Varblow Date: Thu, 12 Jan 2017 15:08:40 -0500 Subject: [PATCH 2/4] Add UserParameters token object (#7482) Fixes #7481 --- .../Handlers/WorkflowUserEventHandler.cs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.Users/Handlers/WorkflowUserEventHandler.cs b/src/Orchard.Web/Modules/Orchard.Users/Handlers/WorkflowUserEventHandler.cs index 0164c86e1..2daf6b854 100644 --- a/src/Orchard.Web/Modules/Orchard.Users/Handlers/WorkflowUserEventHandler.cs +++ b/src/Orchard.Web/Modules/Orchard.Users/Handlers/WorkflowUserEventHandler.cs @@ -15,13 +15,19 @@ namespace Orchard.Users.Handlers { public void Creating(UserContext context) { _workflowManager.TriggerEvent("UserCreating", context.User, - () => new Dictionary {{"User", context}}); + () => new Dictionary { + {"User", context.User}, + {"UserParameters", context.UserParameters} + }); } public void Created(UserContext context) { _workflowManager.TriggerEvent("UserCreated", context.User, - () => new Dictionary {{"User", context}}); + () => new Dictionary { + {"User", context.User}, + {"UserParameters", context.UserParameters} + }); } public void LoggingIn(string userNameOrEmail, string password) { @@ -78,4 +84,4 @@ namespace Orchard.Users.Handlers { () => new Dictionary {{"User", user}}); } } -} \ No newline at end of file +} From 863d2e4e6bc28484b437bc8fd2200cf89f8b359c Mon Sep 17 00:00:00 2001 From: Benedek Farkas Date: Thu, 12 Jan 2017 21:13:42 +0100 Subject: [PATCH 3/4] Fixing that the content fields' values in a new content item were reset when building their editor (#7505) (#7507) Fixes #7505 --- src/Orchard.Web/Core/Common/Drivers/TextFieldDriver.cs | 2 +- .../Modules/Orchard.Fields/Drivers/BooleanFieldDriver.cs | 2 +- .../Modules/Orchard.Fields/Drivers/DateTimeFieldDriver.cs | 2 +- .../Orchard.Fields/Drivers/EnumerationFieldDriver.cs | 2 +- .../Modules/Orchard.Fields/Drivers/InputFieldDriver.cs | 2 +- .../Modules/Orchard.Fields/Drivers/LinkFieldDriver.cs | 8 ++++++-- .../Modules/Orchard.Fields/Drivers/NumericFieldDriver.cs | 2 +- 7 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/Orchard.Web/Core/Common/Drivers/TextFieldDriver.cs b/src/Orchard.Web/Core/Common/Drivers/TextFieldDriver.cs index 8b8b92abc..868b1c8ca 100644 --- a/src/Orchard.Web/Core/Common/Drivers/TextFieldDriver.cs +++ b/src/Orchard.Web/Core/Common/Drivers/TextFieldDriver.cs @@ -46,7 +46,7 @@ namespace Orchard.Core.Common.Drivers { return ContentShape("Fields_Common_Text_Edit", GetDifferentiator(field, part), () => { var settings = field.PartFieldDefinition.Settings.GetModel(); - var text = part.IsNew() ? settings.DefaultValue : field.Value; + var text = part.IsNew() && String.IsNullOrEmpty(field.Value) ? settings.DefaultValue : field.Value; var viewModel = new TextFieldDriverViewModel { Field = field, diff --git a/src/Orchard.Web/Modules/Orchard.Fields/Drivers/BooleanFieldDriver.cs b/src/Orchard.Web/Modules/Orchard.Fields/Drivers/BooleanFieldDriver.cs index 012009b37..116c3a013 100644 --- a/src/Orchard.Web/Modules/Orchard.Fields/Drivers/BooleanFieldDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Fields/Drivers/BooleanFieldDriver.cs @@ -36,7 +36,7 @@ namespace Orchard.Fields.Drivers { protected override DriverResult Editor(ContentPart part, BooleanField field, dynamic shapeHelper) { return ContentShape("Fields_Boolean_Edit", GetDifferentiator(field, part), () => { - if (part.IsNew()) { + if (part.IsNew() && field.Value == null) { var settings = field.PartFieldDefinition.Settings.GetModel(); field.Value = settings.DefaultValue; } diff --git a/src/Orchard.Web/Modules/Orchard.Fields/Drivers/DateTimeFieldDriver.cs b/src/Orchard.Web/Modules/Orchard.Fields/Drivers/DateTimeFieldDriver.cs index 3fc41bd69..8fac42140 100644 --- a/src/Orchard.Web/Modules/Orchard.Fields/Drivers/DateTimeFieldDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Fields/Drivers/DateTimeFieldDriver.cs @@ -75,7 +75,7 @@ namespace Orchard.Fields.Drivers { protected override DriverResult Editor(ContentPart part, DateTimeField field, dynamic shapeHelper) { var settings = field.PartFieldDefinition.Settings.GetModel(); - var value = part.IsNew() ? settings.DefaultValue : field.DateTime; + var value = part.IsNew() && field.DateTime == default(DateTime) ? settings.DefaultValue : field.DateTime; var options = new DateLocalizationOptions(); // Don't do any time zone conversion if field is semantically a date-only field, because that might mutate the date component. diff --git a/src/Orchard.Web/Modules/Orchard.Fields/Drivers/EnumerationFieldDriver.cs b/src/Orchard.Web/Modules/Orchard.Fields/Drivers/EnumerationFieldDriver.cs index 3f5f379f6..d452fd673 100644 --- a/src/Orchard.Web/Modules/Orchard.Fields/Drivers/EnumerationFieldDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Fields/Drivers/EnumerationFieldDriver.cs @@ -36,7 +36,7 @@ namespace Orchard.Fields.Drivers { protected override DriverResult Editor(ContentPart part, EnumerationField field, dynamic shapeHelper) { return ContentShape("Fields_Enumeration_Edit", GetDifferentiator(field, part), () => { - if (part.IsNew()) { + if (part.IsNew() && String.IsNullOrEmpty(field.Value)) { var settings = field.PartFieldDefinition.Settings.GetModel(); if (!String.IsNullOrWhiteSpace(settings.DefaultValue)) { field.Value = settings.DefaultValue; diff --git a/src/Orchard.Web/Modules/Orchard.Fields/Drivers/InputFieldDriver.cs b/src/Orchard.Web/Modules/Orchard.Fields/Drivers/InputFieldDriver.cs index 1300df8c1..d835b43fe 100644 --- a/src/Orchard.Web/Modules/Orchard.Fields/Drivers/InputFieldDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Fields/Drivers/InputFieldDriver.cs @@ -36,7 +36,7 @@ namespace Orchard.Fields.Drivers { protected override DriverResult Editor(ContentPart part, InputField field, dynamic shapeHelper) { return ContentShape("Fields_Input_Edit", GetDifferentiator(field, part), () => { - if (part.IsNew()) { + if (part.IsNew() && String.IsNullOrEmpty(field.Value)) { var settings = field.PartFieldDefinition.Settings.GetModel(); field.Value = settings.DefaultValue; } diff --git a/src/Orchard.Web/Modules/Orchard.Fields/Drivers/LinkFieldDriver.cs b/src/Orchard.Web/Modules/Orchard.Fields/Drivers/LinkFieldDriver.cs index 3fa307725..8b1a86d2e 100644 --- a/src/Orchard.Web/Modules/Orchard.Fields/Drivers/LinkFieldDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Fields/Drivers/LinkFieldDriver.cs @@ -39,8 +39,12 @@ namespace Orchard.Fields.Drivers { () => { if (part.IsNew()) { var settings = field.PartFieldDefinition.Settings.GetModel(); - field.Value = settings.DefaultValue; - field.Text = settings.TextDefaultValue; + if (String.IsNullOrEmpty(field.Value)) { + field.Value = settings.DefaultValue; + } + if (String.IsNullOrEmpty(field.Text)) { + field.Text = settings.TextDefaultValue; + } } return shapeHelper.EditorTemplate(TemplateName: TemplateName, Model: field, Prefix: GetPrefix(field, part)); }); diff --git a/src/Orchard.Web/Modules/Orchard.Fields/Drivers/NumericFieldDriver.cs b/src/Orchard.Web/Modules/Orchard.Fields/Drivers/NumericFieldDriver.cs index 651d6ba8f..a1dfd46bc 100644 --- a/src/Orchard.Web/Modules/Orchard.Fields/Drivers/NumericFieldDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Fields/Drivers/NumericFieldDriver.cs @@ -44,7 +44,7 @@ namespace Orchard.Fields.Drivers { return ContentShape("Fields_Numeric_Edit", GetDifferentiator(field, part), () => { var settings = field.PartFieldDefinition.Settings.GetModel(); - var value = part.IsNew() ? settings.DefaultValue : Convert.ToString(field.Value, _cultureInfo.Value); + var value = part.IsNew() && field.Value == null ? settings.DefaultValue : Convert.ToString(field.Value, _cultureInfo.Value); var model = new NumericFieldViewModel { Field = field, From 3ac09df8911dd7228684ad19cb2c92de68339ab0 Mon Sep 17 00:00:00 2001 From: Sebastien Ros Date: Thu, 12 Jan 2017 12:37:51 -0800 Subject: [PATCH 4/4] Fixing Gallery search Fixes #7497 --- .../Extensions/PackageExtensions.cs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Extensions/PackageExtensions.cs b/src/Orchard.Web/Modules/Orchard.Packaging/Extensions/PackageExtensions.cs index 66017bbe8..381f33def 100644 --- a/src/Orchard.Web/Modules/Orchard.Packaging/Extensions/PackageExtensions.cs +++ b/src/Orchard.Web/Modules/Orchard.Packaging/Extensions/PackageExtensions.cs @@ -41,9 +41,17 @@ namespace Orchard.Packaging.Extensions { } private static string ExtensionId(bool isTheme, string packageId) { - return isTheme ? - packageId.Substring(Services.PackagingSourceManager.GetExtensionPrefix(DefaultExtensionTypes.Theme).Length) : - packageId.Substring(Services.PackagingSourceManager.GetExtensionPrefix(DefaultExtensionTypes.Module).Length); + + if (packageId.Contains(Services.PackagingSourceManager.GetExtensionPrefix(DefaultExtensionTypes.Theme)) + || packageId.Contains(Services.PackagingSourceManager.GetExtensionPrefix(DefaultExtensionTypes.Module))) { + + return isTheme + ? packageId.Substring(Services.PackagingSourceManager.GetExtensionPrefix(DefaultExtensionTypes.Theme).Length) + : packageId.Substring(Services.PackagingSourceManager.GetExtensionPrefix(DefaultExtensionTypes.Module).Length); + } + else { + return packageId; + } }