summaryrefslogtreecommitdiffstats
path: root/library/Poolctrl/Pagination.php
diff options
context:
space:
mode:
authorBjörn Geiger2011-07-05 13:46:50 +0200
committerBjörn Geiger2011-07-05 13:46:50 +0200
commit8a66fc8e7bca6c8973353e557d4e65c31efa2d14 (patch)
tree5d93d2bc4ef899ea5dbfb6b3cf10d9693e646e6c /library/Poolctrl/Pagination.php
parentApikey im Eventcontroller wird nun aus der Session genommen (diff)
downloadpoolctrl-8a66fc8e7bca6c8973353e557d4e65c31efa2d14.tar.gz
poolctrl-8a66fc8e7bca6c8973353e557d4e65c31efa2d14.tar.xz
poolctrl-8a66fc8e7bca6c8973353e557d4e65c31efa2d14.zip
Notifier und Pagination hinzugefügt
Diffstat (limited to 'library/Poolctrl/Pagination.php')
-rw-r--r--library/Poolctrl/Pagination.php98
1 files changed, 98 insertions, 0 deletions
diff --git a/library/Poolctrl/Pagination.php b/library/Poolctrl/Pagination.php
new file mode 100644
index 0000000..7f1a596
--- /dev/null
+++ b/library/Poolctrl/Pagination.php
@@ -0,0 +1,98 @@
+<?php
+/*
+ * Copyright (c) 2011 - OpenSLX GmbH, RZ Uni Freiburg
+ * This program is free software distributed under the GPL version 2.
+ * See http://gpl.openslx.org/
+ *
+ * If you have any feedback please consult http://feedback.openslx.org/ and
+ * send your suggestions, praise, or complaints to feedback@openslx.org
+ *
+ * General information about OpenSLX can be found at http://openslx.org/
+ */
+
+class Pool_Pagination{
+
+ private $element;
+ private $perpage;
+ private $requestpage;
+ private $maxNumber;
+ private $numpages;
+ private $pageUrl;
+
+ public function pagination($url=null,$selected=null,$max=null){
+ if($selected == null)
+ $selected = $this->requestpage;
+ if($max == null)
+ $max = $this->numpages;
+ if($url == null)
+ $url = $this->pageUrl;
+
+ #print_a($url,$selected,$max);
+
+ $str = "<div class='pbs_pagination'>";
+ if ( 1 <= $selected){
+ $str .= "<a href='$url/page/0' >&lt;&lt;</a>";
+ $str .= "<a href='$url/page/".(($selected)-1)."' rel='next'>&lt;</a>";
+ }else{
+ $str .= "<span class='disabled'>&lt;&lt;</span>";
+ $str .= "<span class='disabled'>&lt;</span>";
+ }
+
+ #
+ $rightleft = 2;
+ for($i=0;$i<($max);$i++){
+ if($selected == $i)
+ $str .= "<a class='active'>".($i+1) ."</a> ";
+ else if($i >= $selected -$rightleft && $i <= $selected+$rightleft)
+ $str .= "<a href='$url/page/".($i)."'>".($i+1) ."</a> ";
+ }
+
+ #
+ if ( $max-2 >= $selected){
+ $str .= "<a href='$url/page/".(($selected)+1)."'>&gt;</a> ";
+ $str .= "<a href='$url/page/".($max-1)."'>&gt;&gt;</a> ";
+ }else{
+ $str .= "<span class='disabled'>&gt;</span> ";
+ $str .= "<span class='disabled'>&gt;&gt;</span> ";
+ }
+
+ $str .= "</div>";
+ return $str;
+ }
+ public function setPerPage($perpage){
+ $this->perpage = $perpage;
+ return $this;
+ }
+ public function getPerPage(){
+ return $this->perpage;
+ }
+ public function setRequestPage($requestpage){
+ if($requestpage < 0 || !is_numeric($requestpage) )
+ $requestpage = 0;
+ if($requestpage >= $this->numpages)
+ $requestpage = $this->numpages-1;
+ $this->requestpage = $requestpage;
+ return $this;
+ }
+ public function getRequestPage(){
+ return $this->requestpage;
+ }
+ public function setElement($element){
+ $this->element = $element;
+ $this->maxNumber = count($element);
+ $this->numpages = ceil(count($element)/$this->perpage);
+ return $this;
+ }
+ public function getStartItem(){
+ return $this->requestpage * $this->perpage;
+ }
+ public function getElements(){
+ return array_slice($this->element,$this->getStartItem(),$this->getPerPage(),true);
+ }
+ public function setPageUrl($url){
+ $this->pageUrl = $url;
+ return $this;
+ }
+
+}
+