Maestro_View_Helper_Lightbox_Gallery

Maestro_View_Helper_Lightbox_Gallery jest to helper widoku służący do generowania galerii zdjęć przy pomocy pluginu lighbox do biblioteki jQuery: http://leandrovieira.com/projects/jquery/lightbox/

Aby wykorzystać możliwości helpera, należy umieścić w pliku:

library/Maestro/View/Helper/Lightbox/Gallery.php

kod helpera podany na końcu tej strony. Plik można pobrać również stąd: LightboxGallery.php

Wykorzystanie helpera jest bardzo proste. Jako parametry wejściowe przyjmuje on 3 argumenty:

  • ścieżkę do folderu ze zdjęciami do galerii
  • tablicę lub obiekt iteratora obiektów reprezentujących zdjęcia galerii
  • ilość zdjęć w wierszu tabeli w której są umieszczone zdjęcia w galerii

Przykład – fragment skryptu widoku:

...
$this->lightbox_gallery( '/uploads/dangers/', $this->gallery->getImages(), 5 );
...

Metoda getImages() zwraca w tym wypadku obiekt Zend_Db_Table_Rowset, w którym jest zbiór obrazków do wyświetlenia.

Kod helpera Maestro_View_Helper_Lightbox_Gallery

/**
 *
 * All rights reserved
 *
 * @copyright 2010 Marcin Krzych
 */
 
/**
 * View Helper for Maestro Framework generating a gallery using a jquery.lightbox javascript library.
 * @see http://leandrovieira.com/projects/jquery/lightbox/
 *
 */
class Maestro_View_Helper_Lightbox_Gallery extends Zend_View_Helper_Abstract {
 
	/**
	 * creates html for a lightbox gallery
	 * @param string $path path to folder with files in gallery
	 * @param array $images objects with at least two public attributes: file and description which contain name of the image file and image description
	 * @return string html for gallery
	 */
	public function lightbox_gallery( $path, $images, $itemsInRow ) {
		$html = '';
		if( count($images) > 0 ) {
			//adds a  lightbox library: a js and a css file
			$this->view->headScript()->appendFile('/js/jquery.lightbox-0.5.js');
			$this->view->headLink()->appendStylesheet('/styles/main/jquery.lightbox-0.5.css');
			//adds a lighbox script making a gallery
			$this->view->headScript()->appendScript('$(document).ready( function() { $(\'a.lightBox\').lightBox(); } );');
			//adds a styles to display the gallery
			$this->view->headStyle()->appendStyle('div.maestro-gallery img { width: 120px; border: none; }
				#lightbox-image { border: none; padding: 0; }');
 
			$html .= '
<div class="maestro-gallery">
';
			$i=1;
			foreach( $images as $image ) {
				if( $i % $itemsInRow == 0) {
					$html .= '';
				} else {
					$html .='
 
';
				}
				$i++;
			}
 
			$html .= '
<table>
<tbody>
<tr>
<td>
 <a class="lightBox" title="'.$image->description.'" href="'.$path.$image->file.'"><img src="'.$path.$image->file.'" alt="photo" /></a></td>
</tr>
</tbody>
</table>
</div>
';
		} else {
			$html .= '
<div class="maestro-gallery">
 
'.$this->view->translate('noPhotoInGallery').'</div>
';
		}
 
		return $html;
	}
}

Dodaj komentarz

This site uses Akismet to reduce spam. Learn how your comment data is processed.