replace default NC value converters with uNesting converters by using a composer

This commit is contained in:
2019-08-30 22:20:40 +02:00
parent 56da96e46f
commit e62311991a
4 changed files with 60 additions and 14 deletions
@@ -67,7 +67,7 @@
<i class="icon icon-trash-alt"></i>
</a>
<a class="unesting-icon is-negative hidden-toggle" localize="title" title="general_visibility" ng-if="canHide(model.value[$index])" ng-click="clickHide($event, node, ncTabAlias);" prevent-default>
<a class="unesting-icon is-negative hidden-toggle" localize="title" title="general_visibility" ng-if="canHide(model.value[$index])" ng-click="clickHide($event, node, $index);" prevent-default>
<i class="icon icon-lock"></i>
</a>
</div>
@@ -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)
+18
View File
@@ -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<PropertyValueConverterCollectionBuilder>()
.Remove<NestedContentManyValueConverter>()
.Remove<NestedContentSingleValueConverter>()
.Append<UnestingManyValueConverter>()
.Append<UnestingSingleValueConverter>();
}
}
}
@@ -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
{
/// <inheritdoc />
public UnestingManyValueConverter(IPublishedSnapshotAccessor publishedSnapshotAccessor, IPublishedModelFactory publishedModelFactory, IProfilingLogger proflog) : base(publishedSnapshotAccessor, publishedModelFactory, proflog) { }
/// <inheritdoc />
public override object ConvertIntermediateToObject(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object inter, bool preview)
{
return ((IList<IPublishedElement>)base.ConvertIntermediateToObject(owner, propertyType, referenceCacheLevel, inter, preview))
.Where(element => !element.HasValue("uNestingHide") || !element.Value<bool>("uNestingHide"));
}
}
public class UnestingSingleValueConverter : NestedContentSingleValueConverter
{
/// <inheritdoc />
public UnestingSingleValueConverter(IPublishedSnapshotAccessor publishedSnapshotAccessor, IPublishedModelFactory publishedModelFactory, IProfilingLogger proflog) : base(publishedSnapshotAccessor, publishedModelFactory, proflog) { }
/// <inheritdoc />
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<bool>("uNestingHide")) : null : element;
}
}
}