public function listHtml() { $cache = Ajde_Cache::getInstance(); $cache->disable(); if (Ajde::app()->getRequest()->has('edit') || Ajde::app()->getRequest()->has('new')) { return $this->editDefault(); } if (Ajde::app()->getRequest()->has('output') && Ajde::app()->getRequest()->get('output') == 'table') { Ajde::app()->getDocument()->setLayout(new Ajde_Layout('empty')); } $crud = $this->getCrudInstance(); /* @var $crud Ajde_Crud */ if (!$crud) { Ajde::app()->getResponse()->redirectNotFound(); } $session = new Ajde_Session('AC.Crud'); $session->setModel($crud->getHash(), $crud); $viewSession = new Ajde_Session('AC.Crud.View'); $sessionName = $crud->getSessionName(); if ($viewSession->has($sessionName)) { $crudView = $viewSession->get($sessionName); } else { $crudView = new Ajde_Collection_View($sessionName, $crud->getOption('list.view', array())); } $viewParams = Ajde::app()->getRequest()->getParam('view', array()); $crudView->setOptions($viewParams); $viewSession->set($sessionName, $crudView); $crud->getCollection()->setView($crudView); $view = $crud->getTemplate(); $view->assign('crud', $crud); return $view->render(); }
/** * @param array $viewParams * @param bool|string $persist * * @return Ajde_Collection_View */ public function getCollectionView($viewParams = [], $persist = 'auto') { if (!$this->getCollection()->hasView()) { $viewSession = new Ajde_Session('AC.Crud.View'); $sessionName = $this->getSessionName(); if ($viewSession->has($sessionName)) { $crudView = $viewSession->get($sessionName); } else { $crudView = new Ajde_Collection_View($sessionName, $this->getOption('list.view', [])); $crudView->setColumns($this->getOption('list.show', $this->getFieldNames())); } // somehow, when altering crudView, the instance in the session gets updated as well, and we don't want that $crudView = clone $crudView; if (empty($viewParams)) { $viewParams = Ajde::app()->getRequest()->getParam('view', []); // if we have params, but no columns, assume a reset if (!empty($viewParams) && !isset($viewParams['columns'])) { $viewParams['columns'] = $this->getOption('list.show', $this->getFieldNames()); } } $crudView->setOptions($viewParams); if ($persist == 'auto' && $this->getOperation() == 'list' || $persist === true) { $viewSession->set($sessionName, $crudView); } $this->getCollection()->setView($crudView); } return $this->getCollection()->getView(); }