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