Themes can choose child thumbnail when asking for proportion.

This helps themes better calculate an item's container size, for cases
when the first item significantly differs in size from the rest.

Trac-Ticket: #1838
This commit is contained in:
Jozef Selesi
2013-03-11 15:59:00 +01:00
parent bae14a76e5
commit 3c47deb9ef
2 changed files with 18 additions and 5 deletions

View File

@@ -58,17 +58,30 @@ class Theme_View_Core extends Gallery_View {
}
/**
* Proportion of the current thumb_size's to default
* Proportion of the current thumb_size's to default.
*
* Themes can optionally use the $dimension parameter to choose which of the album's
* children will be used to determine the proportion. If set, the proportion will be
* calculated based on the child item with the largest width or height.
*
* @param object Item_Model (optional) check the proportions for this item
* @param int (optional) minimum thumbnail width
* @param string (optional) "width" or "height"
* @return int
*/
public function thumb_proportion($item=null, $minimum_size=0) {
// If the item is an album with children, grab the first item in that album instead. We're
public function thumb_proportion($item=null, $minimum_size=0, $dimension=null) {
if (!in_array($dimension, array("height", "width"))) {
$dimension = null;
}
// If the item is an album with children, grab an item from that album instead. We're
// interested in the size of the thumbnails in this album, not the thumbnail of the
// album itself.
if ($item && $item->is_album() && $item->children_count()) {
$item = $item->children(1)->current();
$orderBy = (is_null($dimension)) ? array()
: array("thumb_".$dimension => "desc");
$item = $item->children(1, null, array(), $orderBy)->current();
}
// By default we have a globally fixed thumbnail size In core code, we just return a fixed