Brion VIBBER has submitted this change and it was merged.

Change subject: Make license footer display with UI lang directionality
......................................................................


Make license footer display with UI lang directionality

Adds ways to access the directionality of content language
and UI language separately in the JS.

Bug: 39048
Change-Id: I8eecaf647b37f072c0ef2acba25f1d384cb8781a
---
M wikipedia/assets/abusefilter.js
M wikipedia/assets/bundle-test.js
M wikipedia/assets/bundle.js
M wikipedia/assets/preview.js
M wikipedia/src/main/java/org/wikipedia/Utils.java
M wikipedia/src/main/java/org/wikipedia/editing/EditPreviewFragment.java
M wikipedia/src/main/java/org/wikipedia/editing/EditSectionActivity.java
M wikipedia/src/main/java/org/wikipedia/page/PageViewFragment.java
M www/abusefilter.js
M www/js/main.js
M www/js/rtlsupport.js
M www/preview.js
12 files changed, 76 insertions(+), 17 deletions(-)

Approvals:
  Brion VIBBER: Verified; Looks good to me, approved



diff --git a/wikipedia/assets/abusefilter.js b/wikipedia/assets/abusefilter.js
index 00a511b..12fc2ea 100644
--- a/wikipedia/assets/abusefilter.js
+++ b/wikipedia/assets/abusefilter.js
@@ -63,8 +63,12 @@
 var bridge = require("./bridge");
 
 bridge.registerListener( "setDirectionality", function( payload ) {
-    document.getElementsByTagName( "html" )[0].setAttribute( "dir", 
payload.dir );
+    var html = document.getElementsByTagName( "html" )[0];
+    html.setAttribute( "dir", payload.contentDirection );
+    html.classList.add( "content-" + payload.contentDirection );
+    html.classList.add( "ui-" + payload.uiDirection );
 } );
+
 },{"./bridge":2}],4:[function(require,module,exports){
 function Transformer() {
 }
diff --git a/wikipedia/assets/bundle-test.js b/wikipedia/assets/bundle-test.js
index 470914c..b5b27b0 100644
--- a/wikipedia/assets/bundle-test.js
+++ b/wikipedia/assets/bundle-test.js
@@ -39,6 +39,10 @@
 },{}],2:[function(require,module,exports){
 var bridge = require("./bridge");
 bridge.registerListener( "displayAttribution", function( payload ) {
+    var directionality = document.getElementsByTagName( "html" 
)[0].classList.contains( "ui-rtl" ) ? "rtl" : "ltr";
+
+    var lastUpdatedDiv = document.getElementById( "lastupdated" );
+    lastUpdatedDiv.setAttribute( "dir", directionality );
     var lastUpdatedA = document.getElementById( "lastupdated" );
     lastUpdatedA.innerText = payload.historyText;
     lastUpdatedA.href = payload.historyTarget;
diff --git a/wikipedia/assets/bundle.js b/wikipedia/assets/bundle.js
index 14a419e..77ae0ce 100644
--- a/wikipedia/assets/bundle.js
+++ b/wikipedia/assets/bundle.js
@@ -87,6 +87,10 @@
 },{"./actions":1,"./bridge":2}],4:[function(require,module,exports){
 var bridge = require("./bridge");
 bridge.registerListener( "displayAttribution", function( payload ) {
+    var directionality = document.getElementsByTagName( "html" 
)[0].classList.contains( "ui-rtl" ) ? "rtl" : "ltr";
+
+    var lastUpdatedDiv = document.getElementById( "lastupdated" );
+    lastUpdatedDiv.setAttribute( "dir", directionality );
     var lastUpdatedA = document.getElementById( "lastupdated" );
     lastUpdatedA.innerText = payload.historyText;
     lastUpdatedA.href = payload.historyTarget;
@@ -107,8 +111,12 @@
 var bridge = require("./bridge");
 
 bridge.registerListener( "setDirectionality", function( payload ) {
-    document.getElementsByTagName( "html" )[0].setAttribute( "dir", 
payload.dir );
+    var html = document.getElementsByTagName( "html" )[0];
+    html.setAttribute( "dir", payload.contentDirection );
+    html.classList.add( "content-" + payload.contentDirection );
+    html.classList.add( "ui-" + payload.uiDirection );
 } );
+
 },{"./bridge":2}],6:[function(require,module,exports){
 var bridge = require("./bridge");
 var transformer = require("./transformer");
diff --git a/wikipedia/assets/preview.js b/wikipedia/assets/preview.js
index e6f488c..065b5db 100644
--- a/wikipedia/assets/preview.js
+++ b/wikipedia/assets/preview.js
@@ -87,6 +87,10 @@
 var bridge = require("./bridge");
 
 bridge.registerListener( "setDirectionality", function( payload ) {
-    document.getElementsByTagName( "html" )[0].setAttribute( "dir", 
payload.dir );
+    var html = document.getElementsByTagName( "html" )[0];
+    html.setAttribute( "dir", payload.contentDirection );
+    html.classList.add( "content-" + payload.contentDirection );
+    html.classList.add( "ui-" + payload.uiDirection );
 } );
+
 },{"./bridge":2}]},{},[2,1,3,4])
\ No newline at end of file
diff --git a/wikipedia/src/main/java/org/wikipedia/Utils.java 
b/wikipedia/src/main/java/org/wikipedia/Utils.java
index aaaa5f4..670d1bc 100644
--- a/wikipedia/src/main/java/org/wikipedia/Utils.java
+++ b/wikipedia/src/main/java/org/wikipedia/Utils.java
@@ -325,20 +325,40 @@
             "arc", "arz", "ar", "bcc", "bqi", "ckb", "dv", "fa", "glk", "ha", 
"he",
             "khw", "ks", "mzn", "pnb", "ps", "sd", "ug", "ur", "yi"
     };
-    public static void setupDirectionality(String lang, CommunicationBridge 
bridge) {
+
+    /**
+     * Setup directionality for both UI and content elements in a webview.
+     *
+     * @param contentLang The Content language to use to set directionality. 
Wiki Language code.
+     * @param uiLang The UI language to use to set directionality. Java 
language code.
+     * @param bridge The CommunicationBridge to use to communicate with the 
WebView
+     */
+    public static void setupDirectionality(String contentLang, String uiLang, 
CommunicationBridge bridge) {
         JSONObject payload = new JSONObject();
         try {
-            if (Arrays.binarySearch(rtlLangs, lang, null) < 0) {
-                payload.put("dir", "ltr");
+            if (isLangRTL(contentLang)) {
+                payload.put("contentDirection", "rtl");
             } else {
-                payload.put("dir", "rtl");
+                payload.put("contentDirection", "ltr");
             }
-            Log.d("Wikipedia", lang);
-            Log.d("Wikipedia", payload.toString(4));
+            if (isLangRTL(langCodeToWikiLang(uiLang))) {
+                payload.put("uiDirection", "rtl");
+            } else {
+                payload.put("uiDirection", "ltr");
+            }
         } catch (JSONException e) {
             throw new RuntimeException(e);
         }
         bridge.sendMessage("setDirectionality", payload);
     }
-}
 
+    /**
+     * Returns true if the given wiki language is to be displayed RTL.
+     *
+     * @param lang Wiki code for the language to check for directionality
+     * @return true if it is RTL, false if LTR
+     */
+    public static boolean isLangRTL(String lang) {
+        return Arrays.binarySearch(rtlLangs, lang, null) >= 0;
+    }
+}
diff --git 
a/wikipedia/src/main/java/org/wikipedia/editing/EditPreviewFragment.java 
b/wikipedia/src/main/java/org/wikipedia/editing/EditPreviewFragment.java
index 88b82ab..129f354 100644
--- a/wikipedia/src/main/java/org/wikipedia/editing/EditPreviewFragment.java
+++ b/wikipedia/src/main/java/org/wikipedia/editing/EditPreviewFragment.java
@@ -8,6 +8,8 @@
 import org.wikipedia.*;
 import org.wikipedia.editing.summaries.*;
 
+import java.util.*;
+
 public class EditPreviewFragment extends Fragment {
     private ObservableWebView webview;
     private View previewContainer;
@@ -65,7 +67,7 @@
         
dialog.setMessage(getString(R.string.edit_preview_fetching_dialog_message));
 
         if (!isDirectionSetup) {
-            Utils.setupDirectionality(title.getSite().getLanguage(), bridge);
+            Utils.setupDirectionality(title.getSite().getLanguage(), 
Locale.getDefault().getLanguage(), bridge);
             isDirectionSetup = true;
         }
 
diff --git 
a/wikipedia/src/main/java/org/wikipedia/editing/EditSectionActivity.java 
b/wikipedia/src/main/java/org/wikipedia/editing/EditSectionActivity.java
index 87259ee..3aff0cc 100644
--- a/wikipedia/src/main/java/org/wikipedia/editing/EditSectionActivity.java
+++ b/wikipedia/src/main/java/org/wikipedia/editing/EditSectionActivity.java
@@ -17,6 +17,8 @@
 import org.wikipedia.login.*;
 import org.wikipedia.page.*;
 
+import java.util.*;
+
 public class EditSectionActivity extends ActionBarActivity {
     public static final String ACTION_EDIT_SECTION = 
"org.wikipedia.edit_section";
     public static final String EXTRA_TITLE = 
"org.wikipedia.edit_section.title";
@@ -79,7 +81,7 @@
         abusefilterContainer = 
findViewById(R.id.edit_section_abusefilter_container);
         abusefilterWebView = (WebView) 
findViewById(R.id.edit_section_abusefilter_webview);
         abusefilterBridge = new CommunicationBridge(abusefilterWebView, 
"file:///android_asset/abusefilter.html");
-        Utils.setupDirectionality(title.getSite().getLanguage(), 
abusefilterBridge);
+        Utils.setupDirectionality(title.getSite().getLanguage(), 
Locale.getDefault().getLanguage(), abusefilterBridge);
         abuseFilterBackAction = 
findViewById(R.id.edit_section_abusefilter_back);
 
         captchaHandler = new CaptchaHandler(this, title.getSite(), 
progressDialog, sectionContainer, R.string.edit_section_activity_title);
diff --git a/wikipedia/src/main/java/org/wikipedia/page/PageViewFragment.java 
b/wikipedia/src/main/java/org/wikipedia/page/PageViewFragment.java
index b8cde8c..e4eed65 100644
--- a/wikipedia/src/main/java/org/wikipedia/page/PageViewFragment.java
+++ b/wikipedia/src/main/java/org/wikipedia/page/PageViewFragment.java
@@ -146,7 +146,7 @@
         bridge = new CommunicationBridge(webView, 
"file:///android_asset/index.html");
         setupMessageHandlers();
         Utils.addUtilityMethodsToBridge(getActivity(), bridge);
-        Utils.setupDirectionality(title.getSite().getLanguage(), bridge);
+        Utils.setupDirectionality(title.getSite().getLanguage(), 
Locale.getDefault().getLanguage(), bridge);
         linkHandler = new LinkHandler(getActivity(), bridge, title.getSite());
         app = (WikipediaApp)getActivity().getApplicationContext();
         api = 
((WikipediaApp)getActivity().getApplicationContext()).getAPIForSite(title.getSite());
diff --git a/www/abusefilter.js b/www/abusefilter.js
index 00a511b..12fc2ea 100644
--- a/www/abusefilter.js
+++ b/www/abusefilter.js
@@ -63,8 +63,12 @@
 var bridge = require("./bridge");
 
 bridge.registerListener( "setDirectionality", function( payload ) {
-    document.getElementsByTagName( "html" )[0].setAttribute( "dir", 
payload.dir );
+    var html = document.getElementsByTagName( "html" )[0];
+    html.setAttribute( "dir", payload.contentDirection );
+    html.classList.add( "content-" + payload.contentDirection );
+    html.classList.add( "ui-" + payload.uiDirection );
 } );
+
 },{"./bridge":2}],4:[function(require,module,exports){
 function Transformer() {
 }
diff --git a/www/js/main.js b/www/js/main.js
index ab9ae9c..ceceb75 100644
--- a/www/js/main.js
+++ b/www/js/main.js
@@ -1,5 +1,9 @@
 var bridge = require("./bridge");
 bridge.registerListener( "displayAttribution", function( payload ) {
+    var directionality = document.getElementsByTagName( "html" 
)[0].classList.contains( "ui-rtl" ) ? "rtl" : "ltr";
+
+    var lastUpdatedDiv = document.getElementById( "lastupdated" );
+    lastUpdatedDiv.setAttribute( "dir", directionality );
     var lastUpdatedA = document.getElementById( "lastupdated" );
     lastUpdatedA.innerText = payload.historyText;
     lastUpdatedA.href = payload.historyTarget;
diff --git a/www/js/rtlsupport.js b/www/js/rtlsupport.js
index 2cc1e85..1ed05f0 100644
--- a/www/js/rtlsupport.js
+++ b/www/js/rtlsupport.js
@@ -1,5 +1,8 @@
 var bridge = require("./bridge");
 
 bridge.registerListener( "setDirectionality", function( payload ) {
-    document.getElementsByTagName( "html" )[0].setAttribute( "dir", 
payload.dir );
-} );
\ No newline at end of file
+    var html = document.getElementsByTagName( "html" )[0];
+    html.setAttribute( "dir", payload.contentDirection );
+    html.classList.add( "content-" + payload.contentDirection );
+    html.classList.add( "ui-" + payload.uiDirection );
+} );
diff --git a/www/preview.js b/www/preview.js
index e6f488c..065b5db 100644
--- a/www/preview.js
+++ b/www/preview.js
@@ -87,6 +87,10 @@
 var bridge = require("./bridge");
 
 bridge.registerListener( "setDirectionality", function( payload ) {
-    document.getElementsByTagName( "html" )[0].setAttribute( "dir", 
payload.dir );
+    var html = document.getElementsByTagName( "html" )[0];
+    html.setAttribute( "dir", payload.contentDirection );
+    html.classList.add( "content-" + payload.contentDirection );
+    html.classList.add( "ui-" + payload.uiDirection );
 } );
+
 },{"./bridge":2}]},{},[2,1,3,4])
\ No newline at end of file

-- 
To view, visit https://gerrit.wikimedia.org/r/122560
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I8eecaf647b37f072c0ef2acba25f1d384cb8781a
Gerrit-PatchSet: 6
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Yuvipanda <yuvipa...@gmail.com>
Gerrit-Reviewer: Brion VIBBER <br...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to