From 6a931273a65dee6852b6802f2f9f2abaa11039fe Mon Sep 17 00:00:00 2001 From: tmoxon Date: Thu, 1 Oct 2015 14:42:32 +0100 Subject: [PATCH 01/28] The indexing api would break if an indexer was created with a public property defaulting to a null value. This would result in an object reference error in the admin system. Added null check and warning to the log. --- .../WebServices/ExamineManagementApiController.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web/WebServices/ExamineManagementApiController.cs b/src/Umbraco.Web/WebServices/ExamineManagementApiController.cs index 136e2a984a..01e9f30254 100644 --- a/src/Umbraco.Web/WebServices/ExamineManagementApiController.cs +++ b/src/Umbraco.Web/WebServices/ExamineManagementApiController.cs @@ -258,9 +258,16 @@ namespace Umbraco.Web.WebServices //ignore these properties .Where(x => new[] {"IndexerData", "Description", "WorkingFolder"}.InvariantContains(x.Name) == false) .OrderBy(x => x.Name); + foreach (var p in props) { - indexerModel.ProviderProperties.Add(p.Name, p.GetValue(indexer, null).ToString()); + var val = p.GetValue(indexer, null); + if (val == null) + { + LogHelper.Warn("Property value was null when setting up property on indexer: " + indexer.Name + " property: " + p.Name); + val = string.Empty; + } + indexerModel.ProviderProperties.Add(p.Name, val.ToString()); } var luceneIndexer = indexer as LuceneIndexer; From 78475b0686d3c06fa1cc57c5cb36e800dd8cb8a8 Mon Sep 17 00:00:00 2001 From: Rasmus John Pedersen Date: Fri, 9 Oct 2015 20:25:51 +0200 Subject: [PATCH 02/28] Added recursive option to copy dialog --- .../src/views/content/content.copy.controller.js | 3 ++- src/Umbraco.Web.UI.Client/src/views/content/copy.html | 6 ++++++ src/Umbraco.Web/Editors/ContentController.cs | 2 +- src/Umbraco.Web/Models/ContentEditing/MoveOrCopy.cs | 7 +++++++ 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/content/content.copy.controller.js b/src/Umbraco.Web.UI.Client/src/views/content/content.copy.controller.js index fc3015ed09..5ff55ba397 100644 --- a/src/Umbraco.Web.UI.Client/src/views/content/content.copy.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/content/content.copy.controller.js @@ -7,6 +7,7 @@ angular.module("umbraco").controller("Umbraco.Editors.Content.CopyController", searchText = value + "..."; }); + $scope.recursive = true; $scope.relateToOriginal = false; $scope.dialogTreeEventHandler = $({}); $scope.busy = false; @@ -95,7 +96,7 @@ angular.module("umbraco").controller("Umbraco.Editors.Content.CopyController", $scope.busy = true; $scope.error = false; - contentResource.copy({ parentId: $scope.target.id, id: node.id, relateToOriginal: $scope.relateToOriginal }) + contentResource.copy({ parentId: $scope.target.id, id: node.id, relateToOriginal: $scope.relateToOriginal, recursive: $scope.recursive }) .then(function (path) { $scope.error = false; $scope.success = true; diff --git a/src/Umbraco.Web.UI.Client/src/views/content/copy.html b/src/Umbraco.Web.UI.Client/src/views/content/copy.html index fddc07db22..f9a3c300d0 100644 --- a/src/Umbraco.Web.UI.Client/src/views/content/copy.html +++ b/src/Umbraco.Web.UI.Client/src/views/content/copy.html @@ -56,6 +56,12 @@ + + + + + + diff --git a/src/Umbraco.Web/Editors/ContentController.cs b/src/Umbraco.Web/Editors/ContentController.cs index f8a75a23d1..1b6fbfa3cb 100644 --- a/src/Umbraco.Web/Editors/ContentController.cs +++ b/src/Umbraco.Web/Editors/ContentController.cs @@ -491,7 +491,7 @@ namespace Umbraco.Web.Editors { var toCopy = ValidateMoveOrCopy(copy); - var c = Services.ContentService.Copy(toCopy, copy.ParentId, copy.RelateToOriginal); + var c = Services.ContentService.Copy(toCopy, copy.ParentId, copy.RelateToOriginal, copy.Recursive); var response = Request.CreateResponse(HttpStatusCode.OK); response.Content = new StringContent(c.Path, Encoding.UTF8, "application/json"); diff --git a/src/Umbraco.Web/Models/ContentEditing/MoveOrCopy.cs b/src/Umbraco.Web/Models/ContentEditing/MoveOrCopy.cs index a2cc45c446..a387876a45 100644 --- a/src/Umbraco.Web/Models/ContentEditing/MoveOrCopy.cs +++ b/src/Umbraco.Web/Models/ContentEditing/MoveOrCopy.cs @@ -33,6 +33,13 @@ namespace Umbraco.Web.Models.ContentEditing [DataMember(Name = "relateToOriginal", IsRequired = true)] [Required] public bool RelateToOriginal { get; set; } + + /// + /// Boolean indicating whether copying the object should be recursive + /// + [DataMember(Name = "recursive", IsRequired = true)] + [Required] + public bool Recursive { get; set; } } } From a75a58b71935a23d5026d56987f7589c1ef4ea18 Mon Sep 17 00:00:00 2001 From: Niels Hartvig Date: Mon, 12 Oct 2015 18:45:01 +0200 Subject: [PATCH 03/28] Fixes #7234 --- src/Umbraco.Web/umbraco.presentation/library.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web/umbraco.presentation/library.cs b/src/Umbraco.Web/umbraco.presentation/library.cs index b9fac739f2..cbfdafc56a 100644 --- a/src/Umbraco.Web/umbraco.presentation/library.cs +++ b/src/Umbraco.Web/umbraco.presentation/library.cs @@ -602,7 +602,7 @@ namespace umbraco XmlDocument mXml = new XmlDocument(); mXml.LoadXml(m.ToXml(mXml, false).OuterXml); XPathNavigator xp = mXml.CreateNavigator(); - return xp.Select("/node"); + return xp.Select("/node()"); } XmlDocument xd = new XmlDocument(); From 57622cef9ab3ed19e419e106665ca7f97f980c5a Mon Sep 17 00:00:00 2001 From: Shannon Date: Thu, 15 Oct 2015 17:14:24 +0200 Subject: [PATCH 04/28] Fixes: U4-7198 Change default log4net config to include machine name in file name --- src/Umbraco.Web.UI/config/log4net.Release.config | 2 +- src/Umbraco.Web.UI/config/log4net.config | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI/config/log4net.Release.config b/src/Umbraco.Web.UI/config/log4net.Release.config index bbca2a8277..10b8c9eb7a 100644 --- a/src/Umbraco.Web.UI/config/log4net.Release.config +++ b/src/Umbraco.Web.UI/config/log4net.Release.config @@ -7,7 +7,7 @@ - + diff --git a/src/Umbraco.Web.UI/config/log4net.config b/src/Umbraco.Web.UI/config/log4net.config index 497fd4471f..eca84962a1 100644 --- a/src/Umbraco.Web.UI/config/log4net.config +++ b/src/Umbraco.Web.UI/config/log4net.config @@ -7,7 +7,7 @@ - + From ee47ea20262f5a1a3f787fe6658bd4b969a278b7 Mon Sep 17 00:00:00 2001 From: Jeavon Date: Thu, 15 Oct 2015 16:29:40 +0100 Subject: [PATCH 05/28] Fix for U4-7260 - Multi node tree picker with no selection can cause a error to display in the backoffice --- .../src/common/resources/entity.resource.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/common/resources/entity.resource.js b/src/Umbraco.Web.UI.Client/src/common/resources/entity.resource.js index c136f88bc7..500f0fbad2 100644 --- a/src/Umbraco.Web.UI.Client/src/common/resources/entity.resource.js +++ b/src/Umbraco.Web.UI.Client/src/common/resources/entity.resource.js @@ -139,6 +139,12 @@ function entityResource($q, $http, umbRequestHelper) { _.each(ids, function(item) { query += "ids=" + item + "&"; }); + + // if ids array is empty we need a empty variable in the querystring otherwise the service returns a error + if (ids.length === 0) { + query += "ids=&"; + } + query += "type=" + type; return umbRequestHelper.resourcePromise( From 3a5a32c65fc1681c6ebc8890af9de2eba4efaaf9 Mon Sep 17 00:00:00 2001 From: Stephan Date: Fri, 16 Oct 2015 12:27:54 +0200 Subject: [PATCH 06/28] U4-7255 - fix RefreshInstruction serialization --- src/Umbraco.Core/Sync/RefreshInstruction.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Core/Sync/RefreshInstruction.cs b/src/Umbraco.Core/Sync/RefreshInstruction.cs index fe37aa8fc7..cd10019f00 100644 --- a/src/Umbraco.Core/Sync/RefreshInstruction.cs +++ b/src/Umbraco.Core/Sync/RefreshInstruction.cs @@ -15,7 +15,12 @@ namespace Umbraco.Core.Sync // but at the moment it is exposed in CacheRefresher webservice // so for the time being we keep it as-is for backward compatibility reasons - // need the public one so it can be de-serialized + // need this public, parameter-less constructor so the web service messenger + // can de-serialize the instructions it receives + public RefreshInstruction() + { } + + // need this public one so it can be de-serialized - used by the Json thing // otherwise, should use GetInstructions(...) public RefreshInstruction(Guid refresherId, RefreshMethodType refreshType, Guid guidId, int intId, string jsonIds, string jsonPayload) { From b2f0a9f23d7019508df0b74500a4272f7f01e624 Mon Sep 17 00:00:00 2001 From: "TOXIC\\Tobbe" Date: Fri, 16 Oct 2015 14:07:19 +0200 Subject: [PATCH 07/28] Hoover a property in backend to get its alias --- .../src/views/directives/umb-property.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/directives/umb-property.html b/src/Umbraco.Web.UI.Client/src/views/directives/umb-property.html index 16432bc1c4..c6fddded8c 100644 --- a/src/Umbraco.Web.UI.Client/src/views/directives/umb-property.html +++ b/src/Umbraco.Web.UI.Client/src/views/directives/umb-property.html @@ -5,7 +5,7 @@
-