1: <?php
2:
3: /**
4: * Picon Framework
5: * http://code.google.com/p/picon-framework/
6: *
7: * Copyright (C) 2011-2012 Martin Cassidy <martin.cassidy@webquub.com>
8:
9: * Picon Framework is free software: you can redistribute it and/or modify
10: * it under the terms of the GNU General Public License as published by
11: * the Free Software Foundation, either version 3 of the License, or
12: * (at your option) any later version.
13:
14: * Picon Framework is distributed in the hope that it will be useful,
15: * but WITHOUT ANY WARRANTY; without even the implied warranty of
16: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17: * General Public License for more details.
18:
19: * You should have received a copy of the GNU General Public License
20: * along with Picon Framework. If not, see <http://www.gnu.org/licenses/>.
21: * */
22:
23: namespace picon;
24:
25: /**
26: * A list of navigation links to allow the choice of all pages of a
27: * paginatable component.
28: *
29: * @todo this will get longer and longer if there are too many pages, the
30: * amount should be restricted and the page links shown varied based on current page
31: * @author Martin Cassidy
32: * @package web/markup/html/paging
33: */
34: class Navigator extends Panel
35: {
36: private $pageable;
37:
38: public function __construct($id, Pageable $pageable)
39: {
40: parent::__construct($id);
41: $this->pageable = $pageable;
42:
43: $pageLinks = new RepeatingView('page');
44: $this->add($pageLinks);
45:
46: for($i = 0; $i < $this->pageable->getPageCount(); $i++)
47: {
48: $linkBlock = new MarkupContainer($pageLinks->getNextChildId());
49: $link = new NavigationLink('pageLink', $pageable, $i+1);
50: $linkBlock->add($link);
51: $link->add(new Label('pageNumber', new BasicModel($i+1)));
52: $pageLinks->add($linkBlock);
53: }
54: }
55: }
56:
57: ?>
58: