Dbrant has submitted this change and it was merged. Change subject: Remove main and disambiguation pages from "read more" section ......................................................................
Remove main and disambiguation pages from "read more" section Bug: T95365 Change-Id: Iacaa689e8f8760ea1609160c0fc5d568eff1ccb0 --- M wikipedia/src/main/java/org/wikipedia/page/PageProperties.java M wikipedia/src/main/java/org/wikipedia/page/PageTitle.java M wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java M wikipedia/src/main/java/org/wikipedia/page/SuggestionsTask.java R wikipedia/src/main/java/org/wikipedia/page/bottomcontent/BottomContentHandler.java M wikipedia/src/main/java/org/wikipedia/search/FullSearchArticlesTask.java 6 files changed, 67 insertions(+), 16 deletions(-) Approvals: Dbrant: Looks good to me, approved diff --git a/wikipedia/src/main/java/org/wikipedia/page/PageProperties.java b/wikipedia/src/main/java/org/wikipedia/page/PageProperties.java index b7f6282..90f32c0 100644 --- a/wikipedia/src/main/java/org/wikipedia/page/PageProperties.java +++ b/wikipedia/src/main/java/org/wikipedia/page/PageProperties.java @@ -25,6 +25,7 @@ private final String editProtectionStatus; private final int languageCount; private final boolean isMainPage; + private final boolean isDisambiguationPage; private final String leadImageUrl; private final String leadImageName; private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.ROOT); @@ -74,6 +75,7 @@ || json.optString("editable").equals("true"); isMainPage = json.has("mainpage"); + isDisambiguationPage = json.has("disambiguation"); } public int getPageId() { @@ -108,6 +110,10 @@ return isMainPage; } + public boolean isDisambiguationPage() { + return isDisambiguationPage; + } + public String getLeadImageUrl() { return leadImageUrl; } @@ -131,6 +137,7 @@ parcel.writeInt(languageCount); parcel.writeInt(canEdit ? 1 : 0); parcel.writeInt(isMainPage ? 1 : 0); + parcel.writeInt(isDisambiguationPage ? 1 : 0); parcel.writeString(leadImageUrl); parcel.writeString(leadImageName); } @@ -145,6 +152,7 @@ languageCount = in.readInt(); canEdit = in.readInt() == 1; isMainPage = in.readInt() == 1; + isDisambiguationPage = in.readInt() == 1; leadImageUrl = in.readString(); leadImageName = in.readString(); } @@ -178,6 +186,7 @@ && languageCount == that.languageCount && canEdit == that.canEdit && isMainPage == that.isMainPage + && isDisambiguationPage == that.isDisambiguationPage && TextUtils.equals(editProtectionStatus, that.editProtectionStatus) && TextUtils.equals(leadImageUrl, that.leadImageUrl) && TextUtils.equals(leadImageName, that.leadImageName); @@ -190,6 +199,7 @@ result = 31 * result + (editProtectionStatus != null ? editProtectionStatus.hashCode() : 0); result = 31 * result + languageCount; result = 31 * result + (isMainPage ? 1 : 0); + result = 31 * result + (isDisambiguationPage ? 1 : 0); result = 31 * result + (leadImageUrl != null ? leadImageUrl.hashCode() : 0); result = 31 * result + (leadImageName != null ? leadImageName.hashCode() : 0); result = 31 * result + (canEdit ? 1 : 0); @@ -224,6 +234,9 @@ if (isMainPage) { json.put("mainpage", ""); } + if (isDisambiguationPage) { + json.put("disambiguation", ""); + } if (leadImageUrl != null) { JSONObject thumbObject = new JSONObject(); thumbObject.put("url", leadImageUrl); diff --git a/wikipedia/src/main/java/org/wikipedia/page/PageTitle.java b/wikipedia/src/main/java/org/wikipedia/page/PageTitle.java index 7776464..8b921dc 100644 --- a/wikipedia/src/main/java/org/wikipedia/page/PageTitle.java +++ b/wikipedia/src/main/java/org/wikipedia/page/PageTitle.java @@ -47,13 +47,20 @@ private String thumbUrl; private final Site site; private String description = null; + private PageProperties properties = null; public PageTitle(final String namespace, final String text, final String fragment, final String thumbUrl, final Site site) { this.namespace = namespace; this.text = text; this.fragment = fragment; - this.thumbUrl = thumbUrl; this.site = site; + this.thumbUrl = thumbUrl; + } + + public PageTitle(final String text, final Site site, final String thumbUrl, final String description, final PageProperties properties) { + this(text, site, thumbUrl); + this.properties = properties; + this.description = description; } public PageTitle(final String text, final Site site, final String thumbUrl, final String description) { @@ -133,6 +140,22 @@ return getPrefixedText().replace("_", " "); } + public boolean hasProperties() { + return properties != null; + } + + public PageProperties getProperties() { + return properties; + } + + public boolean isMainPage() { + return hasProperties() && properties.isMainPage(); + } + + public boolean isDisambiguationPage() { + return hasProperties() && properties.isDisambiguationPage(); + } + /** Please keep the ID stable. */ public String getIdentifier() { return Utils.md5string(toIdentifierJSON().toString()); @@ -142,10 +165,10 @@ private JSONObject toIdentifierJSON() { try { JSONObject json = new JSONObject(); - json.put("site", site.getDomain()); json.put("namespace", getNamespace()); json.put("text", getText()); json.put("fragment", getFragment()); + json.put("site", site.getDomain()); return json; } catch (JSONException e) { // This will also never happen @@ -156,6 +179,9 @@ public JSONObject toJSON() { try { JSONObject json = toIdentifierJSON(); + if (hasProperties()) { + json.put("properties", getProperties().toJSON()); + } json.put("thumbUrl", getThumbUrl()); json.put("description", getDescription()); return json; @@ -166,10 +192,11 @@ } public PageTitle(JSONObject json) { - this.site = new Site(json.optString("site")); this.namespace = json.optString("namespace", null); - this.fragment = json.optString("fragment", null); this.text = json.optString("text", null); + this.fragment = json.optString("fragment", null); + this.site = json.has("site") ? new Site(json.optString("site")) : null; + this.properties = json.has("properties") ? new PageProperties(json.optJSONObject("properties")) : null; this.thumbUrl = json.optString("thumbUrl", null); this.description = json.optString("description", null); } @@ -272,6 +299,7 @@ text = in.readString(); fragment = in.readString(); site = in.readParcelable(Site.class.getClassLoader()); + properties = in.readParcelable(PageProperties.class.getClassLoader()); thumbUrl = in.readString(); description = in.readString(); } @@ -282,6 +310,7 @@ parcel.writeString(text); parcel.writeString(fragment); parcel.writeParcelable(site, flags); + parcel.writeParcelable(properties, flags); parcel.writeString(thumbUrl); parcel.writeString(description); } diff --git a/wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java b/wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java index daaadac..71367cc 100755 --- a/wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java +++ b/wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java @@ -17,7 +17,7 @@ import org.wikipedia.editing.EditSectionActivity; import org.wikipedia.history.HistoryEntry; import org.wikipedia.interlanguage.LangLinksActivity; -import org.wikipedia.page.bottomcontent.BottomContentHandlerOld; +import org.wikipedia.page.bottomcontent.BottomContentHandler; import org.wikipedia.page.bottomcontent.BottomContentInterface; import org.wikipedia.page.gallery.GalleryActivity; import org.wikipedia.page.leadimages.LeadImagesHandler; @@ -417,7 +417,7 @@ searchBarHideHandler = ((PageActivity) getActivity()).getSearchBarHideHandler(); searchBarHideHandler.setScrollView(webView); - bottomContentHandler = new BottomContentHandlerOld(this, bridge, webView, linkHandler, + bottomContentHandler = new BottomContentHandler(this, bridge, webView, linkHandler, (ViewGroup) getView().findViewById(R.id.bottom_content_container)); if (ApiUtil.hasHoneyComb()) { diff --git a/wikipedia/src/main/java/org/wikipedia/page/SuggestionsTask.java b/wikipedia/src/main/java/org/wikipedia/page/SuggestionsTask.java index b2039ca..0ebe64d 100644 --- a/wikipedia/src/main/java/org/wikipedia/page/SuggestionsTask.java +++ b/wikipedia/src/main/java/org/wikipedia/page/SuggestionsTask.java @@ -44,7 +44,9 @@ List<PageTitle> results = searchResults.getPageTitles(); for (int i = 0, count = 0; i < results.size() && count < maxItems; i++) { final PageTitle res = results.get(i); - if (!title.equalsIgnoreCase(res.getPrefixedText()) && (!requireThumbnail || res.getThumbUrl() != null)) { + if (!title.equalsIgnoreCase(res.getPrefixedText()) + && (!requireThumbnail || res.getThumbUrl() != null) + && !(res.isMainPage() || res.isDisambiguationPage())) { filteredResults.add(res); count++; } diff --git a/wikipedia/src/main/java/org/wikipedia/page/bottomcontent/BottomContentHandlerOld.java b/wikipedia/src/main/java/org/wikipedia/page/bottomcontent/BottomContentHandler.java similarity index 96% rename from wikipedia/src/main/java/org/wikipedia/page/bottomcontent/BottomContentHandlerOld.java rename to wikipedia/src/main/java/org/wikipedia/page/bottomcontent/BottomContentHandler.java index 2a5cb26..89a89ae 100644 --- a/wikipedia/src/main/java/org/wikipedia/page/bottomcontent/BottomContentHandlerOld.java +++ b/wikipedia/src/main/java/org/wikipedia/page/bottomcontent/BottomContentHandler.java @@ -39,7 +39,7 @@ import java.util.List; -public class BottomContentHandlerOld implements BottomContentInterface, +public class BottomContentHandler implements BottomContentInterface, ObservableWebView.OnScrollChangeListener, ObservableWebView.OnContentHeightChangedListener { private static final String TAG = "BottomContentHandler"; @@ -62,9 +62,9 @@ private SuggestedPagesFunnel funnel; private SearchResults readMoreItems; - public BottomContentHandlerOld(PageViewFragmentInternal parentFragment, - CommunicationBridge bridge, ObservableWebView webview, - LinkHandler linkHandler, ViewGroup hidingView) { + public BottomContentHandler(PageViewFragmentInternal parentFragment, + CommunicationBridge bridge, ObservableWebView webview, + LinkHandler linkHandler, ViewGroup hidingView) { this.parentFragment = parentFragment; this.bridge = bridge; this.webView = webview; @@ -288,7 +288,7 @@ return; } final int maxResultItems = 3; - final int numRequestItems = 4; + final int numRequestItems = 5; new SuggestionsTask(app.getAPIForSite(myTitle.getSite()), myTitle.getSite(), myTitle.getPrefixedText(), numRequestItems, maxResultItems, (int)(parentFragment.getActivity().getResources().getDimension(R.dimen.leadImageWidth) / displayDensity), false) { @@ -297,7 +297,7 @@ readMoreItems = results; if (!readMoreItems.getPageTitles().isEmpty()) { // If there are results, set up section and make sure it's visible - setupReadMoreSection(layoutInflater, readMoreItems); + setUpReadMoreSection(layoutInflater, readMoreItems); showReadMore(); } else { // If there's no results, just hide the section @@ -333,7 +333,7 @@ funnel = new SuggestedPagesFunnel(app, pageTitle.getSite(), 0); } - private void setupReadMoreSection(LayoutInflater layoutInflater, final SearchResults results) { + private void setUpReadMoreSection(LayoutInflater layoutInflater, final SearchResults results) { final ReadMoreAdapter adapter = new ReadMoreAdapter(layoutInflater, results.getPageTitles()); readMoreList.setAdapter(adapter); readMoreList.setOnItemClickListener(new AdapterView.OnItemClickListener() { diff --git a/wikipedia/src/main/java/org/wikipedia/search/FullSearchArticlesTask.java b/wikipedia/src/main/java/org/wikipedia/search/FullSearchArticlesTask.java index 8387cb7..488b089 100644 --- a/wikipedia/src/main/java/org/wikipedia/search/FullSearchArticlesTask.java +++ b/wikipedia/src/main/java/org/wikipedia/search/FullSearchArticlesTask.java @@ -12,6 +12,8 @@ import org.mediawiki.api.json.RequestBuilder; import org.json.JSONException; import org.json.JSONObject; +import org.wikipedia.page.PageProperties; + import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; @@ -43,7 +45,8 @@ public RequestBuilder buildRequest(Api api) { final String maxResultsString = Integer.toString(maxResults); final RequestBuilder req = api.action("query") - .param("prop", "pageterms|pageimages") + .param("prop", "pageterms|pageimages|pageprops") + .param("ppprop", "mainpage|disambiguation") .param("wbptterms", "description") // only interested in Wikidata description .param("generator", "search") .param("gsrsearch", searchTerm) @@ -134,7 +137,11 @@ description = Utils.capitalizeFirstChar(arr.getString(0)); } } - pageTitles.add(new PageTitle(item.getString("title"), site, thumbUrl, description)); + PageProperties properties = null; + if (item.has("pageprops")) { + properties = new PageProperties(item.getJSONObject("pageprops")); + } + pageTitles.add(new PageTitle(item.getString("title"), site, thumbUrl, description, properties)); } return new SearchResults(pageTitles, nextContinueOffset, null); } -- To view, visit https://gerrit.wikimedia.org/r/210180 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Iacaa689e8f8760ea1609160c0fc5d568eff1ccb0 Gerrit-PatchSet: 11 Gerrit-Project: apps/android/wikipedia Gerrit-Branch: master Gerrit-Owner: Mholloway <mhollo...@wikimedia.org> Gerrit-Reviewer: BearND <bsitzm...@wikimedia.org> Gerrit-Reviewer: Brion VIBBER <br...@wikimedia.org> Gerrit-Reviewer: Dbrant <dbr...@wikimedia.org> Gerrit-Reviewer: Mholloway <mhollo...@wikimedia.org> Gerrit-Reviewer: Niedzielski <sniedziel...@wikimedia.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits