routeSQL : Add paginator
git-svn-id: https://svn.fournier38.fr/svn/ProgSVN/trunk@2000 bf3deb0d-5f1a-0410-827f-c0cc1f45334c
This commit is contained in:
64
routeSQL.php
64
routeSQL.php
@@ -96,6 +96,45 @@ class routeSQL
|
|||||||
return $dataflash;
|
return $dataflash;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Display a paginator
|
||||||
|
$nbentries is the total number of elements
|
||||||
|
num is the number of elements displayed by page
|
||||||
|
page is the page to display */
|
||||||
|
private function paginator ($nbentries, $page, $num)
|
||||||
|
{
|
||||||
|
// The maximum of links available in the paginator
|
||||||
|
$maxClickPaginator = 10;
|
||||||
|
$prePage = false;
|
||||||
|
$postPage = false;
|
||||||
|
$content = "<div>";
|
||||||
|
$displayedNumbers = 0;
|
||||||
|
for ($i = 1 ; $i < ($nbentries/$num) ; $i++)
|
||||||
|
{
|
||||||
|
if ($i < ($page - $maxClickPaginator/2))
|
||||||
|
{
|
||||||
|
if ($prePage === false)
|
||||||
|
$content .= "... ";
|
||||||
|
$prePage = true;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if ($displayedNumbers >= $maxClickPaginator)
|
||||||
|
{
|
||||||
|
if ($postPage === false)
|
||||||
|
$content .= "... ";
|
||||||
|
$postPage = true;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$displayedNumbers++;
|
||||||
|
$content .= "<a href='".$this->url_prefix."?page=$i&num=$num'";
|
||||||
|
if ($page == $i)
|
||||||
|
$content .= "style='background-color:#FFFF66;'";
|
||||||
|
$content .= ">$i</a> ";
|
||||||
|
}
|
||||||
|
$content .= "</div>";
|
||||||
|
return $content;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Create the routes and the associated actions */
|
||||||
public function routes ()
|
public function routes ()
|
||||||
{
|
{
|
||||||
/** Add HTML routes */
|
/** Add HTML routes */
|
||||||
@@ -105,18 +144,34 @@ class routeSQL
|
|||||||
$route->redirect ("/".$this->url_prefix, "");
|
$route->redirect ("/".$this->url_prefix, "");
|
||||||
});
|
});
|
||||||
|
|
||||||
$route->get ($this->url_prefix, function () use ($route)
|
$route->get ($this->url_prefix."(\?(page={page})?&?(num={num})?)?",
|
||||||
|
function ($page, $num) use ($route)
|
||||||
{
|
{
|
||||||
// LIST ALL THE OBJECTS OF THE TABLE
|
// LIST ALL THE OBJECTS OF THE TABLE
|
||||||
|
// num is the number of elements displayed by page
|
||||||
|
// page is the page to display
|
||||||
$this->connect();
|
$this->connect();
|
||||||
$csrf = new csrf ();
|
$csrf = new csrf ();
|
||||||
$token = $csrf->createToken ();
|
$token = $csrf->createToken ();
|
||||||
$datas = $this->objectDB->read ();
|
$datas = $this->objectDB->read ();
|
||||||
$titles = $this->objectDB->titles ();
|
$titles = $this->objectDB->titles ();
|
||||||
|
if ($page === null || $page === "") $page = 1;
|
||||||
|
if ($num === null || $num === "") $num = 10;
|
||||||
|
if ($num > 1000)
|
||||||
|
$route->redirect ("/".$this->url_prefix."?page=$page&num=1000", "");
|
||||||
|
if ($page < 1)
|
||||||
|
$route->redirect ("/".$this->url_prefix."?page=1&num=$num", "");
|
||||||
|
// TODO : Push on the last page
|
||||||
|
if ($page*$num > count ($datas))
|
||||||
|
{
|
||||||
|
$route->redirect ("/".$this->url_prefix, "");
|
||||||
|
}
|
||||||
|
|
||||||
$content = $this->showflash ();
|
$content = $this->showflash ();
|
||||||
if ($this->displayActions)
|
if ($this->displayActions)
|
||||||
$content .= "<a href='".$route->baseURL().$this->url_prefix."/add'>".
|
$content .= "<a href='".$route->baseURL().$this->url_prefix."/add'>".
|
||||||
dgettext("domframework","Add new entry")."</a>\n";
|
dgettext("domframework","Add new entry")."</a>\n";
|
||||||
|
$content .= $this->paginator(count ($datas), $page, $num);
|
||||||
$content .= "<table>\n";
|
$content .= "<table>\n";
|
||||||
$content .= " <thead>\n";
|
$content .= " <thead>\n";
|
||||||
if ($this->displayActions && $this->actionsAtEnd === false)
|
if ($this->displayActions && $this->actionsAtEnd === false)
|
||||||
@@ -135,8 +190,14 @@ class routeSQL
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
$i = 1;
|
||||||
foreach ($datas as $line)
|
foreach ($datas as $line)
|
||||||
{
|
{
|
||||||
|
if ($i <= (($page-1)*$num) || $i > (($page-1)*$num + $num))
|
||||||
|
{
|
||||||
|
$i++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
$content .= " <tr>";
|
$content .= " <tr>";
|
||||||
if ($this->displayActions && $this->actionsAtEnd === false)
|
if ($this->displayActions && $this->actionsAtEnd === false)
|
||||||
{
|
{
|
||||||
@@ -171,6 +232,7 @@ class routeSQL
|
|||||||
$content .= "</td>";
|
$content .= "</td>";
|
||||||
}
|
}
|
||||||
$content .= "</tr>\n";
|
$content .= "</tr>\n";
|
||||||
|
$i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$content .= " </tbody>\n";
|
$content .= " </tbody>\n";
|
||||||
|
|||||||
Reference in New Issue
Block a user