https://www.mediawiki.org/wiki/Special:Code/MediaWiki/113255
Revision: 113255
Author: netbrain
Date: 2012-03-07 17:31:59 +0000 (Wed, 07 Mar 2012)
Log Message:
-----------
did some final polishing
Modified Paths:
--------------
trunk/extensions/SideBarMenu/SideBarMenu.hooks.php
trunk/extensions/SideBarMenu/SideBarMenu.i18n.php
trunk/extensions/SideBarMenu/SideBarMenu.php
trunk/extensions/SideBarMenu/css/ext.sidebarmenu.css
trunk/extensions/SideBarMenu/js/ext.sidebarmenu.js
Modified: trunk/extensions/SideBarMenu/SideBarMenu.hooks.php
===================================================================
--- trunk/extensions/SideBarMenu/SideBarMenu.hooks.php 2012-03-07 17:31:49 UTC
(rev 113254)
+++ trunk/extensions/SideBarMenu/SideBarMenu.hooks.php 2012-03-07 17:31:59 UTC
(rev 113255)
@@ -2,23 +2,26 @@
class SideBarMenuHooks
{
-
- public static function init(&$parser){
+ public static function init(Parser &$parser){
$parser->setHook('sidebarmenu','SideBarMenuHooks::renderFromTag');
return true;
}
public static function renderFromTag( $input, array $args, Parser $parser,
PPFrame $frame ){
$parser->getOutput()->addModules('ext.sidebarmenu.core');
+
+ $output = '<div class="sidebar-menu-container">';
try{
- $menuHTML = '<div class="sidebar-menu-container">';
- $menuHTML .= MenuParser::getMenuTree($input)->toHTML();
- $menuHTML .= '</div>';
- return $parser->recursiveTagParse($menuHTML,$frame);
+ $output .= MenuParser::getMenuTree($input)->toHTML();
}catch(Exception $x){
wfDebug("An error occured during parsing of: '$input' caught
exception: $x");
return wfMsg('parser.input-error',$x->getMessage());
}
+ $output .= '</div>';
+
+ $jsOutput = self::getJSConfig($args);
+
+ return array( $jsOutput.$parser->recursiveTagParse($output,$frame),
'noparse' => true, 'isHTML' => true );
}
public static function registerUnitTests( &$files ) {
@@ -38,11 +41,40 @@
return true;
}
- public static function javascriptConfigVars(&$vars){
- global $wgSideBarMenuConfigShowHTML,$wgSideBarMenuConfigHideHTML;
- $vars['wgSideBarMenuConfigShowHTML'] =
isset($wgSideBarMenuConfigShowHTML) ? $wgSideBarMenuConfigShowHTML :
wfMsg('controls.show');
- $vars['wgSideBarMenuConfigHideHTML'] =
isset($wgSideBarMenuConfigHideHTML) ? $wgSideBarMenuConfigHideHTML :
wfMsg('controls.hide');
- return true;
+ private static function minifyJavascript(&$js)
+ {
+ $js = preg_replace("/[\n\r]/", "", $js); //remove newlines
+ $js = preg_replace("/[\s]{2,}/", " ", $js); //remove spaces
}
+ private static function getAsJSEncodedString($s)
+ {
+ return "'" . $s . "'";
+ }
+
+ private static function getJSConfig(&$args){
+ global $wgSideBarMenuConfig;
+ //default settings
+ $defaults['controls.show'] =
isset($wgSideBarMenuConfig['controls.show']) ?
$wgSideBarMenuConfig['controls.show'] : wfMsg('controls.show');
+ $defaults['controls.hide'] =
isset($wgSideBarMenuConfig['controls.hide']) ?
$wgSideBarMenuConfig['controls.hide'] : wfMsg('controls.hide');
+ $defaults['js.animate'] = $wgSideBarMenuConfig['js.animate'];
+
+ //javascript config output
+ $jsOutput = Html::inlineScript("
+ var sidebarmenu = {
+ config: {
+ controls: {
+ show: " . (array_key_exists('controls.show', $args) ?
self::getAsJSEncodedString($args['controls.show']) :
self::getAsJSEncodedString($defaults['controls.show'])) . ",
+ hide: " . (array_key_exists('controls.hide', $args) ?
self::getAsJSEncodedString($args['controls.hide']) :
self::getAsJSEncodedString($defaults['controls.hide'])) . "
+ },
+ js: {
+ animate: " . (array_key_exists('js.animate', $args) ?
is_bool($args['js.animate']) ? 'true' : 'false' : $defaults['js.animate']) . "
+ }
+ }
+ };
+ ");
+ //minify js to prevent <p> tags to be rendered
+ self::minifyJavascript($jsOutput);
+ return $jsOutput;
+ }
}
Modified: trunk/extensions/SideBarMenu/SideBarMenu.i18n.php
===================================================================
--- trunk/extensions/SideBarMenu/SideBarMenu.i18n.php 2012-03-07 17:31:49 UTC
(rev 113254)
+++ trunk/extensions/SideBarMenu/SideBarMenu.i18n.php 2012-03-07 17:31:59 UTC
(rev 113255)
@@ -4,5 +4,6 @@
'controls.show' => '[show]',
'controls.hide' => '[hide]',
'parser.input-error' => 'FATAL ERROR: parser returned with error: $1',
- 'parser.syntax-error' => 'Could not parse "$1", make sure the syntax is
correct.'
+ 'parser.syntax-error' => 'Could not parse "$1", make sure the syntax is
correct.',
+ 'js.init-error' => 'Error loading javascript resources'
);
\ No newline at end of file
Modified: trunk/extensions/SideBarMenu/SideBarMenu.php
===================================================================
--- trunk/extensions/SideBarMenu/SideBarMenu.php 2012-03-07 17:31:49 UTC
(rev 113254)
+++ trunk/extensions/SideBarMenu/SideBarMenu.php 2012-03-07 17:31:59 UTC
(rev 113255)
@@ -20,9 +20,6 @@
// Specify the function that will register the magic words for the parser
function.
$wgHooks['LanguageGetMagic'][] = 'SideBarMenuHooks::registerMagicWords';
-// Javascript variables
-$wgHooks['ResourceLoaderGetConfigVars'][] =
'SideBarMenuHooks::javascriptConfigVars';
-
// Sepcify phpunit tests
$wgHooks['UnitTestsList'][] = 'SideBarMenuHooks::registerUnitTests';
@@ -51,11 +48,15 @@
'jquery.effects.core',
),
+ 'messages' => array(
+ 'js.init-error'
+ ),
'group' => 'ext.sidebarmenu',
'localBasePath' => dirname( __FILE__ ),
'remoteExtPath' => 'SideBarMenu'
);
//default settings
-$wgSideBarMenuConfigShowHTML = null;
-$wgSideBarMenuConfigHideHTML = null;
\ No newline at end of file
+$wgSideBarMenuConfig['controls.show'] = null;
+$wgSideBarMenuConfig['controls.hide']= null;
+$wgSideBarMenuConfig['js.animate'] = true;
\ No newline at end of file
Modified: trunk/extensions/SideBarMenu/css/ext.sidebarmenu.css
===================================================================
--- trunk/extensions/SideBarMenu/css/ext.sidebarmenu.css 2012-03-07
17:31:49 UTC (rev 113254)
+++ trunk/extensions/SideBarMenu/css/ext.sidebarmenu.css 2012-03-07
17:31:59 UTC (rev 113255)
@@ -11,7 +11,7 @@
display: none;
}
.sidebar-menu-item-expanded {
- display: block;
+ display: list-item;
}
.sidebar-menu-0,.sidebar-menu-1{
Modified: trunk/extensions/SideBarMenu/js/ext.sidebarmenu.js
===================================================================
--- trunk/extensions/SideBarMenu/js/ext.sidebarmenu.js 2012-03-07 17:31:49 UTC
(rev 113254)
+++ trunk/extensions/SideBarMenu/js/ext.sidebarmenu.js 2012-03-07 17:31:59 UTC
(rev 113255)
@@ -1,30 +1,37 @@
$(document).ready(function(){
+ if(sidebarmenu != undefined){
+ var showText = sidebarmenu.config.controls.show;
+ var hideText = sidebarmenu.config.controls.hide;
+ var useAnimations = sidebarmenu.config.js.animate;
- var showText = mw.config.get('wgSideBarMenuConfigShowHTML');
- var hideText = mw.config.get('wgSideBarMenuConfigHideHTML');
+ function initControls() {
+
$('.sidebar-menu-item-collapsed').children('.sidebar-menu-item-text-container').children('.sidebar-menu-item-controls').append(showText);
+
$('.sidebar-menu-item-expanded').children('.sidebar-menu-item-text-container').children('.sidebar-menu-item-controls').append(hideText);
+ }
- function initControls() {
-
$('.sidebar-menu-item-collapsed').children('.sidebar-menu-item-text-container').children('.sidebar-menu-item-controls').append(showText);
-
$('.sidebar-menu-item-expanded').children('.sidebar-menu-item-text-container').children('.sidebar-menu-item-controls').append(hideText);
- }
+ initControls();
+ $('.sidebar-menu-item-controls').click(function(){
+ var currentText = $(this).text();
- initControls();
- $('.sidebar-menu-item-controls').click(function(){
- var currentText = $(this).text();
+ if(currentText == showText){
+ $(this).text(hideText);
+ }else if(currentText == hideText){
+ $(this).text(showText);
+ }
- if(currentText == showText){
- $(this).text(hideText);
- }else if(currentText == hideText){
- $(this).text(showText);
- }
-
- //A little "ugly" hack to prevent some gui glitches.
- $(this).parents('.sidebar-menu-item:first').
- toggleClass('sidebar-menu-item-collapsed
sidebar-menu-item-expanded',250).children('.sidebar-menu').show(0,function(){
- var _this = $(this);
- setTimeout(function(){
- _this.css('display','')
- },250);
- });
- });
+ if(useAnimations){
+ //A little "ugly" hack to prevent some gui glitches.
+
$(this).parents('.sidebar-menu-item:first').toggleClass('sidebar-menu-item-collapsed
sidebar-menu-item-expanded',250).children('.sidebar-menu').show(0,function(){
+ var _this = $(this);
+ setTimeout(function(){
+ _this.css('display','')
+ },250);
+ });
+ }else{
+
$(this).parents('.sidebar-menu-item:first').toggleClass('sidebar-menu-item-collapsed
sidebar-menu-item-expanded');
+ }
+ });
+ }else{
+ $('.sidebar-menu-container').prepend(mw.msg('js.init-error'));
+ }
});
\ No newline at end of file
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs