From 07f5140771388c9e0c8a99b0dd2e5d950bdb173b Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Thu, 14 Oct 2021 15:16:42 +1100 Subject: moving h-source subdir out. --- Library/Helper/Pages.php | 140 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100755 Library/Helper/Pages.php (limited to 'Library/Helper/Pages.php') diff --git a/Library/Helper/Pages.php b/Library/Helper/Pages.php new file mode 100755 index 0000000..d8ac856 --- /dev/null +++ b/Library/Helper/Pages.php @@ -0,0 +1,140 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//Helper class to create the HTML of the page list +class Helper_Pages extends Helper_Html +{ + + protected $_urlViewAction; //url of the current page + protected $_currentPage; //number of the page + protected $_numbOfPages; //number of pages + protected $_variableArg = ''; //value of the $viewArgs key that has to be modified + + public $previousString = null; //string of the link to the previous page + public $nextString = null; //string of the link to the next page + public $showNext = true; + public $showPrev = true; + + //instance of Lang_{language}_Generic + public $strings = null; + + public function __construct() + { + //get the generic language class + $this->strings = Factory_Strings::generic(Params::$language); + } + + public function build($urlViewAction = '' , $variableArg = 'page', $previousString = 'previous', $nextString = 'next') + { + $this->_variableArg = $variableArg; + $this->_urlViewAction =$urlViewAction; //url of the controller and (/) main action + $this->previousString = $this->strings->gtext($previousString); + $this->nextString = $this->strings->gtext($nextString); + } + + //return the number of pages + public function getNumbOfPages() + { + return $this->_numbOfPages; + } + + //get the limit of the select query clause + public function getLimit($currentPage,$recordNumber,$recordPerPage) + { + $this->_currentPage = $currentPage; + $this->_numbOfPages=(($recordNumber%$recordPerPage)===0) ? (int) ($recordNumber/$recordPerPage) : ((int) ($recordNumber/$recordPerPage))+1; + $start=(($currentPage-1)*$recordPerPage); + return "$start,$recordPerPage"; + } + + //return the page list string + public function render($pageNumber,$numberOfPages) + { + $pageList = null; + if ($this->showPrev) + { + $pageList .= $this->pageLink($this->_currentPage-1,$this->previousString); + } + $pageList .= $this->recursiveLink($pageNumber,$numberOfPages); + if ($this->showNext) + { + $pageList .= $this->pageLink($this->_currentPage+1,$this->nextString); + } + return $pageList; + } + + //recorsive function in order to write the page list + public function recursiveLink($pageNumber,$numberOfPages) + { + + if ($numberOfPages === 0) return null; + + if ($numberOfPages === 1) { + return $this->pageLink($pageNumber); + } else { + return $this->pageLink($pageNumber) . $this->recursiveLink($pageNumber+1,$numberOfPages-1); + } + } + + public function pageLink($pageNumber, $string = null) { + if ($pageNumber > 0 and $pageNumber <= $this->_numbOfPages) { + return $this->html($pageNumber,$string); + } else { + return null; + } + } + + //return the html link + public function html($pageNumber,$string = null) { + if (isset($string)) { + $strNumber = $string; + $strClass = "class='itemListPage'"; + } else { + if ($pageNumber === $this->_currentPage) + { + $strNumber = $pageNumber; + $strClass = "class='currentPage'"; + } + else + { + $strNumber = $pageNumber; + $strClass = "class='itemListPage'"; + } + } + $this->viewArgs[$this->_variableArg] = $pageNumber; + $viewStatus = Url::createUrl(array_values($this->viewArgs)); + $href= Url::getRoot(null) . $this->_urlViewAction .$viewStatus; + return $this->getATag($href,$strNumber,$strClass); + } + + //get the HTMl of the tag + //$href: href of the link + //$text: the text of the link + //$strClass: the class of the link + public function getATag($href,$text,$strClass) + { + return "$text"; + } + +} \ No newline at end of file -- cgit v1.2.3