You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
127 lines
3.5 KiB
127 lines
3.5 KiB
// module: |
|
// dijit/tests/_testCommon.js |
|
// description: |
|
// Deprecated, remove in 2.0. New test files should use boilerplate.html rather than this file, |
|
// and non-test files shouldn't be using either. |
|
|
|
require([ |
|
"require", |
|
"dojo/_base/array", |
|
"dojo/_base/config", |
|
"dojo/dom", |
|
"dojo/dom-attr", |
|
"dojo/dom-class", |
|
"dojo/dom-construct", |
|
"dojo/_base/kernel", |
|
"dojo/_base/lang", |
|
"dojo/query", |
|
"dojo/ready", |
|
"dojo/_base/window" |
|
], function(require, array, config, dom, domAttr, domClass, domConstruct, kernel, lang, query, ready, win){ |
|
|
|
var dir = "", |
|
theme = false, |
|
themeModule = "dijit", |
|
testMode = null, |
|
defTheme = "claro", |
|
vars={}; |
|
|
|
if(window.location.href.indexOf("?") > -1){ |
|
var str = window.location.href.substr(window.location.href.indexOf("?")+1).split(/#/); |
|
var ary = str[0].split(/&/); |
|
for(var i=0; i<ary.length; i++){ |
|
var split = ary[i].split("="), |
|
key = split[0], |
|
value = (split[1]||'').replace(/[^\w]/g, ""); // replace() to prevent XSS attack |
|
switch(key){ |
|
case "locale": |
|
// locale string | null |
|
kernel.locale = config.locale = locale = value; |
|
break; |
|
case "dir": |
|
// rtl | null |
|
document.getElementsByTagName("html")[0].dir = value; |
|
dir = value; |
|
break; |
|
case "theme": |
|
// tundra | soria | nihilo | claro | null |
|
theme = value; |
|
break; |
|
case "a11y": |
|
if(value){ testMode = "dj_a11y"; } |
|
break; |
|
case "themeModule": |
|
// moduleName | null |
|
if(value){ themeModule = value; } |
|
} |
|
vars[key] = value; |
|
} |
|
} |
|
kernel._getVar = function(k, def){ // TODO: not sure what this is |
|
return vars[k] || def; |
|
}; |
|
|
|
// BIDI |
|
if(dir == "rtl"){ |
|
ready(0, function(){ |
|
// pretend all the labels are in an RTL language, because |
|
// that affects how they lay out relative to inline form widgets |
|
query("label").attr("dir", "rtl"); |
|
}); |
|
} |
|
|
|
// a11y |
|
if(testMode){ |
|
ready(0, function(){ |
|
var b = win.body(); |
|
if(testMode){ |
|
domClass.add(b, testMode); |
|
} |
|
}); |
|
} |
|
|
|
// If URL specifies a non-claro theme then pull in those theme CSS files and modify |
|
// <body> to point to that new theme instead of claro. |
|
// |
|
// Also defer parsing and any dojo.ready() calls that the test file makes |
|
// until the CSS has finished loading. |
|
if(theme){ |
|
// Wait until JS modules have finished loading so this doesn't confuse |
|
// AMD loader. |
|
ready(1, function(){ |
|
// Reset <body> to point to the specified theme |
|
var b = win.body(); |
|
domClass.replace(b, theme, defTheme); |
|
|
|
// Remove claro CSS |
|
query('link[href$="claro.css"]').orphan(); |
|
query('link[href$="claro/document.css"]').orphan(); |
|
|
|
// Load theme CSS. |
|
// Eventually would like to use [something like] |
|
// https://github.com/unscriptable/curl/blob/master/src/curl/plugin/css.js |
|
// to load the CSS and then know exactly when it finishes loading. |
|
var modules = [ |
|
require.toUrl(themeModule+"/themes/"+theme+"/"+theme+".css"), |
|
require.toUrl(themeModule+"/themes/"+theme+"/"+theme+"_rtl.css"), |
|
require.toUrl("dojo/resources/dojo.css") |
|
]; |
|
var head = query("head")[0]; |
|
array.forEach(modules, function(css){ |
|
if(document.createStyleSheet){ |
|
// For IE |
|
document.createStyleSheet(css); |
|
}else{ |
|
// For other browsers |
|
domConstruct.place('<link rel="stylesheet" type="text/css" href="'+css+'"/>', |
|
head); |
|
} |
|
}); |
|
}); |
|
ready(2, function(){ |
|
// Delay parsing and other dojo.ready() callbacks (except ones in this file) |
|
// until the injected <link>'s above have finished loading. |
|
require(["dijit/tests/delay!320"]); |
|
}); |
|
} |
|
});
|
|
|