public function carousel()
{
css('.carousel { max-width: 870px; }');
$text = 'Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.';
return _class('html')->carousel([
[
'img' => $this->_placeholder_svg('First slide', '#337ab7'),
'desc' => '<h4>First Thumbnail label</h4><p>' . $text . '</p>',
],
[
'img' => $this->_placeholder_svg('Second slide', '#5cb85c'),
'desc' => '<h4>Second Thumbnail label</h4><p>' . $text . '</p>',
],
[
'img' => $this->_placeholder_svg('Third slide', '#f0ad4e'),
'desc' => '<h4>Third Thumbnail label</h4><p>' . $text . '</p>',
],
$this->_placeholder_svg('Fourth slide', '#5bc0de'),
$this->_placeholder_svg('Fifth slide', '#d9534f'),
$this->_placeholder_svg('Sixth slide', '#777777'),
]);
}
public function carousel($data = [], $extra = [])
{
if ($this->_is_bs5) {
return $this->_bs5()->carousel($data, $extra);
}
$extra['id'] = ($extra['id'] ?? null) ?: __FUNCTION__ . '_' . ($this->_ids[__FUNCTION__] = ($this->_ids[__FUNCTION__] ?? 0) + 1);
$items = [];
$headers = [];
$i = 0;
$slide = 0;
foreach ((array) $data as $k => $v) {
if ( ! is_array($v)) {
$img_src = $v;
$v = [];
} else {
$img_src = ($v['img'] ?? null);
}
$desc = ($v['desc'] ?? null);
$alt = ($v['alt'] ?? null) ?: strip_tags((string) $desc);
$id = ($v['id'] ?? null) ?: 'carousel_item_' . $k;
if (isset($extra['selected'])) {
$is_active = (($extra['selected'] ?? null) == $k);
} else {
$is_active = (++$i == 1);
}
$class_head = ($v['class_head'] ?? null) ?: ($extra['class_head'] ?? null);
$class_body = ($v['class_body'] ?? null) ?: ($extra['class_body'] ?? null);
$headers[] = '<li data-target="#' . ($extra['id'] ?? null) . '" data-slide-to="' . $slide++ . '" class="' . ($is_active ? 'active' : '') . ($class_head ? ' ' . $class_head : '') . '"></li>';
$items[] =
'<div class="item' . ($is_active ? ' active' : '') . ($class_body ? ' ' . $class_body : '') . '">
<img src="' . $img_src . '" alt="' . $alt . '">
' . ($desc ? '<div class="carousel-caption">' . $desc . '</div>' : '') . '
</div>';
}
$controls = '
<a class="left carousel-control" href="#' . ($extra['id'] ?? null) . '" data-slide="prev"><span class="icon icon-chevron-left fa fa-chevron-left"></span></a>
<a class="right carousel-control" href="#' . ($extra['id'] ?? null) . '" data-slide="next"><span class="icon icon-chevron-right fa fa-chevron-right"></span></a>
';
[$carousel_add, $carousel_attrs] = $this->_carousel_options_bs3($extra);
return '<div id="' . ($extra['id'] ?? null) . '" class="carousel slide' . $carousel_add . (($extra['class'] ?? null) ? ' ' . ($extra['class'] ?? null) : '') . '"' . $carousel_attrs . '>
<ol class="carousel-indicators">' . implode(PHP_EOL, $headers) . '</ol>
<div class="carousel-inner">' . implode(PHP_EOL, $items) . '</div>
' . ( ! ($extra['no_controls'] ?? null) ? $controls : '') . '
</div>';
}