/** * @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') { $data = $data instanceof JRegistry ? $data : new JRegistry($data); $fieldType = $data->get('type', $this->getState($this->getName() . '.type')); $typeMode = $data->get('type_mode', FieldsandfiltersModes::getModeName($data->get('mode', $this->getState($this->getName() . '.mode')), FieldsandfiltersModes::MODE_NAME_TYPE)); try { if ($fieldType && $typeMode && ($type = FieldsandfiltersFactory::getTypes()->getTypes(true)->get($fieldType))) { $path = $type->forms->get($typeMode, new JObject())->get('path'); $form::addFormPath($path); if (!$form->loadFile($typeMode, true, '/metadata/form/*')) { throw new Exception(JText::_('JERROR_LOADFILE_FAILED')); } if ($layoutType = $data->get('params.type.' . $typeMode . '_layout', $this->getState($this->getName() . '.layoutType'))) { $paths = array(JPath::clean(JPATH_PLUGINS . '/' . $type->type . '/' . $type->name . '/tmpl/' . $typeMode)); if (strpos($layoutType, ':') > 0 && strpos($layoutType, '_:') !== 0) { list($template, $layoutType) = explode(':', $layoutType); $paths[] = JPATH::clean(JPATH_SITE . '/templates/' . $template . '/html/plg_' . $type->type . '_' . $type->name . '/' . $typeMode); } $path = JPath::find($paths, $layoutType . '.xml'); if (is_file($path)) { if (!$form->loadFile($path, true, '/form/*')) { throw new Exception(JText::_('JERROR_LOADFILE_FAILED')); } } } // load plugin language KextensionsLanguage::load('plg_' . $type->type . '_' . $type->name, JPATH_ADMINISTRATOR); } $contentTypeId = $data->get('content_type_id', $this->getState($this->getName() . '.content_type_id')); $extensionForm = $data->get('extension_form', 'extension'); // get extension type objet by type id or plugin type if ($contentTypeId && ($extension = FieldsandfiltersFactory::getExtensions()->getExtensionsByTypeID($contentTypeId, true, true)->get($contentTypeId))) { $path = $extension->forms->get($extensionForm, new JObject())->get('path'); $form::addFormPath($path); if (!$form->loadFile($extensionForm, true, '/metadata/form/*')) { throw new Exception(JText::_('JERROR_LOADFILE_FAILED')); } // load plugin language KextensionsLanguage::load('plg_' . $extension->type . '_' . $extension->name, JPATH_ADMINISTRATOR); } } catch (Exception $e) { $this->setError($e->getMessage()); return; } // overwrite the mode default of the plugin type mode $form->setFieldAttribute('mode', 'default', FieldsandfiltersModes::getMode($form->getFieldAttribute('mode', 'value', 'field.text', 'properties'))); // Trigger the default form events. parent::preprocessForm($form, $data, $group); }
/** * @since 1.1.0 */ public function getFieldsandfiltersFieldsHTML(JObject $layoutFields, Jobject $fields, stdClass $element = null, $context = 'fields', JRegistry $params = null, $ordering = 'ordering') { if (!($fields = $fields->get($this->_name))) { return; } $fields = is_array($fields) ? $fields : array($fields); $variables = new JObject(); $variables->type = $this->_type; $variables->name = $this->_name; $variables->params = $this->params; $variables->element = $element; while ($field = array_shift($fields)) { $modeName = FieldsandfiltersModes::getModeName($field->mode); $isStaticMode = $modeName == FieldsandfiltersModes::MODE_STATIC; if ($isStaticMode && empty($field->data) || $modeName == 'field' && (!isset($element->data) || !property_exists($element->data, $field->id))) { continue; } if ($params) { $paramsTemp = $field->params; $paramsField = clone $field->params; $paramsField->merge($params); $field->params = $paramsField; } if ($field->params->get('base.show_name')) { FieldsandfiltersFieldsField::preparationContent('base.prepare_name', $field, 'name', $context, $field->id, $params); } if ($field->params->get('base.site_enabled_description')) { FieldsandfiltersFieldsField::preparationContent('base.prepare_description', $field, 'description', $context, $field->id, $params); } if ($isStaticMode) { FieldsandfiltersFieldsField::preparationContent('type.prepare_data', $field, 'data', $context, $field->id, $params); } else { FieldsandfiltersFieldsField::preparationContentData('type.prepare_data', $field, $element, $context, $field->id, $params); } $layoutField = FieldsandfiltersFieldsField::getLayout('field', $modeName, $field->params); $variables->field = $field; $layout = KextensionsPlugin::renderLayout($variables, $layoutField); $layoutFields->set(KextensionsArray::getEmptySlotObject($layoutFields, $field->{$ordering}, false), $layout); if ($params) { $field->params = $paramsTemp; unset($paramsField); } } unset($variables); }
</ul> </div> </div> <?php } ?> </div> </td> <td class="center"> <?php if ($type = $typesHelper->getTypes(true)->get($item->type)) { ?> <?php KextensionsLanguage::load('plg_' . $type->type . '_' . $type->name, JPATH_ADMINISTRATOR); $typeName = FieldsandfiltersModes::getModeName($item->mode, FieldsandfiltersModes::MODE_NAME_TYPE); $typeForm = $type->forms->get($typeName, new JObject()); if (isset($typeForm->group->title)) { $titleType = JText::_($typeForm->title) . ' [' . JText::_($typeForm->group->title) . ']'; } else { $titleType = JText::_($typeForm->title); } ?> <?php echo $titleType; ?> <?php } else { ?> <?php echo JText::_('JUNDEFINED');
/** * @since 1.1.0 */ public function getFieldsandfiltersFieldsHTML(JObject $layoutFields, Jobject $fields, stdClass $element = null, $context = 'fields', JRegistry $params = null, $ordering = 'ordering') { if (!($fields = $fields->get($this->_name))) { return; } $fields = is_array($fields) ? $fields : array($fields); $variables = new JObject(); $variables->type = $this->_type; $variables->name = $this->_name; $variables->params = $this->params; $variables->element = $element; jimport('joomla.filesystem.file'); while ($field = array_shift($fields)) { $modeName = FieldsandfiltersModes::getModeName($field->mode); $isStaticMode = $modeName == FieldsandfiltersModes::MODE_STATIC; if ($isStaticMode && empty($field->data) || $modeName == 'field' && (!isset($element->data) || !property_exists($element->data, $field->id))) { continue; } $dataElement = $isStaticMode ? $field->data : $element->data->get($field->id); if (is_string($dataElement)) { if ($isStaticMode) { $field->data = new JRegistry($dataElement); } else { $element->data->set($field->id, new JRegistry($dataElement)); } } if ($params) { $paramsTemp = $field->params; $paramsField = clone $field->params; $paramsField->merge($params); $field->params = $paramsField; } if ($field->params->get('base.show_name')) { FieldsandfiltersFieldsField::preparationContent('base.prepare_name', $field, 'name', $context, $field->id, $params); } if ($field->params->get('base.site_enabled_description')) { FieldsandfiltersFieldsField::preparationContent('base.prepare_description', $field, 'description', $context, $field->id, $params); } // create new image if not exists $scaleImage = (int) $field->params->def('type.scale', $this->params->get('scale', 0)); $createThumb = (bool) $field->params->get('type.create_thumb'); $scaleThumb = (int) $field->params->def('type.scale_thumb', $this->params->get('scale_thumb', 0)); if ($scaleImage || $createThumb && $scaleThumb) { $data = $isStaticMode ? $field->data : $element->data->get($field->id, new JRegistry()); if (($image = $data->get('image')) && file_exists(JPath::clean(JPATH_ROOT . '/' . $image))) { if ($scaleImage && ($src = $data->get('src')) && !file_exists(JPath::clean(JPATH_ROOT . '/' . $src))) { $imageInfo = self::prepareImageInfo($field, $element, $image, basename($src), $scaleImage); try { if (!FieldsandfiltersImage::createImage($field->name, $imageInfo)) { throw new RuntimeException(JText::sprintf('COM_FIELDSANDFILTERS_ERROR_NOT_CREATE_IMAGE', $field->name)); } } catch (Exception $e) { JLog::add($e->getMessage(), JLog::ERROR, 'plgFieldsandfiltersTypesImage'); } } if ($createThumb && $scaleThumb && ($src = $data->get('src_thumb')) && !file_exists(JPath::clean(JPATH_ROOT . '/' . $src))) { $imageInfo = $this->prepareImageInfo($field, $element, $image, basename($src), $scaleThumb, 'thumb'); try { if (!FieldsandfiltersImage::createImage($field->name . ' Thumbs', $imageInfo)) { throw new RuntimeException(JText::sprintf('COM_FIELDSANDFILTERS_ERROR_NOT_CREATE_IMAGE', $field->name . ' Thumb')); } } catch (Exception $e) { JLog::add($e->getMessage(), JLog::ERROR, 'plgFieldsandfiltersTypesImage'); } } } unset($data, $imageInfo); } unset($fieldTypeParams); $layoutField = FieldsandfiltersFieldsField::getLayout('field', $modeName, $field->params); $variables->field = $field; $layout = KextensionsPlugin::renderLayout($variables, $layoutField); $layoutFields->set(KextensionsArray::getEmptySlotObject($layoutFields, $field->{$ordering}, false), $layout); if ($params) { $field->params = $paramsTemp; unset($paramsField); } } unset($variables, $imageInfo); }
/** * Method to get the field input markup. * * @return string The field input markup. * @since 1.2.0 */ protected function getInput() { // Initialise variables $value = ''; $html = array(); $size = !empty($this->size) ? ' size="' . $this->size . '"' : ''; $class = !empty($this->class) ? ' class="' . $this->class . '"' : 'class="inputbox"'; $recordId = (int) $this->form->getValue('id', 0); $mode = (int) $this->form->getValue('mode', 0); $typesHelper = FieldsandfiltersFactory::getTypes(); if ($mode && ($pluginType = $typesHelper->getTypes(true)->get($this->value))) { // Load Extensions Helper KextensionsLanguage::load('plg_' . $pluginType->type . '_' . $pluginType->name, JPATH_ADMINISTRATOR); $modeName = FieldsandfiltersModes::getModeName($mode, FieldsandfiltersModes::MODE_NAME_TYPE); $typeForm = $pluginType->forms->get($modeName, new JObject()); if (isset($typeForm->group->title)) { $value = JText::_($typeForm->title) . ' [' . JText::_($typeForm->group->title) . ']'; } else { if (isset($typeForm->title)) { $value = JText::_($typeForm->title); } } } // Load the javascript and css JHtml::_('behavior.framework'); JHtml::_('behavior.modal'); $query = array('option' => 'com_fieldsandfilters', 'view' => 'plugins', 'tmpl' => 'component', 'layout' => 'types', 'recordId' => $recordId); $link = JRoute::_('index.php?' . JURI::buildQuery($query)); if (FieldsandfiltersFactory::isVersion()) { $html[] = '<span class="input-append">'; $html[] = ' <input type="text" readonly="readonly" disabled="disabled" value="' . $value . '"' . $size . $class . ' />'; $html[] = ' <a class="btn btn-primary" onclick="SqueezeBox.fromElement(this, {handler:\'iframe\', size: {x: 600, y: 450}, url:\'' . $link . '\'})">'; $html[] = ' <i class="icon-list icon-white"></i>'; $html[] = JText::_('JSELECT'); $html[] = ' </a>'; $html[] = '</span>'; $html[] = '<input class="input-small" type="hidden" name="' . $this->name . '" value="' . htmlspecialchars($this->value, ENT_COMPAT, 'UTF-8') . '" />'; } else { $html[] = '<input type="text" readonly="readonly" disabled="disabled" value="' . $value . '"' . $size . $class . ' />'; $html[] = '<input type="button" value="' . JText::_('JSELECT') . '" onclick="SqueezeBox.fromElement(this, {handler:\'iframe\', size: {x: 600, y: 450}, url:\'' . $link . '\'})" />'; $html[] = '<input type="hidden" name="' . $this->name . '" value="' . htmlspecialchars($this->value, ENT_COMPAT, 'UTF-8') . '" />'; } return implode("\n", $html); }