From 9d75536db1da1e9cbde605e2d8439ee2f10b1935 Mon Sep 17 00:00:00 2001 From: patrixsbs Date: Fri, 10 Jan 2014 18:03:35 +0000 Subject: [PATCH] Ajustes no aplicativo modelo --- .../controls/pages/gerador-de-codigos.php | 154 ++++++++++++++++++ .../views/pages/gerador-de-codigos.php | 62 +++++++ 2 files changed, 216 insertions(+) create mode 100644 @project/exemplo/controls/pages/gerador-de-codigos.php create mode 100644 @project/exemplo/views/pages/gerador-de-codigos.php diff --git a/@project/exemplo/controls/pages/gerador-de-codigos.php b/@project/exemplo/controls/pages/gerador-de-codigos.php new file mode 100644 index 0000000..50886ba --- /dev/null +++ b/@project/exemplo/controls/pages/gerador-de-codigos.php @@ -0,0 +1,154 @@ +_dsn=\''.$banco.'://'.$usuario.':'.$senha.'@'.$servidor.'/'.$base.'\';'; + + try{ + $db=new Oraculum_Models(); + $db->setDsn($banco.'://'.$usuario.':'.$senha.'@'.$servidor.'/'.$base); + $db->PDO(); + $dbo=new DBO(); + DBO::execSQL('USE '.$base.';'); + $query=DBO::execSQL('SHOW KEYS FROM '.$tabela.' WHERE Key_name = \'PRIMARY\';')->fetchAll(); + + //$d=$query->fetchAll(); + //var_dump($query); + $keys=array(); + foreach($query as $r): + if(is_null($firstkey)) + $firstkey=$r['Column_name']; + $keys[]=$r['Column_name']; + endforeach; + $keys='array(\''.implode('\',\'', $keys).'\')'; + + + $control='<'.'?'.'php'.NL. + 'Oraculum::Load(\'Models\');'.NL. + 'Oraculum::Load(\'Plugins\');'.NL. + 'Oraculum::Load(\'HTTP\');'.NL. + '// Carrega o arquivo de conexao com o banco'.NL. + '$db=new Oraculum_Models(\''.$banco.'\');'.NL.NL. + '// Carrega dinamicamente uma classe para a tabela '.$tabela.NL. + '$db->LoadModelClass(\''.$tabela.'\');'.NL. + '$action=Oraculum_Request::getvar(\''.$arquivo.'\');'.NL.NL. + '// Verifica se a acao e\' permitida no sistema'.NL. + 'if (!(in_array($action, array(\'cadastrar\', \'listar\', \'alterar\', \'excluir\'))))'.NL. + ' $action=\'listar\';'.NL.NL. + '// Verifica se existe uma funcao com o mesmo nome da acao'.NL. + 'if (is_callable($action))'.NL. + ' call_user_func($action); // Chama a funcao'.NL. + 'else'.NL. + '// Senao chama a funcao listar (esse e\' um tratamento de seguranca)'.NL. + 'if (is_callable(\'listar\'))'.NL. + ' call_user_func(\'listar\');'.NL.NL. + 'function listar() {'.NL. + ' // Carrega o plugin Oraculum_Datagrid'.NL. + ' Oraculum_Plugins::Load(\'datagrid\');'.NL. + ' // Cria uma instancia da classe'.NL. + ' $tb=new '.$classe.'();'.NL. + ' $tb->setKey('.$keys.');'.NL. + ' // Carrega todos os registros da tabela/entidade'.NL. + ' $regs=$tb->getAll();'.NL. + ' // Cria uma instancia de do plugin Oraculum_Datagrid'.NL. + ' $grid=new Oraculum_Datagrid($regs);'.NL.NL. + ' // Define a classe CSS da tabela'.NL. + ' $grid->setTableClass(\'table table-bordered table-striped\');'.NL. + ' // Define a classe CSS do botao de atualizacao'.NL. + ' $grid->setUpdateClass(\'btn btn-primary\');'.NL. + ' // Define a classe CSS do botao de exclusao'.NL. + ' $grid->setDeleteClass(\'btn btn-danger\');'.NL. + ' // Determina o padrao de URL para o link de atualizar'.NL. + ' $grid->setUpdateURL(URL.\''.$arquivo.'/alterar/%id%\');'.NL. + ' // Determina o padrao de URL para o link de excluir'.NL. + ' $grid->setDeleteURL(URL.\''.$arquivo.'/excluir/%id%#confirm%id%" onclick="if(confirm(\\\'Tem certeza que deseja excluir?\\\')){return true;}else{return false;}\');'.NL. + ' // Define o label do botao de atualizacao'.NL. + ' $grid->setUpdateLabel(\' Alterar\');'.NL. + ' // Define o label do botao de exclusao'.NL. + ' $grid->setDeleteLabel(\' Excluir\');'.NL. + /*' // Adiciona codigo HTML na celula de acoes (onde ficam os botoes)'.NL. + ' $grid->setAdictionalActionHTML(\'\');'.NL.*/ + ' // Define o texto que deve ser exibido caso nao existem registros'.NL. + ' $grid->setNoRecordsFound(\'Nenhum registro encontrado!\');'.NL. + ' // Gera o HTML do grid'.NL. + ' $grid=$grid->generate();'.NL. + ' // Armazena o grid num registrador chamado grid que sera\' lido na view'.NL. + ' Oraculum_Register::set(\'grid\', $grid);'.NL. + ' // Armazena os registros num registrador chamado regs que sera\' lido na view'.NL. + ' Oraculum_Register::set(\'regs\', $regs);'.NL. + '}'.NL.NL. + + 'function excluir() {'.NL. + ' // Cria uma instancia da classe'.NL. + ' $tb=new '.$classe.'();'.NL. + ' $tb->setKey('.$keys.');'.NL. + ' // Captura o que estiver apos /excluir/ na URL'.NL. + ' $id=(int)Oraculum_Request::getvar(\'excluir\');'.NL. + ' // Carrega todos os registros que tiverem o ID relacionado'.NL. + ' $reg=$tb->getBy'.ucwords($firstkey).'($id);'.NL. + ' if (sizeof($reg)>0) {'.NL. + ' // Se encontrar algum registro, o mesmo e\' apagado'.NL. + ' $reg->delete();'.NL. + ' }'.NL. + ' // Redireciona para a pagina de listagem'.NL. + ' Oraculum_HTTP::redirect(URL.\''.$arquivo.'\');'.NL. + '}'.NL.NL. + + 'function cadastrar() {'.NL. + ' // No momento ainda e\' necessario criar manualmente o cadastro'.NL. + '}'.NL.NL. + + 'function alterar() {'.NL. + ' // No momento ainda e\' necessario criar manualmente a alteracao'.NL. + '}'.NL.NL. + + 'if ($action==\'listar\'):'.NL. + ' Oraculum_WebApp::LoadView()'.NL. + ' ->AddTemplate(\'geral\')'.NL. + ' ->LoadPage(\''.$arquivo.'-listar\'); // Carrega a view de listagem'.NL. + 'endif;'; + + $viewlistar='<'.'?'.'php $grid=Oraculum_Register::get(\'grid\'); ?'.'>'."\n\r". + '<'.'?'.'php echo $grid; ?'.'>'; + + Oraculum_Register::set('model', $model); + Oraculum_Register::set('control', $control); + Oraculum_Register::set('viewlistar', $viewlistar); + Oraculum_Register::set('nomebanco', $banco); + Oraculum_Register::set('arquivo', $arquivo); + } catch(Exception $e){ + Oraculum_Register::set('msg', 'Ocorreu algum problema ao capturar as informações do banco'); + Oraculum::Load('Logs'); + Oraculum_Alias::LoadAlias('Logs'); + } + + endif; + endif; + Oraculum_WebApp::LoadView() + ->AddTemplate('geral') + ->LoadPage('gerador-de-codigos'); diff --git a/@project/exemplo/views/pages/gerador-de-codigos.php b/@project/exemplo/views/pages/gerador-de-codigos.php new file mode 100644 index 0000000..71aeff8 --- /dev/null +++ b/@project/exemplo/views/pages/gerador-de-codigos.php @@ -0,0 +1,62 @@ + +
+

Gerador de Códigos

+

Atualmente o Oraculum possui um gerador de códigos simples, onde você informa qual o driver do Banco de Dados, os dados de conexões, a base e a tabela alvo.
+Com isso é criado um controlador e views para realizar os processos de listagem e exclusão (devido ao quesito flexibilidade, ainda não está gerando código de cadastro e edições).
+Vale observar que ao informar os campos abaixo, caso você informe dados de conexão inválidos, deverá retorar erro.

+
+ 0): ?> + Banco de Dados
+ (Escolha um dos Drivers PDO disponíveis no seu servidor) +
+ Servidor:
+ +
+ Base de Dados:
+ +
+ Usuário:
+ +
+ Senha:
+ +
+ Tabela:
+ +
+ +
+
+ + + + + models/.php +
+ + + + controls/.php +
+ + + + views/-listar.php +
+ +
\ No newline at end of file