Plugin que facilita o controle de exibição das mensagens do sistema. Foi desenvolvido exclusivamente para sistemas em português, para gerênciar palavras/mensagens de gênero feminino e masculino.
Compatível com CakePHP v 1.3
Faça o download do plugin e coloque seu conteúdo dentro de /app/plugins/cogem
ou em outro diretório para plugins do CakePHP.
Edite o arquivo /app/app_controller.php:
var $components = array( 'Session', 'Cogem.Cogem' );
Você pode chamar as funções do Cogem no Controler usando $this->Cogem e na View a variável $Cogem.
Algumas palavras já foram previamente configuradas no plugin para utilização. Entretanto, você DEVE definir a inflexão item
e outras - se você desejar - em seu Controller.
Ao definir uma inflexão, podemos informar sua versão no singular
e plural
. Caso a sua versão em plural não seja informada, ou vice-versa, o plugin utilizará a regra do Inflector do CakePHP para realizar a conversão.
Exemplo 1:
function beforeFilter() { $this->Cogem->setInflections( array( 'item' => array( 'singular' => __('fabricante', true), 'plural' => __('fabricantes', true) ) ) ); }
Exemplo 2, agora o item
tem o gênero feminino, então alteramos todos os parâmetros pré-definidos:
function beforeFilter() { $this->Cogem->setInflections( array( 'item' => array( 'singular' => __('concessionária', true) ), /** * Definições personalizadas */ 'new' => array( 'singular' => __('nova', true) ), 'view' => array( 'singular' => __('exibida', true) ), 'add' => array( 'singular' => __('adicionada', true) ), 'edit' => array( 'singular' => __('editada', true) ), 'delete' => array( 'singular' => __('excluída', true) ), 'selected' => array( 'singular' => __('selecionada', true) ), 'finded' => array( 'singular' => __('encontrada', true) ), 'the' => array( 'singular' => __('a', true) ), 'a' => array( 'singular' => __('uma', true) ), 'no' => array( 'singular' => __('nenhuma', true) ) ) ); }
Assim como as inflexões, o plugin conta também com algumas mensagens pré-definidas para utilização. Contudo, você também pode configurar mensagens diferentes para sua aplicação.
Na declaração com componente, basta informar as mensagens e nelas coloca nas mensagens entre { }
a inflexão que você deseja exibir. Você também pode utilizar {ucfirst{ }}
para que o comando ucfirst()
seja executado.
var $components = array( 'Session', 'Cogem.Cogem' => array( 'messages' => array( 'add' => array( 'success' => '{ucfirst{item}} #{id} foi {add}.', 'error' => 'Não foi possível adicionar {the} {item}.' ), 'edit' => array( 'failure' => '{ucfirst{item}} não pode ser {edit}.', 'success' => '{ucfirst{item}} #{id} foi {edit}.', 'error' => 'Não foi possível editar {the} {item} #{id}.' ), 'delete' => array( 'failure' => '{ucfirst{item}} não pode ser {delete}.', 'success' => '{ucfirst{item}} #{id} foi {delete}.', 'error' => 'Não foi possível excluir {the} {item} #{id}.' ), 'log' => array( 'add' => __('{ucfirst{item}} #{id} foi {add}.', true), 'edit' => __('{ucfirst{item}} #{id} foi {edit}.', true), 'delete' => __('{ucfirst{item}} #{id} foi {delete}.', true) ), 'view' => array( 'failure' => '{ucfirst{item}} não pode ser {view}.' ), 'parent' => array( 'error' => '{ucfirst{no}} {parent} foi {finded}. Você precisa cadastrar primeiro {a} {parent}.' ) ) ) );
Podemos utilizar duas funções para exibir as mensagens com as inflexões: getMessage()
e writeMessage()
.
Para exibir as mensagens pré-definidas utilizamos a função getMessage()
, passando no mínimo dois parâmetros:
- 1º: Tipo da mensagem;
- 2º: A mensagem específica;
- 3º (opcional):
singular
ouplural
. Se não informado serásingular
. - 4º (opcional): O conteúdo da inflexão
{id}
.
Exemplo 1:
$this->Cogem->getMessage('add', 'error'); // Retorna: "Não foi possível adicionar o fabricante." $this->Cogem->getMessage('edit', 'error', 'plural'); // Retorna: "Não foi possível editar os fabricantes." $this->Cogem->getMessage('delete', 'success', 'singular', 2); // Retorna: "Fabricante #2 foi excluído."
Exemplo 2:
$this->Cogem->getMessage('add', 'error'); // Retorna: "Não foi possível adicionar a concessionária." $this->Cogem->getMessage('edit', 'error', 'plural'); // Retorna: "Não foi possível editar as concessionárias." $this->Cogem->getMessage('delete', 'success', 'singular', 110); // Retorna: "Concessionária #110 foi excluída."
Você pode escrever uma mensagem sem pré-definilá no plugin, utilizando a função writeMessage()
, passando no mínimo um parâmetro:
- 1º: A mensagem;
- 2º (opcional):
singular
ouplural
. Se não informado serásingular
. - 3º (opcional): O conteúdo da inflexão
{id}
.
Exemplo 1:
$this->Cogem->writeMessage('{ucfirst{no}} {item} foi {finded}.'); // Retorna: "Nenhum fornecedor foi encontrado." $this->Cogem->writeMessage('{id} {item} {selected}.', 'plural', 10); // Retorna: "10 fornecedores selecionados."
Exemplo 2:
$this->Cogem->writeMessage('{ucfirst{no}} {item} foi {finded}.'); // Retorna: "Nenhuma concessionária foi encontrada." $this->Cogem->writeMessage('{id} {item} {selected}.', 'plural', 10); // Retorna: "10 concessionárias selecionadas."
Você pode pegar uma palavra individual através da função getInflection()
, passando no mínimo um parâmetro:
- 1º: A inflexão;
- 2º (opcional):
singular
ouplural
. Se não informado serásingular
.
Exemplo 1:
echo $this->Cogem->getInflection('item'); // Retorna: "fornecedor" echo $this->Cogem->getInflection('item', 'plural'); // Retorna: "fornecedores"
Exemplo 2:
echo $this->Cogem->getInflection('item'); // Retorna: "concessionária" echo $this->Cogem->getInflection('item', 'plural'); // Retorna: "concessionárias"
Copyright 2011, Pedro Elsner (http://pedroelsner.com/)
Licenciado pela Creative Commons 3.0 (http://creativecommons.org/licenses/by/3.0/br/)