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

Revision: 114842
Author:   netbrain
Date:     2012-04-11 14:36:04 +0000 (Wed, 11 Apr 2012)
Log Message:
-----------
added style parameter to individual menu item elements.

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-11 07:52:03 UTC 
(rev 114841)
+++ trunk/extensions/SideBarMenu/includes/MenuItem.php  2012-04-11 14:36:04 UTC 
(rev 114842)
@@ -5,6 +5,7 @@
        private $children = array();
        private $parent = null;
        private $text;
+       private $style;
 
 
        public function setExpanded($expanded) {
@@ -77,10 +78,15 @@
                                $itemClasses[] = $this->isExpanded() ? 
'sidebar-menu-item-expanded' : 'sidebar-menu-item-collapsed';
                        }
 
+
+                       if($this->hasStyle()){
+
+                       }
+
                        $textClasses[] = 'sidebar-menu-item-text';
                        $textClasses[] = 'sidebar-menu-item-text-' . 
$this->getLevel();
 
-                       $output .= "<li class=\"" . join(' ', $itemClasses) . 
"\">";
+                       $output .= "<li class=\"" . join(' ', $itemClasses) . 
"\"".($this->hasStyle() ? " style=\"{$this->getStyle()}\"" : '').">";
                        $output .= "<div 
class=\"sidebar-menu-item-text-container\">";
                        $output .= "<span class=\"" . join(' ', $textClasses) . 
"\">" . $this->getText() . "</span>";
 
@@ -110,4 +116,16 @@
                }
        }
 
+       public function getStyle() {
+               return $this->style;
+       }
+
+       public function setStyle($style) {
+               $this->style = $style;
+       }
+
+       public function hasStyle(){
+               return isset($this->style) && $this->style !== '';
+       }
+
 }

Modified: trunk/extensions/SideBarMenu/includes/MenuParser.php
===================================================================
--- trunk/extensions/SideBarMenu/includes/MenuParser.php        2012-04-11 
07:52:03 UTC (rev 114841)
+++ trunk/extensions/SideBarMenu/includes/MenuParser.php        2012-04-11 
14:36:04 UTC (rev 114842)
@@ -29,10 +29,14 @@
        }
 
        public function getTextParameter($line) {
-               return preg_filter("/\+|\-?\**(.*)/", "$1", $line);
+               return preg_filter("/\+|\-?\**([^\|]*)\|?.*/", "$1", $line);
        }
 
+       public function getStyleParameter($line){
+               return preg_filter("/.*?\|style=(.*)\|?/","$1",$line);
+       }
 
+
        public function getMenuTree($data) {
                if ($this->isValidInput($data)) {
                        $data = $this->cleanupData($data);
@@ -52,6 +56,7 @@
                        $menuItem = new MenuItem();
                        
$menuItem->setExpanded($this->getExpandedParameter($line));
                        $menuItem->setText($this->getTextParameter($line));
+                       $menuItem->setStyle($this->getStyleParameter($line));
                        return $menuItem;
                } else {
                        throw new InvalidArgumentException();

Modified: trunk/extensions/SideBarMenu/test/MenuItemTest.php
===================================================================
--- trunk/extensions/SideBarMenu/test/MenuItemTest.php  2012-04-11 07:52:03 UTC 
(rev 114841)
+++ trunk/extensions/SideBarMenu/test/MenuItemTest.php  2012-04-11 14:36:04 UTC 
(rev 114842)
@@ -99,4 +99,14 @@
                $html = $this->menuItem->toHTML();
                $this->assertEquals('<ul class="sidebar-menu 
sidebar-menu-0"><li class="sidebar-menu-item sidebar-menu-item-1"><div 
class="sidebar-menu-item-text-container"><span class="sidebar-menu-item-text 
sidebar-menu-item-text-1">MenuItem1</span></div></li><li 
class="sidebar-menu-item sidebar-menu-item-1 sidebar-menu-item-collapsed"><div 
class="sidebar-menu-item-text-container"><span class="sidebar-menu-item-text 
sidebar-menu-item-text-1">MenuItem2</span><span 
class="sidebar-menu-item-controls"></span></div><ul class="sidebar-menu 
sidebar-menu-1"><li class="sidebar-menu-item sidebar-menu-item-2"><div 
class="sidebar-menu-item-text-container"><span class="sidebar-menu-item-text 
sidebar-menu-item-text-2">SubMenuItem1</span></div></li></ul></li></ul>', 
$html);
        }
+
+
+       public function testToHTMLOnMenuItemWithStyling(){
+               $menuItemChild = new MenuItem();
+               $menuItemChild->setText("MenuItem1");
+               $menuItemChild->setStyle('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);
+       }
 }

Modified: trunk/extensions/SideBarMenu/test/MenuParserTest.php
===================================================================
--- trunk/extensions/SideBarMenu/test/MenuParserTest.php        2012-04-11 
07:52:03 UTC (rev 114841)
+++ trunk/extensions/SideBarMenu/test/MenuParserTest.php        2012-04-11 
14:36:04 UTC (rev 114842)
@@ -206,6 +206,16 @@
 
                $children = $menu->getChildren();
                $this->assertEquals("MenuItem1", $children[0]->getText());
+       }
 
+
+       public function testIndividualElementStyling() {
+               $data = array(
+                       'MenuItem1|style=color: red;',
+               );
+               $children = $this->menuParser->getMenuTree(join("\n", 
$data))->getChildren();
+               $this->assertEquals("MenuItem1",$children[0]->getText());
+               $this->assertEquals("color: red;", $children[0]->getStyle());
        }
+
 }


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

Reply via email to