function processUploads() { var params; var node = getSelected()[0]; var parent = getDir(node); var path = ''; if(parent.id!=='#root') path = parent.id+'/'; if (uploadFolders.length) { var folder = path + uploadFolders.shift(); params = util.clone(ajaxOptions.params); //check exists loading.stop(); loading.fetch(ajaxOptions.url+'&cmd=file_exists&file='+encodeURIComponent(folder), { action: 'Checking '+folder, data: params, success: function(data) { if(data.file_exists===false) { var params = util.clone(ajaxOptions.params); params.dir = folder; loading.stop(); loading.fetch(ajaxOptions.url+'&cmd=newdir&path='+encodeURIComponent(folder), { data: params, action: 'Uploading '+folder, success: function(data) { processUploads(); } }); }else{ processUploads(); } } }); } else if(uploadFiles.length) { var file = uploadFiles.shift(); params = util.clone(ajaxOptions.params); params.file = path + file.path; params.content = file.content; loading.stop(); loading.fetch(ajaxOptions.url+'&cmd=upload', { action: 'uploading '+file.path, data: params, success: function(data) { processUploads(); } }); } else { //done! loading.stop(); refresh(); } }
handler: function() { loading.fetch('/api/sites?cmd=reboot&site='+currentSite, { action: 'Rebooting site '+site.name, success: function(data) { } }); },
OK: function() { var values = util.serializeObject($('#removeMasterPasswordForm')); var error = ''; //check password if (values.forceRemovePassword != 1) { if (createHash(createHash($('#currentMasterPassword').val())) != prefs.masterPasswordHash) { error += lang.currentPasswordIncorrectText; } } if (error) { prompt.alert({title:lang.errorText, msg:error}); } else { //create hash var params = {}; params.masterPassword = createHash(values.currentMasterPassword); params.forceRemovePassword = values.forceRemovePassword; loading.fetch(config.apiBaseUrl+'prefs?cmd=save_master_password', { action: 'removing master password', data: params, success: function(data) { prefs.useMasterPassword = false; storage.set('masterPassword', ''); prefs.masterPasswordHash = ''; $('#useMasterPassword').prop('checked', false); $('#changeMasterPassword').prop('disabled', true); $( "#dialog-removeMasterPasword" ).dialog( "close" ); $( "#dialog-removeMasterPasword" ).remove(); } }); } }
handler: function() { loading.fetch('/api/sites?cmd=logs&site='+currentSite, { action: 'Fetching logs '+site.name, success: function(data) { editors.create("server.log", data.content); } }); },
$('#shareSiteForm').on('click', 'a.delete', function() { loading.fetch('/api/share?cmd=delete&site='+currentSite+'&contact='+$(this).data('id'), { action: 'deleting user', success: function(data) { loadUsers(); } }); });
OK: function() { var url = combo.combobox('val'); if( !url ){ combo.combobox('focus'); return; } var extractFile = $('[name=extract]').prop('checked'); var node = getSelected()[0]; var parent = getDir(node); var path = parent.id; loading.fetch(ajaxOptions.url+'&cmd=uploadByURL', { action: 'uploading '+url, data: { url: url, path: path }, success: function(data) { //add node if it doesn't exist var node = tree.jstree(true).get_node(data.file); if(!node) { node = tree.jstree('create_node', parent, { 'type' : "file", 'id' : data.file, 'text' : util.basename(data.file), 'data' : { 'noRename' : true } }, 'last'); } //select node tree.jstree(true).deselect_all(); tree.jstree(true).select_node(node); //extract? if(extractFile) { extract({reference: node}); } //save url /* loading.fetch(config.apiBaseUrl+'uploadurls', { action: 'saving url '+url data: {url: url}, }); */ }, context: this }); $( this ).dialog( "close" ); }
handler: function() { loading.fetch('/api/sites?cmd=export&site='+currentSite, { action: 'Exporting site', success: function(data) { var link = $('<a href="data:text/xml;base64,'+btoa(data.content)+'" download="'+data.file+'"></a>').appendTo('body'); link.get(0).click(); link.remove(); } }); },
$('#shareSiteForm').submit(function(event){ event.preventDefault(); loading.fetch('/api/share?cmd=save&site=' + currentSite + '&email=' + $('#shareSiteForm input[name=email]').val(), { action: 'saving user', success: function(data) { $('#shareSiteForm input[name=email]').val(''); loadUsers(); } }); });
$('#uploadUrlForm .delete').click(function() { var url = combo.combobox('val'); if(!url) return; loading.fetch(config.apiBaseUrl+'uploadurls?cmd=delete', { action: 'Deleting upload url', data: {url: url}, success: function(data) { combo.combobox('val', ''); loadUploadUrls(); } }); });
function doImport(content){ $( "#dialog-import" ).dialog( "close" ); $( "#dialog-import" ).remove(); loading.fetch('/api/sites?cmd=import', { action: 'Importing site', data: { content: content }, success: function(data) { prompt.alert({title: 'Success', msg: data.imported+' site(s) imported.'}); currentSite = data.site; load(); } }); }
function loadUsers() { loading.fetch('/api/share?cmd=list&site='+currentSite, { action: 'getting users', success: function(data) { var html = ''; data.shared.forEach(function(item){ html = '<p>' + item.name + ' <a href="#" data-id="'+item.id+'" class="delete">X</a></p>'; }); $('#users').html(html); $('#shareSiteForm input[name=email]').focus(); } }); }
success: function(data) { if(data.file_exists===false) { var params = util.clone(ajaxOptions.params); params.dir = folder; loading.stop(); loading.fetch(ajaxOptions.url+'&cmd=newdir&path='+encodeURIComponent(folder), { data: params, action: 'Uploading '+folder, success: function(data) { processUploads(); } }); }else{ processUploads(); } }
OK: function(){ var values = util.serializeObject($('#masterPasswordForm')); var error = ''; //check password if (prefs.useMasterPassword) { if (createHash(createHash(values.currentMasterPassword)) != prefs.masterPasswordHash) { error += lang.currentPasswordIncorrectText + '<br>'; } } //check password length if (values.newMasterPassword.length < 1) { error += lang.passwordMinLengthText + '<br>'; } //check passwords match if (values.newMasterPassword != values.confirmMasterPassword) { error += lang.passwordNotMatchText + '<br>'; } if (error) { prompt.alert({title: lang.errorText, msg:error}); } else { //create hash var params = {}; if (prefs.useMasterPassword) { params.masterPassword = createHash(values.currentMasterPassword); params.masterPasswordHash = createHash(params.masterPassword); } params.useMasterPassword = true; params.newMasterPassword = createHash(values.newMasterPassword); loading.fetch(config.apiBaseUrl+'prefs?cmd=save_master_password', { action: 'saving master password', data: params, success: function(data) { storage.set('masterPassword', values.newMasterPassword); prefs.masterPasswordHash = data.masterPasswordHash; prefs.useMasterPassword = true; $('#useMasterPassword').prop('checked', true); $('#changeMasterPassword').prop('disabled', false); $( "#dialog-changeMasterPasword" ).dialog( "close" ); } }); } }
function downloadFile(data) { var inst = $.jstree.reference(data.reference), node = inst.get_node(data.reference); var file = node.id; loading.fetch(ajaxOptions.url+'&cmd=download&file='+encodeURIComponent(file), { action: 'downloading file', success: function(data) { var blob = util.b64toBlob(data.content); var evt = new Event('click'); var a = document.createElement('a'); a.download = util.basename(file); a.href = URL.createObjectURL(blob); a.dispatchEvent(evt); } }); }
OK: function() { var node = getSelected()[0]; var mode = $('#chmod-value').val(); var params = util.clone(ajaxOptions.params); params.file = node.id; params.mode = mode; loading.fetch(ajaxOptions.url+'&cmd=chmod&file='+encodeURIComponent(node.id)+'&mode='+mode, { action: 'chmod file', data: params, success: function(data) { node.data.perms = mode; var el = inst.get_node(node, true); el.trigger("change_node.jstree"); //FIXME supposed to update column $( "#dialog-chmod" ).dialog( "close" ); } }); }
handler: function(undef, e, confirmed) { if(!confirmed) { var me = this; prompt.confirm({ title: 'Delete site', msg: 'Are you sure?', fn: function(value) { switch(value) { case 'yes': $(me).trigger('click', [true]); return; default: return false; } } }); return; } loading.fetch('/api/sites?cmd=delete&site='+currentSite, { action: 'Deleting site '+site.name, success: function(data) { //remove this site from any active tabs $("li[data-site='"+currentSite+"']").attr('data-site', ''); //disable file tree $('#tree-container').hide(); //disable site options disableMenuItems(); currentSite = 0; storage.set('currentSite', currentSite); //refresh combo $( "#sites" ).combobox('val', ''); load(); } }); },
function _processQueue(queue) { if (queue.length) { var item = queue.shift(); var url = ajaxOptions.url; if(url.indexOf('?')==-1) { url+='?'; }else{ url+='&'; } url += 'cmd=paste'; var params = util.clone(ajaxOptions.params); params.dest = item.dest; params.path = item.path; params.isDir = item.isDir ? 1 : ''; params.site = clipboard.site; params.cut = clipboard.cut; loading.fetch(url, { action: 'Putting '+item.dest, data: params, success: function (result, request) { _processQueue(queue); } }); } else { if(clipboard.dest) { tree.jstree(true).refresh_node(clipboard.dest); }else{ refresh(); } loading.stop(); } }
function buildQueue(nodes, d) { var node; if(nodes.length) { node = nodes.shift(); } else { //console.log(queue); return; _processQueue(queue); return; } var parent = d ? d : inst.get_node(node.parent); var dest = parent.id; if (dest.substr(0,1)==='#') { dest = ''; } var path = node.id; var newName = node.text; if(node.text == newName) { newName = findAvailableName(parent, newName); } var newPath = newName; if (dest) { newPath = dest+'/'+newPath; } queue.push({ path: path, dest: dest+'/'+newName, isDir: (node.type!=='file') }); if (node.type=='file') { buildQueue(nodes, d); }else{ //get file list var url = ajaxOptions.url; if(url.indexOf('?')==-1) { url+='?'; } else { url+='&'; } url += 'cmd=list_all&site='+clipboard.site+'&path='+encodeURIComponent(path); var params = util.clone(ajaxOptions.params); params.path = path; params.site = clipboard.site; loading.fetch(url, { data: params, success: function (data) { for( i=0; i<data.files.length; i++ ){ //console.log(data.files[i]); var destPath = newPath + data.files[i].path.substr(path.length); if (dest) { dest = dest +'/' + destPath; } queue.push({ path: data.files[i].path, dest: destPath, isDir: data.files[i].isDir }); } //console.log(queue); buildQueue(nodes, d); } }); } }