Adds the ability to remove navigation items

Included tests
Refs #1413
This commit is contained in:
Samuel Georges 2015-09-12 08:45:58 +10:00
parent e8b4bf9d72
commit 1c8d021a35
2 changed files with 91 additions and 1 deletions

View File

@ -246,6 +246,15 @@ class NavigationManager
}
}
/**
* Removes a single main menu item
*/
public function removeMainMenuItem($owner, $code)
{
$itemKey = $this->makeItemKey($owner, $code);
unset($this->items[$itemKey]);
}
/**
* Dynamically add an array of side menu items
* @param string $owner
@ -287,6 +296,20 @@ class NavigationManager
$this->items[$itemKey]->sideMenu[$sideCode] = $item;
}
/**
* Removes a single main menu item
*/
public function removeSideMenuItem($owner, $code, $sideCode)
{
$itemKey = $this->makeItemKey($owner, $code);
if (!isset($this->items[$itemKey])) {
return false;
}
$mainItem = $this->items[$itemKey];
unset($mainItem->sideMenu[$sideCode]);
}
/**
* Returns a list of the main menu items.
* @return array

View File

@ -79,6 +79,51 @@ class NavigationManagerTest extends TestCase
$this->assertEquals(200, $items['categories']->order);
}
public function testAddMainMenuItems()
{
$manager = NavigationManager::instance();
$manager->addMainMenuItems('October.Tester', [
'print' => [
'label' => 'Print',
'icon' => 'icon-print',
'url' => 'javascript:window.print()'
]
]);
$items = $manager->listMainMenuItems();
$this->assertInternalType('array', $items);
$this->assertArrayHasKey('OCTOBER.TESTER.PRINT', $items);
$item = $items['OCTOBER.TESTER.PRINT'];
$this->assertEquals('print', $item->code);
$this->assertEquals('Print', $item->label);
$this->assertEquals('icon-print', $item->icon);
$this->assertEquals('javascript:window.print()', $item->url);
$this->assertEquals(500, $item->order);
$this->assertEquals('October.Tester', $item->owner);
}
public function testRemoveMainMenuItem()
{
$manager = NavigationManager::instance();
$manager->addMainMenuItems('October.Tester', [
'close' => [
'label' => 'Close',
'icon' => 'icon-times',
'url' => 'javascript:window.close()'
]
]);
$items = $manager->listMainMenuItems();
$this->assertArrayHasKey('OCTOBER.TESTER.CLOSE', $items);
$manager->removeMainMenuItem('October.Tester', 'close');
$items = $manager->listMainMenuItems();
$this->assertArrayNotHasKey('OCTOBER.TESTER.CLOSE', $items);
}
public function testAddSideMenuItems()
{
$manager = NavigationManager::instance();
@ -116,4 +161,26 @@ class NavigationManagerTest extends TestCase
$this->assertContains('october.tester.access_foo', $items['foo']->permissions);
$this->assertContains('october.tester.access_bar', $items['foo']->permissions);
}
public function testRemoveSideMenuItem()
{
$manager = NavigationManager::instance();
$manager->addSideMenuItems('October.Tester', 'blog', [
'bar' => [
'label' => 'Bar',
'icon' => 'icon-bars',
'url' => 'http://yahoo.com'
]
]);
$manager->setContext('October.Tester', 'blog');
$items = $manager->listSideMenuItems();
$this->assertArrayHasKey('bar', $items);
$manager->removeSideMenuItem('October.Tester', 'blog', 'bar');
$items = $manager->listSideMenuItems();
$this->assertArrayNotHasKey('bar', $items);
}
}