<?php /** * Provides a strip of thumbnails showing all of the images in the system. * It will be tied to a 'parent field' that will provide it with a filter by which to reduce the number * of thumbnails displayed. */ class ThumbnailStripField extends FormField { protected $parentField; protected $updateMethod; function __construct($name, $parentField, $updateMethod = "getimages") { $this->parentField = $parentField; $this->updateMethod = $updateMethod; parent::__construct($name); } function ParentField() { return $this->form->FormName() . '_' . $this->parentField; } function FieldHolder() { Requirements::javascript('cms/javascript/ThumbnailStripField.js'); return $this->renderWith('ThumbnailStripField'); } function Images() { //return DataObject::get("Image", "Paretn); } function UpdateMethod() { return $this->updateMethod; } /** * Populate the Thumbnail strip field, by looking for a folder, * and the descendants of this folder. */ function getimages() { $result = ''; $folder = DataObject::get_by_id("Folder", $_GET['folderID']); if( !$folder ) return 'This is not a folder'; $folderList = $folder->getDescendantIDList("Folder"); array_unshift($folderList, $folder->ID); $images = DataObject::get("Image", "ParentID IN (" . implode(', ', $folderList) . ")"); if($images) { $result .= '<ul>'; foreach($images as $image) { $thumbnail = $image->getFormattedImage('StripThumbnail'); // Constrain the output image to a 600x600 square. This is passed to the destwidth/destheight in the class, which are then used to // set width & height properties on the <img> tag inserted into the CMS. Resampling is done after save $width = $image->Width; $height = $image->Height; if($width > 600) { $height *= (600/$width); $width = 600; } if($height > 600) { $width *= (600/$height); $height = 600; } $result .= '<li>' . '<a href=" ' . $image->Filename . '">' . '<img class="destwidth=' . round($width) . ',destheight=' . round($height) . '" src="'. $thumbnail->URL .'" alt="' . $image->Title . '" title="' . $image->Title . '" />' . '</a>' . '</li>'; } $result .= '</ul>'; }else{ $result = "<h2> No images found in ". $folder->Title. "</h2>"; } return $result; } function getflash() { $folder = DataObject::get_by_id("Folder", $_GET['folderID']); if( !$folder ) return 'This is not a folder'; $folderList = $folder->getDescendantIDList("Folder"); array_unshift($folderList, $folder->ID); $width = Image::$strip_thumbnail_width - 10; $height = Image::$strip_thumbnail_height - 10; $flashObjects = DataObject::get("File", "ParentID IN (" . implode(', ', $folderList) . ") AND Filename LIKE '%.swf'"); if($flashObjects) { $result .= '<ul>'; foreach($flashObjects as $flashObject) { // doesn't work well because we can't stop/mute flash-files, AND IE does not bubble javascript-events // over a flash-object grml // $result .= <<<HTML //<a href="$flashObject->URL"> // <object type="application/x-shockwave-flash" data="$flashObject->URL" width="$width" height="$height"> // <param name="movie" value="$flashObject->URL" /> // </object> //</a> //HTML; $mceRoot = MCE_ROOT . $result .= <<<HTML <li> <a href="$flashObject->URL"> <img src="{$mceRoot}themes/advanced/images/spacer_flash.jpg" alt="spacer" width="$width" height="$height" /> <br /> $flashObject->Name </a> </li> HTML; } $result .= '</ul>'; } return $result; } } ?>