/** * Method to get the available options plugin item type. value & text * * @return array array associate value and text * @since 1.1.0 */ public static function extensions($excluded = array()) { $options = array(); if ($extensions = get_object_vars(FieldsandfiltersFactory::getExtensions()->getExtensions())) { while ($extension = array_shift($extensions)) { if (!in_array($extension->name, $excluded)) { // load plugin language if ($extension->name != FieldsandfiltersExtensions::EXTENSION_DEFAULT) { $extensionName = 'plg_' . $extension->type . '_' . $extension->name; KextensionsLanguage::load($extensionName, JPATH_ADMINISTRATOR); } else { $extensionName = $extension->type . '_' . $extension->name; } $options[] = JHtml::_('select.option', $extension->content_type_id, JText::_(strtoupper($extensionName))); } } } return $options; }
<?php $pluginType = current($pluginTypes); KextensionsLanguage::load('plg_' . $pluginType->type . '_' . $pluginType->name, JPATH_ADMINISTRATOR); $group = $pluginType->forms->get($nameGroup)->group; echo JHtml::_('bootstrap.addSlide', 'pluginTypes', JText::_($group->title), 'type' . $nameGroup); ?> <ul class="nav nav-tabs nav-stacked <?php echo $option; ?> "> <?php foreach ($pluginTypes as &$type) { ?> <?php if ($pluginType != $type) { KextensionsLanguage::load('plg_' . $type->type . '_' . $type->name, JPATH_ADMINISTRATOR); } $form = $type->forms->get($nameGroup); $options = array('id' => $recordId, 'type' => $type->type, 'name' => $type->name, 'type_mode' => $nameGroup); ?> <li> <a class="choose_type" href="#" title="<?php echo $this->escape($form->description); ?> " onclick="javascript:setType('<?php echo base64_encode(json_encode($options)); ?> ')"> <?php if ($document->direction != 'rtl') {
/** * @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 onFieldsandfiltersRequestJSON($context, JObject $data) { if ($context != 'com_fieldsandfilters.filters.content') { return; } $app = JFactory::getApplication(); $jinput = $app->input; $document = JFactory::getDocument(); $basePath = sprintf('%s/%s/%s/overrides', JPATH_PLUGINS, $this->_type, $this->_name); $contentPath = JPATH_SITE . '/components/com_content'; $id = $jinput->get('id', 0, 'int'); $context = $jinput->get('context'); if (!in_array($context, $this->_contexts)) { return false; } // Load PluginExtensions Helper $extension = FieldsandfiltersFactory::getExtensions()->getExtensionsByName($this->_name)->get($this->_name); if ($context == $this->_contexts['category'] && !$id || !$extension) { return false; } list($option, $class) = explode('.', $context); // set new jinput values $jinput->set('option', $option); $jinput->set('view', $class); $jinput->set('id', $jinput->get('id', 0, 'int')); // Include dependancies JLoader::import('com_content.helpers.route', JPATH_SITE . '/components'); JLoader::import('com_content.helpers.query', JPATH_SITE . '/components'); // Get controller Instance if (!($controller = KextensionsController::getInstance(null, 'contentController', array('base_path' => $contentPath, 'view_path' => $basePath . '/views')))) { return false; } // add model path $prefix = get_class($this); $controller->addModelPath($basePath . '/models', $prefix . 'Model'); if (!($model = $controller->getModel($class, $prefix . 'Model', array('ignore_request' => false, 'table_path' => JPATH_ADMINISTRATOR . '/components/' . $option . '/tables')))) { return false; } $fieldsandfilters = $jinput->get('fieldsandfilters', array(), 'array'); if (!empty($fieldsandfilters)) { $extensionsParams = new JObject(array('plugin.value' => $this->params->get('comparison_between_filters'))); if ($moduleID = $jinput->get('module', 0, 'int')) { $extensionsParams->set('module.id', $moduleID); } $betweenFilters = FieldsandfiltersExtensionsHelper::getParams('comparison_between_filters', $extensionsParams, 'OR'); $extensionsParams->set('plugin.value', $this->params->get('comparison_between_values_filters')); $betweenValues = FieldsandfiltersExtensionsHelper::getParams('comparison_between_values_filters', $extensionsParams, 'OR'); $itemsID = FieldsandfiltersFiltersHelper::getItemsIDByFilters($extension->content_type_id, $fieldsandfilters, $model->getState('filter.published'), $betweenFilters, $betweenValues); } else { $itemsID = FieldsandfiltersFiltersHelper::getSimpleItemsID(false); } // load view if (!($view = $controller->getView($class, 'html', $prefix . 'View', array('base_path' => $contentPath, 'layout' => $jinput->get('layout', 'default'))))) { return false; } // For joomla 2.5 && Key Reference if (!FieldsandfiltersFactory::isVersion()) { $view->addTemplatePath(JPATH_THEMES . '/' . $app->getTemplate() . '/html/com_content/' . $class); } // set module to view $view->setModel($model, true); $view->document = $document; // add helpers JHtml::addIncludePath(JPATH_SITE . '/components/com_content/helpers'); JHtml::addIncludePath(JPATH_SITE . '/components/com_content/helpers/html'); KextensionsLanguage::load($option); $emptyItemsID = $itemsID->get('empty', false); $model->setState('fieldsandfilters.itemsID', (array) $itemsID->get('itemsID')); $model->setState('fieldsandfilters.emptyItemsID', $emptyItemsID); if ($jinput->get('random', false) && KextensionsModule::getParams($jinput->get('module'))->get('show_random', 0) && JComponentHelper::getParams('com_fieldsandfilters')->get('random_type_filters') == 'selected') { $model->setState('fieldsandfilters.random.selected', true); $model->setState('fieldsandfilters.random.limit', JComponentHelper::getParams('com_fieldsandfilters')->get('random_items_limit_filters', 0)); } if (!$emptyItemsID) { ob_start(); $view->display(); $body = ob_get_contents(); ob_end_clean(); } else { $this->loadLanguage(); $variables = new JObject(); $variables->type = $this->_type; $variables->name = $this->_name; $variables->params = $this->params; $variables->extension = $extension; $body = KextensionsPlugin::renderLayout($variables, FieldsandfiltersPlugin::getLayout($this->params, 'empty_layout', 'empty')); } $itemsID = $model->getState('fieldsandfilters.itemsID', array()); $fieldsID = $jinput->get('fields', array(), 'array'); if (!empty($itemsID) && !empty($fieldsID) && !$emptyItemsID) { // Load Filters Helper $counts = (array) FieldsandfiltersFiltersHelper::getFiltersValuesCount($extension->content_type_id, $fieldsID, $itemsID, $model->getState('filter.published')); $data->set('counts', $counts); } else { if ($emptyItemsID) { // [TODO] when is empty display all fields with 0 counts or display special buttons to reset filters $data->set('empty', $emptyItemsID); } } $document->setBuffer($body, array('type' => 'component', 'name' => 'fieldsandfilters', 'title' => null)); if (!$emptyItemsID) { // [TODO] move to another place because we need this only once $script[] = 'jQuery(document).ready(function($) {'; $script[] = ' $("' . $this->params->get('selector_pagination_filters', '.pagination') . '").fieldsandfilters("pagination"' . ($app->get('sef', 0) ? ',{pagination: "start"}' : '') . ');'; $script[] = '});'; $document->addScriptDeclaration(implode("\n", $script)); } }
<?php /** * @package fieldsandfilters.plugin * @subpackage fieldsandfilters_field_type.textarea * @copyright Copyright (C) 2012 KES - Kulka Tomasz . All rights reserved. * @license GNU General Public License version 3 or later; see License.txt * @author KES - Kulka Tomasz <*****@*****.**> - http://www.kextensions.com */ defined('_JEXEC') or die; if (JFactory::getConfig()->get('debug')) { KextensionsLanguage::load('com_fieldsandfilters'); echo JText::sprintf('COM_FIELDSANDFILTERS_ERROR_LAYOUT_PLUGIN_NOT_EXISTS', $plugin->field->params->get('type.field_layout'), $plugin->type . '/' . $plugin->name . '/' . $plugin->field->name); }
/** * 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); $typeExtension = 'extension'; if ($extension = FieldsandfiltersFactory::getExtensions()->getExtensionsPivot('content_type_id', true)->get($this->value)) { // Load Extensions Helper KextensionsLanguage::load('plg_' . $extension->type . '_' . $extension->name, JPATH_ADMINISTRATOR); $extensionForm = $extension->forms->get($typeExtension, new JObject()); if (isset($extensionForm->group->title)) { $value = JText::_($extensionForm->title) . ' [' . JText::_($extensionForm->group->title) . ']'; } elseif (isset($extensionForm->title)) { $value = JText::_($extensionForm->title); } } // Load the javascript and css JHtml::_('behavior.framework'); JHtml::_('behavior.modal'); $query = array('option' => 'com_fieldsandfilters', 'view' => 'plugins', 'tmpl' => 'component', 'layout' => 'extensions', '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); }
/** * Method to get the field input for module layouts. * * @return string The field input. * * @since 11.1 */ protected function getInput() { if ($this->pluginName) { $lang = JFactory::getLanguage(); $extension = 'plg_' . $this->pluginType . '_' . $this->pluginName; // Load language file KextensionsLanguage::load($extension, JPATH_ADMINISTRATOR); // Get the database object and a new query object. $db = JFactory::getDbo(); $query = $db->getQuery(true); // Build the query. $query->select(array($db->quoteName('element'), $db->quoteName('name')))->from($db->quoteName('#__extensions', 'e'))->where($db->quoteName('e.client_id') . ' = ' . 0)->where($db->quoteName('e.type') . ' = ' . $db->quote('template'))->where($db->quoteName('e.enabled') . ' = 1'); // Set the query and load the templates. $templates = $db->setQuery($query)->loadObjectList('element'); // Build the search paths for module layouts. $plugin_path = JPath::clean(JPATH_PLUGINS . "/{$this->pluginType}/{$this->pluginName}/tmpl/{$this->layoutFolder}"); // Prepare array of component layouts $plugin_layouts = array(); // Prepare the grouped list $groups = array(); // Add the layout options from the module path. if (is_dir($plugin_path) && ($plugin_layouts = JFolder::files($plugin_path, '^[^_]*\\.php$'))) { // Create the group for the plgin $group = JHtml::_('select.option', $this->id, JText::_('COM_FIELDSANDFILTERS_OPTION_FROM_PLUGIN')); $group->items = array(); foreach ($plugin_layouts as $file) { // Add an option to the module group $value = basename($file, '.php'); $text = $lang->hasKey($key = strtoupper($extension . '_LAYOUT_' . $value)) ? JText::_($key) : $value; $group->items[] = JHtml::_('select.option', $value, $text); } $groups['_'] = $group; } // Loop on all templates if ($templates) { foreach ($templates as $template) { // Load language file KextensionsLanguage::load('tpl_' . $template->element, JPATH_SITE); $template_path = JPath::clean(JPATH_SITE . "/templates/{$template->element}/html/{$extension}/{$this->layoutFolder}"); // Add the layout options from the template path. if (is_dir($template_path) && ($files = JFolder::files($template_path, '^[^_]*\\.php$'))) { foreach ($files as $i => $file) { // Remove layout that already exist in component ones if (in_array($file, $plugin_layouts)) { unset($files[$i]); } } if (count($files)) { // Create the group for the template $group = JHtml::_('select.option', $this->id . '_' . $template->element, JText::sprintf('JOPTION_FROM_TEMPLATE', $template->name)); $group->items = array(); foreach ($files as $file) { // Add an option to the template group $value = basename($file, '.php'); $text = $lang->hasKey($key = strtoupper('TPL_' . $template->element . '_' . $extension . '_LAYOUT_' . $value)) ? JText::_($key) : $value; $group->items[] = JHtml::_('select.option', $template->element . ':' . $value, $text); } $groups[$template->element] = $group; } } } } // Compute attributes for the grouped list $attr = $this->size ? ' size="' . $this->size . '"' : ''; // Add a grouped list return JHtml::_('select.groupedlist', $groups, $this->name, array('id' => $this->id, 'group.id' => 'id', 'list.attr' => $attr, 'list.select' => (array) $this->value)); return implode($html); } return ''; }