/** * Renderer par défaut des actions, utilise pour chaque action sa méthode * render(). * * @param array $actions tableau d'objets action * @access public * @return void */ public function render($actions) { $actions = !is_array($actions) ? array($actions) : $actions; $result = array(); $inSelect = array(); $inSelectForSingleSelection = array(); foreach ($actions as $anAction) { if ($anAction->renderer == 'Inline') { continue; } // Les actions dans un select sont regroupées à la fin if ($anAction->renderer == 'Select') { $inSelect[] = $anAction; continue; } if ($anAction->renderer == 'SelectForSingleSelection') { $inSelectForSingleSelection[] = $anAction; continue; } // vérifie si un autre renderer doit être utilisé // (méthode buttonRenderer() de l'action par exemple) $html = $this->checkRenderer($anAction); if ($html != false) { $result[] = $html; continue; } // instancie le bon GridActionRenderer $cls = 'GridActionRenderer' . $anAction->renderer; if (class_exists($cls, true)) { $renderer = new $cls($this->formName); $result = array_merge($result, $renderer->render($anAction)); } elseif (method_exists($anAction, 'render')) { // utilise le render de l'action $result[] = $anAction->render(); } } // effectue le render des actions du select if (!empty($inSelect)) { $renderer = new GridActionRendererSelect($this->formName); $result = array_merge($result, $renderer->render($inSelect)); } if (!empty($inSelectForSingleSelection)) { $renderer = new GridActionRendererSelectForSingleSelection($this->formName); $result = array_merge($result, $renderer->render($inSelectForSingleSelection)); } return $result; }
/** * __construct * * @param string $form nom du formulaire * @access public * @return void */ public function __construct($form) { parent::__construct($form); $this->type = 'SelectForSingleSelection'; $this->message = _('For selected item: '); }