diff --git a/UmbracoPackages/App_Plugins/brothers.uNesting/uNesting.html b/UmbracoPackages/App_Plugins/brothers.uNesting/uNesting.html index afe2845..9dd4bf8 100644 --- a/UmbracoPackages/App_Plugins/brothers.uNesting/uNesting.html +++ b/UmbracoPackages/App_Plugins/brothers.uNesting/uNesting.html @@ -67,7 +67,7 @@ - + diff --git a/UmbracoPackages/App_Plugins/brothers.uNesting/uNesting.js b/UmbracoPackages/App_Plugins/brothers.uNesting/uNesting.js index 23d5cf6..3b114e6 100644 --- a/UmbracoPackages/App_Plugins/brothers.uNesting/uNesting.js +++ b/UmbracoPackages/App_Plugins/brothers.uNesting/uNesting.js @@ -637,7 +637,7 @@ angular.module("umbraco").controller("brothers.uNesting.PropertyEditorController unsubscribe(); }); - $scope.clickHide = function ($event, node, alias) + $scope.clickHide = function ($event, node, $index) { $event.preventDefault(); $event.stopPropagation(); @@ -656,24 +656,13 @@ angular.module("umbraco").controller("brothers.uNesting.PropertyEditorController if (property) { property.value = property.value === '1' ? '0' : '1'; - $scope.setDirty(); if ($scope.inited) { - var newValues = []; - for (var i = 0; i < $scope.nodes.length; i++) - { - newValues.push(convertNodeIntoNCEntry($scope.nodes[i])); - } - $scope.model.value = newValues; + $scope.model.value[$index] = convertNodeIntoNCEntry(node); } } - - //if ($scope.realCurrentNode) - //{ - // $scope.$broadcast("ncSyncInVal", { key: $scope.realCurrentNode.key }); - //} }; $scope.canHide = function (item) diff --git a/UmbracoPackages/UnestingComposer.cs b/UmbracoPackages/UnestingComposer.cs new file mode 100644 index 0000000..b79cecb --- /dev/null +++ b/UmbracoPackages/UnestingComposer.cs @@ -0,0 +1,18 @@ +using Umbraco.Core.Composing; +using Umbraco.Core.PropertyEditors; +using Umbraco.Web.PropertyEditors.ValueConverters; + +namespace UmbracoPackages +{ + public class UnestingComposer : IUserComposer + { + public void Compose(Composition composition) + { + composition.WithCollectionBuilder() + .Remove() + .Remove() + .Append() + .Append(); + } + } +} \ No newline at end of file diff --git a/UmbracoPackages/UnestingValueConverters.cs b/UmbracoPackages/UnestingValueConverters.cs new file mode 100644 index 0000000..d182a13 --- /dev/null +++ b/UmbracoPackages/UnestingValueConverters.cs @@ -0,0 +1,39 @@ +using Newtonsoft.Json.Linq; +using System.Collections.Generic; +using System.Linq; +using Umbraco.Core.Logging; +using Umbraco.Core.Models.PublishedContent; +using Umbraco.Core.PropertyEditors; +using Umbraco.Web; +using Umbraco.Web.PropertyEditors.ValueConverters; +using Umbraco.Web.PublishedCache; + +namespace UmbracoPackages +{ + public class UnestingManyValueConverter : NestedContentManyValueConverter + { + /// + public UnestingManyValueConverter(IPublishedSnapshotAccessor publishedSnapshotAccessor, IPublishedModelFactory publishedModelFactory, IProfilingLogger proflog) : base(publishedSnapshotAccessor, publishedModelFactory, proflog) { } + + /// + public override object ConvertIntermediateToObject(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview) + { + return ((IList)base.ConvertIntermediateToObject(owner, propertyType, referenceCacheLevel, inter, preview)) + .Where(element => !element.HasValue("uNestingHide") || !element.Value("uNestingHide")); + } + } + + + public class UnestingSingleValueConverter : NestedContentSingleValueConverter + { + /// + public UnestingSingleValueConverter(IPublishedSnapshotAccessor publishedSnapshotAccessor, IPublishedModelFactory publishedModelFactory, IProfilingLogger proflog) : base(publishedSnapshotAccessor, publishedModelFactory, proflog) { } + + /// + public override object ConvertIntermediateToObject(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview) + { + IPublishedElement element = (IPublishedElement)base.ConvertIntermediateToObject(owner, propertyType, referenceCacheLevel, inter, preview); + return element == null || (element.HasValue("uNestingHide") && element.Value("uNestingHide")) : null : element; + } + } +} \ No newline at end of file