sexta-feira, 8 de julho de 2011

FRAMEWORK MIOLO - modulo de exemplo - Parte III

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

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



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.

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

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

// link a ser chamado se o usuario fechar o panel abaixo
$close = $MIOLO->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->getImage( $module,'tools1.png'));

// adiciona os icones de acao ao panel criado
$panel->addAction('Categoria',$ui->getImage($module,'categoria.png'),$module, 'main:categoria:find');
$panel->addAction('Material',$ui->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->shiftAction();

// chama o proximo handler - $handled é falso se nenhum handler for executado
$handled = $MIOLO->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->insertContent($panel);
}

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

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



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

miolo/modules/equipamento/handlers/categoria.inc

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

miolo/modules/equipamento/handlers/material.inc

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



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

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



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

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

Um comentário: