Ejemplo n.º 1
0
 /**
  * @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'));
 }
Ejemplo n.º 2
0
/**
 * @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;
}