From aca5ace14cf8f56a7db272ed8d3c63b9653743a1 Mon Sep 17 00:00:00 2001 From: Eriksen Costa Date: Mon, 23 Aug 2010 06:07:47 -0300 Subject: [PATCH] Refactorings em Core_Controller_Page_*Controller. --- ieducar/lib/Core/Controller/Page/EditController.php | 11 +++++++++-- ieducar/lib/Core/Controller/Page/ListController.php | 39 ++++++++++++++++++++++++++++++++------- ieducar/lib/Core/Controller/Page/ViewController.php | 40 ++++++++++++++++++++++++++++++++++------ 3 files changed, 75 insertions(+), 15 deletions(-) diff --git a/ieducar/lib/Core/Controller/Page/EditController.php b/ieducar/lib/Core/Controller/Page/EditController.php index babd176..7fa16b5 100644 --- a/ieducar/lib/Core/Controller/Page/EditController.php +++ b/ieducar/lib/Core/Controller/Page/EditController.php @@ -366,8 +366,15 @@ abstract class Core_Controller_Page_EditController { if (isset($this->getRequest()->id)) { if ($this->getDataMapper()->delete($this->getRequest()->id)) { - $this->redirect($this->getDispatcher()->getControllerName() . '/' . - $this->getOption('delete_success')); + if (is_array($this->getOption('delete_success_params'))) { + $params = http_build_query($this->getOption('delete_success_params')); + } + + $this->redirect( + $this->getDispatcher()->getControllerName() . '/' . + $this->getOption('delete_success') . + (isset($params) ? '?' . $params : '') + ); } } return FALSE; diff --git a/ieducar/lib/Core/Controller/Page/ListController.php b/ieducar/lib/Core/Controller/Page/ListController.php index ab0f7b8..377c5fa 100644 --- a/ieducar/lib/Core/Controller/Page/ListController.php +++ b/ieducar/lib/Core/Controller/Page/ListController.php @@ -25,7 +25,7 @@ * @license @@license@@ * @package Core_Controller * @since Arquivo disponível desde a versão 1.1.0 - * @version $Id: /ieducar/branches/teste/ieducar/lib/Core/Controller/Page/Abstract.php 646 2009-11-12T21:54:25.107288Z eriksen $ + * @version $Id$ */ require_once 'Core/View/Tabulable.php'; @@ -86,6 +86,29 @@ class Core_Controller_Page_ListController extends clsListagem implements Core_Vi } /** + * Retorna os registros a serem exibidos na listagem. + * + * Subclasses devem sobrescrever este método quando os parâmetros para + * CoreExt_DataMapper::findAll forem mais específicos. + * + * @return array (int => CoreExt_Entity) + */ + public function getEntries() + { + $mapper = $this->getDataMapper(); + return $mapper->findAll(); + } + + /** + * Configura o botão de ação padrão para a criação de novo registro. + */ + public function setAcao() + { + $this->acao = 'go("edit")'; + $this->nome_acao = 'Novo'; + } + + /** * Implementação padrão para as subclasses que estenderem essa classe. Cria * uma lista de apresentação de dados simples utilizando o mapeamento de * $_tableMap. @@ -97,10 +120,11 @@ class Core_Controller_Page_ListController extends clsListagem implements Core_Vi { $headers = $this->getTableMap(); + // Configura o cabeçalho da listagem. $this->addCabecalhos(array_keys($headers)); - $mapper = $this->getDataMapper(); - $entries = $mapper->findAll(); + // Recupera os registros para a listagem. + $entries = $this->getEntries(); // Paginador $this->limite = 20; @@ -122,11 +146,12 @@ class Core_Controller_Page_ListController extends clsListagem implements Core_Vi $this->addLinhas($item); } - $this->addPaginador2("", count($entries), $_GET, $this->nome, $this->limite); + $this->addPaginador2('', count($entries), $_GET, $this->nome, $this->limite); - $this->acao = "go(\"edit\")"; - $this->nome_acao = "Novo"; + // Configura o botão padrão de ação para a criação de novo registro. + $this->setAcao(); - $this->largura = "100%"; + // Largura da tabela HTML onde se encontra a listagem. + $this->largura = '100%'; } } \ No newline at end of file diff --git a/ieducar/lib/Core/Controller/Page/ViewController.php b/ieducar/lib/Core/Controller/Page/ViewController.php index 86a7a0b..6abe183 100644 --- a/ieducar/lib/Core/Controller/Page/ViewController.php +++ b/ieducar/lib/Core/Controller/Page/ViewController.php @@ -25,7 +25,7 @@ * @license @@license@@ * @package Core_Controller * @since Arquivo disponível desde a versão 1.1.0 - * @version $Id: /ieducar/branches/teste/ieducar/lib/Core/Controller/Page/Abstract.php 646 2009-11-12T21:54:25.107288Z eriksen $ + * @version $Id$ */ require_once 'Core/View/Tabulable.php'; @@ -96,6 +96,36 @@ class Core_Controller_Page_ViewController extends clsDetalhe implements Core_Vie } /** + * Configura a URL padrão para a ação de Edição de um registro. + * + * Por padrão, cria uma URL "edit/id", onde id é o valor do atributo "id" + * de uma instância CoreExt_Entity. + * + * @param CoreExt_Entity $entry A instância atual recuperada + * ViewController::Gerar(). + */ + public function setUrlEditar(CoreExt_Entity $entry) + { + $this->url_editar = CoreExt_View_Helper_UrlHelper::url( + 'edit', array('query' => array('id' => $entry->id)) + ); + } + + /** + * Configura a URL padrão para a ação Cancelar da tela de Edição de um + * registro. + * + * Por padrão, cria uma URL "index". + * + * @param CoreExt_Entity $entry A instância atual recuperada + * ViewController::Gerar(). + */ + public function setUrlCancelar(CoreExt_Entity $entry) + { + $this->url_cancelar = CoreExt_View_Helper_UrlHelper::url('index'); + } + + /** * Implementação padrão para as subclasses que estenderem essa classe. Cria * uma tela de apresentação de dados simples utilizando o mapeamento de * $_tableMap. @@ -106,7 +136,7 @@ class Core_Controller_Page_ViewController extends clsDetalhe implements Core_Vie public function Gerar() { $headers = $this->getTableMap(); - $mapper = $this->getDataMapper(); + $mapper = $this->getDataMapper(); $this->titulo = $this->getBaseTitulo(); $this->largura = "100%"; @@ -125,9 +155,7 @@ class Core_Controller_Page_ViewController extends clsDetalhe implements Core_Vie } } - $this->url_editar = CoreExt_View_Helper_UrlHelper::url( - 'edit', array('query' => array('id' => $entry->id)) - ); - $this->url_cancelar = CoreExt_View_Helper_UrlHelper::url('index'); + $this->setUrlEditar($entry); + $this->setUrlCancelar($entry); } } \ No newline at end of file -- libgit2 0.21.2