Your IP : 216.73.216.240


Current Path : /home/juvelize/saulnois/tmp/install_695d2cf0b4957/src/View/Sky/
Upload File :
Current File : /home/juvelize/saulnois/tmp/install_695d2cf0b4957/src/View/Sky/Image.php

<?php
/*
* @package		Tech Fry Library
* @license		https://www.gnu.org/licenses/gpl-3.0.en.html
*/

namespace TechFry\Library\View\Sky;

defined('_JEXEC') or die;

use Joomla\CMS\HTML\HTMLHelper;

class Image extends Bootstrap
{
    public $class_options = array('image_class', 'border_radius', 'shadow', 'image_hover', 'transition');

    public $src;

    public $alt;

    public $attribs;

    public $image_layout; // normal, overlay, modal

    public function display()
    {
        /*
        item - image/url, alt, title, srcset, sizes
        config - image_class, border_radius, shadow, lazy_loading, width, height
        */

        $this->data = (array) $this->data;

        $this->image_layout = $this->config['image_layout'] ?? 'normal';

        $this->src = $this->data['image'] ?? $this->data['url'];
        $url_prefix = $this->config['url_prefix'] ?? '';
        $this->src = $url_prefix . $this->src;

        $this->alt = $this->data['alt'] ?? $this->data['image'] ?? $this->data['url'];
        $this->attribs['alt'] = $this->alt;

        $img = HTMLHelper::cleanImageURL($this->src);
        $image_info = getimagesize(JPATH_ROOT . '/' . $img->url);

        $this->attribs['width'] = $this->config['width'] ?? $image_info[0];
        $this->attribs['height'] = $this->config['height'] ?? $image_info[1];

        $this->attribs['class'] = $this->get_class();

        $this->attribs['title'] = $this->data['title'] ?? $this->config['title'] ?? '';

        if ($this->framework == 'amp')
        {
            return $this->display_amp();
        }

        $this->attribs['loading'] = isset($this->config['lazy_loading']) && $this->config['lazy_loading'] ? 'lazy' : '';

        $this->attribs['srcset'] = $this->data['srcset'] ?? '';
        $this->attribs['sizes'] = $this->data['sizes'] ?? '';

        $display_layout = 'layout_' . $this->image_layout;
        return $this->$display_layout();
    }

    public function layout_normal()
    {
        $output = $this->html->img($this->src, $this->attribs);

        return $output;
    }

    public function layout_overlay()
    {
        $output = '';
        
        $attribs['style'] = 'filter:brightness(50%);';
        $attribs['class'] .= ' card-img';
    
        $output .= '<div class="card mb-3">';
            $output .= $this->html->img($this->src, $this->attribs);
            $output .= '<div class="card-img-overlay overflow-hidden">';
                $output .= '<h1 class="text-light">' . $this->title . '</h1>';
            $output .= '</div>';
        $output .= '</div>';

        return $output;
    }

    public function display_amp()
    {
        // Docs: https://amp.dev/documentation/components/amp-img
        // alt, src, width, height, layout

        $display_layout = 'layout_amp_' . $this->image_layout;
        
        return $this->$display_layout();
    }

    public function layout_amp_normal()
    {
        $this->attribs['layout'] = 'responsive';

        $this->attribs['src'] = $this->src;

        $output = $this->html->open_tag('amp-img', $this->attribs);

        $output .= $this->html->close_tag('amp-img');

        return $output;
    }

    public function layout_amp_overlay()
    {
        $output = '';
        
        $this->attribs['layout'] = 'responsive';
        
        $attribs['style'] = 'filter:brightness(50%);';
        $attribs['class'] .= ' card-img';
    
        $output .= '<div class="card mb-3">';
            $output .= $this->html->open_tag('amp-img', $this->attribs);
            $output .= $this->html->close_tag('amp-img');
            $output .= '<div class="card-img-overlay overflow-hidden">';
            $output .= '<h1 class="text-light">' . $this->title . '</h1>';
            $output .= '</div>';
        $output .= '</div>';

        return $output;
    }
}