BearND has uploaded a new change for review. https://gerrit.wikimedia.org/r/171442
Change subject: WIP: Disambiguation and page issues more like search results ...................................................................... WIP: Disambiguation and page issues more like search results Change-Id: I8e4a9d9564625115a7a886a26dee3520b6972d6a --- M wikipedia/assets/bundle.js A wikipedia/res/layout/dialog_page_info.xml M wikipedia/res/layout/fragment_page.xml A wikipedia/res/layout/group_page_info_headers.xml M wikipedia/res/layout/item_issue.xml M wikipedia/res/values/colors.xml M wikipedia/res/values/strings.xml M wikipedia/res/values/styles.xml A wikipedia/src/main/java/org/wikipedia/page/BottomDialog.java M wikipedia/src/main/java/org/wikipedia/page/DisambigHandler.java M wikipedia/src/main/java/org/wikipedia/page/IssuesHandler.java A wikipedia/src/main/java/org/wikipedia/page/PageInfoDialog.java A wikipedia/src/main/java/org/wikipedia/page/PageInfoHandler.java M wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java M wikipedia/src/main/java/org/wikipedia/page/ReferenceDialog.java M wikipedia/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java M www/js/actions.js M www/js/issues.js M www/js/sections.js 19 files changed, 310 insertions(+), 150 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia refs/changes/42/171442/1 diff --git a/wikipedia/assets/bundle.js b/wikipedia/assets/bundle.js index 04b7957..c194417 100644 --- a/wikipedia/assets/bundle.js +++ b/wikipedia/assets/bundle.js @@ -441,30 +441,19 @@ content = transformer.transform( "leadSection", content ); content = transformer.transform( "section", content ); - content = transformer.transform("displayDisambigLink", content); - content = transformer.transform("displayIssuesLink", content); - //if there were no page issues, then hide the container - if (!issuesContainer.hasChildNodes()) { - document.getElementById( "content" ).removeChild(issuesContainer); + var hasDisambig = false; + var hatnotes = content.querySelectorAll( "div.hatnote" ); + if ( hatnotes.length > 0 ) { + hasDisambig = true; } - //update the text of the disambiguation link, if there is one - var disambigBtn = document.getElementById( "disambig_button" ); - if (disambigBtn !== null) { - disambigBtn.innerText = payload.string_page_similar_titles; + var hasIssues = false; + var issues = content.querySelectorAll( "table.ambox:not([class*='ambox-multiple_issues']):not([class*='ambox-notice'])" ); + if ( issues.length > 0 ) { + hasIssues = true; } - //update the text of the page-issues link, if there is one - var issuesBtn = document.getElementById( "issues_button" ); - if (issuesBtn !== null) { - issuesBtn.innerText = payload.string_page_issues; - } - //if we have both issues and disambiguation, then insert the separator - if (issuesBtn !== null && disambigBtn !== null) { - var separator = document.createElement( 'span' ); - separator.innerText = '|'; - separator.className = 'issues_separator'; - issuesContainer.insertBefore(separator, issuesBtn.parentNode); - } + console.log( "BBB: " + hasDisambig + ", hasIssues" + hasIssues ); + bridge.sendMessage( "pageInfo", { "hasDisambig": hasDisambig, "hasIssues": hasIssues } ); document.getElementById( "content" ).appendChild( content ); diff --git a/wikipedia/res/layout/dialog_page_info.xml b/wikipedia/res/layout/dialog_page_info.xml new file mode 100644 index 0000000..ab992ec --- /dev/null +++ b/wikipedia/res/layout/dialog_page_info.xml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="utf-8"?> + +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:background="?attr/page_background_color" + > + + <View + android:layout_width="match_parent" + android:layout_height="0.5dp" + android:background="@color/nav_border" /> + + <include layout="@layout/group_page_info_headers" /> + + <View + android:layout_width="match_parent" + android:layout_height="1dp" + android:background="?android:listDivider" /> + + <ListView + android:id="@+id/page_info_list" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="start" + android:paddingBottom="0dp" + android:paddingLeft="16dp" + android:paddingRight="16dp" + android:paddingTop="0dp" + /> + +</LinearLayout> diff --git a/wikipedia/res/layout/fragment_page.xml b/wikipedia/res/layout/fragment_page.xml index ec17a32..04a2a69 100644 --- a/wikipedia/res/layout/fragment_page.xml +++ b/wikipedia/res/layout/fragment_page.xml @@ -17,11 +17,20 @@ android:layout_height="match_parent" > - <org.wikipedia.views.ObservableWebView - android:id="@+id/page_web_view" + <LinearLayout + android:orientation="vertical" android:layout_width="match_parent" - android:layout_height="match_parent" - /> + android:layout_height="wrap_content" + > + + <include layout="@layout/group_page_info_headers" /> + + <org.wikipedia.views.ObservableWebView + android:id="@+id/page_web_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + /> + </LinearLayout> <FrameLayout android:id="@+id/page_images_container" @@ -49,6 +58,7 @@ android:paddingBottom="16dp" android:paddingRight="16dp" android:paddingLeft="16dp"/> + </LinearLayout> </FrameLayout> diff --git a/wikipedia/res/layout/group_page_info_headers.xml b/wikipedia/res/layout/group_page_info_headers.xml new file mode 100644 index 0000000..8707c10 --- /dev/null +++ b/wikipedia/res/layout/group_page_info_headers.xml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:tools="http://schemas.android.com/tools" + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/page_info_headers" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:padding="8dp" + android:orientation="horizontal" + android:visibility="visible" + tools:showIn="@layout/dialog_page_info"> + +<TextView + android:id="@+id/page_info_similar_titles_heading" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_margin="8dp" + style="@style/text_heading_gray" + android:text="@string/page_similar_titles" /> + + <TextView + android:id="@+id/page_info_heading_separator" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginBottom="8dp" + android:layout_marginTop="8dp" + android:layout_marginLeft="7dp" + android:layout_marginRight="7dp" + style="@style/text_heading_gray" + android:text="|" + tools:ignore="HardcodedText" /> + + <TextView + android:id="@+id/page_info_page_issues_heading" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_margin="8dp" + style="@style/text_heading_gray" + android:text="@string/dialog_page_issues" /> + +</LinearLayout> \ No newline at end of file diff --git a/wikipedia/res/layout/item_issue.xml b/wikipedia/res/layout/item_issue.xml index cc92f7b..029802d 100644 --- a/wikipedia/res/layout/item_issue.xml +++ b/wikipedia/res/layout/item_issue.xml @@ -11,7 +11,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="8dp" - android:layout_marginLeft="8dp" android:src="@drawable/ic_flag" /> <LinearLayout @@ -21,17 +20,17 @@ android:padding="8dp"> <TextView android:id="@+id/issue_text" - style="?android:textAppearanceMedium" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_gravity="center" /> - <TextView - android:id="@+id/issue_subtext" - style="?android:textAppearanceSmall" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" - android:layout_marginTop="8dp" + android:textSize="16sp" /> + <TextView + android:id="@+id/issue_subtext" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:layout_marginTop="2dp" + android:textSize="12sp" android:textColor="@color/issues_subtext" android:textAllCaps="true"/> diff --git a/wikipedia/res/values/colors.xml b/wikipedia/res/values/colors.xml index 1159f25..be9d50d 100644 --- a/wikipedia/res/values/colors.xml +++ b/wikipedia/res/values/colors.xml @@ -28,6 +28,7 @@ <color name="fulltext_search_highlight">#00AF89</color> <color name="announcement_background">#0C0C0C</color> <color name="announcement_text">#AAAAAA</color> + <color name="page_info_heading">#555555</color> <color name="link_light">#ff347BFF</color> <color name="button_light">#ff777777</color> diff --git a/wikipedia/res/values/strings.xml b/wikipedia/res/values/strings.xml index f5d84cf..2843485 100644 --- a/wikipedia/res/values/strings.xml +++ b/wikipedia/res/values/strings.xml @@ -239,7 +239,7 @@ <string name="color_theme_select">Theme</string> <string name="color_theme_light">Light</string> <string name="color_theme_dark">Dark</string> - <string name="page_similar_titles">Similar pages</string> + <string name="page_similar_titles">Other meanings</string> <string name="search_within_pages">Search within pages…</string> <string name="search_no_results">No results found for \"%s\".</string> <string name="search_did_you_mean">Did you mean \"%s\"?</string> diff --git a/wikipedia/res/values/styles.xml b/wikipedia/res/values/styles.xml index 87fc704..582a0b4 100644 --- a/wikipedia/res/values/styles.xml +++ b/wikipedia/res/values/styles.xml @@ -33,4 +33,9 @@ <item name="android:background">@drawable/button_selector_gray</item> </style> + <style name="text_heading_gray" parent="@android:style/TextAppearance.Medium"> + <item name="android:textSize">16sp</item> + <item name="android:textColor">@color/page_info_heading</item> + </style> + </resources> diff --git a/wikipedia/src/main/java/org/wikipedia/page/BottomDialog.java b/wikipedia/src/main/java/org/wikipedia/page/BottomDialog.java new file mode 100644 index 0000000..6002864 --- /dev/null +++ b/wikipedia/src/main/java/org/wikipedia/page/BottomDialog.java @@ -0,0 +1,42 @@ +package org.wikipedia.page; + +import android.app.Dialog; +import android.content.Context; +import android.os.Build; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; + +/** + * A dialog that appears at the bottom of the page. + */ +public class BottomDialog extends Dialog { + private View dialogLayout; + + public BottomDialog(Context context, int dialogLayoutResId) { + super(context); + + LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + dialogLayout = inflater.inflate(dialogLayoutResId, null); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { + getWindow().setDimAmount(0.0f); + } + requestWindowFeature(Window.FEATURE_NO_TITLE); + setContentView(dialogLayout); + + getWindow().setBackgroundDrawable(null); + WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); + lp.copyFrom(getWindow().getAttributes()); + lp.width = WindowManager.LayoutParams.MATCH_PARENT; + lp.height = WindowManager.LayoutParams.WRAP_CONTENT; + lp.gravity = Gravity.BOTTOM; + getWindow().setAttributes(lp); + } + + protected View getDialogLayout() { + return dialogLayout; + } +} diff --git a/wikipedia/src/main/java/org/wikipedia/page/DisambigHandler.java b/wikipedia/src/main/java/org/wikipedia/page/DisambigHandler.java index 8c2d507..28cefb7 100644 --- a/wikipedia/src/main/java/org/wikipedia/page/DisambigHandler.java +++ b/wikipedia/src/main/java/org/wikipedia/page/DisambigHandler.java @@ -1,8 +1,6 @@ package org.wikipedia.page; import android.app.Activity; -import android.app.AlertDialog; -import android.app.Dialog; import android.text.Html; import android.text.Spannable; import android.text.TextPaint; @@ -28,7 +26,6 @@ */ public abstract class DisambigHandler implements CommunicationBridge.JSEventListener { private final Activity activity; - private Dialog dlg; public DisambigHandler(Activity activity, CommunicationBridge bridge) { this.activity = activity; @@ -48,7 +45,7 @@ public void show(final String[] items) { final WikipediaApp app = (WikipediaApp) activity.getApplicationContext(); - AlertDialog.Builder builder = new AlertDialog.Builder(activity); + final PageInfoDialog dialog = new PageInfoDialog(activity); ListAdapter adapter = new ArrayAdapter<String>(activity, 0, items) { private ViewHolder holder; @@ -80,8 +77,8 @@ @Override public boolean onTouchEvent(final TextView widget, final Spannable buffer, final MotionEvent event) { boolean ret = super.onTouchEvent(widget, buffer, event); - if (ret && event.getAction() == MotionEvent.ACTION_UP && dlg != null) { - dlg.dismiss(); + if (ret && event.getAction() == MotionEvent.ACTION_UP) { + dialog.dismiss(); } return ret; } @@ -111,10 +108,9 @@ } }; - builder.setAdapter(adapter, null); - builder.setTitle(R.string.page_similar_titles); - dlg = builder.create(); - dlg.show(); + dialog.setAdapter(adapter); + dialog.highlightHeading(R.id.page_info_similar_titles_heading); + dialog.show(); } public abstract LinkHandler getLinkHandler(); diff --git a/wikipedia/src/main/java/org/wikipedia/page/IssuesHandler.java b/wikipedia/src/main/java/org/wikipedia/page/IssuesHandler.java index 6e5747d..2479ac7 100644 --- a/wikipedia/src/main/java/org/wikipedia/page/IssuesHandler.java +++ b/wikipedia/src/main/java/org/wikipedia/page/IssuesHandler.java @@ -45,7 +45,7 @@ public void show(final String[] items) { final WikipediaApp app = (WikipediaApp) activity.getApplicationContext(); - AlertDialog.Builder builder = new AlertDialog.Builder(activity); + PageInfoDialog dialog = new PageInfoDialog(activity); ListAdapter adapter = new ArrayAdapter<String>(activity, 0, items) { private ViewHolder holder; @@ -96,9 +96,8 @@ } }; - builder.setAdapter(adapter, null); - builder.setTitle(R.string.dialog_page_issues); - - builder.create().show(); + dialog.setAdapter(adapter); + dialog.highlightHeading(R.id.page_info_page_issues_heading); + dialog.show(); } } diff --git a/wikipedia/src/main/java/org/wikipedia/page/PageInfoDialog.java b/wikipedia/src/main/java/org/wikipedia/page/PageInfoDialog.java new file mode 100644 index 0000000..0406c4c --- /dev/null +++ b/wikipedia/src/main/java/org/wikipedia/page/PageInfoDialog.java @@ -0,0 +1,28 @@ +package org.wikipedia.page; + +import org.wikipedia.R; +import android.content.Context; +import android.graphics.Typeface; +import android.widget.ListAdapter; +import android.widget.ListView; +import android.widget.TextView; + +/** + * A dialog to host disambig and page issues information. + */ +public class PageInfoDialog extends BottomDialog { + private ListView list; + + public PageInfoDialog(Context context) { + super(context, R.layout.dialog_page_info); + list = (ListView) getDialogLayout().findViewById(R.id.page_info_list); + } + + public void setAdapter(ListAdapter adapter) { + list.setAdapter(adapter); + } + + public void highlightHeading(int textResId) { + ((TextView) getDialogLayout().findViewById(textResId)).setTypeface(null, Typeface.BOLD); + } +} diff --git a/wikipedia/src/main/java/org/wikipedia/page/PageInfoHandler.java b/wikipedia/src/main/java/org/wikipedia/page/PageInfoHandler.java new file mode 100644 index 0000000..8b35ddb --- /dev/null +++ b/wikipedia/src/main/java/org/wikipedia/page/PageInfoHandler.java @@ -0,0 +1,55 @@ +package org.wikipedia.page; + +import org.wikipedia.R; +import android.view.View; +import android.view.ViewGroup; +import android.widget.LinearLayout; + +/** + * Links for disambig and page issues. + */ +public class PageInfoHandler { + private final View headersView; + + public PageInfoHandler(View headersView) { + this.headersView = headersView; + } + + void showLinks(final boolean disambig, final boolean issues) { + if (disambig || issues) { + headersView.setVisibility(View.VISIBLE); +// headersView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); + if (!disambig) { + View disambigTV = headersView.findViewById(R.id.page_info_similar_titles_heading); + disambigTV.setVisibility(View.GONE); + disambigTV.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + showDisambig(); + } + }); + } + if (!issues) { + View issuesTV = headersView.findViewById(R.id.page_info_page_issues_heading); + issuesTV.setVisibility(View.GONE); + issuesTV.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + showIssues(); + } + }); + } + if (!(disambig && issues)) { + headersView.findViewById(R.id.page_info_heading_separator).setVisibility(View.GONE); + } + } + } + + private void showDisambig() { + + } + + private void showIssues() { + + } +} diff --git a/wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java b/wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java index d2e03bd..befab72 100644 --- a/wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java +++ b/wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java @@ -119,6 +119,7 @@ private CommunicationBridge bridge; private LinkHandler linkHandler; + private PageInfoHandler pageInfoHandler; private ReferenceDialog referenceDialog; private EditHandler editHandler; private NightModeHandler nightModeHandler; @@ -255,7 +256,7 @@ retryButton = rootView.findViewById(R.id.page_error_retry); pageDoesNotExistError = rootView.findViewById(R.id.page_does_not_exist); tocDrawer = (DisableableDrawerLayout) rootView.findViewById(R.id.page_toc_drawer); - + pageInfoHandler = new PageInfoHandler(rootView.findViewById(R.id.page_info_headers)); return rootView; } @@ -404,6 +405,19 @@ } private void setupMessageHandlers() { + bridge.addListener("pageInfo", new CommunicationBridge.JSEventListener() { + @Override + public void onMessage(String messageType, JSONObject messagePayload) { + if (!isAdded()) { + return; + } + try { + pageInfoHandler.showLinks(messagePayload.getBoolean("hasDisambig"), messagePayload.getBoolean("hasIssues")); + } catch (JSONException e) { + throw new RuntimeException("fix yer JS"); + } + } + }); bridge.addListener("requestSection", new CommunicationBridge.JSEventListener() { @Override public void onMessage(String messageType, JSONObject messagePayload) { diff --git a/wikipedia/src/main/java/org/wikipedia/page/ReferenceDialog.java b/wikipedia/src/main/java/org/wikipedia/page/ReferenceDialog.java index 58b639a..e9ad170 100644 --- a/wikipedia/src/main/java/org/wikipedia/page/ReferenceDialog.java +++ b/wikipedia/src/main/java/org/wikipedia/page/ReferenceDialog.java @@ -1,45 +1,22 @@ package org.wikipedia.page; -import android.app.Dialog; +import org.wikipedia.R; import android.content.Context; -import android.os.Build; import android.text.Html; import android.text.Spanned; -import android.view.Gravity; -import android.view.LayoutInflater; -import android.view.View; -import android.view.Window; -import android.view.WindowManager; import android.widget.TextView; -import org.wikipedia.R; -/** Display the currently clicked reference */ -public class ReferenceDialog extends Dialog { +/** + * A dialog that displays the currently clicked reference. + */ +public class ReferenceDialog extends BottomDialog { private final LinkHandler linkHandler; private final TextView referenceText; public ReferenceDialog(Context context, LinkHandler linkHandler) { - super(context); + super(context, R.layout.dialog_reference); this.linkHandler = linkHandler; - - LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); - View dlgLayout = inflater.inflate(R.layout.dialog_reference, null); - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { - getWindow().setDimAmount(0.0f); - } - requestWindowFeature(Window.FEATURE_NO_TITLE); - setContentView(dlgLayout); - - getWindow().setBackgroundDrawable(null); - WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); - lp.copyFrom(getWindow().getAttributes()); - lp.width = WindowManager.LayoutParams.MATCH_PARENT; - lp.height = WindowManager.LayoutParams.WRAP_CONTENT; - lp.gravity = Gravity.BOTTOM; - getWindow().setAttributes(lp); - - referenceText = (TextView) dlgLayout.findViewById(R.id.reference_text); + referenceText = (TextView) getDialogLayout().findViewById(R.id.reference_text); } void updateReference(String refHtml) { diff --git a/wikipedia/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java b/wikipedia/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java index 63a9abe..6bb09aa 100644 --- a/wikipedia/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java +++ b/wikipedia/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java @@ -8,6 +8,7 @@ import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.ImageView; +import android.widget.LinearLayout; import android.widget.TextView; import com.nineoldandroids.view.ViewHelper; @@ -253,7 +254,7 @@ webViewPadding = (int) ((pageTitleContainer.getHeight() / displayDensity)) + DISABLED_OFFSET_DP; imageContainer.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, - FrameLayout.LayoutParams.WRAP_CONTENT)); + FrameLayout.LayoutParams.WRAP_CONTENT)); // hide the lead image image1.setVisibility(View.GONE); // set the color of the title diff --git a/www/js/actions.js b/www/js/actions.js index cb1a786..7e113bb 100644 --- a/www/js/actions.js +++ b/www/js/actions.js @@ -65,30 +65,6 @@ curNode = curNode.parentNode; } - function collectIssues( sourceNode ) { - var res = []; - var issues = sourceNode.parentNode.querySelectorAll( 'table.ambox' ); - var i = 0, - len = issues.length; - for (; i < len; i++) { - // .ambox- is used e.g. on eswiki - res.push( issues[i].querySelector( '.mbox-text, .ambox-text' ).innerHTML ); - } - - bridge.sendMessage( 'issuesClicked', { "issues": res } ); - } - - function handleDisambig( sourceNode ) { - var res = []; - var hatnotes = sourceNode.parentNode.querySelectorAll( 'div.hatnote' ); - var i = 0, - len = hatnotes.length; - for (; i < len; i++) { - res.push( hatnotes[i].innerHTML ); - } - bridge.sendMessage( 'disambigClicked', { "hatnotes": res } ); - } - if (sourceNode) { if ( sourceNode.hasAttribute( "data-action" ) ) { var action = sourceNode.getAttribute( "data-action" ); @@ -115,4 +91,32 @@ } }; +bridge.registerListener( "collectDisambig", function( payload ) { + collectDisambig( payload.anchor, false ); +}); + +function collectDisambig( sourceNode ) { + var res = []; + var hatnotes = sourceNode.parentNode.querySelectorAll( 'div.hatnote' ); + var i = 0, + len = hatnotes.length; + for (; i < len; i++) { + res.push( hatnotes[i].innerHTML ); + } + bridge.sendMessage( 'disambigClicked', { "hatnotes": res } ); +} + +function collectIssues( sourceNode ) { + var res = []; + var issues = sourceNode.parentNode.querySelectorAll( 'table.ambox' ); + var i = 0, + len = issues.length; + for (; i < len; i++) { + // .ambox- is used e.g. on eswiki + res.push( issues[i].querySelector( '.mbox-text, .ambox-text' ).innerHTML ); + } + + bridge.sendMessage( 'issuesClicked', { "issues": res } ); +} + module.exports = new ActionsHandler(); diff --git a/www/js/issues.js b/www/js/issues.js index 098c1c9..e69de29 100644 --- a/www/js/issues.js +++ b/www/js/issues.js @@ -1,23 +0,0 @@ -var transformer = require('./transformer'); - -transformer.register( 'displayIssuesLink', function( content ) { - var issues = content.querySelectorAll( "table.ambox:not([class*='ambox-multiple_issues']):not([class*='ambox-notice'])" ); - if ( issues.length > 0 ) { - var el = issues[0]; - var container = document.getElementById( "issues_container" ); - var wrapper = document.createElement( 'div' ); - var link = document.createElement( 'a' ); - link.setAttribute( 'href', '#issues' ); - link.className = 'issues_button'; - link.id = 'issues_button'; - wrapper.appendChild( link ); - el.parentNode.replaceChild( wrapper, el ); - var i = 0, - len = issues.length; - for (; i < len; i++) { - wrapper.appendChild( issues[i] ); - } - container.appendChild( wrapper ); - } - return content; -} ); diff --git a/www/js/sections.js b/www/js/sections.js index 0450ee3..9bddb17 100644 --- a/www/js/sections.js +++ b/www/js/sections.js @@ -37,30 +37,19 @@ content = transformer.transform( "leadSection", content ); content = transformer.transform( "section", content ); - content = transformer.transform("displayDisambigLink", content); - content = transformer.transform("displayIssuesLink", content); - //if there were no page issues, then hide the container - if (!issuesContainer.hasChildNodes()) { - document.getElementById( "content" ).removeChild(issuesContainer); + var hasDisambig = false; + var hatnotes = content.querySelectorAll( "div.hatnote" ); + if ( hatnotes.length > 0 ) { + hasDisambig = true; } - //update the text of the disambiguation link, if there is one - var disambigBtn = document.getElementById( "disambig_button" ); - if (disambigBtn !== null) { - disambigBtn.innerText = payload.string_page_similar_titles; + var hasIssues = false; + var issues = content.querySelectorAll( "table.ambox:not([class*='ambox-multiple_issues']):not([class*='ambox-notice'])" ); + if ( issues.length > 0 ) { + hasIssues = true; } - //update the text of the page-issues link, if there is one - var issuesBtn = document.getElementById( "issues_button" ); - if (issuesBtn !== null) { - issuesBtn.innerText = payload.string_page_issues; - } - //if we have both issues and disambiguation, then insert the separator - if (issuesBtn !== null && disambigBtn !== null) { - var separator = document.createElement( 'span' ); - separator.innerText = '|'; - separator.className = 'issues_separator'; - issuesContainer.insertBefore(separator, issuesBtn.parentNode); - } + console.log( "BBB: " + hasDisambig + ", hasIssues" + hasIssues ); + bridge.sendMessage( "pageInfo", { "hasDisambig": hasDisambig, "hasIssues": hasIssues } ); document.getElementById( "content" ).appendChild( content ); -- To view, visit https://gerrit.wikimedia.org/r/171442 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I8e4a9d9564625115a7a886a26dee3520b6972d6a Gerrit-PatchSet: 1 Gerrit-Project: apps/android/wikipedia Gerrit-Branch: master Gerrit-Owner: BearND <bsitzm...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits