コード例 #1
0
ファイル: adminHelper.php プロジェクト: q0821/esportshop
 static function menu_linkoptions($all = false, $unassigned = false)
 {
     $db = JFactory::getDbo();
     $query = $db->getQuery(true);
     // Get a list of the menu items
     $query->select('m.id, m.parent_id, m.title, m.menutype');
     $query->from($db->quoteName('#__menu') . ' AS m');
     $query->where($db->quoteName('m.published') . ' = 1');
     $query->order('m.menutype, m.parent_id');
     //, m.ordering'); //SC
     $db->setQuery($query);
     $mitems = $db->loadObjectList();
     if (!$mitems) {
         $mitems = array();
     }
     // Establish the hierarchy of the menu
     $children = array();
     // First pass - collect children
     foreach ($mitems as $v) {
         $pt = $v->parent_id;
         $list = @$children[$pt] ? $children[$pt] : array();
         array_push($list, $v);
         $children[$pt] = $list;
     }
     // Second pass - get an indent list of the items
     jimport('legacy.html.menu');
     //SC
     $list = JHtmlMenu::TreeRecurse((int) $mitems[0]->parent_id, '', array(), $children, 9999, 0, 0);
     //SC
     // Code that adds menu name to Display of Page(s)
     $mitems = array();
     if ($all | $unassigned) {
         $mitems[] = JHtml::_('select.option', '<OPTGROUP>', JText::_('JOPTION_MENUS'));
         if ($all) {
             $mitems[] = JHtml::_('select.option', 0, JText::_('JALL'));
         }
         if ($unassigned) {
             $mitems[] = JHtml::_('select.option', -1, JText::_('JOPTION_UNASSIGNED'));
         }
         $mitems[] = JHtml::_('select.option', '</OPTGROUP>');
     }
     $lastMenuType = null;
     $tmpMenuType = null;
     foreach ($list as $list_a) {
         if ($list_a->menutype != $lastMenuType) {
             if ($tmpMenuType) {
                 $mitems[] = JHtml::_('select.option', '</OPTGROUP>');
             }
             $mitems[] = JHtml::_('select.option', '<OPTGROUP>', $list_a->menutype);
             $lastMenuType = $list_a->menutype;
             $tmpMenuType = $list_a->menutype;
         }
         $mitems[] = JHtml::_('select.option', $list_a->id, $list_a->title);
     }
     if ($lastMenuType !== null) {
         $mitems[] = JHtml::_('select.option', '</OPTGROUP>');
     }
     return $mitems;
 }
コード例 #2
0
ファイル: menu.php プロジェクト: GitIPFire/Homeworks
 /**
  * Returns an array of menu items grouped by menu.
  *
  * @param   array  $config  An array of configuration options.
  *
  * @return  array
  */
 public static function menuitems($config = array())
 {
     if (empty(self::$items)) {
         $db = JFactory::getDbo();
         $query = $db->getQuery(true)->select('menutype AS value, title AS text')->from($db->quoteName('#__menu_types'))->order('title');
         $db->setQuery($query);
         $menus = $db->loadObjectList();
         $query->clear()->select('a.id AS value, a.title AS text, a.level, a.menutype')->from('#__menu AS a')->where('a.parent_id > 0')->where('a.type <> ' . $db->quote('url'))->where('a.client_id = 0');
         // Filter on the published state
         if (isset($config['published'])) {
             if (is_numeric($config['published'])) {
                 $query->where('a.published = ' . (int) $config['published']);
             } elseif ($config['published'] === '') {
                 $query->where('a.published IN (0,1)');
             }
         }
         $query->order('a.lft');
         $db->setQuery($query);
         $items = $db->loadObjectList();
         // Collate menu items based on menutype
         $lookup = array();
         foreach ($items as &$item) {
             if (!isset($lookup[$item->menutype])) {
                 $lookup[$item->menutype] = array();
             }
             $lookup[$item->menutype][] =& $item;
             $item->text = str_repeat('- ', $item->level) . $item->text;
         }
         self::$items = array();
         foreach ($menus as &$menu) {
             // Start group:
             self::$items[] = JHtml::_('select.optgroup', $menu->text);
             // Special "Add to this Menu" option:
             self::$items[] = JHtml::_('select.option', $menu->value . '.1', JText::_('JLIB_HTML_ADD_TO_THIS_MENU'));
             // Menu items:
             if (isset($lookup[$menu->value])) {
                 foreach ($lookup[$menu->value] as &$item) {
                     self::$items[] = JHtml::_('select.option', $menu->value . '.' . $item->value, $item->text);
                 }
             }
             // Finish group:
             self::$items[] = JHtml::_('select.optgroup', $menu->text);
         }
     }
     return self::$items;
 }
コード例 #3
0
ファイル: menu.php プロジェクト: raquelsa/Joomla
 /**
  * Build the list representing the menu tree
  *
  * @param   integer  $id         Id of the menu item
  * @param   string   $indent     The indentation string
  * @param   array    $list       The list to process
  * @param   array    &$children  The children of the current item
  * @param   integer  $maxlevel   The maximum number of levels in the tree
  * @param   integer  $level      The starting level
  * @param   string   $type       Type of link: component, URL, alias, separator
  *
  * @return  array
  *
  * @since   11.1
  */
 public static function treerecurse($id, $indent, $list, &$children, $maxlevel = 9999, $level = 0, $type = 1)
 {
     if (@$children[$id] && $level <= $maxlevel) {
         foreach ($children[$id] as $v) {
             $id = $v->id;
             if ($type) {
                 $pre = '<sup>|_</sup>&#160;';
                 $spacer = '.&#160;&#160;&#160;&#160;&#160;&#160;';
             } else {
                 $pre = '- ';
                 $spacer = '&#160;&#160;';
             }
             if ($v->parent_id == 0) {
                 $txt = $v->title;
             } else {
                 $txt = $pre . $v->title;
             }
             $pt = $v->parent_id;
             $list[$id] = $v;
             $list[$id]->treename = "{$indent}{$txt}";
             $list[$id]->children = count(@$children[$id]);
             $list = JHtmlMenu::TreeRecurse($id, $indent . $spacer, $list, $children, $maxlevel, $level + 1, $type);
         }
     }
     return $list;
 }
コード例 #4
0
ファイル: JHtmlMenuTest.php プロジェクト: n9iels/joomla-cms
 /**
  * Tests the JHtmlMenu::menuitems method.
  *
  * @return  void
  *
  * @since   3.1
  */
 public function testMenuitems()
 {
     $this->assertContains('<option value="mainmenu.435">- Home</option>', JHtmlSelect::options(JHtmlMenu::menuitems(), array('published' => '1')));
 }