1
0
mirror of https://github.com/chylex/Lightning-Tracker.git synced 2025-03-13 00:15:44 +01:00

Move pagination elements per page property to a cookie

This commit is contained in:
chylex 2020-08-10 15:05:49 +02:00
parent dcaaa09224
commit 0671789417
8 changed files with 15 additions and 27 deletions

View File

@ -7,8 +7,6 @@ use LogicException;
use PDOStatement;
abstract class AbstractFilter{
public const GET_PAGE = 'page';
protected const OP_EQ = 'eq';
protected const OP_LIKE = 'like';

View File

@ -4,12 +4,18 @@ declare(strict_types = 1);
namespace Database\Filters;
class Pagination{
public const GET_PAGE = 'page';
public const COOKIE_ELEMENTS = 'pagination_elements';
public static function empty(): self{
return new self(1, 0, 1);
}
public static function fromGet(string $key, int $total_elements, int $elements_per_page): self{
return new self((int)($_GET[$key] ?? 1), $total_elements, $elements_per_page);
public static function fromGlobals(int $total_elements): self{
$current_page = (int)($_GET[self::GET_PAGE] ?? 1);
$elements_per_page = (int)($_COOKIE[self::COOKIE_ELEMENTS] ?? 15);
return new self($current_page, $total_elements, $elements_per_page);
}
private int $current_page;

View File

@ -3,7 +3,6 @@ declare(strict_types = 1);
namespace Pages\Components\Table\Elements;
use Database\Filters\AbstractFilter;
use Database\Filters\Pagination;
use Pages\IViewable;
use Routing\Request;
@ -71,7 +70,7 @@ HTML;
private function echoPageNumber(int $page, string $text): void{
$active = $this->pagination->getCurrentPage() === $page ? ' class="active"' : '';
$link = BASE_URL_ENC.'/'.$this->req->pathWithGet(AbstractFilter::GET_PAGE, $page);
$link = BASE_URL_ENC.'/'.$this->req->pathWithGet(Pagination::GET_PAGE, $page);
echo <<<HTML
<li$active>
@ -81,7 +80,7 @@ HTML;
}
private function echoPageIcon(int $page, string $icon): void{
$link = BASE_URL_ENC.'/'.$this->req->pathWithGet(AbstractFilter::GET_PAGE, $page);
$link = BASE_URL_ENC.'/'.$this->req->pathWithGet(Pagination::GET_PAGE, $page);
echo <<<HTML
<li>

View File

@ -4,7 +4,6 @@ declare(strict_types = 1);
namespace Pages\Models\Root;
use Database\DB;
use Database\Filters\AbstractFilter;
use Database\Filters\Pagination;
use Database\Filters\Types\TrackerFilter;
use Database\Objects\UserProfile;
@ -31,8 +30,6 @@ class TrackersModel extends BasicRootPageModel{
public const PERM_ADD = 'trackers.add';
public const PERM_EDIT = 'trackers.edit';
private const TRACKERS_PER_PAGE = 15;
private Permissions $perms;
private TableComponent $table;
private ?FormComponent $form;
@ -81,7 +78,7 @@ class TrackersModel extends BasicRootPageModel{
$trackers = new TrackerTable(DB::get());
$total_count = $trackers->countTrackers($filter);
$pagination = Pagination::fromGet(AbstractFilter::GET_PAGE, $total_count, self::TRACKERS_PER_PAGE);
$pagination = Pagination::fromGlobals($total_count);
$filter = $filter->page($pagination);
foreach($trackers->listTrackers($filter) as $tracker){

View File

@ -4,7 +4,6 @@ declare(strict_types = 1);
namespace Pages\Models\Root;
use Database\DB;
use Database\Filters\AbstractFilter;
use Database\Filters\Pagination;
use Database\Filters\Types\UserFilter;
use Database\SQL;
@ -31,8 +30,6 @@ class UsersModel extends BasicRootPageModel{
public const PERM_ADD = 'users.add';
public const PERM_EDIT = 'users.edit';
private const USERS_PER_PAGE = 15;
private Permissions $perms;
private TableComponent $table;
private ?FormComponent $form;
@ -99,7 +96,7 @@ class UsersModel extends BasicRootPageModel{
$users = new UserTable(DB::get());
$total_count = $users->countUsers();
$pagination = Pagination::fromGet(AbstractFilter::GET_PAGE, $total_count, self::USERS_PER_PAGE);
$pagination = Pagination::fromGlobals($total_count);
$filter = $filter->page($pagination);
foreach($users->listUsers($filter) as $user){

View File

@ -4,7 +4,6 @@ declare(strict_types = 1);
namespace Pages\Models\Tracker;
use Database\DB;
use Database\Filters\AbstractFilter;
use Database\Filters\Pagination;
use Database\Filters\Types\IssueFilter;
use Database\Objects\TrackerInfo;
@ -19,8 +18,6 @@ use Routing\Request;
use Session\Permissions;
class IssuesModel extends BasicTrackerPageModel{
private const ISSUES_PER_PAGE = 15;
public const PERM_CREATE = 'issues.create';
public const PERM_EDIT_ALL = 'issues.edit.all';
public const PERM_DELETE_ALL = 'issues.delete.all';
@ -57,7 +54,7 @@ class IssuesModel extends BasicTrackerPageModel{
$issues = new IssueTable(DB::get(), $tracker);
$total_count = $issues->countIssues($filter);
$pagination = Pagination::fromGet(AbstractFilter::GET_PAGE, $total_count, self::ISSUES_PER_PAGE);
$pagination = Pagination::fromGlobals($total_count);
$filter = $filter->page($pagination);
foreach($issues->listIssues($filter) as $issue){

View File

@ -4,7 +4,6 @@ declare(strict_types = 1);
namespace Pages\Models\Tracker;
use Database\DB;
use Database\Filters\AbstractFilter;
use Database\Filters\Pagination;
use Database\Filters\Types\TrackerMemberFilter;
use Database\Objects\TrackerInfo;
@ -29,8 +28,6 @@ class MembersModel extends BasicTrackerPageModel{
public const PERM_LIST = 'members.list';
public const PERM_MANAGE = 'members.manage';
private const USERS_PER_PAGE = 15;
private Permissions $perms;
private TableComponent $table;
private ?FormComponent $form;
@ -92,7 +89,7 @@ class MembersModel extends BasicTrackerPageModel{
$members = new TrackerMemberTable(DB::get(), $tracker);
$total_count = $members->countMembers($filter);
$pagination = Pagination::fromGet(AbstractFilter::GET_PAGE, $total_count, self::USERS_PER_PAGE);
$pagination = Pagination::fromGlobals($total_count);
$filter = $filter->page($pagination);
foreach($members->listMembers($filter) as $member){

View File

@ -4,7 +4,6 @@ declare(strict_types = 1);
namespace Pages\Models\Tracker;
use Database\DB;
use Database\Filters\AbstractFilter;
use Database\Filters\Pagination;
use Database\Filters\Types\MilestoneFilter;
use Database\Objects\TrackerInfo;
@ -36,8 +35,6 @@ class MilestonesModel extends BasicTrackerPageModel{
public const PERM_EDIT = 'milestones.edit';
private const MILESTONES_PER_PAGE = 15;
private Permissions $perms;
private TableComponent $table;
private ?FormComponent $form;
@ -79,7 +76,7 @@ class MilestonesModel extends BasicTrackerPageModel{
$milestones = new MilestoneTable(DB::get(), $this->getTracker());
$total_count = $milestones->countMilestones($filter);
$pagination = Pagination::fromGet(AbstractFilter::GET_PAGE, $total_count, self::MILESTONES_PER_PAGE);
$pagination = Pagination::fromGlobals($total_count);
$filter = $filter->page($pagination);
$active_milestone = $this->getActiveMilestone();