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