From 0852b20b311cbeb4efa6360c5e1e17720c4d7b16 Mon Sep 17 00:00:00 2001 From: Floris Robbemont Date: Thu, 3 Jan 2019 16:38:37 +0100 Subject: [PATCH 01/72] Fix for wrong sorting overload in MediaService (#3948) --- src/Umbraco.Core/Services/MediaService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Core/Services/MediaService.cs b/src/Umbraco.Core/Services/MediaService.cs index d1f11c619a..b95a8a258c 100644 --- a/src/Umbraco.Core/Services/MediaService.cs +++ b/src/Umbraco.Core/Services/MediaService.cs @@ -509,7 +509,7 @@ namespace Umbraco.Core.Services public IEnumerable GetPagedChildren(int id, long pageIndex, int pageSize, out long totalChildren, string orderBy, Direction orderDirection, bool orderBySystemField, string filter) { - return GetPagedChildren(id, pageIndex, pageSize, out totalChildren, orderBy, orderDirection, true, filter, null); + return GetPagedChildren(id, pageIndex, pageSize, out totalChildren, orderBy, orderDirection, orderBySystemField, filter, null); } /// From cc6c16894c288f422140482f55bd773e01df08f8 Mon Sep 17 00:00:00 2001 From: Kenn Jacobsen Date: Sun, 6 Jan 2019 19:11:58 +0100 Subject: [PATCH 02/72] Safeguard the tags value converter against empty tags --- .../ValueConverters/TagsValueConverter.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Core/PropertyEditors/ValueConverters/TagsValueConverter.cs b/src/Umbraco.Core/PropertyEditors/ValueConverters/TagsValueConverter.cs index b085748487..204fde0c2e 100644 --- a/src/Umbraco.Core/PropertyEditors/ValueConverters/TagsValueConverter.cs +++ b/src/Umbraco.Core/PropertyEditors/ValueConverters/TagsValueConverter.cs @@ -42,16 +42,22 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters public override object ConvertDataToSource(PublishedPropertyType propertyType, object source, bool preview) { + var sourceAsString = source?.ToString(); + if(sourceAsString.IsNullOrWhiteSpace()) + { + return new string[0]; + } + // if Json storage type deserialzie and return as string array if (JsonStorageType(propertyType.DataTypeId)) { - var jArray = JsonConvert.DeserializeObject(source.ToString()); + var jArray = JsonConvert.DeserializeObject(sourceAsString); return jArray.ToObject(); } // Otherwise assume CSV storage type and return as string array var csvTags = - source.ToString() + sourceAsString .Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries) .ToArray(); return csvTags; From 4564623899fb265f5dc1cb62ddbf7d43a169e4e1 Mon Sep 17 00:00:00 2001 From: Kenn Jacobsen Date: Thu, 3 Jan 2019 21:04:59 +0100 Subject: [PATCH 03/72] Don't use a hardcoded folder type alias to determine folder types in the list view --- .../views/propertyeditors/listview/listview.controller.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/listview/listview.controller.js b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/listview/listview.controller.js index 118f1b81d2..df7a574c49 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/listview/listview.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/listview/listview.controller.js @@ -1,4 +1,4 @@ -function listViewController($rootScope, $scope, $routeParams, $injector, $cookieStore, notificationsService, iconHelper, dialogService, editorState, localizationService, $location, appState, $timeout, $q, mediaResource, listViewHelper, userService, navigationService, treeService) { +function listViewController($rootScope, $scope, $routeParams, $injector, $cookieStore, notificationsService, iconHelper, dialogService, editorState, localizationService, $location, appState, $timeout, $q, mediaResource, listViewHelper, userService, navigationService, treeService, mediaHelper) { //this is a quick check to see if we're in create mode, if so just exit - we cannot show children for content // that isn't created yet, if we continue this will use the parent id in the route params which isn't what @@ -269,10 +269,12 @@ function listViewController($rootScope, $scope, $routeParams, $injector, $cookie $scope.listViewResultSet = data; //update all values for display + var section = appState.getSectionState("currentSection"); if ($scope.listViewResultSet.items) { _.each($scope.listViewResultSet.items, function (e, index) { setPropertyValues(e); - if (e.contentTypeAlias === 'Folder') { + // create the folders collection (only for media list views) + if (section === "media" && !mediaHelper.hasFilePropertyType(e)) { $scope.folders.push(e); } }); From d53d0b4271110d49dfc5bcaadff1c68ef6506385 Mon Sep 17 00:00:00 2001 From: Sebastiaan Janssen Date: Mon, 7 Jan 2019 12:53:31 +0100 Subject: [PATCH 04/72] Add disabled state to toggle (#3967) (cherry picked from commit d231db8ef25455c2d1f291b9b707e4d95a251a9f) # Conflicts: # src/Umbraco.Web.UI.Client/src/views/languages/edit.html --- .../components/buttons/umbtoggle.directive.js | 4 ++++ .../src/less/components/buttons/umb-toggle.less | 10 ++++++++-- .../src/less/components/users/umb-permission.less | 6 ++++++ .../src/views/components/buttons/umb-toggle.html | 2 +- 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/buttons/umbtoggle.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/buttons/umbtoggle.directive.js index e3c4cbf40c..c2c9ec068b 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/components/buttons/umbtoggle.directive.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/buttons/umbtoggle.directive.js @@ -18,6 +18,7 @@ @param {boolean} checked Set to true or false to toggle the switch. +@param {boolean} disabled Set to true or false to disable the switch. @param {callback} onClick The function which should be called when the toggle is clicked. @param {string=} showLabels Set to true or false to show a "On" or "Off" label next to the switch. @param {string=} labelOn Set a custom label for when the switched is turned on. It will default to "On". @@ -115,6 +118,7 @@ templateUrl: 'views/components/buttons/umb-toggle.html', scope: { checked: "=", + disabled: "=", onClick: "&", labelOn: "@?", labelOff: "@?", diff --git a/src/Umbraco.Web.UI.Client/src/less/components/buttons/umb-toggle.less b/src/Umbraco.Web.UI.Client/src/less/components/buttons/umb-toggle.less index 150963cbb2..4c30ae583c 100644 --- a/src/Umbraco.Web.UI.Client/src/less/components/buttons/umb-toggle.less +++ b/src/Umbraco.Web.UI.Client/src/less/components/buttons/umb-toggle.less @@ -28,7 +28,8 @@ .umb-toggle__toggle { cursor: pointer; - display: inline-block; + align-items: center; + display: flex; width: 48px; height: 24px; background: @gray-8; @@ -41,6 +42,11 @@ background-color: @green; } +.umb-toggle--disabled .umb-toggle__toggle { + cursor: not-allowed; + opacity: 0.8; +} + .umb-toggle--checked .umb-toggle__handler { transform: translate3d(24px, 0, 0) rotate(0); } @@ -63,7 +69,7 @@ .umb-toggle__icon { position: absolute; - top: 3px; + line-height: 1em; text-decoration: none; transition: all 0.2s ease; } diff --git a/src/Umbraco.Web.UI.Client/src/less/components/users/umb-permission.less b/src/Umbraco.Web.UI.Client/src/less/components/users/umb-permission.less index 9447a48217..5855fbd528 100644 --- a/src/Umbraco.Web.UI.Client/src/less/components/users/umb-permission.less +++ b/src/Umbraco.Web.UI.Client/src/less/components/users/umb-permission.less @@ -21,6 +21,12 @@ cursor: pointer; } +.umb-permission--disabled .umb-permission__toggle, +.umb-permission--disabled .umb-permission__content { + cursor: not-allowed; + opacity: 0.8; +} + .umb-permission__description { font-size: 13px; color: @gray-5; diff --git a/src/Umbraco.Web.UI.Client/src/views/components/buttons/umb-toggle.html b/src/Umbraco.Web.UI.Client/src/views/components/buttons/umb-toggle.html index bc5c114bb6..c8039448fd 100644 --- a/src/Umbraco.Web.UI.Client/src/views/components/buttons/umb-toggle.html +++ b/src/Umbraco.Web.UI.Client/src/views/components/buttons/umb-toggle.html @@ -1,4 +1,4 @@ -