FRAMEWORK MIOLO - modulo de exemplo - Parte III
Autor: Sandra Martins | Publicado: 2011-07-08T09:46:00-03:00

Criação do arquivo handler.class dentro do diretório miolo/modules/equipamento/handlers/

&lt;?php
class HandlerEquipamento extends MHandler
{
    function init()
    {
        parent::init();
        $this-&gt;manager-&gt;Trace('HandlerEquipamento:init');
    }
}
?&gt;



Agora que a estrutura padrão está montada você está pronto para a criação da interface e funcionamento do módulo.

Inicialmente o módulo Equipamento terá uma tela com os ícones Categoria e Material (main.inc). Ao selecionar uma das opḉões será exibido um grid com os dados já cadastrados e a opção de inserir um novo item, ao clicar em um dos elementos do grid, será possível editá-lo ou exclui-lo. 

Vamos a criação do arquivo main.inc que deve dicar dentro do diretório miolo/modules/equipamento/handlers.

&lt;?php
// obtem o objeto UI para acesso a metodos de interface (forms, grids, reports, images, etc.)
$ui = $MIOLO-&gt;getUI();

// limpa a area de conteudo do tema
$theme-&gt;clearContent();

// link a ser chamado se o usuario fechar o panel abaixo
$close = $MIOLO-&gt;getActionURL('equipamento','main');

// instancia um novo panel, onde sao colocados os icones de acao
// a variavel global $module se refere ao modulo corrente (exemplo)
$panel = new MActionPanel('pnlEquipamento','Módulo Equipamento','', $close, $ui-&gt;getImage( $module,'tools1.png'));

// adiciona os icones de acao ao panel criado
$panel-&gt;addAction('Categoria',$ui-&gt;getImage($module,'categoria.png'),$module, 'main:categoria:find');
$panel-&gt;addAction('Material',$ui-&gt;getImage($module,'material.png’'),$module, 'main:material:find');

// o codigo seguinte obtem qual o proximo handler a ser executado na sequencia definida
// pelo parametro "action" da URL
$a = $context-&gt;shiftAction();

// chama o proximo handler - $handled é falso se nenhum handler for executado
$handled = $MIOLO-&gt;invokeHandler($module,$a);

// se nenhum outro handler foi executado, insere o panel na area de conteudo do tema
// se outro handler for executado, assume que esse outro handler vai preecher a area de conteudo
if (! $handled)
{
$theme-&gt;insertContent($panel);
}

// inclui o menu principal da aplicacao (geralmente com links para outros modulos)
include_once($MIOLO-&gt;GetConf('home.modules') .'/main_menu.inc');
?&gt;

Obs.: As imagens devem estar dentro do diretório html/images.&nbsp;


Agora deve ser criado um handler para cada item. Eles serão responsáveis por chamar outros Handles.

miolo/modules/equipamento/handlers/categoria.inc

&lt;?php
    $action = $context-&gt;ShiftAction();
    $navbar-&gt;AddOption('Categoria', 'equipamento', 'main:categoria:find');
    switch($action)
    {
        case 'find':
            $MIOLO-&gt;InvokeHandler($module, 'categoria/find');
            break;
        case 'new':
            $MIOLO-&gt;InvokeHandler($module, 'categoria/new');
            break;
        default:
            $MIOLO-&gt;InvokeHandler($module, 'categoria/main');
            break;
    }
?&gt;

miolo/modules/equipamento/handlers/material.inc

&lt;?php
    $action = $context-&gt;ShiftAction();
    $navbar-&gt;AddOption('Material', 'equipamento', 'main:material:find');
    switch($action)
    {
        case 'find':
            $MIOLO-&gt;InvokeHandler($module, 'material/find');
            break;
        case 'new':
            $MIOLO-&gt;InvokeHandler($module, 'material/new');
            break;
        default:
            $MIOLO-&gt;InvokeHandler($module, 'material/main');
            break;
    }
?&gt;



Crie também dentro do diretório handlers uma pasta material e outra categoria. 
Dentro destas pastas criaremos os arquivos que farão as chamadas para os formulários.

Vamos começar a criar os arquivos para Categoria


miolo/modules/equipamento/handlers/categoria/find.inc

&lt;?php
    // variáveis
 $theme-&gt;ClearContent();
 $ui = $MIOLO-&gt;GetUI();
    
    // insere formulário frmProcessosFind
 $form = $ui-&gt;GetForm($module,'frmCategoriaFind',NULL,'categoria');
 $theme-&gt;InsertContent($form);
?&gt;



miolo/modules/equipamento/handlers/categoria/new.inc

&lt;?php
    // variáveis
 $theme-&gt;ClearContent();
 $ui = $MIOLO-&gt;GetUI();
    
    // insere formulário frmProcessosFind
 $form = $ui-&gt;GetForm($module,'frmCategoriaNew',NULL,'categoria');
 $theme-&gt;InsertContent($form);
?&gt;