loader.js
上传用户:kimgenplus
上传日期:2016-06-05
资源大小:20877k
文件大小:12k
源码类别:

OA系统

开发平台:

Java

  1. /*
  2. Copyright (c) 2004-2006, The Dojo Foundation
  3. All Rights Reserved.
  4. Licensed under the Academic Free License version 2.1 or above OR the
  5. modified BSD license. For more information on Dojo licensing, see:
  6. http://dojotoolkit.org/community/licensing.shtml
  7. */
  8. (function () {
  9. var _addHostEnv = {pkgFileName:"__package__", loading_modules_:{}, loaded_modules_:{}, addedToLoadingCount:[], removedFromLoadingCount:[], inFlightCount:0, modulePrefixes_:{dojo:{name:"dojo", value:"src"}}, setModulePrefix:function (module, prefix) {
  10. this.modulePrefixes_[module] = {name:module, value:prefix};
  11. }, moduleHasPrefix:function (module) {
  12. var mp = this.modulePrefixes_;
  13. return Boolean(mp[module] && mp[module].value);
  14. }, getModulePrefix:function (module) {
  15. if (this.moduleHasPrefix(module)) {
  16. return this.modulePrefixes_[module].value;
  17. }
  18. return module;
  19. }, getTextStack:[], loadUriStack:[], loadedUris:[], post_load_:false, modulesLoadedListeners:[], unloadListeners:[], loadNotifying:false};
  20. for (var param in _addHostEnv) {
  21. dojo.hostenv[param] = _addHostEnv[param];
  22. }
  23. })();
  24. dojo.hostenv.loadPath = function (relpath, module, cb) {
  25. var uri;
  26. if (relpath.charAt(0) == "/" || relpath.match(/^w+:/)) {
  27. uri = relpath;
  28. } else {
  29. uri = this.getBaseScriptUri() + relpath;
  30. }
  31. if (djConfig.cacheBust && dojo.render.html.capable) {
  32. uri += "?" + String(djConfig.cacheBust).replace(/W+/g, "");
  33. }
  34. try {
  35. return !module ? this.loadUri(uri, cb) : this.loadUriAndCheck(uri, module, cb);
  36. }
  37. catch (e) {
  38. dojo.debug(e);
  39. return false;
  40. }
  41. };
  42. dojo.hostenv.loadUri = function (uri, cb) {
  43. if (this.loadedUris[uri]) {
  44. return true;
  45. }
  46. var contents = this.getText(uri, null, true);
  47. if (!contents) {
  48. return false;
  49. }
  50. this.loadedUris[uri] = true;
  51. if (cb) {
  52. contents = "(" + contents + ")";
  53. }
  54. var value = dj_eval(contents);
  55. if (cb) {
  56. cb(value);
  57. }
  58. return true;
  59. };
  60. dojo.hostenv.loadUriAndCheck = function (uri, moduleName, cb) {
  61. var ok = true;
  62. try {
  63. ok = this.loadUri(uri, cb);
  64. }
  65. catch (e) {
  66. dojo.debug("failed loading ", uri, " with error: ", e);
  67. }
  68. return Boolean(ok && this.findModule(moduleName, false));
  69. };
  70. dojo.loaded = function () {
  71. };
  72. dojo.unloaded = function () {
  73. };
  74. dojo.hostenv.loaded = function () {
  75. this.loadNotifying = true;
  76. this.post_load_ = true;
  77. var mll = this.modulesLoadedListeners;
  78. for (var x = 0; x < mll.length; x++) {
  79. mll[x]();
  80. }
  81. this.modulesLoadedListeners = [];
  82. this.loadNotifying = false;
  83. dojo.loaded();
  84. };
  85. dojo.hostenv.unloaded = function () {
  86. var mll = this.unloadListeners;
  87. while (mll.length) {
  88. (mll.pop())();
  89. }
  90. dojo.unloaded();
  91. };
  92. dojo.addOnLoad = function (obj, functionName) {
  93. var dh = dojo.hostenv;
  94. if (arguments.length == 1) {
  95. dh.modulesLoadedListeners.push(obj);
  96. } else {
  97. if (arguments.length > 1) {
  98. dh.modulesLoadedListeners.push(function () {
  99. obj[functionName]();
  100. });
  101. }
  102. }
  103. if (dh.post_load_ && dh.inFlightCount == 0 && !dh.loadNotifying) {
  104. dh.callLoaded();
  105. }
  106. };
  107. dojo.addOnUnload = function (obj, functionName) {
  108. var dh = dojo.hostenv;
  109. if (arguments.length == 1) {
  110. dh.unloadListeners.push(obj);
  111. } else {
  112. if (arguments.length > 1) {
  113. dh.unloadListeners.push(function () {
  114. obj[functionName]();
  115. });
  116. }
  117. }
  118. };
  119. dojo.hostenv.modulesLoaded = function () {
  120. if (this.post_load_) {
  121. return;
  122. }
  123. if (this.loadUriStack.length == 0 && this.getTextStack.length == 0) {
  124. if (this.inFlightCount > 0) {
  125. dojo.debug("files still in flight!");
  126. return;
  127. }
  128. dojo.hostenv.callLoaded();
  129. }
  130. };
  131. dojo.hostenv.callLoaded = function () {
  132. if (typeof setTimeout == "object" || (djConfig["useXDomain"] && dojo.render.html.opera)) {
  133. setTimeout("dojo.hostenv.loaded();", 0);
  134. } else {
  135. dojo.hostenv.loaded();
  136. }
  137. };
  138. dojo.hostenv.getModuleSymbols = function (modulename) {
  139. var syms = modulename.split(".");
  140. for (var i = syms.length; i > 0; i--) {
  141. var parentModule = syms.slice(0, i).join(".");
  142. if ((i == 1) && !this.moduleHasPrefix(parentModule)) {
  143. syms[0] = "../" + syms[0];
  144. } else {
  145. var parentModulePath = this.getModulePrefix(parentModule);
  146. if (parentModulePath != parentModule) {
  147. syms.splice(0, i, parentModulePath);
  148. break;
  149. }
  150. }
  151. }
  152. return syms;
  153. };
  154. dojo.hostenv._global_omit_module_check = false;
  155. dojo.hostenv.loadModule = function (moduleName, exactOnly, omitModuleCheck) {
  156. if (!moduleName) {
  157. return;
  158. }
  159. omitModuleCheck = this._global_omit_module_check || omitModuleCheck;
  160. var module = this.findModule(moduleName, false);
  161. if (module) {
  162. return module;
  163. }
  164. if (dj_undef(moduleName, this.loading_modules_)) {
  165. this.addedToLoadingCount.push(moduleName);
  166. }
  167. this.loading_modules_[moduleName] = 1;
  168. var relpath = moduleName.replace(/./g, "/") + ".js";
  169. var nsyms = moduleName.split(".");
  170. var syms = this.getModuleSymbols(moduleName);
  171. var startedRelative = ((syms[0].charAt(0) != "/") && !syms[0].match(/^w+:/));
  172. var last = syms[syms.length - 1];
  173. var ok;
  174. if (last == "*") {
  175. moduleName = nsyms.slice(0, -1).join(".");
  176. while (syms.length) {
  177. syms.pop();
  178. syms.push(this.pkgFileName);
  179. relpath = syms.join("/") + ".js";
  180. if (startedRelative && relpath.charAt(0) == "/") {
  181. relpath = relpath.slice(1);
  182. }
  183. ok = this.loadPath(relpath, !omitModuleCheck ? moduleName : null);
  184. if (ok) {
  185. break;
  186. }
  187. syms.pop();
  188. }
  189. } else {
  190. relpath = syms.join("/") + ".js";
  191. moduleName = nsyms.join(".");
  192. var modArg = !omitModuleCheck ? moduleName : null;
  193. ok = this.loadPath(relpath, modArg);
  194. if (!ok && !exactOnly) {
  195. syms.pop();
  196. while (syms.length) {
  197. relpath = syms.join("/") + ".js";
  198. ok = this.loadPath(relpath, modArg);
  199. if (ok) {
  200. break;
  201. }
  202. syms.pop();
  203. relpath = syms.join("/") + "/" + this.pkgFileName + ".js";
  204. if (startedRelative && relpath.charAt(0) == "/") {
  205. relpath = relpath.slice(1);
  206. }
  207. ok = this.loadPath(relpath, modArg);
  208. if (ok) {
  209. break;
  210. }
  211. }
  212. }
  213. if (!ok && !omitModuleCheck) {
  214. dojo.raise("Could not load '" + moduleName + "'; last tried '" + relpath + "'");
  215. }
  216. }
  217. if (!omitModuleCheck && !this["isXDomain"]) {
  218. module = this.findModule(moduleName, false);
  219. if (!module) {
  220. dojo.raise("symbol '" + moduleName + "' is not defined after loading '" + relpath + "'");
  221. }
  222. }
  223. return module;
  224. };
  225. dojo.hostenv.startPackage = function (packageName) {
  226. var fullPkgName = String(packageName);
  227. var strippedPkgName = fullPkgName;
  228. var syms = packageName.split(/./);
  229. if (syms[syms.length - 1] == "*") {
  230. syms.pop();
  231. strippedPkgName = syms.join(".");
  232. }
  233. var evaledPkg = dojo.evalObjPath(strippedPkgName, true);
  234. this.loaded_modules_[fullPkgName] = evaledPkg;
  235. this.loaded_modules_[strippedPkgName] = evaledPkg;
  236. return evaledPkg;
  237. };
  238. dojo.hostenv.findModule = function (moduleName, mustExist) {
  239. var lmn = String(moduleName);
  240. if (this.loaded_modules_[lmn]) {
  241. return this.loaded_modules_[lmn];
  242. }
  243. if (mustExist) {
  244. dojo.raise("no loaded module named '" + moduleName + "'");
  245. }
  246. return null;
  247. };
  248. dojo.kwCompoundRequire = function (modMap) {
  249. var common = modMap["common"] || [];
  250. var result = modMap[dojo.hostenv.name_] ? common.concat(modMap[dojo.hostenv.name_] || []) : common.concat(modMap["default"] || []);
  251. for (var x = 0; x < result.length; x++) {
  252. var curr = result[x];
  253. if (curr.constructor == Array) {
  254. dojo.hostenv.loadModule.apply(dojo.hostenv, curr);
  255. } else {
  256. dojo.hostenv.loadModule(curr);
  257. }
  258. }
  259. };
  260. dojo.require = function (resourceName) {
  261. dojo.hostenv.loadModule.apply(dojo.hostenv, arguments);
  262. };
  263. dojo.requireIf = function (condition, resourceName) {
  264. var arg0 = arguments[0];
  265. if ((arg0 === true) || (arg0 == "common") || (arg0 && dojo.render[arg0].capable)) {
  266. var args = [];
  267. for (var i = 1; i < arguments.length; i++) {
  268. args.push(arguments[i]);
  269. }
  270. dojo.require.apply(dojo, args);
  271. }
  272. };
  273. dojo.requireAfterIf = dojo.requireIf;
  274. dojo.provide = function (resourceName) {
  275. return dojo.hostenv.startPackage.apply(dojo.hostenv, arguments);
  276. };
  277. dojo.registerModulePath = function (module, prefix) {
  278. return dojo.hostenv.setModulePrefix(module, prefix);
  279. };
  280. if (djConfig["modulePaths"]) {
  281. for (var param in djConfig["modulePaths"]) {
  282. dojo.registerModulePath(param, djConfig["modulePaths"][param]);
  283. }
  284. }
  285. dojo.setModulePrefix = function (module, prefix) {
  286. dojo.deprecated("dojo.setModulePrefix("" + module + "", "" + prefix + "")", "replaced by dojo.registerModulePath", "0.5");
  287. return dojo.registerModulePath(module, prefix);
  288. };
  289. dojo.exists = function (obj, name) {
  290. var p = name.split(".");
  291. for (var i = 0; i < p.length; i++) {
  292. if (!obj[p[i]]) {
  293. return false;
  294. }
  295. obj = obj[p[i]];
  296. }
  297. return true;
  298. };
  299. dojo.hostenv.normalizeLocale = function (locale) {
  300. var result = locale ? locale.toLowerCase() : dojo.locale;
  301. if (result == "root") {
  302. result = "ROOT";
  303. }
  304. return result;
  305. };
  306. dojo.hostenv.searchLocalePath = function (locale, down, searchFunc) {
  307. locale = dojo.hostenv.normalizeLocale(locale);
  308. var elements = locale.split("-");
  309. var searchlist = [];
  310. for (var i = elements.length; i > 0; i--) {
  311. searchlist.push(elements.slice(0, i).join("-"));
  312. }
  313. searchlist.push(false);
  314. if (down) {
  315. searchlist.reverse();
  316. }
  317. for (var j = searchlist.length - 1; j >= 0; j--) {
  318. var loc = searchlist[j] || "ROOT";
  319. var stop = searchFunc(loc);
  320. if (stop) {
  321. break;
  322. }
  323. }
  324. };
  325. dojo.hostenv.localesGenerated;
  326. dojo.hostenv.registerNlsPrefix = function () {
  327. dojo.registerModulePath("nls", "nls");
  328. };
  329. dojo.hostenv.preloadLocalizations = function () {
  330. if (dojo.hostenv.localesGenerated) {
  331. dojo.hostenv.registerNlsPrefix();
  332. function preload(locale) {
  333. locale = dojo.hostenv.normalizeLocale(locale);
  334. dojo.hostenv.searchLocalePath(locale, true, function (loc) {
  335. for (var i = 0; i < dojo.hostenv.localesGenerated.length; i++) {
  336. if (dojo.hostenv.localesGenerated[i] == loc) {
  337. dojo["require"]("nls.dojo_" + loc);
  338. return true;
  339. }
  340. }
  341. return false;
  342. });
  343. }
  344. preload();
  345. var extra = djConfig.extraLocale || [];
  346. for (var i = 0; i < extra.length; i++) {
  347. preload(extra[i]);
  348. }
  349. }
  350. dojo.hostenv.preloadLocalizations = function () {
  351. };
  352. };
  353. dojo.requireLocalization = function (moduleName, bundleName, locale, availableFlatLocales) {
  354. dojo.hostenv.preloadLocalizations();
  355. var targetLocale = dojo.hostenv.normalizeLocale(locale);
  356. var bundlePackage = [moduleName, "nls", bundleName].join(".");
  357. var bestLocale = "";
  358. if (availableFlatLocales) {
  359. var flatLocales = availableFlatLocales.split(",");
  360. for (var i = 0; i < flatLocales.length; i++) {
  361. if (targetLocale.indexOf(flatLocales[i]) == 0) {
  362. if (flatLocales[i].length > bestLocale.length) {
  363. bestLocale = flatLocales[i];
  364. }
  365. }
  366. }
  367. if (!bestLocale) {
  368. bestLocale = "ROOT";
  369. }
  370. }
  371. var tempLocale = availableFlatLocales ? bestLocale : targetLocale;
  372. var bundle = dojo.hostenv.findModule(bundlePackage);
  373. var localizedBundle = null;
  374. if (bundle) {
  375. if (djConfig.localizationComplete && bundle._built) {
  376. return;
  377. }
  378. var jsLoc = tempLocale.replace("-", "_");
  379. var translationPackage = bundlePackage + "." + jsLoc;
  380. localizedBundle = dojo.hostenv.findModule(translationPackage);
  381. }
  382. if (!localizedBundle) {
  383. bundle = dojo.hostenv.startPackage(bundlePackage);
  384. var syms = dojo.hostenv.getModuleSymbols(moduleName);
  385. var modpath = syms.concat("nls").join("/");
  386. var parent;
  387. dojo.hostenv.searchLocalePath(tempLocale, availableFlatLocales, function (loc) {
  388. var jsLoc = loc.replace("-", "_");
  389. var translationPackage = bundlePackage + "." + jsLoc;
  390. var loaded = false;
  391. if (!dojo.hostenv.findModule(translationPackage)) {
  392. dojo.hostenv.startPackage(translationPackage);
  393. var module = [modpath];
  394. if (loc != "ROOT") {
  395. module.push(loc);
  396. }
  397. module.push(bundleName);
  398. var filespec = module.join("/") + ".js";
  399. loaded = dojo.hostenv.loadPath(filespec, null, function (hash) {
  400. var clazz = function () {
  401. };
  402. clazz.prototype = parent;
  403. bundle[jsLoc] = new clazz();
  404. for (var j in hash) {
  405. bundle[jsLoc][j] = hash[j];
  406. }
  407. });
  408. } else {
  409. loaded = true;
  410. }
  411. if (loaded && bundle[jsLoc]) {
  412. parent = bundle[jsLoc];
  413. } else {
  414. bundle[jsLoc] = parent;
  415. }
  416. if (availableFlatLocales) {
  417. return true;
  418. }
  419. });
  420. }
  421. if (availableFlatLocales && targetLocale != bestLocale) {
  422. bundle[targetLocale.replace("-", "_")] = bundle[bestLocale.replace("-", "_")];
  423. }
  424. };
  425. (function () {
  426. var extra = djConfig.extraLocale;
  427. if (extra) {
  428. if (!extra instanceof Array) {
  429. extra = [extra];
  430. }
  431. var req = dojo.requireLocalization;
  432. dojo.requireLocalization = function (m, b, locale, availableFlatLocales) {
  433. req(m, b, locale, availableFlatLocales);
  434. if (locale) {
  435. return;
  436. }
  437. for (var i = 0; i < extra.length; i++) {
  438. req(m, b, extra[i], availableFlatLocales);
  439. }
  440. };
  441. }
  442. })();