Netbrain has submitted this change and it was merged.
Change subject: minimized, css styling and made menu items behave as buttons
with the @ prefix
......................................................................
minimized, css styling and made menu items behave as buttons with the @ prefix
* Changed css styling, to better cope with small menu widths.
* Added minimize parameter (true/false) which when enabled shows only
a small square with the text [show] to open up the menu
* Added a new menu item text prefix @, which will make the text inserted
displayed as a link and on click will show the menu's subtree
* added style attribute which behaves the same way as
any html tag's style attribute.
example:
<sidebarmenu style="width: 100px;" minimized="true">
MenuItem1
+*SubMenuItem1
-**@SubMenuItem1Of1
</sidebarmenu>
Change-Id: Ifae83a51e6a199b08480cb6ade6a94ac281345dc
---
M SideBarMenu.hooks.php
M SideBarMenu.php
M css/ext.sidebarmenu.css
M includes/MenuItem.php
M includes/MenuParser.php
M js/ext.sidebarmenu.js
M test/MenuItemTest.php
M test/MenuParserTest.php
8 files changed, 142 insertions(+), 56 deletions(-)
Approvals:
Netbrain: Verified; Looks good to me, approved
diff --git a/SideBarMenu.hooks.php b/SideBarMenu.hooks.php
index 96784e5..3516b8e 100644
--- a/SideBarMenu.hooks.php
+++ b/SideBarMenu.hooks.php
@@ -13,16 +13,17 @@
//default settings
$config = self::getTagConfig($args);
- $output = '<div
class="sidebar-menu-container'.(is_null($config[SBM_CLASS])? '' : '
'.$config[SBM_CLASS]).'">';
+ $output = '<div
class="sidebar-menu-container'.(is_null($config[SBM_CLASS])? '' : '
'.$config[SBM_CLASS]).'"'.(is_null($config[SBM_STYLE])? '' : '
style="'.$config[SBM_STYLE].'"').'>';
try {
$menuParser = new MenuParser($config);
- $output .=
$parser->recursiveTagParse($menuParser->getMenuTree($input)->toHTML(), $frame);
+ $menuHTML = $menuParser->getMenuTree($input)->toHTML();
+ $output .= $parser->recursiveTagParse($menuHTML,
$frame);
} catch (Exception $x) {
wfDebug("An error occured during parsing of: '$input'
caught exception: $x");
- return wfMsg('sidebarmenu-parser-input-error',
$x->getMessage());
+ return wfMessage('sidebarmenu-parser-input-error',
$x->getMessage())->text();
}
if ($config[SBM_EDIT_LINK]) {
- $output .= Linker::link($frame->getTitle(),
wfMsg('sidebarmenu-edit'), array('title' => wfMsg('sidebarmenu-edit'), 'class'
=> 'sidebar-menu-edit-link'), array('action' => 'edit'));
+ $output .= Linker::link($frame->getTitle(),
wfMessage('sidebarmenu-edit')->escaped(), array('title' =>
wfMessage('sidebarmenu-edit')->escaped(), 'class' => 'sidebar-menu-edit-link'),
array('action' => 'edit'));
}
$output .= '</div>';
@@ -50,37 +51,25 @@
return $js;
}
- private static function getAsJSEncodedString($s) {
- return "'$s'";
- }
-
private static function getJSConfig($config) {
//javascript config output
- $jsOutput = Html::inlineScript("
- var sidebarmenu = {
- config: {
- controls: {
- show: " .
self::getAsJSEncodedString($config[SBM_CONTROLS_SHOW]) . ",
- hide: " .
self::getAsJSEncodedString($config[SBM_CONTROLS_HIDE]) . "
- },
- js: {
- animate: " . (filter_var($config[SBM_JS_ANIMATE],
FILTER_VALIDATE_BOOLEAN) ? 'true' : 'false') . "
- }
- }
- };
- ");
+ $jsOutput = 'var sidebarmenu = '.json_encode($config);
+ $jsOutput = Html::inlineScript($jsOutput);
//minify js to prevent <p> tags to be rendered
- return self::minifyJavascript($jsOutput);
+ $jsOutput = self::minifyJavascript($jsOutput);
+ return $jsOutput;
}
private static function getTagConfig($args) {
global $wgSideBarMenuConfig;
$config[SBM_EXPANDED] = array_key_exists(SBM_EXPANDED, $args) ?
filter_var($args[SBM_EXPANDED], FILTER_VALIDATE_BOOLEAN) :
$wgSideBarMenuConfig[SBM_EXPANDED];
- $config[SBM_CONTROLS_SHOW] =
array_key_exists(SBM_CONTROLS_SHOW, $args) ? $args[SBM_CONTROLS_SHOW] :
(isset($wgSideBarMenuConfig[SBM_CONTROLS_SHOW]) ?
$wgSideBarMenuConfig[SBM_CONTROLS_SHOW] : '[' . wfMsg('showtoc') . ']');
- $config[SBM_CONTROLS_HIDE] =
array_key_exists(SBM_CONTROLS_HIDE, $args) ? $args[SBM_CONTROLS_HIDE] :
(isset($wgSideBarMenuConfig[SBM_CONTROLS_HIDE]) ?
$wgSideBarMenuConfig[SBM_CONTROLS_HIDE] : '[' . wfMsg('hidetoc') . ']');
- $config[SBM_JS_ANIMATE] = array_key_exists(SBM_JS_ANIMATE,
$args) ? $args[SBM_JS_ANIMATE] : $wgSideBarMenuConfig[SBM_JS_ANIMATE];
+ $config[SBM_CONTROLS_SHOW] =
array_key_exists(SBM_CONTROLS_SHOW, $args) ? $args[SBM_CONTROLS_SHOW] :
(isset($wgSideBarMenuConfig[SBM_CONTROLS_SHOW]) ?
$wgSideBarMenuConfig[SBM_CONTROLS_SHOW] : '[' . wfMessage('showtoc')->escaped()
. ']');
+ $config[SBM_CONTROLS_HIDE] =
array_key_exists(SBM_CONTROLS_HIDE, $args) ? $args[SBM_CONTROLS_HIDE] :
(isset($wgSideBarMenuConfig[SBM_CONTROLS_HIDE]) ?
$wgSideBarMenuConfig[SBM_CONTROLS_HIDE] : '[' . wfMessage('hidetoc')->escaped()
. ']');
+ $config[SBM_JS_ANIMATE] = array_key_exists(SBM_JS_ANIMATE,
$args) ? filter_var($args[SBM_JS_ANIMATE], FILTER_VALIDATE_BOOLEAN) :
$wgSideBarMenuConfig[SBM_JS_ANIMATE];
$config[SBM_EDIT_LINK] = array_key_exists(SBM_EDIT_LINK, $args)
? filter_var($args[SBM_EDIT_LINK], FILTER_VALIDATE_BOOLEAN) :
$wgSideBarMenuConfig[SBM_EDIT_LINK];
$config[SBM_CLASS] = array_key_exists(SBM_CLASS, $args) ?
$args[SBM_CLASS] : null;
+ $config[SBM_STYLE] = array_key_exists(SBM_STYLE, $args) ?
$args[SBM_STYLE] : null;
+ $config[SBM_MINIMIZED] = array_key_exists(SBM_MINIMIZED, $args)
? filter_var($args[SBM_MINIMIZED], FILTER_VALIDATE_BOOLEAN) :
$wgSideBarMenuConfig[SBM_MINIMIZED];
return $config;
}
}
diff --git a/SideBarMenu.php b/SideBarMenu.php
index e2ee578..31f74dd 100644
--- a/SideBarMenu.php
+++ b/SideBarMenu.php
@@ -11,7 +11,8 @@
const SBM_JS_ANIMATE = 'js.animate';
const SBM_EDIT_LINK = 'editlink';
const SBM_CLASS = 'class';
-
+const SBM_STYLE = 'style';
+const SBM_MINIMIZED = 'minimized';
//default settings
$wgSideBarMenuConfig[SBM_CONTROLS_SHOW] = null;
@@ -19,6 +20,8 @@
$wgSideBarMenuConfig[SBM_JS_ANIMATE] = true;
$wgSideBarMenuConfig[SBM_EXPANDED] = true;
$wgSideBarMenuConfig[SBM_EDIT_LINK] = true;
+$wgSideBarMenuConfig[SBM_MINIMIZED] = false;
+
$wgExtensionCredits['parserhook'][] = array(
'path' => __FILE__,
diff --git a/css/ext.sidebarmenu.css b/css/ext.sidebarmenu.css
index b769977..85e3018 100644
--- a/css/ext.sidebarmenu.css
+++ b/css/ext.sidebarmenu.css
@@ -1,10 +1,8 @@
/* default SideBarMenu extension styling */
.sidebar-menu-container {
- padding: 5px;
float: left;
clear: left;
- margin: 5px;
}
.sidebar-menu-item-collapsed .sidebar-menu {
@@ -50,10 +48,17 @@
.sidebar-menu-item-text-container {
position: relative;
+ padding-right: 45px !important;
+}
+
+.sidebar-menu-minimized .sidebar-menu-item-text-container {
+ padding-right: 0px !important;
}
.sidebar-menu-item-controls {
- float: right;
+ position: absolute;
+ right: 0px;
+ top: 0px;
color: #0645AD;
cursor: pointer;
min-width: 45px;
@@ -67,8 +72,29 @@
font-size: smaller;
}
+.sidebar-menu-item-text {
+ overflow:hidden;
+ width: 100%;
+}
+
.sidebar-menu-item-text-1,.sidebar-menu-item-text-2 {
font-weight: bold;
}
+.sidebar-menu-minimized {
+ width: 45px !important;
+}
+
+.sidebar-menu-minimized .sidebar-menu-item-text {
+ visibility: hidden;
+}
+
+.sidebar-menu-item-last .sidebar-menu-item-text-container {
+ padding-right: 0px !important;
+}
+
+.sidebar-menu-item-1 > .sidebar-menu-item-text-container >
.sidebar-menu-item-controls {
+ right: 3px;
+ top: 3px;
+}
\ No newline at end of file
diff --git a/includes/MenuItem.php b/includes/MenuItem.php
index cabd2d9..c441525 100644
--- a/includes/MenuItem.php
+++ b/includes/MenuItem.php
@@ -8,6 +8,7 @@
private $customCSSStyle;
private $customCSSClasses;
private $config;
+ private $expandAction = false;
function __construct($config) {
$this->config = $config;
@@ -17,7 +18,7 @@
if (is_null($expanded) || $expanded === true || $expanded ===
false) {
$this->expanded = $expanded;
} else {
- throw new
InvalidArgumentException(wfMsg('sidebarmenu-parser-menuitem-expanded-invalid'));
+ throw new
InvalidArgumentException(wfMessage('sidebarmenu-parser-menuitem-expanded-invalid')->text());
}
}
@@ -31,6 +32,14 @@
}else{
return $this->config[SBM_EXPANDED];
}
+ }
+
+ public function setExpandAction($expandAction) {
+ $this->expandAction = $expandAction;
+ }
+
+ public function isExpandAction() {
+ return $this->expandAction;
}
public function setText($link) {
@@ -87,6 +96,11 @@
$itemClasses[] = 'sidebar-menu-item';
$itemClasses[] = 'sidebar-menu-item-' .
$this->getLevel();
+ if(!$this->hasChildren()){
+ //to distinguish if this is the last item in
the menu tree (eg. a leaf)
+ $itemClasses[] = 'sidebar-menu-item-last';
+ }
+
if ($this->hasChildren()) {
if($this->isExpandedSpecified()){
$itemClasses[] = $this->isExpanded() ?
'sidebar-menu-item-expanded' : 'sidebar-menu-item-collapsed';
@@ -101,6 +115,9 @@
$textClasses[] = 'sidebar-menu-item-text';
$textClasses[] = 'sidebar-menu-item-text-' .
$this->getLevel();
+ if($this->isExpandAction()){
+ $textClasses[] =
'sidebar-menu-item-expand-action';
+ }
$output .= "<li class=\"" . join(' ', $itemClasses) .
"\"" . ($this->hasCustomCSSStyle() ? " style=\"{$this->getCustomCSSStyle()}\""
: '') . ">";
$output .= "<div
class=\"sidebar-menu-item-text-container\">";
diff --git a/includes/MenuParser.php b/includes/MenuParser.php
index e86127c..b9d01ac 100644
--- a/includes/MenuParser.php
+++ b/includes/MenuParser.php
@@ -31,7 +31,7 @@
if (preg_match("/\[\[.*\]\]/", $line) == 1) {
return preg_filter("/\+|\-?\**(\[\[.*\]\])\|?.*/",
"$1", $line);
} else {
- return preg_filter("/\+|\-?\**([^\|]*)\|?.*/", "$1",
$line);
+ return preg_filter("/\+|\-?\**\@?([^\|]*)\|?.*/", "$1",
$line);
}
}
@@ -41,6 +41,13 @@
public function getClassParameter($line) {
return preg_filter("/.*?\|class=(.*)\|?/", "$1", $line);
+ }
+
+ public function getExpandActionParameter($line){
+ if (preg_match("/\+|\-?\**\@.*/", $line) == 1) {
+ return true;
+ }
+ return false;
}
@@ -65,6 +72,7 @@
$menuItem->setText($this->getTextParameter($line));
$menuItem->setCustomCSSStyle($this->getStyleParameter($line));
$menuItem->setCustomCSSClasses($this->getClassParameter($line));
+
$menuItem->setExpandAction($this->getExpandActionParameter($line));
return $menuItem;
} else {
throw new InvalidArgumentException();
@@ -91,7 +99,7 @@
$levelArray[$level][] = $line;
} else {
//syntax error
- throw new
InvalidArgumentException(wfMsg('sidebarmenu-parser-syntax-error', $line));
+ throw new
InvalidArgumentException(wfMessage('sidebarmenu-parser-syntax-error',
$line)->text());
}
}
}
@@ -122,11 +130,5 @@
return trim($data, "\n ");
}
- private static function removeLineBreaksFromStartOfString($data) {
- while (self::startsWith($data, "\n")) {
- $data = substr($data, 1);
- }
- return $data;
- }
}
diff --git a/js/ext.sidebarmenu.js b/js/ext.sidebarmenu.js
index 522919e..85fff0e 100644
--- a/js/ext.sidebarmenu.js
+++ b/js/ext.sidebarmenu.js
@@ -1,8 +1,24 @@
$(document).ready(function () {
+
+ //IE doesn't support const, use var instead :(
+ var SBM_EXPANDED = 'parser.menuitem.expanded';
+ var SBM_CONTROLS_SHOW = 'controls.show';
+ var SBM_CONTROLS_HIDE = 'controls.hide';
+ var SBM_JS_ANIMATE = 'js.animate';
+ var SBM_EDIT_LINK = 'editlink';
+ var SBM_CLASS = 'class';
+ var SBM_STYLE = 'style';
+ var SBM_MINIMIZED = 'minimized';
+
if (typeof(sidebarmenu) !== 'undefined') {
- var showText = sidebarmenu.config.controls.show;
- var hideText = sidebarmenu.config.controls.hide;
- var useAnimations = sidebarmenu.config.js.animate;
+ var showText = sidebarmenu[SBM_CONTROLS_SHOW];
+ var hideText = sidebarmenu[SBM_CONTROLS_HIDE];
+ var useAnimations = sidebarmenu[SBM_JS_ANIMATE];
+ var minimized = sidebarmenu[SBM_MINIMIZED];
+
+ if(minimized){
+ $('.sidebar-menu-container').addClass('sidebar-menu-minimized');
+ }
function initControls() {
$('.sidebar-menu-item-collapsed').children('.sidebar-menu-item-text-container').children('.sidebar-menu-item-controls').append(showText);
@@ -17,13 +33,20 @@
//initialize controls
initControls();
- $('.sidebar-menu-item-controls').click(function () {
- var currentText = $(this).text();
+
+ //initialize click actions
+
$('.sidebar-menu-item-controls,.sidebar-menu-item-expand-action').click(function
() {
+ if(minimized && $(this)[0] ==
$('.sidebar-menu-item-controls:first')[0]){
+
$('.sidebar-menu-container').toggleClass('sidebar-menu-minimized');
+ }
+
+ var controls = $(this).is('.sidebar-menu-item-controls') ? $(this)
: $(this).next();
+ var currentText = controls.text();
if (currentText == showText) {
- $(this).text(hideText);
+ controls.text(hideText);
} else if (currentText == hideText) {
- $(this).text(showText);
+ controls.text(showText);
}
if (useAnimations) {
@@ -39,7 +62,9 @@
}
});
- } else {
- $('.sidebar-menu-container').prepend(mw.msg('sidebar-js-init-error'));
+ //must do this in javascript as serverside solution would replace this
<a href> link with escaped html characters
+ $('.sidebar-menu-item-expand-action').each(function(){
+ $(this).html('<a href="#" onclick="return
false;">'+$(this).html()+'</a>');
+ })
}
});
\ No newline at end of file
diff --git a/test/MenuItemTest.php b/test/MenuItemTest.php
index 3d92083..656537d 100644
--- a/test/MenuItemTest.php
+++ b/test/MenuItemTest.php
@@ -1,10 +1,13 @@
<?php
-
+/**
+ * @group SideBarMenu
+ */
class MenuItemTest extends MediaWikiTestCase {
private $menuItem;
private $config;
protected function setUp() {
+ parent::setUp();
$this->config = array(SBM_EXPANDED => false);
$this->menuItem = new MenuItem($this->config);
}
@@ -69,7 +72,7 @@
$menuItemChild->setText("MenuItem1");
$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"><div
class="sidebar-menu-item-text-container"><span class="sidebar-menu-item-text
sidebar-menu-item-text-1">MenuItem1</span></div></li></ul>', $html);
+ $this->assertEquals('<ul class="sidebar-menu
sidebar-menu-0"><li class="sidebar-menu-item sidebar-menu-item-1
sidebar-menu-item-last"><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 testToHTMLOnSeveralMenuItems() {
@@ -82,7 +85,7 @@
$this->menuItem->addChild($menuItemChild2);
$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"><div
class="sidebar-menu-item-text-container"><span class="sidebar-menu-item-text
sidebar-menu-item-text-1">MenuItem2</span></div></li></ul>', $html);
+ $this->assertEquals('<ul class="sidebar-menu
sidebar-menu-0"><li class="sidebar-menu-item sidebar-menu-item-1
sidebar-menu-item-last"><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-last"><div
class="sidebar-menu-item-text-container"><span class="sidebar-menu-item-text
sidebar-menu-item-text-1">MenuItem2</span></div></li></ul>', $html);
}
public function testToHTMLOnSeveralMenuItemsWithSublevels() {
@@ -99,7 +102,7 @@
$subLevel1->setParent($menuItemChild2);
$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></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);
+ $this->assertEquals('<ul class="sidebar-menu
sidebar-menu-0"><li class="sidebar-menu-item sidebar-menu-item-1
sidebar-menu-item-last"><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></div><ul class="sidebar-menu
sidebar-menu-1"><li class="sidebar-menu-item sidebar-menu-item-2
sidebar-menu-item-last"><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
testToHTMLOnSeveralMenuItemsWithSublevelsWhereExpandedIsTrue() {
@@ -114,7 +117,7 @@
$subLevel1->setParent($menuItemChild);
$html = $this->menuItem->toHTML();
- $this->assertEquals('<ul class="sidebar-menu
sidebar-menu-0"><li class="sidebar-menu-item sidebar-menu-item-1
sidebar-menu-item-expanded"><div class="sidebar-menu-item-text-container"><span
class="sidebar-menu-item-text sidebar-menu-item-text-1">MenuItem</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);
+ $this->assertEquals('<ul class="sidebar-menu
sidebar-menu-0"><li class="sidebar-menu-item sidebar-menu-item-1
sidebar-menu-item-expanded"><div class="sidebar-menu-item-text-container"><span
class="sidebar-menu-item-text sidebar-menu-item-text-1">MenuItem</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
sidebar-menu-item-last"><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
testToHTMLOnSeveralMenuItemsWithSublevelsWhereExpandedIsFalse() {
@@ -129,7 +132,7 @@
$subLevel1->setParent($menuItemChild);
$html = $this->menuItem->toHTML();
- $this->assertEquals('<ul class="sidebar-menu
sidebar-menu-0"><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">MenuItem</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);
+ $this->assertEquals('<ul class="sidebar-menu
sidebar-menu-0"><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">MenuItem</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
sidebar-menu-item-last"><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);
}
@@ -139,7 +142,7 @@
$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);
+ $this->assertEquals('<ul class="sidebar-menu
sidebar-menu-0"><li class="sidebar-menu-item sidebar-menu-item-1
sidebar-menu-item-last" 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() {
@@ -148,6 +151,15 @@
$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);
+ $this->assertEquals('<ul class="sidebar-menu
sidebar-menu-0"><li class="sidebar-menu-item sidebar-menu-item-1
sidebar-menu-item-last 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);
+ }
+
+ public function testToHTMLMenuItemWithExpandAction() {
+ $menuItemChild = new MenuItem($this->config);
+ $menuItemChild->setText("MenuItem1");
+ $menuItemChild->setExpandAction(true);
+ $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
sidebar-menu-item-last"><div class="sidebar-menu-item-text-container"><span
class="sidebar-menu-item-text sidebar-menu-item-text-1
sidebar-menu-item-expand-action">MenuItem1</span></div></li></ul>', $html);
}
}
diff --git a/test/MenuParserTest.php b/test/MenuParserTest.php
index 826244b..0cf5566 100644
--- a/test/MenuParserTest.php
+++ b/test/MenuParserTest.php
@@ -1,11 +1,14 @@
<?php
-
+/**
+ * @group SideBarMenu
+ */
class MenuParserTest extends MediaWikiTestCase {
private $menuParser;
private $config;
protected function setUp() {
+ parent::setUp();
$this->config = array(SBM_EXPANDED => true);
$this->menuParser = new MenuParser($this->config);
}
@@ -230,4 +233,13 @@
$this->assertEquals("somecssclass anothercssclass",
$children[0]->getCustomCSSClasses());
}
+ public function testMenuItemTextExpandsSubtreeOnClick() {
+ $data = array(
+ '@MenuItem1',
+ );
+ $children = $this->menuParser->getMenuTree(join("\n",
$data))->getChildren();
+ $this->assertEquals("MenuItem1", $children[0]->getText());
+ $this->assertTrue($children[0]->isExpandAction());
+ }
+
}
--
To view, visit https://gerrit.wikimedia.org/r/46216
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ifae83a51e6a199b08480cb6ade6a94ac281345dc
Gerrit-PatchSet: 7
Gerrit-Project: mediawiki/extensions/SideBarMenu
Gerrit-Branch: master
Gerrit-Owner: Netbrain <[email protected]>
Gerrit-Reviewer: MathiasLidal <[email protected]>
Gerrit-Reviewer: Netbrain <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits