https://www.mediawiki.org/wiki/Special:Code/MediaWiki/115438

Revision: 115438
Author:   krinkle
Date:     2012-05-26 07:14:33 +0000 (Sat, 26 May 2012)
Log Message:
-----------
Follow-up r115430

* Escape messages before inserting into the document with .html(). Not
  just for security reasons but also for good function in general. As
  otherwise special characters can cause the interface to break
  unexpectedly. For example:
  $("<div>").html( mw.msg('blabla') )
  Will unexpectedly be interpreted as HTML and create a <blabla>
  element in the DOM. Causing a blank spot in the interface instead of
  text "<blabla>" (which is better than nothing at all). Usually the
  best fix is to simply use .text() instead of .html(), but since one of
  the msg parameters here is an <img>, instead escaping the other
  parameters.

* Fix typo in .i18n.php: 'uknown' -> 'unknown'.
  This caused the following in the front-end:
  "&lt;onlinestatusbar-status-unknown&gt;",
  because the module and js code didn't have the typo.

* Fix using global variables mw and $ (aliasing from mediaWiki and
  jQuery instead). r115430 changed $() to jQuery(), but left inner code
  still referring to the
  $ global. Could be fixed by using jQuery(function ($) {}); (so that
  no additional closure is needed). But since mediaWiki>mw should be
  aliases as well, created a closure instead.

* Using .done() on the jqXHR (which inherits from $.Deferred) in
  $.ajax.
  The success/error/complete properties have been deprecated in favor
  of Deferred methods done(), fail() and always(). (the old AJAX
  properties are now aliases to these as of jQuery 1.7).

* Server can give status "online", "offline", "busy", "away"
  and "unknown". However front-end had no handling for "unknown".
  This caused a 404 error:
  GET /mw/extensions/OnlineStatusBar/resources/images/undefined 404
  Added a statusgrey.png for it.
  Also added basic future proof check, never insert a 404 error.

* Moved addModules() call to where the html is added. No need to load
  this module on all pages unconditionally.

* Don't use setInterval for asynchronous and/or potentially
  long-running functions.
  Instead call it once and schedule again from a callback. Otherwise
  internet problems or slow connections can cause a long list of pending
  requests to build up. Done by using the always() callback (which fires
  both if the deferred is done or failed), and calling setTimeout
  (instead of setInterval) from there.

* Fix indention level of javascript code.

* Using Title case in ExtensionCredits name (like the rest of the code
  and documentation)

* Removed unused $wgOnlineStatusBarIcon configuration variable

* Removed unused $iconbar variable in JS.

* The HTML template inserted from PHP contained the (invisible)
  <div class="onlinestatusbaricon"></div>
  structure. I removed this since by default (no javascript) it is
  invisible, and the javascript replaces the html of the parent of this
  (thereby removing the element). So it wasn't used for anything at all.
  Removed then unused css as well.

* Skin style fixes:
 - standard: Using em instead of px, to match skin margin (it was slightly 
hangout
     outside the border in Chrome)
 - monobook: Remove negative top margin. overlapped sitenotice if there is
     a sitenotice. add 1em margin right. To match #content padding
 - simple: Set 1em margin right. To match #content padding
 - vector: Remove negative top margin. overlapped sitenotice if there is
     a sitenotice.
 
* I'm not sure what the class "metadata" is for, but left it as it is. Although
  it appears to be unused in the extension. Not used in core mediawiki either.

Modified Paths:
--------------
    trunk/extensions/OnlineStatusBar/OnlineStatusBar.api.php
    trunk/extensions/OnlineStatusBar/OnlineStatusBar.body.php
    trunk/extensions/OnlineStatusBar/OnlineStatusBar.hooks.php
    trunk/extensions/OnlineStatusBar/OnlineStatusBar.i18n.php
    trunk/extensions/OnlineStatusBar/OnlineStatusBar.php
    trunk/extensions/OnlineStatusBar/resources/OnlineStatusBar.css
    trunk/extensions/OnlineStatusBar/resources/OnlineStatusBarChick.css
    trunk/extensions/OnlineStatusBar/resources/OnlineStatusBarCologneBlue.css
    trunk/extensions/OnlineStatusBar/resources/OnlineStatusBarDefault.css
    trunk/extensions/OnlineStatusBar/resources/OnlineStatusBarModern.css
    trunk/extensions/OnlineStatusBar/resources/OnlineStatusBarMonobook.css
    trunk/extensions/OnlineStatusBar/resources/OnlineStatusBarNostalgia.css
    trunk/extensions/OnlineStatusBar/resources/OnlineStatusBarSimple.css
    trunk/extensions/OnlineStatusBar/resources/OnlineStatusBarStandard.css
    trunk/extensions/OnlineStatusBar/resources/OnlineStatusBarVector.css
    trunk/extensions/OnlineStatusBar/resources/ext.onlinestatusbar.js

Added Paths:
-----------
    trunk/extensions/OnlineStatusBar/resources/images/statusgrey.png

Modified: trunk/extensions/OnlineStatusBar/OnlineStatusBar.api.php
===================================================================
--- trunk/extensions/OnlineStatusBar/OnlineStatusBar.api.php    2012-05-25 
20:22:40 UTC (rev 115437)
+++ trunk/extensions/OnlineStatusBar/OnlineStatusBar.api.php    2012-05-26 
07:14:33 UTC (rev 115438)
@@ -31,7 +31,7 @@
        }
 
        public function getAllowedParams() {
-       // params
+               // params
                return array(
                        'user' => array (
                                        ApiBase::PARAM_TYPE => 'string',

Modified: trunk/extensions/OnlineStatusBar/OnlineStatusBar.body.php
===================================================================
--- trunk/extensions/OnlineStatusBar/OnlineStatusBar.body.php   2012-05-25 
20:22:40 UTC (rev 115437)
+++ trunk/extensions/OnlineStatusBar/OnlineStatusBar.body.php   2012-05-26 
07:14:33 UTC (rev 115438)
@@ -16,9 +16,7 @@
         * return HTML
         **/
        public static function getStatusBarHtml() {
-               return '<div class="onlinestatusbarbody metadata 
onlinestatusbartop" id="status-top">
-<div class="onlinestatusbaricon">
-</div></div>';
+               return '<div class="onlinestatusbar-pagetop 
onlinestatusbar-field metadata"></div>';
        }
 
        /**

Modified: trunk/extensions/OnlineStatusBar/OnlineStatusBar.hooks.php
===================================================================
--- trunk/extensions/OnlineStatusBar/OnlineStatusBar.hooks.php  2012-05-25 
20:22:40 UTC (rev 115437)
+++ trunk/extensions/OnlineStatusBar/OnlineStatusBar.hooks.php  2012-05-26 
07:14:33 UTC (rev 115438)
@@ -93,6 +93,7 @@
                }
                $context = $article->getContext();
                $context->getOutput()->addHtml( 
OnlineStatusBar::getStatusBarHtml() );
+               $context->getOutput()->addModules( 'ext.OnlineStatusBar' );
 
                return true;
        }
@@ -166,16 +167,6 @@
        }
 
        /**
-        * @param $out OutputPage
-        * @param $skin Skin
-        * @return bool
-        */
-       public static function stylePage( &$out, &$skin ) {
-               $out->addModules( 'ext.OnlineStatusBar' );
-               return true;
-       }
-
-       /**
         * @param $vars array
         * @return bool
         */

Modified: trunk/extensions/OnlineStatusBar/OnlineStatusBar.i18n.php
===================================================================
--- trunk/extensions/OnlineStatusBar/OnlineStatusBar.i18n.php   2012-05-25 
20:22:40 UTC (rev 115437)
+++ trunk/extensions/OnlineStatusBar/OnlineStatusBar.i18n.php   2012-05-26 
07:14:33 UTC (rev 115438)
@@ -32,11 +32,11 @@
        'prefs-onlinestatus' => 'Online status',
        // Message in config
        'onlinestatusbar-hide' => 'Hide the status bar on user pages in order 
to use just the magic word (For advanced users)',
-       'onlinestatusbar-status-online' => 'on-line',
+       'onlinestatusbar-status-online' => 'online',
        'onlinestatusbar-status-busy' => 'busy',
        'onlinestatusbar-status-away' => 'away',
        'onlinestatusbar-status-offline' => 'offline',
-       'onlinestatusbar-status-uknown' => 'status is unknown',
+       'onlinestatusbar-status-unknown' => 'status is unknown',
        'onlinestatusbar-status-hidden' => 'hidden',
 );
 
@@ -64,7 +64,7 @@
        'onlinestatusbar-status-hidden' => 'Status for users who mark 
themselves as hidden (used on preferences only)',
 );
 
-/** Belarusian (Taraškievica orthography) (‪Беларуская (тарашкевіца)‬)
+/** Belarusian (Taraškievica orthography) (Беларуская (тарашкевіца))
  * @author Wizardist
  */
 $messages['be-tarask'] = array(
@@ -112,7 +112,7 @@
        'onlinestatusbar-status-hidden' => 'Versteckt',
 );
 
-/** German (formal address) (‪Deutsch (Sie-Form)‬)
+/** German (formal address) (Deutsch (Sie-Form))
  * @author Kghbln
  */
 $messages['de-formal'] = array(

Modified: trunk/extensions/OnlineStatusBar/OnlineStatusBar.php
===================================================================
--- trunk/extensions/OnlineStatusBar/OnlineStatusBar.php        2012-05-25 
20:22:40 UTC (rev 115437)
+++ trunk/extensions/OnlineStatusBar/OnlineStatusBar.php        2012-05-26 
07:14:33 UTC (rev 115438)
@@ -16,7 +16,7 @@
 
 $wgExtensionCredits['other'][] = array(
        'path' => __FILE__,
-       'name' => 'Online status bar',
+       'name' => 'Online Status Bar',
        'version' => '1.1.0',
        'author' => array( 'Petr Bena' ),
        'descriptionmsg' => 'onlinestatusbar-desc',
@@ -28,6 +28,7 @@
 $wgExtensionMessagesFiles['OnlineStatusBarMagic'] = 
"$dir/OnlineStatusBar.i18n.magic.php";
 
 $wgResourceModules['ext.OnlineStatusBar'] = array(
+       'styles' => 'resources/OnlineStatusBar.css',
        'skinStyles' => array(
                'default' => array( 'resources/OnlineStatusBarDefault.css' ),
                'chick' => array( 'resources/OnlineStatusBarChick.css' ),
@@ -39,18 +40,20 @@
                'cologneblue' => array( 
'resources/OnlineStatusBarCologneBlue.css' ),
                'nostalgia' => array( 'resources/OnlineStatusBarNostalgia.css' 
),
        ),
-       'styles' => 'resources/OnlineStatusBar.css',
        'scripts' => 'resources/ext.onlinestatusbar.js',
-       'localBasePath' => dirname ( __FILE__ ),
-       'remoteExtPath' => 'OnlineStatusBar',
+       'dependencies' => array(
+               'mediawiki.util',
+       ),
        'messages' => array(
                'onlinestatusbar-status-offline',
                'onlinestatusbar-status-online',
                'onlinestatusbar-status-unknown',
                'onlinestatusbar-status-busy',
                'onlinestatusbar-status-away',
-               'onlinestatusbar-line'
+               'onlinestatusbar-line',
        ),
+       'localBasePath' => dirname( __FILE__ ),
+       'remoteExtPath' => 'OnlineStatusBar',
 );
 
 // Load other files of extension
@@ -93,14 +96,6 @@
        'away' => 10,
        'offline' => 60,
 );
-// Icons
-$wgOnlineStatusBarIcon = array(
-       'online' => 'statusgreen.png',
-       'busy' => 'statusorange.png',
-       'away' => 'statusorange.png',
-       'hidden' => 'statusred.png',
-       'offline' => 'statusred.png',
-);
 
 $wgHooks['LoadExtensionSchemaUpdates'][] = 'OnlineStatusBarHooks::ckSchema';
 $wgHooks['UserLogout'][] = 'OnlineStatusBarHooks::logout';
@@ -108,6 +103,5 @@
 $wgHooks['UserLoginComplete'][] = 'OnlineStatusBarHooks::updateStatus';
 $wgHooks['GetPreferences'][] = 'OnlineStatusBarHooks::preferencesHook';
 $wgHooks['UserGetDefaultOptions'][] = 
'OnlineStatusBarHooks::setDefaultOptions';
-$wgHooks['BeforePageDisplay'][] = 'OnlineStatusBarHooks::stylePage';
 $wgHooks['MagicWordwgVariableIDs'][] = 'OnlineStatusBarHooks::magicWordSet';
 $wgHooks['ParserGetVariableValueSwitch'][] = 
'OnlineStatusBarHooks::parserGetVariable';

Modified: trunk/extensions/OnlineStatusBar/resources/OnlineStatusBar.css
===================================================================
--- trunk/extensions/OnlineStatusBar/resources/OnlineStatusBar.css      
2012-05-25 20:22:40 UTC (rev 115437)
+++ trunk/extensions/OnlineStatusBar/resources/OnlineStatusBar.css      
2012-05-26 07:14:33 UTC (rev 115438)
@@ -1,15 +1,6 @@
 /* OnlineStatusBar Styles for all skins */
 
-.onlinestatusbartop {
+.onlinestatusbar-pagetop {
        position: absolute;
        display: block;
 }
-
-.onlinestatusbaricon {
-       border: 0 solid black;
-       background: transparent;
-       float: right;
-       position: relative;
-       top: 0;
-       padding: 5px;
-}

Modified: trunk/extensions/OnlineStatusBar/resources/OnlineStatusBarChick.css
===================================================================
--- trunk/extensions/OnlineStatusBar/resources/OnlineStatusBarChick.css 
2012-05-25 20:22:40 UTC (rev 115437)
+++ trunk/extensions/OnlineStatusBar/resources/OnlineStatusBarChick.css 
2012-05-26 07:14:33 UTC (rev 115438)
@@ -1,11 +1,8 @@
 /* OnlineStatusBar Styles for Chick */
 
-.onlinestatusbartop {
+.onlinestatusbar-pagetop {
        top: 32px;
-       margin-right: 4px;
-}
-
-.onlinestatusbarbody {
        right: 0;
        margin-top: 0;
+       margin-right: 4px;
 }

Modified: 
trunk/extensions/OnlineStatusBar/resources/OnlineStatusBarCologneBlue.css
===================================================================
--- trunk/extensions/OnlineStatusBar/resources/OnlineStatusBarCologneBlue.css   
2012-05-25 20:22:40 UTC (rev 115437)
+++ trunk/extensions/OnlineStatusBar/resources/OnlineStatusBarCologneBlue.css   
2012-05-26 07:14:33 UTC (rev 115438)
@@ -1,12 +1,9 @@
 /* OnlineStatusBar Styles for CologneBlue */
 
-.onlinestatusbartop {
-       top: 122px;
-       margin-right: 10px;
-}
-
-.onlinestatusbarbody {
+.onlinestatusbar-pagetop {
        position: absolute;
+       top: 122px;
        right: 0;
        margin-top: 0;
+       margin-right: 10px;
 }

Modified: trunk/extensions/OnlineStatusBar/resources/OnlineStatusBarDefault.css
===================================================================
--- trunk/extensions/OnlineStatusBar/resources/OnlineStatusBarDefault.css       
2012-05-25 20:22:40 UTC (rev 115437)
+++ trunk/extensions/OnlineStatusBar/resources/OnlineStatusBarDefault.css       
2012-05-26 07:14:33 UTC (rev 115438)
@@ -1,11 +1,8 @@
 /* OnlineStatusBar Styles for other skins */
 
-.onlinestatusbartop {
+.onlinestatusbar-pagetop {
        top: 2em;
-       margin-right: 0;
-}
-
-.onlinestatusbarbody {
        right: 0;
        margin-top: 0;
+       margin-right: 0;
 }

Modified: trunk/extensions/OnlineStatusBar/resources/OnlineStatusBarModern.css
===================================================================
--- trunk/extensions/OnlineStatusBar/resources/OnlineStatusBarModern.css        
2012-05-25 20:22:40 UTC (rev 115437)
+++ trunk/extensions/OnlineStatusBar/resources/OnlineStatusBarModern.css        
2012-05-26 07:14:33 UTC (rev 115438)
@@ -1,12 +1,9 @@
 /* OnlineStatusBar Styles for Modern */
 
-.onlinestatusbartop {
+.onlinestatusbar-pagetop {
        top: 6px;
+       right: 0;
+       margin-top: -3px;
        margin-right: 2px;
        color: white;
 }
-
-.onlinestatusbarbody {
-       right: 0;
-       margin-top: -3px;
-}

Modified: trunk/extensions/OnlineStatusBar/resources/OnlineStatusBarMonobook.css
===================================================================
--- trunk/extensions/OnlineStatusBar/resources/OnlineStatusBarMonobook.css      
2012-05-25 20:22:40 UTC (rev 115437)
+++ trunk/extensions/OnlineStatusBar/resources/OnlineStatusBarMonobook.css      
2012-05-26 07:14:33 UTC (rev 115438)
@@ -1,11 +1,8 @@
 /* OnlineStatusBar Styles for Monobook */
 
-.onlinestatusbartop {
+.onlinestatusbar-pagetop {
        z-index: 10;
        top: 10px;
-}
-
-.onlinestatusbarbody {
        right: 0;
-       margin-top: -2px;
+       margin-right: 1em;
 }

Modified: 
trunk/extensions/OnlineStatusBar/resources/OnlineStatusBarNostalgia.css
===================================================================
--- trunk/extensions/OnlineStatusBar/resources/OnlineStatusBarNostalgia.css     
2012-05-25 20:22:40 UTC (rev 115437)
+++ trunk/extensions/OnlineStatusBar/resources/OnlineStatusBarNostalgia.css     
2012-05-26 07:14:33 UTC (rev 115438)
@@ -1,11 +1,8 @@
 /* OnlineStatusBar Styles for Nostalgia */
 
-.onlinestatusbartop {
+.onlinestatusbar-pagetop {
        top: 18px;
-       margin-right: 261px;
-}
-
-.onlinestatusbarbody {
        right: 0;
        margin-top: 0;
+       margin-right: 261px;
 }

Modified: trunk/extensions/OnlineStatusBar/resources/OnlineStatusBarSimple.css
===================================================================
--- trunk/extensions/OnlineStatusBar/resources/OnlineStatusBarSimple.css        
2012-05-25 20:22:40 UTC (rev 115437)
+++ trunk/extensions/OnlineStatusBar/resources/OnlineStatusBarSimple.css        
2012-05-26 07:14:33 UTC (rev 115438)
@@ -1,11 +1,8 @@
 /* OnlineStatusBar Styles for Simple */
 
-.onlinestatusbartop {
+.onlinestatusbar-pagetop {
        top: 0;
-       margin-right: 2px;
-}
-
-.onlinestatusbarbody {
        right: 0;
-       margin-top: 2px;
+       margin-top: 1em;
+       margin-right: 1em;
 }

Modified: trunk/extensions/OnlineStatusBar/resources/OnlineStatusBarStandard.css
===================================================================
--- trunk/extensions/OnlineStatusBar/resources/OnlineStatusBarStandard.css      
2012-05-25 20:22:40 UTC (rev 115437)
+++ trunk/extensions/OnlineStatusBar/resources/OnlineStatusBarStandard.css      
2012-05-26 07:14:33 UTC (rev 115438)
@@ -1,11 +1,8 @@
 /* OnlineStatusBar Styles for Standard */
 
-.onlinestatusbartop {
+.onlinestatusbar-pagetop {
        top: 4em;
-       margin-right: 4px;
-}
-
-.onlinestatusbarbody {
        right: 0;
-       margin-top: 6px;
+       margin-top: 0.5em;
+       margin-right: 1em;
 }

Modified: trunk/extensions/OnlineStatusBar/resources/OnlineStatusBarVector.css
===================================================================
--- trunk/extensions/OnlineStatusBar/resources/OnlineStatusBarVector.css        
2012-05-25 20:22:40 UTC (rev 115437)
+++ trunk/extensions/OnlineStatusBar/resources/OnlineStatusBarVector.css        
2012-05-26 07:14:33 UTC (rev 115438)
@@ -1,11 +1,7 @@
 /* OnlineStatusBar Styles for Vector */
 
-.onlinestatusbartop {
+.onlinestatusbar-pagetop {
        top: -2em;
+       right: 0;
        margin-right: 0;
 }
-
-.onlinestatusbarbody {
-       right: 0;
-       margin-top: -10px;
-}

Modified: trunk/extensions/OnlineStatusBar/resources/ext.onlinestatusbar.js
===================================================================
--- trunk/extensions/OnlineStatusBar/resources/ext.onlinestatusbar.js   
2012-05-25 20:22:40 UTC (rev 115437)
+++ trunk/extensions/OnlineStatusBar/resources/ext.onlinestatusbar.js   
2012-05-26 07:14:33 UTC (rev 115438)
@@ -6,54 +6,70 @@
  * @author Petr Bena
  * @author Trevor Parscal
  */
+( function ( mw, $ ) {
 
-jQuery( function() {
+       $( document ).ready( function () {
+               var $statusbarFields = $( '.onlinestatusbar-field' ),
+                       imagePath = mw.config.get( 'wgExtensionAssetsPath' ) +
+                               '/OnlineStatusBar/resources/images',
+                       statusImages = {
+                               'offline': 'statusred.png',
+                               'online': 'statusgreen.png',
+                               'away': 'statusorange.png',
+                               'busy': 'statusorange.png',
+                               'unknown': 'statusgrey.png'
+                       },
+                       apiPath = mw.util.wikiScript( 'api' ),
+                       // WARNING: This way of determining a username is 
limited to user pages and user talk pages
+                       username = mw.config.get( 'wgTitle' );
 
-var $statusbar = $( '#status-top' ),
-       $iconbar = $( '.onlinestatusbaricon' ),
-       imagePath = mw.config.get( 'wgExtensionAssetsPath' ) +
-               '/OnlineStatusBar/resources/images/status',
-       statusImages = {
-               'offline': imagePath + 'red.png',
-               'online': imagePath + 'green.png',
-               'away': imagePath + 'orange.png',
-               'busy': imagePath + 'orange.png'
-       },
-       apiUrl = mw.config.get( 'wgScriptPath' ) + '/api' + mw.config.get( 
'wgScriptExtension' ),
-       // WARNING: This way of determining a username is limited to user pages 
and user talk pages
-       username = mw.config.get( 'wgTitle' );
+               /**
+                * Fetch the status of the user that owns this page or talk 
page and
+                * update the status bar.
+                * @return jqXHR
+                */
+               function updateOnlineStatusBar() {
+                       return $.ajax({
+                               url: apiPath,
+                               data: {
+                                       format: 'json',
+                                       action: 'query',
+                                       prop: 'onlinestatus',
+                                       onlinestatususer: username
+                               }
+                       }).done( function ( data ) {
+                               var image, text,
+                                       status = data.onlinestatus.result;
 
-/**
- * Fetch the status of the user that owns this page or talk page and update 
the status bar.
- *
- * @function
- */
-function updateOnlineStatusBar() {
-       $.ajax( {
-               'url': apiUrl,
-               'data': {
-                       'action': 'query',
-                       'prop': 'onlinestatus',
-                       'onlinestatususer': username,
-                       'format': 'json'
-               },
-               'success': function( data ) {
-                       // Update the statusbar
-                       var status = data.onlinestatus.result,
-                               image = mw.html.element( 'img', { 'src': 
statusImages[status] } ),
+                               // Future proof: If new statuses are introduced,
+                               // gracefully degrade by showing nothing in a 
cached js state.
+                               // (otherwise it would try to insert a 404 
error to ./images/undefined)
+                               if ( statusImages[status] === undefined ) {
+                                       return;
+                               }
+
+                               image = mw.html.element( 'img', { src: 
imagePath + '/' + statusImages[status] } );
                                text = mw.msg( 'onlinestatusbar-status-' + 
status );
-                       $statusbar.html( mw.msg( 'onlinestatusbar-line', 
username, image, text ) );
+
+                               // Update the statusbar
+                               $statusbarFields.html( mw.msg(
+                                       'onlinestatusbar-line',
+                                       mw.html.escape( username ), image, 
mw.html.escape( text )
+                               ) );
+                       }).always( function () {
+                               // Whether ajax succeeded or failed, once done, 
schedule the
+                               // update (for if the user leaves the page open)
+                               setTimeout( updateOnlineStatusBar, 2 * 60 * 
1000 );
+                       });
                }
-       } );
-}
 
-// Only intialize the status bar if we are on the right page - this is 
controlled on the server side
-// so the presence of an element with #status-top is sufficient proof we are 
on the right page
-if ( $statusbar.length > 0 ) {
-       // Update the status every couple minutes if we leave the page open
-       setInterval( updateOnlineStatusBar, 120 * 1000 );
-       // Update immediately as well
-       updateOnlineStatusBar();
-}
+               // Only intialize the status bar if we are on the right page.
+               // This is controlled on the server side.
+               // Initialize if there is one or more of these body 
placeholders.
+               if ( $statusbarFields.length > 0 ) {
+                       // Update now
+                       updateOnlineStatusBar();
+               }
+       });
 
-} );
+}( mediaWiki, jQuery ) );

Added: trunk/extensions/OnlineStatusBar/resources/images/statusgrey.png
===================================================================
(Binary files differ)


Property changes on: 
trunk/extensions/OnlineStatusBar/resources/images/statusgrey.png
___________________________________________________________________
Added: svn:mime-type
   + image/png


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

Reply via email to