mirror of
https://github.com/getgrav/grav.git
synced 2026-02-22 22:51:13 +01:00
new visibile() and routable() filters to Collections
This commit is contained in:
@@ -192,4 +192,40 @@ class Collection extends Iterator
|
||||
public function currentPosition($path) {
|
||||
return array_search($path, array_keys($this->items));
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates new collection with only visible pages
|
||||
*
|
||||
* @return Collection The collection with only visible pages
|
||||
*/
|
||||
public function visible()
|
||||
{
|
||||
$visible = [];
|
||||
|
||||
foreach ($this->items as $path => $slug) {
|
||||
$page = $this->pages->get($path);
|
||||
if ($page->visible()) {
|
||||
$visible[$path] = $slug;
|
||||
}
|
||||
}
|
||||
return new static($visible, $this->params, $this->pages);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates new collection with only routable pages
|
||||
*
|
||||
* @return Collection The collection with only routable pages
|
||||
*/
|
||||
public function routable()
|
||||
{
|
||||
$routable = [];
|
||||
|
||||
foreach (array_keys($this->items) as $path => $slug) {
|
||||
$page = $this->pages->get($path);
|
||||
if ($page->routable()) {
|
||||
$routable[$path] = $slug;
|
||||
}
|
||||
}
|
||||
return new static($routable, $this->params, $this->pages);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1650,17 +1650,14 @@ class Page
|
||||
$parent = $this->parent();
|
||||
|
||||
// Extract visible children from the parent page.
|
||||
$visible = array();
|
||||
$list = array();
|
||||
/** @var Page $page */
|
||||
foreach ($parent as $page) {
|
||||
foreach ($parent->children()->visible() as $page) {
|
||||
if ($page->order()) {
|
||||
$visible[$page->slug] = $page->path();
|
||||
$list[$page->slug] = $page->path();
|
||||
}
|
||||
}
|
||||
|
||||
// List only visible pages.
|
||||
$list = array_intersect($visible, $pages->sort($parent));
|
||||
|
||||
// If page was moved, take it out of the list.
|
||||
if ($this->_action == 'move') {
|
||||
unset($list[$this->slug()]);
|
||||
|
||||
Reference in New Issue
Block a user