https://www.mediawiki.org/wiki/Special:Code/MediaWiki/113253
Revision: 113253
Author: netbrain
Date: 2012-03-07 17:31:39 +0000 (Wed, 07 Mar 2012)
Log Message:
-----------
added a default visual style to extension.
added javascript logic.
moved hooks into a separate file
Modified Paths:
--------------
trunk/extensions/SideBarMenu/SideBarMenu.php
trunk/extensions/SideBarMenu/includes/MenuItem.php
Added Paths:
-----------
trunk/extensions/SideBarMenu/SideBarMenu.hooks.php
trunk/extensions/SideBarMenu/css/
trunk/extensions/SideBarMenu/css/ext.sidebarmenu.css
trunk/extensions/SideBarMenu/js/
trunk/extensions/SideBarMenu/js/ext.sidebarmenu.js
Added: trunk/extensions/SideBarMenu/SideBarMenu.hooks.php
===================================================================
--- trunk/extensions/SideBarMenu/SideBarMenu.hooks.php
(rev 0)
+++ trunk/extensions/SideBarMenu/SideBarMenu.hooks.php 2012-03-07 17:31:39 UTC
(rev 113253)
@@ -0,0 +1,48 @@
+<?php
+
+class SideBarMenuHooks
+{
+
+ public static function init(&$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');
+ try{
+ $menuHTML = '<div class="sidebar-menu-container">';
+ $menuHTML .= MenuParser::getMenuTree($input)->toHTML();
+ $menuHTML .= '</div>';
+ return $parser->recursiveTagParse($menuHTML,$frame);
+ }catch(Exception $x){
+ wfDebug("An error occured during parsing of: '$input' caught
exception: $x");
+ return "FATAL ERROR: Could not parse the following
input:</br><pre>$input</pre>";
+ }
+ }
+
+ public static function registerUnitTests( &$files ) {
+ $testDir = dirname( __FILE__ ) . '/test/';
+ $testFiles = scandir($testDir);
+ foreach($testFiles as $testFile){
+ $absoluteFile = $testDir . $testFile;
+ if(is_file($absoluteFile)){
+ $files[] = $absoluteFile;
+ }
+ }
+ return true;
+ }
+
+ public static function registerMagicWords(&$magicWords, $langCode){
+ $magicWords['sidebarmenu'] = array(0,'sidebarmenu');
+ return true;
+ }
+
+ public static function javascriptConfigVars(&$vars){
+ global $wgSideBarMenuConfigShowHTML,$wgSideBarMenuConfigHideHTML;
+ $vars['wgSideBarMenuConfigShowHTML'] = $wgSideBarMenuConfigShowHTML;
+ $vars['wgSideBarMenuConfigHideHTML'] = $wgSideBarMenuConfigHideHTML;
+ return true;
+ }
+
+}
Modified: trunk/extensions/SideBarMenu/SideBarMenu.php
===================================================================
--- trunk/extensions/SideBarMenu/SideBarMenu.php 2012-03-07 17:31:29 UTC
(rev 113252)
+++ trunk/extensions/SideBarMenu/SideBarMenu.php 2012-03-07 17:31:39 UTC
(rev 113253)
@@ -15,49 +15,42 @@
// Specify the function that will initialize the parser function.
-$wgHooks['ParserFirstCallInit'][] = 'init';
+$wgHooks['ParserFirstCallInit'][] = 'SideBarMenuHooks::init';
// Specify the function that will register the magic words for the parser
function.
-$wgHooks['LanguageGetMagic'][] = 'registerMagicWords';
+$wgHooks['LanguageGetMagic'][] = 'SideBarMenuHooks::registerMagicWords';
+// Javascript variables
+$wgHooks['ResourceLoaderGetConfigVars'][] =
'SideBarMenuHooks::javascriptConfigVars';
+
// Sepcify phpunit tests
-$wgHooks['UnitTestsList'][] = 'registerUnitTests';
+$wgHooks['UnitTestsList'][] = 'SideBarMenuHooks::registerUnitTests';
-//Autoload
+//Autoload hooks
+$wgAutoloadClasses['SideBarMenuHooks'] = dirname( __FILE__ ) .
'/SideBarMenu.hooks.php';
+
+//Autoload classes
$wgMyExtensionIncludes = dirname(__FILE__) . '/includes';
## Special page class
$wgAutoloadClasses['MenuParser'] = $wgMyExtensionIncludes . '/MenuParser.php';
$wgAutoloadClasses['MenuItem'] = $wgMyExtensionIncludes . '/MenuItem.php';
+//Resources
+$wgResourceModules['ext.sidebarmenu.core'] = array(
+ 'scripts' => array(
+ 'js/ext.sidebarmenu.js'
+ ),
+ 'styles' => array(
+ 'css/ext.sidebarmenu.css'
+ ),
+ 'dependencies' => array (
+ 'jquery.ui.core'
+ ),
+ 'group' => 'ext.sidebarmenu',
+ 'localBasePath' => dirname( __FILE__ ),
+ 'remoteExtPath' => 'SideBarMenu'
+);
-function init(&$parser){
- $parser->setHook('sidebarmenu','renderFromTag');
- return true;
-}
-
-function registerMagicWords(&$magicWords, $langCode){
- $magicWords['sidebarmenu'] = array(0,'sidebarmenu');
- return true;
-}
-
-function renderFromTag( $input, array $args, Parser $parser, PPFrame $frame ){
- try{
- $menuHTML = MenuParser::getMenuTree($input)->toHTML();
- return $parser->recursiveTagParse($menuHTML,$frame);
- }catch(Exception $x){
- wfDebug("An error occured during parsing of: '$input' caught
exception: $x");
- return "FATAL ERROR: Could not parse the following
input:</br><pre>$input</pre>";
- }
-}
-
-function registerUnitTests( &$files ) {
- $testDir = dirname( __FILE__ ) . '/test/';
- $testFiles = scandir($testDir);
- foreach($testFiles as $testFile){
- $absoluteFile = $testDir . $testFile;
- if(is_file($absoluteFile)){
- $files[] = $absoluteFile;
- }
- }
- return true;
-}
+//default settings
+$wgSideBarMenuConfigShowHTML = '[show]';
+$wgSideBarMenuConfigHideHTML = '[hide]';
\ No newline at end of file
Added: trunk/extensions/SideBarMenu/css/ext.sidebarmenu.css
===================================================================
--- trunk/extensions/SideBarMenu/css/ext.sidebarmenu.css
(rev 0)
+++ trunk/extensions/SideBarMenu/css/ext.sidebarmenu.css 2012-03-07
17:31:39 UTC (rev 113253)
@@ -0,0 +1,53 @@
+/* default SideBarMenu extension styling */
+
+.sidebar-menu-container{
+ padding: 5px;
+ float: left;
+ clear: left;
+}
+
+.sidebar-menu-item-collapsed .sidebar-menu{
+ display: none;
+}
+
+.sidebar-menu-0,.sidebar-menu-1{
+ margin: 0px !important;
+ padding: 0px !important;
+ list-style: none;
+}
+
+
+.sidebar-menu-item-1{
+ margin: 10px 0px;
+ background-color: #f2f2f2;
+}
+
+.sidebar-menu-item-1 > .sidebar-menu-item-text-container{
+ border: 1px solid #aaa;
+ border-bottom: 0px;
+ padding: 3px;
+}
+
+.sidebar-menu-item-2{
+ background-color: #f9f9f9;
+ border: 1px solid #aaa;
+ border-bottom: 0px;
+ padding: 3px !important;
+ margin-bottom: 0px !important;
+}
+
+.sidebar-menu-item-text-container{
+ position: relative;
+}
+
+.sidebar-menu-item-controls{
+ float: right;
+ margin-left: 5px;
+ color: #0645AD;
+ cursor: pointer;
+}
+
+.sidebar-menu-item-1{
+ border-bottom: 1px solid #aaa;
+}
+
Property changes on: trunk/extensions/SideBarMenu/css/ext.sidebarmenu.css
___________________________________________________________________
Added: svn:eol-style
+ native *.eot = svn:mime-type=application/vnd.ms-fontobject *.gif =
svn:mime-type=image/gif *.ico = svn:mime-type=image/vnd.microsoft.icon *.inc =
svn:eol-style=native *.info = svn:eol-style=native
*.install=svn:eol-style=native *.java = svn:eol-style=native *.jpeg =
svn:mime-type=image/jpeg *.jpg = svn:mime-type=image/jpeg *.js =
svn:eol-style=native *.jsp = svn:eol-style=native *.module =
svn:eol-style=native *.php5 = svn:eol-style=native *.php = svn:eol-style=native
*.pl = svn:eol-style=native *.pm = svn:eol-style=native *.png =
svn:mime-type=image/png *.py = svn:eol-style=native *.sh = svn:eol-style=native
*.sql = svn:eol-style=native *.svg = svn:mime-type=image/svg+xml *.tpl =
svn:eol-style=native *.ttf = svn:mime-type=application/x-font-ttf *.txt =
svn:eol-style=native *.woff = svn:mime-type=application/x-woff *.xcf =
svn:mime-type=image/x-xcf Makefile = svn:eol-style=native SConscript =
svn:eol-style=native SConstruct = svn:eol-style=native USERINFO =
svn:eol-style=native
Modified: trunk/extensions/SideBarMenu/includes/MenuItem.php
===================================================================
--- trunk/extensions/SideBarMenu/includes/MenuItem.php 2012-03-07 17:31:29 UTC
(rev 113252)
+++ trunk/extensions/SideBarMenu/includes/MenuItem.php 2012-03-07 17:31:39 UTC
(rev 113253)
@@ -7,6 +7,7 @@
private $parent = null;
private $text;
+
public function setExpanded($expanded)
{
$this->expanded = $expanded;
@@ -76,7 +77,25 @@
if($this->isRoot()){
$output .= $this->childrenToHTML();
}else{
- $output .= "<li class=\"sidebar-menu-item
sidebar-menu-item-".$this->getLevel().' '.($this->isExpanded() ?
'sidebar-menu-item-expanded' : 'sidebar-menu-item-collapsed')."\"><div
class=\"sidebar-menu-item-text
sidebar-menu-item-text-".$this->getLevel()."\">".$this->getText()."</div>";
+ $itemClasses[] = 'sidebar-menu-item';
+ $itemClasses[] = 'sidebar-menu-item-'.$this->getLevel();
+
+ if($this->hasChildren()){
+ $itemClasses[] = $this->isExpanded() ?
'sidebar-menu-item-expanded' : 'sidebar-menu-item-collapsed';
+ }
+
+ $textClasses[] = 'sidebar-menu-item-text';
+ $textClasses[] = 'sidebar-menu-item-text-'.$this->getLevel();
+
+ $output .= "<li class=\"".join(' ',$itemClasses)."\">";
+ $output .= "<div class=\"sidebar-menu-item-text-container\">";
+ $output .= "<span class=\"".join('
',$textClasses)."\">".$this->getText()."</span>";
+
+ if($this->hasChildren()){
+ $output .= "<span
class=\"sidebar-menu-item-controls\"></span>";
+ }
+
+ $output .= "</div>";
$output .= $this->childrenToHTML();
$output .= "</li>";
}
@@ -87,7 +106,10 @@
private function childrenToHTML()
{
if($this->hasChildren()){
- $output = "<ul class=\"sidebar-menu
sidebar-menu-".$this->getLevel()."\">";
+ $menuClasses[] = 'sidebar-menu';
+ $menuClasses[] = 'sidebar-menu-'.$this->getLevel();
+
+ $output = "<ul class=\"".join(' ',$menuClasses)."\">";
foreach ($this->getChildren() as $child) {
$output .= $child->toHTML();
}
Added: trunk/extensions/SideBarMenu/js/ext.sidebarmenu.js
===================================================================
--- trunk/extensions/SideBarMenu/js/ext.sidebarmenu.js
(rev 0)
+++ trunk/extensions/SideBarMenu/js/ext.sidebarmenu.js 2012-03-07 17:31:39 UTC
(rev 113253)
@@ -0,0 +1,6 @@
+$(document).ready(function(){
+
$('.sidebar-menu-item-controls').append(mw.config.get('wgSideBarMenuConfigShowHTML'));
+ $('.sidebar-menu-item-controls').click(function(){
+
$(this).parents('.sidebar-menu-item:first').toggleClass('sidebar-menu-item-collapsed',1500);
+ });
+});
\ No newline at end of file
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs