Skip to content
This repository has been archived by the owner on Aug 14, 2023. It is now read-only.

Commit

Permalink
Statamic 1.x implementation of img attrs for #3
Browse files Browse the repository at this point in the history
  • Loading branch information
paulstraw committed Apr 21, 2016
1 parent 428e9d2 commit f5eced1
Showing 1 changed file with 71 additions and 26 deletions.
97 changes: 71 additions & 26 deletions _add-ons/imgix/pi.imgix.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,24 +7,61 @@ class Plugin_imgix extends Plugin
{
protected $builder;

protected function build_url($params) {
$path = array_shift($params);
protected function categorized_attributes() {
$attrs = $this->attributes;

$categorized_attrs = array(
'path' => $attrs['path'],
'img_attributes' => array(),
'imgix_attributes' => array()
);

unset($attrs['path']);

while (list($key, $val) = each($attrs)) {
$is_img_attr = in_array($key, array('alt', 'longdesc', 'title'));
$is_data_attr = strpos($key, 'data-') === 0;
$is_aria_attr = strpos($key, 'aria-') === 0;

if ($is_img_attr || $is_data_attr || $is_aria_attr) {
$categorized_attrs['img_attributes'][$key] = $val;
} else {
$categorized_attrs['imgix_attributes'][$key] = $val;
}
}

return $categorized_attrs;
}

return $this->builder->createURL($path, $params);
protected function build_url($categorized_attrs) {
return $this->builder->createURL(
$categorized_attrs['path'],
$categorized_attrs['imgix_attributes']
);
}

protected function build_srcset($params) {
protected function build_img_attributes($categorized_attrs) {
$img_attributes = $categorized_attrs['img_attributes'];

$html = '';

while (list($key, $val) = each($img_attributes)) {
$html .= " $key=\"$val\"";
}

return $html;
}

protected function build_srcset($categorized_attrs) {
$srcset_values = array();
$resolutions = $this->fetchConfig('responsive_resolutions', array(1, 2));

foreach ($resolutions as $resolution) {
$srcset_params = $params;

if ($resolution != 1) {
$srcset_params['dpr'] = $resolution;
$categorized_attrs['imgix_attributes']['dpr'] = $resolution;
}

$srcset_value = $this->build_url($srcset_params) . ' ' . $resolution . 'x';
$srcset_value = $this->build_url($categorized_attrs) . ' ' . $resolution . 'x';

array_push($srcset_values, $srcset_value);
}
Expand All @@ -45,41 +82,49 @@ function __construct() {
$this->builder = $builder;
}

public function image_url()
{
return $this->build_url($this->attributes);
public function image_url() {
return $this->build_url($this->categorized_attributes());
}

public function image_tag()
{
return '<img src="' . $this->build_url($this->attributes) . '">';
public function image_tag() {
$categorized_attrs = $this->categorized_attributes();

return join('', array(
'<img src="',
$this->build_url($categorized_attrs),
'" ',
$this->build_img_attributes($categorized_attrs),
'>'
));
}

public function responsive_image_tag()
{
$params = $this->attributes;
public function responsive_image_tag() {
$categorized_attrs = $this->categorized_attributes();

return join('', array(
'<img srcset="',
$this->build_srcset($params),
$this->build_srcset($categorized_attrs),
'" src="',
$this->build_url($params),
'">'
$this->build_url($categorized_attrs),
'" ',
$this->build_img_attributes($categorized_attrs),
'>'
));
}

public function picture_tag()
{
$params = $this->attributes;
public function picture_tag() {
$categorized_attrs = $this->categorized_attributes();

return join('', array(
'<picture>',
'<source srcset="',
$this->build_srcset($params),
$this->build_srcset($categorized_attrs),
'">',
'<img src="',
$this->build_url($params),
'">',
$this->build_url($categorized_attrs),
'" ',
$this->build_img_attributes($categorized_attrs),
'>',
'</picture>'
));
}
Expand Down

0 comments on commit f5eced1

Please sign in to comment.