|
Struts example source code file (loader.js)
The Struts loader.js source code/* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved. Licensed under the Academic Free License version 2.1 or above OR the modified BSD license. For more information on Dojo licensing, see: http://dojotoolkit.org/community/licensing.shtml */ (function () { var _addHostEnv = {pkgFileName:"__package__", loading_modules_:{}, loaded_modules_:{}, addedToLoadingCount:[], removedFromLoadingCount:[], inFlightCount:0, modulePrefixes_:{dojo:{name:"dojo", value:"src"}}, setModulePrefix:function (module, prefix) { this.modulePrefixes_[module] = {name:module, value:prefix}; }, moduleHasPrefix:function (module) { var mp = this.modulePrefixes_; return Boolean(mp[module] && mp[module].value); }, getModulePrefix:function (module) { if (this.moduleHasPrefix(module)) { return this.modulePrefixes_[module].value; } return module; }, getTextStack:[], loadUriStack:[], loadedUris:[], post_load_:false, modulesLoadedListeners:[], unloadListeners:[], loadNotifying:false}; for (var param in _addHostEnv) { dojo.hostenv[param] = _addHostEnv[param]; } })(); dojo.hostenv.loadPath = function (relpath, module, cb) { var uri; if (relpath.charAt(0) == "/" || relpath.match(/^\w+:/)) { uri = relpath; } else { uri = this.getBaseScriptUri() + relpath; } if (djConfig.cacheBust && dojo.render.html.capable) { uri += "?" + String(djConfig.cacheBust).replace(/\W+/g, ""); } try { return !module ? this.loadUri(uri, cb) : this.loadUriAndCheck(uri, module, cb); } catch (e) { dojo.debug(e); return false; } }; dojo.hostenv.loadUri = function (uri, cb) { if (this.loadedUris[uri]) { return true; } var contents = this.getText(uri, null, true); if (!contents) { return false; } this.loadedUris[uri] = true; if (cb) { contents = "(" + contents + ")"; } var value = dj_eval(contents); if (cb) { cb(value); } return true; }; dojo.hostenv.loadUriAndCheck = function (uri, moduleName, cb) { var ok = true; try { ok = this.loadUri(uri, cb); } catch (e) { dojo.debug("failed loading ", uri, " with error: ", e); } return Boolean(ok && this.findModule(moduleName, false)); }; dojo.loaded = function () { }; dojo.unloaded = function () { }; dojo.hostenv.loaded = function () { this.loadNotifying = true; this.post_load_ = true; var mll = this.modulesLoadedListeners; for (var x = 0; x < mll.length; x++) { mll[x](); } this.modulesLoadedListeners = []; this.loadNotifying = false; dojo.loaded(); }; dojo.hostenv.unloaded = function () { var mll = this.unloadListeners; while (mll.length) { (mll.pop())(); } dojo.unloaded(); }; dojo.addOnLoad = function (obj, functionName) { var dh = dojo.hostenv; if (arguments.length == 1) { dh.modulesLoadedListeners.push(obj); } else { if (arguments.length > 1) { dh.modulesLoadedListeners.push(function () { obj[functionName](); }); } } if (dh.post_load_ && dh.inFlightCount == 0 && !dh.loadNotifying) { dh.callLoaded(); } }; dojo.addOnUnload = function (obj, functionName) { var dh = dojo.hostenv; if (arguments.length == 1) { dh.unloadListeners.push(obj); } else { if (arguments.length > 1) { dh.unloadListeners.push(function () { obj[functionName](); }); } } }; dojo.hostenv.modulesLoaded = function () { if (this.post_load_) { return; } if (this.loadUriStack.length == 0 && this.getTextStack.length == 0) { if (this.inFlightCount > 0) { dojo.debug("files still in flight!"); return; } dojo.hostenv.callLoaded(); } }; dojo.hostenv.callLoaded = function () { if (typeof setTimeout == "object" || (djConfig["useXDomain"] && dojo.render.html.opera)) { setTimeout("dojo.hostenv.loaded();", 0); } else { dojo.hostenv.loaded(); } }; dojo.hostenv.getModuleSymbols = function (modulename) { var syms = modulename.split("."); for (var i = syms.length; i > 0; i--) { var parentModule = syms.slice(0, i).join("."); if ((i == 1) && !this.moduleHasPrefix(parentModule)) { syms[0] = "../" + syms[0]; } else { var parentModulePath = this.getModulePrefix(parentModule); if (parentModulePath != parentModule) { syms.splice(0, i, parentModulePath); break; } } } return syms; }; dojo.hostenv._global_omit_module_check = false; dojo.hostenv.loadModule = function (moduleName, exactOnly, omitModuleCheck) { if (!moduleName) { return; } omitModuleCheck = this._global_omit_module_check || omitModuleCheck; var module = this.findModule(moduleName, false); if (module) { return module; } if (dj_undef(moduleName, this.loading_modules_)) { this.addedToLoadingCount.push(moduleName); } this.loading_modules_[moduleName] = 1; var relpath = moduleName.replace(/\./g, "/") + ".js"; var nsyms = moduleName.split("."); var syms = this.getModuleSymbols(moduleName); var startedRelative = ((syms[0].charAt(0) != "/") && !syms[0].match(/^\w+:/)); var last = syms[syms.length - 1]; var ok; if (last == "*") { moduleName = nsyms.slice(0, -1).join("."); while (syms.length) { syms.pop(); syms.push(this.pkgFileName); relpath = syms.join("/") + ".js"; if (startedRelative && relpath.charAt(0) == "/") { relpath = relpath.slice(1); } ok = this.loadPath(relpath, !omitModuleCheck ? moduleName : null); if (ok) { break; } syms.pop(); } } else { relpath = syms.join("/") + ".js"; moduleName = nsyms.join("."); var modArg = !omitModuleCheck ? moduleName : null; ok = this.loadPath(relpath, modArg); if (!ok && !exactOnly) { syms.pop(); while (syms.length) { relpath = syms.join("/") + ".js"; ok = this.loadPath(relpath, modArg); if (ok) { break; } syms.pop(); relpath = syms.join("/") + "/" + this.pkgFileName + ".js"; if (startedRelative && relpath.charAt(0) == "/") { relpath = relpath.slice(1); } ok = this.loadPath(relpath, modArg); if (ok) { break; } } } if (!ok && !omitModuleCheck) { dojo.raise("Could not load '" + moduleName + "'; last tried '" + relpath + "'"); } } if (!omitModuleCheck && !this["isXDomain"]) { module = this.findModule(moduleName, false); if (!module) { dojo.raise("symbol '" + moduleName + "' is not defined after loading '" + relpath + "'"); } } return module; }; dojo.hostenv.startPackage = function (packageName) { var fullPkgName = String(packageName); var strippedPkgName = fullPkgName; var syms = packageName.split(/\./); if (syms[syms.length - 1] == "*") { syms.pop(); strippedPkgName = syms.join("."); } var evaledPkg = dojo.evalObjPath(strippedPkgName, true); this.loaded_modules_[fullPkgName] = evaledPkg; this.loaded_modules_[strippedPkgName] = evaledPkg; return evaledPkg; }; dojo.hostenv.findModule = function (moduleName, mustExist) { var lmn = String(moduleName); if (this.loaded_modules_[lmn]) { return this.loaded_modules_[lmn]; } if (mustExist) { dojo.raise("no loaded module named '" + moduleName + "'"); } return null; }; dojo.kwCompoundRequire = function (modMap) { var common = modMap["common"] || []; var result = modMap[dojo.hostenv.name_] ? common.concat(modMap[dojo.hostenv.name_] || []) : common.concat(modMap["default"] || []); for (var x = 0; x < result.length; x++) { var curr = result[x]; if (curr.constructor == Array) { dojo.hostenv.loadModule.apply(dojo.hostenv, curr); } else { dojo.hostenv.loadModule(curr); } } }; dojo.require = function (resourceName) { dojo.hostenv.loadModule.apply(dojo.hostenv, arguments); }; dojo.requireIf = function (condition, resourceName) { var arg0 = arguments[0]; if ((arg0 === true) || (arg0 == "common") || (arg0 && dojo.render[arg0].capable)) { var args = []; for (var i = 1; i < arguments.length; i++) { args.push(arguments[i]); } dojo.require.apply(dojo, args); } }; dojo.requireAfterIf = dojo.requireIf; dojo.provide = function (resourceName) { return dojo.hostenv.startPackage.apply(dojo.hostenv, arguments); }; dojo.registerModulePath = function (module, prefix) { return dojo.hostenv.setModulePrefix(module, prefix); }; if (djConfig["modulePaths"]) { for (var param in djConfig["modulePaths"]) { dojo.registerModulePath(param, djConfig["modulePaths"][param]); } } dojo.setModulePrefix = function (module, prefix) { dojo.deprecated("dojo.setModulePrefix(\"" + module + "\", \"" + prefix + "\")", "replaced by dojo.registerModulePath", "0.5"); return dojo.registerModulePath(module, prefix); }; dojo.exists = function (obj, name) { var p = name.split("."); for (var i = 0; i < p.length; i++) { if (!obj[p[i]]) { return false; } obj = obj[p[i]]; } return true; }; dojo.hostenv.normalizeLocale = function (locale) { var result = locale ? locale.toLowerCase() : dojo.locale; if (result == "root") { result = "ROOT"; } return result; }; dojo.hostenv.searchLocalePath = function (locale, down, searchFunc) { locale = dojo.hostenv.normalizeLocale(locale); var elements = locale.split("-"); var searchlist = []; for (var i = elements.length; i > 0; i--) { searchlist.push(elements.slice(0, i).join("-")); } searchlist.push(false); if (down) { searchlist.reverse(); } for (var j = searchlist.length - 1; j >= 0; j--) { var loc = searchlist[j] || "ROOT"; var stop = searchFunc(loc); if (stop) { break; } } }; dojo.hostenv.localesGenerated; dojo.hostenv.registerNlsPrefix = function () { dojo.registerModulePath("nls", "nls"); }; dojo.hostenv.preloadLocalizations = function () { if (dojo.hostenv.localesGenerated) { dojo.hostenv.registerNlsPrefix(); function preload(locale) { locale = dojo.hostenv.normalizeLocale(locale); dojo.hostenv.searchLocalePath(locale, true, function (loc) { for (var i = 0; i < dojo.hostenv.localesGenerated.length; i++) { if (dojo.hostenv.localesGenerated[i] == loc) { dojo["require"]("nls.dojo_" + loc); return true; } } return false; }); } preload(); var extra = djConfig.extraLocale || []; for (var i = 0; i < extra.length; i++) { preload(extra[i]); } } dojo.hostenv.preloadLocalizations = function () { }; }; dojo.requireLocalization = function (moduleName, bundleName, locale, availableFlatLocales) { dojo.hostenv.preloadLocalizations(); var targetLocale = dojo.hostenv.normalizeLocale(locale); var bundlePackage = [moduleName, "nls", bundleName].join("."); var bestLocale = ""; if (availableFlatLocales) { var flatLocales = availableFlatLocales.split(","); for (var i = 0; i < flatLocales.length; i++) { if (targetLocale.indexOf(flatLocales[i]) == 0) { if (flatLocales[i].length > bestLocale.length) { bestLocale = flatLocales[i]; } } } if (!bestLocale) { bestLocale = "ROOT"; } } var tempLocale = availableFlatLocales ? bestLocale : targetLocale; var bundle = dojo.hostenv.findModule(bundlePackage); var localizedBundle = null; if (bundle) { if (djConfig.localizationComplete && bundle._built) { return; } var jsLoc = tempLocale.replace("-", "_"); var translationPackage = bundlePackage + "." + jsLoc; localizedBundle = dojo.hostenv.findModule(translationPackage); } if (!localizedBundle) { bundle = dojo.hostenv.startPackage(bundlePackage); var syms = dojo.hostenv.getModuleSymbols(moduleName); var modpath = syms.concat("nls").join("/"); var parent; dojo.hostenv.searchLocalePath(tempLocale, availableFlatLocales, function (loc) { var jsLoc = loc.replace("-", "_"); var translationPackage = bundlePackage + "." + jsLoc; var loaded = false; if (!dojo.hostenv.findModule(translationPackage)) { dojo.hostenv.startPackage(translationPackage); var module = [modpath]; if (loc != "ROOT") { module.push(loc); } module.push(bundleName); var filespec = module.join("/") + ".js"; loaded = dojo.hostenv.loadPath(filespec, null, function (hash) { var clazz = function () { }; clazz.prototype = parent; bundle[jsLoc] = new clazz(); for (var j in hash) { bundle[jsLoc][j] = hash[j]; } }); } else { loaded = true; } if (loaded && bundle[jsLoc]) { parent = bundle[jsLoc]; } else { bundle[jsLoc] = parent; } if (availableFlatLocales) { return true; } }); } if (availableFlatLocales && targetLocale != bestLocale) { bundle[targetLocale.replace("-", "_")] = bundle[bestLocale.replace("-", "_")]; } }; (function () { var extra = djConfig.extraLocale; if (extra) { if (!extra instanceof Array) { extra = [extra]; } var req = dojo.requireLocalization; dojo.requireLocalization = function (m, b, locale, availableFlatLocales) { req(m, b, locale, availableFlatLocales); if (locale) { return; } for (var i = 0; i < extra.length; i++) { req(m, b, extra[i], availableFlatLocales); } }; } })(); Other Struts examples (source code examples)Here is a short list of links related to this Struts loader.js source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.