JGonera has uploaded a new change for review.

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


Change subject: Introduce header-loaded event
......................................................................

Introduce header-loaded event

Use it to bind the left nav opening JS as soon as possible. In future
can be also used for binding search earlier.

Change-Id: I0955a418068123634d5d067bc3ddbcfccb33291a
---
M includes/Resources.php
M includes/skins/MinervaTemplate.php
M javascripts/common/application.js
M javascripts/common/eventemitter.js
M javascripts/common/navigation.js
5 files changed, 23 insertions(+), 25 deletions(-)


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

diff --git a/includes/Resources.php b/includes/Resources.php
index e80141f..c2fd164 100644
--- a/includes/Resources.php
+++ b/includes/Resources.php
@@ -131,6 +131,8 @@
                'scripts' => array(
                        'javascripts/common/polyfills.js',
                        'javascripts/common/modules.js',
+                       'javascripts/common/Class.js',
+                       'javascripts/common/eventemitter.js',
                        'javascripts/common/navigation.js',
                ),
                'position' => 'top',
@@ -142,8 +144,6 @@
                ),
                'scripts' => array(
                        'javascripts/externals/hogan.js',
-                       'javascripts/common/Class.js',
-                       'javascripts/common/eventemitter.js',
                        'javascripts/common/Router.js',
                        'javascripts/common/api.js',
                        'javascripts/common/PageApi.js',
diff --git a/includes/skins/MinervaTemplate.php 
b/includes/skins/MinervaTemplate.php
index 466d706..ce3b9dd 100644
--- a/includes/skins/MinervaTemplate.php
+++ b/includes/skins/MinervaTemplate.php
@@ -193,6 +193,9 @@
                                                echo $data['userButton'];
                                        ?>
                                </div>
+                               <script>
+                                       mw.mobileFrontend.emit( 'header-loaded' 
);
+                               </script>
                                <?php
                                        $this->renderContentWrapper( $data );
                                        $this->renderFooter( $data );
diff --git a/javascripts/common/application.js 
b/javascripts/common/application.js
index d31c2f4..4a13940 100644
--- a/javascripts/common/application.js
+++ b/javascripts/common/application.js
@@ -1,29 +1,11 @@
 // FIXME: make this an object with a constructor to facilitate testing
 // (see https://bugzilla.wikimedia.org/show_bug.cgi?id=44264)
 ( function( M, $ ) {
-       var EventEmitter = M.require( 'eventemitter' ),
-               Router = M.require( 'Router' ),
+       var Router = M.require( 'Router' ),
                PageApi = M.require( 'PageApi' ),
-               // FIXME: when mobileFrontend is an object with a constructor,
-               // just inherit from EventEmitter instead
-               eventEmitter = new EventEmitter(),
                $viewportMeta, viewport,
                template,
                templates = {};
-
-       /**
-        * See EventEmitter#on.
-        */
-       function on(/* event, callback */ ) {
-               return eventEmitter.on.apply( eventEmitter, arguments );
-       }
-
-       /**
-        * See EventEmitter#emit.
-        */
-       function emit(/* event, arg1, arg2, ... */ ) {
-               return eventEmitter.emit.apply( eventEmitter, arguments );
-       }
 
        template = {
                /**
@@ -273,14 +255,12 @@
 
        $.extend( M, {
                init: init,
-               emit: emit,
                jQuery: typeof jQuery  !== 'undefined' ? jQuery : false,
                getOrigin: getOrigin,
                getSessionId: getSessionId,
                isLoggedIn: isLoggedIn,
                lockViewport: lockViewport,
                log: log,
-               on: on,
                supportsGeoLocation: supportsGeoLocation,
                supportsPositionFixed: supportsPositionFixed,
                prettyEncodeTitle: prettyEncodeTitle,
diff --git a/javascripts/common/eventemitter.js 
b/javascripts/common/eventemitter.js
index 4a6afd7..e8bfe44 100644
--- a/javascripts/common/eventemitter.js
+++ b/javascripts/common/eventemitter.js
@@ -49,5 +49,8 @@
        } );
 
        M.define( 'eventemitter', EventEmitter );
+       // FIXME: if we want more of M's functionality in loaded in <head>,
+       // move this to a separate file
+       $.extend( M, new EventEmitter() );
 
 }( mw.mobileFrontend, jQuery ) );
diff --git a/javascripts/common/navigation.js b/javascripts/common/navigation.js
index 37fd17e..d20a359 100644
--- a/javascripts/common/navigation.js
+++ b/javascripts/common/navigation.js
@@ -3,6 +3,8 @@
 var m = ( function( $ ) {
        var
                menu,
+               // FIXME: remove when header-loaded is in all cached pages
+               initialized = false,
                inAlpha = mw.config.get( 'wgMFMode' ) === 'alpha',
                inBeta = mw.config.get( 'wgMFMode' ) === 'beta';
 
@@ -14,10 +16,16 @@
                $( 'body' ).removeClass( 'navigation-enabled' );
        }
 
-       $( function() {
+       function initialize() {
                var
                        moved = false,
                        search = document.getElementById(  'searchInput' );
+
+               // FIXME: remove when header-loaded is in all cached pages
+               if ( initialized ) {
+                       return;
+               }
+               initialized = true;
 
                $( '#mw-mf-page-left a' ).click( function() {
                        toggleNavigation(); // close before following link so 
that certain browsers on back don't show menu open
@@ -78,7 +86,11 @@
                                closeNavigation();
                        }
                } );
-       } );
+       }
+
+       M.on( 'header-loaded', initialize );
+       // FIXME: remove when header-loaded is in all cached pages
+       $( initialize );
 
        menu = {
                close: closeNavigation,

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I0955a418068123634d5d067bc3ddbcfccb33291a
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/MobileFrontend
Gerrit-Branch: master
Gerrit-Owner: JGonera <jgon...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to