149 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			149 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| /**
 | |
|  * @author          Tassos Marinos <info@tassos.gr>
 | |
|  * @link            https://www.tassos.gr
 | |
|  * @copyright       Copyright © 2024 Tassos All Rights Reserved
 | |
|  * @license         GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
 | |
| */
 | |
| 
 | |
| defined('_JEXEC') or die;
 | |
| 
 | |
| use Joomla\CMS\Form\Field\TextField;
 | |
| use Joomla\CMS\HTML\HTMLHelper;
 | |
| use Joomla\CMS\Language\Text;
 | |
| use Joomla\CMS\Factory;
 | |
| 
 | |
| class NRFormField extends TextField
 | |
| {
 | |
| 	public $type = 'Field';
 | |
| 
 | |
| 	/**
 | |
| 	 *  Document object
 | |
| 	 *
 | |
| 	 *  @var  object
 | |
| 	 */
 | |
| 	public $doc;
 | |
| 
 | |
| 	/**
 | |
| 	 *  Database object
 | |
| 	 *
 | |
| 	 *  @var  object
 | |
| 	 */
 | |
| 	public $db;
 | |
| 
 | |
| 	/**
 | |
| 	 *  Application Object
 | |
| 	 *
 | |
| 	 *  @var  object
 | |
| 	 */
 | |
| 	protected $app;
 | |
| 
 | |
| 	/**
 | |
| 	 *  Class constructor
 | |
| 	 */
 | |
| 	function __construct()
 | |
| 	{
 | |
| 		$this->doc = Factory::getDocument();
 | |
| 		$this->app = Factory::getApplication();
 | |
| 		$this->db = Factory::getDbo();
 | |
| 		parent::__construct();
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Method to get the field label markup.
 | |
| 	 *
 | |
| 	 * @return  string  The field label markup.
 | |
| 	 */
 | |
| 	protected function getLabel()
 | |
| 	{
 | |
| 		$label = $this->get("label");
 | |
| 		if (empty($label))
 | |
| 		{
 | |
| 			return "";
 | |
| 		}
 | |
| 
 | |
| 		return parent::getLabel();
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 *  Prepares string through Text
 | |
| 	 *
 | |
| 	 *  @param   string  $string
 | |
| 	 *
 | |
| 	 *  @return  string
 | |
| 	 */
 | |
| 	public function prepareText($string = '')
 | |
| 	{
 | |
| 		$string = trim($string);
 | |
| 
 | |
| 		if ($string == '')
 | |
| 		{
 | |
| 			return '';
 | |
| 		}
 | |
| 
 | |
| 		return Text::_($string);
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 *  Method to get field parameters
 | |
| 	 *
 | |
| 	 *  @param   string  $val      Field parameter
 | |
| 	 *  @param   string  $default  The default value
 | |
| 	 *
 | |
| 	 *  @return  string
 | |
| 	 */
 | |
| 	public function get($val, $default = '')
 | |
| 	{
 | |
| 		return (isset($this->element[$val]) && (string) $this->element[$val] != '') ? (string) $this->element[$val] : $default;
 | |
| 	}
 | |
| 
 | |
| 	public function getOptionsByList($list, $extras = array(), $levelOffset = 0)
 | |
| 	{
 | |
| 		$options = array();
 | |
| 		foreach ($list as $item)
 | |
| 		{
 | |
| 			$options[] = $this->getOptionByListItem($item, $extras, $levelOffset);
 | |
| 		}
 | |
| 
 | |
| 		return $options;
 | |
| 	}
 | |
| 
 | |
| 	public function getOptionByListItem($item, $extras = array(), $levelOffset = 0)
 | |
| 	{
 | |
| 		$name = trim($item->name);
 | |
| 
 | |
| 		foreach ($extras as $key => $extra)
 | |
| 		{
 | |
| 			if (empty($item->{$extra}))
 | |
| 			{
 | |
| 				continue;
 | |
| 			}
 | |
| 
 | |
| 			if ($extra == 'language' && $item->{$extra} == '*')
 | |
| 			{
 | |
| 				continue;
 | |
| 			}
 | |
| 
 | |
| 			if (in_array($extra, array('id', 'alias')) && $item->{$extra} == $item->name)
 | |
| 			{
 | |
| 				continue;
 | |
| 			}
 | |
| 
 | |
| 			$name .= ' [' . $item->{$extra} . ']';
 | |
| 		}
 | |
| 		
 | |
| 		require_once __DIR__ . '/text.php';
 | |
| 
 | |
| 		$name = NRText::prepareSelectItem($name, isset($item->published) ? $item->published : 1);
 | |
| 
 | |
| 		$option = HTMLHelper::_('select.option', $item->id, $name, 'value', 'text', 0);
 | |
| 
 | |
| 		if (isset($item->level))
 | |
| 		{
 | |
| 			$option->level = $item->level + $levelOffset;
 | |
| 		}
 | |
| 
 | |
| 		return $option;
 | |
| 	}
 | |
| } |