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