/** * Method to display a view. * * @param boolean If true, the view output will be cached * @param array An array of safe url parameters and their variable types, for valid values see {@link JFilterInput::clean()}. * * @return JController This object to support chaining. * @since 1.5 */ public function display($cachable = false, $urlparams = false) { require_once JPATH_COMPONENT . '/helpers/menus.php'; // Load the submenu. MenusHelper::addSubmenu(JRequest::getCmd('view')); $view = JRequest::getCmd('view', 'menus'); $layout = JRequest::getCmd('layout', 'default'); $id = JRequest::getInt('id'); // Check for edit form. if ($view == 'menu' && $layout == 'edit' && !$this->checkEditId('com_menus.edit.menu', $id)) { // Somehow the person just went to the form - we don't allow that. $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_UNHELD_ID', $id)); $this->setMessage($this->getError(), 'error'); $this->setRedirect(JRoute::_('index.php?option=com_menus&view=menus', false)); return false; } elseif ($view == 'item' && $layout == 'edit' && !$this->checkEditId('com_menus.edit.item', $id)) { // Somehow the person just went to the form - we don't allow that. $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_UNHELD_ID', $id)); $this->setMessage($this->getError(), 'error'); $this->setRedirect(JRoute::_('index.php?option=com_menus&view=items', false)); return false; } parent::display(); return $this; }
/** * 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) { $this->items = $this->get('Items'); $this->modules = $this->get('Modules'); $this->pagination = $this->get('Pagination'); $this->state = $this->get('State'); MenusHelper::addSubmenu('menus'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $this->addToolbar(); $this->sidebar = JHtmlSidebar::render(); parent::display($tpl); }
/** * Method to display a view. * * @return void */ function display() { // Get the document object. $document =& JFactory::getDocument(); // Set the default view name and format from the Request. $vName = JRequest::getWord('view', 'items'); $vFormat = $document->getType(); $lName = JRequest::getWord('layout', 'default'); // Get and render the view. if ($view =& $this->getView($vName, $vFormat)) { // Get the model for the view. $model =& $this->getModel($vName); // Push the model into the view (as default). $view->setModel($model, true); $view->setLayout($lName); // Push document object into the view. $view->assignRef('document', $document); $view->display(); // Load the submenu. require_once JPATH_COMPONENT . DS . 'helpers' . DS . 'menus.php'; MenusHelper::addSubmenu($vName); } }
/** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { $lang = JFactory::getLanguage(); $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); $this->state = $this->get('State'); $this->filterForm = $this->get('FilterForm'); $this->activeFilters = $this->get('ActiveFilters'); MenusHelper::addSubmenu('items'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $this->ordering = array(); // Preprocess the list of items to find ordering divisions. foreach ($this->items as $item) { $this->ordering[$item->parent_id][] = $item->id; // Item type text switch ($item->type) { case 'url': $value = JText::_('COM_MENUS_TYPE_EXTERNAL_URL'); break; case 'alias': $value = JText::_('COM_MENUS_TYPE_ALIAS'); break; case 'separator': $value = JText::_('COM_MENUS_TYPE_SEPARATOR'); break; case 'heading': $value = JText::_('COM_MENUS_TYPE_HEADING'); break; case 'component': default: // Load language $lang->load($item->componentname . '.sys', JPATH_ADMINISTRATOR, null, false, true) || $lang->load($item->componentname . '.sys', JPATH_ADMINISTRATOR . '/components/' . $item->componentname, null, false, true); if (!empty($item->componentname)) { $value = JText::_($item->componentname); $vars = null; parse_str($item->link, $vars); if (isset($vars['view'])) { // Attempt to load the view xml file. $file = JPATH_SITE . '/components/' . $item->componentname . '/views/' . $vars['view'] . '/metadata.xml'; if (!is_file($file)) { $file = JPATH_SITE . '/components/' . $item->componentname . '/view/' . $vars['view'] . '/metadata.xml'; } if (is_file($file) && ($xml = simplexml_load_file($file))) { // Look for the first view node off of the root node. if ($view = $xml->xpath('view[1]')) { if (!empty($view[0]['title'])) { $vars['layout'] = isset($vars['layout']) ? $vars['layout'] : 'default'; // Attempt to load the layout xml file. // If Alternative Menu Item, get template folder for layout file if (strpos($vars['layout'], ':') > 0) { // Use template folder for layout file $temp = explode(':', $vars['layout']); $file = JPATH_SITE . '/templates/' . $temp[0] . '/html/' . $item->componentname . '/' . $vars['view'] . '/' . $temp[1] . '.xml'; // Load template language file $lang->load('tpl_' . $temp[0] . '.sys', JPATH_SITE, null, false, true) || $lang->load('tpl_' . $temp[0] . '.sys', JPATH_SITE . '/templates/' . $temp[0], null, false, true); } else { // Get XML file from component folder for standard layouts $file = JPATH_SITE . '/components/' . $item->componentname . '/views/' . $vars['view'] . '/tmpl/' . $vars['layout'] . '.xml'; if (!file_exists($file)) { $file = JPATH_SITE . '/components/' . $item->componentname . '/view/' . $vars['view'] . '/tmpl/' . $vars['layout'] . '.xml'; } } if (is_file($file) && ($xml = simplexml_load_file($file))) { // Look for the first view node off of the root node. if ($layout = $xml->xpath('layout[1]')) { if (!empty($layout[0]['title'])) { $value .= ' » ' . JText::_(trim((string) $layout[0]['title'])); } } if (!empty($layout[0]->message[0])) { $item->item_type_desc = JText::_(trim((string) $layout[0]->message[0])); } } } } unset($xml); } else { // Special case for absent views $value .= ' » ' . $vars['view']; } } } else { if (preg_match("/^index.php\\?option=([a-zA-Z\\-0-9_]*)/", $item->link, $result)) { $value = JText::sprintf('COM_MENUS_TYPE_UNEXISTING', $result[1]); } else { $value = JText::_('COM_MENUS_TYPE_UNKNOWN'); } } break; } $item->item_type = $value; } // Levels filter. $options = array(); $options[] = JHtml::_('select.option', '1', JText::_('J1')); $options[] = JHtml::_('select.option', '2', JText::_('J2')); $options[] = JHtml::_('select.option', '3', JText::_('J3')); $options[] = JHtml::_('select.option', '4', JText::_('J4')); $options[] = JHtml::_('select.option', '5', JText::_('J5')); $options[] = JHtml::_('select.option', '6', JText::_('J6')); $options[] = JHtml::_('select.option', '7', JText::_('J7')); $options[] = JHtml::_('select.option', '8', JText::_('J8')); $options[] = JHtml::_('select.option', '9', JText::_('J9')); $options[] = JHtml::_('select.option', '10', JText::_('J10')); $this->f_levels = $options; $this->addToolbar(); $this->sidebar = JHtmlSidebar::render(); // Allow a system plugin to insert dynamic menu types to the list shown in menus: JEventDispatcher::getInstance()->trigger('onBeforeRenderMenuItems', array($this)); parent::display($tpl); }
/** * 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) { $user = JFactory::getUser(); $lang = JFactory::getLanguage(); $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); $this->state = $this->get('State'); $this->filterForm = $this->get('FilterForm'); $this->activeFilters = $this->get('ActiveFilters'); MenusHelper::addSubmenu('items'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $this->ordering = array(); // Preprocess the list of items to find ordering divisions. foreach ($this->items as $item) { $this->ordering[$item->parent_id][] = $item->id; // Item type text switch ($item->type) { case 'url': $value = JText::_('COM_MENUS_TYPE_EXTERNAL_URL'); break; case 'alias': $value = JText::_('COM_MENUS_TYPE_ALIAS'); break; case 'separator': $value = JText::_('COM_MENUS_TYPE_SEPARATOR'); break; case 'heading': $value = JText::_('COM_MENUS_TYPE_HEADING'); break; case 'component': default: // Load language $lang->load($item->componentname . '.sys', JPATH_ADMINISTRATOR, null, false, true) || $lang->load($item->componentname . '.sys', JPATH_ADMINISTRATOR . '/components/' . $item->componentname, null, false, true); if (!empty($item->componentname)) { $titleParts = array(); $titleParts[] = JText::_($item->componentname); $vars = null; parse_str($item->link, $vars); if (isset($vars['view'])) { // Attempt to load the view xml file. $file = JPATH_SITE . '/components/' . $item->componentname . '/views/' . $vars['view'] . '/metadata.xml'; if (!is_file($file)) { $file = JPATH_SITE . '/components/' . $item->componentname . '/view/' . $vars['view'] . '/metadata.xml'; } if (is_file($file) && ($xml = simplexml_load_file($file))) { // Look for the first view node off of the root node. if ($view = $xml->xpath('view[1]')) { // Add view title if present. if (!empty($view[0]['title'])) { $viewTitle = trim((string) $view[0]['title']); // Check if the key is valid. Needed due to B/C so we don't show untranslated keys. This check should be removed with Joomla 4. if ($lang->hasKey($viewTitle)) { $titleParts[] = JText::_($viewTitle); } } } } $vars['layout'] = isset($vars['layout']) ? $vars['layout'] : 'default'; // Attempt to load the layout xml file. // If Alternative Menu Item, get template folder for layout file if (strpos($vars['layout'], ':') > 0) { // Use template folder for layout file $temp = explode(':', $vars['layout']); $file = JPATH_SITE . '/templates/' . $temp[0] . '/html/' . $item->componentname . '/' . $vars['view'] . '/' . $temp[1] . '.xml'; // Load template language file $lang->load('tpl_' . $temp[0] . '.sys', JPATH_SITE, null, false, true) || $lang->load('tpl_' . $temp[0] . '.sys', JPATH_SITE . '/templates/' . $temp[0], null, false, true); } else { // Get XML file from component folder for standard layouts $file = JPATH_SITE . '/components/' . $item->componentname . '/views/' . $vars['view'] . '/tmpl/' . $vars['layout'] . '.xml'; if (!file_exists($file)) { $file = JPATH_SITE . '/components/' . $item->componentname . '/view/' . $vars['view'] . '/tmpl/' . $vars['layout'] . '.xml'; } } if (is_file($file) && ($xml = simplexml_load_file($file))) { // Look for the first view node off of the root node. if ($layout = $xml->xpath('layout[1]')) { if (!empty($layout[0]['title'])) { $titleParts[] = JText::_(trim((string) $layout[0]['title'])); } } if (!empty($layout[0]->message[0])) { $item->item_type_desc = JText::_(trim((string) $layout[0]->message[0])); } } unset($xml); // Special case if neither a view nor layout title is found if (count($titleParts) == 1) { $titleParts[] = $vars['view']; } } $value = implode(' » ', $titleParts); } else { if (preg_match("/^index.php\\?option=([a-zA-Z\\-0-9_]*)/", $item->link, $result)) { $value = JText::sprintf('COM_MENUS_TYPE_UNEXISTING', $result[1]); } else { $value = JText::_('COM_MENUS_TYPE_UNKNOWN'); } } break; } $item->item_type = $value; } // Levels filter. $options = array(); $options[] = JHtml::_('select.option', '1', JText::_('J1')); $options[] = JHtml::_('select.option', '2', JText::_('J2')); $options[] = JHtml::_('select.option', '3', JText::_('J3')); $options[] = JHtml::_('select.option', '4', JText::_('J4')); $options[] = JHtml::_('select.option', '5', JText::_('J5')); $options[] = JHtml::_('select.option', '6', JText::_('J6')); $options[] = JHtml::_('select.option', '7', JText::_('J7')); $options[] = JHtml::_('select.option', '8', JText::_('J8')); $options[] = JHtml::_('select.option', '9', JText::_('J9')); $options[] = JHtml::_('select.option', '10', JText::_('J10')); $this->f_levels = $options; // We don't need toolbar in the modal window. if ($this->getLayout() !== 'modal') { $this->addToolbar(); $this->sidebar = JHtmlSidebar::render(); } else { // In menu items associations modal we need to remove language filter if forcing a language. if ($forcedLanguage = JFactory::getApplication()->input->get('forcedLanguage', '', 'CMD')) { // If the language is forced we can't allow to select the language, so transform the language selector filter into an hidden field. $languageXml = new SimpleXMLElement('<field name="language" type="hidden" default="' . $forcedLanguage . '" />'); $this->filterForm->setField($languageXml, 'filter', true); // Also, unset the active language filter so the search tools is not open by default with this filter. unset($this->activeFilters['language']); } } // Allow a system plugin to insert dynamic menu types to the list shown in menus: JEventDispatcher::getInstance()->trigger('onBeforeRenderMenuItems', array($this)); parent::display($tpl); }