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

Reply via email to