/** * @param MenusMenu $obj */ public function __construct(MenusMenu $obj) { global $menu_id; $xoops = Xoops::getInstance(); $helper = Menus::getInstance(); $this_handler = $helper->getHandlerMenu(); $decorators = MenusDecorator::getAvailableDecorators(); $title = $obj->isNew() ? sprintf(_AM_MENUS_ADD_MENUS) : sprintf(_AM_MENUS_EDIT_MENUS); parent::__construct($title, 'form', 'admin_menu.php', 'post', true); $this->addElement(new Xoops\Form\Text(_AM_MENUS_MENU_TITLE, 'title', 50, 255, $obj->getVar('title'), ''), true); $this->addElement(new Xoops\Form\Text(_AM_MENUS_MENU_ALTTITLE, 'alt_title', 50, 255, $obj->getVar('alt_title'), '')); $this->addElement(new Xoops\Form\Text(_AM_MENUS_MENU_LINK, 'link', 50, 255, $obj->getVar('link'), '')); $this->addElement(new Xoops\Form\Text(_AM_MENUS_MENU_IMAGE, 'image', 50, 255, $obj->getVar('image'), '')); $criteria = new CriteriaCompo(new Criteria('mid', $menu_id)); $criteria->add(new Criteria('id', $obj->getVar('id'), '<>')); $criteria->setSort('weight'); $criteria->setOrder('ASC'); $results = $this_handler->getAll($criteria, array('title', 'id', 'pid')); $parent_tree = new XoopsObjectTree($results, 'id', 'pid'); $parent_select = $parent_tree->makeSelBox('pid', 'title', '-- ', $obj->getVar('pid'), true); $this->addElement(new Xoops\Form\Label(_AM_MENUS_MENU_PARENT, $parent_select)); $formvis = new Xoops\Form\Select(_AM_MENUS_MENU_VISIBLE, "visible", $obj->getVar('visible')); $formvis->addOption("0", XoopsLocale::NO); $formvis->addOption("1", XoopsLocale::YES); $this->addElement($formvis); $formtarget = new Xoops\Form\Select(_AM_MENUS_MENU_TARGET, "target", $obj->getVar('target')); $formtarget->addOption("_self", _AM_MENUS_MENU_TARG_SELF); $formtarget->addOption("_blank", _AM_MENUS_MENU_TARG_BLANK); $formtarget->addOption("_parent", _AM_MENUS_MENU_TARG_PARENT); $formtarget->addOption("_top", _AM_MENUS_MENU_TARG_TOP); $this->addElement($formtarget); $formgroups = new Xoops\Form\SelectGroup(_AM_MENUS_MENU_GROUPS, "groups", true, $obj->getVar('groups'), 5, true); $formgroups->setDescription(_AM_MENUS_MENU_GROUPS_HELP); $this->addElement($formgroups); $formhooks = new Xoops\Form\Select(_AM_MENUS_MENU_ACCESS_FILTER, "hooks", $obj->getVar('hooks'), 5, true); $accessFilter = array(); foreach ($decorators as $decorator) { $decorator->accessFilter($accessFilter); } foreach ($accessFilter as $result) { $formhooks->addOption($result['method'], $result['name']); } $this->addElement($formhooks); $formcss = new Xoops\Form\Text(_AM_MENUS_MENU_CSS, 'css', 50, 255, $obj->getVar('css')); $this->addElement($formcss); $this->addElement(new Xoops\Form\Hidden('id', $obj->getVar('id'))); $this->addElement(new Xoops\Form\Hidden('mid', $obj->getVar('mid'))); $this->addElement(new Xoops\Form\Hidden('op', 'save')); $this->addElement(new Xoops\Form\Button('', 'submit', XoopsLocale::A_SUBMIT, 'submit')); }
/** * @copyright 2012-2014 XOOPS Project (http://xoops.org) * @license GNU GPL V2 or later http://www.gnu.org/licenses/gpl-2.0.html * @package Menus * @since 1.0 * @author trabis <*****@*****.**> */ function menus_block_show($options) { $block = array(); $xoops = Xoops::getInstance(); $helper = Xoops::getModuleHelper('menus'); /* @var $decorator MenusDecoratorInterface */ $decorators = MenusDecorator::getAvailableDecorators(); foreach ($decorators as $decorator) { $decorator->start(); } $menu_id = $options[0]; $criteria = new CriteriaCompo(new Criteria('mid', $menu_id)); $criteria->setSort('weight'); $criteria->setOrder('ASC'); //get menus as an array with ids as keys $menus = $helper->getHandlerMenu()->getAll($criteria, null, false, false); unset($criteria); foreach ($menus as $key => $menu) { $hasAccess = true; foreach ($decorators as $decorator) { $decorator->hasAccess($menu, $hasAccess); } if (!$hasAccess) { unset($menus[$key]); } } $count = count($menus); if ($count == 0) { return $block; } foreach ($menus as $key => $menu) { foreach ($decorators as $decorator) { $decorator->decorateMenu($menu); } $menus[$key] = $menu; } foreach ($decorators as $decorator) { $decorator->end($menus); } $builder = new MenusBuilder($menus); $block = $builder->render(); /*--------------------------------------------------------------*/ //default files to load $css = array(); $js = array(); //get extra files from skins $skin = $options[1]; $skin_info = $helper->getSkinInfo($skin, $options[2]); if (isset($skin_info['css'])) { $css = array_merge($css, $skin_info['css']); } if (isset($skin_info['js'])) { $js = array_merge($js, $skin_info['js']); } if ($helper->getConfig('assign_method') == 'xoopstpl') { $tpl_vars = ''; foreach ($css as $file) { $tpl_vars .= "\n" . '<link rel="stylesheet" type="text/css" media="all" href="' . $file . '" />'; } foreach ($js as $file) { $tpl_vars .= "\n" . '<script type="text/javascript" src="' . $file . '"></script>'; } if (isset($skin_info['header'])) { $tpl_vars .= "\n" . $skin_info['header']; } $xoops->tpl()->assign('xoops_module_header', $tpl_vars . @$xoops->tpl()->getTemplateVars("xoops_module_header")); } else { foreach ($css as $file) { $xoops->theme()->addStylesheet($file); } foreach ($js as $file) { $xoops->theme()->addScript($file); } if (isset($skin_info['header'])) { $xoops->tpl()->assign('xoops_footer', @$xoops->tpl()->getTemplateVars("xoops_footer") . "\n" . $skin_info['header']); } } $blockTpl = new XoopsTpl(); $blockTpl->assign('block', $block); $blockTpl->assign('config', $skin_info['config']); $blockTpl->assign('skinurl', $skin_info['url']); $blockTpl->assign('skinpath', $skin_info['path']); $block['content'] = $blockTpl->fetch($skin_info['template']); if ($options[3] == 'template') { $xoops->tpl()->assign('xoops_menu_' . $options[4], $block['content']); $block = array(); } return $block; }