1<?php 2 3/** 4 * Gallery view 5 * 6 * Implemented as an unorder list 7 * 8 * @uses $vars['items'] Array of ElggEntity, ElggAnnotation or ElggRiverItem objects 9 * @uses $vars['offset'] Index of the first list item in complete list 10 * @uses $vars['limit'] Number of items per page 11 * @uses $vars['count'] Number of items in the complete list 12 * @uses $vars['pagination'] Show pagination? (default: true) 13 * @uses $vars['position'] Position of the pagination: before, after, or both 14 * @uses $vars['full_view'] Show the full view of the items (default: false) 15 * @uses $vars['gallery_class'] Additional CSS class for the <ul> element 16 * @uses $vars['item_class'] Additional CSS class for the <li> elements 17 * @uses $vars['item_view'] Alternative view to render list items 18 * @uses $vars['no_results'] Message to display if no results (string|Closure) 19 */ 20$items = elgg_extract('items', $vars); 21$count = elgg_extract('count', $vars); 22$pagination = elgg_extract('pagination', $vars, true); 23$position = elgg_extract('position', $vars, 'after'); 24$no_results = elgg_extract('no_results', $vars, ''); 25 26if ($no_results === true) { 27 $no_results = elgg_echo('notfound'); 28} 29 30if (!$items && $no_results) { 31 echo elgg_view('page/components/no_results', $vars); 32 return; 33} 34 35if (!is_array($items) || count($items) == 0) { 36 return; 37} 38 39elgg_push_context('gallery'); 40 41$list_classes = elgg_extract_class($vars, 'elgg-gallery', 'gallery_class'); 42 43$item_classes = elgg_extract_class($vars, 'elgg-item', 'item_class'); 44 45$nav = ($pagination) ? elgg_view('navigation/pagination', $vars) : ''; 46 47$index = 0; 48$list_items = ''; 49foreach ($items as $item) { 50 $item_view_vars = $vars; 51 $item_view_vars['list_item_index'] = $index; 52 $item_view = elgg_view_list_item($item, $item_view_vars); 53 if (!$item_view) { 54 continue; 55 } 56 57 $li_attrs = ['class' => $item_classes]; 58 59 if ($item instanceof \ElggEntity) { 60 $li_attrs['id'] = "elgg-{$item->getType()}-{$item->getGUID()}"; 61 } else if (is_callable([$item, 'getType'])) { 62 $li_attrs['id'] = "item-{$item->getType()}-{$item->id}"; 63 } 64 65 $list_items .= elgg_format_element('li', $li_attrs, $item_view); 66 $index++; 67} 68 69if ($position == 'before' || $position == 'both') { 70 echo $nav; 71} 72 73if (empty($list_items) && $no_results) { 74 // there are scenarios where item views do not output html. In those cases show the no results info 75 echo elgg_view('page/components/no_results', $vars); 76} else { 77 echo elgg_format_element('ul', ['class' => $list_classes], $list_items); 78} 79 80if ($position == 'after' || $position == 'both') { 81 echo $nav; 82} 83 84elgg_pop_context(); 85