From 9859f1b0d385972f14b85e971ac2c23bce46ee1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 12 Mar 2020 15:48:26 +0100 Subject: [PATCH] clean up and prepare for implementing settings --- .../common/services/blockeditor.service.js | 31 ++++++++++---- .../blockeditor.controller.js} | 5 ++- .../blockeditor.html} | 14 +++++-- .../blocklist/blocklist.component.html | 6 +++ .../blocklist/blocklist.component.js | 42 +++++++++++++------ src/Umbraco.Web.UI/Umbraco/config/lang/da.xml | 1 + src/Umbraco.Web.UI/Umbraco/config/lang/en.xml | 1 + .../Umbraco/config/lang/en_us.xml | 1 + 8 files changed, 75 insertions(+), 26 deletions(-) rename src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/{elementeditor/elementeditor.controller.js => blockeditor/blockeditor.controller.js} (75%) rename src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/{elementeditor/elementeditor.html => blockeditor/blockeditor.html} (69%) diff --git a/src/Umbraco.Web.UI.Client/src/common/services/blockeditor.service.js b/src/Umbraco.Web.UI.Client/src/common/services/blockeditor.service.js index c6613e0c60..8df95bb684 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/blockeditor.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/blockeditor.service.js @@ -82,12 +82,10 @@ /** - * Used to create a scoped watcher for a property on a blockModel. + * Used to create a scoped watcher for a content property on a blockModel. */ - function createPropWatcher(blockModel, prop) { - + function createContentModelPropWatcher(blockModel, prop) { return function() { - // sync data: blockModel.contentModel[prop.alias] = prop.value; @@ -95,7 +93,16 @@ // TODO: could use a debounce. blockModel.label = getBlockLabel(blockModel); } + } + /** + * Used to create a scoped watcher for a settings property on a blockModel. + */ + function createSettingsModelPropWatcher(blockModel, prop) { + return function() { + // sync data: + blockModel.layoutModel.settings[prop.alias] = prop.value; + } } @@ -143,7 +150,7 @@ this.blockConfigurations.forEach(blockConfiguration => { scaffoldAliases.push(blockConfiguration.contentTypeAlias); if (blockConfiguration.settingsElementTypeAlias != null) { - scaffoldAliases.push(elementType.settingsElementTypeAlias); + scaffoldAliases.push(blockConfiguration.settingsElementTypeAlias); } }); @@ -233,7 +240,12 @@ blockModel.layoutModel = layoutEntry; blockModel.watchers = []; - // TODO: settings + // TODO: implement settings + + // create ElementTypeModel of settings + // store ElementTypeModel in blockModel.settings + // setup watchers for mapping + // Add blockModel to our isolated scope to enable watching its values: this.isolatedScope.blockModels["_"+blockModel.key] = blockModel; @@ -249,7 +261,7 @@ // Do notice that it is not performing a deep watch, meaning that we are only watching primatives and changes directly to the object of property-value. // But we like to sync non-primative values as well! Yes, and this does happen, just not through this code, but through the nature of JavaScript. // Non-primative values act as references to the same data and are therefor synced. - blockModel.watchers.push(this.isolatedScope.$watch("blockModels._"+blockModel.key+".content.variants[0].tabs["+t+"].properties["+p+"].value", createPropWatcher(blockModel, prop))); + blockModel.watchers.push(this.isolatedScope.$watch("blockModels._"+blockModel.key+".content.variants[0].tabs["+t+"].properties["+p+"].value", createContentModelPropWatcher(blockModel, prop))); } } @@ -286,7 +298,8 @@ mapToPropertyModel(blockModel.content, blockModel.contentModel); - // TODO: sync settings to layout entry. + // TODO: implement settings, sync settings to layout entry. + // mapToPropertyModel(blockModel.settings, blockModel.layoutModel.settings) }, @@ -318,7 +331,7 @@ } if (blockConfiguration.settingsElementTypeAlias != null) { - // TODO: Settings. + entry.settings = {}; } return entry; diff --git a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/elementeditor/elementeditor.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/blockeditor/blockeditor.controller.js similarity index 75% rename from src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/elementeditor/elementeditor.controller.js rename to src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/blockeditor/blockeditor.controller.js index a054e64784..fea337f31f 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/elementeditor/elementeditor.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/blockeditor/blockeditor.controller.js @@ -1,12 +1,15 @@ //used for the media picker dialog angular.module("umbraco") -.controller("Umbraco.Editors.ElementEditorController", +.controller("Umbraco.Editors.BlockEditorController", function ($scope) { var vm = this; vm.content = $scope.model.content; + // TODO: implement settings — do notice that settings is optional. + //vm.settings = $scope.model.settings; + vm.title = $scope.model.title; vm.saveAndClose = function() { diff --git a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/elementeditor/elementeditor.html b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/blockeditor/blockeditor.html similarity index 69% rename from src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/elementeditor/elementeditor.html rename to src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/blockeditor/blockeditor.html index e5c43468af..b52480c2a7 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/elementeditor/elementeditor.html +++ b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/blockeditor/blockeditor.html @@ -1,6 +1,6 @@ -
+
- + - + + + + +
diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/blocklist/blocklist.component.html b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/blocklist/blocklist.component.html index 07a07ee529..7f002846d7 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/blocklist/blocklist.component.html +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/blocklist/blocklist.component.html @@ -19,6 +19,12 @@
+