define([ "jquery", "underscore", "utils", "classes/Extension", "mousetrap", "fileSystem", "text!html/documentSelectorSettingsBlock.html", ], function($, _, utils, Extension, mousetrap, fileSystem, documentSelectorSettingsBlockHTML) { var documentSelector = new Extension("documentSelector", 'Document Selector'); documentSelector.settingsBlock = documentSelectorSettingsBlockHTML; documentSelector.defaultConfig = { orderBy: "title", shortcutPrevious: "Ctrl+[", shortcutNext: "Ctrl+]" }; documentSelector.onLoadSettings = function() { utils.setInputValue("#select-document-selector-orderby", documentSelector.config.orderBy); utils.setInputValue("#input-document-selector-shortcut-previous", documentSelector.config.shortcutPrevious); utils.setInputValue("#input-document-selector-shortcut-next", documentSelector.config.shortcutNext); }; documentSelector.onSaveSettings = function(newConfig, event) { newConfig.orderBy = utils.getInputValue("#select-document-selector-orderby"); newConfig.shortcutPrevious = utils.getInputTextValue("#input-document-selector-shortcut-previous", event); newConfig.shortcutNext = utils.getInputTextValue("#input-document-selector-shortcut-next", event); }; var fileMgr = undefined; documentSelector.onFileMgrCreated = function(fileMgrParameter) { fileMgr = fileMgrParameter; }; var dropdownElt = undefined; var liMap = undefined; var liArray = undefined; var sortFunction = undefined; var selectFileDesc = undefined; var buildSelector = function() { liMap = {}; dropdownElt.empty(); _.chain(fileSystem).sortBy(sortFunction).each(function(fileDesc) { var aElt = $('').html(fileDesc.composeTitle()); aElt.click(function() { if(!liMap[fileDesc.fileIndex].is(".disabled")) { fileMgr.selectFile(fileDesc); } else { $("#wmd-input").focus(); } }); var liElt = $("
  • ").append(aElt); liMap[fileDesc.fileIndex] = liElt; if(fileDesc === selectFileDesc) { liElt.addClass("disabled"); } dropdownElt.append(liElt); }); liArray = _.values(liMap); }; documentSelector.onFileSelected = function(fileDesc) { selectFileDesc = fileDesc; buildSelector(); }; 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"); 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() { if(documentSelector.config.orderBy == "title") { sortFunction = function(fileDesc) { return fileDesc.title.toLowerCase(); }; } else if(documentSelector.config.orderBy == "mru") { sortFunction = function(fileDesc) { return -fileDesc.selectTime; }; } dropdownElt = $('