You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2014/11/19 15:34:13 UTC

svn commit: r1640561 - in /openmeetings: branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/ branches/3.0.x/src/web/java/org/apache/openmeetings/web/util/ trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ t...

Author: solomax
Date: Wed Nov 19 14:34:13 2014
New Revision: 1640561

URL: http://svn.apache.org/r1640561
Log:
[OPENMEETINGS-1123] redirect loop is fixed

Modified:
    openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/BasePage.java
    openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/util/FormatHelper.java
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseNotInitedPage.java
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FormatHelper.java

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/BasePage.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/BasePage.java?rev=1640561&r1=1640560&r2=1640561&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/BasePage.java (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/BasePage.java Wed Nov 19 14:34:13 2014
@@ -25,6 +25,7 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.common.HeaderPanel;
+import org.apache.openmeetings.web.util.FormatHelper;
 import org.apache.openmeetings.web.util.OmUrlFragment;
 import org.apache.openmeetings.web.util.OmUrlFragment.AreaKeys;
 import org.apache.wicket.AttributeModifier;
@@ -81,8 +82,13 @@ public abstract class BasePage extends A
 		response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(Application.get().getJavaScriptLibrarySettings().getJQueryReference())));
 		super.renderHead(response);
 		
-		FieldLanguage lang = WebSession.getLanguageObj();
-		if (Boolean.TRUE.equals(lang.getRtl())) {
+		boolean rtl = false;
+		if (Application.isInstalled()) {
+			rtl = Boolean.TRUE.equals(WebSession.getLanguageObj().getRtl());
+		} else {
+			rtl = FormatHelper.isRtlLanguage(WebSession.get().getLocale().toString());
+		}
+		if (rtl) {
 			response.render(CssHeaderItem.forUrl("css/theme-rtl.css"));
 		}
 	}

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/util/FormatHelper.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/util/FormatHelper.java?rev=1640561&r1=1640560&r2=1640561&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/util/FormatHelper.java (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/util/FormatHelper.java Wed Nov 19 14:34:13 2014
@@ -20,9 +20,45 @@ package org.apache.openmeetings.web.util
 
 import static org.apache.commons.lang3.StringEscapeUtils.escapeHtml4;
 
+import java.util.regex.Pattern;
+
 import org.apache.openmeetings.db.entity.user.User;
 
 public class FormatHelper {
+	/**
+	 * taken from BidiUtils
+	 * 
+	 * A regular expression for matching right-to-left language codes. See
+	 * {@link #isRtlLanguage} for the design.
+	 */
+	private static final Pattern RtlLocalesRe = Pattern.compile("^(ar|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Arab|Hebr|Thaa|Nkoo|Tfng))"
+					+ "(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)");
+
+	/**
+	 * Check if a BCP 47 / III language code indicates an RTL language, i.e.
+	 * either: - a language code explicitly specifying one of the right-to-left
+	 * scripts, e.g. "az-Arab", or
+	 * <p>
+	 * - a language code specifying one of the languages normally written in a
+	 * right-to-left script, e.g. "fa" (Farsi), except ones explicitly
+	 * specifying Latin or Cyrillic script (which are the usual LTR
+	 * alternatives).
+	 * <p>
+	 * The list of right-to-left scripts appears in the 100-199 range in
+	 * http://www.unicode.org/iso15924/iso15924-num.html, of which Arabic and
+	 * Hebrew are by far the most widely used. We also recognize Thaana, N'Ko,
+	 * and Tifinagh, which also have significant modern usage. The rest (Syriac,
+	 * Samaritan, Mandaic, etc.) seem to have extremely limited or no modern
+	 * usage and are not recognized. The languages usually written in a
+	 * right-to-left script are taken as those with Suppress-Script:
+	 * Hebr|Arab|Thaa|Nkoo|Tfng in
+	 * http://www.iana.org/assignments/language-subtag-registry, as well as
+	 * Sindhi (sd) and Uyghur (ug). The presence of other subtags of the
+	 * language code, e.g. regions like EG (Egypt), is ignored.
+	 */
+	public static boolean isRtlLanguage(String languageString) {
+		return languageString != null && RtlLocalesRe.matcher(languageString).find();
+	}
 
 	public static String formatUser(User u) {
 		return formatUser(u, false);

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseNotInitedPage.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseNotInitedPage.java?rev=1640561&r1=1640560&r2=1640561&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseNotInitedPage.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseNotInitedPage.java Wed Nov 19 14:34:13 2014
@@ -19,6 +19,9 @@
 package org.apache.openmeetings.web.pages;
 
 import org.apache.openmeetings.installation.InstallationConfig;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.util.FormatHelper;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.request.IRequestParameters;
 
@@ -34,12 +37,16 @@ public abstract class BaseNotInitedPage 
 	
 	@Override
 	protected String getLanguageCode() {
-		return "en";
+		return WebSession.get().getLocale().getCountry();
 	}
 	
 	@Override
 	protected boolean isRtl() {
-		return false;
+		boolean rtl = false;
+		if (Application.isInstalled()) {
+			rtl = FormatHelper.isRtlLanguage(WebSession.get().getLocale().toString());
+		}
+		return rtl;
 	}
 	
 	@Override

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FormatHelper.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FormatHelper.java?rev=1640561&r1=1640560&r2=1640561&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FormatHelper.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FormatHelper.java Wed Nov 19 14:34:13 2014
@@ -20,9 +20,45 @@ package org.apache.openmeetings.web.util
 
 import static org.apache.commons.lang3.StringEscapeUtils.escapeHtml4;
 
+import java.util.regex.Pattern;
+
 import org.apache.openmeetings.db.entity.user.User;
 
 public class FormatHelper {
+	/**
+	 * taken from BidiUtils
+	 * 
+	 * A regular expression for matching right-to-left language codes. See
+	 * {@link #isRtlLanguage} for the design.
+	 */
+	private static final Pattern RtlLocalesRe = Pattern.compile("^(ar|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Arab|Hebr|Thaa|Nkoo|Tfng))"
+					+ "(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)");
+
+	/**
+	 * Check if a BCP 47 / III language code indicates an RTL language, i.e.
+	 * either: - a language code explicitly specifying one of the right-to-left
+	 * scripts, e.g. "az-Arab", or
+	 * <p>
+	 * - a language code specifying one of the languages normally written in a
+	 * right-to-left script, e.g. "fa" (Farsi), except ones explicitly
+	 * specifying Latin or Cyrillic script (which are the usual LTR
+	 * alternatives).
+	 * <p>
+	 * The list of right-to-left scripts appears in the 100-199 range in
+	 * http://www.unicode.org/iso15924/iso15924-num.html, of which Arabic and
+	 * Hebrew are by far the most widely used. We also recognize Thaana, N'Ko,
+	 * and Tifinagh, which also have significant modern usage. The rest (Syriac,
+	 * Samaritan, Mandaic, etc.) seem to have extremely limited or no modern
+	 * usage and are not recognized. The languages usually written in a
+	 * right-to-left script are taken as those with Suppress-Script:
+	 * Hebr|Arab|Thaa|Nkoo|Tfng in
+	 * http://www.iana.org/assignments/language-subtag-registry, as well as
+	 * Sindhi (sd) and Uyghur (ug). The presence of other subtags of the
+	 * language code, e.g. regions like EG (Egypt), is ignored.
+	 */
+	public static boolean isRtlLanguage(String languageString) {
+		return languageString != null && RtlLocalesRe.matcher(languageString).find();
+	}
 
 	public static String formatUser(User u) {
 		return formatUser(u, false);