Aldeia Numaboa

  • Increase font size
  • Default font size
  • Decrease font size
Home Informática Tutoriais e Programação Joomla Componente 1.5 MVC - Funcionalidade admin

Componente 1.5 MVC - Funcionalidade admin

Indique esta página Imprimir PDF
(15 votos, média 4.2 de 5)
Índice do Artigo
Componente 1.5 MVC - Funcionalidade admin
Controlador Ola
Vista e Modelo Ola
Formulário Ola
Todas as páginas

O esqueleto da interface administrativa do componente Olá Pessoal está pronta. Agora falta colocar um pouco de tempero para poder "pilotar" o componente através dos botões da barra de ferramentas. Neste tutorial veremos como implementar as funções básicas de um componente para poder adicionar, editar e deletar registros na sua tabela de dados.

No estágio em que está nosso componente, a seção administrativa não serve para grandes coisas - mostra apenas os registros existentes na base de dados. Para torná-la um pouco mais funcional será preciso adicionar alguns botões e links.

A barra de ferramentas

Já colocamos um título e alguns botões na barra de ferramentas do nosso componente. Como se trata de elementos de tela, o código que faz esta proeza não poderia estar em outro arquivo a não ser o views/olas/view.html.php. Só para relembrar:

JToolBarHelper::title( JText::_( 'Administrar Olás' ), 'generic.png' );
JToolBarHelper::deleteList();
JToolBarHelper::editListX();
JToolBarHelper::addNewX();

O método JText::_( ) facilita a tradução do componente. Se houver um arquivo de idioma para o componente, esta função procura a string passada como argumento no arquivo da linguagem: se for encontrada, usa a tradução correspondente; se não for encontrada, mantém a string passada como parâmetro.

Usamos também três métodos da classe JToolBarHelper (o ajudante da barra de ferramentas) para criar os botões. O método deleteList( ) pode ter até três parâmetros opcionais: o primeiro é uma string que será mostrada para o usuário para confirmar a eliminação do(s) registro(s); o segundo é a tarefa que deve ser enviada com a query (a default é 'remove') e o terceiro é o texto que deve aparecer em baixo do botão.

Os métodos editListX e addNewX podem ter dois parâmetros, também opcionais. O primeiro é a tarefa (a default é 'edit' e 'add', respectivamente) e o segundo é o texto que deve ser mostrado em baixo do botão.

Checkboxes e Links

Agora temos botões. Dois deles atuam sobre registros. Como saber sobre quais registros atuar? Só há uma maneira: fazer com que o usuário os indique. Para isto precisamos colocar um checkbox ao lado de cada um dos registros para que o usuário possa fazer a sua escolha e um checkbox que marca todos eles.

Checkboxes são elementos de tela, portanto fazem parte da visão e devem entrar no código do template. Modifique o arquivo /views/olas/tmpl/default.php conforme mostrado a seguir:

<?php defined('_JEXEC') or die('Acesso restrito'); ?>
<form action="index.php" method="post" name="adminForm">
<div id="editcell">
    <table class="adminlist">
    <thead>
        <tr>
            <th width="5">
                <?php echo JText::_( 'ID' ); ?>
            </th>

Inserir (1) - Aqui colocamos algumas linhas de código para gerar um checkbox que marca todos os checkboxes da lista de saudações. Não se preocupe com a Javascript. A função checkall( ) faz parte do framework do Joomla e faz exatamente o que precisamos.

            <th width="20">
              <input type="checkbox" name="toggle" value=""
                     onclick="checkAll(<?php echo count( $this->itens ); ?>);" />
            </th>
            <th>
                <?php echo JText::_( 'Mensagem' ); ?>
            </th>
        </tr>            
    </thead>
    <?php
    $k = 0;
    for ($i=0, $n=count( $this->itens ); $i < $n; $i++)
    {
        $row =& $this->itens[$i];

Inserir (2) - Aqui colocamos um checkbox em cada linha. Desta vez não será preciso criar o checkbox na unha porque podemos usar o método JHTML::_( ) da classe JHTML.

        $checado = JHTML::_( 'grid.id', $i, $row->id );

Inserir (3) - É meio chato marcar um registro e depois ter que subir com o cursor do mouse para clicar no botão Editar. Para facilitar as coisas, podemos colocar um link na mensagem que nos leva diretamente até a tela de edição. Criamos o link usando o método JRoute::_( ) da seguinte forma:

        $link = JRoute::_( 'index.php?option=com_ola&controller=ola&task=edit&cid[]='. $row->id );
        ?>
        <tr class="<?php echo "row$k"; ?>">
            <td>
                <?php echo $row->id; ?>
            </td>

Inserir (4) - Adicionamos uma célula com o checkbox criado em Inserir(2) entre as duas que já existem:

            <td>
                <?php echo $checado; ?>
            </td>
            <td>

Alterar - Aqui usamos o link criado em Inserir(3). Observe que este link aponta para o nosso novo controlador que vai administrar a manipulação de dados das nossas mensagens.

                <a href="<?php echo $link; ?>"><?php echo $row->mensagem; ?></a>
            </td>
        </tr>
        <?php
        $k = 1 - $k;
    }
    ?>
    </table>
</div>
 
<input type="hidden" name="option" value="com_ola" />
<input type="hidden" name="task" value="" />
<input type="hidden" name="boxchecked" value="0" />
<input type="hidden" name="controller" value="ola" />
 
</form>

Testando as alterações

Se você instalou o componente "Olá Pessoal" versão 1.3 e quiser testar estas alterações, modifique o arquivo default.php como indicado, faça o login na área administrativa e chame o componente clicando em Componentes - Olá Pessoal. A nova tela deve mostrar o seguinte:

Nova tela
Fig. 1 - Backend com checkboxes


Atualização Ter, 23.06.2009 16:51  

Na Aldeia

Há 117 visitantes online

3630 registros
0 hoje
14 nesta semana
4 neste mês

Boas vindas: flor

Estatística

Membros: 3639
Artigos: 1045
Links: 90
Leituras: 6680778

Login

Kanji da hora




Faça contato







Perguntar não ofende: Será que propaganda eleitoral antecipada também está prevista na Ficha Limpa? Note que não estou sendo tendenciosa, porque da propaganda antecipada só se salva a Marina... por enquanto.