(function() { "use strict"; angular .module('shared') .service('currentSubFolders', ['folders', 'folderService', 'messageHandler', '$rootScope', function(folders, folderService, messageHandler, $rootScope) { var currentFolder; var currentSubFolders; var currentFolderName; var currentFolderID; var currentFolderType; var currentFolderSubFolderCount = 0; var areFoldersMine = true; var areFoldersPublic = false; var areFoldersForEveryone = false; var skipSelect = false; var movePopoverOpen = false; var lastSavedFolderID = 0; var initialFolderID = 0; function getSkipSelect() { return skipSelect; } function setSkipSelect(val) { skipSelect = val; } function getMovePopoverOpen() { return movePopoverOpen; } function setMovePopoverOpen(val) { movePopoverOpen = val; } // Recursivly count open folders function countOpenSubfolders(children) { var tot = 0; if (children == null) { return tot; } for (var counter = 0;counter < children.length;counter++) { var oneFolder = children[counter]; tot++; if (oneFolder.folderOpen) { var newChildren = oneFolder.children; if (newChildren != null && newChildren.length > 0) { tot += countOpenSubfolders(newChildren); } } } return tot; } function setLastFolderID(folder) { if (!folders.getIsLiteracyEditor() && getAreFoldersForEveryone()) { return; } var id = folder != null && folder.id != null ? folder.id : -1; if (id == lastSavedFolderID) { return; } lastSavedFolderID = id; folderService.setLastFolderID({folder_id:id}).then( function (response) { //console.log('Save last folder id ' + id); }, function (reason) { console.log('Could not set last folder id.'); console.log(reason); } ); } function setInitialFolderID(id) { initialFolderID = id; //console.log('setInitialFolderID ' + id); //if (initialFolderID < 0 || folders.getMyFolders() == null) { // return; //} //var f = folders.findFolderForID(folders.getMyFolders(),initialFolderID); //initialFolderID = 0; //setCurrentSubFoldersAction(f,'private'); //setLastFolderID(f); } function setCurrentSubFolders(folder, type) { var f = folder; var folderList = type == 'everyone' ? folders.getEveryoneFolders() : folders.getMyFolders(); if (initialFolderID > 0 && folderList != null) { f = folders.findFolderForID(folderList,initialFolderID); initialFolderID = 0; setLastFolderID(f); } setCurrentSubFoldersAction(f,type); } function setCurrentSubFoldersAction(folder, type) { currentFolder = folder; if (folder === null) { currentFolderID = null; switch (type) { case 'everyone': currentFolderName = 'LAZ FILES'; currentFolderType = 'EVERYONE'; currentSubFolders = folders.getEveryoneFolders(); break; case 'public': currentFolderName = 'SHARED FILES'; currentFolderType = 'PUBLIC'; currentSubFolders = folders.getPublicFolders(); break; default: currentFolderName = 'MY FILES'; currentFolderType = 'MY'; currentSubFolders = folders.getMyFolders(); break; } folderService.readResources(null,type=='everyone'); emitCurrentFolderChanged(); } else { currentFolderName = folder.name; if (folder.children) { currentSubFolders = folder.children; } else { currentSubFolders = new Array(); } if (folder.id && (currentFolderID == null || currentFolderID != folder.id)) { currentFolderID = folder.id; folderService.readResources(folder,type=='everyone').then(function (response) { if (response) { emitCurrentFolderChanged(); } }); } else { emitCurrentFolderChanged(); } var searchFolders = null; switch (type) { case 'everyone': searchFolders = folders.getEveryoneFolders(); break; case 'public': searchFolders = folders.getPublicFolders(); break; default: searchFolders = folders.getMyFolders(); break; } var parent = null; if (folder.parent_resource_collection_id != null) { parent = folders.findFolderForID(searchFolders,folder.parent_resource_collection_id); } while (parent != null) { parent.folderOpen = true; if (parent.parent_resource_collection_id != null) { parent = folders.findFolderForID(searchFolders,parent.parent_resource_collection_id); } else { parent = null; } } } currentFolderSubFolderCount = currentSubFolders == null ? 0 : currentSubFolders.length; } function registerOnCurrentFolderChanged(scope, callback) { var eventListenDestructor = $rootScope.$on("currentFolderChanged", callback); scope.$on('$destroy', eventListenDestructor); } function emitCurrentFolderChanged() { $rootScope.$emit("currentFolderChanged"); } // var onRepos = function(response) { // customAssignmentID = response.data; // }; var onError = function(reason) { messageHandler.publishError('Could not read custom assignments.'); }; function hasNameConflict(parentFolder,name) { return folders.hasNameConflict(parentFolder,name); } function setAreFoldersMine(val) { areFoldersMine = val; } function getAreFoldersMine() { return areFoldersMine; } function setAreFoldersPublic(val) { areFoldersPublic = val; } function getAreFoldersPublic() { return areFoldersPublic; } function setAreFoldersForEveryone(val) { areFoldersForEveryone = val; } function getAreFoldersForEveryone() { return areFoldersForEveryone; } function getCurrentFolder() { return currentFolder; } function getCurrentFolderID() { return currentFolderID; } function getCurrentSubFolders() { return currentSubFolders; } function getCurrentFolderName() { return currentFolderName; } function getCurrentFolderType() { return currentFolderType; } function getCurrentFolderSubFolderCount() { return currentFolderSubFolderCount; } return { setLastFolderID: setLastFolderID, countOpenSubfolders: countOpenSubfolders, hasNameConflict: hasNameConflict, getMovePopoverOpen: getMovePopoverOpen, setMovePopoverOpen: setMovePopoverOpen, getSkipSelect: getSkipSelect, setSkipSelect: setSkipSelect, setAreFoldersMine: setAreFoldersMine, getAreFoldersMine: getAreFoldersMine, setAreFoldersPublic: setAreFoldersPublic, getAreFoldersPublic: getAreFoldersPublic, setAreFoldersForEveryone: setAreFoldersForEveryone, getAreFoldersForEveryone: getAreFoldersForEveryone, setCurrentSubFolders: setCurrentSubFolders, getCurrentSubFolders: getCurrentSubFolders, getCurrentFolderName: getCurrentFolderName, getCurrentFolderID: getCurrentFolderID, getCurrentFolderType: getCurrentFolderType, getCurrentFolder: getCurrentFolder, getCurrentFolderSubFolderCount: getCurrentFolderSubFolderCount, setInitialFolderID: setInitialFolderID, registerOnCurrentFolderChanged: registerOnCurrentFolderChanged } }]); }());