109 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /* @package Joomla
 | |
|  * @copyright Copyright (C) Open Source Matters. All rights reserved.
 | |
|  * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
 | |
|  * @extension Phoca Extension
 | |
|  * @copyright Copyright (C) Jan Pavelka www.phoca.cz
 | |
|  * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
 | |
|  */
 | |
| defined('JPATH_BASE') or die();
 | |
| use Joomla\CMS\Form\FormField;
 | |
| use Joomla\CMS\Session\Session;
 | |
| use Joomla\CMS\Factory;
 | |
| use Joomla\CMS\HTML\HTMLHelper;
 | |
| use Joomla\CMS\Uri\Uri;
 | |
| use Joomla\CMS\Language\Text;
 | |
| jimport('joomla.form.formfield');
 | |
| 
 | |
| 
 | |
| class JFormFieldPhocaSelectItem extends FormField
 | |
| {
 | |
| 	public $type = 'PhocaSelectItem';
 | |
| 
 | |
| 	protected function getInput() {
 | |
| 		$html 	= array();
 | |
| 		$url 	= 'index.php?option=com_phocagallery&view=phocagalleryitema&format=json&tmpl=component&'. Session::getFormToken().'=1';
 | |
| 
 | |
| 		// Possible problem with modal
 | |
| 		//$attr 	= $this->element['class'] ? ' class="'.(string) $this->element['class'].' typeahead"' : ' class="typeahead"';
 | |
| 		$attr 	= $this->element['class'] ? ' class="'.(string) $this->element['class'].' "' : ' class=""';
 | |
| 
 | |
| 		$attr  .= $this->element['size'] ? ' size="'.(int) $this->element['size'].'"' : '';
 | |
| 		$attr  .= $this->element['required'] ? ' required aria-required="true"' : '';
 | |
| 
 | |
| 
 | |
| 		$clearId = 'phClearId'.$this->id;
 | |
| 
 | |
| 
 | |
| 		if ($this->multiple) {
 | |
| 			$multiple = 'true';
 | |
| 		} else {
 | |
| 			$multiple = 'false';
 | |
| 		}
 | |
| 
 | |
| 
 | |
| 		$onchange 	= (string) $this->element['onchange'];
 | |
| 		$value = '';
 | |
| 
 | |
| 		$image = PhocaGalleryImage::getImageByImageId((int)$this->value);// We don't need catid, we get all categories title
 | |
| 		if(isset($image->id)) {
 | |
| 			$value .= (int)$image->id . ':'. $image->title .' ('.$image->category_title.')';
 | |
| 		}
 | |
| 		$id = (int)$this->value;
 | |
| 
 | |
| 
 | |
| 
 | |
| 		$document 			= Factory::getDocument();
 | |
| 		$app				= Factory::getApplication();
 | |
| 		$wa 				= $app->getDocument()->getWebAssetManager();
 | |
| 
 | |
| 		HTMLHelper::_('jquery.framework', false);
 | |
| 		//HTMLHelper::_('script', 'media/com_phocagallery/js/administrator/select2/select2.js', array('version' => 'auto'));
 | |
| 		//HTMLHelper::_('script', 'media/com_phocagallery/js/administrator/select2/jquery.phocaselect2.js', array('version' => 'auto'));
 | |
| 		//HTMLHelper::_('stylesheet', 'media/com_phocagallery/js/administrator/select2/select2.css', array('version' => 'auto'));
 | |
| 		$wa->registerAndUseScript('com_phocagallery.select2', 'media/com_phocagallery/js/administrator/select2/select2.js', array('version' => 'auto'));
 | |
| 		$wa->registerAndUseScript('com_phocagallery.phocaselect2', 'media/com_phocagallery/js/administrator/select2/jquery.phocaselect2.js', array('version' => 'auto'));
 | |
| 		$wa->registerAndUseStyle('com_phocagallery.select2', 'media/com_phocagallery/js/administrator/select2/select2.css', array('version' => 'auto'));
 | |
| 
 | |
| 		$document->addScriptOptions('phLang', array(
 | |
| 			'COM_PHOCAGALLERY_NO_MATCHES_FOUND' => Text::_('COM_PHOCAGALLERY_NO_MATCHES_FOUND'),
 | |
| 			'COM_PHOCAGALLERY_PLEASE_ENTER' => Text::_('COM_PHOCAGALLERY_PLEASE_ENTER'),
 | |
| 			'COM_PHOCAGALLERY_S_MORE_CHARACTER' => Text::_('COM_PHOCAGALLERY_S_MORE_CHARACTER'),
 | |
| 			'COM_PHOCAGALLERY_PLEASE_DELETE' => Text::_('COM_PHOCAGALLERY_PLEASE_DELETE'),
 | |
| 			'COM_PHOCAGALLERY_S_CHARACTER' => Text::_('COM_PHOCAGALLERY_S_CHARACTER'),
 | |
| 			'COM_PHOCAGALLERY_YOU_CAN_ONLY_SELECT' => Text::_('COM_PHOCAGALLERY_YOU_CAN_ONLY_SELECT'),
 | |
| 			'COM_PHOCAGALLERY_S_ITEM' => Text::_('COM_PHOCAGALLERY_S_ITEM'),
 | |
| 			'COM_PHOCAGALLERY_LOADING_MORE_RESULTS' => Text::_('COM_PHOCAGALLERY_LOADING_MORE_RESULTS'),
 | |
| 			'COM_PHOCAGALLERY_SEARCHING' => Text::_('COM_PHOCAGALLERY_SEARCHING')
 | |
| 		));
 | |
| 		$document->addScriptOptions('phVars', array('uriRoot' => Uri::root()));
 | |
| 
 | |
| 		$s = array();
 | |
| 		$s[] = 'jQuery(document).ready(function() {';
 | |
| 		$s[] = '   phSearchItemsMultiple("#'.$this->id.'", "'.$url.'", '.(int)$id.', '.$multiple.', "[|]");';
 | |
| 		if (!$this->multiple) {
 | |
| 			$s[] = ' jQuery("#' . $clearId . '").on("click", function() {jQuery("#' . $this->id . '").select2("val", ""); });';
 | |
| 		}
 | |
| 		$s[] = '});';
 | |
| 
 | |
| 		$document->addScriptDeclaration(implode("\n", $s));
 | |
| 
 | |
| 
 | |
| 		$class = '';
 | |
| 		if (!$this->multiple) {
 | |
| 
 | |
| 			$class = 'ph-select2-clear-btn-box';
 | |
| 		}
 | |
| 		$html[] = '<div class="input-append input-group">';
 | |
| 		$html[] = '<input type="text" placeholder=" " class="'.$class.'" id="'.$this->id.'" name="'.$this->name.'" value="'. $value.'"' .' '.$attr.' />';
 | |
| 		if (!$this->multiple) {
 | |
| 			$html[] = '<input type="button" class="btn btn-primary" id="' . $clearId . '" name="' . $clearId . '" value="' . Text::_('COM_PHOCAGALLERY_CLEAR') . '"' . ' />';
 | |
| 		}
 | |
| 		$html[] = '</div>'. "\n";
 | |
| 
 | |
| 
 | |
| 		return implode("\n", $html);
 | |
| 	}
 | |
| }
 | |
| ?>
 |