Jdlrobson has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/182294

Change subject: Hygiene: Modules must now request page from skin
......................................................................

Hygiene: Modules must now request page from skin

Change-Id: I3bf7e222fc1653e1d8ab393862bfe7a0a71de2f7
---
M javascripts/Skin.js
M javascripts/application.js
M javascripts/modules/bannerImage/init.js
M javascripts/modules/editor/init.js
M javascripts/modules/infobox/init.js
M javascripts/modules/issues/init.js
M javascripts/modules/routes.js
M javascripts/modules/toc/init.js
M javascripts/modules/toggling/init.js
M javascripts/modules/uploads/init.js
M javascripts/modules/watchstar/Watchstar.js
M javascripts/modules/watchstar/init.js
M javascripts/modules/wikiGrokRoulette/init.js
M javascripts/modules/wikigrok/WikiGrokDialog.js
M javascripts/modules/wikigrok/init.js
M tests/qunit/modules/wikigrok/test_WikiGrokDialog.js
16 files changed, 51 insertions(+), 54 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/MobileFrontend 
refs/changes/94/182294/1

diff --git a/javascripts/Skin.js b/javascripts/Skin.js
index b3192c8..3fa37f0 100644
--- a/javascripts/Skin.js
+++ b/javascripts/Skin.js
@@ -13,7 +13,6 @@
         */
        Skin = View.extend( {
                /**
-                * @inheritdoc
                 * @cfg {Object} defaults Default options hash.
                 * @cfg {Page} options.page page the skin is currently rendering
                 * @cfg {array} options.tabletModules modules to load when in 
tablet
@@ -24,6 +23,14 @@
                },
 
                /**
+                * Return the page currently rendered in the skin
+                * @return {Page}
+                */
+               getPage: function () {
+                       return this.page;
+               },
+
+               /**
                 * Setup position fixed emulation using position absolute.
                 */
                setupPositionFixedEmulation: function () {
diff --git a/javascripts/application.js b/javascripts/application.js
index db9548d..9b734e0 100644
--- a/javascripts/application.js
+++ b/javascripts/application.js
@@ -6,7 +6,7 @@
  * @singleton
  */
 ( function ( M, $ ) {
-       var currentPage, skin,
+       var skin,
                Router = M.require( 'Router' ),
                OverlayManager = M.require( 'OverlayManager' ),
                PageApi = M.require( 'PageApi' ),
@@ -20,42 +20,14 @@
         * @method
         */
        function init() {
-               skin = new Skin( {
-                       el: '#mw-mf-viewport',
-                       tabletModules: mw.config.get( 'skin' ) === 'minerva' ? 
[ 'tablet.scripts' ] : [],
-                       page: getCurrentPage()
-               } );
-               $( window ).on( 'resize', $.proxy( M, 'emit', 'resize' ) );
-               $( window ).on( 'scroll', $.proxy( M, 'emit', 'scroll' ) );
-       }
+               var page,
+                       permissions = mw.config.get( 'wgRestrictionEdit', [] );
 
-       /**
-        * Get current page view object
-        * FIXME: Move to M.define( 'page' )
-        * @method
-        * @return {Page}
-        */
-       function getCurrentPage() {
-               if ( currentPage ) {
-                       return currentPage;
-               } else {
-                       return loadCurrentPage();
-               }
-       }
-
-       /**
-        * Constructs an incomplete Page object representing the currently 
loaded page.
-        *
-        * @method
-        * @private
-        * @ignore
-        */
-       function loadCurrentPage() {
-               var permissions = mw.config.get( 'wgRestrictionEdit', [] );
                if ( permissions.length === 0 ) {
                        permissions.push( '*' );
                }
-               currentPage = new Page( {
+
+               page = new Page( {
                        el: '#content',
                        title: mw.config.get( 'wgPageName' ).replace( /_/g, ' ' 
),
                        protection: {
@@ -67,12 +39,17 @@
                        sections: pageApi.getSectionsFromHTML( $( '#content' ) 
),
                        id: mw.config.get( 'wgArticleId' )
                } );
-               return currentPage;
+
+               skin = new Skin( {
+                       el: '#mw-mf-viewport',
+                       tabletModules: mw.config.get( 'skin' ) === 'minerva' ? 
[ 'tablet.scripts' ] : [],
+                       page: page
+               } );
+               $( window ).on( 'resize', $.proxy( M, 'emit', 'resize' ) );
+               $( window ).on( 'scroll', $.proxy( M, 'emit', 'scroll' ) );
        }
 
        $.extend( M, {
-               init: init,
-               getCurrentPage: getCurrentPage,
                /**
                 * Navigation router instance
                 * @type {Router}
diff --git a/javascripts/modules/bannerImage/init.js 
b/javascripts/modules/bannerImage/init.js
index ce97fd2..850f47a 100644
--- a/javascripts/modules/bannerImage/init.js
+++ b/javascripts/modules/bannerImage/init.js
@@ -1,7 +1,8 @@
 ( function ( M ) {
        M.assertMode( [ 'alpha' ] );
        var bannerImage,
-               page = M.getCurrentPage(),
+               skin = M.require( 'Skin' ),
+               page = skin.getPage(),
                browser = M.require( 'browser' ),
                wikidataID = mw.config.get( 'wgWikibaseItemId' ),
                BannerImage = M.require( 'modules/bannerImage/BannerImage' );
diff --git a/javascripts/modules/editor/init.js 
b/javascripts/modules/editor/init.js
index a16515f..ea2c9b9 100644
--- a/javascripts/modules/editor/init.js
+++ b/javascripts/modules/editor/init.js
@@ -11,7 +11,8 @@
                enabledEditIcon = new Icon( {
                        name: 'edit-enabled'
                } ),
-               currentPage = M.getCurrentPage(),
+               skin = M.require( 'Skin' ),
+               currentPage = skin.getPage(),
                enabledClass = enabledEditIcon.getGlyphClassName(),
                disabledClass = disabledEditIcon.getGlyphClassName(),
                browser = M.require( 'browser' ),
diff --git a/javascripts/modules/infobox/init.js 
b/javascripts/modules/infobox/init.js
index 520d2a2..b35ce1d 100644
--- a/javascripts/modules/infobox/init.js
+++ b/javascripts/modules/infobox/init.js
@@ -1,7 +1,8 @@
 ( function ( M ) {
        M.assertMode( [ 'alpha' ] );
        var infobox,
-               page = M.getCurrentPage(),
+               skin = M.require( 'Skin' ),
+               page = skin.getPage(),
                wikidataID = mw.config.get( 'wgWikibaseItemId' ),
                InfoboxEditorOverlay = M.require( 
'modules/wikigrok/InfoboxEditorOverlay' ),
                Infobox = M.require( 'modules/wikigrok/Infobox' );
diff --git a/javascripts/modules/issues/init.js 
b/javascripts/modules/issues/init.js
index 4a83d76..d6072bf 100644
--- a/javascripts/modules/issues/init.js
+++ b/javascripts/modules/issues/init.js
@@ -2,6 +2,7 @@
 
        var module = ( function () {
                var
+                       skin = M.require( 'Skin' ),
                        Icon = M.require( 'Icon' ),
                        inBeta = M.isBetaGroupMember(),
                        CleanupOverlay = M.require( 
'modules/issues/CleanupOverlay' ),
@@ -134,7 +135,7 @@
                }
 
                // Setup the issues banner on the page
-               initPageIssues( M.getCurrentPage().getLeadSectionElement() );
+               initPageIssues( skin.getPage().getLeadSectionElement() );
                // Show it in edit preview.
                M.on( 'edit-preview', function ( overlay ) {
                        initPageIssues( overlay.$el );
diff --git a/javascripts/modules/routes.js b/javascripts/modules/routes.js
index b018452..27f17af 100644
--- a/javascripts/modules/routes.js
+++ b/javascripts/modules/routes.js
@@ -1,7 +1,7 @@
 /* Defines all possible routes in MobileFrontend and where to find the code to 
provide them. */
 ( function ( M, $ ) {
-       var
-               lastFile;
+       var lastFile,
+               skin = M.require( 'Skin' );
 
        // FIXME: this is hacky but it would be hard to pass a file in a route
        M.on( '_upload-preview', function ( file ) {
@@ -26,7 +26,7 @@
                M.loadModule( 'mobile.uploads' ).done( function () {
                        var PhotoUploadOverlay = M.require( 
'modules/uploads/PhotoUploadOverlay' );
                        result.resolve( new PhotoUploadOverlay( {
-                               page: M.getCurrentPage(),
+                               page: skin.getPage(),
                                // FIXME: Remove this and use page option 
instead
                                pageTitle: mw.config.get( 'wgTitle' ),
                                file: lastFile,
diff --git a/javascripts/modules/toc/init.js b/javascripts/modules/toc/init.js
index 125da07..fc60300 100644
--- a/javascripts/modules/toc/init.js
+++ b/javascripts/modules/toc/init.js
@@ -1,5 +1,6 @@
 ( function ( M ) {
        var TableOfContents = M.require( 'modules/toc/TableOfContents' ),
+               skin = M.require( 'Skin' ),
                toggle = M.require( 'toggle' );
 
        /**
@@ -37,7 +38,7 @@
 
        // add a ToC only for "view" action (user is reading a page)
        if ( mw.config.get( 'wgAction' ) === 'view' ) {
-               init( M.getCurrentPage() );
+               init( skin.getPage() );
        }
 
 }( mw.mobileFrontend ) );
diff --git a/javascripts/modules/toggling/init.js 
b/javascripts/modules/toggling/init.js
index c805d62..d41c05c 100644
--- a/javascripts/modules/toggling/init.js
+++ b/javascripts/modules/toggling/init.js
@@ -1,5 +1,6 @@
 ( function ( M, $ ) {
-       var page = M.getCurrentPage(),
+       var skin = M.require( 'Skin' ),
+               page = skin.getPage(),
                currentPageTitle =  page.title,
                settings = M.require( 'settings' ),
                browser = M.require( 'browser' ),
diff --git a/javascripts/modules/uploads/init.js 
b/javascripts/modules/uploads/init.js
index a7e9858..f246a7f 100644
--- a/javascripts/modules/uploads/init.js
+++ b/javascripts/modules/uploads/init.js
@@ -4,6 +4,7 @@
                funnel = $.cookie( 'mwUploadsFunnel' ) || 'article',
                LeadPhotoUploaderButton = M.require( 
'modules/uploads/LeadPhotoUploaderButton' ),
                user = M.require( 'user' ),
+               skin = M.require( 'Skin' ),
                isSupported = LeadPhotoUploaderButton.isSupported;
 
        /**
@@ -30,7 +31,7 @@
         */
        function initialize() {
                var
-                       page = M.getCurrentPage(),
+                       page = skin.getPage(),
                        $lead = page.getLeadSectionElement(),
                        inFileNamespace = page.inNamespace( 'file' ),
                        validNamespace = ( page.inNamespace( '' ) || 
page.inNamespace( 'user' ) || inFileNamespace );
diff --git a/javascripts/modules/watchstar/Watchstar.js 
b/javascripts/modules/watchstar/Watchstar.js
index 7baba52..822391d 100644
--- a/javascripts/modules/watchstar/Watchstar.js
+++ b/javascripts/modules/watchstar/Watchstar.js
@@ -37,7 +37,7 @@
                 * @cfg {Page} defaults.page Current page.
                 */
                defaults: {
-                       page: M.getCurrentPage()
+                       page: undefined
                },
                tagName: 'div',
                className: watchIcon.getClassName(),
diff --git a/javascripts/modules/watchstar/init.js 
b/javascripts/modules/watchstar/init.js
index b947399..8d16519 100644
--- a/javascripts/modules/watchstar/init.js
+++ b/javascripts/modules/watchstar/init.js
@@ -1,6 +1,7 @@
 ( function ( M, $ ) {
 
        var Watchstar = M.require( 'modules/watchstar/Watchstar' ),
+               skin = M.require( 'Skin' ),
                user = M.require( 'user' );
 
        /**
@@ -20,6 +21,6 @@
                        } );
                }
        }
-       init( M.getCurrentPage() );
+       init( skin.getPage() );
 
 }( mw.mobileFrontend, jQuery ) );
diff --git a/javascripts/modules/wikiGrokRoulette/init.js 
b/javascripts/modules/wikiGrokRoulette/init.js
index 6abd44a..6e25f42 100644
--- a/javascripts/modules/wikiGrokRoulette/init.js
+++ b/javascripts/modules/wikiGrokRoulette/init.js
@@ -5,6 +5,7 @@
                LoadingOverlay = M.require( 'LoadingOverlay' ),
                util = M.require( 'util' ),
                query = util.query,
+               skin = M.require( 'Skin' ),
                ErrorDrawer = M.require( 'modules/wikiGrokRoulette/ErrorDrawer' 
);
 
        // Handle Random WikiGrok menu item
@@ -36,7 +37,7 @@
                                        ) + '#wikigrokversion=c';
                                        // FIXME: expose wikigrok/init.js so 
that we can just show wikigrok without reloading in such cases
                                        // force reload if page titles match
-                                       if ( M.getCurrentPage().title === 
response.query.wikigrokrandom[0].title ) {
+                                       if ( skin.getPage().title === 
response.query.wikigrokrandom[0].title ) {
                                                window.location.reload();
                                        }
                                } else {
diff --git a/javascripts/modules/wikigrok/WikiGrokDialog.js 
b/javascripts/modules/wikigrok/WikiGrokDialog.js
index fe43241..a370067 100644
--- a/javascripts/modules/wikigrok/WikiGrokDialog.js
+++ b/javascripts/modules/wikigrok/WikiGrokDialog.js
@@ -1,5 +1,6 @@
  ( function ( M, $ ) {
        var Panel = M.require( 'Panel' ),
+               skin = M.require( 'Skin' ),
                settings = M.require( 'settings' ),
                WikiGrokResponseApi = M.require( 
'modules/wikigrok/WikiGrokResponseApi' ),
                WikiDataApi = M.require( 'modules/wikigrok/WikiDataApi' ),
@@ -283,7 +284,8 @@
                                        settings.get( 
'pagesWithWikiGrokContributions', false ) || '{}'
                                );
 
-                       pages[M.getCurrentPage().title] = true;
+                       // FIXME: page should be derived from the options 
passed to the WikiGrokDialog
+                       pages[skin.getPage().title] = true;
                        settings.save( 'pagesWithWikiGrokContributions', 
JSON.stringify( pages ), false );
                },
 
diff --git a/javascripts/modules/wikigrok/init.js 
b/javascripts/modules/wikigrok/init.js
index ac126c0..4a8807d 100644
--- a/javascripts/modules/wikigrok/init.js
+++ b/javascripts/modules/wikigrok/init.js
@@ -1,6 +1,8 @@
 // Determine whether or not it is appropriate to load WikiGrok, and if so, 
load it.
 ( function ( M, $ ) {
        var wikidataID = mw.config.get( 'wgWikibaseItemId' ),
+               skin = M.require( 'Skin' ),
+               page = skin.getPage(),
                util = M.require( 'util' ),
                Schema = M.require( 'Schema' ),
                errorSchema = new Schema( {}, 'MobileWebWikiGrokError' ),
@@ -46,7 +48,7 @@
                        ),
                        result = false;
 
-               if ( M.getCurrentPage().title in pages ) {
+               if ( page.title in pages ) {
                        result = true;
                }
                return result;
@@ -136,7 +138,6 @@
                // Load the required module and view based on the version for 
the user
                mw.loader.using( versionConfig.module ).done( function () {
                        var WikiGrokDialog = M.require( versionConfig.view ),
-                               page = M.getCurrentPage(),
                                // Initialize the dialog and insert it into the 
page (but don't display yet)
                                // The version c is a drawer and is 
automatically inserted to the page and displayed
                                dialog = new WikiGrokDialog( {
diff --git a/tests/qunit/modules/wikigrok/test_WikiGrokDialog.js 
b/tests/qunit/modules/wikigrok/test_WikiGrokDialog.js
index 13b8730..5102e2b 100644
--- a/tests/qunit/modules/wikigrok/test_WikiGrokDialog.js
+++ b/tests/qunit/modules/wikigrok/test_WikiGrokDialog.js
@@ -4,6 +4,7 @@
                WikiDataApi = M.require( 'modules/wikigrok/WikiDataApi' ),
                WikiGrokResponseApi = M.require( 
'modules/wikigrok/WikiGrokResponseApi' ),
                wikiGrokCampaigns = M.require( 
'modules/wikigrok/wikiGrokCampaigns' ),
+               skin = M.require( 'Skin' ),
                settings = M.require( 'settings'),
                campaigns = {
                        album: {
@@ -25,7 +26,7 @@
                        Q208569: 'studio album',
                        Q209939: 'live album'
                },
-               pageTitle = M.getCurrentPage().title || 'Some guy';
+               pageTitle = skin.getPage().title || 'Some guy';
 
        function getPagesWithWikiGrokContributions () {
                return $.parseJSON(

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I3bf7e222fc1653e1d8ab393862bfe7a0a71de2f7
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/MobileFrontend
Gerrit-Branch: master
Gerrit-Owner: Jdlrobson <[email protected]>

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

Reply via email to