/** * * @param string $object * @param string $action * @param integer $page * @param array $params * @return Domstor_List_Common */ public function getList($object, $action, $page, array $params = array()) { // Упаковываем $object, $action и $page в параметры $params['object'] = $object; $params['action'] = $action; $params['page'] = $page ? $page : 1; $filter = $this->createFilter($object, $action); if ($filter) { $filter->bindFromRequest(); } // Получаем url запроса на основе параметров $url = $this->_getListRequest($params); // Получаем данные $data = $this->_getData($url); // Последний элемент - общее число объектов $total = array_pop($data); // Создаем фабрику списков $factory = new Domstor_List_ListFactory(); // Получаем параметры для списка $list_params = $this->_prepareListParams($params); $list_params['data'] = $data; // Фабрика создает список $list = $factory->create($object, $action, $list_params); // Создаем объект pager постраничного вывода $this->pager->init(array('total' => $total, 'pager_count' => $this->pagination_count, 'href_tmpl' => $this->_processListHref($params), 'href_page_part' => $this->getHrefTemplate('page_part'), 'link_tmpl' => '<a class="domstor_pagination_link" href="%href">%text</a> ', 'layout_tmpl' => '<div class="domstor_pagination"><p>%info%text</p></div>', 'current_page_tmpl' => '<span class="domstor_pagination_selected">%text</span> ', 'current' => $page)); $list->setPager($this->pager); $list->setFilter($filter); return $list; }
public function getHtml() { $out = ''; if ($this->_show_filter) { $out .= (string) $this->getFilter(); } if (count($this->data)) { $out .= parent::getHtml(); $out .= $this->pager->render(); } else { $out .= $this->empty_list_message; } return $out; }