Exemplo n.º 1
1
 /**
  * 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;
 }
Exemplo n.º 2
0
 /**
  * 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);
 }
Exemplo n.º 3
0
 /**
  * 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);
     }
 }
Exemplo n.º 4
0
 /**
  * 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);
 }
Exemplo n.º 5
0
 /**
  * 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);
 }