/**
  * Constructs a new scaffold manager
  * @param string $modelName Name of the model to scaffold
  * @param string $nameTranslation Translation key of the manager name
  * @param string $icon Path to the icon of the manager
  * @param boolean $isReadOnly Set to true to make the scaffolding read only
  * @param boolean|array $search Boolean to enable or disable the search functionality, an array of field names to query is also allowed to enable the search
  * @param boolean|array $order Boolean to enable or disable the order functionality, an array of field names to order is also allowed to enable the order
  * @param boolean|array $pagination Boolean to enable or disable the pagination functionality, an array of pagination options is also allowed to enable the pagination
  * @return null
  */
 public function __construct($modelName, $nameTranslation, $icon = null, $isReadOnly = false, $search = true, $order = true, $pagination = true)
 {
     parent::__construct($modelName, $isReadOnly, $search, $order, $pagination);
     $this->name = $this->getTranslator()->translate($nameTranslation);
     $this->icon = $icon;
     $this->translationTitle = $nameTranslation;
 }
 /**
  * Action to scaffold a model
  * @param string $modelName Name of the model to scaffold
  * @return null
  */
 public function scaffoldAction($modelName = null)
 {
     if (!SecurityManager::getInstance()->isPermissionAllowed(Module::PERMISSION_MODELS)) {
         $this->response->setRedirect($this->request->getBasePath());
         return;
     }
     if (!$modelName) {
         $this->response->setRedirect($this->request->getBasePath());
         return;
     }
     $controllerClass = ScaffoldController::generateScaffoldController($modelName);
     return $this->forward($controllerClass, null, 2);
 }
 /**
  * Gets the index view for the scaffold
  * @param zibo\library\html\table\ExtendedTable $table Table with the model data
  * @param array $actions Array with the URL of the action as key and the label for the action as value
  * @return zibo\core\View
  */
 protected function getIndexView(ExtendedTable $table, array $actions = null)
 {
     $view = parent::getIndexView($table, $actions);
     if ($this->filterForm) {
         $filterView = new LogFilterView($this->filterForm);
         $view->getSidebar()->addPanel($filterView);
     }
     return $view;
 }
 /**
  * Gets a data table for the model
  * @param string $formAction URL where the table form will point to
  * @return zibo\library\html\table\Table
  */
 protected function getTable($formAction)
 {
     $table = parent::getTable($formAction);
     $table->addDecorator(new ZebraDecorator(new PermissionDecorator($this->request->getBasePath() . '/' . self::ACTION_EDIT . '/')));
     return $table;
 }
 /**
  * Gets a data table for the model
  * @param string $formAction URL where the table form will point to
  * @return zibo\library\html\table\ExtendedTable
  */
 protected function getTable($formAction)
 {
     $table = parent::getTable($formAction);
     $table->addDecorator(new ZebraDecorator(new UserDecorator($this->request->getBasePath() . '/' . self::ACTION_EDIT . '/')));
     if ($this->user && !$this->user->isSuperUser()) {
         $query = $table->getModelQuery();
         $query->setDistinct(true);
         $query->addCondition('{roles.isSuperRole} = 0 OR {roles.isSuperRole} IS NULL');
         $hiddenRoleIds = $this->getHiddenRoleIds();
         if ($hiddenRoleIds) {
             foreach ($hiddenRoleIds as $roleId) {
                 $query->addCondition('{roles.id} <> %1%', $roleId);
             }
         }
     }
     return $table;
 }