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