public function nodes() { $collection = new NodeCollection(); $collection->orderBy('updated'); // add node type $collection->joinNodetype(); $collection->getQuery()->addSelect('nodetype.name AS nodetype_name'); return (object) ['data' => $collection->toArray()]; }
/** * @return NodeCollection */ public function getLinks() { $collection = new NodeCollection(); $collection->addFilter(new Ajde_Filter_Join('menu', 'menu.node', 'node.id')); $collection->addFilter(new Ajde_Filter_Where('menu.parent', Ajde_Filter::FILTER_EQUALS, $this->getPK())); $collection->getQuery()->addSelect('menu.name as name'); $collection->orderBy('menu.sort'); return $collection; }
public function navJson() { $recursive = true; $parent = Ajde::app()->getRequest()->getInt('node', false); $nodes = new NodeCollection(); $nodes->addFilter(new Ajde_Filter_Where('level', Ajde_Filter::FILTER_EQUALS, 0)); if ($recursive) { $nodes->orderBy('sort'); $json = []; foreach ($nodes as $node) { /* @var $node NodeModel */ $nodeArray = ['label' => $this->navLabel($node), 'id' => $node->getPK()]; $children = $node->getChildren(); if ($children->count()) { $nodeArray['children'] = $this->navChildrenArray($children); } $json[] = $nodeArray; } return $json; } else { if ($parent) { $nodes->addFilter(new Ajde_Filter_Where('parent', Ajde_Filter::FILTER_EQUALS, $parent)); } else { $nodes->addFilter(new Ajde_Filter_Where('level', Ajde_Filter::FILTER_EQUALS, 0)); } $nodes->getQuery()->addSelect('id AS aid'); $nodes->getQuery()->addSelect('(SELECT count(b.id) FROM node b WHERE b.parent = aid) AS children'); $nodes->orderBy('sort'); $json = []; foreach ($nodes as $node) { /* @var $node NodeModel */ $children = $node->get('children'); $json[] = ['label' => $this->navLabel($node), 'id' => $node->getPK(), 'load_on_demand' => $children ? true : false]; } return $json; } }
public function getSibling($dir, $loop = true) { if ($dir == 'next') { $filter = Ajde_Filter::FILTER_GREATER; $order = Ajde_Query::ORDER_ASC; } else { $filter = Ajde_Filter::FILTER_LESS; $order = Ajde_Query::ORDER_DESC; } if ($this->has('parent')) { $siblings = new NodeCollection(); $siblings->addFilter(new Ajde_Filter_Where('sort', $filter, $this->sort)); $siblings->addFilter(new Ajde_Filter_Where('parent', Ajde_Filter::FILTER_EQUALS, (string) $this->get('parent'))); $siblings->orderBy('sort', $order); $siblings->limit(1); if ($siblings->count()) { return $siblings->current(); } } // Not found, loop? if ($loop === true) { $siblings->reset(); $siblings->addFilter(new Ajde_Filter_Where('parent', Ajde_Filter::FILTER_EQUALS, (string) $this->get('parent'))); $siblings->orderBy('sort', $order); $siblings->limit(1); if ($siblings->count()) { return $siblings->current(); } } // No sibling return false; }