/** * @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); }
/** * onFieldsandfiltersPrepareFormField * * @param KextensionsForm $form The form to be altered. * @param JObject $data The associated data for the form. * @param boolean $isNew Is element is new * @param string $fieldset Fieldset name * * @return boolean * @since 1.1.0 */ public function onFieldsandfiltersPrepareFormField(KextensionsForm $form, JObject $data, $isNew = false, $fieldset = 'fieldsandfilters') { if (!($fields = $data->get($this->_name))) { return true; } $fields = is_array($fields) ? $fields : array($fields); $staticMode = (array) FieldsandfiltersModes::getMode(FieldsandfiltersModes::MODE_STATIC); $syntax = KextensionsPlugin::getParams('system', 'fieldsandfilters')->get('syntax', '#{%s}'); while ($field = array_shift($fields)) { $root = new SimpleXMLElement('<fields />'); $root->addAttribute('name', 'data'); $rootJson = $root->addChild('fields'); $rootJson->addAttribute('name', $field->id); $label = '<strong>' . $field->name . '</strong> ' . sprintf($syntax, $field->id); if ($field->state == -1) { $label .= ' [' . JText::_('PLG_FIELDSANDFILTERS_FORM_ONLY_ADMIN') . ']'; } if (!($isStaticMode = in_array($field->mode, $staticMode))) { // name spacer $element = $rootJson->addChild('field'); $element->addAttribute('type', 'spacer'); $element->addAttribute('name', 'name_spacer_' . $field->id); $element->addAttribute('label', $label); $element->addAttribute('translate_label', 'false'); $element->addAttribute('class', 'text'); $element->addAttribute('fieldset', $fieldset); } if (!empty($field->description) && $field->params->get('base.admin_enabled_description', 0)) { switch ($field->params->get('base.admin_description_type', 'description')) { case 'tip': $element->addAttribute('description', $field->description); $element->addAttribute('translate_description', 'false'); break; case 'description': default: $element = $rootJson->addChild('field'); $element->addAttribute('type', 'spacer'); $element->addAttribute('name', 'description_spacer_' . $field->id); $element->addAttribute('label', $field->description); $element->addAttribute('translate_label', 'false'); $element->addAttribute('fieldset', $fieldset); break; } } $element = $rootJson->addChild('field'); $element->addAttribute('labelclass', 'control-label'); $element->addAttribute('fieldset', $fieldset); if ($isStaticMode) { $label .= ' [' . JText::_('PLG_FIELDSANDFILTERS_FORM_GROUP_STATIC_TITLE') . ']'; $element->addAttribute('type', 'spacer'); $element->addAttribute('description', $field->data); $element->addAttribute('name', $field->id); $element->addAttribute('label', $label); $element->addAttribute('translate_label', 'false'); $element->addAttribute('translate_description', 'false'); } else { //image $element->addAttribute('name', 'image'); $element->addAttribute('type', 'media'); $element->addAttribute('class', 'inputbox'); $element->addAttribute('label', 'PLG_FAF_TS_IE_FORM_IMAGE_LBL'); $element->addAttribute('description', 'PLG_FAF_TS_IE_FORM_IMAGE_DESC'); $element->addAttribute('filter', 'safehtml'); if ($field->required) { $element->addAttribute('required', 'true'); } //src $element = $rootJson->addChild('field'); $element->addAttribute('name', 'src'); $element->addAttribute('type', 'hidden'); $element->addAttribute('filter', 'safehtml'); $element->addAttribute('fieldset', $fieldset); // caption $element = $rootJson->addChild('field'); $element->addAttribute('name', 'caption'); $element->addAttribute('type', 'text'); $element->addAttribute('class', 'inputbox'); $element->addAttribute('labelclass', 'control-label'); $element->addAttribute('label', 'PLG_FAF_TS_IE_FORM_CAPTION_LBL'); $element->addAttribute('description', 'PLG_FAF_TS_IE_FORM_CAPTION_DESC'); $element->addAttribute('filter', 'safehtml'); $element->addAttribute('fieldset', $fieldset); // alt $element = $rootJson->addChild('field'); $element->addAttribute('name', 'alt'); $element->addAttribute('type', 'text'); $element->addAttribute('class', 'inputbox'); $element->addAttribute('labelclass', 'control-label'); $element->addAttribute('label', 'PLG_FAF_TS_IE_FORM_ALT_LBL'); $element->addAttribute('description', 'PLG_FAF_TS_IE_FORM_ALT_DESC'); $element->addAttribute('filter', 'safehtml'); $element->addAttribute('fieldset', $fieldset); if ($field->params->get('type.create_thumb')) { //src thumb $element = $rootJson->addChild('field'); $element->addAttribute('name', 'src_thumb'); $element->addAttribute('type', 'hidden'); $element->addAttribute('filter', 'safehtml'); $element->addAttribute('fieldset', $fieldset); } else { // link $element = $rootJson->addChild('field'); $element->addAttribute('name', 'link'); $element->addAttribute('type', 'text'); $element->addAttribute('class', 'inputbox'); $element->addAttribute('labelclass', 'control-label'); $element->addAttribute('label', 'PLG_FAF_TS_IE_FORM_LINK_LBL'); $element->addAttribute('description', 'PLG_FAF_TS_IE_FORM_LINK_DESC'); $element->addAttribute('filter', 'safehtml'); $element->addAttribute('fieldset', $fieldset); // link target $element = $rootJson->addChild('field'); $element->addAttribute('name', 'target'); $element->addAttribute('type', 'list'); $element->addAttribute('class', 'inputbox'); $element->addAttribute('labelclass', 'control-label'); $element->addAttribute('label', 'PLG_FAF_TS_IE_FORM_TARGET_LBL'); $element->addAttribute('description', 'PLG_FAF_TS_IE_FORM_TARGET_DESC'); $element->addAttribute('fieldset', $fieldset); KextensionsXML::addOptionsNode($element, array('PLG_FAF_TS_IE_FORM_TARGET_OPTION_DEFAULT' => '', 'PLG_FAF_TS_IE_FORM_TARGET_OPTION_BLANK' => 1, 'PLG_FAF_TS_IE_FORM_TARGET_OPTION_POPUP' => 2, 'PLG_FAF_TS_IE_FORM_TARGET_OPTION_MODAL' => 3, 'PLG_FAF_TS_IE_FORM_TARGET_OPTION_PARENT' => 4)); } } // hr bottom spacer $element = $rootJson->addChild('field'); $element->addAttribute('type', 'spacer'); $element->addAttribute('name', 'hr_bottom_spacer_' . $field->id); $element->addAttribute('hr', 'true'); $element->addAttribute('fieldset', $fieldset); $form->addOrder($field->id, $field->ordering)->setField($field->id, $root); } return true; }
/** * @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; } }