pics/templates/PhotosIndex.php
Aaron van Geffen 5df7ea8371 Remove unused 'best color' algorithm.
This code is used to efficiently determine the most saturated colour in an image,
Kabuki uses this as the highlight colour on a page, but this styling has always
been disabled in HashRU Pics. Hence, we can safely remove the code, freeing up
some CPU cycles in the process. ;-)
2019-09-29 14:18:59 +02:00

209 lines
4.5 KiB
PHP

<?php
/*****************************************************************************
* PhotosIndex.php
* Contains the project index template.
*
* Kabuki CMS (C) 2013-2015, Aaron van Geffen
*****************************************************************************/
class PhotosIndex extends SubTemplate
{
protected $mosaic;
protected $show_edit_buttons;
protected $show_labels;
protected $row_limit = 1000;
protected $previous_header = '';
protected $url_suffix;
const PANORAMA_WIDTH = 1280;
const PANORAMA_HEIGHT = null;
const PORTRAIT_WIDTH = 400;
const PORTRAIT_HEIGHT = 645;
const LANDSCAPE_WIDTH = 850;
const LANDSCAPE_HEIGHT = 640;
const DUO_WIDTH = 618;
const DUO_HEIGHT = 412;
const SINGLE_WIDTH = 618;
const SINGLE_HEIGHT = 412;
const TILE_WIDTH = 400;
const TILE_HEIGHT = 300;
public function __construct(PhotoMosaic $mosaic, $show_edit_buttons = false, $show_labels = false, $show_headers = true)
{
$this->mosaic = $mosaic;
$this->show_edit_buttons = $show_edit_buttons;
$this->show_headers = $show_headers;
$this->show_labels = $show_labels;
}
protected function html_content()
{
echo '
<div class="tiled_grid">';
for ($i = $this->row_limit; $i > 0 && $row = $this->mosaic->getRow(); $i--)
{
list($photos, $what) = $row;
$this->header($photos);
$this->$what($photos);
}
echo '
</div>
<script type="text/javascript" src="', BASEURL, '/js/albumnav.js"></script>';
}
protected function header($photos)
{
if (!$this->show_headers)
return;
$date = $photos[0]->getDateCaptured();
if (!$date)
return;
$header = $date->format('F Y');
if ($header === $this->previous_header)
return;
$name = str_replace(' ', '', strtolower($header));
echo '
<h4 class="tiled_header" id="', $name, '">
<a href="#', $name, '">', $header, '</a>
</h4>';
$this->previous_header = $header;
}
protected function photo(Image $image, $className, $width, $height, $crop = true, $fit = true)
{
echo '
<div class="', $className, '">';
if ($this->show_edit_buttons)
echo '
<a class="edit" href="', BASEURL, '/editasset/?id=', $image->getId(), '">Edit</a>';
echo '
<a href="', $image->getPageUrl(), $this->url_suffix, '">
<img src="', $image->getThumbnailUrl($width, $height, $crop, $fit), '" alt="" title="', $image->getTitle(), '">';
if ($this->show_labels)
echo '
<h4>', $image->getTitle(), '</h4>';
echo '
</a>
</div>';
}
protected function panorama(array $photos)
{
foreach ($photos as $image)
$this->photo($image, 'panorama', static::PANORAMA_WIDTH, static::PANORAMA_HEIGHT, false, false);
}
protected function portrait(array $photos)
{
$image = array_shift($photos);
echo '
<div class="tiled_row">
<div class="column_portrait">';
$this->photo($image, 'portrait', static::PORTRAIT_WIDTH, static::PORTRAIT_HEIGHT, 'centre');
echo '
</div>
<div class="column_tiles_four">';
foreach ($photos as $image)
$this->photo($image, 'landscape', static::TILE_WIDTH, static::TILE_HEIGHT, 'centre');
echo '
</div>
</div>';
}
protected function landscape(array $photos)
{
$image = array_shift($photos);
echo '
<div class="tiled_row">
<div class="column_landscape">';
$this->photo($image, 'landscape', static::LANDSCAPE_WIDTH, static::LANDSCAPE_HEIGHT, 'top');
echo '
</div>
<div class="column_tiles_two">';
foreach ($photos as $image)
$this->photo($image, 'landscape', static::TILE_WIDTH, static::TILE_HEIGHT, 'top');
echo '
</div>
</div>';
}
protected function duo(array $photos)
{
echo '
<div class="tiled_row">';
foreach ($photos as $image)
$this->photo($image, 'duo', static::DUO_WIDTH, static::DUO_HEIGHT, true);
echo '
</div>';
}
protected function single(array $photos)
{
echo '
<div class="tiled_row">';
$image = array_shift($photos);
$this->photo($image, 'single', static::SINGLE_WIDTH, static::SINGLE_HEIGHT, 'top');
echo '
</div>';
}
protected function row(array $photos)
{
echo '
<div class="tiled_row">';
foreach ($photos as $image)
$this->photo($image, 'landscape', static::TILE_WIDTH, static::TILE_HEIGHT, true);
echo '
</div>';
}
protected function portraits(array $photos)
{
echo '
<div class="tiled_row">';
foreach ($photos as $image)
$this->photo($image, 'portrait', static::PORTRAIT_WIDTH, static::PORTRAIT_HEIGHT, true);
echo '
</div>';
}
public function setUrlSuffix($suffix)
{
$this->url_suffix = $suffix;
}
}