Sunday, July 06, 2008
Zend Framework view helper for generating menus
/**
* ----------------------------------------------------------------
* Copyright (C) 2008 Agencja Interaktywna Blue Paprica
* Maciej Pa艂ubicki. All rights reserved.
* ----------------------------------------------------------------
*
* /framework/application/Modules/Admin/views/helpers/Menu.php
*
* @author 艁ukasz Kazimierz Bandzarewicz
* @copyright Copyright (C) 2008 Agencja Interaktywna Blue Paprica
* Maciej Pa艂ubicki. All rights reserved.
*/
class Zend_View_Helper_Menu
{
protected function _prepareMenu()
{
return array(
array(
'title' => 'Strona g艂贸wna',
'controller' => 'index'
)
, array(
'title' => 'U偶ytkownicy systemu',
'controller' => 'users',
)
, array(
'title' => 'System Punkt贸w',
'controller' => 'point_categories',
)
, array(
'title' => 'Produkty',
'controller' => 'store_products',
'submenu' => array(
array(
'title' => 'Lista produkt贸w',
'action' => 'list'
),
array(
'title' => 'Dodaj produkt',
'action' => 'create'
)
)
)
, array(
'title' => 'Kupony',
'controller' => 'store_coupons',
'submenu' => array(
array(
'title' => 'Lista kupon贸w',
'action' => 'list'
),
array(
'title' => 'Dodaj kupon',
'action' => 'create'
)
)
)
, array(
'title' => 'Kategorie produkt贸w',
'controller' => 'store_categories',
'submenu' => array(
array(
'title' => 'Lista kategorii',
'action' => 'list'
),
array(
'title' => 'Dodaj kategori臋',
'action' => 'create'
)
)
)
, array(
'title' => 'Dostawcy',
'controller' => 'store_suppliers',
'submenu' => array(
array(
'title' => 'Lista producent贸w',
'action' => 'list'
),
array(
'title' => 'Dodaj producenta',
'action' => 'create'
)
)
)
, array(
'title' => 'Producenci',
'controller' => 'store_manufacturers',
'submenu' => array(
array(
'title' => 'Lista producent贸w',
'action' => 'list'
),
array(
'title' => 'Dodaj producenta',
'action' => 'create',
'params' => '/type/'
)
)
)
, array(
'title' => 'Aktualno艣ci',
'controller' => 'static_news',
'action' => 'list',
'submenu' => array(
array(
'title' => 'Lista aktualno艣ci',
'action' => 'list'
),
array(
'title' => 'Dodaj aktualno艣膰',
'action' => 'create'
)
)
)
, array(
'title' => 'Strony statyczne',
'controller' => 'static_pages',
'action' => 'list'
)
, array(
'title' => 'Logi',
'controller' => 'maintenance_logs',
)
);
}
/**
* @var Zend_View_Interface
*/
public $view;
public function setView(Zend_View_Interface $view)
{
$this->view = $view;
}
public function menu()
{
$menu = $this->_prepareMenu();
$ctrl = Zend_Controller_Front::getInstance();
$controller = $ctrl->getRequest()->getControllerName();
$action = $ctrl->getRequest()->getActionName();
?>
var timeoutID;
function displaySubmenu(submenu_id) {
// hide all elements
$('ul[id*=bp_submenu_]').each(function(e) {
$(this).hide();
});
// show the chosen one
$(submenu_id).show();
}
$(document).ready(function () {
// for each main menu elements
$('a[@id*=bp_menu_]').each(function(e) {
var controller = this.id.substring('bp_menu_'.length);
var submenu_id = '#bp_submenu_' + controller;
var menu_id = '#bp_menu_' + controller;
$(menu_id).mouseover(function() {
timeoutID = setTimeout(function() {
displaySubmenu(submenu_id);
}, 1000);
});
$(menu_id).mouseout(function() {
if (timeoutID) {
clearTimeout(timeoutID);
}
});
$(menu_id).click(function() {
if ($(submenu_id).is(':hidden')) {
displaySubmenu(submenu_id);
return false;
}
});
});
});
//-->
}
}