3. O que é um Módulo
Um módulo é uma parte de um
programa que pode ser
desenvolvido independentemente.
Adiciona funcionalidades extras ao SNEP, é
facilmente instalado e atualizado.
Deve seguir o padrão da
Estrutura do Projeto.
6. Módulo – Série 1.3.x
Estrutura
padronizada do
Módulo.
Descritor do módulo.
7. Descritor de Módulo 1.3.x
class Example extends
Snep_Module_Descriptor {
public function __construct() {
$this->setName("ModuleName");
$this->setVersion("1.0");
$this->setDescription("Descrição");
$this->setModuleId('example');
...
}
}
8. Descritor de Módulo 1.3.x
Definição do menu, no método __construct( )
$menu_item =
new Snep_Menu_Item( "Example",
"Consulta no Banco",
"example/teste/database/");
$menu =
new Snep_Menu_Item( 'example',
'Module',
null,
$menu_item );
$this->setMenuTree( array( $menu ) );
9. Descritor de Módulo 1.3.x
Inclui o caminho do Lib/ no include_path.
$path = Zend_Registry::get('config')->system
->path
->base;
set_include_path( get_include_path() .
PATH_SEPARATOR .
$path .
"/modules/example/lib");
10. Módulo – Série 1.4.x
Estrutura padronizada
do Módulo.
Descritor do Módulo.
Define estrutura de
menus e controle de
acesso.
11. Descritor de Módulo 1.4
Info.xml
<module>
<name> Snep Example Module </name>
<description> Example </description>
<author> OpenS Tecnologia </author>
<website> www.snep.com.br </website>
</module>
13. Model
Cada módulo possui suas próprias
classes, estas ficam acessíveis a
qualquer rotina do sistema.
class Example_Manager {
public static function get( $id ) { }
public static function add( $dados ) { }
public static function remove( $id ) { }
public static function update( $dados ) { }
}
14. Controllers
Na pasta controllers são definidas classes que
representam as rotinas da aplicação.
Uma classe de controlador deve estender a
classe Zend_Controller_Action.
O método indexAction é necessário.
Cada método terá a sua View.
15. Controllers
// Definição de uma classe de controlador
// Deve informar o módulo e ter um nome
class NomeModulo_AgentsController extends
Zend_Controller_Action {
// Métodos da Classe
public function indexAction( ) { }
public function addAction( ) { }
public function removeAction( ) { }
public function editAction( ) { }
}
16. Controllers
A estrutura do Controlador e seus
métodos definem a URL da aplicação.
O módulo do controlador é informado.
http://localhost/snep/index.php/
/NomeModulo/agents/ indexAction()
/NomeModulo/agents/add/
/NomeModulo/agents/remove/
/NomeModulo/agents/edit/
17. Actions
Actions são classes que definem
Ações para Regras de Negócio.
Uma classe de ação deve estender
a classe PBX_Rule_Action.
Estas classes são instanciadas
automaticamente pelo SNEP.
18. Actions
class TocaAudioDiscaTroncoAction extends
PBX_Rule_Action {
public function __construct( ) { }
public function getName( ) { }
public function getVersion( ) { }
public function getDesc( ) { }
public function getConfig( ) { }
public function setConfig( $config ) { }
public function execute( $asterisk,
$request ) { }
}
20. Actions
public function execute( $asterisk, $request ) {
$asterisk->exec_goto( $this->config['context'],
$request->destino, 1 );
}
21. Installer
A pasta installer contém a estrutura do
banco do módulo.
A subpasta installer/update contém
atualizações do banco versionadas.
$ mysql -u snep -p snep25 < schema.sql
22. Módulo Exemplo
Disponibilizamos um módulo exemplo
para incentivar o desenvolvimento de
novos projetos baseados na infra-
estrutura do SNEP.
Disponível nas duas versões: 1.4 e 1.3.x.
23. Módulo Exemplo
O módulo foi criado para exemplificar as
possibilidades dos módulos do SNEP.
Cadastro simples em banco de dados.
Uso de Model ( Example_Manager )
Demostração do CRUD.
Demonstração da criação e validação de
formulários.
24. Fork Me
É nosso objetivo que o projeto seja
facilmente copiado e alterado,
estimulando o surgimento de novos
módulos.
O Projeto do módulo exemplo está
disponível no GitHub.
Cadastre-se e faça um fork
Necessita ter o git instalado.
# apt-get install git