acf
This commit is contained in:
		
							
								
								
									
										113
									
								
								plugins/system/nrframework/NRFramework/Widgets/Video.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										113
									
								
								plugins/system/nrframework/NRFramework/Widgets/Video.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,113 @@ | ||||
| <?php | ||||
|  | ||||
| /** | ||||
|  * @author          Tassos Marinos <info@tassos.gr> | ||||
|  * @link            http://www.tassos.gr | ||||
|  * @copyright       Copyright © 2020 Tassos Marinos All Rights Reserved | ||||
|  * @license         GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later | ||||
|  */ | ||||
|  | ||||
| namespace NRFramework\Widgets; | ||||
|  | ||||
| defined('_JEXEC') or die; | ||||
|  | ||||
| use Joomla\CMS\HTML\HTMLHelper; | ||||
| use Joomla\CMS\Factory; | ||||
|  | ||||
| abstract class Video extends Widget | ||||
| { | ||||
| 	/** | ||||
| 	 * Widget default options | ||||
| 	 * | ||||
| 	 * @var array | ||||
| 	 */ | ||||
| 	protected $widget_options = [ | ||||
| 		// Video URL | ||||
| 		'value' => '', | ||||
|  | ||||
| 		// Video width | ||||
| 		'width' => '480px', | ||||
|  | ||||
| 		// Video height | ||||
| 		'height' => '270px', | ||||
|  | ||||
| 		// Whether the video will autoplay | ||||
| 		'autoplay' => false, | ||||
|  | ||||
| 		// Whether the video will autopause whenever we scroll and it hides from our viewport | ||||
| 		'autopause' => false | ||||
| 	]; | ||||
|  | ||||
| 	public function __construct($options = []) | ||||
| 	{ | ||||
| 		$this->widget_options = array_merge($this->widget_options, $this->video_widget_options); | ||||
|  | ||||
| 		parent::__construct($options); | ||||
|  | ||||
| 		$this->prepare(); | ||||
|  | ||||
| 		$this->styles(); | ||||
| 	} | ||||
|  | ||||
| 	protected function prepare() | ||||
| 	{} | ||||
|  | ||||
| 	public function render() | ||||
| 	{ | ||||
| 		$this->loadMedia(); | ||||
|  | ||||
| 		return parent::render(); | ||||
| 	} | ||||
|  | ||||
| 	public function styles() | ||||
| 	{ | ||||
| 		if (!$this->options['load_css_vars']) | ||||
| 		{ | ||||
| 			return; | ||||
| 		} | ||||
| 	 | ||||
| 		$controls = [ | ||||
|             [ | ||||
|                 'property' => '--video-width', | ||||
|                 'value' => $this->options['width'] | ||||
|             ], | ||||
|             [ | ||||
|                 'property' => '--video-height', | ||||
|                 'value' => $this->options['height'] | ||||
|             ] | ||||
| 		]; | ||||
|  | ||||
| 		$selector = '.nrf-widget.tf-video.' . $this->options['id']; | ||||
| 		 | ||||
| 		$controlsInstance = new \NRFramework\Controls\Controls(null, $selector); | ||||
|  | ||||
|         if (!$controlsCSS = $controlsInstance->generateCSS($controls)) | ||||
|         { | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         Factory::getDocument()->addStyleDeclaration($controlsCSS); | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Loads media files | ||||
| 	 *  | ||||
| 	 * @return  void | ||||
| 	 */ | ||||
| 	public function loadMedia() | ||||
| 	{ | ||||
| 		if ($this->options['load_stylesheet']) | ||||
| 		{ | ||||
| 			HTMLHelper::stylesheet('plg_system_nrframework/widgets/video.css', ['relative' => true, 'version' => 'auto']); | ||||
| 		} | ||||
|  | ||||
| 		HTMLHelper::script('plg_system_nrframework/widgets/video.js', ['relative' => true, 'version' => 'auto']); | ||||
|  | ||||
| 		if (method_exists($this, 'videoAssets')) | ||||
| 		{ | ||||
| 			$this->videoAssets(); | ||||
| 		} | ||||
| 		 | ||||
| 		HTMLHelper::script('plg_system_nrframework/widgets/videos.js', ['relative' => true, 'version' => 'auto']); | ||||
| 	} | ||||
| } | ||||
		Reference in New Issue
	
	Block a user