public function _getSlices($params) { $gallery_id = $params->get('gallery_id', ''); $link = $params->get('gallery_link', 'false'); if (empty($gallery_id)) { return; } $sort_by = $params->get('sort_by', 'slice_title'); $sort_direction = $params->get('sort_direction', 'ASC'); $model = new RokGallery_Site_GalleryModel($gallery_id, $sort_by, $sort_direction); $slices = $model->getSlices(); $images = array(); $limit = $params->get('limit_count', 0); foreach ($slices as $slice) { $images[] = $this->_getPresentationImage($slice, $params); $limit--; if ($limit == 0) { break; } } return $images; }
function display($tpl = null) { JHTML::_('behavior.mootools'); $session = JFactory::getSession(); $session_namespace = 'com_rokgallery.site'; $app =& JFactory::getApplication(); $menu = $app->getMenu(); $activemenu = $menu->getActive(); if (empty($activemenu)) { $activemenu = $menu->getDefault(); $menu->setActive($activemenu->id); } /** @var $params JParameter */ $params =& $activemenu->params; foreach ($params->toArray() as $param_name => $param_value) { $this->assign($param_name, $param_value); } $document =& JFactory::getDocument(); $uri = JRequest::getURI(); // Get session variables $style = JRequest::getWord('style', $params->get('default_style')); $sort_direction = JRequest::getVar('sort_direction', $session->get('sort_direction', $params->get('default_sort_direction'), $session_namespace)); if ($params->get('show_sorts')) { $sort_by = JRequest::getVar('sort_by', $session->get('sort_by', $params->get('default_sort_by'), $session_namespace)); } else { $sort_by = JRequest::getVar('sort_by', $params->get('default_sort_by')); } if ($params->get('show_available_layouts', true)) { $layout = JRequest::getVar('layout', $session->get('layout', $this->getLayout(), $session_namespace)); } else { $layout = JRequest::getVar('layout', $this->getLayout()); } if ($layout == 'default') { $layout = $params->get('default_layout'); } $items_per_row = (int) $params->get($layout . '-items_per_row', 2); $items_per_page = (int) $params->get($layout . '-items_per_row', 2) * (int) $params->get($layout . '-rows_per_page', 2); $gallery_id = $params->get('gallery_id'); $current_page = JRequest::getInt('page', 1); $menu_item = JRequest::getInt('Itemid'); // Set session passed vars $session->set('gallery_id', $gallery_id, $session_namespace); $session->set('sort_by', $sort_by, $session_namespace); $session->set('sort_direction', $sort_direction, $session_namespace); $session->set('layout', $layout, $session_namespace); $session->set('last_page', $current_page, $session_namespace); $session->set('items_per_page', $items_per_page, $session_namespace); $base_page_url = RokCommon_URL::setParams('index.php', array('option' => 'com_rokgallery', 'view' => 'gallery')); $base_ajax_url = RokCommon_URL::setParams('index.php', array('option' => 'com_rokgallery', 'task' => 'ajax', 'format' => 'raw')); $model = new RokGallery_Site_GalleryModel($gallery_id, $sort_by, $sort_direction); $gallery = RokGallery_Model_GalleryTable::getSingle($gallery_id); if ($gallery == false) { return JError::raiseError(500, 'Gallery with ID "' . $params->get('gallery_id') . '" not found'); } $slices = $model->getPagedSlices($current_page, $items_per_page); $pager = $model->getPager(); if ($pager->getLastPage() < $current_page) { $current_page = $pager->getLastPage(); } $next_page = false; $prev_page = false; $pages = false; if ($pager->haveToPaginate()) { $ranger = $pager->getRange('Sliding', array('chunk' => $params->get('pages_in_shown_range'))); $pages = array(); foreach ($ranger->rangeAroundPage() as $page) { $page_class = new stdClass(); $page_class->page_num = $page; $page_class->active = $current_page == $page; if (!$page_class->active) { $page_class->link = JRoute::_(RokCommon_URL::updateParams($base_page_url, array('page' => $page))); } else { $page_class->link = '#'; } $pages[] = $page_class; if ($page == $pager->getNextPage() && $pager->getNextPage() != $current_page) { $next_page = $page_class; } if ($page == $pager->getPreviousPage() && $pager->getPreviousPage() != $current_page) { $prev_page = $page_class; } } } $images = array(); $passed_slices = array(); foreach ($slices as &$slice) { $images[] = $this->getPresentationImage($slice, $params, $base_page_url, $sort_by, $sort_direction); $passed_slices[$slice->id] = $slice; } $this->assignRef('images', $images); $this->assignRef('slices', $passed_slices); $layout_names = array('grid-3col' => rc__('ROKGALLERY_GRID_3COL'), 'grid-4col' => rc__('ROKGALLERY_GRID_4COL'), 'list-2col' => rc__('ROKGALLERY_LIST_2COL')); $layouts = $this->getList('layout', $layout, $current_page, $layout_names, $menu_item, $base_page_url); $this->assignRef('layouts', $layouts); $style_names = array('light' => rc__('ROKGALLERY_LIGHT'), 'dark' => rc__('ROKGALLERY_DARK')); $styles = $this->getList('style', $style, $current_page, $style_names, $menu_item, $base_page_url); $this->assignRef('styles', $styles); $sort_by_names = array('gallery_ordering' => rc__('ROKGALLERY_SORT_GALLERY_ORDERING'), 'file_created_at' => rc__('ROKGALLERY_SORT_CREATED'), 'slice_updated_at' => rc__('ROKGALLERY_SORT_UPDATED'), 'slice_title' => rc__('ROKGALLERY_SORT_TITLE'), 'loves' => rc__('ROKGALLERY_SORT_LOVES'), 'views' => rc__('ROKGALLERY_SORT_VIEWS')); $sort_bys = $this->getList('sort_by', $sort_by, $current_page, $sort_by_names, $menu_item, $base_page_url); $this->assignRef('sort_bys', $sort_bys); $sort_dir_names = array('ASC' => 'ascending', 'DESC' => 'descending'); $sort_directions = $this->getList('sort_direction', $sort_direction, $current_page, $sort_dir_names, $menu_item, $base_page_url); $this->assignRef('sort_directions', $sort_directions); $total_items = $pager->getNumResults(); $item_number = $pager->getFirstIndice(); $layout_context = 'com_rokgallery.gallery.' . $layout; $style_context = $layout_context . '.' . $style; // Assignments to JS namespaces $this->assign('base_ajax_url', $base_ajax_url); $this->assign('available_layouts', $params->get('available_layouts', array())); $this->assign('available_sorts', $params->get('available_sorts', array())); $sort_dir = false; foreach ($sort_bys as $sort_by_item) { if ($sort_by_item->active) { $sort_dir = new stdClass(); $sort_dir->field = $sort_by_item->name; $other_sort = $sort_direction == 'ASC' ? 'DESC' : 'ASC'; $sort_dir->link = $sort_directions[$other_sort]->link; $sort_dir->class = $other_sort == 'ASC' ? 'ascending' : 'descending'; break; } } // Joomla params $this->assign('show_page_heading', $params->get('show_page_heading', 1)); $this->assign('page_heading', $this->escape($params->get('page_heading'))); // Assignments to page passed vars $this->assign('pages', $pages); $this->assign('next_page', $next_page); $this->assign('prev_page', $prev_page); $this->assign('items_per_row', $items_per_row); $this->assign('total_items', $total_items); $this->assign('items_per_page', $items_per_page); $this->assign('item_number', $item_number); $this->assign('context', $layout_context); $this->assign('style_context', $style_context); $this->assign('current_page', $current_page); $this->assign('thumb_width', $gallery->thumb_xsize); $this->assign('thumb_height', $gallery->thumb_ysize); $this->assign('sort_by', $sort_by); $this->assign('sort_direction', $sort_direction); $this->assign('sort_dir', $sort_dir); $this->assign('style', $style); $this->assign('layout', $layout); // populate basic page render vars $this->assign('show_created_at', $params->get('gallery_show_created_at', true)); $this->assign('show_tags', $params->get('gallery_show_tags', false)); $this->assign('show_tags_count', $params->get('gallery_show_tags_count', false)); $this->assign('show_caption', $params->get('gallery_show_caption', false)); $this->assign('show_title', $params->get('gallery_show_title', false)); $this->assign('show_loves', $params->get('gallery_show_loves', false)); $this->assign('show_views', $params->get('gallery_show_views', false)); $this->assign('show_available_layouts', $params->get('show_available_layouts', true)); $this->setLayout('default'); parent::display($tpl); }