![]() |
|
Snippets |
|
/apps/backend/modules/navigation/actions/actions.class.php
<?php /** * navigation actions. */ class navigationActions extends autonavigationActions { public function executeList() { $this->typeOfList = 1; switch($this->typeOfList) { case 1: $pager = new Navigation(); $this->pager = $pager->getTree(0,200); break; default: $this->processSort(); $this->processFilters(); // pager $navigation = new Navigation(); $this->pager = new sfPropelPager('Navigation', 100); $c = new Criteria(); $c->addAscendingOrderByColumn(NavigationPeer::TREE_LEFT); if($this->getUser()->hasCredential('SHOW_ALL_NAVIGATION_ROOTS')){ } else { $rootNodes = $navigation->getRootNodes(); $conditions = array(); foreach($rootNodes as $credentialName => $credential) { if($this->getUser()->hasCredential($credentialName)){ $c1 = $c->getNewCriterion(NavigationPeer::TREE_LEFT, $credential["left"], Criteria::GREATER_THAN); $c2 = $c->getNewCriterion(NavigationPeer::TREE_RIGHT, $credential["right"], Criteria::LESS_THAN); $conditions[] = $c1->addAnd($c2); } } if(count($conditions) > 1) { foreach($conditions as $condition){ $c->addOr($condition); } } else { $c->add($conditions[0]); } } $this->addSortCriteria($c); $this->addFiltersCriteria($c); $this->pager->setCriteria($c); $this->pager->setPage($this->getRequestParameter('page', 1)); $this->pager->init(); break; } } public function executeShow() { $this->component = NavigationPeer::retrieveByPk($this->getRequestParameter('component_id')); $this->paths = $this->component->getPath(); } public function executeBlockable() { $navigation = NavigationPeer::retrieveByPk($this->getRequestParameter('component_id')); $state = $this->getRequestParameter('state')==1 ? 1 : 0; $navigation->setIsBlocked($state); $navigation->save(); $this->state = $state; $this->navigation = $navigation; } public function executeNavigatable() { $navigation = NavigationPeer::retrieveByPk($this->getRequestParameter('component_id')); $state = $this->getRequestParameter('state')==1 ? 1 : 0; $navigation->setIsNavigation($state); $navigation->save(); $this->state = $state; $this->navigation = $navigation; } private function getPrimaryRoot(){ return NavigationPeer::retrieveByPk(1); } // Default Root Node public function executeMakeRoot(){ $root = new Navigation(); $root->makeRoot(); $root->save(); return $this->redirect('navigation/edit?component_id='. $root->getNavigationId()); } // Further Root Node public function executeMakeNextRoot(){ $root = new Navigation(); $root->makeNextRoot(); $root->save(); return $this->redirect('navigation/edit?component_id='. $root->getNavigationId()); } // Delete Branch public function executeDeleteDescendants(){ $navigation = NavigationPeer::retrieveByPk($this->getRequestParameter('component_id')); $navigation->deleteDescendants(); $navigation = $navigation->reload(); $navigation->delete(); return $this->redirect('navigation/list'); } // insert first child node public function executeInsertAsFirstChildOf(){ $this->message = "Nun wird ein Kindelement erzeugt"; $navigation = NavigationPeer::retrieveByPk($this->getRequestParameter('component_id')); $child = new Navigation(); $child->insertAsFirstChildOf($navigation); $child->save(); return $this->redirect('navigation/edit?component_id='. $child->getNavigationId()); } // insert last child node public function executeInsertAsLastChildOf(){ $this->message = "Nun wird ein Kindelement erzeugt"; $navigation = NavigationPeer::retrieveByPk($this->getRequestParameter('component_id')); $child = new Navigation(); $child->insertAsLastChildOf($navigation); $child->save(); return $this->redirect('navigation/edit?component_id='. $child->getNavigationId()); } // insert sibling before public function executeInsertAsNextSiblingOf(){ $navigation = NavigationPeer::retrieveByPk($this->getRequestParameter('component_id')); $child = new Navigation(); $child->insertAsNextSiblingOf($navigation); $child->save(); return $this->redirect('navigation/edit?component_id='. $child->getNavigationId()); } // insert sibling after public function executeInsertAsPrevSiblingOf(){ $navigation = NavigationPeer::retrieveByPk($this->getRequestParameter('component_id')); $child = new Navigation(); $child->insertAsPrevSiblingOf($navigation); $child->save(); return $this->redirect('navigation/edit?component_id='. $child->getNavigationId()); } /*Tree Modification*/ // UP public function executeMoveToPrevSiblingOf(){ $navigation = NavigationPeer::retrieveByPk($this->getRequestParameter('component_id')); $siblingNavigation = $navigation->retrievePrevSibling($navigation); $navigation->moveToPrevSiblingOf($siblingNavigation); $navigation->save(); return $this->redirect('navigation/list'); } //DOWN public function executeMoveToNextSiblingOf(){ $navigation = NavigationPeer::retrieveByPk($this->getRequestParameter('component_id')); $siblingNavigation = $navigation->retrieveNextSibling($navigation); $navigation->moveToNextSiblingOf($siblingNavigation); $navigation->save(); return $this->redirect('navigation/list'); } // LEFT UP public function executeMoveLeftUp(){ $navigation = NavigationPeer::retrieveByPk($this->getRequestParameter('component_id')); $parentNavigation = NavigationPeer::retrieveByPk($navigation->getParent()); $navigation->moveToPrevSiblingOf($parentNavigation); $navigation->save(); return $this->redirect('navigation/list'); } // LEFT DOWN public function executeMoveLeftDown(){ $navigation = NavigationPeer::retrieveByPk($this->getRequestParameter('component_id')); $parentNavigation = NavigationPeer::retrieveByPk($navigation->getParent()); $navigation->moveToNextSiblingOf($parentNavigation); $navigation->save(); return $this->redirect('navigation/list'); } // RIGHT FIRST public function executeMoveRightPrev(){ $navigation = NavigationPeer::retrieveByPk($this->getRequestParameter('component_id')); $prevSibling = $navigation->retrievePrevSibling($navigation); $navigation->moveToLastChildOf($prevSibling); $navigation->save(); return $this->redirect('navigation/list'); } // RIGHT LAST public function executeMoveRightNext(){ $navigation = NavigationPeer::retrieveByPk($this->getRequestParameter('component_id')); $nextSibling = $navigation->retrieveNextSibling($navigation); $navigation->moveToLastChildOf($nextSibling); $navigation->save(); return $this->redirect('navigation/list'); } // ROOT PREV public function executeMoveRootPrev(){ $navigation = NavigationPeer::retrieveByPk($this->getRequestParameter('component_id')); $rootNavigation = NavigationPeer::retrieveByPk($this->getRequestParameter('root_id')); $prevRootNavigation = $rootNavigation->retrievePrevSibling($rootNavigation); $navigation->moveToLastChildOf($prevRootNavigation); $navigation->save(); return $this->redirect('navigation/list'); } // ROOT NEXT public function executeMoveRootNext(){ $navigation = NavigationPeer::retrieveByPk($this->getRequestParameter('component_id')); $rootNavigation = NavigationPeer::retrieveByPk($this->getRequestParameter('root_id')); $nextRootNavigation = $rootNavigation->retrieveNextSibling($rootNavigation); $navigation->moveToLastChildOf($nextRootNavigation); $navigation->save(); return $this->redirect('navigation/list'); } // Duplicate Tree public function executeCopyDescendants(){ $navigation = NavigationPeer::retrieveByPk($this->getRequestParameter('component_id')); $parentNavigation = NavigationPeer::retrieveByPk($navigation->getParent()); $newParentNavigation = $this->copyNode($navigation, $parentNavigation); $this->iterateOnDescendants($navigation->getDescendants() , $newParentNavigation); return $this->redirect('navigation/list'); } private function iterateOnDescendants($navigations, $prevNavigation){ foreach($navigations as $navigation){ $actualNavigation = $this->copyNodeDescendants($navigation, $prevNavigation); $prevNavigation = $actualNavigation; } } private function transferData(Navigation $navigation){ $newNavigation = new Navigation(); $newNavigation->setName($navigation->getName()); $newNavigation->setAction($navigation->getAction()); $newNavigation->setParameter($navigation->getParameter()); $newNavigation->setCaption($navigation->getCaption()); $newNavigation->setDescription($navigation->getDescription()); $newNavigation->setIsNavigation(0); $newNavigation->setIsBlocked(0); $newNavigation->setIsTemplate(0); return $newNavigation; } private function copyNodeDescendants($navigation, $prevNavigation){ $newNavigation = $this->transferData($navigation); if($navigation->getLevel() == $prevNavigation->getLevel() ){ $newNavigation->insertAsNextSiblingOf($prevNavigation); } elseif($navigation->getLevel() > $prevNavigation->getLevel()){ $newNavigation->insertAsLastChildOf($prevNavigation); } else { $parentNavigation = NavigationPeer::retrieveByPk($prevNavigation->getParent()); $newNavigation->insertAsNextSiblingOf($parentNavigation); } $newNavigation->save(); return $newNavigation->reload(); } private function copyNode($navigation, $parentNavigation){ $newNavigation = $this->transferData($navigation); $newNavigation->insertAsLastChildOf($parentNavigation); $newNavigation->save(); return $newNavigation->reload(); } }