From 60f91d95e9c54d681f09845d988b886a363b26b8 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 6 Apr 2017 16:09:46 +0200 Subject: [PATCH 01/16] add separator to button groups with toggle --- src/Umbraco.Web.UI.Client/src/less/buttons.less | 5 ++++- .../src/less/components/buttons/umb-button-group.less | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/less/buttons.less b/src/Umbraco.Web.UI.Client/src/less/buttons.less index fc06cedc87..e76ffc682c 100644 --- a/src/Umbraco.Web.UI.Client/src/less/buttons.less +++ b/src/Umbraco.Web.UI.Client/src/less/buttons.less @@ -65,7 +65,10 @@ -webkit-box-shadow:none; } - +.btn-group .btn.dropdown-toggle { + border-left-width: 1px; + border-left-style: solid; +} // Button Sizes // -------------------------------------------------- diff --git a/src/Umbraco.Web.UI.Client/src/less/components/buttons/umb-button-group.less b/src/Umbraco.Web.UI.Client/src/less/components/buttons/umb-button-group.less index 3424de2159..f56c32996b 100644 --- a/src/Umbraco.Web.UI.Client/src/less/components/buttons/umb-button-group.less +++ b/src/Umbraco.Web.UI.Client/src/less/components/buttons/umb-button-group.less @@ -35,6 +35,9 @@ padding-right: 10px; padding-left: 10px; border-radius: 0 3px 3px 0; + border-left-style: solid; + border-left-width: 1px; + border-left-color: rgba(0,0,0,0.1); } .umb-era-button.umb-button-group__toggle .caret { From a728f475aac2985d376728c9e4ef06aff51df5fc Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 6 Apr 2017 16:11:03 +0200 Subject: [PATCH 02/16] remove margin from editor sub header in content mini editor --- .../src/less/components/umb-mini-editor.less | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/less/components/umb-mini-editor.less b/src/Umbraco.Web.UI.Client/src/less/components/umb-mini-editor.less index 345a6bd682..55baebda42 100644 --- a/src/Umbraco.Web.UI.Client/src/less/components/umb-mini-editor.less +++ b/src/Umbraco.Web.UI.Client/src/less/components/umb-mini-editor.less @@ -30,4 +30,9 @@ padding: 0 20px; } + // Hacks to fix editors inside the mini editors + .umb-editor-sub-header { + margin-top: 0; + } + } \ No newline at end of file From 847ef34281973ce26cb82117b473fe3df4ec7451 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 6 Apr 2017 16:12:55 +0200 Subject: [PATCH 03/16] adjust colors on header and footer in content mini editor to match main editor --- .../src/less/components/umb-mini-editor.less | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/less/components/umb-mini-editor.less b/src/Umbraco.Web.UI.Client/src/less/components/umb-mini-editor.less index 55baebda42..68266e9483 100644 --- a/src/Umbraco.Web.UI.Client/src/less/components/umb-mini-editor.less +++ b/src/Umbraco.Web.UI.Client/src/less/components/umb-mini-editor.less @@ -3,7 +3,7 @@ .umb-panel-header { padding: 20px; background: @gray-10; - border-bottom: 1px solid @gray-8; + border-bottom: 1px solid @purple-l3; height: 59px; .umb-headline { @@ -25,8 +25,8 @@ .umb-panel-footer { background: @gray-10; - border-top: 1px solid @gray-8; - height: 51px; + border-top: 1px solid @purple-l3; + height: 52px; padding: 0 20px; } From 8d7891d20355de1ce6d36a17710f14fed50ddc47 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 6 Apr 2017 16:18:27 +0200 Subject: [PATCH 04/16] remove negative margin --- .../src/less/components/buttons/umb-button-group.less | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/less/components/buttons/umb-button-group.less b/src/Umbraco.Web.UI.Client/src/less/components/buttons/umb-button-group.less index f56c32996b..1bd896022c 100644 --- a/src/Umbraco.Web.UI.Client/src/less/components/buttons/umb-button-group.less +++ b/src/Umbraco.Web.UI.Client/src/less/components/buttons/umb-button-group.less @@ -1,7 +1,6 @@ .umb-button-group__toggle { padding-left: 8px; padding-right: 8px; - margin-left: -1px; } .umb-button-group__sub-buttons.-align-right { From fc862f8434b136b697b38f7440f1c0f8cbd3f279 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 6 Apr 2017 16:24:22 +0200 Subject: [PATCH 05/16] remove border radius from alerts --- src/Umbraco.Web.UI.Client/src/less/alerts.less | 2 +- src/Umbraco.Web.UI.Client/src/less/variables.less | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/less/alerts.less b/src/Umbraco.Web.UI.Client/src/less/alerts.less index c575f58f0c..47ee38a70f 100644 --- a/src/Umbraco.Web.UI.Client/src/less/alerts.less +++ b/src/Umbraco.Web.UI.Client/src/less/alerts.less @@ -11,7 +11,7 @@ margin-bottom: @baseLineHeight; background-color: @warningBackground; border: 1px solid @warningBorder; - .border-radius(@baseBorderRadius); + .border-radius(@alertBorderRadius); } .alert, .alert h4, diff --git a/src/Umbraco.Web.UI.Client/src/less/variables.less b/src/Umbraco.Web.UI.Client/src/less/variables.less index 68db985e63..ed415decee 100644 --- a/src/Umbraco.Web.UI.Client/src/less/variables.less +++ b/src/Umbraco.Web.UI.Client/src/less/variables.less @@ -327,6 +327,8 @@ @infoBackground: @turquoise-d1; @infoBorder: transparent; +@alertBorderRadius: 0; + // SD: Had to duplicate the above but prefix with 'form' inversed colors // because we cannot share the above alert colors with forms otherwise we end up with white // text and giant red backgrounds. From 2ee1df3dec7f26f79e69c9b5813d2ab1f1a75f49 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 6 Apr 2017 16:25:09 +0200 Subject: [PATCH 06/16] update orange warning color to yellow --- src/Umbraco.Web.UI.Client/src/less/variables.less | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/less/variables.less b/src/Umbraco.Web.UI.Client/src/less/variables.less index ed415decee..c173f122cb 100644 --- a/src/Umbraco.Web.UI.Client/src/less/variables.less +++ b/src/Umbraco.Web.UI.Client/src/less/variables.less @@ -58,6 +58,7 @@ @red-l3: #FFB2B0; @red-washed: #FFECEB; +@yellow-d2: #F0AC00; @yellow-d1: #FFC011; @yellow: #FFCE38; @yellow-l1: #FFD861; @@ -312,7 +313,7 @@ // alerts // ------------------------- @warningText: @white; -@warningBackground: @orange; +@warningBackground: @yellow-d2; @warningBorder: transparent; @errorText: @white; From 5a98150f15508f770454f7c19775c00e3c44f4a0 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 7 Apr 2017 11:34:30 +0200 Subject: [PATCH 07/16] fixes: U4-9749 Clean up ace themes and modes --- src/Umbraco.Web.UI.Client/gruntFile.js | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/gruntFile.js b/src/Umbraco.Web.UI.Client/gruntFile.js index 29b83939ac..6c785489c4 100644 --- a/src/Umbraco.Web.UI.Client/gruntFile.js +++ b/src/Umbraco.Web.UI.Client/gruntFile.js @@ -536,7 +536,23 @@ module.exports = function (grunt) { ] }, 'ace-builds': { - files: ['src-min-noconflict/**'] + files: [ + 'src-min-noconflict/ace.js', + + 'src-min-noconflict/ext-language_tools.js', + 'src-min-noconflict/ext-searchbox.js', + 'src-min-noconflict/ext-settings_menu.js', + + 'src-min-noconflict/snippets/text.js', + 'src-min-noconflict/snippets/javascript.js', + + 'src-min-noconflict/theme-chrome.js', + + 'src-min-noconflict/mode-razor.js', + 'src-min-noconflict/mode-javascript.js', + + 'src-min-noconflict/worker-javascript.js', + ] } } } From 17f36c62cbcfeb6d00c71e9a86a5087d2c75aeaf Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 7 Apr 2017 12:26:29 +0200 Subject: [PATCH 08/16] fixes: U4-9751 "Your recycle bin is empty" shows when folders are added to media recycle bin --- .../src/views/propertyeditors/listview/layouts/grid/grid.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/listview/layouts/grid/grid.html b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/listview/layouts/grid/grid.html index d09b04f97a..949374cbc2 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/listview/layouts/grid/grid.html +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/listview/layouts/grid/grid.html @@ -76,7 +76,7 @@ From 0d7661a77915f1184d0def0a0e81e4c4084f6a49 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 7 Apr 2017 13:59:26 +0200 Subject: [PATCH 09/16] fixes: U4-9753 When uploading, moving or deleting folders in the media section you have to reload to see the changes --- .../listview/listview.controller.js | 16 ++++++++-------- .../views/propertyeditors/listview/listview.html | 2 +- 2 files changed, 9 insertions(+), 9 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 a9eab75a04..f4068c0f02 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 @@ -54,8 +54,6 @@ function listViewController($rootScope, $scope, $routeParams, $injector, $cookie $scope.actionInProgress = false; $scope.selection = []; $scope.folders = []; - //tracks if we've already loaded the folders for the current node - var foldersLoaded = false; $scope.listViewResultSet = { totalPages: 0, items: [] @@ -217,7 +215,7 @@ function listViewController($rootScope, $scope, $routeParams, $injector, $cookie 500); if (reload === true) { - $scope.reloadView($scope.contentId); + $scope.reloadView($scope.contentId, true); } if (err.data && angular.isArray(err.data.notifications)) { @@ -252,7 +250,11 @@ function listViewController($rootScope, $scope, $routeParams, $injector, $cookie /*Pagination is done by an array of objects, due angularJS's funky way of monitoring state with simple values */ - $scope.reloadView = function (id) { + $scope.getContent = function() { + $scope.reloadView($scope.contentId, true); + } + + $scope.reloadView = function (id, reloadFolders) { $scope.viewLoaded = false; @@ -270,13 +272,12 @@ function listViewController($rootScope, $scope, $routeParams, $injector, $cookie }); } - if (!foldersLoaded && $scope.entityType === 'media') { + if (reloadFolders && $scope.entityType === 'media') { //The folders aren't loaded - we only need to do this once since we're never changing node ids mediaResource.getChildFolders($scope.contentId) .then(function (folders) { $scope.folders = folders; $scope.viewLoaded = true; - foldersLoaded = true; }); } else { @@ -319,7 +320,6 @@ function listViewController($rootScope, $scope, $routeParams, $injector, $cookie function makeSearch() { if ($scope.options.filter !== null && $scope.options.filter !== undefined) { $scope.options.pageNumber = 1; - //$scope.actionInProgress = true; $scope.reloadView($scope.contentId); } } @@ -621,7 +621,7 @@ function listViewController($rootScope, $scope, $routeParams, $injector, $cookie $scope.options.allowBulkMove || $scope.options.allowBulkDelete; - $scope.reloadView($scope.contentId); + $scope.reloadView($scope.contentId, true); } function getLocalizedKey(alias) { diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/listview/listview.html b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/listview/listview.html index 92436ee218..97500fd7c1 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/listview/listview.html +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/listview/listview.html @@ -157,7 +157,7 @@ selection="selection" options="options" entity-type="{{entityType}}" - on-get-content="reloadView"> + on-get-content="getContent"> From 8bd38b3cddf873bd9de610747ae8029178bff856 Mon Sep 17 00:00:00 2001 From: Warren Buckley Date: Mon, 10 Apr 2017 09:49:56 +0100 Subject: [PATCH 10/16] For tree search results - we display a generic no results message for an emtpy state now. Need to check with Mads if I broke the transiston?! --- .../tree/umb-tree-search-results.html | 41 ++++++++++--------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/components/tree/umb-tree-search-results.html b/src/Umbraco.Web.UI.Client/src/views/components/tree/umb-tree-search-results.html index 97f08fe359..b77810bed1 100644 --- a/src/Umbraco.Web.UI.Client/src/views/components/tree/umb-tree-search-results.html +++ b/src/Umbraco.Web.UI.Client/src/views/components/tree/umb-tree-search-results.html @@ -1,23 +1,26 @@ - From 200497b865a9b3b416190776fbdd1850c4c03c2e Mon Sep 17 00:00:00 2001 From: Warren Buckley Date: Mon, 10 Apr 2017 10:42:26 +0100 Subject: [PATCH 11/16] Dictionary is the most common treepicker that may not have any items in core --- .../src/views/templates/edit.controller.js | 1 + src/Umbraco.Web.UI/umbraco/config/lang/en.xml | 3 +++ 2 files changed, 4 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/views/templates/edit.controller.js b/src/Umbraco.Web.UI.Client/src/views/templates/edit.controller.js index e516f2d742..7988e71a11 100644 --- a/src/Umbraco.Web.UI.Client/src/views/templates/edit.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/templates/edit.controller.js @@ -393,6 +393,7 @@ multiPicker: false, show: true, title: localizationService.localize("template_insertDictionaryItem"), + emptyStateMessage: localizationService.localize("emptyStates_emptyDictionaryTree"), select: function(node){ var code = templateHelper.getInsertDictionarySnippet(node.name); insert(code); diff --git a/src/Umbraco.Web.UI/umbraco/config/lang/en.xml b/src/Umbraco.Web.UI/umbraco/config/lang/en.xml index c448ad69ad..052f91078a 100644 --- a/src/Umbraco.Web.UI/umbraco/config/lang/en.xml +++ b/src/Umbraco.Web.UI/umbraco/config/lang/en.xml @@ -1549,4 +1549,7 @@ To manage your website, simply open the Umbraco back office and start adding con URL tracker has now been enabled. Error enabling the URL tracker, more information can be found in your log file. + + No Dictionary items to choose from + From a320b63fd6fd5d99e0d7b78156b0a37a25cf505a Mon Sep 17 00:00:00 2001 From: Warren Buckley Date: Mon, 10 Apr 2017 10:51:28 +0100 Subject: [PATCH 12/16] Checks that the tree has items otherwise we display the emptystate message --- .../overlays/treepicker/treepicker.controller.js | 11 ++++++++++- .../views/common/overlays/treepicker/treepicker.html | 6 +++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/common/overlays/treepicker/treepicker.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/overlays/treepicker/treepicker.controller.js index df768db9cd..7ba8970294 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/overlays/treepicker/treepicker.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/common/overlays/treepicker/treepicker.controller.js @@ -20,7 +20,13 @@ angular.module("umbraco").controller("Umbraco.Overlays.TreePickerController", selectedSearchResults: [] } - $scope.model.selection = []; + $scope.model.selection = []; + + //Used for toggling an empty-state message + //Some trees can have no items (dictionary & forms email templates) + $scope.hasItems = true; + $scope.emptyStateMessage = dialogOptions.emptyStateMessage; + //TODO: I don't think this is used or called anywhere!! $scope.init = function (contentType) { @@ -149,6 +155,9 @@ angular.module("umbraco").controller("Umbraco.Overlays.TreePickerController", //gets the tree object when it loads function treeLoadedHandler(ev, args) { + //args.tree contains children (args.tree.root.children) + $scope.hasItems = args.tree.root.children.length > 0; + tree = args.tree; } diff --git a/src/Umbraco.Web.UI.Client/src/views/common/overlays/treepicker/treepicker.html b/src/Umbraco.Web.UI.Client/src/views/common/overlays/treepicker/treepicker.html index 108dbdaa78..ab5e61339f 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/overlays/treepicker/treepicker.html +++ b/src/Umbraco.Web.UI.Client/src/views/common/overlays/treepicker/treepicker.html @@ -19,8 +19,12 @@ results="searchInfo.results" select-result-callback="selectResult"> + + + {{ emptyStateMessage }} + -
+
Date: Mon, 10 Apr 2017 10:54:29 +0100 Subject: [PATCH 13/16] Pass the emptystate message in other places we use the treepicker --- .../src/views/common/overlays/insert/insert.controller.js | 1 + .../src/views/partialviewmacros/edit.controller.js | 1 + .../src/views/partialviews/edit.controller.js | 1 + 3 files changed, 3 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/views/common/overlays/insert/insert.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/overlays/insert/insert.controller.js index 2d9b006bf0..ed82ff0d76 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/overlays/insert/insert.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/common/overlays/insert/insert.controller.js @@ -80,6 +80,7 @@ multiPicker: false, title: localizationService.localize("template_insertDictionaryItem"), description: localizationService.localize("template_insertDictionaryItemDesc"), + emptyStateMessage: localizationService.localize("emptyStates_emptyDictionaryTree"), show: true, select: function(node){ diff --git a/src/Umbraco.Web.UI.Client/src/views/partialviewmacros/edit.controller.js b/src/Umbraco.Web.UI.Client/src/views/partialviewmacros/edit.controller.js index f260d5f0c0..a3f77aa9b0 100644 --- a/src/Umbraco.Web.UI.Client/src/views/partialviewmacros/edit.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/partialviewmacros/edit.controller.js @@ -204,6 +204,7 @@ multiPicker: false, show: true, title: "Insert dictionary item", + emptyStateMessage: localizationService.localize("emptyStates_emptyDictionaryTree"), select: function(node){ var code = templateHelper.getInsertDictionarySnippet(node.name); diff --git a/src/Umbraco.Web.UI.Client/src/views/partialviews/edit.controller.js b/src/Umbraco.Web.UI.Client/src/views/partialviews/edit.controller.js index 1b9ed2e1e0..4d21eddd6c 100644 --- a/src/Umbraco.Web.UI.Client/src/views/partialviews/edit.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/partialviews/edit.controller.js @@ -194,6 +194,7 @@ multiPicker: false, show: true, title: "Insert dictionary item", + emptyStateMessage: localizationService.localize("emptyStates_emptyDictionaryTree"), select: function(node){ var code = templateHelper.getInsertDictionarySnippet(node.name); From 2f633649259883d6ec803f5421a2627adfcd259c Mon Sep 17 00:00:00 2001 From: Emil Wangaa Date: Tue, 11 Apr 2017 13:26:54 +0200 Subject: [PATCH 14/16] Fixes issue with creating new partial being saved with wrong path --- src/Umbraco.Web/Editors/CodeFileController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web/Editors/CodeFileController.cs b/src/Umbraco.Web/Editors/CodeFileController.cs index 6a19ad06e8..5f9f719a69 100644 --- a/src/Umbraco.Web/Editors/CodeFileController.cs +++ b/src/Umbraco.Web/Editors/CodeFileController.cs @@ -433,7 +433,7 @@ namespace Umbraco.Web.Editors private Attempt CreateOrUpdatePartialView(CodeFileDisplay display) { - return CreateOrUpdatePartialView(display, SystemDirectories.MacroPartials, + return CreateOrUpdatePartialView(display, SystemDirectories.PartialViews, Services.FileService.GetPartialView, Services.FileService.SavePartialView, Services.FileService.CreatePartialView); } From e2dc4f36ad09af7854c8a6754460caa60ca779a6 Mon Sep 17 00:00:00 2001 From: Sebastiaan Janssen Date: Wed, 12 Apr 2017 13:39:38 +0200 Subject: [PATCH 15/16] U4-9762 ezSearch package complains about pickers in macro parameters --- .../ParameterEditorResolver.cs | 62 ++++++++++--------- .../config/umbracoSettings.config | 2 +- .../Models/Mapping/MacroModelMapper.cs | 4 +- .../MediaPicker2PropertyEditor.cs | 2 +- .../developer/Macros/editMacro.aspx.cs | 5 +- .../businesslogic/macro/MacroProperty.cs | 5 +- 6 files changed, 43 insertions(+), 37 deletions(-) diff --git a/src/Umbraco.Core/PropertyEditors/ParameterEditorResolver.cs b/src/Umbraco.Core/PropertyEditors/ParameterEditorResolver.cs index 94cb89defa..3b37460741 100644 --- a/src/Umbraco.Core/PropertyEditors/ParameterEditorResolver.cs +++ b/src/Umbraco.Core/PropertyEditors/ParameterEditorResolver.cs @@ -14,13 +14,13 @@ namespace Umbraco.Core.PropertyEditors /// /// /// This resolver will contain any parameter editors defined in manifests as well as any property editors defined in manifests - /// that have the IsParameterEditorFlag = true and any PropertyEditors found in c# that have this flag as well. + /// that have the IsParameterEditorFlag = true and any PropertyEditors found in c# that have this flag as well. /// internal class ParameterEditorResolver : LazyManyObjectsResolverBase { private readonly ManifestBuilder _builder; private readonly IContentSection _contentSection; - + public ParameterEditorResolver(IServiceProvider serviceProvider, ILogger logger, Func> typeListProducerList, ManifestBuilder builder) : base(serviceProvider, logger, typeListProducerList, ObjectLifetimeScope.Application) { @@ -33,47 +33,51 @@ namespace Umbraco.Core.PropertyEditors /// public IEnumerable ParameterEditors { - get + get { return GetParameterEditors(); } + } + + public IEnumerable GetParameterEditors(bool includeDeprecated = false) + { + // all property editors and parameter editors + // except property editors where !IsParameterEditor + var values = Values + .Where(x => x is PropertyEditor == false || ((PropertyEditor) x).IsParameterEditor); + + // union all manifest parameter editors + values = values + .Union(_builder.ParameterEditors); + + // union all manifest property editors where IsParameterEditor + values = values + .Union(_builder.PropertyEditors.Where(x => x.IsParameterEditor)); + + if (includeDeprecated == false && _contentSection.ShowDeprecatedPropertyEditors == false) { - // all property editors and parameter editors - // except property editors where !IsParameterEditor - var values = Values - .Where(x => x is PropertyEditor == false || ((PropertyEditor) x).IsParameterEditor); - - // union all manifest parameter editors + // except deprecated property editors values = values - .Union(_builder.ParameterEditors); - - // union all manifest property editors where IsParameterEditor - values = values - .Union(_builder.PropertyEditors.Where(x => x.IsParameterEditor)); - - if (_contentSection.ShowDeprecatedPropertyEditors == false) - { - // except deprecated property editors - values = values - .Where(x => x is PropertyEditor == false || ((PropertyEditor) x).IsDeprecated == false); - } - - return values; + .Where(x => x is PropertyEditor == false || ((PropertyEditor) x).IsDeprecated == false); } + + return values; } /// /// Returns a property editor by alias /// /// + /// /// - public IParameterEditor GetByAlias(string alias) + public IParameterEditor GetByAlias(string alias, bool includeDeprecated = false) { - var found = ParameterEditors.SingleOrDefault(x => x.Alias == alias); + var paramEditors = GetParameterEditors(includeDeprecated).ToArray(); + var found = paramEditors.SingleOrDefault(x => x.Alias == alias); if (found != null) return found; - + //couldn't find one, so try the map var mapped = LegacyParameterEditorAliasConverter.GetNewAliasFromLegacyAlias(alias); - return mapped == null - ? null - : ParameterEditors.SingleOrDefault(x => x.Alias == mapped); + return mapped == null + ? null + : paramEditors.SingleOrDefault(x => x.Alias == mapped); } } } \ No newline at end of file diff --git a/src/Umbraco.Web.UI/config/umbracoSettings.config b/src/Umbraco.Web.UI/config/umbracoSettings.config index d95e32a312..78d13ab600 100644 --- a/src/Umbraco.Web.UI/config/umbracoSettings.config +++ b/src/Umbraco.Web.UI/config/umbracoSettings.config @@ -105,7 +105,7 @@ Textstring - true + false true diff --git a/src/Umbraco.Web/Models/Mapping/MacroModelMapper.cs b/src/Umbraco.Web/Models/Mapping/MacroModelMapper.cs index 3dc86e61c9..8ef4432cab 100644 --- a/src/Umbraco.Web/Models/Mapping/MacroModelMapper.cs +++ b/src/Umbraco.Web/Models/Mapping/MacroModelMapper.cs @@ -37,8 +37,8 @@ namespace Umbraco.Web.Models.Mapping .AfterMap((property, parameter) => { //map the view and the config - - var paramEditor = ParameterEditorResolver.Current.GetByAlias(property.EditorAlias); + // we need to show the depracated ones for backwards compatibility + var paramEditor = ParameterEditorResolver.Current.GetByAlias(property.EditorAlias, true); if (paramEditor == null) { //we'll just map this to a text box diff --git a/src/Umbraco.Web/PropertyEditors/MediaPicker2PropertyEditor.cs b/src/Umbraco.Web/PropertyEditors/MediaPicker2PropertyEditor.cs index 7da647e707..2d9ee68b3b 100644 --- a/src/Umbraco.Web/PropertyEditors/MediaPicker2PropertyEditor.cs +++ b/src/Umbraco.Web/PropertyEditors/MediaPicker2PropertyEditor.cs @@ -7,7 +7,7 @@ namespace Umbraco.Web.PropertyEditors /// /// Media picker property editors that stores UDI /// - [PropertyEditor(Constants.PropertyEditors.MediaPicker2Alias, "Media Picker", PropertyEditorValueTypes.Text, "mediapicker", Group = "media", Icon = "icon-picture")] + [PropertyEditor(Constants.PropertyEditors.MediaPicker2Alias, "Media Picker", PropertyEditorValueTypes.Text, "mediapicker", IsParameterEditor = true, Group = "media", Icon = "icon-picture")] public class MediaPicker2PropertyEditor : PropertyEditor { public MediaPicker2PropertyEditor() diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Macros/editMacro.aspx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Macros/editMacro.aspx.cs index d3c5b11330..b40515578b 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Macros/editMacro.aspx.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Macros/editMacro.aspx.cs @@ -209,8 +209,9 @@ namespace umbraco.cms.presentation.developer } protected IEnumerable GetMacroParameterEditors() - { - return ParameterEditorResolver.Current.ParameterEditors; + { + // we need to show the depracated ones for backwards compatibility + return ParameterEditorResolver.Current.GetParameterEditors(true); } public void macroPropertyCreate(object sender, EventArgs e) diff --git a/src/umbraco.cms/businesslogic/macro/MacroProperty.cs b/src/umbraco.cms/businesslogic/macro/MacroProperty.cs index 0944324275..8d440857e8 100644 --- a/src/umbraco.cms/businesslogic/macro/MacroProperty.cs +++ b/src/umbraco.cms/businesslogic/macro/MacroProperty.cs @@ -100,8 +100,9 @@ namespace umbraco.cms.businesslogic.macro { if (_type == null) { - //we'll try to create one based on the resolved new parameter editors - var found = ParameterEditorResolver.Current.GetByAlias(ParameterEditorAlias); + //we'll try to create one based on the resolved new parameter editors + // we need to show the depracated ones for backwards compatibility + var found = ParameterEditorResolver.Current.GetByAlias(ParameterEditorAlias, true); if (found == null) { return null; From d74d2cd9456832039d2c0863e4c733916289d11d Mon Sep 17 00:00:00 2001 From: Emil Wangaa Date: Wed, 12 Apr 2017 14:24:10 +0200 Subject: [PATCH 16/16] Fixes U4-9732 Insert Value in new template editor missing standard metadata fields --- .../common/resources/contenttype.resource.js | 10 ++++++++++ .../insertfield/insertfield.controller.js | 6 ++++++ .../overlays/insertfield/insertfield.html | 18 ++++++++++++++++-- .../views/partialviewmacros/edit.controller.js | 2 +- .../src/views/partialviews/edit.controller.js | 2 +- .../src/views/templates/edit.controller.js | 2 +- .../Editors/ContentTypeController.cs | 14 ++++++++++++++ 7 files changed, 49 insertions(+), 5 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/resources/contenttype.resource.js b/src/Umbraco.Web.UI.Client/src/common/resources/contenttype.resource.js index 4c7b6f916e..365b4dfd44 100644 --- a/src/Umbraco.Web.UI.Client/src/common/resources/contenttype.resource.js +++ b/src/Umbraco.Web.UI.Client/src/common/resources/contenttype.resource.js @@ -92,6 +92,16 @@ function contentTypeResource($q, $http, umbRequestHelper, umbDataFormatter) { 'Failed to retrieve property type aliases'); }, + getAllStandardFields: function () { + + return umbRequestHelper.resourcePromise( + $http.get( + umbRequestHelper.getApiUrl( + "contentTypeApiBaseUrl", + "GetAllStandardFields")), + 'Failed to retrieve standard fields'); + }, + getPropertyTypeScaffold : function (id) { return umbRequestHelper.resourcePromise( $http.get( diff --git a/src/Umbraco.Web.UI.Client/src/views/common/overlays/insertfield/insertfield.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/overlays/insertfield/insertfield.controller.js index 141e7184f1..96f67649d6 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/overlays/insertfield/insertfield.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/common/overlays/insertfield/insertfield.controller.js @@ -12,6 +12,7 @@ vm.insertAfter; vm.recursive = false; vm.properties = []; + vm.standardFields = []; vm.date = false; vm.dateTime = false; vm.dateTimeSeparator = ""; @@ -41,6 +42,11 @@ contentTypeResource.getAllPropertyTypeAliases().then(function (array) { vm.properties = array; }); + + // Load all standard fields + contentTypeResource.getAllStandardFields().then(function (array) { + vm.standardFields = array; + }); } diff --git a/src/Umbraco.Web.UI.Client/src/views/common/overlays/insertfield/insertfield.html b/src/Umbraco.Web.UI.Client/src/views/common/overlays/insertfield/insertfield.html index 161be5060a..03bcd6d430 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/overlays/insertfield/insertfield.html +++ b/src/Umbraco.Web.UI.Client/src/views/common/overlays/insertfield/insertfield.html @@ -5,7 +5,14 @@
- +
@@ -24,7 +31,14 @@
- +
diff --git a/src/Umbraco.Web.UI.Client/src/views/partialviewmacros/edit.controller.js b/src/Umbraco.Web.UI.Client/src/views/partialviewmacros/edit.controller.js index f260d5f0c0..8030482f6e 100644 --- a/src/Umbraco.Web.UI.Client/src/views/partialviewmacros/edit.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/partialviewmacros/edit.controller.js @@ -322,9 +322,9 @@ } function insert(str) { + vm.editor.focus(); vm.editor.moveCursorToPosition(vm.currentPosition); vm.editor.insert(str); - vm.editor.focus(); // set form state to $dirty setFormState("dirty"); diff --git a/src/Umbraco.Web.UI.Client/src/views/partialviews/edit.controller.js b/src/Umbraco.Web.UI.Client/src/views/partialviews/edit.controller.js index 1b9ed2e1e0..d3e1ee6a4f 100644 --- a/src/Umbraco.Web.UI.Client/src/views/partialviews/edit.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/partialviews/edit.controller.js @@ -375,9 +375,9 @@ } function insert(str) { + vm.editor.focus(); vm.editor.moveCursorToPosition(vm.currentPosition); vm.editor.insert(str); - vm.editor.focus(); // set form state to $dirty setFormState("dirty"); diff --git a/src/Umbraco.Web.UI.Client/src/views/templates/edit.controller.js b/src/Umbraco.Web.UI.Client/src/views/templates/edit.controller.js index e516f2d742..e4434f5eca 100644 --- a/src/Umbraco.Web.UI.Client/src/views/templates/edit.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/templates/edit.controller.js @@ -616,9 +616,9 @@ function insert(str) { + vm.editor.focus(); vm.editor.moveCursorToPosition(vm.currentPosition); vm.editor.insert(str); - vm.editor.focus(); // set form state to $dirty setFormState("dirty"); diff --git a/src/Umbraco.Web/Editors/ContentTypeController.cs b/src/Umbraco.Web/Editors/ContentTypeController.cs index d6e6cbccf4..720eca184b 100644 --- a/src/Umbraco.Web/Editors/ContentTypeController.cs +++ b/src/Umbraco.Web/Editors/ContentTypeController.cs @@ -102,6 +102,20 @@ namespace Umbraco.Web.Editors return ApplicationContext.Services.ContentTypeService.GetAllPropertyTypeAliases(); } + /// + /// Gets all the standard fields. + /// + /// + [UmbracoTreeAuthorize( + Constants.Trees.DocumentTypes, Constants.Trees.Content, + Constants.Trees.MediaTypes, Constants.Trees.Media, + Constants.Trees.MemberTypes, Constants.Trees.Members)] + public IEnumerable GetAllStandardFields() + { + string[] preValuesSource = { "createDate", "creatorName", "level", "nodeType", "nodeTypeAlias", "pageID", "pageName", "parentID", "path", "template", "updateDate", "writerID", "writerName" }; + return preValuesSource; + } + /// /// Returns the avilable compositions for this content type /// This has been wrapped in a dto instead of simple parameters to support having multiple parameters in post request body