Florianschmidtwelzow has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/354576 )

Change subject: WIP: Add new settings for wikibase usage in the app apart from 
wikidata
......................................................................

WIP: Add new settings for wikibase usage in the app apart from wikidata

This change needs to introduce some new dev-settings to make support for
non-wikidata Wikibase installations supported by the app. This includes:

 * Wikibase base URL
 * MediaWiki content language code (the language code does not need to be
   part of the subdomain of the base URL)
 * MediaWiki dbname (needed for the Wikibase edit description feature, as
   Wikibase requires the site parameter for setting the description, ask
   in T165809 why)

Bug: T165786
Change-Id: Ib1abd7d345284e4b1f680765b3ef6d73fb3411d5
---
M app/src/main/java/org/wikipedia/Constants.java
M app/src/main/java/org/wikipedia/dataclient/WikiSite.java
M app/src/main/java/org/wikipedia/descriptions/DescriptionEditClient.java
M app/src/main/java/org/wikipedia/descriptions/DescriptionEditFragment.java
M 
app/src/main/java/org/wikipedia/descriptions/DescriptionEditRevertHelpView.java
M app/src/main/java/org/wikipedia/settings/Prefs.java
M app/src/main/java/org/wikipedia/wikidata/EntityClient.java
M app/src/main/res/values/preference_keys.xml
M app/src/main/res/xml/developer_preferences.xml
9 files changed, 62 insertions(+), 8 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia 
refs/changes/76/354576/1

diff --git a/app/src/main/java/org/wikipedia/Constants.java 
b/app/src/main/java/org/wikipedia/Constants.java
index 83785e6..e37cdf4 100644
--- a/app/src/main/java/org/wikipedia/Constants.java
+++ b/app/src/main/java/org/wikipedia/Constants.java
@@ -8,6 +8,7 @@
     public static final int USER_OPTION_ROW_FRAGMENT_LOADER_ID = 102;
 
     public static final String WIKIPEDIA_URL = "https://wikipedia.org/";;
+    public static final String WIKIDATA_URL = "https://www.wikidata.org";;
     public static final String PLAIN_TEXT_MIME_TYPE = "text/plain";
 
     public static final String ACCEPT_HEADER_PREFIX = "accept: 
application/json; charset=utf-8; "
diff --git a/app/src/main/java/org/wikipedia/dataclient/WikiSite.java 
b/app/src/main/java/org/wikipedia/dataclient/WikiSite.java
index 909d1d5..e9cbc7a 100644
--- a/app/src/main/java/org/wikipedia/dataclient/WikiSite.java
+++ b/app/src/main/java/org/wikipedia/dataclient/WikiSite.java
@@ -234,6 +234,8 @@
     }
 
     @NonNull public String dbName() {
+        if (Prefs.getWikiDBName() != null)
+            return Prefs.getWikiDBName();
         return languageCodeToSubdomain(languageCode) + "wiki";
     }
 
@@ -305,6 +307,9 @@
         final int minLengthForSubdomain = 3;
         if (parts.length < minLengthForSubdomain
                 || parts.length == minLengthForSubdomain && 
parts[0].equals("m")) {
+            if (Prefs.getWikiLangCode() != null)
+                return Prefs.getWikiLangCode();
+
             // ""
             // wikipedia.org
             // m.wikipedia.org
diff --git 
a/app/src/main/java/org/wikipedia/descriptions/DescriptionEditClient.java 
b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditClient.java
index a918bf6..3672a32 100644
--- a/app/src/main/java/org/wikipedia/descriptions/DescriptionEditClient.java
+++ b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditClient.java
@@ -94,8 +94,12 @@
                                   boolean loggedIn,
                                   @NonNull final Callback cb) {
 
-        Call<DescriptionEdit> call = 
service.edit(pageTitle.getWikiSite().languageCode(),
-                pageTitle.getWikiSite().languageCode(), 
pageTitle.getWikiSite().dbName(),
+        String languageCode = pageTitle.getWikiSite().languageCode();
+        if (languageCode.isEmpty())
+            languageCode = 
WikipediaApp.getInstance().getAppOrSystemLanguageCode();
+
+        Call<DescriptionEdit> call = service.edit(languageCode, languageCode,
+                pageTitle.getWikiSite().dbName(),
                 pageTitle.getPrefixedText(), description, editToken,
                 loggedIn ? "user" : null);
         call.enqueue(new retrofit2.Callback<DescriptionEdit>() {
diff --git 
a/app/src/main/java/org/wikipedia/descriptions/DescriptionEditFragment.java 
b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditFragment.java
index 1c9d9b3..c71624e 100644
--- a/app/src/main/java/org/wikipedia/descriptions/DescriptionEditFragment.java
+++ b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditFragment.java
@@ -150,7 +150,7 @@
     }
 
     private class EditViewCallback implements DescriptionEditView.Callback {
-        private final WikiSite wikiData = new WikiSite("www.wikidata.org", "");
+        private final WikiSite wikibase = new 
WikiSite(Prefs.getWikibaseBaseUri(), "");
 
         @Override
         public void onSaveClick() {
@@ -159,8 +159,7 @@
 
             cancelCalls();
 
-            csrfClient = new CsrfTokenClient(new WikiSite("www.wikidata.org", 
""),
-                    pageTitle.getWikiSite());
+            csrfClient = new CsrfTokenClient(wikibase, wikibase);
             getEditTokenThenSave(false);
 
             if (funnel != null) {
@@ -193,7 +192,7 @@
 
         /* send updated description to Wikidata */
         private void postDescription(@NonNull String editToken) {
-            descriptionEditCall = new 
DescriptionEditClient().request(wikiData, pageTitle,
+            descriptionEditCall = new 
DescriptionEditClient().request(wikibase, pageTitle,
                     editView.getDescription(), editToken,
                     new DescriptionEditClient.Callback() {
                         @Override @SuppressWarnings("checkstyle:magicnumber")
diff --git 
a/app/src/main/java/org/wikipedia/descriptions/DescriptionEditRevertHelpView.java
 
b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditRevertHelpView.java
index 00df197..738b5a1 100644
--- 
a/app/src/main/java/org/wikipedia/descriptions/DescriptionEditRevertHelpView.java
+++ 
b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditRevertHelpView.java
@@ -14,6 +14,8 @@
 
 import org.wikipedia.R;
 import org.wikipedia.WikipediaApp;
+import org.wikipedia.dataclient.WikiSite;
+import org.wikipedia.settings.Prefs;
 import org.wikipedia.util.DimenUtil;
 import org.wikipedia.util.StringUtil;
 
@@ -51,7 +53,7 @@
     private Uri getHistoryUri(@NonNull String qNumber) {
         return new Uri.Builder()
                 .scheme(WikipediaApp.getInstance().getWikiSite().scheme())
-                .authority("m.wikidata.org")
+                .authority(new WikiSite(Prefs.getWikibaseBaseUri(), 
"").mobileAuthority())
                 .appendPath("wiki")
                 .appendPath("Special:History")
                 .appendPath(qNumber)
diff --git a/app/src/main/java/org/wikipedia/settings/Prefs.java 
b/app/src/main/java/org/wikipedia/settings/Prefs.java
index 8a50fc4..688362b 100644
--- a/app/src/main/java/org/wikipedia/settings/Prefs.java
+++ b/app/src/main/java/org/wikipedia/settings/Prefs.java
@@ -72,6 +72,11 @@
 
     @Nullable
     public static String getAppLanguageCode() {
+        if (!getMediaWikiBaseUriSupportsLangCode() && getWikiLangCode() != 
null)
+            return getWikiLangCode();
+        else if (!getMediaWikiBaseUriSupportsLangCode())
+            return null;
+
         return getString(R.string.preference_key_language, null);
     }
 
@@ -344,6 +349,20 @@
                 Constants.WIKIPEDIA_URL));
     }
 
+    @NonNull
+    public static Uri getWikibaseBaseUri() {
+        return 
Uri.parse(defaultIfBlank(getString(R.string.preference_key_wikibase_base_uri, 
null),
+                Constants.WIKIDATA_URL));
+    }
+
+    public static String getWikiDBName() {
+        return getString(R.string.preference_key_wiki_db_name, null);
+    }
+
+    public static String getWikiLangCode() {
+        return getString(R.string.preference_key_wiki_content_lang_code, null);
+    }
+
     public static boolean getMediaWikiBaseUriSupportsLangCode() {
         return 
getBoolean(R.string.preference_key_mediawiki_base_uri_supports_lang_code, true);
     }
diff --git a/app/src/main/java/org/wikipedia/wikidata/EntityClient.java 
b/app/src/main/java/org/wikipedia/wikidata/EntityClient.java
index 736aab6..926046c 100644
--- a/app/src/main/java/org/wikipedia/wikidata/EntityClient.java
+++ b/app/src/main/java/org/wikipedia/wikidata/EntityClient.java
@@ -7,6 +7,7 @@
 
 import org.wikipedia.dataclient.WikiSite;
 import org.wikipedia.dataclient.retrofit.RetrofitFactory;
+import org.wikipedia.settings.Prefs;
 
 import retrofit2.Call;
 import retrofit2.Response;
@@ -29,7 +30,7 @@
     }
 
     private EntityClient() {
-        service = RetrofitFactory.newInstance(new WikiSite("www.wikidata.org", 
""))
+        service = RetrofitFactory.newInstance(new 
WikiSite(Prefs.getWikibaseBaseUri(), ""))
                 .create(Service.class);
     }
 
diff --git a/app/src/main/res/values/preference_keys.xml 
b/app/src/main/res/values/preference_keys.xml
index 1146d4d..c53049f 100644
--- a/app/src/main/res/values/preference_keys.xml
+++ b/app/src/main/res/values/preference_keys.xml
@@ -24,6 +24,9 @@
     <string name="preference_key_request_successes">requestSuccesses</string>
     <string 
name="preference_key_restbase_uri_format">RESTBaseUriFormat</string>
     <string name="preference_key_mediawiki_base_uri">mediaWikiBaseUri</string>
+    <string name="preference_key_wikibase_base_uri">wikibaseBaseUri</string>
+    <string name="preference_key_wiki_db_name">wikiDBName</string>
+    <string name="preference_key_wiki_content_lang_code">wikiLangCode</string>
     <string 
name="preference_key_mediawiki_base_uri_supports_lang_code">mediaWikiBaseUriSupportsLangCode</string>
     <string name="preference_key_retrofit_log_level">retrofitLog</string>
     <string 
name="preference_key_daily_event_time_task_name">dailyEventTask</string>
diff --git a/app/src/main/res/xml/developer_preferences.xml 
b/app/src/main/res/xml/developer_preferences.xml
index 28a1d16..ba70ba3 100644
--- a/app/src/main/res/xml/developer_preferences.xml
+++ b/app/src/main/res/xml/developer_preferences.xml
@@ -45,6 +45,26 @@
             \nBeta cluster (switch app language to Simple English): 
http://wikipedia.beta.wmflabs.org
             \nAuth manager (disable language code): 
http://authmanager.wmflabs.org"; />
 
+        <org.wikipedia.settings.EditTextAutoSummarizePreference
+            style="@style/DataStringPreference"
+            android:key="@string/preference_key_wikibase_base_uri"
+            android:title="@string/preference_key_wikibase_base_uri"
+            android:dialogMessage="Prod (default if blank): 
https://www.wikidata.org
+            \nDev: http://host:8080
+            \nBeta cluster (switch app language to Simple English): 
https:/wikidata.beta.wmflabs.org" />
+
+        <org.wikipedia.settings.EditTextAutoSummarizePreference
+            style="@style/DataStringPreference"
+            android:key="@string/preference_key_wiki_db_name"
+            android:title="@string/preference_key_wiki_db_name"
+            android:dialogMessage="DB Name of the wiki, e.g. dewiki." />
+
+        <org.wikipedia.settings.EditTextAutoSummarizePreference
+            style="@style/DataStringPreference"
+            android:key="@string/preference_key_wiki_content_lang_code"
+            android:title="@string/preference_key_wiki_content_lang_code"
+            android:dialogMessage="Content language code of the wiki" />
+
         <SwitchPreferenceCompat
             
android:key="@string/preference_key_mediawiki_base_uri_supports_lang_code"
             
android:title="@string/preference_key_mediawiki_base_uri_supports_lang_code"

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib1abd7d345284e4b1f680765b3ef6d73fb3411d5
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Florianschmidtwelzow <florian.schmidt.stargatewis...@gmail.com>

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

Reply via email to