diff --git a/lib/client.js b/lib/client.js index 65ee9aac..e972887e 100644 --- a/lib/client.js +++ b/lib/client.js @@ -1,6 +1,6 @@ -var Util, DOM, CloudFunc; +var Util, DOM, CloudFunc, join; -(function(scope, Util, DOM, CloudFunc) { +(function(scope, Util, DOM, CloudFunc, join) { 'use strict'; scope.CloudCmd = new CloudCmdProto(Util, DOM, CloudFunc); @@ -14,6 +14,7 @@ var Util, DOM, CloudFunc; CloudCmd = this, Storage = DOM.Storage; + this.PREFIX = '', this.MousePosition = {}; this.LIBDIR = '/lib/'; this.LIBDIRCLIENT = '/lib/client/'; @@ -137,7 +138,7 @@ var Util, DOM, CloudFunc; * выполняет весь функционал по * инициализации */ - this.init = function() { + this.init = function(prefix) { var func = function() { Util.exec.series([ initModules, @@ -154,9 +155,25 @@ var Util, DOM, CloudFunc; }); }; + CloudCmd.PREFIX = prefix; + CloudCmd.LIBDIR = prefix + '/lib/'; + CloudCmd.LIBDIRCLIENT = prefix + '/lib/client/'; + Util.exec.if(document.body.scrollIntoViewIfNeeded, func, funcBefore); }; + this.join = function(urls) { + var prefix = CloudCmd.PREFIX; + + Util.checkArgs(arguments, ['urls']); + + urls = urls.map(function(url) { + return url.replace(prefix, ''); + }); + + return prefix + join(urls); + }; + this.route = function(path) { var module, file, current, msg, query = path.split('/'); @@ -472,4 +489,4 @@ var Util, DOM, CloudFunc; }; } -})(this, Util, DOM, CloudFunc); +})(this, Util, DOM, CloudFunc, join); diff --git a/lib/client/cloudcmd.js b/lib/client/cloudcmd.js index 4d9c2994..428fd05a 100644 --- a/lib/client/cloudcmd.js +++ b/lib/client/cloudcmd.js @@ -3,7 +3,7 @@ var CloudCmd; (function() { CloudCmd = load; - function load() { + function load(prefix) { var lib = 'lib/', client = 'client/', files = [ @@ -29,8 +29,11 @@ var CloudCmd; urlFiles = getJoinURL(files); - createScript(urlFiles, function() { - CloudCmd.init(); + if (!prefix) + prefix = '/cloudcmd'; + + createScript(prefix + urlFiles, function() { + CloudCmd.init(prefix); }); window.removeEventListener('load', load); diff --git a/lib/client/dom.js b/lib/client/dom.js index 096df414..537c5bd6 100644 --- a/lib/client/dom.js +++ b/lib/client/dom.js @@ -339,13 +339,14 @@ var CloudCmd, Util, DOM, CloudFunc, Dialog; Files.get(['config', 'modules'], function(error, config, modules) { var remoteTmpls, local, remote, load = DOM.load, + prefix = CloudCmd.PREFIX, online = config.online && navigator.onLine, remoteObj = Util.findObjByNameInArr(modules, 'remote'), module = Util.findObjByNameInArr(remoteObj, name), - version = module.version, isArray = Util.isArray(module.local), + version = module.version, funcON = function() { load.parallel(remote, function(error) { @@ -364,12 +365,16 @@ var CloudCmd, Util, DOM, CloudFunc, Dialog; remoteTmpls = module.remote; local = module.local; } else { - remoteTmpls = [module.remote]; - local = [module.local]; + remoteTmpls = [module.remote]; + local = [module.local]; } - - remote = remoteTmpls.map(function(item) { - return Util.render(item, { + + local = local.map(function(url) { + return prefix + url; + }); + + remote = remoteTmpls.map(function(tmpl) { + return Util.render(tmpl, { version: version }); }); diff --git a/lib/client/edit.js b/lib/client/edit.js index 2332050d..bdd7ffb7 100644 --- a/lib/client/edit.js +++ b/lib/client/edit.js @@ -1,5 +1,5 @@ -var CloudCmd, Util, join, DOM, CloudFunc, ace, DiffProto, diff_match_patch, Zip, MenuIO, Format; -(function(CloudCmd, Util, Join, DOM, CloudFunc) { +var CloudCmd, Util, DOM, CloudFunc, ace, DiffProto, diff_match_patch, Zip, MenuIO, Format; +(function(CloudCmd, Util, DOM, CloudFunc) { 'use strict'; CloudCmd.Edit = EditProto; @@ -10,6 +10,9 @@ var CloudCmd, Util, join, DOM, CloudFunc, ace, DiffProto, diff_match_patch, Zip, DIR = CloudCmd.LIBDIRCLIENT + 'edit/', LIBDIR = CloudCmd.LIBDIR, Info = DOM.CurrentInfo, + + join = CloudCmd.join, + Menu, Value, Edit = this, @@ -510,4 +513,4 @@ var CloudCmd, Util, join, DOM, CloudFunc, ace, DiffProto, diff_match_patch, Zip, init(); } -})(CloudCmd, Util, join, DOM, CloudFunc); +})(CloudCmd, Util, DOM, CloudFunc); diff --git a/lib/client/files.js b/lib/client/files.js index 97aa99fe..e2631738 100644 --- a/lib/client/files.js +++ b/lib/client/files.js @@ -1,6 +1,6 @@ /* load and store templates data */ -var Util, DOM; +var Util, DOM, CloudCmd; (function(Util, DOM) { 'use strict'; @@ -114,10 +114,12 @@ var Util, DOM; } function getSystemFile(url, callback) { + var prefix = CloudCmd.PREFIX; + if (!Promises[url]) Promises[url] = new Promise(function(resolve, reject) { DOM.load.ajax({ - url : url, + url : prefix + url, success : resolve, error : reject }); diff --git a/lib/client/rest.js b/lib/client/rest.js index 5aa7390a..3775d3ad 100644 --- a/lib/client/rest.js +++ b/lib/client/rest.js @@ -1,4 +1,4 @@ -var Util, DOM, CloudFunc; +var Util, DOM, CloudFunc, CloudCmd; (function(Util, DOM, CloudFunc) { 'use strict'; @@ -142,8 +142,9 @@ var Util, DOM, CloudFunc; }; function sendRequest(params) { - var p = params, - apiURL = CloudFunc.apiURL; + var prefix = CloudCmd.PREFIX, + p = params, + apiURL = prefix + CloudFunc.apiURL; p.url = apiURL + p.url; p.url = encodeURI(p.url);