init with kirby, vue and pagedjs interactive
This commit is contained in:
commit
dc0ae26464
968 changed files with 211706 additions and 0 deletions
85
public/kirby/src/Panel/Collector/PagesCollector.php
Normal file
85
public/kirby/src/Panel/Collector/PagesCollector.php
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
<?php
|
||||
|
||||
namespace Kirby\Panel\Collector;
|
||||
|
||||
use Kirby\Cms\Files;
|
||||
use Kirby\Cms\Page;
|
||||
use Kirby\Cms\Pages;
|
||||
use Kirby\Cms\Site;
|
||||
use Kirby\Cms\User;
|
||||
use Kirby\Cms\Users;
|
||||
|
||||
/**
|
||||
* @package Kirby Panel
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class PagesCollector extends ModelsCollector
|
||||
{
|
||||
public function __construct(
|
||||
protected int|null $limit = null,
|
||||
protected int $page = 1,
|
||||
protected Site|Page|User|null $parent = null,
|
||||
protected string|null $query = null,
|
||||
protected string|null $status = null,
|
||||
protected array $templates = [],
|
||||
protected array $templatesIgnore = [],
|
||||
protected string|null $search = null,
|
||||
protected string|null $sortBy = null,
|
||||
protected bool $flip = false,
|
||||
) {
|
||||
}
|
||||
|
||||
protected function collect(): Pages
|
||||
{
|
||||
return match ($this->status) {
|
||||
'draft' => $this->parent()->drafts(),
|
||||
'listed' => $this->parent()->children()->listed(),
|
||||
'published' => $this->parent()->children(),
|
||||
'unlisted' => $this->parent()->children()->unlisted(),
|
||||
default => $this->parent()->childrenAndDrafts()
|
||||
};
|
||||
}
|
||||
|
||||
protected function collectByQuery(): Pages
|
||||
{
|
||||
return $this->parent()->query($this->query, Pages::class) ?? new Pages([]);
|
||||
}
|
||||
|
||||
protected function filter(Files|Pages|Users $models): Pages
|
||||
{
|
||||
// filters pages that are protected and not in the templates list
|
||||
// internal `filter()` method used instead of foreach loop that previously included `unset()`
|
||||
// because `unset()` is updating the original data, `filter()` is just filtering
|
||||
// also it has been tested that there is no performance difference
|
||||
// even in 0.1 seconds on 100k virtual pages
|
||||
return $models->filter(function (Page $model): bool {
|
||||
// remove all protected and hidden pages
|
||||
if ($model->isListable() === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$intendedTemplate = $model->intendedTemplate()->name();
|
||||
|
||||
// filter by all set templates
|
||||
if (
|
||||
$this->templates &&
|
||||
in_array($intendedTemplate, $this->templates, true) === false
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// exclude by all ignored templates
|
||||
if (
|
||||
$this->templatesIgnore &&
|
||||
in_array($intendedTemplate, $this->templatesIgnore, true) === true
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
});
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue