Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_adobesvg.js
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_adobesvg.js?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_adobesvg.js (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_adobesvg.js Mon Feb 19 09:56:06 2007 @@ -0,0 +1,510 @@ +/* + 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 +*/ + +/* + * Adobe SVG Viewer host environment + */ +if(typeof window == 'undefined'){ + dojo.raise("attempt to use adobe svg hostenv when no window object"); +} + +with(dojo.render){ + name = navigator.appName; + ver = parseFloat(navigator.appVersion, 10); + switch(navigator.platform){ + case "MacOS": + os.osx = true; + break; + case "Linux": + os.linux = true; + break; + case "Windows": + os.win = true; + break; + default: + os.linux = true; + break; + }; + svg.capable = true; + svg.support.builtin = true; + svg.adobe = true; +}; + +// browserEval("alert(window.location);"); + +dojo.hostenv.println = function(s){ + try{ + // FIXME: this may not work with adobe's viewer, as we may first need a + // reference to the svgDocument + // FIXME: need a way to determine where to position the text for this + var ti = document.createElement("text"); + ti.setAttribute("x","50"); + var yPos = 25 + 15*document.getElementsByTagName("text").length; + ti.setAttribute("y",yPos); + var tn = document.createTextNode(s); + ti.appendChild(tn); + document.documentElement.appendChild(ti); + }catch(e){ + + } +} + +dojo.debug = function() { + if (!djConfig.isDebug) { return; } + var args = arguments; + if(typeof dojo.hostenv.println != 'function'){ + dojo.raise("attempt to call dojo.debug when there is no dojo.hostenv println implementation (yet?)"); + } + var isJUM = dj_global["jum"]; + var s = isJUM ? "": "DEBUG: "; + for(var i=0;i<args.length;++i){ s += args[i]; } + if(isJUM){ // this seems to be the only way to get JUM to "play nice" + jum.debug(s); + }else{ + dojo.hostenv.println(s); + } +} + +dojo.hostenv.startPackage("dojo.hostenv"); + +dojo.hostenv.name_ = 'adobesvg'; + +dojo.hostenv.anonCtr = 0; +dojo.hostenv.anon = {}; + +dojo.hostenv.nameAnonFunc = function(anonFuncPtr, namespaceObj){ + var ret = "_"+this.anonCtr++; + var nso = (namespaceObj || this.anon); + while(typeof nso[ret] != "undefined"){ + ret = "_"+this.anonCtr++; + } + nso[ret] = anonFuncPtr; + return ret; +} + +dojo.hostenv.modulesLoadedFired = false; +dojo.hostenv.modulesLoadedListeners = []; +dojo.hostenv.getTextStack = []; +dojo.hostenv.loadUriStack = []; +dojo.hostenv.loadedUris = []; + + +dojo.hostenv.modulesLoaded = function(){ + if(this.modulesLoadedFired){ return; } + if((this.loadUriStack.length==0)&&(this.getTextStack.length==0)){ + if(this.inFlightCount > 0){ + dojo.debug("couldn't initialize, there are files still in flight"); + return; + } + this.modulesLoadedFired = true; + var mll = this.modulesLoadedListeners; + for(var x=0; x<mll.length; x++){ + mll[x](); + } + } +} + +dojo.hostenv.getNewAnonFunc = function(){ + var ret = "_"+this.anonCtr++; + while(typeof this.anon[ret] != "undefined"){ + ret = "_"+this.anonCtr++; + } + // this.anon[ret] = function(){}; + eval("dojo.nostenv.anon."+ret+" = function(){};"); + return [ret, this.anon[ret]]; +} + +dojo.hostenv.displayStack = function(){ + var oa = []; + var stack = this.loadUriStack; + for(var x=0; x<stack.length; x++){ + oa.unshift([stack[x][0], (typeof stack[x][2])]); + } + dojo.debug("<pre>"+oa.join("\n")+"</pre>"); +} + +dojo.hostenv.unwindUriStack = function(){ + var stack = this.loadUriStack; + for(var x in dojo.hostenv.loadedUris){ + for(var y=stack.length-1; y>=0; y--){ + if(stack[y][0]==x){ + stack.splice(y, 1); + } + } + } + var next = stack.pop(); + if((!next)&&(stack.length==0)){ + return; + } + for(var x=0; x<stack.length; x++){ + if((stack[x][0]==next[0])&&(stack[x][2])){ + next[2] == stack[x][2] + } + } + var last = next; + while(dojo.hostenv.loadedUris[next[0]]){ + last = next; + next = stack.pop(); + } + while(typeof next[2] == "string"){ // unwind as far as we can + try{ + // dojo.debug("<pre><![CDATA["+next[2]+"]]></pre>"); + dj_eval(next[2]); + next[1](true); + }catch(e){ + dojo.debug("we got an error when loading "+next[0]); + dojo.debug("error: "+e); + // for(var x in e){ alert(x+" "+e[x]); } + } + dojo.hostenv.loadedUris[next[0]] = true; + dojo.hostenv.loadedUris.push(next[0]); + last = next; + next = stack.pop(); + if((!next)&&(stack.length==0)){ break; } + while(dojo.hostenv.loadedUris[next[0]]){ + last = next; + next = stack.pop(); + } + } + if(next){ + stack.push(next); + dojo.debug("### CHOKED ON: "+next[0]); + } +} + +/** + * Reads the contents of the URI, and evaluates the contents. + * Returns true if it succeeded. Returns false if the URI reading failed. Throws if the evaluation throws. + * The result of the eval is not available to the caller. + */ +dojo.hostenv.loadUri = function(uri, cb){ + if(dojo.hostenv.loadedUris[uri]){ + return; + } + var stack = this.loadUriStack; + stack.push([uri, cb, null]); + var tcb = function(contents){ + // gratuitous hack for Adobe SVG 3 + if(contents.content){ + contents = contents.content; + } + + // stack management + var next = stack.pop(); + if((!next)&&(stack.length==0)){ + dojo.hostenv.modulesLoaded(); + return; + } + if(typeof contents == "string"){ + stack.push(next); + for(var x=0; x<stack.length; x++){ + if(stack[x][0]==uri){ + stack[x][2] = contents; + } + } + next = stack.pop(); + } + if(dojo.hostenv.loadedUris[next[0]]){ + // dojo.debug("WE ALREADY HAD: "+next[0]); + dojo.hostenv.unwindUriStack(); + return; + } + // push back onto stack + stack.push(next); + if(next[0]!=uri){ + // and then unwind as far as we can + if(typeof next[2] == "string"){ + dojo.hostenv.unwindUriStack(); + } + + }else{ + if(!contents){ + next[1](false); + }else{ + var deps = dojo.hostenv.getDepsForEval(next[2]); + if(deps.length>0){ + eval(deps.join(";")); + }else{ + dojo.hostenv.unwindUriStack(); + } + } + } + } + this.getText(uri, tcb, true); +} + +/** +* loadModule("A.B") first checks to see if symbol A.B is defined. +* If it is, it is simply returned (nothing to do). +* If it is not defined, it will look for "A/B.js" in the script root directory, followed +* by "A.js". +* It throws if it cannot find a file to load, or if the symbol A.B is not defined after loading. +* It returns the object A.B. +* +* This does nothing about importing symbols into the current package. +* It is presumed that the caller will take care of that. For example, to import +* all symbols: +* +* with (dojo.hostenv.loadModule("A.B")) { +* ... +* } +* +* And to import just the leaf symbol: +* +* var B = dojo.hostenv.loadModule("A.B"); +* ... +* +* dj_load is an alias for dojo.hostenv.loadModule +*/ +dojo.hostenv.loadModule = function(modulename, exact_only, omit_module_check){ + // alert("dojo.hostenv.loadModule('"+modulename+"');"); + var module = this.findModule(modulename, 0); + if(module){ + return module; + } + + // dojo.debug("dojo.hostenv.loadModule('"+modulename+"');"); + + // protect against infinite recursion from mutual dependencies + if (typeof this.loading_modules_[modulename] !== 'undefined'){ + // NOTE: this should never throw an exception!! "recursive" includes + // are normal in the course of app and module building, so blow out of + // it gracefully, but log it in debug mode + + // dojo.raise("recursive attempt to load module '" + modulename + "'"); + dojo.debug("recursive attempt to load module '" + modulename + "'"); + }else{ + this.addedToLoadingCount.push(modulename); + } + this.loading_modules_[modulename] = 1; + + + // convert periods to slashes + var relpath = modulename.replace(/\./g, '/') + '.js'; + + var syms = modulename.split("."); + var nsyms = modulename.split("."); + if(syms[0]=="dojo"){ // FIXME: need a smarter way to do this! + syms[0] = "src"; + } + var last = syms.pop(); + syms.push(last); + // figure out if we're looking for a full package, if so, we want to do + // things slightly diffrently + var _this = this; + var pfn = this.pkgFileName; + if(last=="*"){ + modulename = (nsyms.slice(0, -1)).join('.'); + + var module = this.findModule(modulename, 0); + // dojo.debug("found: "+modulename+"="+module); + if(module){ + _this.removedFromLoadingCount.push(modulename); + return module; + } + + var nextTry = function(lastStatus){ + if(lastStatus){ + module = _this.findModule(modulename, false); // pass in false so we can give better error + if((!module)&&(syms[syms.length-1]!=pfn)){ + dojo.raise("Module symbol '" + modulename + "' is not defined after loading '" + relpath + "'"); + } + if(module){ + _this.removedFromLoadingCount.push(modulename); + dojo.hostenv.modulesLoaded(); + return; + } + } + syms.pop(); + syms.push(pfn); + // dojo.debug("syms: "+syms); + relpath = syms.join("/") + '.js'; + if(relpath.charAt(0)=="/"){ + relpath = relpath.slice(1); + } + // dojo.debug("relpath: "+relpath); + _this.loadPath(relpath, ((!omit_module_check) ? modulename : null), nextTry); + } + + nextTry(); + }else{ + relpath = syms.join("/") + '.js'; + modulename = nsyms.join('.'); + + var nextTry = function(lastStatus){ + // dojo.debug("lastStatus: "+lastStatus); + if(lastStatus){ + // dojo.debug("inital relpath: "+relpath); + module = _this.findModule(modulename, false); // pass in false so we can give better error + // if(!module){ + if((!module)&&(syms[syms.length-1]!=pfn)){ + dojo.raise("Module symbol '" + modulename + "' is not defined after loading '" + relpath + "'"); + } + if(module){ + _this.removedFromLoadingCount.push(modulename); + dojo.hostenv.modulesLoaded(); + return; + } + } + var setPKG = (syms[syms.length-1]==pfn) ? false : true; + syms.pop(); + if(setPKG){ + syms.push(pfn); + } + relpath = syms.join("/") + '.js'; + if(relpath.charAt(0)=="/"){ + relpath = relpath.slice(1); + } + // dojo.debug("relpath: "+relpath); + _this.loadPath(relpath, ((!omit_module_check) ? modulename : null), nextTry); + } + + this.loadPath(relpath, ((!omit_module_check) ? modulename : null), nextTry); + } + return; +} + +/** + * Read the contents of the specified uri and return those contents. + * + * FIXME: Make sure this is consistent with other implementations of getText + * @param uri A relative or absolute uri. If absolute, it still must be in the same "domain" as we are. + * @param async_cb If not specified, returns false as synchronous is not + * supported. If specified, load asynchronously, and use async_cb as the handler which receives the result of the request. + * @param fail_ok Default false. If fail_ok and !async_cb and loading fails, return null instead of throwing. + */ +dojo.hostenv.async_cb = null; + +dojo.hostenv.unWindGetTextStack = function(){ + if(dojo.hostenv.inFlightCount>0){ + setTimeout("dojo.hostenv.unWindGetTextStack()", 100); + return; + } + // we serialize because this environment is too messed up + // to know how to do anything else + dojo.hostenv.inFlightCount++; + var next = dojo.hostenv.getTextStack.pop(); + if((!next)&&(dojo.hostenv.getTextStack.length==0)){ + dojo.hostenv.inFlightCount--; + dojo.hostenv.async_cb = function(){}; + return; + } + dojo.hostenv.async_cb = next[1]; + // http = window.getURL(uri, dojo.hostenv.anon[cbn]); + window.getURL(next[0], function(result){ + dojo.hostenv.inFlightCount--; + dojo.hostenv.async_cb(result.content); + dojo.hostenv.unWindGetTextStack(); + }); +} + +dojo.hostenv.getText = function(uri, async_cb, fail_ok){ + // dojo.debug("Calling getText()"); + try{ + if(async_cb){ + dojo.hostenv.getTextStack.push([uri, async_cb, fail_ok]); + dojo.hostenv.unWindGetTextStack(); + }else{ + return dojo.raise("No synchronous XMLHTTP implementation available, for uri " + uri); + } + }catch(e){ + return dojo.raise("No XMLHTTP implementation available, for uri " + uri); + } +} + + +/** + * Makes an async post to the specified uri. + * + * FIXME: Not sure that we need this, but adding for completeness. + * More details about the implementation of this are available at + * http://wiki.svg.org/index.php/PostUrl + * @param uri A relative or absolute uri. If absolute, it still must be in the same "domain" as we are. + * @param async_cb If not specified, returns false as synchronous is not + * supported. If specified, load asynchronously, and use async_cb as the progress handler which takes the xmlhttp object as its argument. If async_cb, this function returns null. + * @param text Data to post + * @param fail_ok Default false. If fail_ok and !async_cb and loading fails, return null instead of throwing. + * @param mime_type optional MIME type of the posted data (such as "text/plain") + * @param encoding optional encoding for data. null, 'gzip' and 'deflate' are possible values. If browser does not support binary post this parameter is ignored. + */ +dojo.hostenv.postText = function(uri, async_cb, text, fail_ok, mime_type, encoding){ + var http = null; + + var async_callback = function(httpResponse){ + if (!httpResponse.success) { + dojo.raise("Request for uri '" + uri + "' resulted in " + httpResponse.status); + } + + if(!httpResponse.content) { + if (!fail_ok) dojo.raise("Request for uri '" + uri + "' resulted in no content"); + return null; + } + // FIXME: wtf, I'm losing a reference to async_cb + async_cb(httpResponse.content); + } + + try { + if(async_cb) { + http = window.postURL(uri, text, async_callback, mimeType, encoding); + } else { + return dojo.raise("No synchronous XMLHTTP post implementation available, for uri " + uri); + } + } catch(e) { + return dojo.raise("No XMLHTTP post implementation available, for uri " + uri); + } +} + +/* + * It turns out that if we check *right now*, as this script file is being loaded, + * then the last script element in the window DOM is ourselves. + * That is because any subsequent script elements haven't shown up in the document + * object yet. + */ +function dj_last_script_src() { + var scripts = window.document.getElementsByTagName('script'); + if(scripts.length < 1){ + dojo.raise("No script elements in window.document, so can't figure out my script src"); + } + var li = scripts.length-1; + var xlinkNS = "http://www.w3.org/1999/xlink"; + var src = null; + var script = null; + while(!src){ + script = scripts.item(li); + src = script.getAttributeNS(xlinkNS,"href"); + li--; + if(li<0){ break; } + // break; + } + if(!src){ + dojo.raise("Last script element (out of " + scripts.length + ") has no src"); + } + return src; +} + +if(!dojo.hostenv["library_script_uri_"]){ + dojo.hostenv.library_script_uri_ = dj_last_script_src(); +} + +// dojo.hostenv.loadUri = function(uri){ + /* FIXME: adding a script element doesn't seem to be synchronous, and so + * checking for namespace or object existance after loadUri using this + * method will error out. Need to figure out some other way of handling + * this! + */ + /* + var se = document.createElement("script"); + se.src = uri; + var head = document.getElementsByTagName("head")[0]; + head.appendChild(se); + // document.write("<script type='text/javascript' src='"+uri+"' />"); + return 1; +} +*/ Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_adobesvg.js ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_adobesvg.js ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_adobesvg.js ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_browser.js URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_browser.js?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_browser.js (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_browser.js Mon Feb 19 09:56:06 2007 @@ -0,0 +1,538 @@ +/* + 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 +*/ + +if(typeof window != 'undefined'){ + + // attempt to figure out the path to dojo if it isn't set in the config + (function(){ + // before we get any further with the config options, try to pick them out + // of the URL. Most of this code is from NW + if(djConfig.allowQueryConfig){ + var baseUrl = document.location.toString(); // FIXME: use location.query instead? + var params = baseUrl.split("?", 2); + if(params.length > 1){ + var paramStr = params[1]; + var pairs = paramStr.split("&"); + for(var x in pairs){ + var sp = pairs[x].split("="); + // FIXME: is this eval dangerous? + if((sp[0].length > 9)&&(sp[0].substr(0, 9) == "djConfig.")){ + var opt = sp[0].substr(9); + try{ + djConfig[opt]=eval(sp[1]); + }catch(e){ + djConfig[opt]=sp[1]; + } + } + } + } + } + + if( + ((djConfig["baseScriptUri"] == "")||(djConfig["baseRelativePath"] == "")) && + (document && document.getElementsByTagName) + ){ + var scripts = document.getElementsByTagName("script"); + var rePkg = /(__package__|dojo|bootstrap1)\.js([\?\.]|$)/i; + for(var i = 0; i < scripts.length; i++) { + var src = scripts[i].getAttribute("src"); + if(!src) { continue; } + var m = src.match(rePkg); + if(m) { + var root = src.substring(0, m.index); + if(src.indexOf("bootstrap1") > -1) { root += "../"; } + if(!this["djConfig"]) { djConfig = {}; } + if(djConfig["baseScriptUri"] == "") { djConfig["baseScriptUri"] = root; } + if(djConfig["baseRelativePath"] == "") { djConfig["baseRelativePath"] = root; } + break; + } + } + } + + // fill in the rendering support information in dojo.render.* + var dr = dojo.render; + var drh = dojo.render.html; + var drs = dojo.render.svg; + var dua = (drh.UA = navigator.userAgent); + var dav = (drh.AV = navigator.appVersion); + var t = true; + var f = false; + drh.capable = t; + drh.support.builtin = t; + + dr.ver = parseFloat(drh.AV); + dr.os.mac = dav.indexOf("Macintosh") >= 0; + dr.os.win = dav.indexOf("Windows") >= 0; + // could also be Solaris or something, but it's the same browser + dr.os.linux = dav.indexOf("X11") >= 0; + + drh.opera = dua.indexOf("Opera") >= 0; + drh.khtml = (dav.indexOf("Konqueror") >= 0)||(dav.indexOf("Safari") >= 0); + drh.safari = dav.indexOf("Safari") >= 0; + var geckoPos = dua.indexOf("Gecko"); + drh.mozilla = drh.moz = (geckoPos >= 0)&&(!drh.khtml); + if (drh.mozilla) { + // gecko version is YYYYMMDD + drh.geckoVersion = dua.substring(geckoPos + 6, geckoPos + 14); + } + drh.ie = (document.all)&&(!drh.opera); + drh.ie50 = drh.ie && dav.indexOf("MSIE 5.0")>=0; + drh.ie55 = drh.ie && dav.indexOf("MSIE 5.5")>=0; + drh.ie60 = drh.ie && dav.indexOf("MSIE 6.0")>=0; + drh.ie70 = drh.ie && dav.indexOf("MSIE 7.0")>=0; + + var cm = document["compatMode"]; + drh.quirks = (cm == "BackCompat")||(cm == "QuirksMode")||drh.ie55||drh.ie50; + + // TODO: is the HTML LANG attribute relevant? + dojo.locale = dojo.locale || (drh.ie ? navigator.userLanguage : navigator.language).toLowerCase(); + + dr.vml.capable=drh.ie; + drs.capable = f; + drs.support.plugin = f; + drs.support.builtin = f; + var tdoc = window["document"]; + var tdi = tdoc["implementation"]; + + if((tdi)&&(tdi["hasFeature"])&&(tdi.hasFeature("org.w3c.dom.svg", "1.0"))){ + drs.capable = t; + drs.support.builtin = t; + drs.support.plugin = f; + } + // webkits after 420 support SVG natively. The test string is "AppleWebKit/420+" + if(drh.safari){ + var tmp = dua.split("AppleWebKit/")[1]; + var ver = parseFloat(tmp.split(" ")[0]); + if(ver >= 420){ + drs.capable = t; + drs.support.builtin = t; + drs.support.plugin = f; + } + }else{ + } + })(); + + dojo.hostenv.startPackage("dojo.hostenv"); + + dojo.render.name = dojo.hostenv.name_ = 'browser'; + dojo.hostenv.searchIds = []; + + // These are in order of decreasing likelihood; this will change in time. + dojo.hostenv._XMLHTTP_PROGIDS = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0']; + + dojo.hostenv.getXmlhttpObject = function(){ + // summary: does the work of portably generating a new XMLHTTPRequest object. + var http = null; + var last_e = null; + try{ http = new XMLHttpRequest(); }catch(e){} + if(!http){ + for(var i=0; i<3; ++i){ + var progid = dojo.hostenv._XMLHTTP_PROGIDS[i]; + try{ + http = new ActiveXObject(progid); + }catch(e){ + last_e = e; + } + + if(http){ + dojo.hostenv._XMLHTTP_PROGIDS = [progid]; // so faster next time + break; + } + } + + /*if(http && !http.toString) { + http.toString = function() { "[object XMLHttpRequest]"; } + }*/ + } + + if(!http){ + return dojo.raise("XMLHTTP not available", last_e); + } + + return http; // XMLHTTPRequest instance + } + + dojo.hostenv._blockAsync = false; + dojo.hostenv.getText = function(uri, async_cb, fail_ok){ + // summary: Read the contents of the specified uri and return those contents. + // uri: + // A relative or absolute uri. If absolute, it still must be in + // the same "domain" as we are. + // async_cb: + // If not specified, load synchronously. If specified, load + // asynchronously, and use async_cb as the progress handler which + // takes the xmlhttp object as its argument. If async_cb, this + // function returns null. + // fail_ok: + // Default false. If fail_ok and !async_cb and loading fails, + // return null instead of throwing. + + // need to block async callbacks from snatching this thread as the result + // of an async callback might call another sync XHR, this hangs khtml forever + // hostenv._blockAsync must also be checked in BrowserIO's watchInFlight() + // NOTE: must be declared before scope switches ie. this.getXmlhttpObject() + if(!async_cb){ this._blockAsync = true; } + + var http = this.getXmlhttpObject(); + + function isDocumentOk(http){ + var stat = http["status"]; + // allow a 304 use cache, needed in konq (is this compliant with the http spec?) + return Boolean((!stat)||((200 <= stat)&&(300 > stat))||(stat==304)); + } + + if(async_cb){ + var _this = this, timer = null, gbl = dojo.global(); + var xhr = dojo.evalObjPath("dojo.io.XMLHTTPTransport"); + http.onreadystatechange = function(){ + if(timer){ gbl.clearTimeout(timer); timer = null; } + if(_this._blockAsync || (xhr && xhr._blockAsync)){ + timer = gbl.setTimeout(function () { http.onreadystatechange.apply(this); }, 10); + }else{ + if(4==http.readyState){ + if(isDocumentOk(http)){ + // dojo.debug("LOADED URI: "+uri); + async_cb(http.responseText); + } + } + } + } + } + + http.open('GET', uri, async_cb ? true : false); + try{ + http.send(null); + if(async_cb){ + return null; + } + if(!isDocumentOk(http)){ + var err = Error("Unable to load "+uri+" status:"+ http.status); + err.status = http.status; + err.responseText = http.responseText; + throw err; + } + }catch(e){ + this._blockAsync = false; + if((fail_ok)&&(!async_cb)){ + return null; + }else{ + throw e; + } + } + + this._blockAsync = false; + return http.responseText; // String + } + + dojo.hostenv.defaultDebugContainerId = 'dojoDebug'; + dojo.hostenv._println_buffer = []; + dojo.hostenv._println_safe = false; + dojo.hostenv.println = function(/*String*/line){ + // summary: + // prints the provided line to whatever logging container is + // available. If the page isn't loaded yet, the line may be added + // to a buffer for printing later. + if(!dojo.hostenv._println_safe){ + dojo.hostenv._println_buffer.push(line); + }else{ + try { + var console = document.getElementById(djConfig.debugContainerId ? + djConfig.debugContainerId : dojo.hostenv.defaultDebugContainerId); + if(!console) { console = dojo.body(); } + + var div = document.createElement("div"); + div.appendChild(document.createTextNode(line)); + console.appendChild(div); + } catch (e) { + try{ + // safari needs the output wrapped in an element for some reason + document.write("<div>" + line + "</div>"); + }catch(e2){ + window.status = line; + } + } + } + } + + dojo.addOnLoad(function(){ + dojo.hostenv._println_safe = true; + while(dojo.hostenv._println_buffer.length > 0){ + dojo.hostenv.println(dojo.hostenv._println_buffer.shift()); + } + }); + + function dj_addNodeEvtHdlr(/*DomNode*/node, /*String*/evtName, /*Function*/fp){ + // summary: + // non-destructively adds the specified function to the node's + // evtName handler. + // node: the DomNode to add the handler to + // evtName: should be in the form "click" for "onclick" handlers + var oldHandler = node["on"+evtName] || function(){}; + node["on"+evtName] = function(){ + fp.apply(node, arguments); + oldHandler.apply(node, arguments); + } + return true; + } + + // BEGIN DOMContentLoaded, from Dean Edwards (http://dean.edwards.name/weblog/2006/06/again/) + function dj_load_init(e){ + // allow multiple calls, only first one will take effect + // A bug in khtml calls events callbacks for document for event which isnt supported + // for example a created contextmenu event calls DOMContentLoaded, workaround + var type = (e && e.type) ? e.type.toLowerCase() : "load"; + if(arguments.callee.initialized || (type!="domcontentloaded" && type!="load")){ return; } + arguments.callee.initialized = true; + if(typeof(_timer) != 'undefined'){ + clearInterval(_timer); + delete _timer; + } + + var initFunc = function(){ + //perform initialization + if(dojo.render.html.ie){ + dojo.hostenv.makeWidgets(); + } + }; + + if(dojo.hostenv.inFlightCount == 0){ + initFunc(); + dojo.hostenv.modulesLoaded(); + }else{ + //This else case should be xdomain loading. + //Make sure this is the first thing in the load listener array. + //Part of the dojo.addOnLoad guarantee is that when the listeners are notified, + //It means the DOM (or page) has loaded and that widgets have been parsed. + dojo.hostenv.modulesLoadedListeners.unshift(initFunc); + } + } + + // START DOMContentLoaded + // Mozilla and Opera 9 expose the event we could use + if(document.addEventListener){ + if(dojo.render.html.opera || (dojo.render.html.moz && !djConfig.delayMozLoadingFix)){ + document.addEventListener("DOMContentLoaded", dj_load_init, null); + } + + // mainly for Opera 8.5, won't be fired if DOMContentLoaded fired already. + // also used for Mozilla because of trac #1640 + window.addEventListener("load", dj_load_init, null); + } + + // for Internet Explorer. readyState will not be achieved on init call, but dojo doesn't need it + // however, we'll include it because we don't know if there are other functions added that might. + // Note that this has changed because the build process strips all comments--including conditional + // ones. + if(dojo.render.html.ie && dojo.render.os.win){ + document.attachEvent("onreadystatechange", function(e){ + if(document.readyState == "complete"){ + dj_load_init(); + } + }); + } + + if (/(WebKit|khtml)/i.test(navigator.userAgent)) { // sniff + var _timer = setInterval(function() { + if (/loaded|complete/.test(document.readyState)) { + dj_load_init(); // call the onload handler + } + }, 10); + } + // END DOMContentLoaded + + // IE WebControl hosted in an application can fire "beforeunload" and "unload" + // events when control visibility changes, causing Dojo to unload too soon. The + // following code fixes the problem + // Reference: http://support.microsoft.com/default.aspx?scid=kb;en-us;199155 + if(dojo.render.html.ie){ + dj_addNodeEvtHdlr(window, "beforeunload", function(){ + dojo.hostenv._unloading = true; + window.setTimeout(function() { + dojo.hostenv._unloading = false; + }, 0); + }); + } + + dj_addNodeEvtHdlr(window, "unload", function(){ + dojo.hostenv.unloaded(); + if((!dojo.render.html.ie)||(dojo.render.html.ie && dojo.hostenv._unloading)){ + dojo.hostenv.unloaded(); + } + }); + + dojo.hostenv.makeWidgets = function(){ + // you can put searchIds in djConfig and dojo.hostenv at the moment + // we should probably eventually move to one or the other + var sids = []; + if(djConfig.searchIds && djConfig.searchIds.length > 0) { + sids = sids.concat(djConfig.searchIds); + } + if(dojo.hostenv.searchIds && dojo.hostenv.searchIds.length > 0) { + sids = sids.concat(dojo.hostenv.searchIds); + } + + if((djConfig.parseWidgets)||(sids.length > 0)){ + if(dojo.evalObjPath("dojo.widget.Parse")){ + // we must do this on a delay to avoid: + // http://www.shaftek.org/blog/archives/000212.html + // (IE bug) + var parser = new dojo.xml.Parse(); + if(sids.length > 0){ + for(var x=0; x<sids.length; x++){ + var tmpNode = document.getElementById(sids[x]); + if(!tmpNode){ continue; } + var frag = parser.parseElement(tmpNode, null, true); + dojo.widget.getParser().createComponents(frag); + } + }else if(djConfig.parseWidgets){ + var frag = parser.parseElement(dojo.body(), null, true); + dojo.widget.getParser().createComponents(frag); + } + } + } + } + + dojo.addOnLoad(function(){ + if(!dojo.render.html.ie) { + dojo.hostenv.makeWidgets(); + } + }); + + try{ + if(dojo.render.html.ie){ + document.namespaces.add("v","urn:schemas-microsoft-com:vml"); + document.createStyleSheet().addRule("v\\:*", "behavior:url(#default#VML)"); + } + }catch(e){ } + + // stub, over-ridden by debugging code. This will at least keep us from + // breaking when it's not included + dojo.hostenv.writeIncludes = function(){} + + //TODOC: HOW TO DOC THIS? + // @global: dj_currentDocument + // summary: + // Current document object. 'dj_currentDocument' can be modified for temporary context shifting. + // description: + // dojo.doc() returns dojo.currentDocument. + // Refer to dojo.doc() rather than referring to 'window.document' to ensure your + // code runs correctly in managed contexts. + if(!dj_undef("document", this)){ + dj_currentDocument = this.document; + } + + dojo.doc = function(){ + // summary: + // return the document object associated with the dojo.global() + return dj_currentDocument; + } + + dojo.body = function(){ + // summary: + // return the body object associated with dojo.doc() + // Note: document.body is not defined for a strict xhtml document + return dojo.doc().body || dojo.doc().getElementsByTagName("body")[0]; + } + + dojo.byId = function(/*String*/id, /*DocumentElement*/doc){ + // summary: + // similar to other library's "$" function, takes a string + // representing a DOM id or a DomNode and returns the + // corresponding DomNode. If a Node is passed, this function is a + // no-op. Returns a single DOM node or null, working around + // several browser-specific bugs to do so. + // id: DOM id or DOM Node + // doc: + // optional, defaults to the current value of dj_currentDocument. + // Can be used to retreive node references from other documents. + if((id)&&((typeof id == "string")||(id instanceof String))){ + if(!doc){ doc = dj_currentDocument; } + var ele = doc.getElementById(id); + // workaround bug in IE and Opera 8.2 where getElementById returns wrong element + if(ele && (ele.id != id) && doc.all){ + ele = null; + // get all matching elements with this id + eles = doc.all[id]; + if(eles){ + // if more than 1, choose first with the correct id + if(eles.length){ + for(var i=0; i<eles.length; i++){ + if(eles[i].id == id){ + ele = eles[i]; + break; + } + } + // return 1 and only element + }else{ + ele = eles; + } + } + } + return ele; // DomNode + } + return id; // DomNode + } + + dojo.setContext = function(/*Object*/globalObject, /*DocumentElement*/globalDocument){ + // summary: + // changes the behavior of many core Dojo functions that deal with + // namespace and DOM lookup, changing them to work in a new global + // context. The varibles dj_currentContext and dj_currentDocument + // are modified as a result of calling this function. + dj_currentContext = globalObject; + dj_currentDocument = globalDocument; + }; + + dojo._fireCallback = function(callback, context, cbArguments){ + if((context)&&((typeof callback == "string")||(callback instanceof String))){ + callback=context[callback]; + } + return (context ? callback.apply(context, cbArguments || [ ]) : callback()); + } + + dojo.withGlobal = function(/*Object*/globalObject, /*Function*/callback, /*Object?*/thisObject, /*Array?*/cbArguments){ + // summary: + // Call callback with globalObject as dojo.global() and globalObject.document + // as dojo.doc(). If provided, globalObject will be executed in the context of + // object thisObject + // description: + // When callback() returns or throws an error, the dojo.global() and dojo.doc() will + // be restored to its previous state. + var rval; + var oldGlob = dj_currentContext; + var oldDoc = dj_currentDocument; + try{ + dojo.setContext(globalObject, globalObject.document); + rval = dojo._fireCallback(callback, thisObject, cbArguments); + }finally{ + dojo.setContext(oldGlob, oldDoc); + } + return rval; + } + + dojo.withDoc = function (/*Object*/documentObject, /*Function*/callback, /*Object?*/thisObject, /*Array?*/cbArguments) { + // summary: + // Call callback with documentObject as dojo.doc(). If provided, callback will be executed + // in the context of object thisObject + // description: + // When callback() returns or throws an error, the dojo.doc() will + // be restored to its previous state. + var rval; + var oldDoc = dj_currentDocument; + try{ + dj_currentDocument = documentObject; + rval = dojo._fireCallback(callback, thisObject, cbArguments); + }finally{ + dj_currentDocument = oldDoc; + } + return rval; + } + +} //if (typeof window != 'undefined') Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_browser.js ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_browser.js ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_browser.js ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_dashboard.js URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_dashboard.js?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_dashboard.js (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_dashboard.js Mon Feb 19 09:56:06 2007 @@ -0,0 +1,197 @@ +/* + 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 +*/ + +dojo.render.name = dojo.hostenv.name_ = "dashboard"; + +dojo.hostenv.println = function(/*String*/ message){ + // summary: Prints a message to the OS X console + return alert(message); // null +} + +dojo.hostenv.getXmlhttpObject = function(/*Object*/ kwArgs){ + // summary: Returns the appropriate transfer object for the call type + if(widget.system && kwArgs){ + if((kwArgs.contentType && kwArgs.contentType.indexOf("text/") != 0) || (kwArgs.headers && kwArgs.headers["content-type"] && kwArgs.headers["content-type"].indexOf("text/") != 0)){ + var curl = new dojo.hostenv.CurlRequest; + curl._save = true; + return curl; + }else if(kwArgs.method && kwArgs.method.toUpperCase() == "HEAD"){ + return new dojo.hostenv.CurlRequest; + }else if(kwArgs.headers && kwArgs.header.referer){ + return new dojo.hostenv.CurlRequest; + } + } + return new XMLHttpRequest; // XMLHttpRequest +} + +dojo.hostenv.CurlRequest = function(){ + // summary: Emulates the XMLHttpRequest Object + this.onreadystatechange = null; + this.readyState = 0; + this.responseText = ""; + this.responseXML = null; + this.status = 0; + this.statusText = ""; + this._method = ""; + this._url = ""; + this._async = true; + this._referrer = ""; + this._headers = []; + this._save = false; + this._responseHeader = ""; + this._responseHeaders = {}; + this._fileName = ""; + this._username = ""; + this._password = ""; +} + +dojo.hostenv.CurlRequest.prototype.open = function(/*String*/ method, /*URL*/ url, /*Boolean?*/ async, /*String?*/ username, /*String?*/ password){ + this._method = method; + this._url = url; + if(async){ + this._async = async; + } + if(username){ + this._username = username; + } + if(password){ + this._password = password; + } +} + +dojo.hostenv.CurlRequest.prototype.setRequestHeader = function(/*String*/ label, /*String*/ value){ + switch(label){ + case "Referer": + this._referrer = value; + break; + case "content-type": + break; + default: + this._headers.push(label + "=" + value); + break; + } +} + +dojo.hostenv.CurlRequest.prototype.getAllResponseHeaders = function(){ + return this._responseHeader; // String +} + +dojo.hostenv.CurlRequest.prototype.getResponseHeader = function(/*String*/ headerLabel){ + return this._responseHeaders[headerLabel]; // String +} + +// -sS = Show only errors in errorString +// -i = Display headers with return +// -e = Referrer URI +// -H = Headers +// -d = data to be sent (forces POST) +// -G = forces GET +// -o = Writes to file (in the cache directory) +// -I = Only load headers +// -u = user:password +dojo.hostenv.CurlRequest.prototype.send = function(/*String*/ content){ + this.readyState = 1; + if(this.onreadystatechange){ + this.onreadystatechange.call(this); + } + var query = {sS: ""}; + if(this._referrer){ + query.e = this._referrer; + } + if(this._headers.length){ + query.H = this._headers.join("&"); + } + if(this._username){ + if(this._password){ + query.u = this._username + ":" + this._password; + }else{ + query.u = this._username; + } + } + if(content){ + query.d = this.content; + if(this._method != "POST"){ + query.G = ""; + } + } + if(this._method == "HEAD"){ + query.I = ""; + }else{ + if(this._save){ + query.I = ""; // Get the headers in the initial query + }else{ + query.i = ""; + } + } + + var system = widget.system(dojo.hostenv.CurlRequest._formatCall(query, this._url), null); + this.readyState = 2; + if(this.onreadystatechange){ + this.onreadystatechange.call(this); + } + if(system.errorString){ + this.responseText = system.errorString; + this.status = 0; + }else{ + if(this._save){ + this._responseHeader = system.outputString; + }else{ + var split = system.outputString.replace(/\r/g, "").split("\n\n", 2); + this._responseHeader = split[0]; + this.responseText = split[1]; + } + split = this._responseHeader.split("\n"); + this.statusText = split.shift(); + this.status = this.statusText.split(" ")[1]; + for(var i = 0, header; header = split[i]; i++){ + var header_split = header.split(": ", 2); + this._responseHeaders[header_split[0]] = header_split[1]; + } + if(this._save){ + widget.system("/bin/mkdir cache", null); + // First, make a file name + this._fileName = this._url.split("/").pop().replace(/\W/g, ""); + // Then, get its extension + this._fileName += "." + this._responseHeaders["Content-Type"].replace(/[\r\n]/g, "").split("/").pop() + delete query.I; + query.o = "cache/" + this._fileName; // Tell it where to be saved. + system = widget.system(dojo.hostenv.CurlRequest._formatCall(query, this._url), null); + if(!system.errorString){ + this.responseText = "cache/" + this._fileName; + } + }else if(this._method == "HEAD"){ + this.responseText = this._responseHeader; + } + } + + this.readyState = 4; + if(this.onreadystatechange){ + this.onreadystatechange.call(this); + } +} + +dojo.hostenv.CurlRequest._formatCall = function(query, url){ + var call = ["/usr/bin/curl"]; + for(var key in query){ + if(query[key] != ""){ + call.push("-" + key + " '" + query[key].replace(/'/g, "\'") + "'"); + }else{ + call.push("-" + key); + } + } + call.push("'" + url.replace(/'/g, "\'") + "'"); + return call.join(" "); +} + +dojo.hostenv.exit = function(){ + if(widget.system){ + widget.system("/bin/rm -rf cache/*", null); + } +} Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_dashboard.js ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_dashboard.js ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_dashboard.js ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_jsc.js URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_jsc.js?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_jsc.js (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_jsc.js Mon Feb 19 09:56:06 2007 @@ -0,0 +1,76 @@ +/* + 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 +*/ + +/* + * JScript .NET jsc + * + */ + +dojo.hostenv.name_ = 'jsc'; + +// Sanity check this is the right hostenv. +// See the Rotor source code jscript/engine/globalobject.cs for what globals +// are available. +if((typeof ScriptEngineMajorVersion != 'function')||(ScriptEngineMajorVersion() < 7)){ + dojo.raise("attempt to use JScript .NET host environment with inappropriate ScriptEngine"); +} + +// for more than you wanted to know about why this import is required even if +// we fully qualify all symbols, see +// http://groups.google.com/groups?th=f050c7aeefdcbde2&rnum=12 +import System; + +dojo.hostenv.getText = function(uri){ + if(!System.IO.File.Exists(uri)){ + // dojo.raise("No such file '" + uri + "'"); + return 0; + } + var reader = new System.IO.StreamReader(uri); + var contents : String = reader.ReadToEnd(); + return contents; +} + +dojo.hostenv.loadUri = function(uri){ + var contents = this.getText(uri); + if(!contents){ + dojo.raise("got no back contents from uri '" + uri + "': " + contents); + } + // TODO: in JScript .NET, eval will not affect the symbol table of the current code? + var value = dj_eval(contents); + dojo.debug("jsc eval of contents returned: ", value); + return 1; + + // for an example doing runtime code compilation, see: + // http://groups.google.com/groups?selm=eQ1aeciCBHA.1644%40tkmsftngp05&rnum=6 + // Microsoft.JScript or System.CodeDom.Compiler ? + // var engine = new Microsoft.JScript.Vsa.VsaEngine() + // what about loading a js file vs. a dll? + // GetObject("script:" . uri); +} + +/* The System.Environment object is useful: + print ("CommandLine='" + System.Environment.CommandLine + "' " + + "program name='" + System.Environment.GetCommandLineArgs()[0] + "' " + + "CurrentDirectory='" + System.Environment.CurrentDirectory + "' " + + "StackTrace='" + System.Environment.StackTrace + "'"); +*/ + +// same as System.Console.WriteLine +// sigh; Rotor treats symbol "print" at parse time without actually putting it +// in the builtin symbol table. +// Note that the print symbol is not available if jsc is run with the "/print-" +// option. +dojo.hostenv.println = function(s){ + print(s); // = print +} + +dojo.hostenv.getLibraryScriptUri = function(){ + return System.Environment.GetCommandLineArgs()[0]; +} Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_jsc.js ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_jsc.js ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_jsc.js ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_rhino.js URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_rhino.js?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_rhino.js (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_rhino.js Mon Feb 19 09:56:06 2007 @@ -0,0 +1,257 @@ +/* + 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 +*/ + +/* +* Rhino host environment +*/ +// make jsc shut up (so we can use jsc for sanity checking) +/*@cc_on +@if (@_jscript_version >= 7) +var loadClass; var print; var load; var quit; var version; var Packages; var java; +@end +@*/ + +dojo.hostenv.println=function(line){ + if(arguments.length > 0){ + print(arguments[0]); + for(var i=1; i<arguments.length; i++){ + var valid=false; + for (var p in arguments[i]){valid=true;break;} + if(valid){ + dojo.debugShallow(arguments[i]); + } + } + } else { + print(line); + } +} + +dojo.locale = dojo.locale || java.util.Locale.getDefault().toString().replace('_','-').toLowerCase(); +dojo.render.name = dojo.hostenv.name_ = 'rhino'; +dojo.hostenv.getVersion = function() {return version();}; + +if (dj_undef("byId")) { + dojo.byId = function(id, doc){ + if(id && (typeof id == "string" || id instanceof String)){ + if(!doc){ doc = document; } + return doc.getElementById(id); + } + return id; // assume it's a node + } +} + +// see comments in spidermonkey loadUri +dojo.hostenv.loadUri = function(uri, cb){ + try{ + var local = (new java.io.File(uri)).exists(); + if(!local){ + try{ + // try it as a file first, URL second + var stream = (new java.net.URL(uri)).openStream(); + // close the stream so we don't leak resources + stream.close(); + }catch(e){ + // no debug output; this failure just means the uri was not found. + return false; + } + } +//FIXME: Use Rhino 1.6 native readFile/readUrl if available? + if(cb){ + var contents = (local ? readText : readUri)(uri, "UTF-8"); + cb(eval('('+contents+')')); + }else{ + load(uri); + } + return true; + }catch(e){ + dojo.debug("rhino load('" + uri + "') failed. Exception: " + e); + return false; + } +} + +dojo.hostenv.exit = function(exitcode){ + quit(exitcode); +} + +// Hack to determine current script... +// +// These initial attempts failed: +// 1. get an EcmaError and look at e.getSourceName(): try {eval ("static in return")} catch(e) { ... +// Won't work because NativeGlobal.java only does a put of "name" and "message", not a wrapped reflecting object. +// Even if the EcmaError object had the sourceName set. +// +// 2. var e = Packages.org.mozilla.javascript.Context.getCurrentContext().reportError(''); +// Won't work because it goes directly to the errorReporter, not the return value. +// We want context.interpreterSourceFile and context.interpreterLine, which are used in static Context.getSourcePositionFromStack +// (set by Interpreter.java at interpretation time, if in interpreter mode). +// +// 3. var e = Packages.org.mozilla.javascript.Context.getCurrentContext().reportRuntimeError(''); +// This returns an object, but e.message still does not have source info. +// In compiler mode, perhaps not set; in interpreter mode, perhaps not used by errorReporter? +// +// What we found works is to do basically the same hack as is done in getSourcePositionFromStack, +// making a new java.lang.Exception() and then calling printStackTrace on a string stream. +// We have to parse the string for the .js files (different from the java files). +// This only works however in compiled mode (-opt 0 or higher). +// In interpreter mode, entire stack is java. +// When compiled, printStackTrace is like: +// java.lang.Exception +// at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) +// at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) +// at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) +// at java.lang.reflect.Constructor.newInstance(Constructor.java:274) +// at org.mozilla.javascript.NativeJavaClass.constructSpecific(NativeJavaClass.java:228) +// at org.mozilla.javascript.NativeJavaClass.construct(NativeJavaClass.java:185) +// at org.mozilla.javascript.ScriptRuntime.newObject(ScriptRuntime.java:1269) +// at org.mozilla.javascript.gen.c2.call(/Users/mda/Sites/burstproject/testrhino.js:27) +// ... +// at org.mozilla.javascript.tools.shell.Main.main(Main.java:76) +// +// Note may get different answers based on: +// Context.setOptimizationLevel(-1) +// Context.setGeneratingDebug(true) +// Context.setGeneratingSource(true) +// +// Some somewhat helpful posts: +// http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&safe=off&selm=9v9n0g%246gr1%40ripley.netscape.com +// http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&safe=off&selm=3BAA2DC4.6010702%40atg.com +// +// Note that Rhino1.5R5 added source name information in some exceptions. +// But this seems not to help in command-line Rhino, because Context.java has an error reporter +// so no EvaluationException is thrown. + +// do it by using java java.lang.Exception +function dj_rhino_current_script_via_java(depth) { + var optLevel = Packages.org.mozilla.javascript.Context.getCurrentContext().getOptimizationLevel(); + // if (optLevel == -1){ dojo.unimplemented("getCurrentScriptURI (determine current script path for rhino when interpreter mode)", ''); } + var caw = new java.io.CharArrayWriter(); + var pw = new java.io.PrintWriter(caw); + var exc = new java.lang.Exception(); + var s = caw.toString(); + // we have to exclude the ones with or without line numbers because they put double entries in: + // at org.mozilla.javascript.gen.c3._c4(/Users/mda/Sites/burstproject/burst/Runtime.js:56) + // at org.mozilla.javascript.gen.c3.call(/Users/mda/Sites/burstproject/burst/Runtime.js) + var matches = s.match(/[^\(]*\.js\)/gi); + if(!matches){ + throw Error("cannot parse printStackTrace output: " + s); + } + + // matches[0] is entire string, matches[1] is this function, matches[2] is caller, ... + var fname = ((typeof depth != 'undefined')&&(depth)) ? matches[depth + 1] : matches[matches.length - 1]; + var fname = matches[3]; + if(!fname){ fname = matches[1]; } + // print("got fname '" + fname + "' from stack string '" + s + "'"); + if (!fname){ throw Error("could not find js file in printStackTrace output: " + s); } + //print("Rhino getCurrentScriptURI returning '" + fname + "' from: " + s); + return fname; +} + +// UNUSED: leverage new support in native exception for getSourceName +/* +function dj_rhino_current_script_via_eval_exception() { + var exc; + // 'ReferenceError: "undefinedsymbol" is not defined.' + try {eval ("undefinedsymbol()") } catch(e) {exc = e;} + // 'Error: whatever' + // try{throw Error("whatever");} catch(e) {exc = e;} + // 'SyntaxError: identifier is a reserved word' + // try {eval ("static in return")} catch(e) { exc = e; } + // print("got exception: '" + exc + "' type=" + (typeof exc)); + // print("exc.stack=" + (typeof exc.stack)); + var sn = exc.rhinoException.getSourceName(); + print("SourceName=" + sn); + return sn; +}*/ + +// reading a file from disk in Java is a humiliating experience by any measure. +// Lets avoid that and just get the freaking text +function readText(path, encoding){ + encoding = encoding || "utf-8"; + // NOTE: we intentionally avoid handling exceptions, since the caller will + // want to know + var jf = new java.io.File(path); + var is = new java.io.FileInputStream(jf); + return dj_readInputStream(is, encoding); +} + +function readUri(uri, encoding){ + var conn = (new java.net.URL(uri)).openConnection(); + encoding = encoding || conn.getContentEncoding() || "utf-8"; + var is = conn.getInputStream(); + return dj_readInputStream(is, encoding); +} + +function dj_readInputStream(is, encoding){ + var input = new java.io.BufferedReader(new java.io.InputStreamReader(is, encoding)); + try { + var sb = new java.lang.StringBuffer(); + var line = ""; + while((line = input.readLine()) !== null){ + sb.append(line); + sb.append(java.lang.System.getProperty("line.separator")); + } + return sb.toString(); + } finally { + input.close(); + } +} + +// call this now because later we may not be on the top of the stack +if(!djConfig.libraryScriptUri.length){ + try{ + djConfig.libraryScriptUri = dj_rhino_current_script_via_java(1); + }catch(e){ + // otherwise just fake it + if(djConfig["isDebug"]){ + print("\n"); + print("we have no idea where Dojo is located."); + print("Please try loading rhino in a non-interpreted mode or set a"); + print("\n\tdjConfig.libraryScriptUri\n"); + print("Setting the dojo path to './'"); + print("This is probably wrong!"); + print("\n"); + print("Dojo will try to load anyway"); + } + djConfig.libraryScriptUri = "./"; + } +} + +dojo.doc = function(){ + // summary: + // return the document object associated with the dojo.global() + return document; +} + +dojo.body = function(){ + return document.body; +} + +function setTimeout(func, delay){ + // summary: provides timed callbacks using Java threads + + var def={ + sleepTime:delay, + hasSlept:false, + + run:function(){ + if (!this.hasSlept){ + this.hasSlept=true; + java.lang.Thread.currentThread().sleep(this.sleepTime); + } + try { + func(); + } catch(e){dojo.debug("Error running setTimeout thread:" + e);} + } + }; + + var runnable=new java.lang.Runnable(def); + var thread=new java.lang.Thread(runnable); + thread.start(); +} Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_rhino.js ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_rhino.js ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_rhino.js ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_spidermonkey.js URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_spidermonkey.js?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_spidermonkey.js (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_spidermonkey.js Mon Feb 19 09:56:06 2007 @@ -0,0 +1,79 @@ +/* + 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 +*/ + +/* + * SpiderMonkey host environment + */ + +dojo.hostenv.name_ = 'spidermonkey'; + +dojo.hostenv.println = print; +dojo.hostenv.exit = function(exitcode){ + quit(exitcode); +} + +// version() returns 0, sigh. and build() returns nothing but just prints. +dojo.hostenv.getVersion = function(){ return version(); } + +// make jsc shut up (so we can use jsc for sanity checking) +/*@cc_on +@if (@_jscript_version >= 7) +var line2pc; var print; var load; var quit; +@end +@*/ + +if(typeof line2pc == 'undefined'){ + dojo.raise("attempt to use SpiderMonkey host environment when no 'line2pc' global"); +} + +/* + * This is a hack that determines the current script file by parsing a generated + * stack trace (relying on the non-standard "stack" member variable of the + * SpiderMonkey Error object). + * If param depth is passed in, it'll return the script file which is that far down + * the stack, but that does require that you know how deep your stack is when you are + * calling. + */ +function dj_spidermonkey_current_file(depth){ + var s = ''; + try{ + throw Error("whatever"); + }catch(e){ + s = e.stack; + } + // lines are like: bu_getCurrentScriptURI_spidermonkey("ScriptLoader.js")@burst/Runtime.js:101 + var matches = s.match(/[^@]*\.js/gi); + if(!matches){ + dojo.raise("could not parse stack string: '" + s + "'"); + } + var fname = (typeof depth != 'undefined' && depth) ? matches[depth + 1] : matches[matches.length - 1]; + if(!fname){ + dojo.raise("could not find file name in stack string '" + s + "'"); + } + //print("SpiderMonkeyRuntime got fname '" + fname + "' from stack string '" + s + "'"); + return fname; +} + +// call this now because later we may not be on the top of the stack +if(!dojo.hostenv.library_script_uri_){ + dojo.hostenv.library_script_uri_ = dj_spidermonkey_current_file(0); +} + +dojo.hostenv.loadUri = function(uri){ + // spidermonkey load() evaluates the contents into the global scope (which + // is what we want). + // TODO: sigh, load() does not return a useful value. + // Perhaps it is returning the value of the last thing evaluated? + var ok = load(uri); + // dojo.debug("spidermonkey load(", uri, ") returned ", ok); + return 1; +} + + Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_spidermonkey.js ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_spidermonkey.js ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_spidermonkey.js ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_svg.js URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_svg.js?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_svg.js (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/hostenv_svg.js Mon Feb 19 09:56:06 2007 @@ -0,0 +1,223 @@ +/* + 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 +*/ + +// hostenv_svg +if(typeof window == 'undefined'){ + dojo.raise("attempt to use adobe svg hostenv when no window object"); +} +dojo.debug = function(){ + if (!djConfig.isDebug) { return; } + var args = arguments; + var isJUM = dj_global["jum"]; + var s = isJUM ? "": "DEBUG: "; + for (var i = 0; i < args.length; ++i){ s += args[i]; } + if (isJUM){ // this seems to be the only way to get JUM to "play nice" + jum.debug(s); + } else{ + dojo.hostenv.println(s); + } +}; + +// set up dojo.render. +dojo.render.name = navigator.appName; +dojo.render.ver = parseFloat(navigator.appVersion, 10); +switch(navigator.platform){ + case "MacOS": + dojo.render.os.osx = true; + break; + case "Linux": + dojo.render.os |
Free forum by Nabble | Edit this page |