(function() { "use strict"; angular .module('shared') .component('menuShareFolder', { templateUrl: '/shared/js/angular/file-cabinet/menu-share-folder.html', controller: 'MenuShareFolder', bindings: { popover: '<', folder: '<' } }) .controller('MenuShareFolder', ['currentSubFolders', 'folderService', 'folders', 'messageHandler', function MenuShareFolderCtrl(currentSubFolders, folderService, folders, messageHandler) { var ctrl = this; ctrl.shareFolder = function () { currentSubFolders.setSkipSelect(true); if (ctrl.popover && ctrl.popover.popover) { ctrl.popover.popover.close(); } var shared = (ctrl.folder.shared_with == "n") ? 'district' : "n"; var data = { folder_id: ctrl.folder.id, shared_with: shared }; folderService.shareFolder(data).then( function (response) { var result = response.data; if (result == "1") { var children = [ctrl.folder]; var isShared = ((ctrl.folder.shared_with != "n") ? "n" : "district"); markAllSubfolders(children, isShared); var message = (isShared != "n" ? "This folder is now shared and can be viewed by all members of your organization." : "This folder is no longer shared and can only be viewed by you."); messageHandler.publishSuccess(message); } else { messageHandler.publishError('Could not share or unshare folder.'); } }, function (reason) { messageHandler.publishError('Could not share or unshare folder.'); } ); }; ctrl.canShare = function () { return folders.getHasTeachersToShareWith(); }; // Recursivly marks all subfolders as shared/unshared function markAllSubfolders(children, isShared) { for (var counter = 0; counter < children.length; counter++) { var oneFolder = children[counter]; oneFolder.shared_with = isShared; var newChildren = oneFolder.children; if (newChildren != null && newChildren.length > 0) { markAllSubfolders(newChildren, isShared); } } } ctrl.shareName = function () { if (ctrl.folder.shared_with != 'n') { return 'stop sharing'; } else { return 'share'; } }; }]); }());