/** * Renders the data items for the view. * Each item is corresponding to a single data model instance. */ public function renderItems() { $thumbnails = array(); $data = $this->dataProvider->getData(); if (!empty($data)) { $owner = $this->getOwner(); $render = $owner instanceof CController ? 'renderPartial' : 'render'; foreach ($data as $i => $row) { $thumbnail = array(); $d = $this->viewData; $d['index'] = $i; $d['data'] = $row; $d['widget'] = $this; $thumbnail['content'] = $owner->{$render}($this->itemView, $d, true); if (isset($this->url)) { $thumbnail['url'] = $this->evaluateExpression($this->url, array('data' => $row)); } if (isset($this->span)) { $thumbnail['span'] = $this->span; } $thumbnails[] = $thumbnail; } echo TbHtml::thumbnails($thumbnails, $this->htmlOptions); } else { $this->renderEmptyText(); } }
?> </div> <pre class="prettyprint linenums"> <?php echo TbHtml::thumbnails(array( array('image' => '...', 'label' => 'Thumbnail label', 'caption' => '...'), array('image' => '...', 'label' => 'Thumbnail label', 'caption' => '...'), array('image' => '...', 'label' => 'Thumbnail label', 'caption' => '...'), ), array('span' => 4)); ?></pre> <div> <h2>Different sizes</h2> <?php echo TbHtml::thumbnails(array(array('image' => 'holder.js/360x270', 'url' => '#', 'span' => 4), array('image' => 'holder.js/260x120', 'url' => '#', 'span' => 3), array('image' => 'holder.js/160x120', 'url' => '#', 'span' => 2), array('image' => 'holder.js/260x120', 'url' => '#', 'span' => 3), array('image' => 'holder.js/160x120', 'url' => '#', 'span' => 2))); ?> </div> <pre class="prettyprint linenums"> <?php echo TbHtml::thumbnails(array( array('image' => '...', 'url' => '#', 'span' => 4), array('image' => '...', 'url' => '#', 'span' => 3), array('image' => '...', 'url' => '#', 'span' => 2), array('image' => '...', 'url' => '#', 'span' => 3), array('image' => '...', 'url' => '#', 'span' => 2), )); ?> </pre> </section> <!-- Alerts ================================================== -->
public function testThumbnails() { $I = $this->codeGuy; $items = array(array('image' => 'image.png', 'label' => 'Thumbnail label', 'caption' => 'Caption text', 'span' => 6, 'imageOptions' => array('class' => 'image', 'alt' => 'Alternative text'), 'captionOptions' => array('class' => 'div'), 'labelOptions' => array('class' => 'heading')), array('image' => 'image.png', 'label' => 'Thumbnail label', 'caption' => 'Caption text'), array('image' => 'image.png', 'label' => 'Thumbnail label', 'caption' => 'Caption text')); $html = TbHtml::thumbnails($items, array('span' => 3, 'class' => 'list')); $thumbnails = $I->createNode($html, 'ul.thumbnails'); $I->seeNodeCssClass($thumbnails, 'list'); $I->seeNodeNumChildren($thumbnails, 3); $I->seeNodeChildren($thumbnails, array('li.span6', 'li.span3', 'li.span3')); foreach ($thumbnails->children() as $i => $liElement) { $li = $I->createNode($liElement); $thumbnail = $li->filter('div.thumbnail'); $I->seeNodeChildren($thumbnail, array('img', 'div.caption')); $img = $thumbnail->filter('img'); $I->seeNodeAttribute($img, 'src', 'image.png'); $caption = $thumbnail->filter('div.caption'); $h3 = $caption->filter('h3'); $I->seeNodeText($caption, $items[$i]['caption']); $I->seeNodeText($h3, $items[$i]['label']); if ($i === 0) { $I->seeNodeCssClass($img, 'image'); $I->seeNodeAttribute($img, 'alt', 'Alternative text'); $I->seeNodeCssClass($caption, 'div'); $I->seeNodeCssClass($h3, 'heading'); } } $html = TbHtml::thumbnails(array()); $this->assertEquals('', $html); }