jenkins-bot has submitted this change and it was merged.
Change subject: Show nested references inside the drawer
......................................................................
Show nested references inside the drawer
Bug: T129918
Change-Id: I1307a5b189364484848c17a18036af0640b38f56
---
M resources/mobile.references/ReferencesDrawer.js
M resources/mobile.references/references.js
M tests/browser/features/references.feature
M tests/browser/features/step_definitions/create_page_api_steps.rb
M tests/browser/features/step_definitions/references_steps.rb
M tests/browser/features/support/pages/article_page.rb
6 files changed, 68 insertions(+), 16 deletions(-)
Approvals:
Jdlrobson: Looks good to me, approved
jenkins-bot: Verified
diff --git a/resources/mobile.references/ReferencesDrawer.js
b/resources/mobile.references/ReferencesDrawer.js
index e961c7e..4297baf 100644
--- a/resources/mobile.references/ReferencesDrawer.js
+++ b/resources/mobile.references/ReferencesDrawer.js
@@ -36,6 +36,9 @@
label: mw.msg(
'mobile-frontend-references-citation' )
} ).toHtmlString()
} ),
+ events: {
+ 'click sup a': 'showNestedReference'
+ },
/** @inheritdoc */
show: function () {
uiSchema.log( {
@@ -76,6 +79,23 @@
*/
onHide: function () {
$( 'body' ).removeClass( 'drawer-enabled' );
+ },
+ /**
+ * Fetch and render nested reference upon click
+ * @param {jQuery.Event} ev
+ */
+ showNestedReference: function ( ev ) {
+ var $dest = $( ev.target ),
+ href = $dest.attr( 'href' );
+
+ mw.track( 'mf.showReference', {
+ href: href,
+ title: $dest.text(),
+ page: this.options.page
+ } );
+
+ // Don't hide the already shown drawer
+ ev.stopPropagation();
}
} );
diff --git a/resources/mobile.references/references.js
b/resources/mobile.references/references.js
index 3cdb910..718e014 100644
--- a/resources/mobile.references/references.js
+++ b/resources/mobile.references/references.js
@@ -4,6 +4,21 @@
isBeta = context.isBetaGroupMember(),
ReferencesDrawer = M.require(
'mobile.references/ReferencesDrawer' );
+ mw.trackSubscribe( 'mf.showReference', function ( topic, data ) {
+ getReference( data.href, data.page ).done( function ( reference
) {
+ drawer.render( {
+ title: data.title,
+ text: reference.text
+ } );
+ } ).fail( function () {
+ drawer.render( {
+ error: true,
+ title: data.title,
+ text: mw.msg(
'mobile-frontend-references-citation-error' )
+ } );
+ } );
+ } );
+
/**
* Return a data structure indexing all references in the given page.
* @method
@@ -105,24 +120,21 @@
*/
function showReference( ev ) {
var $dest = $( this ),
- href = $dest.attr( 'href' );
+ href = $dest.attr( 'href' ),
+ page = $dest.data( 'page' );
if ( !drawer ) {
// Note we only initialise here to avoid adding to DOM
unnecessarily
// (Drawer currently auto appends within the postRender
function )
- drawer = new ReferencesDrawer();
+ drawer = new ReferencesDrawer( {
+ page: page
+ } );
}
- getReference( href, $dest.data( 'page' ) ).done( function (
reference ) {
- drawer.render( {
- title: $dest.text(),
- text: reference.text
- } );
- } ).fail( function () {
- drawer.render( {
- error: true,
- title: $dest.text(),
- text: mw.msg(
'mobile-frontend-references-citation-error' )
- } );
+
+ mw.track( 'mf.showReference', {
+ href: href,
+ page: page,
+ title: $dest.text()
} );
ev.preventDefault();
diff --git a/tests/browser/features/references.feature
b/tests/browser/features/references.feature
index 6acbcac..2273ddc 100644
--- a/tests/browser/features/references.feature
+++ b/tests/browser/features/references.feature
@@ -14,3 +14,9 @@
When I click on a reference
And I click on the page
Then I should not see the reference drawer
+
+ Scenario: Opening a nested reference
+ Given I go to a page that has references
+ When I click on a reference
+ And I click on a nested reference
+ Then I should see a drawer with message "This is a nested ref."
diff --git a/tests/browser/features/step_definitions/create_page_api_steps.rb
b/tests/browser/features/step_definitions/create_page_api_steps.rb
index 711b90a..aa816bd 100644
--- a/tests/browser/features/step_definitions/create_page_api_steps.rb
+++ b/tests/browser/features/step_definitions/create_page_api_steps.rb
@@ -5,10 +5,13 @@
end
Given(/^I go to a page that has references$/) do
- wikitext = "MobileFrontend is a MediaWiki extension.<ref>Test reference</ref>
-
+ wikitext = "MobileFrontend is a MediaWiki extension.
+{{#tag:ref|This is a note.<ref>This is a nested ref.</ref>|group=note}}
+==Notes==
+<references group=note />
==References==
-<references />"
+<references/>
+"
api.create_page 'Selenium References test page', wikitext
step 'I am on the "Selenium References test page" page'
diff --git a/tests/browser/features/step_definitions/references_steps.rb
b/tests/browser/features/step_definitions/references_steps.rb
index f28b94f..a3d17cb 100644
--- a/tests/browser/features/step_definitions/references_steps.rb
+++ b/tests/browser/features/step_definitions/references_steps.rb
@@ -5,6 +5,12 @@
end
end
+When(/^I click on a nested reference$/) do
+ on(ArticlePage) do |page|
+ page.nested_reference_element.when_present.click
+ end
+end
+
Then(/^I should see the reference drawer$/) do
expect(on(ArticlePage).reference_drawer_element).to be_visible
end
@@ -12,3 +18,7 @@
Then(/^I should not see the reference drawer$/) do
expect(on(ArticlePage).reference_drawer_element.when_not_present).to be_nil
end
+
+Then /^I should see a reference drawer with message "(.+)"$/ do |text|
+ expect(on(ArticlePage).reference_drawer_element.when_present.text).to
include text
+end
diff --git a/tests/browser/features/support/pages/article_page.rb
b/tests/browser/features/support/pages/article_page.rb
index ea66695..c04ffda 100644
--- a/tests/browser/features/support/pages/article_page.rb
+++ b/tests/browser/features/support/pages/article_page.rb
@@ -153,6 +153,7 @@
# references
a(:reference, css: 'sup.reference a')
+ a(:nested_reference, css: '.drawer.references sup.reference a')
a(:reference_drawer, css: '.drawer.references')
# sections
--
To view, visit https://gerrit.wikimedia.org/r/278081
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I1307a5b189364484848c17a18036af0640b38f56
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/extensions/MobileFrontend
Gerrit-Branch: master
Gerrit-Owner: Bmansurov <[email protected]>
Gerrit-Reviewer: Bmansurov <[email protected]>
Gerrit-Reviewer: Jdlrobson <[email protected]>
Gerrit-Reviewer: Phuedx <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits