protected function _children($parent_id, $level) { $expandedRows = UserMeta::get('expanded_pages', []); $page = Page::find($parent_id); if (is_null($page)) { return NULL; } $query = Page::where('parent_id', $parent_id)->orderBy('position', 'asc')->orderBy('created_at', 'asc'); $childrens = $query->get()->lists(NULL, 'id'); foreach ($childrens as $id => $child) { $childrens[$id]->hasChildren = $child->hasChildren(); $childrens[$id]->isExpanded = in_array($child->id, $expandedRows); if ($childrens[$id]->isExpanded === TRUE) { $childrens[$id]->childrenRows = $this->_children($child->id, $level + 1); } } return (string) view('pages::pages.children', ['childrens' => $childrens, 'level' => $level + 1]); }
/** * @param bool $includeHidden * * @return Builder */ public function getChildrenQuery($includeHidden = false) { $query = Page::where('parent_id', $this->getId())->whereIn('status', static::getStatuses($includeHidden))->orderBy('position', 'desc'); if (filter_var(config('pages.check_date'), FILTER_VALIDATE_BOOLEAN)) { $query->whereRaw('published_at <= NOW()'); } return $query; }
/** * @param \KodiCMS\Pages\Model\Page $page * @return bool */ public function deleted($page) { // Все дочерние страницы перекидываем в корень // TODO: спрашивать у пользователя нужно ли удалять все внутренние страницы //Page::where('parent_id', $page->id)->delete(); Page::where('parent_id', $page->id)->update(['parent_id' => 1]); return TRUE; }