You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by jk...@apache.org on 2007/07/28 22:28:11 UTC
svn commit: r560608 - in /tapestry/tapestry4/trunk/tapestry-framework/src:
java/org/apache/tapestry/dojo/ js/dojo-0.4.3/ js/dojo-0.4.3/src/date/
js/dojo-0.4.3/src/widget/ test/org/apache/tapestry/dojo/
Author: jkuhnert
Date: Sat Jul 28 13:28:10 2007
New Revision: 560608
URL: http://svn.apache.org/viewvc?view=rev&rev=560608
Log:
Fixes TAPESTRY-1551. New layered build system wasn't working with the i18n pre-bundled locale resource logic.
Modified:
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/dojo/AjaxShellDelegate.java
tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/dojo.js
tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/dojo2.js
tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/src/date/format.js
tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/src/widget/TimePicker.js
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/dojo/AjaxShellDelegateTest.java
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/dojo/AjaxShellDelegate.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/dojo/AjaxShellDelegate.java?view=diff&rev=560608&r1=560607&r2=560608
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/dojo/AjaxShellDelegate.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/dojo/AjaxShellDelegate.java Sat Jul 28 13:28:10 2007
@@ -13,17 +13,13 @@
// limitations under the License.
package org.apache.tapestry.dojo;
-import java.util.Locale;
-
import org.apache.hivemind.util.Defense;
-import org.apache.tapestry.IAsset;
-import org.apache.tapestry.IMarkupWriter;
-import org.apache.tapestry.IPage;
-import org.apache.tapestry.IRender;
-import org.apache.tapestry.IRequestCycle;
+import org.apache.tapestry.*;
import org.apache.tapestry.html.Shell;
import org.apache.tapestry.json.JSONObject;
+import java.util.Locale;
+
/**
* The default rendering delegate responseible for include the dojo sources in
* to the {@link Shell} component.
@@ -41,8 +37,8 @@
/** Client side critical log level. */
public static final String BROWSER_LOG_CRITICAL="CRITICAL";
- private static final String SYSTEM_NEWLINE= (String)java.security.AccessController.doPrivileged(
- new sun.security.action.GetPropertyAction("line.separator"));
+ private static final String SYSTEM_NEWLINE= (String)java.security.AccessController.doPrivileged(
+ new sun.security.action.GetPropertyAction("line.separator"));
private IAsset _dojoSource;
@@ -70,6 +66,12 @@
private boolean _debugAtAllCosts;
+ /** Default list of pre-bundled dojo supported locales */
+ protected String[] SUPPORTED_LOCALES = { "en-us", "en", "de-de", "de", "en-gb",
+ "es-es", "es", "fr-fr", "fr", "zh-cn",
+ "zh-tw", "zh" , "it-it", "it", "ja-jp",
+ "ja", "ko-kr", "ko", "pt-br", "pt", "xx"};
+
/**
* {@inheritDoc}
*/
@@ -83,7 +85,10 @@
// .js files to included in the document head so that javascript errors
// are able to resolve to the context of the file instead of just "dojo.js"
- dojoConfig.put("isDebug", _debug);
+ if (_debug)
+ {
+ dojoConfig.put("isDebug", _debug);
+ }
if (_debugAtAllCosts)
dojoConfig.put("debugAtAllCosts", _debugAtAllCosts);
@@ -107,16 +112,22 @@
Locale locale = cycle.getPage().getLocale();
- dojoConfig.put("locale", locale.getLanguage().toLowerCase()
- + ((locale.getCountry() != null && locale.getCountry().trim().length() > 0)
- ? "-" + locale.getCountry().toLowerCase()
- : ""));
+ String localeStr = locale.getLanguage().toLowerCase()
+ + ((locale.getCountry() != null && locale.getCountry().trim().length() > 0)
+ ? "-" + locale.getCountry().toLowerCase()
+ : "");
+
+ if (isLocaleSupported(localeStr))
+ {
+ dojoConfig.put("locale", localeStr);
+ }
// Write the required script includes and dojo.requires
StringBuffer str = new StringBuffer("<script type=\"text/javascript\">");
str.append("djConfig = ").append(dojoConfig.toString())
- .append(" </script>" + SYSTEM_NEWLINE + SYSTEM_NEWLINE + " ");
+ .append(" </script>")
+ .append(SYSTEM_NEWLINE).append(SYSTEM_NEWLINE);
// include the core dojo.js package
@@ -142,10 +153,10 @@
String logRequire = _consoleEnabled ? "dojo.require(\"dojo.debug.console\");" + SYSTEM_NEWLINE
: "dojo.require(\"dojo.logging.Logger\");" + SYSTEM_NEWLINE;
- str.append(SYSTEM_NEWLINE + "<script type=\"text/javascript\">" + SYSTEM_NEWLINE);
+ str.append(SYSTEM_NEWLINE).append("<script type=\"text/javascript\">").append(SYSTEM_NEWLINE);
str.append(logRequire)
.append("dojo.log.setLevel(dojo.log.getLevel(\"").append(_browserLogLevel)
- .append("\"));" + SYSTEM_NEWLINE)
+ .append("\"));").append(SYSTEM_NEWLINE)
.append("</script>");
}
@@ -157,10 +168,10 @@
tapestryUrl = tapestryUrl.substring(0, tapestryUrl.length() - 1);
}
- str.append(SYSTEM_NEWLINE + "<script type=\"text/javascript\">" + SYSTEM_NEWLINE)
+ str.append(SYSTEM_NEWLINE).append("<script type=\"text/javascript\">").append(SYSTEM_NEWLINE)
.append("dojo.registerModulePath(\"tapestry\", \"")
- .append(tapestryUrl).append("\");" + SYSTEM_NEWLINE);
- str.append("</script>" + SYSTEM_NEWLINE);
+ .append(tapestryUrl).append("\");").append(SYSTEM_NEWLINE);
+ str.append("</script>").append(SYSTEM_NEWLINE);
// include core tapestry.js package
@@ -169,13 +180,37 @@
// namespace registration
- str.append(SYSTEM_NEWLINE + "<script type=\"text/javascript\">" + SYSTEM_NEWLINE);
- str.append("dojo.require(\"tapestry.namespace\");" + SYSTEM_NEWLINE)
- .append("tapestry.requestEncoding='").append(cycle.getEngine().getOutputEncoding())
- .append("';" + SYSTEM_NEWLINE).append("</script>");
+ str.append(SYSTEM_NEWLINE).append("<script type=\"text/javascript\">").append(SYSTEM_NEWLINE);
+ str.append("dojo.require(\"tapestry.namespace\");").append(SYSTEM_NEWLINE)
+ .append("tapestry.requestEncoding='")
+ .append(cycle.getEngine().getOutputEncoding()).append("';")
+ .append(SYSTEM_NEWLINE).append("</script>");
writer.printRaw(str.toString());
writer.println();
+ }
+
+ /**
+ * Checks if the provided locale string matches one of the predefined {@link #SUPPORTED_LOCALES}
+ * in the dojo javascript library.
+ *
+ * @param locale
+ * The Dojo formatted locale string to check.
+ *
+ * @return True if locale is supported and ok to define in dojoConfig - false otherwise.
+ */
+ protected boolean isLocaleSupported(String locale)
+ {
+ if (locale == null)
+ return false;
+
+ for (int i=0; i < SUPPORTED_LOCALES.length; i++)
+ {
+ if (locale.equals(SUPPORTED_LOCALES[i]))
+ return true;
+ }
+
+ return false;
}
/**
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/dojo.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/dojo.js?view=diff&rev=560608&r1=560607&r2=560608
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/dojo.js (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/dojo.js Sat Jul 28 13:28:10 2007
@@ -515,7 +515,7 @@
if(_81){
var _85=_81.split(",");
for(var i=0;i<_85.length;i++){
-if(_82.indexOf(_85[i])==0){
+if(_82.indexOf(_85[i])==0 || _85[i].indexOf(_82)==0){
if(_85[i].length>_84.length){
_84=_85[i];
}
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/dojo2.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/dojo2.js?view=diff&rev=560608&r1=560607&r2=560608
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/dojo2.js (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/dojo2.js Sat Jul 28 13:28:10 2007
@@ -1142,8 +1142,8 @@
dojo.require("dojo.lang.func");
dojo.require("dojo.string.common");
dojo.require("dojo.i18n.common");
-dojo.requireLocalization("dojo.i18n.calendar","gregorian");
-dojo.requireLocalization("dojo.i18n.calendar","gregorianExtras");
+dojo.requireLocalization("dojo.i18n.calendar","gregorian", null, dojo.hostenv.localesGenerated.join(","));
+dojo.requireLocalization("dojo.i18n.calendar","gregorianExtras", null, dojo.hostenv.localesGenerated.join(","));
(function(){
dojo.date.format=function(_f4,_f5){
if(typeof _f5=="string"){
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/src/date/format.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/src/date/format.js?view=diff&rev=560608&r1=560607&r2=560608
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/src/date/format.js (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/src/date/format.js Sat Jul 28 13:28:10 2007
@@ -6,8 +6,8 @@
dojo.require("dojo.lang.func");
dojo.require("dojo.string.common");
dojo.require("dojo.i18n.common");
-dojo.requireLocalization("dojo.i18n.calendar","gregorian",null,"zh-cn,zh-hk,de,ko,zh-tw,zh,ja,fi,pt-br,fr,es,ROOT,hu,en,it,sv,nl,pt");
-dojo.requireLocalization("dojo.i18n.calendar","gregorianExtras",null,"zh,ja,ROOT");
+dojo.requireLocalization("dojo.i18n.calendar","gregorian",null, dojo.hostenv.localesGenerated.join(","));
+dojo.requireLocalization("dojo.i18n.calendar","gregorianExtras",null, dojo.hostenv.localesGenerated.join(","));
(function(){
dojo.date.format=function(_1,_2){
if(typeof _2=="string"){
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/src/widget/TimePicker.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/src/widget/TimePicker.js?view=diff&rev=560608&r1=560607&r2=560608
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/src/widget/TimePicker.js (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/src/widget/TimePicker.js Sat Jul 28 13:28:10 2007
@@ -6,7 +6,7 @@
dojo.require("dojo.date.format");
dojo.require("dojo.dom");
dojo.require("dojo.html.style");
-dojo.requireLocalization("dojo.i18n.calendar","gregorian",null,"zh-cn,zh-hk,de,ko,zh-tw,zh,ja,fi,pt-br,fr,es,ROOT,hu,en,it,sv,nl,pt");
+dojo.requireLocalization("dojo.i18n.calendar","gregorian",null, dojo.hostenv.localesGenerated.join(","));
dojo.requireLocalization("dojo.widget","TimePicker",null,"ROOT");
dojo.widget.defineWidget("dojo.widget.TimePicker",dojo.widget.HtmlWidget,function(){
this.time="";
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/dojo/AjaxShellDelegateTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/dojo/AjaxShellDelegateTest.java?view=diff&rev=560608&r1=560607&r2=560608
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/dojo/AjaxShellDelegateTest.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/dojo/AjaxShellDelegateTest.java Sat Jul 28 13:28:10 2007
@@ -13,21 +13,16 @@
// limitations under the License.
package org.apache.tapestry.dojo;
-import java.util.Locale;
-
import org.apache.hivemind.Resource;
-import org.apache.tapestry.BaseComponentTestCase;
-import org.apache.tapestry.IAsset;
-import org.apache.tapestry.IEngine;
-import org.apache.tapestry.IMarkupWriter;
-import org.apache.tapestry.IPage;
-import org.apache.tapestry.IRequestCycle;
+import org.apache.tapestry.*;
import org.apache.tapestry.engine.IEngineService;
import org.apache.tapestry.engine.ILink;
import static org.easymock.EasyMock.checkOrder;
import static org.easymock.EasyMock.expect;
import org.testng.annotations.Test;
+import java.util.Locale;
+
/**
* Tests basic functionality of {@link AjaxShellDelegate}.
@@ -101,11 +96,11 @@
verify();
- assertBuffer("<script type=\"text/javascript\">djConfig = {\"isDebug\":false,"
+ assertBuffer("<script type=\"text/javascript\">djConfig = {"
+ "\"baseRelativePath\":\"http:///dojo/path\","
+"\"parseWidgets\":false,\"locale\":\"en-us\"} </script>" + SYSTEM_NEWLINE +
SYSTEM_NEWLINE +
- " <script type=\"text/javascript\" src=\"http:///dojo/path/dojo.js\"></script>" + SYSTEM_NEWLINE
+ "<script type=\"text/javascript\" src=\"http:///dojo/path/dojo.js\"></script>" + SYSTEM_NEWLINE
+ "<script type=\"text/javascript\">" + SYSTEM_NEWLINE +
"dojo.registerModulePath(\"tapestry\", \"/tapestry\");" + SYSTEM_NEWLINE +
"</script>" + SYSTEM_NEWLINE +
@@ -161,7 +156,7 @@
assertBuffer("<script type=\"text/javascript\">djConfig = {\"isDebug\":true,\"baseRelativePath\":\"http:///dojo/path\"," +
"\"parseWidgets\":false,\"locale\":\"en-gb\"} </script>" + SYSTEM_NEWLINE +
SYSTEM_NEWLINE +
- " <script type=\"text/javascript\" src=\"http:///dojo/path/dojo.js\"></script>" + SYSTEM_NEWLINE +
+ "<script type=\"text/javascript\" src=\"http:///dojo/path/dojo.js\"></script>" + SYSTEM_NEWLINE +
"<script type=\"text/javascript\">" + SYSTEM_NEWLINE +
"dojo.require(\"dojo.debug.console\");" + SYSTEM_NEWLINE +
"dojo.log.setLevel(dojo.log.getLevel(\"DEBUG\"));" + SYSTEM_NEWLINE +