/** ********************************************************************************** * * * @package URBEM CNM - Soluções em Gestão Pública * * @copyright (c) 2013 Confederação Nacional de Municípos * * @author Confederação Nacional de Municípios * * * * O URBEM CNM é um software livre; você pode redistribuí-lo e/ou modificá-lo sob * * os termos da Licença Pública Geral GNU conforme publicada pela Fundação do * * Software Livre (FSF - Free Software Foundation); na versão 2 da Licença. * * * * Este programa é distribuído na expectativa de que seja útil, porém, * * SEM NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU * * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral do GNU * * para mais detalhes. * * * * Você deve ter recebido uma cópia da Licença Pública Geral do GNU "LICENCA.txt" * * com este programa; se não, escreva para a Free Software Foundation Inc., * * no endereço 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * ********************************************************************************** */ /** * Funções AJAX * Data de Criação: 31/01/2006 * @author Analista: Fábio Bertoldi Rodrigues * @author Desenvolvedor: Lucas Stephanou $Revision: 28520 $ $Name$ $Author: leandro.zis $ $Date: 2008-03-12 13:36:17 -0300 (Qua, 12 Mar 2008) $ Casos de uso: uc-01.01.00 */ //Fila de conexões - Variaveis globais fila=[]; ifila=0; //Mostra imagem de loading enquanto chama a pagina requisitada function imagem(){ // Var objImg é uma flag que verifica a existência do objeto imagem do Ajax // Caso essa variavel seja true ela passa a ser true var boImg = new Boolean(false); // Verifica a Existência do frame principal if(window.parent.frames["telaPrincipal"]){ // Verifica se a imagem existe no frame principal if(window.parent.frames["telaPrincipal"].document.getElementById("carregando")){ var loading = window.parent.frames["telaPrincipal"].document.getElementById("carregando"); boImg = true; } // Verifica se a imagem existe no formulário ativo }else if(document.getElementById("carregando")){ var loading = document.getElementById("carregando"); boImg = true; } // Verifica se a imagem já existe na tela // Caso exista ela verifica seu display alterando para o seu aparecimento ou não. if(boImg==true){ if(loading.style.display=="block"){ loading.style.display="none"; }else{ loading.style.display="block"; } } } function ajax(stPagina,stCtrl,stId){ /* Cria novo objeto Http Request */ xmlhttp = new XMLHttpRequest(); //Mostra imagem de loading enquanto chama a pagina requisitada imagem(); //Abre a url stCtrl = "&stCtrl="+stCtrl; // stParametros = "id?>"+stCtrl; stLink = stPagina+stCtrl; xmlhttp.open("GET", stLink ,true); xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8"); //Executada quando o navegador obtiver o código xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4){ //Lê o texto var texto=xmlhttp.responseText //Exibe o texto no div conteúdo var conteudo=window.parent.frames["telaPrincipal"].document.getElementById(stId); conteudo.innerHTML=texto; imagem(); } } xmlhttp.send(null) } function executaJavaScript( stJs ) { imagem(); var d =(window.parent.frames["telaPrincipal"])?window.parent.frames["telaPrincipal"].document:document; var f =(window.parent.frames["telaPrincipal"])?window.parent.frames["telaPrincipal"].document.frm:document.frm; try { eval( stJs ); } catch( err ) { if(window.parent.frames["telaPrincipal"]){ window.parent.frames["telaPrincipal"].document.getElementById("spnErro").innerHTML = "


Erro:
"+err.name+": "+err.message+"

Erro ao executar o seguinte código:

"+stJs.htmlEntities()+"

Exindo página gerada pelo oculto:

"+stJs+"

Fim do Erro"; window.parent.frames["telaPrincipal"].document.getElementById("spnErro").style.display = 'block'; eval( stJs ); } }finally{ imagem(); } } function ajaxJavaScript( stPagina, stCtrl, parametrosGET ) { stCtrl = "&stCtrl="+stCtrl; stLink = stPagina+stCtrl; if (typeof parametrosGET != "undefined") { stLink += parametrosGET; } //Adiciona à fila fila[fila.length]=stLink; //Se não há conexões pendentes, executa if( (ifila+1) == fila.length ) { ajaxJavaScriptRun(); } } function ajaxJavaScriptPOST( stPagina, parametrosPOST, stCtrl ) { stCtrl = "&stCtrl="+stCtrl; stLink = stPagina+stCtrl; //Adiciona à fila fila[fila.length]=stLink; //Se não há conexões pendentes, executa if( (ifila+1) == fila.length ) { ajaxJavaScriptRunPOST(parametrosPOST); } } //Executa a próxima conexão da fila function ajaxJavaScriptRun(){ imagem(); xmlhttp = new XMLHttpRequest(); //Abre a conexão xmlhttp.open("GET",fila[ifila],true); //Função para tratamento do retorno xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4){ //Lê o texto var texto=xmlhttp.responseText; //Executa o texto como um javaScript executaJavaScript( texto ); //Roda o próximo ifila++; if( ifila < fila.length ) { ajaxJavaScriptRun(); } imagem(); } } //Executa xmlhttp.send(null); } //Executa a próxima conexão da fila function ajaxJavaScriptRunPOST(stParametros){ imagem(); xmlhttp = new XMLHttpRequest(); //Abre a conexão xmlhttp.open("POST",fila[ifila],true); //Função para tratamento do retorno xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4){ //Lê o texto var texto=xmlhttp.responseText; //Executa o texto como um javaScript executaJavaScript( texto ); //Roda o próximo ifila++; if( ifila < fila.length ) { ajaxJavaScriptRun(); } imagem(); } } //Executa xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xmlhttp.send(stParametros.substring(1)); } //Verifica se existe algum processo em andamento, se não executa de forma sincrona. function ajaxJavaScriptSincrono( stPagina, stCtrl, sessaoId ) { stCtrl = "&stCtrl="+stCtrl; stLink = stPagina+stCtrl; if( (ifila) == fila.length ) { xmlhttp = new XMLHttpRequest(); imagem(); //Abre a conexão xmlhttp.open("GET",stLink,false); fila[fila.length]=stLink; //meu //Executa xmlhttp.send(null); //Recebe var texto=xmlhttp.responseText; //Executa o texto como um javaScript ifila++; // meu executaJavaScript( texto ); //Retira a imagem loading imagem(); } else { alertaAviso('Aguarde todos os processos concluírem.','form','erro', sessaoId ); } } //Verifica se existe algum processo em andamento, se não executa de forma sincrona. function ajaxJavaScriptSincronoPOST( stPagina, stParametros, stCtrl, sessaoId ) { stCtrl = "&stCtrl="+stCtrl; stLink = stPagina+stCtrl; if( (ifila) == fila.length ) { xmlhttp = new XMLHttpRequest(); imagem(); //Abre a conexão xmlhttp.open("POST",stLink,false); fila[fila.length]=stLink; //meu //Executa xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xmlhttp.send(stParametros.substring(1)); //Recebe var texto=xmlhttp.responseText; //Executa o texto como um javaScript ifila++; // meu executaJavaScript( texto ); //Retira a imagem loading imagem(); } else { alertaAviso('Aguarde todos os processos concluírem.','form','erro', sessaoId ); } } function ajaxJavaScriptSincronoRH( stPagina, stCtrl, inId, sessaoId ) { stCtrl = "&stCtrl="+stCtrl+"&inId="+inId; ajaxJavaScriptSincrono(stPagina,stCtrl,sessaoId); } //parametros padrão para funcionamento da função //stPersistente=TPersistente&stIdCombo=stCodCombo&stCampoId=cod_registro&stCampoDesc=nom_registro //$stPersistente = $_GET['stPersistente'];->Nome da classe persistente, deve ter o prefixo com constante do caminho //$stIdCombo = $_GET['stIdCombo'];->Id do combo a ser preenchido //$stCampoId = $_GET['stCampoId'];->Campo do recordset que deve ser usado com valor do combo //$stCampoDesc = $_GET['stCampoDesc'];->Campo do recordset que deve ser usado na descrição do combo //parametros de filtro //&cod_registro=10&ano_exericicio=2006 //stCtrl= preencher/limpar function preencheComboAjax(stPagina,stParametros,stCtrl ){ stPagina += "&" + stParametros; ajaxJavaScript( stPagina, stCtrl ) }