define([ "jquery", "underscore", "file-system" ], function($, _, fileSystem) { var documentSelector = { extensionId: "documentSelector", extensionName: "Document selector", settingsBloc: '

Builds the "Open document" dropdown menu.

' }; var fileMgr = undefined; documentSelector.onFileMgrCreated = function(fileMgrParameter) { fileMgr = fileMgrParameter; }; var liMap = undefined; var buildSelector = function() { function composeTitle(fileDesc) { var result = []; var syncAttributesList = _.values(fileDesc.syncLocations); var publishAttributesList = _.values(fileDesc.publishLocations); var attributesList = syncAttributesList.concat(publishAttributesList); _.chain(attributesList).sortBy(function(attributes) { return attributes.provider.providerId; }).each(function(attributes) { result.push(''); }); result.push(" "); result.push(fileDesc.title); return result.join(""); } liMap = {}; $("#file-selector li:not(.stick)").empty(); _.chain(fileSystem).sortBy(function(fileDesc) { return fileDesc.title.toLowerCase(); }).each(function(fileDesc) { var a = $('').html(composeTitle(fileDesc)).click(function() { if(!liMap[fileDesc.fileIndex].is(".disabled")) { fileMgr.selectFile(fileDesc); } }); var li = $("
  • ").append(a); liMap[fileDesc.fileIndex] = li; $("#file-selector").append(li); }); }; documentSelector.onFileSelected = function(fileDesc) { if(liMap === undefined) { buildSelector(); } $("#file-selector li:not(.stick)").removeClass("disabled"); liMap[fileDesc.fileIndex].addClass("disabled"); }; documentSelector.onFileCreated = buildSelector; documentSelector.onFileDeleted = buildSelector; documentSelector.onTitleChanged = buildSelector; documentSelector.onSyncExportSuccess = buildSelector; documentSelector.onSyncRemoved = buildSelector; documentSelector.onNewPublishSuccess = buildSelector; documentSelector.onPublishRemoved = buildSelector; // Filter for search input in file selector function filterFileSelector(filter) { var liList = $("#file-selector li:not(.stick)"); liList.show(); if(filter) { var words = filter.toLowerCase().split(/\s+/); liList.each(function() { var fileTitle = $(this).text().toLowerCase(); if(_.some(words, function(word) { return fileTitle.indexOf(word) === -1; })) { $(this).hide(); } }); } } documentSelector.onReady = function() { $(".action-open-file").click(function() { filterFileSelector(); _.defer(function() { $("#file-search").val("").focus(); }); }); $("#file-search").keyup(function() { filterFileSelector($(this).val()); }).click(function(event) { event.stopPropagation(); }); }; return documentSelector; });