Add "remove all entries" property action to MNTP

This commit is contained in:
Kenn Jacobsen
2020-10-07 16:50:16 +02:00
committed by Nathan Woulfe
parent 43c00690b9
commit a655fba948

View File

@@ -15,7 +15,7 @@
* @param {any} editorService * @param {any} editorService
* @param {any} userService * @param {any} userService
*/ */
function contentPickerController($scope, $q, $routeParams, $location, entityResource, editorState, iconHelper, angularHelper, navigationService, localizationService, editorService, userService) { function contentPickerController($scope, $q, $routeParams, $location, entityResource, editorState, iconHelper, angularHelper, navigationService, localizationService, editorService, userService, overlayService) {
var vm = { var vm = {
labels: { labels: {
@@ -116,6 +116,14 @@ function contentPickerController($scope, $q, $routeParams, $location, entityReso
} }
}; };
var removeAllEntriesAction = {
labelKey: 'clipboard_labelForRemoveAllEntries',
labelTokens: [],
icon: 'trash',
method: removeAllEntries,
isDisabled: true
};
if ($scope.model.config) { if ($scope.model.config) {
//special case, if the `startNode` is falsy on the server config delete it entirely so the default value is merged in //special case, if the `startNode` is falsy on the server config delete it entirely so the default value is merged in
if (!$scope.model.config.startNode) { if (!$scope.model.config.startNode) {
@@ -129,6 +137,14 @@ function contentPickerController($scope, $q, $routeParams, $location, entityReso
if ($scope.model.validation && $scope.model.validation.mandatory && !$scope.model.config.minNumber) { if ($scope.model.validation && $scope.model.validation.mandatory && !$scope.model.config.minNumber) {
$scope.model.config.minNumber = 1; $scope.model.config.minNumber = 1;
} }
if ($scope.model.config.multiPicker === true && $scope.umbProperty) {
var propertyActions = [
removeAllEntriesAction
];
$scope.umbProperty.setPropertyActions(propertyActions);
}
} }
//Umbraco persists boolean for prevalues as "0" or "1" so we need to convert that! //Umbraco persists boolean for prevalues as "0" or "1" so we need to convert that!
@@ -275,6 +291,8 @@ function contentPickerController($scope, $q, $routeParams, $location, entityReso
angularHelper.getCurrentForm($scope).$setDirty(); angularHelper.getCurrentForm($scope).$setDirty();
$scope.model.value = currIds.join(); $scope.model.value = currIds.join();
} }
removeAllEntriesAction.isDisabled = currIds.length === 0;
}; };
$scope.showNode = function (index) { $scope.showNode = function (index) {
@@ -301,10 +319,13 @@ function contentPickerController($scope, $q, $routeParams, $location, entityReso
currIds.push(itemId); currIds.push(itemId);
$scope.model.value = currIds.join(); $scope.model.value = currIds.join();
} }
removeAllEntriesAction.isDisabled = false;
}; };
$scope.clear = function () { $scope.clear = function () {
$scope.model.value = null; $scope.model.value = null;
removeAllEntriesAction.isDisabled = true;
}; };
$scope.openEditor = function (item) { $scope.openEditor = function (item) {
@@ -362,6 +383,8 @@ function contentPickerController($scope, $q, $routeParams, $location, entityReso
//sync the sortable model //sync the sortable model
$scope.sortableModel = valueIds; $scope.sortableModel = valueIds;
removeAllEntriesAction.isDisabled = valueIds.length === 0;
//load current data if anything selected //load current data if anything selected
if (valueIds.length > 0) { if (valueIds.length > 0) {
@@ -507,6 +530,22 @@ function contentPickerController($scope, $q, $routeParams, $location, entityReso
} }
} }
function removeAllEntries() {
localizationService.localizeMany(["content_nestedContentDeleteAllItems", "general_delete"]).then(function (data) {
overlayService.confirmDelete({
title: data[1],
content: data[0],
close: function () {
overlayService.close();
},
submit: function () {
$scope.clear();
overlayService.close();
}
});
});
}
function init() { function init() {
userService.getCurrentUser().then(function (user) { userService.getCurrentUser().then(function (user) {