114 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			114 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| /**
 | |
|  * @package         Advanced Custom Fields
 | |
|  * @version         2.8.8 Pro
 | |
|  * 
 | |
|  * @author          Tassos Marinos <info@tassos.gr>
 | |
|  * @link            http://www.tassos.gr
 | |
|  * @copyright       Copyright © 2019 Tassos Marinos All Rights Reserved
 | |
|  * @license         GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
 | |
| */
 | |
| 
 | |
| defined('_JEXEC') or die('Restricted access');
 | |
| 
 | |
| use Joomla\CMS\Form\Field\TextField;
 | |
| use Joomla\CMS\HTML\HTMLHelper;
 | |
| use Joomla\CMS\Factory;
 | |
| use Joomla\Registry\Registry;
 | |
| use Joomla\Filesystem\Path;
 | |
| 
 | |
| class JFormFieldACFGallery extends TextField
 | |
| {
 | |
|     /**
 | |
| 	 * Generates the Gallery Field
 | |
| 	 *
 | |
| 	 * @return  string  The field input markup.
 | |
| 	 */
 | |
| 	protected function getInput()
 | |
| 	{
 | |
|         require_once JPATH_SITE . '/plugins/fields/acfgallery/fields/helper.php';
 | |
| 
 | |
|         $style = (string) $this->element['style'];
 | |
|         $style = ACFGalleryHelper::getStyle($style);
 | |
| 
 | |
|         $data = [
 | |
|             'value' => $this->prepareValue(),
 | |
|             'required' => (string) $this->element['required'] == 'true' ? true : false,
 | |
|             'name' => (int) $this->element['limit_files'] == 1 ? $this->name . '[items][0]' : $this->name . '[items][ITEM_ID]',
 | |
|             'limit_files' => (string) $this->element['limit_files'],
 | |
|             'max_file_size' => (string) $this->element['max_file_size'],
 | |
|             'style' => $style,
 | |
|             'original_image_resize' => (string) $this->element['original_image_resize'] === '1',
 | |
|             'original_image_resize_width' => (string) $this->element['original_image_resize_width'],
 | |
|             'thumb_width' => (string) $this->element['thumb_width'],
 | |
|             'thumb_height' => (string) $this->element['thumb_height'],
 | |
|             'thumb_resize_method' => (string) $this->element['resize_method'],
 | |
|             'css_class' => ' ordering-' . (string) $this->element['ordering'],
 | |
|             'disabled' => $this->disabled,
 | |
|             'field_id' => (int) $this->element['field_id'],
 | |
|             'item_id' => $this->getItemID(),
 | |
|             'id' => $this->id,
 | |
|             'pro' => true
 | |
|         ];
 | |
| 
 | |
|         HTMLHelper::script('plg_fields_acfgallery/acfgallery.js', ['relative' => true, 'version' => 'auto']);
 | |
|         
 | |
|         return \NRFramework\Widgets\Helper::render('GalleryManager', $data);
 | |
|     }
 | |
| 
 | |
|     private function getItemID()
 | |
|     {
 | |
|         $item_id = (int) Factory::getApplication()->input->get('id');
 | |
| 
 | |
|         switch (Factory::getApplication()->input->get('option'))
 | |
|         {
 | |
|             case 'com_users':
 | |
|                 $item_id = Factory::getUser()->id;
 | |
|                 break;
 | |
|         }
 | |
|         
 | |
|         return $item_id;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * The list of uploaded Gallery Items.
 | |
|      * 
 | |
|      * @return  mixed
 | |
|      */
 | |
|     private function prepareValue()
 | |
|     {
 | |
|         if (empty($this->value))
 | |
|         {
 | |
|             return;
 | |
|         }
 | |
| 
 | |
|         $this->value = is_string($this->value) ? json_decode($this->value, true) : (array) $this->value;
 | |
| 
 | |
|         if (!isset($this->value['items']))
 | |
|         {
 | |
|             return;
 | |
|         }
 | |
| 
 | |
|         $value = [];
 | |
|         
 | |
|         foreach ($this->value['items'] as $key => $file)
 | |
|         {
 | |
|             $file = new Registry($file);
 | |
| 
 | |
|             $value[] = [
 | |
|                 'source' => $file->get('source'),
 | |
|                 'original' => $file->get('original') ? $file->get('original') : $file->get('image'),
 | |
|                 'exists' => is_file(Path::clean(implode(DIRECTORY_SEPARATOR, [JPATH_ROOT, $file->get('thumbnail')]))),
 | |
|                 'caption' => $file->get('caption', ''),
 | |
|                 'thumbnail' => $file->get('thumbnail', ''),
 | |
|                 'is_media_uploader_file' => ($file->get('media_upload_source', 'false') == 'true'),
 | |
|                 'alt' => $file->get('alt', ''),
 | |
|                 'tags' => json_encode($file->get('tags', []))
 | |
|             ];
 | |
|         }
 | |
| 
 | |
|         return $value;
 | |
|     }
 | |
| }
 |