From 349d6f69b3aad140e7bd8d8cfb608102776d1965 Mon Sep 17 00:00:00 2001 From: kjac Date: Sun, 11 Jun 2017 22:06:14 +0200 Subject: [PATCH] Enable multiple open fieldsets See #196 --- .../Models/ArchetypePreValue.cs | 3 +++ app/controllers/config.controller.js | 2 +- app/controllers/controller.js | 25 +++++++++++-------- .../archetype.config.fieldset.dialog.html | 3 +++ 4 files changed, 21 insertions(+), 12 deletions(-) diff --git a/app/Umbraco/Umbraco.Archetype/Models/ArchetypePreValue.cs b/app/Umbraco/Umbraco.Archetype/Models/ArchetypePreValue.cs index c98b418..d670bae 100644 --- a/app/Umbraco/Umbraco.Archetype/Models/ArchetypePreValue.cs +++ b/app/Umbraco/Umbraco.Archetype/Models/ArchetypePreValue.cs @@ -25,6 +25,9 @@ namespace Archetype.Models [JsonProperty("enableCollapsing")] public bool EnableCollapsing { get; set; } + [JsonProperty("enableMultipleOpen")] + public bool EnableMultipleOpen { get; set; } + [JsonProperty("enableCloning")] public bool EnableCloning { get; set; } diff --git a/app/controllers/config.controller.js b/app/controllers/config.controller.js index 715b3e1..a718175 100644 --- a/app/controllers/config.controller.js +++ b/app/controllers/config.controller.js @@ -6,7 +6,7 @@ angular.module("umbraco").controller("Imulus.ArchetypeConfigController", functio //define empty items var newPropertyModel = '{"alias": "", "remove": false, "collapse": false, "label": "", "helpText": "", "dataTypeGuid": "0cc0eba1-9960-42c9-bf9b-60e150b429ae", "value": ""}'; var newFieldsetModel = '{"alias": "", "remove": false, "collapse": false, "labelTemplate": "", "icon": "", "label": "", "properties": [' + newPropertyModel + '], "group": null}'; - var defaultFieldsetConfigModel = JSON.parse('{"showAdvancedOptions": false, "startWithAddButton": false, "hideFieldsetToolbar": false, "enableMultipleFieldsets": false, "hideFieldsetControls": false, "hidePropertyLabel": false, "maxFieldsets": null, "enableCollapsing": true, "enableCloning": false, "enableDisabling": true, "enableDeepDatatypeRequests": false, "enablePublishing": false, "enableMemberGroups": false, "enableCrossDragging": false, "fieldsets": [' + newFieldsetModel + '], "fieldsetGroups": []}'); + var defaultFieldsetConfigModel = JSON.parse('{"showAdvancedOptions": false, "startWithAddButton": false, "hideFieldsetToolbar": false, "enableMultipleFieldsets": false, "hideFieldsetControls": false, "hidePropertyLabel": false, "maxFieldsets": null, "enableCollapsing": true, "enableMultipleOpen": true, "enableCloning": false, "enableDisabling": true, "enableDeepDatatypeRequests": false, "enablePublishing": false, "enableMemberGroups": false, "enableCrossDragging": false, "fieldsets": [' + newFieldsetModel + '], "fieldsetGroups": []}'); //ini the model $scope.model.value = $scope.model.value || defaultFieldsetConfigModel; diff --git a/app/controllers/controller.js b/app/controllers/controller.js index 1fc3281..335faf5 100644 --- a/app/controllers/controller.js +++ b/app/controllers/controller.js @@ -597,17 +597,17 @@ angular.module("umbraco").controller("Imulus.ArchetypeController", function ($sc return; } - var iniState; - - if(fieldset) + // collapse all other fieldsets if "multiple open fieldsets" is not enabled + if(!$scope.model.config.enableMultipleOpen) { - iniState = fieldset.collapse; + _.each($scope.model.value.fieldsets, function (f) { + if(f != fieldset) + { + f.collapse = true; + } + }); } - _.each($scope.model.value.fieldsets, function(fieldset){ - fieldset.collapse = true; - }); - if(!fieldset && $scope.model.value.fieldsets.length == 1) { $scope.model.value.fieldsets[0].collapse = false; @@ -615,10 +615,13 @@ angular.module("umbraco").controller("Imulus.ArchetypeController", function ($sc return; } - if(iniState && fieldset) + if(fieldset) { - fieldset.collapse = !iniState; - $scope.loadedFieldsets.push(fieldset); + fieldset.collapse = !fieldset.collapse; + if($scope.loadedFieldsets.indexOf(fieldset) < 0) + { + $scope.loadedFieldsets.push(fieldset); + } } } diff --git a/app/views/archetype.config.fieldset.dialog.html b/app/views/archetype.config.fieldset.dialog.html index 02d14f8..a686220 100644 --- a/app/views/archetype.config.fieldset.dialog.html +++ b/app/views/archetype.config.fieldset.dialog.html @@ -11,6 +11,9 @@
+
+ +