/** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return mixed A string if successful, otherwise an Error object. */ public function display($tpl = null) { $this->state = $this->get('State'); $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); $this->assoc = $this->get('Assoc'); $this->filterForm = $this->get('FilterForm'); $this->activeFilters = $this->get('ActiveFilters'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } // Preprocess the list of items to find ordering divisions. foreach ($this->items as &$item) { $this->ordering[$item->parent_id][] = $item->id; } // Levels filter - Used in Hathor. $this->f_levels = array(JHtml::_('select.option', '1', JText::_('J1')), JHtml::_('select.option', '2', JText::_('J2')), JHtml::_('select.option', '3', JText::_('J3')), JHtml::_('select.option', '4', JText::_('J4')), JHtml::_('select.option', '5', JText::_('J5')), JHtml::_('select.option', '6', JText::_('J6')), JHtml::_('select.option', '7', JText::_('J7')), JHtml::_('select.option', '8', JText::_('J8')), JHtml::_('select.option', '9', JText::_('J9')), JHtml::_('select.option', '10', JText::_('J10'))); // We don't need toolbar in the modal window. if ($this->getLayout() !== 'modal') { $this->addToolbar(); $this->sidebar = JHtmlSidebar::render(); } else { // In article 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']); } } return parent::display($tpl); }
/** * Display the view. * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return mixed A string if successful, otherwise an Error object. */ public function display($tpl = null) { if ($this->getLayout() !== 'modal') { ContactHelper::addSubmenu('contacts'); } $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'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } // Preprocess the list of items to find ordering divisions. // TODO: Complete the ordering stuff with nested sets foreach ($this->items as &$item) { $item->order_up = true; $item->order_dn = true; } // We don't need toolbar in the modal window. if ($this->getLayout() !== 'modal') { $this->addToolbar(); $this->sidebar = JHtmlSidebar::render(); } else { // In article associations modal we need to remove language filter if forcing a language. // We also need to change the category filter to show show categories with All or the forced 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']); // One last changes needed is to change the category filter to just show categories with All language or with the forced language. $this->filterForm->setFieldAttribute('category_id', 'language', '*,' . $forcedLanguage, 'filter'); } } return parent::display($tpl); }
/** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return mixed A string if successful, otherwise an Error object. */ public function display($tpl = null) { if ($this->getLayout() !== 'modal') { ContentHelper::addSubmenu('articles'); } $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); $this->state = $this->get('State'); $this->authors = $this->get('Authors'); $this->filterForm = $this->get('FilterForm'); $this->activeFilters = $this->get('ActiveFilters'); $this->vote = JPluginHelper::isEnabled('content', 'vote'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } // Levels filter - Used in Hathor. $this->f_levels = array(JHtml::_('select.option', '1', JText::_('J1')), JHtml::_('select.option', '2', JText::_('J2')), JHtml::_('select.option', '3', JText::_('J3')), JHtml::_('select.option', '4', JText::_('J4')), JHtml::_('select.option', '5', JText::_('J5')), JHtml::_('select.option', '6', JText::_('J6')), JHtml::_('select.option', '7', JText::_('J7')), JHtml::_('select.option', '8', JText::_('J8')), JHtml::_('select.option', '9', JText::_('J9')), JHtml::_('select.option', '10', JText::_('J10'))); // We don't need toolbar in the modal window. if ($this->getLayout() !== 'modal') { $this->addToolbar(); $this->sidebar = JHtmlSidebar::render(); } else { // In article associations modal we need to remove language filter if forcing a language. // We also need to change the category filter to show show categories with All or the forced 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']); // One last changes needed is to change the category filter to just show categories with All language or with the forced language. $this->filterForm->setFieldAttribute('category_id', 'language', '*,' . $forcedLanguage, 'filter'); } } return parent::display($tpl); }
/** * @param object $form A form object. * @param mixed $data The data expected for the form. * * @return void * @since 1.1.0 * @throws Exception if there is an error in the form event. */ protected function preprocessForm(JForm $form, $data, $group = 'content') { $contentTypeID = $this->getState($this->getName() . '.content_type_id', 0); if ($contentTypeID) { $isNew = !(bool) $this->getState($this->getName() . '.id', 0); $fieldsForm = new KextensionsForm($form->getName()); $fieldsData = FieldsandfiltersFieldsHelper::getFieldsByTypeIDColumnFieldType($contentTypeID); $fieldsForm->setPath('filters'); $fieldsetXML = new SimpleXMLElement('<fieldset />'); $fieldsetXML->addAttribute('name', 'fieldsandfilters'); JPluginHelper::importPlugin('fieldsandfilterstypes'); // Trigger the onFieldsandfiltersPrepareFormField event. JFactory::getApplication()->triggerEvent('onFieldsandfiltersPrepareFormField', array($fieldsForm, $fieldsData, $isNew)); if ($fieldsFormXML = $fieldsForm->getFormFields()) { // Load the XML Helper KextensionsXML::setFields($fieldsetXML, $fieldsFormXML); $form->setField($fieldsetXML, 'fields'); if ($default = $fieldsForm->getData()) { $form->bind($default); } } } // Trigger the default form events. parent::preprocessForm($form, $data, $group); }
/** * @param JForm $form The form to be altered. * @param array $data The associated data for the form. * * @return boolean * @since 1.0.0 */ public function onFieldsandfiltersPrepareForm(JForm $form, $data) { $context = $form->getName(); if (!($context == $this->_context || $context == 'com_fieldsandfilters.elements.filter')) { return true; } $app = JFactory::getApplication(); if ($context == 'com_fieldsandfilters.elements.filter') { $form->addFieldPath(JPATH_ADMINISTRATOR . '/components/com_categories/models/fields'); $addform = new SimpleXMLElement('<form />'); $fields = $addform->addChild('fields'); $fields->addAttribute('name', 'filter'); $field = $fields->addChild('field'); $field->addAttribute('name', 'item_category'); $field->addAttribute('type', 'category'); $field->addAttribute('label', 'JOPTION_FILTER_CATEGORY'); $field->addAttribute('description', 'JOPTION_FILTER_CATEGORY_DESC'); $field->addAttribute('extension', 'com_content'); $field->addAttribute('onchange', 'this.form.submit();'); KextensionsXML::addOptionsNode($field, array('JOPTION_SELECT_CATEGORY' => '')); $form->load($addform, false); } elseif ($context == $this->_context) { if ($app->isSite() && !$this->params->get('frontend_edit', false) || !($extension = FieldsandfiltersFactory::getExtensions()->getExtensionsByName($this->_name)->get($this->_name))) { return true; } JModelLegacy::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_fieldsandfilters/models', 'FieldsandfiltersModel'); if (!($elementModel = JModelLegacy::getInstance('element', 'FieldsandfiltersModel', array('ignore_request' => true, 'table_path' => JPATH_ADMINISTRATOR . '/components/com_fieldsandfilters/tables')))) { return true; } // Load Extension Language KextensionsLanguage::load('com_fieldsandfilters', JPATH_ADMINISTRATOR); $fieldsForm = new KextensionsForm($this->_context . '.' . $this->_name); $fieldsData = FieldsandfiltersFieldsHelper::getFieldsByTypeIDColumnFieldType($extension->content_type_id); $formPath = $app->isAdmin() ? 'attribs.fieldsandfilters' : 'fieldsandfilters'; $fieldsForm->setPath($formPath); $fieldsetXML = new SimpleXMLElement('<fieldset />'); $fieldsetXML->addAttribute('name', 'fieldsandfilters'); $fieldsetXML->addAttribute('label', 'COM_FIELDSANDFILTERS'); // $fieldsetXML->addAttribute( 'description', 'COM_FIELDSANDFILTERS_FIELDSET_DESC' ); $fielsXML = $fieldsetXML->addChild('fields'); $fielsXML->addAttribute('name', 'fieldsandfilters'); $fieldXML = $fielsXML->addChild('field'); $fieldXML->addAttribute('name', '_fieldsandfilters'); $fieldXML->addAttribute('type', 'hidden'); $fieldXML->addAttribute('fieldset', 'fieldsandfilters'); if (!empty($data)) { $data = (object) $data; $elementModel->setState($elementModel->getName() . '.item_id', $data->id); $elementModel->setState($elementModel->getName() . '.content_type_id', $extension->content_type_id); $elementItem = $elementModel->getItem(); } $isNew = empty($elementItem->id); JPluginHelper::importPlugin('fieldsandfilterstypes'); // Trigger the onFieldsandfiltersPrepareFormField event. $app->triggerEvent('onFieldsandfiltersPrepareFormField', array($fieldsForm, $fieldsData, $isNew)); if ($fieldsFormXML = $fieldsForm->getFormFields()) { // Load the XML Helper KextensionsXML::setFields($fielsXML, $fieldsFormXML); $form->setField($fieldsetXML, $app->isAdmin() ? 'attribs' : null); // For joomla 2.5 && Key Reference if (!FieldsandfiltersFactory::isVersion()) { $fieldsetXML = new SimpleXMLElement('<fieldset />'); $fieldsetXML->addAttribute('name', 'key_reference'); $fieldsetXML->addAttribute('label', 'Key Reference'); $form->setField($fieldsetXML, 'attribs'); } if ($default = $fieldsForm->getData()) { $form->bind($default); } if (!$isNew) { $data = new JRegistry(); $data->set($formPath, $elementItem->get('fields', new JObject())); $form->bind($data); } } return true; } }
/** * Attach element into the form. * * @param JForm $form Form where attach the field * @param array $data Data * @param string $group Group of the field * @param bool $replace Replace the field * * @return void * * @throws RuntimeException */ public function setField(JForm $form, array $data, $group = null, $replace = true) { if (!isset($data['name'], $data['label'])) { throw new RuntimeException("Internal error: Data field requires mandatory 'name' and 'label' attributes."); } $element = new SimpleXMLElement('<field type="' . $this->fieldType . '" />'); foreach ($this->fieldProperties as $property) { if (!isset($data[$property])) { continue; } $element->addAttribute($property, $data[$property]); } $form->setField($element, $group, $replace); }