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);


Reply via email to