(function() { "use strict"; angular .module('shared') .component('selectedResources', { templateUrl: '/shared/js/angular/file-cabinet/selected-resources.html', controller: 'SelectedResource' }) .controller('SelectedResource', ['currentSubFolders', 'folderService', 'folders', 'fileCabinetDragAndDropService', 'MessageBox', 'messageHandler', '$scope', '$timeout', 'FeatureCheck', '$sce', 'SiteHelper', 'subjects', function SelectedResourcesCtrl(currentSubFolders, folderService, folders, fileCabinetDragAndDropService, MessageBox , messageHandler, $scope, $timeout, FeatureCheck, $sce, SiteHelper, subjects) { var ctrl = this; var currentLocation = fileCabinetDragAndDropService.source.selectedResources; var listView = "list"; var gridView = "grid"; ctrl.resourceView = gridView; ctrl.$onInit = function() { ctrl.isListViewEnabled = FeatureCheck.isFeatureEnabled('FILE_CABINET_RESOURCE_LIST_VIEW'); ctrl.isLinkedMaterialsEnabled = FeatureCheck.isFeatureEnabled('FILE_CABINET_LINKED_MATERIALS'); currentSubFolders.registerOnCurrentFolderChanged($scope, onCurrentFolderChanged); onCurrentFolderChanged(); }; ctrl.getNoResourcesLink = function() { switch (folders.getSubjectName()) { case subjects.SCIENCE_SUBJECT_NAME: return '/main/ViewPage/name/books/'; case subjects.READING_SUBJECT_NAME: default: return '/books/' } }; ctrl.downlinkURL = function(title2Href) { if (title2Href.indexOf('resource-retriever') >= 0) { return title2Href + '&literacy=' + (currentSubFolders.getAreFoldersForEveryone() ? 'y' : 'n'); } return title2Href; }; ctrl.getIsLiteracyEditor = function() { return folders.getIsLiteracyEditor(); }; ctrl.getAreFoldersForEveryone = function() { return currentSubFolders.getAreFoldersForEveryone(); }; var onCurrentFolderChanged = function() { ctrl.currentResources = []; $timeout(function() { ctrl.currentResources = folderService.getCurrentResources(); }); }; ctrl.setListView = function() { ctrl.resourceView = listView; }; ctrl.setGridView = function() { ctrl.resourceView = gridView; }; ctrl.isGridView = function() { return ctrl.resourceView === gridView; }; ctrl.setPopover = function (popoverCtrl) { ctrl.popoverCtrl = popoverCtrl; }; ctrl.getPopover = function () { return ctrl.popoverCtrl; }; ctrl.getPopover2 = function () { if (ctrl.popover && ctrl.popover.popover) { return ctrl.popover.popover; } return null; }; ctrl.closePopover = function () { if (ctrl.popoverCtrl) { ctrl.popoverCtrl.close(); } }; ctrl.assignResourcesSuccess = function () { console.log('assignResourcesSuccess'); }; ctrl.getReadingResources = function () { return folderService.getReadingResources(); }; ctrl.getAreFoldersMine = function () { return currentSubFolders.getAreFoldersMine(); }; ctrl.getAreFoldersPublic = function () { return currentSubFolders.getAreFoldersPublic(); }; ctrl.getAreFoldersForEveryone = function () { return currentSubFolders.getAreFoldersForEveryone(); }; ctrl.getHasRazPlus = function() { return folders.getHasRazPlus(); }; ctrl.getHasSaz = function() { return folders.getHasSaz(); }; ctrl.getCurrentFolderID = function () { return folderService.getCurrentFolderID(); }; ctrl.getResourcesFolderName = function () { return folderService.getCurrentFolderName(); }; ctrl.anyResources = function () { return ctrl.currentResources != null && ctrl.currentResources.length > 0; }; ctrl.anyFolders = function () { var r = currentSubFolders.getCurrentSubFolders(); return r != null && r.length > 0; }; ctrl.getResourcesFolder = function () { return folderService.getCurrentFolder(); }; ctrl.getCurrentFolderName = function () { return currentSubFolders.getCurrentFolderName(); }; ctrl.isCurrentFolderLocked = function () { return currentSubFolders.getCurrentFolder().locked; }; ctrl.getCurrentResources = function () { ctrl.currentResources = folderService.getCurrentResources(); return ctrl.currentResources; }; ctrl.showNotReadyForProd = function(data) { return currentSubFolders.getAreFoldersForEveryone() && folders.getIsLiteracyEditor() && data['ready_for_prod'] && data['ready_for_prod'] == 'n'; }; ctrl.getCurrentAssignableResources = function () { return folderService.getCurrentAssignableResources(); }; ctrl.anyAssignableResources = function () { var r = folderService.getCurrentAssignableResources(); return r != null && r.length > 0; }; ctrl.getCurrentAssignment = function() { return folderService.getCurrentAssignment(); }; ctrl.customAssignmentSaved = function() { folderService.getCurrentFolder().locked = true; folderService.getCurrentFolder().assignment = null; folderService.readAssignment(folderService.getCurrentFolder()); }; ctrl.customAssignmentDeleted = function() { folderService.getCurrentFolder().locked = false; folderService.getCurrentFolder().assignment = null; folderService.readAssignment(folderService.getCurrentFolder()); }; ctrl.displayMessage = function(message) { ctrl.messageBoxOpen = true; MessageBox.show({ message: message, responses: [ { id: 'continueMove', confirm: true, label: 'OK' } ] }).then(function (response) { ctrl.messageBoxOpen = false; }); }; /********************************************************************************* * The following functions are for the Drag and Drop Re-arrange List functionality * dnd library callbacks in shared ***********************************************************************************/ // Functions for dnd-draggable ctrl.onDragMoveResource = function(resourceRecord, index) { var draggingFromDropLocation = fileCabinetDragAndDropService.isDroppingOn(currentLocation); if (!ctrl.getAreFoldersPublic() && (fileCabinetDragAndDropService.isInsert() || draggingFromDropLocation)) { var currentFolder = folderService.getCurrentFolder(); var position = 0; if (draggingFromDropLocation) { var moveToIndex = fileCabinetDragAndDropService.getMoveToIndex(); position = index < moveToIndex ? moveToIndex - 1 : moveToIndex; } var sort = 1; var targetFolder = currentFolder; if (!draggingFromDropLocation && !ctrl.getAreFoldersForEveryone() && !ctrl.isCurrentFolderLocked()) { sort = 0; if (currentFolder.locked) { ctrl.displayMessage('You cannot move any resource from this folder because the associated custom assignment is in progress.'); return; } targetFolder = fileCabinetDragAndDropService.getTargetFolder(); if (targetFolder.id < 1) { ctrl.displayMessage('You cannot select \'MY FILES\' when moving or copying resources.'); return; } if (targetFolder.locked) { ctrl.displayMessage('You cannot move or copy any resource to this folder because the associated custom assignment is in progress.'); return; } if (currentFolder.id === targetFolder.id) { return; } } var language_id = resourceRecord.book_language_id === null ? 0 : resourceRecord.book_language_id; var book_id = resourceRecord.book_id === null ? 0 : resourceRecord.book_id; var non_book_id = resourceRecord.non_book_id === null ? 0 : resourceRecord.non_book_id; var material_id = resourceRecord.material_id === null ? 0 : resourceRecord.material_id; var pack_id = resourceRecord.pack_id === null ? 0 : resourceRecord.pack_id; var raz_video_id = resourceRecord.raz_video_id === null ? 0 : resourceRecord.raz_video_id; var source_folder_id = resourceRecord.resource_collection_id; var dest_folder_id = targetFolder.id; var data = { book_id : book_id, non_book_id : non_book_id, material_id : material_id, pack_id : pack_id, raz_video_id : raz_video_id, source_folder_id : source_folder_id, dest_folder_id : dest_folder_id, language_id : language_id, position : position, sort : sort, copy : false, everyonedest : folders.getIsLiteracyEditor(), everyonesource : folders.getIsLiteracyEditor() }; folderService.applyMoveResource(data).then( function (response) { fileCabinetDragAndDropService.resetDraggingItem(); if (!response.data) { messageHandler.publishError('Could not copy/move resource.'); } else if (sort === 0){ interfaceMoveResource(source_folder_id, resourceRecord, dest_folder_id, targetFolder); } else { interfaceSortResource(resourceRecord, position); } }, function (reason) { messageHandler.publishError('Could not copy/move resource.'); } ); } }; var interfaceMoveResource = function(source_folder_id, resourceRecord, dest_folder_id, targetFolder) { var allFolders = folders.getMyFolders(); var sourceFolder = folders.findFolderForID(allFolders, source_folder_id); if (sourceFolder != null) { var allResources = sourceFolder.resources.all; for (var counter=0;counter < allResources.length;counter++) { if (allResources[counter].group_id == resourceRecord.group_id) { sourceFolder.resources.all.splice(counter,1); break; } } var assignableResources = sourceFolder.resources.assignable; for (var counter=0;counter < assignableResources.length;counter++) { if (assignableResources[counter].group_id == resourceRecord.group_id) { sourceFolder.resources.assignable.splice(counter,1); break; } } } var destinationFolder = folders.findFolderForID(allFolders, dest_folder_id); if (destinationFolder != null) { destinationFolder.resources = null; } messageHandler.publishSuccess("Resource moved to folder '" + targetFolder.name + "'"); }; var interfaceSortResource = function(resourceRecord, movePosition) { var pos = ctrl.currentResources.indexOf(resourceRecord); ctrl.currentResources.splice(pos, 1); ctrl.currentResources.splice(movePosition, 0, resourceRecord); }; ctrl.onDragStart = function(draggingResource) { fileCabinetDragAndDropService.setSourceLocation(currentLocation); draggingResource.locked = ctrl.isCurrentFolderLocked(); fileCabinetDragAndDropService.setDraggingResource(draggingResource) }; ctrl.onCanceled = function() { fileCabinetDragAndDropService.resetDraggingItem(); }; // Functions for dnd-list ctrl.onDragOver = function(event) { fileCabinetDragAndDropService.setDropLocation(currentLocation); var dragoverElement = angular.element(event.target).closest('.dndDragover'); fileCabinetDragAndDropService.resetDragover(dragoverElement); if (!fileCabinetDragAndDropService.isDraggingFrom(currentLocation)) { return false; } return true; }; ctrl.onDrop = function(index) { fileCabinetDragAndDropService.setDropDetails(currentLocation, index, fileCabinetDragAndDropService.move.parentSort, null); return true; }; ctrl.htmlToPlaintext = function(text) { return text ? String(text).replace(/<[^>]+>/gm, '') : ''; }; ctrl.renderHtml = function (html) { return $sce.trustAsHtml(html); }; ctrl.getDownloadName = function(resource) { if (resource.raz_video_id) { return resource.titleText.split(' ').join('_').toLowerCase(); } return ''; }; ctrl.getDownloadType = function (resource) { if (resource.raz_video_id != null) { return 'video'; } return 'pdf'; }; }]); }());