/** * A função do construtor é definir qual método será executado após * receber do Init() a action da requisição. Não é permitido parâmetros * nos actions. * @param string $action */ public function __construct($action) { if (is_null($action)) { $this->main(); } elseif (method_exists($this, $action)) { $this->{$action}(); } else { header("location: " . \core\url\Url::setURL("error", null, array('x305', 'erro no processamento do action'))); } /** * Esse procedimento deverá ser repetido e todos os controladores * da rota admin e app. * Empacotá-lo, juntamente com outras funções e permitir que a classe * herde essas características. # 1 - Verifica se existe um método com o mesmo nome da action if( method_exists($this, $action) ){ $this->$action(); # 2 - Se a action for null, a classe chama um método padrão. }elseif( is_null($action) ){ $this->main(); # 3 - Se não existir método compatível com a action, o sistema deve apresentar uma mensagem de erro. }else{ # exceção - deve haver tratamento debug(__FILE__,__LINE__,"variável action não definida - fazer tratamento de exceção"); } */ }
public function home() { /* * TESTE */ echo '<a href="' . \core\url\Url::setURL("teste") . '" target="_blank">Tela home do módulo Cliente</a>'; echo "<br>"; echo '<a href="' . \core\url\Url::setURL("teste", "frm") . '" target="_blank">Cadastrar Cliente</a>'; echo "<br>"; echo '<a href="' . \core\url\Url::setURL("teste", "lista") . '" target="_blank">Listar Clientes</a>'; echo "<br>"; #echo '<a href="'.\core\url\Url::setURL("admin","tabelas").'" target="_blank">Listar tabelas</a>'; /* echo "<p>"; echo '<a href="'.\core\url\Url::setURL("agenda").'" target="_blank">Agenda</a>'; echo "<br>"; echo '<a href="'.\core\url\Url::setURL("agenda","frm").'" target="_blank">Reservar Sala</a>'; echo "<br>"; echo '<a href="'.\core\url\Url::setURL("agenda","lista").'" target="_blank">Listar reservas</a>'; echo "<br>"; echo '<a href="'.\core\url\Url::setURL("agenda","teste").'" target="_blank">Nova Agenda</a>'; echo "<br>"; echo '<a href="'.\core\url\Url::setURL("agenda","dhtmlreadonly").'" target="_blank">Agenda Apenas leitura</a>'; echo "<br>"; echo '<a href="'.\core\url\Url::setURL("agenda","maps").'" target="_blank">Google Maps</a>'; echo "<p>"; echo '<a href="'.\core\url\Url::setURL("gantt","gantt").'" target="_blank">GANTT</a>'; echo "<p>"; echo '<a href="'.\core\url\Url::setURL("gantt","message").'" target="_blank">MESSAGE</a>'; */ }
public function home() { /* * TESTE */ echo '<a href="' . \core\url\Url::setURL("teste") . '" target="_blank">Tela home do módulo Cliente</a>'; echo "<br>"; echo '<a href="' . \core\url\Url::setURL("teste", "dxhtml") . '" target="_blank">dxhtml</a>'; echo "<br>"; echo '<a href="' . \core\url\Url::setURL("teste", "show", array('1', ''), null, array('modulo' => 'cliente')) . '" target="_blank">Teste edição cliente</a>'; echo "<br>"; echo '<a href="' . \core\url\Url::setURL("tabelas", "tabelas") . '" target="_blank">Listar tabelas</a>'; /* echo "<p>"; echo '<a href="'.\core\url\Url::setURL("agenda").'" target="_blank">Agenda</a>'; echo "<br>"; echo '<a href="'.\core\url\Url::setURL("agenda","frm").'" target="_blank">Reservar Sala</a>'; echo "<br>"; echo '<a href="'.\core\url\Url::setURL("agenda","lista").'" target="_blank">Listar reservas</a>'; echo "<br>"; echo '<a href="'.\core\url\Url::setURL("agenda","teste").'" target="_blank">Nova Agenda</a>'; echo "<br>"; echo '<a href="'.\core\url\Url::setURL("agenda","dhtmlreadonly").'" target="_blank">Agenda Apenas leitura</a>'; echo "<br>"; echo '<a href="'.\core\url\Url::setURL("agenda","maps").'" target="_blank">Google Maps</a>'; echo "<p>"; echo '<a href="'.\core\url\Url::setURL("gantt","gantt").'" target="_blank">GANTT</a>'; echo "<p>"; echo '<a href="'.\core\url\Url::setURL("gantt","message").'" target="_blank">MESSAGE</a>'; */ }
/** * O método setRoute recebe o array de rotas registradas * e o módulo requerido pela URL. Se o módulo estiver registrado * como a chave de uma rota a função recupera todas as características * da rota (ex: array('route'=>'app', 'controller'=>'Pop');). Essas * características contém a rota e o controlador responsável pelo * tratamento dos dados. * @param string $modulo (origem: URL) * @param array $arrayRoute */ private function setRoute($modulo, array $arrayRoute) { # 1 - verificar se o módulo está registrado na tabela de rotas # 2 - se registrado, definir os dados da rota. # 3 - se não registrado, redirecionar para uma tela de erro, pois a requisição é inválida. if (key_exists($modulo, $arrayRoute)) { $this->route = $arrayRoute[$modulo]; #array('route'=>'app', 'controller'=>'Index', 'action'=>'home'); } else { header("location: " . \core\url\Url::setURL("error")); } }
<?php use core\html\Html; ?> <html> <head> <title><?php echo __FILE__; ?> </title> </head> <body> <?php $html = new \core\html\Html(); $table = $html->table(); $table->head(array("id Agenda", "titulo", "Data", "Hora inicial", "Hora final")); foreach ($pAgenda->getAllArray() as $key => $agenda) { $table->body(array($agenda["idAgenda"], $agenda["titulo"], $agenda["data"], $agenda["horaInicial"], $agenda["horaFinal"], '<a href="' . \core\url\Url::setURL("agenda", "edt", array($agenda['idAgenda'], $agenda['titulo'])) . '" target="_blank">editar</a>', '<a href="' . \core\url\Url::setURL("agenda", "rm", array($agenda['idAgenda'], $agenda['titulo'])) . '" target="_parent">excluir</a>')); } echo $table->getTable(); ?> </body> </html>
protected function locationActionError() { header("location: " . \core\url\Url::setURL("error", null, array('x305', 'erro no processamento do action'))); }
foreach ($cabecalhoTabela as $key => $column_name) { $cabecalho[] = $column_name['column_name']; } # define o cabeçalho da tabela //$cabecalhoTabela = array_keys( $metaDadosTabela[0] ); $cabecalho[] = "editar"; $cabecalho[] = "excluir"; //$table->body( array_keys( $dadosTabela[0] ) ); $table->body($cabecalho); $table->addAtributos("tr", array("class" => "first_row_tpl")); //debug(__FILE__, __LINE__, array_keys($metaDataTable[0]) ); foreach ($dadosTabela as $row => $dados) { /* * é necessário a identificação automática da chave primária para * a composição do href */ $linkEditarDado = '<a href="' . \core\url\Url::setURL("tabelas", "edt", array($dados[$primary_key], ""), null, array("table" => $tabelaAnalise['table'])) . '" title="Editar linha">Editar</a>'; $linkExcluirDado = '<a href="" title="Excluir dado">Excluir</a>'; $dados[] = $linkEditarDado; $dados[] = $linkExcluirDado; $table->body($dados); } echo '<div class="preview_tpl" id="previewData">'; echo '<div class="header_tpl">Metadados da tabela <b>' . $tabelaAnalise['table'] . '</b></div>'; echo $table->getTable(); echo '</div>'; //echo '<div><a href="'.\core\url\Url::setURL( "tabelas", "visualisarDados", array(), null, array('table' => $tabelaAnalise['table']) ).'" title="Administrar dados da tabela '.$tabelaAnalise['table'].'">Administrar dados da tabela</a></div>'; ?> </body> </html>
/** * Esse método foi substituido pelo pelo add e emcapsulado pelo save na classe * Generic controler. * MANTER APENAS PARA POSSIVEIS CONSULTAS */ private function saveCliente() { # -- debug do método POST # debug(__FILE__, __LINE__, $_POST); # Recuperar parâmetors da URL $url = \core\url\Url::parseURL(); # Instância do novo objeto $objPrincipal = new \app\teste\models\Cliente(); # Documentação da classe $docObjPrincipal = new \core\orm\PHPDoc(get_class($objPrincipal)); # array de atributos da classe principal # Ex: array(idCliente, nome, data_nascimento, idSituacao) $atributos = $docObjPrincipal->getProperties()[get_class($objPrincipal)]; # Carga dos atributos da classe Principal (sem validação) foreach ($atributos as $atributo) { $objPrincipal->__set($atributo, $_POST['cliente'][$atributo]); } /** * @TODO como controlar falhas AQUI!!!!!!!!!!!!!!!!! */ $objPrincipal->save(); # ------------------------------------------------------------------ # CLASSES DERIVADAS # Array com atributos da classe principal e referência as classes derivadas $arrayClassesDerivadas = $docObjPrincipal->getProperties(); # Exclusão das propriedades da classe principal unset($arrayClassesDerivadas[get_class($objPrincipal)]); # grupo: contém referência ao nome da classe Ex: telefone (class Telefone) # classeDerivada: contém o nome qualificado da classe derivada Ex: namespace/Classe foreach ($arrayClassesDerivadas as $classeDerivada => $grupo) { # Array de dados oriundos do formulário html # Value: array atributo = valor da classe derivada foreach ($_POST[$grupo] as $key => $value) { # Cria uma instância da classe $objDerivado = new $classeDerivada(); # Recupera a documentação da classe $docObjDerivado = new \core\orm\PHPDoc($classeDerivada); # Recupera um array com os atributos da classe derivada $arrayAttrClasseDerivada = $docObjDerivado->getProperties()[$classeDerivada]; # Verificar se o objeto já existe # Se $key estiver no array $arrayAttrClasseDerivada, o objeto deverá ser criado. if (in_array($key, $arrayAttrClasseDerivada)) { # agrupar por características e alimentar a classe. /* formato do array telefone => Array( 1 => Array (idTelefone => 1, ddd => 84, telefone => 999263571), 5 => Array (idTelefone => 1, ddd => 84, telefone => 981565525), ddd => Array (0 => 55, 1 => 53), telefone => Array (0 => 111111111, 1 => 2222222222 )); */ # Forma um array com os dados novos VER: TRATAMENTO DE ARRAY DE NOVOS DADOS foreach ($value as $kValue => $vValue) { $aDados[$grupo][$kValue][$key] = $vValue; } } else { # Se $key não estiver no array $arrayAttrClasseDerivada, o objeto já existe foreach ($arrayAttrClasseDerivada as $attrClasseDerivada) { # Se a clausula if for acionada, os dados já existem if (key_exists($attrClasseDerivada, $value)) { $objDerivado->__set($attrClasseDerivada, $value[$attrClasseDerivada]); } } $objDerivado->__set($docObjPrincipal->getPK(), $objPrincipal->__get($docObjPrincipal->getPK())); /** * @TODO como controlar falhas AQUI!!!!!!!!!!!!!!!!! */ $objDerivado->save(); } } } unset($nomeClasseSimples); # -------------------------------------------------------- # TRATAMENTO DO ARRAY DE NOVOS DADOS # -------------------------------------------------------- foreach ($arrayClassesDerivadas as $namespaceClass => $atributoReferenciado) { if (key_exists($atributoReferenciado, $aDados)) { foreach ($aDados[$atributoReferenciado] as $kDados => $vDados) { # debug( __FILE__, __LINE__, $namespaceClass ); # Cria uma instância da classe $objDerivado2 = new $namespaceClass(); # Recupera a documentação da classe $docObjDerivado2 = new \core\orm\PHPDoc($namespaceClass); # Recupera um array com os atributos da classe derivada $arrayAttrClasseDerivada2 = $docObjDerivado2->getProperties()[$namespaceClass]; foreach ($vDados as $kvDados => $vvDados) { if (in_array($kvDados, $arrayAttrClasseDerivada2)) { $objDerivado2->__set($kvDados, $vvDados); } } $objDerivado2->__set($docObjPrincipal->getPK(), $objPrincipal->__get($docObjPrincipal->getPK())); /** * @TODO como controlar falhas AQUI!!!!!!!!!!!!!!!!! */ //$objDerivado2->save(); } } } header("location: " . \core\url\Url::setURL("teste", "edt", array($objPrincipal->__get("idCliente"), $objPrincipal->__get("nome")))); }
company: "Monk Home Loans" }; var parentObj = document.getElementById("previewData"); parentObj.innerHTML = window.dhx4.template(parentObj.innerHTML, data); } </script> </head> <body onload="doOnLoad();"> <?php $table = new \core\html\Table(); $table->addAtributos("tr", array("class" => "tr_hdr_tpl")); # define o cabeçalho da tabela $table->body(array_keys($metaDataTable[0])); $table->addAtributos("tr", array("class" => "first_row_tpl")); //debug(__FILE__, __LINE__, array_keys($metaDataTable[0]) ); foreach ($metaDataTable as $row => $metadados) { //$linkMetaDados = '<a href="'..'" title="editar metadados da tabela '.$metadados['TABLE_NAME'].'">IMG META</a>'; //$linkEditar = '<a href="'..'" title="editar dados da tabela '.$metadados['TABLE_NAME'].'">EDITAR DADOS</a>'; //$table->body(array($metadados['TABLE_NAME'], $metadados['TABLE_ROWS'])); $table->body($metadados); } echo '<div class="preview_tpl" id="previewData">'; echo '<div class="header_tpl">Metadados da tabela <b>' . $tabelaAnalise['table'] . '</b></div>'; echo $table->getTable(); echo '</div>'; echo '<div><a href="' . \core\url\Url::setURL("tabelas", "visualizarDados", array(), null, array('table' => $tabelaAnalise['table'])) . '" title="Administrar dados da tabela ' . $tabelaAnalise['table'] . '">Administrar dados da tabela</a></div>'; ?> </body> </html>
<?php use core\html\Html; ?> <html> <head> <title><?php echo __FILE__; ?> </title> </head> <body> <?php $html = new \core\html\Html(); $table = $html->table(); $table->head(array("id", "Codificação", "Data emissão", "Elaborado Por", "Revisado por", "Aprovado por", "editar", "excluir")); foreach ($pPop->getAllArray() as $key => $pop) { $table->body(array($pop["idPop"], $pop["codificacao"], $pop["dataEmissao"], $pop["elaboradoPor"], $pop["revisadoPor"], $pop["aprovadoPor"], '<a href="' . \core\url\Url::setURL("pop", "edt", array($pop['idPop'], $pop['codificacao'])) . '" target="_blank">editar</a>', '<a href="' . \core\url\Url::setURL("pop", "rm", array($pop['idPop'], $pop['codificacao'])) . '" target="_parent">excluir</a>')); } echo $table->getTable(); ?> </body> </html>
eventLimit: true, // allow "more" link when too many events events: [ <?php $contador = 1; foreach ($pAgenda->getAllArray() as $key => $agenda) { echo "{"; echo "\n\t"; echo "id: " . $agenda["idAgenda"] . ","; echo "\n\t"; echo "title: '" . $agenda["titulo"] . "',"; echo "\n\t"; echo "start: '" . $agenda["data"] . "T" . $agenda["horaInicial"] . "',"; echo "\n\t"; echo "end: '" . $agenda["data"] . "T" . $agenda["horaFinal"] . "',"; echo "\n\t"; echo "url: '" . \core\url\Url::setURL("agenda", "show", array($agenda['idAgenda'], $agenda['titulo'])) . "',"; echo "\n\t"; if ($contador % 2 == 0) { echo "color: '#ff9f89'"; } else { echo "color: '#ff4d89'"; } echo "\n"; echo "}"; if ($contador < $pAgenda->getNumberRows()) { echo ","; } echo "\n"; $contador++; } ?>
/** * action RM * remove um registro do banco de dados */ public function rm() { # - recuperar a URL $url = Url::parseURL(); # - estabeler conexão com o banco de dados $oCon = new \core\dba\pdo\Conexao(DRIVER, HOST, DBNAME, USERNAME, PASSWD); # - instanciar um objeto do modelo de acordo com o Id $oPop = new \app\models\Pop(array("idPop" => $url['id'])); # - instanciar um objeto persistente $pPop = new \app\models\PopPersist($oCon, $oPop); $pPop->removeObject(); header("location: " . Url::setURL("pop", "lista")); $class = explode('\\', strtolower(__CLASS__)); $class = array_pop($class); $method = explode('::', strtolower(__METHOD__)); include_once 'app/views/' . $class . '/' . $class . '.lista.php'; }
use core\url\Url; $html = new \core\html\Html(); ?> <html> <head> <title><?php echo __FILE__; ?> </title> <!-- Place inside the <head> of your HTML --> </head> <body> <form action="<?php echo Url::setURL("agenda", "add"); ?> " method="POST"> <p> <label for="titulo">Título:</label> <input type="text" name="titulo" id="titulo" value="teste da agenda"> </p> <p> <label for="data">Data: </label> <input type="date" name="data" id="data" value="" size="100%"> </p> <p> <label for="horaInicial">Início: </label>
<div class="header_tpl">Strings</div> <table cellspacing="0" cellpadding="0" border="0"> <tr class="tr_hdr_tpl"><td>Template</td><td>Key</td><td>Value</td><td>Result</td></tr> <tr class="first_row_tpl"><td>uppercase</td><td>first_name</td><td>#first_name#</td><td>#first_name|uppercase#</td></tr> <tr><td>uppercase</td><td>last_name</td><td>#last_name#</td><td>#last_name|uppercase#</td></tr> <tr><td>lowercase</td><td>addr1</td><td>#addr1#</td><td>#addr1|lowercase#</td></tr> <tr><td>lowercase</td><td>addr2</td><td>#addr2#</td><td>#addr2|lowercase#</td></tr> <tr><td>maxlength</td><td>company</td><td>#company#</td><td>#company|maxlength:11:true#</td></tr> </table> </div> <?php $table = new \core\html\Table(); $table->addAtributos("tr", array("class" => "tr_hdr_tpl")); $table->body(array("Tabela", "Registros", "metadados", "editar")); $table->addAtributos("tr", array("class" => "first_row_tpl")); foreach ($listaTabelas as $lista => $metadados) { $linkMetaDados = '<a href="' . \core\url\Url::setURL("tabelas", "metaDadosTable", array(), null, array('table' => $metadados['TABLE_NAME'])) . '" title="editar metadados da tabela ' . $metadados['TABLE_NAME'] . '">IMG META</a>'; $linkEditar = '<a href="' . \core\url\Url::setURL("tabelas", "visualizarDados", array(), null, array('table' => $metadados['TABLE_NAME'])) . '" title="editar dados da tabela ' . $metadados['TABLE_NAME'] . '">EDITAR DADOS</a>'; $table->body(array($metadados['TABLE_NAME'], $metadados['TABLE_ROWS'], $linkMetaDados, $linkEditar)); } echo '<div class="preview_tpl" id="previewData">'; echo '<div class="header_tpl">Lista de tabelas do sistema</div>'; echo $table->getTable(); echo '</div>'; ?> </body> </html>
/* foreach ( $arrayLabel as $key => $column_name ){ $label[] = $column_name['column_name']; } foreach( $label as $vLabel ){ $dados[] = '<label for="'.$vLabel.'">'.$vLabel.': </label>'; if( $vLabel == $primary_key ){ $dados[] = '<input type="text" name="'.$vLabel.'" value="'.$registroTabela[0][$vLabel].'" readonly="readonly">'; }else{ $dados[] = '<input type="text" name="'.$vLabel.'" value="'.$registroTabela[0][$vLabel].'" >'; } $table->body( $dados ); unset( $dados ); } */ foreach ($output as $value) { $table->body($value); } $table->body(array("", '<input type="submit" name="bEdt" value="Gravar">')); echo '<div class="preview_tpl" id="previewData">'; echo '<div class="header_tpl">Editar registro <b></b></div>'; echo '<form name="edt" method="post" action="' . \core\url\Url::setURL('tabelas', 'save', array($id, ''), null, array('table' => $tabelaAnalise['table'])) . '">'; echo $table->getTable(); echo '</form>'; echo '</div>'; ?> </body> </html>
table_tab_navigation: false, plugins: "image", image_description: true, images_upload_base_path: "/some/basepath", images_upload_url: "../../postAcceptor.php" }); </script> </head> <body> <form action="<?php echo Url::setURL("pop", "add"); ?> " method="POST"> <input type="hidden" name="idPop" value="<?php echo $oPop->__get('idPop'); ?> "> <p> <label for="tipoDocumento">Tipo de Documento:</label> <input type="text" name="tipoDocumento" id="tipoDocumento" value="<?php echo $oPop->__get('tipoDocumento'); ?> "> </p> <p> <label for="codificacao">Codificação: </label>
dhxWins = new dhtmlXWindows(); //define a div que deve carrega a janela modal dhxWins.attachViewportTo("agenda"); //define as propriedades da div w1 = dhxWins.createWindow("w1", 600, 300, 600, 400); //w1.setText("dhtmlxWindow #1"); //define o tipo de janela como modal dhxWins.window("w1").setModal(true); //reuperar da data hora do evento w1.attachURL("<?php echo \core\url\Url::setURL("agenda", "frm"); ?> ", true, {data:"2015-10-15", horaInicial:"08:00"}); return false; } //scheduler.load("./data/units.xml"); <?php foreach ($pAgenda->getAllArray() as $key => $agenda) { echo 'scheduler.addEvent({'; echo "\n\t"; echo 'id:' . $agenda["idAgenda"] . ',';