* @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Menus\Administrator\View\Menutypes; use Joomla\CMS\Factory; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; use Joomla\CMS\Object\CMSObject; use Joomla\CMS\Toolbar\Toolbar; use Joomla\CMS\Toolbar\ToolbarHelper; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * The HTML Menus Menu Item Types View. * * @since 1.6 */ class HtmlView extends BaseHtmlView { /** * The menu type id * * @var integer * @since 4.0.0 */ protected $recordId; /** * Array of menu types * * @var CMSObject[] * * @since 3.7.0 */ protected $types; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void * * @since 1.6 */ public function display($tpl = null) { $app = Factory::getApplication(); $this->recordId = $app->input->getInt('recordId'); $types = $this->get('TypeOptions'); $this->addCustomTypes($types); $sortedTypes = array(); foreach ($types as $name => $list) { $tmp = array(); foreach ($list as $item) { $tmp[Text::_($item->title)] = $item; } uksort($tmp, 'strcasecmp'); $sortedTypes[Text::_($name)] = $tmp; } uksort($sortedTypes, 'strcasecmp'); $this->types = $sortedTypes; $this->addToolbar(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 3.0 */ protected function addToolbar() { // Add page title ToolbarHelper::title(Text::_('COM_MENUS'), 'list menumgr'); // Get the toolbar object instance $bar = Toolbar::getInstance('toolbar'); // Cancel $title = Text::_('JTOOLBAR_CANCEL'); $dhtml = ""; $bar->appendButton('Custom', $dhtml, 'new'); } /** * Method to add system link types to the link types array * * @param array $types The list of link types * * @return void * * @since 3.7.0 */ protected function addCustomTypes(&$types) { if (empty($types)) { $types = array(); } // Adding System Links $list = array(); $o = new CMSObject(); $o->title = 'COM_MENUS_TYPE_EXTERNAL_URL'; $o->type = 'url'; $o->description = 'COM_MENUS_TYPE_EXTERNAL_URL_DESC'; $o->request = null; $list[] = $o; $o = new CMSObject(); $o->title = 'COM_MENUS_TYPE_ALIAS'; $o->type = 'alias'; $o->description = 'COM_MENUS_TYPE_ALIAS_DESC'; $o->request = null; $list[] = $o; $o = new CMSObject(); $o->title = 'COM_MENUS_TYPE_SEPARATOR'; $o->type = 'separator'; $o->description = 'COM_MENUS_TYPE_SEPARATOR_DESC'; $o->request = null; $list[] = $o; $o = new CMSObject(); $o->title = 'COM_MENUS_TYPE_HEADING'; $o->type = 'heading'; $o->description = 'COM_MENUS_TYPE_HEADING_DESC'; $o->request = null; $list[] = $o; if ($this->get('state')->get('client_id') == 1) { $o = new CMSObject(); $o->title = 'COM_MENUS_TYPE_CONTAINER'; $o->type = 'container'; $o->description = 'COM_MENUS_TYPE_CONTAINER_DESC'; $o->request = null; $list[] = $o; } $types['COM_MENUS_TYPE_SYSTEM'] = $list; } }