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

Revision: 114863
Author:   netbrain
Date:     2012-04-12 09:04:07 +0000 (Thu, 12 Apr 2012)
Log Message:
-----------
added customization of css styling on menu items |class and |style parameter:

Modified Paths:
--------------
    trunk/extensions/SideBarMenu/includes/MenuItem.php
    trunk/extensions/SideBarMenu/includes/MenuParser.php
    trunk/extensions/SideBarMenu/test/MenuItemTest.php
    trunk/extensions/SideBarMenu/test/MenuParserTest.php

Modified: trunk/extensions/SideBarMenu/includes/MenuItem.php
===================================================================
--- trunk/extensions/SideBarMenu/includes/MenuItem.php  2012-04-12 01:08:21 UTC 
(rev 114862)
+++ trunk/extensions/SideBarMenu/includes/MenuItem.php  2012-04-12 09:04:07 UTC 
(rev 114863)
@@ -5,7 +5,8 @@
        private $children = array();
        private $parent = null;
        private $text;
-       private $style;
+       private $customCSSStyle;
+       private $customCSSClasses;
 
 
        public function setExpanded($expanded) {
@@ -78,15 +79,14 @@
                                $itemClasses[] = $this->isExpanded() ? 
'sidebar-menu-item-expanded' : 'sidebar-menu-item-collapsed';
                        }
 
-
-                       if($this->hasStyle()){
-
+                       if($this->hasCustomCSSClasses()){
+                               $itemClasses[] = $this->getCustomCSSClasses();
                        }
 
                        $textClasses[] = 'sidebar-menu-item-text';
                        $textClasses[] = 'sidebar-menu-item-text-' . 
$this->getLevel();
 
-                       $output .= "<li class=\"" . join(' ', $itemClasses) . 
"\"".($this->hasStyle() ? " style=\"{$this->getStyle()}\"" : '').">";
+                       $output .= "<li class=\"" . join(' ', $itemClasses) . 
"\"".($this->hasCustomCSSStyle() ? " style=\"{$this->getCustomCSSStyle()}\"" : 
'').">";
                        $output .= "<div 
class=\"sidebar-menu-item-text-container\">";
                        $output .= "<span class=\"" . join(' ', $textClasses) . 
"\">" . $this->getText() . "</span>";
 
@@ -116,16 +116,28 @@
                }
        }
 
-       public function getStyle() {
-               return $this->style;
+       public function getCustomCSSStyle() {
+               return $this->customCSSStyle;
        }
 
-       public function setStyle($style) {
-               $this->style = $style;
+       public function setCustomCSSStyle($style) {
+               $this->customCSSStyle = $style;
        }
 
-       public function hasStyle(){
-               return isset($this->style) && $this->style !== '';
+       public function hasCustomCSSStyle(){
+               return isset($this->customCSSStyle) && $this->customCSSStyle 
!== '';
        }
 
+       public function getCustomCSSClasses() {
+               return $this->customCSSClasses;
+       }
+
+       public function setCustomCSSClasses($class) {
+               $this->customCSSClasses = $class;
+       }
+
+       public function hasCustomCSSClasses(){
+               return isset($this->customCSSClasses) && 
$this->customCSSClasses !== '';
+       }
+
 }

Modified: trunk/extensions/SideBarMenu/includes/MenuParser.php
===================================================================
--- trunk/extensions/SideBarMenu/includes/MenuParser.php        2012-04-12 
01:08:21 UTC (rev 114862)
+++ trunk/extensions/SideBarMenu/includes/MenuParser.php        2012-04-12 
09:04:07 UTC (rev 114863)
@@ -36,7 +36,11 @@
                return preg_filter("/.*?\|style=(.*)\|?/","$1",$line);
        }
 
+       public function getClassParameter($line){
+               return preg_filter("/.*?\|class=(.*)\|?/","$1",$line);
+       }
 
+
        public function getMenuTree($data) {
                if ($this->isValidInput($data)) {
                        $data = $this->cleanupData($data);
@@ -56,7 +60,8 @@
                        $menuItem = new MenuItem();
                        
$menuItem->setExpanded($this->getExpandedParameter($line));
                        $menuItem->setText($this->getTextParameter($line));
-                       $menuItem->setStyle($this->getStyleParameter($line));
+                       
$menuItem->setCustomCSSStyle($this->getStyleParameter($line));
+                       
$menuItem->setCustomCSSClasses($this->getClassParameter($line));
                        return $menuItem;
                } else {
                        throw new InvalidArgumentException();

Modified: trunk/extensions/SideBarMenu/test/MenuItemTest.php
===================================================================
--- trunk/extensions/SideBarMenu/test/MenuItemTest.php  2012-04-12 01:08:21 UTC 
(rev 114862)
+++ trunk/extensions/SideBarMenu/test/MenuItemTest.php  2012-04-12 09:04:07 UTC 
(rev 114863)
@@ -104,9 +104,18 @@
        public function testToHTMLOnMenuItemWithStyling(){
                $menuItemChild = new MenuItem();
                $menuItemChild->setText("MenuItem1");
-               $menuItemChild->setStyle('color: red;');
+               $menuItemChild->setCustomCSSStyle('color: red;');
                $this->menuItem->addChild($menuItemChild);
                $html = $this->menuItem->toHTML();
                $this->assertEquals('<ul class="sidebar-menu 
sidebar-menu-0"><li class="sidebar-menu-item sidebar-menu-item-1" style="color: 
red;"><div class="sidebar-menu-item-text-container"><span 
class="sidebar-menu-item-text 
sidebar-menu-item-text-1">MenuItem1</span></div></li></ul>',$html);
        }
+
+       public function testToHTMLOnMenuItemWithCustomClasses(){
+               $menuItemChild = new MenuItem();
+               $menuItemChild->setText("MenuItem1");
+               $menuItemChild->setCustomCSSClasses('testclass1 testclass2');
+               $this->menuItem->addChild($menuItemChild);
+               $html = $this->menuItem->toHTML();
+               $this->assertEquals('<ul class="sidebar-menu 
sidebar-menu-0"><li class="sidebar-menu-item sidebar-menu-item-1 testclass1 
testclass2"><div class="sidebar-menu-item-text-container"><span 
class="sidebar-menu-item-text 
sidebar-menu-item-text-1">MenuItem1</span></div></li></ul>',$html);
+       }
 }

Modified: trunk/extensions/SideBarMenu/test/MenuParserTest.php
===================================================================
--- trunk/extensions/SideBarMenu/test/MenuParserTest.php        2012-04-12 
01:08:21 UTC (rev 114862)
+++ trunk/extensions/SideBarMenu/test/MenuParserTest.php        2012-04-12 
09:04:07 UTC (rev 114863)
@@ -215,7 +215,16 @@
                );
                $children = $this->menuParser->getMenuTree(join("\n", 
$data))->getChildren();
                $this->assertEquals("MenuItem1",$children[0]->getText());
-               $this->assertEquals("color: red;", $children[0]->getStyle());
+               $this->assertEquals("color: red;", 
$children[0]->getCustomCSSStyle());
        }
 
+       public function testIndividualElementClass() {
+               $data = array(
+                       'MenuItem1|class=somecssclass anothercssclass',
+               );
+               $children = $this->menuParser->getMenuTree(join("\n", 
$data))->getChildren();
+               $this->assertEquals("MenuItem1",$children[0]->getText());
+               $this->assertEquals("somecssclass anothercssclass", 
$children[0]->getCustomCSSClasses());
+       }
+
 }


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

Reply via email to