/**
  * @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);
 }