(function() { "use strict"; angular .module('shared') .component('fileCabinet', { templateUrl: '/shared/js/angular/file-cabinet/file-cabinet.html', controller: 'FileCabinet', bindings: { initialfolderid: '<', loadLiteracyMapFirst: '<' } }) .controller('FileCabinet', ['folders', 'currentSubFolders', 'folderService', 'MessageBox', '$http', 'messageHandler', 'LAZ_CMS_URL', 'FeatureCheck', '$sce', function FileCabinetCtrl(folders, currentSubFolders, folderService, MessageBox, $http, messageHandler, LAZ_CMS_URL, FeatureCheck, $sce) { var ctrl = this; var lastFolderID = -1; var newFolderID = -1; var lastRootHeading = null; var trail = null; ctrl.folder = null; ctrl.fromactionbutton = true; ctrl.isStateStandardsEnabled = FeatureCheck.isFeatureEnabled("FILE_CABINET_STANDARDS"); ctrl.$onInit = function() { if (ctrl.initialfolderid != null && ctrl.initialfolderid > 0) { currentSubFolders.setInitialFolderID(ctrl.initialfolderid); } if (ctrl.loadLiteracyMapFirst && ctrl.loadLiteracyMapFirst > 0) { startWithLiteracyMap(); } }; function startWithLiteracyMap() { currentSubFolders.setAreFoldersForEveryone(true); currentSubFolders.setAreFoldersPublic(false); currentSubFolders.setAreFoldersMine(false); } ctrl.doShowEveryoneFolders = function() { return folders.doShowEveryoneFolders(); }; ctrl.getAriaExpanded = function() { return ctrl.popoverCtrl.is_open ? 'true' : 'false'; }; ctrl.hamburgerMenuClassName = function() { var folder = ctrl.folder; if (folder == undefined) { return 'js-hamburger-menu-0'; } return 'js-hamburger-menu-' + folder.id; }; ctrl.keyDown = function(event) { var keyboardKeys = { enter: 13, space: 32, down: 40 }; if (event.keyCode != keyboardKeys.enter && event.keyCode != keyboardKeys.space && event.keyCode != keyboardKeys.down) { return; } event.preventDefault(); if (ctrl.popoverCtrl) { ctrl.popoverCtrl.open(); } var element = $j(event.currentTarget); element.attr('aria-expanded','true'); }; ctrl.breadCrumbKeyDown = function(event,breadCrumb) { if (event.keyCode != 13 && event.keyCode != 32) { return; } event.preventDefault(); ctrl.clickedBreadCrumb(breadCrumb); }; ctrl.getEditCoreSkillsLink = function() { var currentFolder = currentSubFolders.getCurrentFolder(); var isCorrectLiteracyEditor = folders.isLiteracyEditorForEveryone(); return currentFolder && isCorrectLiteracyEditor ? LAZ_CMS_URL + 'laz-cms/index.php?module=LCMManager&action=edit&id=' + currentFolder.id : null }; ctrl.showNewFolderButton = function () { var folder = folderService.getCurrentFolder(); return folder == null || folders.getDepth(folder) < 8; }; ctrl.editFolderNameBlur = function() { var folder = folderService.getCurrentFolder(); if (folder == null || folder.name == null || folder.name.trim().length < 1 || folder.originalName == folder.name) { ctrl.cancelEditedFolderName(folder); return; } ctrl.saveEditedFolderName(); }; ctrl.editFolderNameFormSubmit = function() { var folder = folderService.getCurrentFolder(); if (folder == null || folder.name == null || folder.name.trim().length < 1) { return; } if (folder.originalName == folder.name) { ctrl.cancelEditedFolderName(folder); return; } ctrl.saveEditedFolderName(); }; ctrl.saveEditedFolderName = function () { var folder = folderService.getCurrentFolder(); if (folder == null || folder.name == null || folder.name.trim().length < 1 || folder.originalName == folder.name) { ctrl.cancelEditedFolderName(folder); return; } var type = currentSubFolders.getAreFoldersForEveryone() ? 'everyone' : 'private'; if (folder.parent_resource_collection_id == null) { currentSubFolders.setCurrentSubFolders(null, type); } else { var parent = folders.findParent(folder); currentSubFolders.setCurrentSubFolders(parent, type); } var cf = currentSubFolders.getCurrentSubFolders(); currentSubFolders.setCurrentSubFolders(folder, type); var duplicateName = false; for (var counter = 0; counter < cf.length; counter++) { if (folder.id == cf[counter].id) { continue; } if (folder.name.trim().toUpperCase() == cf[counter].name.trim().toUpperCase()) { duplicateName = true; break; } } if (duplicateName && !ctrl.messageBoxOpen) { ctrl.messageBoxOpen = true; MessageBox.show({ message: 'Another folder named "' + folder.name + '" already exists in this location. Do you wish to continue?', responses: [ { subtle: true, id: 'cancelRename', label: 'Cancel' }, { id: 'continueRename', confirm: true, label: 'Continue' } ] }).then(function (response) { ctrl.messageBoxOpen = false; if (response.id == 'continueRename') { ctrl.completeSaveEditedFolderName(folder); } else { ctrl.cancelEditedFolderName(folder); } }); } else if (!ctrl.messageBoxOpen) { ctrl.completeSaveEditedFolderName(folder); } }; ctrl.completeSaveEditedFolderName = function (folder) { var data = { folder_id: folder.id, folderName: encodeURI(folder.name), isEveryone: currentSubFolders.getAreFoldersForEveryone() }; var url = "/api/filecabinet/folder"; $http.put(url, JSON.stringify(data)).then(onRepos, onError); folder.originalName = null; }; var onRepos = function (response) { var result = response.data; if (result === "0") { console.error("An error occured in saveEditedFolderName - result code =0"); } }; ctrl.getCurrentFolderName = function () { return currentSubFolders.getCurrentFolderName(); }; ctrl.getCurrentFolder = function () { return currentSubFolders.getCurrentFolder(); }; ctrl.getDisplayFolderName = function() { var f = currentSubFolders.getCurrentFolder(); if (f == null) { return ctrl.rootHeading(); } return f.name; }; ctrl.trustAsHtml = function(html) { return $sce.trustAsHtml(html); }; var onError = function (reason) { console.error("An error occured in saveEditedFolderName/saveNewFolder"); console.error(reason); }; ctrl.cancelEditedFolderName = function (folder) { if (folder.originalName != null) { folder.name = folder.originalName; folder.originalName = null; } }; ctrl.setPopover = function (popoverCtrl) { ctrl.popoverCtrl = popoverCtrl; }; ctrl.getPopover = function () { return ctrl.popoverCtrl; }; ctrl.rootHeading = function () { if (currentSubFolders.getAreFoldersForEveryone()) { return folders.getLiteracyTypeName(); } if (currentSubFolders.getAreFoldersPublic()) { return 'Shared Files'; } return 'My Files'; }; ctrl.getIsLiteracyEditor = function() { return folders.getIsLiteracyEditor(); }; ctrl.getLiteracyTypeId = function() { return folders.getLiteracyTypeId(); }; ctrl.teacherInfoRead = function() { return folders.getTeacherInfoRead(); }; ctrl.endOfTrail = function (folder) { var cf = currentSubFolders.getCurrentFolder(); if (cf == null || folder == null) { return true; } return (folder.id == 0 && cf == null) || (folder.id == cf.id); }; ctrl.clickedBreadCrumb = function (folder) { var cf = null; var isMine = false; var isPublic = false; var isEveryone = false; var shareWord = 'private'; if (currentSubFolders.getAreFoldersMine()) { isMine = true; shareWord = 'private'; } if (currentSubFolders.getAreFoldersPublic()) { isPublic = true; shareWord = 'public'; } if (currentSubFolders.getAreFoldersForEveryone()) { isEveryone = true; shareWord = 'everyone'; } if (folder.id != 0) { var allFolders; if (isEveryone) { allFolders = folders.getEveryoneFolders(); } else if (isPublic) { allFolders = folders.getPublicFolders(); } else { allFolders = folders.getMyFolders(); } cf = folders.findFolderForID(allFolders, folder.id); } currentSubFolders.setCurrentSubFolders(cf, shareWord); currentSubFolders.setAreFoldersForEveryone(isEveryone); currentSubFolders.setAreFoldersPublic(isPublic); currentSubFolders.setAreFoldersMine(isMine); if (isMine) { currentSubFolders.setLastFolderID(cf); } }; ctrl.getAreFoldersPublic = function () { return currentSubFolders.getAreFoldersPublic(); }; ctrl.getAreFoldersForEveryone = function () { return currentSubFolders.getAreFoldersForEveryone(); }; ctrl.showCopyFolderButton = function () { return ((currentSubFolders.getAreFoldersForEveryone() && !folders.getIsLiteracyEditor()) || currentSubFolders.getAreFoldersPublic()) && currentSubFolders.getCurrentFolder() != null && !currentSubFolders.getCurrentFolder().owned_by_me && !currentSubFolders.getCurrentFolder().is_school_folder; }; ctrl.breadCrumbTrail = function () { var allFolders = null; var cf = currentSubFolders.getCurrentFolder(); ctrl.folder = cf; var folderID = (cf == null) ? 0 : cf.id; lastRootHeading = lastRootHeading == null ? ctrl.rootHeading() : lastRootHeading; if (!folders.getResetLastFolder() && folderID == lastFolderID && ctrl.rootHeading() == lastRootHeading) { return trail; } folders.setResetLastFolder(false); lastRootHeading = ctrl.rootHeading(); lastFolderID = folderID; trail = []; while (cf != null) { trail.splice(0, 0, cf); if (cf.parent_resource_collection_id && cf.parent_resource_collection_id !== 0) { if (allFolders == null) { if (currentSubFolders.getAreFoldersForEveryone()) { allFolders = folders.getEveryoneFolders(); } else if (currentSubFolders.getAreFoldersPublic()) { allFolders = folders.getPublicFolders(); } else { allFolders = folders.getMyFolders(); } } cf = folders.findFolderForID(allFolders, cf.parent_resource_collection_id); } else { cf = null; } } var rootRec = {id: "0", name: lastRootHeading}; trail.splice(0, 0, rootRec); return trail; }; ctrl.addNewFolder = function () { var nf = {}; nf.id = newFolderID--; nf.ready_for_prod = folders.getIsLiteracyEditor() ? 'n' : 'y'; nf.is_lesson_plan = 'n'; nf.shared_with = 'n'; nf.shared_by = null; nf.editMode = true; nf.originalName = 'new folder'; nf.name = ''; var parent = currentSubFolders.getCurrentFolder(); if (parent != null) { nf.parent_resource_collection_id = parent.id; nf.is_lesson_plan = parent.is_lesson_plan; nf.shared_with = parent.shared_with; if (parent.children == null) { parent.children = []; } parent.children.unshift(nf); currentSubFolders.setCurrentSubFolders(parent, currentSubFolders.getAreFoldersForEveryone() ? 'everyone' : 'private'); } else { if (currentSubFolders.getAreFoldersForEveryone()) { if (folders.getEveryoneFolders() === null) { folders.setToEmptyList(); currentSubFolders.setCurrentSubFolders(null, 'everyone'); } currentSubFolders.getCurrentSubFolders().unshift(nf); currentSubFolders.setCurrentSubFolders(null, 'everyone'); } else { if (folders.getMyFolders() === null) { folders.setToEmptyList(); currentSubFolders.setCurrentSubFolders(null, 'private'); } currentSubFolders.getCurrentSubFolders().unshift(nf); currentSubFolders.setCurrentSubFolders(null, 'private'); } } }; }]); }());