diff --git a/html/auth/github.html b/html/auth/github.html index 49ab45c8..67f57fee 100644 --- a/html/auth/github.html +++ b/html/auth/github.html @@ -11,9 +11,9 @@ if (opener) { var CloudCmd = opener.CloudCmd; - CloudCmd.getModules(function(pModules) { + CloudCmd.getModules(function(error, modules) { var Util = opener.Util, - Storage = Util.findObjByNameInArr(pModules, 'storage'), + Storage = Util.findObjByNameInArr(modules, 'storage'), GitHub = Util.findObjByNameInArr(Storage, 'GitHub'), GitHub_ID = GitHub && GitHub.key; diff --git a/lib/client.js b/lib/client.js index 8f3e96b9..b9c910ca 100644 --- a/lib/client.js +++ b/lib/client.js @@ -203,7 +203,7 @@ var Util, DOM, CloudFunc; }); }); - CloudCmd.getModules(function(modules) { + CloudCmd.getModules(function(error, modules) { var storageObj, mod, path, STORAGE = 'storage', showLoad = Images.showLoad.bind(Images), @@ -262,7 +262,7 @@ var Util, DOM, CloudFunc; Listeners.initKeysPanel(); - CloudCmd.getConfig(function(config) { + CloudCmd.getConfig(function(error, config) { var localStorage = config.localStorage, dirPath = DOM.getCurrentDirPath(); @@ -290,26 +290,32 @@ var Util, DOM, CloudFunc; func(callback); }; - function getSystemFile(pGlobal, pURL) { - - function lGetSysFile(callback) { - Util.exec.if(pGlobal, callback, function() { + function getSystemFile(global, url) { + var get = function (callback) { + var success = Util.exec.with(callback, null); + + Util.exec.if(global, success, function() { DOM.load.ajax({ - url : pURL, - success : function(pLocal) { - pGlobal = pLocal; - Util.exec(callback, pLocal); + url : url, + success : function(local) { + global = local; + success(local); + }, + error : function(error) { + callback(error); } }); }); - } + }; - return lGetSysFile; + return get; } this.setConfig = function(config) { Config = config; }; this.getConfig = function(callback) { - Util.exec.if(Config, callback, function() { + var func = Util.exec.with(callback, null); + + Util.exec.if(Config, func, function(callback) { var RESTful = DOM.RESTful; RESTful.Config.read(function(config) { @@ -409,7 +415,7 @@ var Util, DOM, CloudFunc; CloudCmd.getLinkTemplate ]; - Util.exec.parallel(funcs, function(templFile, templPath, templPathLink, templLink) { + Util.exec.parallel(funcs, function(error, templFile, templPath, templPathLink, templLink) { var n, found, varCurrent, varName, current, dir = DOM.getCurrentDirName(), name = DOM.getCurrentName(), diff --git a/lib/client/config.js b/lib/client/config.js index 315cfa78..d97510b0 100644 --- a/lib/client/config.js +++ b/lib/client/config.js @@ -46,11 +46,11 @@ var CloudCmd, Util, DOM; } }; - function fillTemplate(template) { + function fillTemplate(error, template) { if (!Template) Template = template; - CloudCmd.getConfig(function(config) { + CloudCmd.getConfig(function(error, config) { var div, data, inputs, inputFirst, focus, obj; diff --git a/lib/client/dom.js b/lib/client/dom.js index 25426459..44604a1e 100644 --- a/lib/client/dom.js +++ b/lib/client/dom.js @@ -333,52 +333,68 @@ var CloudCmd, Util, DOM, CloudFunc, Dialog; return ret; } - function loadRemote(name, callback) { + this.loadRemote = function(name, callback) { var getConfig = CloudCmd.getConfig, getModules = CloudCmd.getModules; - Util.exec.parallel([getConfig, getModules], function(config, modules) { - var load = DOM.load, + Util.exec.parallel([getConfig, getModules], function(error, config, modules) { + var remoteTmpls, local, remote, + load = DOM.load, online = config.online && navigator.onLine, remoteObj = Util.findObjByNameInArr(modules, 'remote'), - jquery = Util.findObjByNameInArr(remoteObj, name), + module = Util.findObjByNameInArr(remoteObj, name), - version = jquery.version, - local = jquery.local, - remoteTmpl = jquery.remote, - - remote = Util.render(remoteTmpl, { - version: version - }), + version = module.version, + isArray = Util.isArray(module.local), funcON = function() { - load.js(remote, { - onload : callback, - onerror : funcOFF + load.parallel(remote, function(error) { + if (error) + funcOFF(); + else + callback(); }); }, funcOFF = function() { - load.js(local, { - onload : callback - }); + load.parallel(local, callback); }; - + + if (isArray) { + remoteTmpls = module.remote; + local = module.local; + } else { + remoteTmpls = [module.remote]; + local = [module.local]; + } + + remote = remoteTmpls.map(function(item) { + return Util.render(item, { + version: version + }); + }); + Util.exec.if(online, funcON, funcOFF); }); - } + + return DOM; + }; /** * load jquery from google cdn or local copy * @param callback */ this.loadJquery = function(callback) { - loadRemote('jquery', callback); + var ret = DOM.loadRemote('jquery', callback); + + return ret; }; this.loadSocket = function(callback) { - loadRemote('socket', callback); + var ret = DOM.loadRemote('socket', callback); + + return ret; }; /** function loads css and js of Menu @@ -1201,7 +1217,7 @@ var CloudCmd, Util, DOM, CloudFunc, Dialog; * @param callback */ this.saveDataToStorage = function(name, data, hash, callback) { - CloudCmd.getConfig(function(config) { + CloudCmd.getConfig(function(error, config) { var allowed = config.localStorage, isDir = DOM.isCurrentIsDir(), nameHash = name + '-hash', @@ -1234,7 +1250,7 @@ var CloudCmd, Util, DOM, CloudFunc, Dialog; * @param callback */ this.getDataFromStorage = function(name, callback) { - CloudCmd.getConfig(function(config) { + CloudCmd.getConfig(function(error, config) { var Storage = DOM.Storage, nameHash = name + '-hash', nameData = name + '-data', diff --git a/lib/client/edit.js b/lib/client/edit.js index 4a618423..f64ec8bb 100644 --- a/lib/client/edit.js +++ b/lib/client/edit.js @@ -234,7 +234,7 @@ var CloudCmd, Util, DOM, CloudFunc, ace, DiffProto, diff_match_patch, Zip, MenuI var path = Info.path, value = Ace.getValue(); - CloudCmd.getConfig(function(config) { + CloudCmd.getConfig(function(error, config) { var isDiff = config.diff, isZip = config.zip; diff --git a/lib/client/listeners.js b/lib/client/listeners.js index 62bda20a..c4f25b68 100644 --- a/lib/client/listeners.js +++ b/lib/client/listeners.js @@ -20,7 +20,7 @@ var Util, DOM, CloudCmd; }; this.analytics = function() { - getConfig(function(config) { + getConfig(function(error, config) { var analytics = config.analytics, online = config.online; @@ -241,7 +241,7 @@ var Util, DOM, CloudCmd; } function appStorage() { - getConfig(function(config) { + getConfig(function(error, config) { var isAppStorage = config.appStorage, appStorage = window.applicationStorage; diff --git a/lib/client/load.js b/lib/client/load.js index e74acfa3..6bfc85ce 100644 --- a/lib/client/load.js +++ b/lib/client/load.js @@ -43,13 +43,13 @@ var Util, DOM; * * if object - then onload and onerror */ - funcLoad = function(event) { + funcLoad = function() { Events.remove('error', element, funcError); - Util.exec(func, event); + Util.exec(func); }, - funcError = function() { + funcError = function(event) { var template = 'file {{ src }} could not be loaded', isQuit = !!onError, msg = Util.render(template, { @@ -60,12 +60,15 @@ var Util, DOM; Images.showError(msg, isQuit); - Util.exec(onError); + Util.exec(onError, event); }; if (isObj) { - onError = func.onerror; func = func.onload; + onError = func.onerror; + + if (!onError) + onError = func.onload; } /* убираем путь к файлу, оставляя только название файла */ if (!p.id && p.src) @@ -278,6 +281,7 @@ var Util, DOM; funcs = params.map(function(url) { return load.ext.bind(null, url); }); + Util.exec.parallel(funcs, callback); } diff --git a/lib/client/menu.js b/lib/client/menu.js index 350973fb..0e21b454 100644 --- a/lib/client/menu.js +++ b/lib/client/menu.js @@ -163,7 +163,7 @@ var CloudCmd, Util, DOM, CloudFunc, MenuIO; } function getUploadTo(callback) { - CloudCmd.getModules(function(modules) { + CloudCmd.getModules(function(error, modules) { var menu = {}, storage = Util.findObjByNameInArr(modules, 'storage'), items = Util.getNamesFromObjArray(storage) || []; diff --git a/lib/client/notify.js b/lib/client/notify.js index 85fdf0cc..7855a1fd 100644 --- a/lib/client/notify.js +++ b/lib/client/notify.js @@ -26,7 +26,7 @@ var Util, DOM, CloudCmd; }); this.send = function(msg) { - CloudCmd.getConfig(function(config) { + CloudCmd.getConfig(function(error, config) { var notify, notifications = config.notifications, focus = window.focus.bind(window), diff --git a/lib/client/storage/_dropbox.js b/lib/client/storage/_dropbox.js index a0d1208c..2dba3947 100644 --- a/lib/client/storage/_dropbox.js +++ b/lib/client/storage/_dropbox.js @@ -64,7 +64,7 @@ var CloudCmd, Util, DOM, CloudFunc, Dropbox, cb, Client; * @param pData = {key, secret} */ this.login = function(callback) { - CloudCmd.getModules(function(modules){ + CloudCmd.getModules(function(error, modules){ var url = CloudCmd.HOST + '/html/auth/dropbox.html', storage = Util.findObjByNameInArr(modules, 'storage'), dropbox = Util.findObjByNameInArr(storage, 'DropBox'), diff --git a/lib/client/storage/_dropbox_chooser.js b/lib/client/storage/_dropbox_chooser.js index eed0a5a2..1a3d948b 100644 --- a/lib/client/storage/_dropbox_chooser.js +++ b/lib/client/storage/_dropbox_chooser.js @@ -1,6 +1,6 @@ -var CloudCmd, DOM, Dropbox; +var Util, CloudCmd, DOM, Dropbox; -(function(CloudCmd, DOM){ +(function(Util, CloudCmd, DOM){ 'use strict'; var CHOOSER_API = 'https://www.dropbox.com/static/api/1/dropbox.js', @@ -21,10 +21,10 @@ var CloudCmd, DOM, Dropbox; * function loads dropbox.js */ function load(){ - console.time('dropbox load'); + Util.time('dropbox load'); - CloudCmd.getConfig(function(pConfig){ - var lElement = DOM.load({ + CloudCmd.getConfig(function(error, config){ + var element = DOM.load({ src : CHOOSER_API, notAppend : true, id : 'dropboxjs', @@ -32,11 +32,11 @@ var CloudCmd, DOM, Dropbox; }); - var lDropBoxId = pConfig.dropbox_chooser_key; - lElement.setAttribute('data-app-key', lDropBoxId); - document.body.appendChild(lElement); + var lDropBoxId = config.dropbox_chooser_key; + element.setAttribute('data-app-key', lDropBoxId); + document.body.appendChild(element); - console.timeEnd('dropbox load'); + Util.timeEnd('dropbox load'); }); } @@ -49,4 +49,4 @@ var CloudCmd, DOM, Dropbox; }; CloudCmd.DropBox = DropBoxStore; -})(CloudCmd, DOM); +})(Util, CloudCmd, DOM); diff --git a/lib/client/storage/_filepicker.js b/lib/client/storage/_filepicker.js index 96d599b9..e9457d0b 100644 --- a/lib/client/storage/_filepicker.js +++ b/lib/client/storage/_filepicker.js @@ -49,7 +49,7 @@ var CloudCmd, Util, DOM, filepicker; Util.time('filepicker load'); DOM.load.js('//api.filepicker.io/v1/filepicker.js', function() { - CloudCmd.getModules(function(modules) { + CloudCmd.getModules(function(error, modules) { var storage = Util.findObjByNameInArr(modules, 'storage'), picker = Util.findObjByNameInArr(storage, 'FilePicker'), key = picker && picker.key; diff --git a/lib/client/storage/_gdrive.js b/lib/client/storage/_gdrive.js index a63627e8..98bc1945 100644 --- a/lib/client/storage/_gdrive.js +++ b/lib/client/storage/_gdrive.js @@ -16,7 +16,7 @@ var CloudCmd, Util, DOM, gapi; var lUrl = 'https://apis.google.com/js/client.js'; DOM.load.js(lUrl, function() { - CloudCmd.getModules(function(modules) { + CloudCmd.getModules(function(error, modules) { var storage = Util.findObjByNameInArr(modules, 'storage'), gDrive = Util.findObjByNameInArr(storage, 'GDrive'), gDriveId = gDrive && gDrive.id, diff --git a/lib/client/storage/_skydrive.js b/lib/client/storage/_skydrive.js index f0f14038..f4d0500e 100644 --- a/lib/client/storage/_skydrive.js +++ b/lib/client/storage/_skydrive.js @@ -25,8 +25,8 @@ var CloudCmd, Util, DOM, WL; } function auth() { - CloudCmd.getModules(function(pModules){ - var lStorage = Util.findObjByNameInArr(pModules, 'storage'), + CloudCmd.getModules(function(error, modules){ + var lStorage = Util.findObjByNameInArr(modules, 'storage'), lSkyDrive = Util.findObjByNameInArr(lStorage, 'SkyDrive'), lSkyDriveKey = lSkyDrive && lSkyDrive.id; diff --git a/lib/client/storage/_vk.js b/lib/client/storage/_vk.js index 29f4e6c6..4efd5043 100644 --- a/lib/client/storage/_vk.js +++ b/lib/client/storage/_vk.js @@ -31,11 +31,11 @@ var CloudCmd, Util, DOM, VK; } - function auth(pCallBack){ - CloudCmd.getConfig(function(pConfig){ + function auth(callback) { + CloudCmd.getConfig(function(error, config){ var lDOCUMENTS_ACCESS = 131072; - VK.init({ apiId: pConfig.vk_id}); + VK.init({ apiId: config.vk_id}); VK.Auth.login(function(){ var lNAME = 1281; @@ -46,7 +46,7 @@ var CloudCmd, Util, DOM, VK; Util.log ('Hello, ' + lName + ':)'); }); - Util.exec(pCallBack); + Util.exec(callback); }, lDOCUMENTS_ACCESS); /* Доступ к документам пользователя */ }); diff --git a/lib/server/minify.js b/lib/server/minify.js index b5a5a54d..7ef620a9 100644 --- a/lib/server/minify.js +++ b/lib/server/minify.js @@ -39,9 +39,12 @@ minifyName = Minify.getName(name), isChanged = exec.with(IsChanged.isFileChanged, name), - isExist = exec.with(fs.exists, minifyName); + isExist = function(callback) { + var func = exec.ret(callback, null); + fs.exists(minifyName, func); + }; - exec.parallel([isChanged, isExist], function(changed, exists) { + exec.parallel([isChanged, isExist], function(error, changed, exists) { if (changed || !exists) Minify.optimize(name, params); else