jenkins-bot has submitted this change and it was merged.

Change subject: Add topics to the correct namespace
......................................................................


Add topics to the correct namespace

Refactor talk.js in process - move logic for loading the content
into TalkOverlay itself.

Add some tests

Bug: 54079
Change-Id: I694b4937eb66a495da45257e81dd4586b8d2f167
---
M javascripts/modules/talk/TalkOverlay.js
M javascripts/modules/talk/talk.js
A tests/javascripts/modules/talk/test_TalkOverlay.js
3 files changed, 69 insertions(+), 34 deletions(-)

Approvals:
  JGonera: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/javascripts/modules/talk/TalkOverlay.js 
b/javascripts/modules/talk/TalkOverlay.js
index dcd816d..042428c 100644
--- a/javascripts/modules/talk/TalkOverlay.js
+++ b/javascripts/modules/talk/TalkOverlay.js
@@ -3,6 +3,8 @@
 
        var
                Overlay = M.require( 'Overlay' ),
+               LoadingOverlay = M.require( 'LoadingOverlay' ),
+               Page = M.require( 'Page' ),
                TalkSectionOverlay = M.require( 
'modules/talk/TalkSectionOverlay' ),
                api = M.require( 'api' ),
                TalkSectionAddOverlay = Overlay.extend( {
@@ -18,7 +20,7 @@
                        initialize: function( options ) {
                                this._super( options );
                                this.talkOverlay = options.parent;
-                               this.title = 'Talk:' + mw.config.get( 'wgTitle' 
);
+                               this.title = options.title;
                        },
                        postRender: function( options ) {
                                this._super( options );
@@ -69,7 +71,36 @@
                                heading: mw.msg( 
'mobile-frontend-talk-overlay-header' ),
                                leadHeading: mw.msg( 
'mobile-frontend-talk-overlay-lead-header' )
                        },
+                       initialize: function( options ) {
+                               var self = this,
+                                       _super = this._super;
+                               this.loadingOverlay = new LoadingOverlay();
+                               this.loadingOverlay.show();
+
+                               // FIXME: use Page's mechanisms for retrieving 
page data instead
+                               M.pageApi.getPage( options.title ).fail( 
function( resp ) {
+                                       var code;
+                                       if ( resp.error ) {
+                                               code = resp.error.code;
+                                               if ( code === 'missingtitle' ) {
+                                                       // Create an empty page 
for new pages
+                                                       options.page = new 
Page( { title: options.title, sections: [] } );
+                                                       _super.call( self, 
options );
+                                                       self.show();
+                                               // FIXME: [LQT] remove when 
liquid threads is dead (see Bug 51586)
+                                               } else if ( code === 'lqt' ) {
+                                                       // Force a visit to the 
page
+                                                       window.location = 
mw.util.wikiGetlink( options.title );
+                                               }
+                                       }
+                               } ).done( function( pageData ) {
+                                       options.page = new Page( pageData );
+                                       _super.call( self, options );
+                                       self.show();
+                               } );
+                       },
                        preRender: function( options ) {
+                               this.loadingOverlay.hide();
                                var page = options.page,
                                        sections = page.getSubSections(),
                                        explanation = sections.length > 0 ? 
mw.msg( 'mobile-frontend-talk-explained' ) :
@@ -88,7 +119,8 @@
                                if ( M.isLoggedIn() ) {
                                        $add.click( function() {
                                                var overlay = new 
TalkSectionAddOverlay( {
-                                                       parent: self
+                                                       parent: self,
+                                                       title: options.title
                                                } );
                                                overlay.show();
                                        } );
diff --git a/javascripts/modules/talk/talk.js b/javascripts/modules/talk/talk.js
index f38d6c3..af29e0e 100644
--- a/javascripts/modules/talk/talk.js
+++ b/javascripts/modules/talk/talk.js
@@ -1,47 +1,26 @@
 ( function( M, $ ) {
+       var LoadingOverlay = M.require( 'LoadingOverlay' );
+
        M.assertMode( [ 'beta', 'alpha' ] );
 
-       var LoadingOverlay = M.require( 'LoadingOverlay' ),
-               Page = M.require( 'Page' ),
-               loadingOverlay = new LoadingOverlay();
+       function onTalkClick( ev ) {
+               var talkPage = $( this ).data( 'title' ),
+                       loadingOverlay = new LoadingOverlay();
 
-       function renderTalkOverlay( pageData ) {
+               ev.preventDefault();
+               loadingOverlay.show();
                mw.loader.using( 'mobile.talk', function() {
                        var TalkOverlay = M.require( 'modules/talk/TalkOverlay' 
);
 
                        loadingOverlay.hide();
-                       new TalkOverlay( { page: new Page( pageData ) } 
).show();
-               } );
-       }
-
-       function onTalkClick( ev ) {
-               var talkPage = $( this ).data( 'title' );
-
-               ev.preventDefault();
-               loadingOverlay.show();
-
-               // FIXME: use Page's mechanisms for retrieving page data instead
-               M.pageApi.getPage( talkPage ).fail( function( resp ) {
-                       var code;
-                       if ( resp.error ) {
-                               code = resp.error.code;
-                               if ( code === 'missingtitle' ) {
-                                       renderTalkOverlay( {
-                                               sections: [], title: talkPage
-                                       } );
-                               // FIXME: [LQT] remove when liquid threads is 
dead (see Bug 51586)
-                               } else if ( code === 'lqt' ) {
-                                       // Force a visit to the page
-                                       window.location = mw.util.wikiGetlink( 
talkPage );
-                               }
-                       }
-               } ).done( function( pageData ) {
-                       renderTalkOverlay( pageData );
+                       new TalkOverlay( {
+                               title: talkPage
+                       } );
                } );
        }
 
        function init( title ) {
-               var talkPrefix = mw.config.get( 'wgFormattedNamespaces' ) 
[mw.config.get( 'wgNamespaceNumber' ) + 1 ] + ':';
+               var talkPrefix = mw.config.get( 'wgFormattedNamespaces' )[ 
mw.config.get( 'wgNamespaceNumber' ) + 1 ] + ':';
                // FIXME change when micro.tap.js in stable
                $( '#ca-talk' ).on( M.tapEvent( 'click' ), onTalkClick ).data( 
'title', talkPrefix + title );
        }
diff --git a/tests/javascripts/modules/talk/test_TalkOverlay.js 
b/tests/javascripts/modules/talk/test_TalkOverlay.js
new file mode 100644
index 0000000..c62ef9f
--- /dev/null
+++ b/tests/javascripts/modules/talk/test_TalkOverlay.js
@@ -0,0 +1,24 @@
+( function ( M, $ ) {
+
+var TalkOverlay = M.require( 'modules/talk/TalkOverlay' );
+
+QUnit.module( 'MobileFrontend TalkOverlay', {
+       setup: function() {
+               sinon.stub( M.pageApi, 'getPage' ).withArgs( 'Talk:No exist' 
).returns(
+                       $.Deferred().reject( { error: { code: 'missingtitle' } 
} )
+               );
+       },
+       teardown: function() {
+               M.pageApi.getPage.restore();
+       }
+} );
+
+QUnit.test( '#TalkOverlay (new page)', 2, function( assert ) {
+       var overlay = new TalkOverlay( { title: 'Talk:No exist' } ),
+               page = overlay.options.page;
+
+       assert.strictEqual( page.title, 'Talk:No exist', 'Title set' );
+       assert.strictEqual( page.getSubSections().length, 0, 'A page was setup 
with no sections' );
+} );
+
+}( mw.mobileFrontend, jQuery ) );

-- 
To view, visit https://gerrit.wikimedia.org/r/90079
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I694b4937eb66a495da45257e81dd4586b8d2f167
Gerrit-PatchSet: 4
Gerrit-Project: mediawiki/extensions/MobileFrontend
Gerrit-Branch: master
Gerrit-Owner: Jdlrobson <[email protected]>
Gerrit-Reviewer: JGonera <[email protected]>
Gerrit-Reviewer: Kaldari <[email protected]>
Gerrit-Reviewer: jenkins-bot

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to