use Elementor\Utils;
-class BackgroundImage extends _Base {
+class BackgroundImage extends _Base
+{
protected $_has_template_content = false; // Tell Elementor that content is all rendered dynamically
// Widget name / ID
- public function get_name() {
+ public function get_name()
+ {
return 'cube-bg-image';
}
// Elementor widget title
- public function get_title() {
- return __( 'Flexible Image', 'cube' );
+ public function get_title()
+ {
+ return __('Flexible Image', 'cube');
}
// Elementor interface icon
- public function get_icon() {
+ public function get_icon()
+ {
return 'eicon-image';
}
* List of scripts the widget depends on.
* Used to set scripts dependencies required to run the widget.
*
+ * @return array Widget scripts dependencies.
* @since 1.0.0
* @access public
- * @return array Widget scripts dependencies.
*/
- public function get_script_depends() {
+ public function get_script_depends()
+ {
return [];
}
+
/**
* Register the widget controls.
* Adds different input fields to allow the user to change and customize the widget settings.
* @since 1.0.0
* @access protected
*/
- protected function register_controls() {
+ protected function register_controls()
+ {
$this->start_controls_section(
'section_image',
[
- 'label' => __( 'Flexible Background Image', 'cube' ),
+ 'label' => __('Flexible Background Image', 'cube'),
]
);
-
+
$this->add_control(
- 'image',
- [
- 'label' => __( 'Choose Image', 'elementor' ),
- 'type' => Controls_Manager::MEDIA,
- 'default' => [
- 'url' => Utils::get_placeholder_image_src(),
- ],
- ]
- );
+ 'image',
+ [
+ 'label' => __('Choose Image', 'elementor'),
+ 'type' => Controls_Manager::MEDIA,
+ 'default' => [
+ 'url' => Utils::get_placeholder_image_src(),
+ ],
+ ]
+ );
$this->add_control(
'background_position',
[
- 'label' => __( 'Background Position', 'cube' ),
+ 'label' => __('Background Position', 'cube'),
'type' => Controls_Manager::SELECT,
'default' => 'center',
'options' => [
- 'top left' => __( 'Top Left', 'cube' ),
- 'top center' => __( 'Top Center', 'cube' ),
- 'top right' => __( 'Top Right', 'cube' ),
- 'center' => __( 'Center', 'cube' ),
- 'bottom left' => __( 'Bottom Left', 'cube' ),
- 'bottom center' => __( 'Bottom Center', 'cube' ),
- 'bottom right' => __( 'Bottom Right', 'cube' ),
+ 'top left' => __('Top Left', 'cube'),
+ 'top center' => __('Top Center', 'cube'),
+ 'top right' => __('Top Right', 'cube'),
+ 'center' => __('Center', 'cube'),
+ 'bottom left' => __('Bottom Left', 'cube'),
+ 'bottom center' => __('Bottom Center', 'cube'),
+ 'bottom right' => __('Bottom Right', 'cube'),
],
]
);
'show_external' => true
]
);
-
+
$this->end_controls_section();
$this->common_controls();
}
+
/**
* Render the widget output on the frontend.
* Written in PHP and used to generate the final HTML.
* @since 1.0.0
* @access protected
*/
- protected function render() {
+ protected function render()
+ {
$image = $this->get_settings('image');
$bg_position = $this->get_settings('background_position');
}
// Handle links / video
- if (!empty( $link['url'])) {
+ if (!empty($link['url'])) {
// If the link is to a youtube video, we want this to open in a lightbox instead
// For now only supporting links that start with https://www.youtube.com or https://youtu.be...
- if (strpos($link['url'], 'https://www.youtube.com') === 0 || strpos($link['url'], 'https://youtu.be') === 0) {
+ if (stristr($link['url'], 'mp4')) {
+
+ //{"type":"video","videoType":"hosted","url":"https:\/\/spinepro.dev2.cubedesigners.com\/wp-content\/uploads\/2024\/11\/Spine-Pro-Case-Study-Sonia_compressed1.mp4","autoplay":"","modalOptions":{"id":"elementor-lightbox-77aaa04","entranceAnimation":"","entranceAnimation_tablet":"","entranceAnimation_mobile":"","videoAspectRatio":"169"},"videoParams":{"controls":"","preload":"metadata","controlsList":"nodownload"}}
+
+ $lightbox_options = [
+ 'type' => 'video',
+ 'videoType' => 'hosted',
+ 'url' => $link['url'],
+ 'autoplay' => "",
+ 'modalOptions' => [
+ 'id' => 'elementor-lightbox-' . $this->get_id(),
+ 'entranceAnimation' => 'zoomIn',
+ 'videoAspectRatio' => '169',
+ ],
+ 'videoParams' =>
+ ["controls" => "",
+ "preload" => "metadata",
+ "controlsList" => "nodownload"],
+
+ ];
+ $attributes = ' data-elementor-lightbox="' . htmlentities(wp_json_encode($lightbox_options)) . '"';
+ $attributes .= ' data-elementor-open-lightbox="yes"';
+ $class = 'cursor-pointer';
+ } else if (strpos($link['url'], 'https://www.youtube.com') === 0 || strpos($link['url'], 'https://youtu.be') === 0) {
- $attributes = "data-elementor-lightbox='". $this->lightbox($link['url'], $this->get_id()) ."'";
+ $attributes = "data-elementor-lightbox='" . $this->lightbox($link['url'], $this->get_id()) . "'";
$attributes .= ' data-elementor-open-lightbox="yes"';
$class = 'cursor-pointer';
} else { // Normal link
$tag = 'a';
- $attributes = 'href="'. $link['url'] .'"';
+ $attributes = 'href="' . $link['url'] . '"';
if ($link['is_external']) {
$attributes .= ' target="_blank"';
}
- echo '<'. $tag .' class="bg-image '. $class .'" '. $attributes .' style="background-image: url('. $image['url'] .'); background-position: '. $bg_position .'"><div class="bg-image-sizer" style="padding-bottom: '. $ratio .'"></div></'. $tag .'>';
+ echo '<' . $tag . ' class="bg-image ' . $class . '" ' . $attributes . ' style="background-image: url(' . $image['url'] . '); background-position: ' . $bg_position . '"><div class="bg-image-sizer" style="padding-bottom: ' . $ratio . '"></div></' . $tag . '>';
}
// Generate Elementor lightbox settings
- public static function lightbox($url, $element_ID) {
+ public static function lightbox($url, $element_ID)
+ {
// Video settings for lightbox embed
$embed_params = [
];
$lightbox_options = [
- 'type' => 'video',
- 'url' => Embed::get_embed_url($url, $embed_params),
+ 'type' => 'video',
+ 'url' => Embed::get_embed_url($url, $embed_params),
'modalOptions' => [
- 'id' => 'elementor-lightbox-' . $element_ID,
+ 'id' => 'elementor-lightbox-' . $element_ID,
'entranceAnimation' => 'zoomIn',
- 'videoAspectRatio' => '169',
+ 'videoAspectRatio' => '169',
],
];