Your IP : 216.73.216.240
<?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;
}
}