jenkins-bot has submitted this change and it was merged. Change subject: Enable routing on TalkSectionOverlay ......................................................................
Enable routing on TalkSectionOverlay Bug: 71075 Change-Id: Ie5dd5b0e66cd192e32dc9288732d16ed49948eec --- M javascripts/modules/talk/TalkOverlay.js M javascripts/modules/talk/TalkSectionOverlay.js M javascripts/modules/talk/talk.js M templates/modules/talk/talk.hogan 4 files changed, 48 insertions(+), 71 deletions(-) Approvals: Jhernandez: Looks good to me, approved jenkins-bot: Verified diff --git a/javascripts/modules/talk/TalkOverlay.js b/javascripts/modules/talk/TalkOverlay.js index 4dbdb92..b70bef7 100644 --- a/javascripts/modules/talk/TalkOverlay.js +++ b/javascripts/modules/talk/TalkOverlay.js @@ -4,7 +4,6 @@ var Overlay = M.require( 'Overlay' ), Page = M.require( 'Page' ), - TalkSectionOverlay = M.require( 'modules/talk/TalkSectionOverlay' ), user = M.require( 'user' ), /** * Overlay for talk page @@ -46,9 +45,6 @@ this._loadContent( options ); } this._setupAddDiscussionButton( options ); - if ( this.page ) { - this._setupSectionLinks(); - } this._showHidden( '.initial-header' ); }, @@ -133,38 +129,6 @@ } else { $add.remove(); } - }, - /** - * Setups the headings as links that when clicked open an overlay with the talk - * page content. - * FIXME: Make this a link in the template. - * @method - */ - _setupSectionLinks: function () { - var childOverlay, self = this, - page = this.page; - - // FIXME: Use Router instead for this - this.$( '.page-list a' ).on( 'click', function () { - var id = parseFloat( $( this ).data( 'id' ), 10 ), - section = page.getSubSection( id ); - - if ( section ) { - childOverlay = new TalkSectionOverlay( { - parent: self, - title: page.title, - section: section - } ); - // Hide discussion list to disable scrolling - bug 70989 - // FIXME: Kill when OverlayManager is used for TalkSections - self.$board.hide(); - childOverlay.show(); - } - // When closing this overlay, also close the child section overlay - self.on( 'hide', function () { - childOverlay.remove(); - } ); - } ); } } ); diff --git a/javascripts/modules/talk/TalkSectionOverlay.js b/javascripts/modules/talk/TalkSectionOverlay.js index dcdb18b..b0d550c 100644 --- a/javascripts/modules/talk/TalkSectionOverlay.js +++ b/javascripts/modules/talk/TalkSectionOverlay.js @@ -1,9 +1,10 @@ -( function ( M, $ ) { +( function ( M ) { var Overlay = M.require( 'Overlay' ), popup = M.require( 'toast' ), api = M.require( 'api' ), user = M.require( 'user' ), + Page = M.require( 'Page' ), TalkSectionOverlay; /** @@ -17,40 +18,42 @@ content: mw.template.get( 'mobile.talk.overlays', 'Section/content.hogan' ) }, defaults: { + title: undefined, + section: undefined, reply: mw.msg( 'mobile-frontend-talk-reply' ), confirmMsg: mw.msg( 'mobile-frontend-editor-save' ), info: mw.msg( 'mobile-frontend-talk-reply-info' ) }, - // FIXME: Use Router for TalkSectionOverlay - hide: function () { - if ( this.$board ) { - this.$board.show(); - } - this.remove(); - }, - initialize: function ( options ) { - // If terms of use is enabled, include it in the licensing message - if ( $( '#footer-places-terms-use' ).length > 0 ) { - options.licenseMsg = mw.msg( - 'mobile-frontend-editor-licensing-with-terms', - $( '#footer-places-terms-use' ).html(), - mw.config.get( 'wgMFLicenseLink' ) - ); - } else { - options.licenseMsg = mw.msg( - 'mobile-frontend-editor-licensing', - mw.config.get( 'wgMFLicenseLink' ) - ); - } - this.$board = options.parent.$board; - Overlay.prototype.initialize.apply( this, arguments ); - }, + /** + * Fetches the talk topics of the page specified in options.title + * if options.section is not defined. + * @inheritdoc + */ postRender: function ( options ) { + var self = this; + + Overlay.prototype.postRender.apply( this, arguments ); + if ( !options.section ) { + M.pageApi.getPage( options.title ).done( function ( pageData ) { + var page = new Page( pageData ); + options.section = page.getSubSection( options.id ); + self.render( options ); + } ); + } else { + this.$( '.loading' ).remove(); + this._enableComments( options.title, options.id ); + } + }, + /** + * Enables comments on the current rendered talk topic + * @method + * @param {String} title of the talk page with `Talk` prefix to post to + * @param {Integer} id of the sub section to open + */ + _enableComments: function ( title, id ) { var self = this, $comment = this.$( '.comment' ), $textarea = $comment.find( 'textarea' ); - Overlay.prototype.postRender.apply( this, arguments ); - this.$( '.back' ).on( 'click', $.proxy( self, 'hide' ) ); - this.$( '.loading' ).remove(); + if ( user.isAnon() || !M.isAlphaGroupMember() ) { $comment.remove(); } else { @@ -67,8 +70,8 @@ api.getTokenWithEndpoint().done( function ( token ) { api.post( { action: 'edit', - title: options.title, - section: options.section.id, + title: title, + section: id, token: token, appendtext: val } ).done( function ( data ) { @@ -78,10 +81,9 @@ $textarea.addClass( 'error' ); } else { self.hide(); - options.parent.hide(); popup.show( mw.msg( 'mobile-frontend-talk-reply-success' ), 'toast' ); // invalidate the cache - M.pageApi.invalidatePage( options.title ); + M.pageApi.invalidatePage( title ); } } ); } ); @@ -94,4 +96,4 @@ } ); M.define( 'modules/talk/TalkSectionOverlay', TalkSectionOverlay ); -}( mw.mobileFrontend, jQuery ) ); +}( mw.mobileFrontend ) ); diff --git a/javascripts/modules/talk/talk.js b/javascripts/modules/talk/talk.js index 49a5613..5829da9 100644 --- a/javascripts/modules/talk/talk.js +++ b/javascripts/modules/talk/talk.js @@ -1,5 +1,6 @@ ( function ( M, $ ) { - var talkPrefix = mw.config.get( 'wgFormattedNamespaces' )[ mw.config.get( 'wgNamespaceNumber' ) + 1 ] + ':'; + var licenseLink = mw.config.get( 'wgMFLicenseLink' ), + talkPrefix = mw.config.get( 'wgFormattedNamespaces' )[ mw.config.get( 'wgNamespaceNumber' ) + 1 ] + ':'; M.assertMode( [ 'beta', 'alpha', 'app' ] ); @@ -9,10 +10,20 @@ title: talkPrefix + M.getCurrentPage().title }; + if ( $( '#footer-places-terms-use' ).length > 0 ) { + talkOptions.licenseMsg = mw.msg( 'mobile-frontend-editor-licensing-with-terms', + $( '#footer-places-terms-use' ).html(), licenseLink ); + } else { + talkOptions.licenseMsg = mw.msg( 'mobile-frontend-editor-licensing', licenseLink ); + } + M.loadModule( 'mobile.talk.overlays' ).done( function () { var Overlay; if ( id === 'new' ) { Overlay = M.require( 'modules/talk/TalkSectionAddOverlay' ); + } else if ( id ) { + talkOptions.id = id; + Overlay = M.require( 'modules/talk/TalkSectionOverlay' ); } else { Overlay = M.require( 'modules/talk/TalkOverlay' ); } diff --git a/templates/modules/talk/talk.hogan b/templates/modules/talk/talk.hogan index 3bef980..298ce20 100644 --- a/templates/modules/talk/talk.hogan +++ b/templates/modules/talk/talk.hogan @@ -5,7 +5,7 @@ <ul class="page-list"> {{#headings}} <li> - <a data-id="{{id}}">{{line}}</a> + <a data-id="{{id}}" href="#/talk/{{id}}">{{line}}</a> </li> {{/headings}} </ul> -- To view, visit https://gerrit.wikimedia.org/r/171981 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ie5dd5b0e66cd192e32dc9288732d16ed49948eec Gerrit-PatchSet: 4 Gerrit-Project: mediawiki/extensions/MobileFrontend Gerrit-Branch: master Gerrit-Owner: Jdlrobson <jrob...@wikimedia.org> Gerrit-Reviewer: Awjrichards <aricha...@wikimedia.org> Gerrit-Reviewer: Jhernandez <jhernan...@wikimedia.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits