public function renderPosition($position, $args = array()) { // init vars $elements = array(); $output = array(); $el_instances = array(); $user = $this->app->user->get(); // get style $style = isset($args['style']) ? $args['style'] : 'default'; // store layout $layout = $this->_layout; // render elements foreach ($this->_getConfigPosition($position) as $i => $data) { if ($element = $this->_type->getElement($data['element'])) { if (!$element->canAccess()) { continue; } // save the element instance if (empty($el_instances[$element->identifier])) { $el_instances[$element->identifier] = 1; } else { $el_instances[$element->identifier] += 1; } // set arguments $params = array_merge($data, $args); $instance = $el_instances[$element->identifier]; // event integration $render = true; $item = $element->getItem(); $this->app->event->dispatcher->notify($this->app->event->create(null, 'element:beforedisplay', array('render' => &$render, 'element' => $element, 'params' => $params))); if ($render) { // check value $elements[] = compact('element', 'params', 'instance'); } } } // posted values if (!isset($this->_module_id)) { $this->_module_id = 0; } $values = unserialize($this->app->system->application->getUserState('ZOOFILTER_SEARCH_FORM_' . $this->_module_id)); $this->app->system->application->setUserState('ZOOFILTER_SEARCH_FORM_' . $this->_module_id, serialize(null)); // process elements foreach ($elements as $i => $data) { $params = array_merge(array('first' => $i == 0, 'last' => $i == count($elements) - 1), $data['params']); $params = $this->app->data->create($params); $elType = $data['element']->getElementType(); $instance = $data['instance'] - 1; $row_id = $i . '_' . $data['element']->identifier; // if element compatible add instance to control $instanceID = ''; if ($elType == 'relatedcategories' || $elType == 'relatedcategoriespro' || $elType == 'itemcategory' || $elType == 'itemtag') { $instanceID = '-' . $instance; } // add tooltip // $tooltip = ''; // if ($params->get('show_tooltip') && ($description = $element->config->get('tooltip'))) { // $tooltip = ' class="hasTip" title="'.$description.'"'; // } // // TODO // $tooltip = $params->get('tooltip'); // create label $label = '<label for="' . $row_id . '">'; $label .= $params->get('altlabel') ? $params->get('altlabel') : $data['element']->config->get('name'); $label .= '</label>'; $output[$i] = '<div class="form-element-row ' . $elType . ' ' . $elType . '-' . $instance . '">'; $output[$i] .= $params->get('showlabel') ? $label : ''; if ($elType == 'staticcontent') { $output[$i] .= $data['element']->render($params); } else { $output[$i] .= modZOOfilterHelper::getSearchInput($data['element'], @$values[$data['element']->identifier . $instanceID], $params, $instance, $this->_module_id); } $output[$i] .= '</div>'; } // restore layout $this->_layout = $layout; return implode("\n", $output); }
* @copyright Copyright (C) JOOlanders SL * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only */ // no direct access defined('_JEXEC') or die('Restricted access'); // Add script to head $document = JFactory::getDocument(); $document->addScript('https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&libraries=places&key=' . $params->get('gm_api_key')); // Extract search value if (is_array($value)) { extract($value); } $placeholder = $params->find('specific._placeholder', $params->find('layout._placeholder', '')); $attributes = $placeholder ? 'class="item-search-location itemLocation" placeholder="' . $placeholder . '"' : 'class="item-search-location itemLocation"'; $attributes .= $params->find('search._required') ? ' required' : ''; $place = modZOOfilterHelper::getCurrentLocation(true); //echo '<input type="text" name="elements['.$element->identifier.'][address]" value="'.(isset($address) ? urldecode($address): '').'" '.$attributes.' />'; echo '<input type="text" name="elements[' . $element->identifier . '][address]" value="' . (isset($address) ? urldecode($address) : $place['city'] . ', ' . $place['regionName'] . ', ' . $place['country']) . '"' . $attributes . ' />'; echo '<input type="hidden" name="elements[' . $element->identifier . '][location]" value="' . (isset($location) ? $location : $place['lat'] . ',' . $place['lon']) . '" />'; if ($params->get('show_radius')) { echo '<input type="text" name="elements[' . $element->identifier . '][radius]" class="item-search-radius itemRadius" size="10" style="width:auto" value="' . (isset($radius) ? $radius : $params->get('default_radius', 5)) . '"/>'; ?> <select name="elements[<?php echo $element->identifier; ?> ][measure]" class="item-search-measure itemMeadure" style="width:auto"> <option value="km" <?php isset($measure) && $measure == 'km' ? 'selected="selected"' : ''; ?> >Km</option>