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();
 }
Example #2
0
File: Crud.php Project: nabble/ajde
 /**
  * @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();
 }