(function() { "use strict"; angular.module('shared') .component('menuDeleteFolder', { templateUrl: '/shared/js/angular/file-cabinet/menu-delete-folder.html', controller: 'MenuDeleteFolder', bindings: { popover: '<', folder: '<', resource: '<', locked: '<' } }) .controller('MenuDeleteFolder', ['folderService', 'currentSubFolders', 'folders', 'MessageBox', 'messageHandler', 'fileCabinetRibbonService','MenuKeyboardService', function MenuDeleteFolderCtrl(folderService, currentSubFolders, folders, MessageBox, messageHandler, fileCabinetRibbonService,MenuKeyboardService) { var ctrl = this; var folderToRemove = null; ctrl.keyDown = function($event) { MenuKeyboardService.keyDown($event, ctrl.removeFolder, ctrl.getHamburgerMenuClass(), ctrl.popover); }; ctrl.displayMessage = function(message) { currentSubFolders.setSkipSelect(true); if (ctrl.popover && ctrl.popover.popover) { ctrl.popover.popover.close(); } ctrl.messageBoxOpen = true; MessageBox.show({ message: message, responses: [ { id: 'continueMove', confirm: true, label: 'OK' } ] }).then(function (response) { ctrl.messageBoxOpen = false; }); }; ctrl.getHamburgerMenuClass = function() { return ctrl.isFolder() ? 'js-hamburger-menu-' + ctrl.folder.id : 'js-hamburger-menu-r-' + ctrl.resource.id; }; ctrl.isLocked = function() { return ctrl.locked || (ctrl.folder != null && ctrl.folder.locked); }; ctrl.isFolder = function() { return ctrl.folder != null; }; ctrl.removeResourcesAction = function (folder_id, group_id, type_id, language_id) { var isEveryoneFolder = currentSubFolders.getAreFoldersForEveryone(); if (!isEveryoneFolder && folderService.getCurrentFolder().locked) { ctrl.displayMessage('You cannot delete any resource from this folder because the associated custom assignment is in progress.'); return; } if (!ctrl.messageBoxOpen) { ctrl.messageBoxOpen = true; MessageBox.show({ message: 'Are you sure you want to remove this resource?', responses: [ { subtle: true, label: 'Cancel' }, { id: 'removeResource', confirm: true, label: 'Remove Resource' } ] }).then(function (response) { ctrl.messageBoxOpen = false; if (response.id == 'removeResource') { ctrl.removePending = true; folderService.removeResourceFromFolder(folder_id, group_id, type_id, language_id,isEveryoneFolder).then( function (response) { var result = response.data; if (result !== "0") { folderService.removeResource(result, language_id); fileCabinetRibbonService.decrementResourceCount(); } else { messageHandler.publishError('Could not remove resource.'); } }, function (reason) { messageHandler.publishError('Could not remove resource.'); } ); } }); } }; ctrl.anyLockedBelow = function(children) { for (var counter = 0;counter < children.length;counter++) { if (children[counter].locked) { return true; } if (children[counter].children != null && children[counter].children.length > 0) { if (ctrl.anyLockedBelow(children[counter].children)) { return true; } } } return false; }; ctrl.removeFolder = function () { var folder = ctrl.folder; if (ctrl.resource != null) { // delete resource ctrl.removeResourcesAction(ctrl.resource.resource_collection_id, ctrl.resource.group_id, ctrl.resource.rtype, ctrl.resource.group_language_id); return; } var isEveryoneFolder = currentSubFolders.getAreFoldersForEveryone(); if (!isEveryoneFolder && folder.locked) { ctrl.displayMessage('You cannot delete this folder because the associated custom assignment is in progress.'); return; } if (!isEveryoneFolder && folder.children != null && folder.children.length > 0 && ctrl.anyLockedBelow(folder.children)) { ctrl.displayMessage("You cannot delete this folder because one of it's sub-folders has an associated custom assignment that is in progress."); return; } currentSubFolders.setSkipSelect(true); if (ctrl.popover && ctrl.popover.popover) { ctrl.popover.popover.close(); } folderToRemove = folder; if (ctrl.removePending) { return; } var message = 'Are you sure you want to remove the folder "' + folder.name + '"'; var subFolderCount = folders.countFolders(folder); var removeLabel = 'Remove Folder'; if (subFolderCount > 1) { message = message + ', as well as it\'s ' + (subFolderCount - 1) + ' subfolder'; if (subFolderCount > 2) { message = message + 's'; } removeLabel = removeLabel + 's'; } message = message + '?'; MessageBox.show({ message: message, responses: [ { subtle: true, label: 'Cancel' }, { id: 'removeFolder', confirm: true, label: removeLabel } ] }).then(function (response) { if (response.id == 'removeFolder') { ctrl.removePending = true; folderService.removeFolder(folder.id,isEveryoneFolder).then( function (response) { var result = response.data; if (result != "0") { folders.removeFolderFromList(isEveryoneFolder ? folders.getEveryoneFolders() : folders.getMyFolders(), result); var currentFolder = currentSubFolders.getCurrentFolder(); if (currentFolder != null && currentFolder.id == result) { currentFolder = folders.findParent(folderToRemove); // select the parent folder } currentSubFolders.setCurrentSubFolders(currentFolder, isEveryoneFolder ? 'everyone' : 'private'); } else { messageHandler.publishError('Could not delete folder.'); } }, function (reason) { messageHandler.publishError('Could not delete folder.'); } ); } }); }; }]); }());