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