From d1c37d6684b60cfc4869cc236bf4cdc6138f7c55 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Mon, 28 Jan 2008 11:27:10 +0000 Subject: [PATCH] --- classesjs/atlas.js | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ classesphp/atlas_controle.php | 174 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ classesphp/classe_atlas.php | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ classesphp/classe_mapa.php | 2 +- classesphp/mapa_controle.php | 2 +- imagens/i3geo1.jpg | Bin 2524 -> 0 bytes menutemas/atlas.xml | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ms_configura.php | 9 ++++++++- ms_criamapa.php | 2 ++ 9 files changed, 447 insertions(+), 3 deletions(-) create mode 100644 classesjs/atlas.js create mode 100644 classesphp/atlas_controle.php create mode 100644 classesphp/classe_atlas.php create mode 100644 menutemas/atlas.xml diff --git a/classesjs/atlas.js b/classesjs/atlas.js new file mode 100644 index 0000000..48537b2 --- /dev/null +++ b/classesjs/atlas.js @@ -0,0 +1,75 @@ +/* +Title: Atlas + +Executa as operações da interface Atlas. + +File: i3geo/classesjs/atlas.js + +About: Licença + +I3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet + +Direitos Autorais Reservados (c) 2006 Ministério do Meio Ambiente Brasil +Desenvolvedor: Edmar Moretti edmar.moretti@mma.gov.br + +Este programa é software livre; você pode redistribuí-lo +e/ou modificá-lo sob os termos da Licença Pública Geral +GNU conforme publicada pela Free Software Foundation; +tanto a 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 junto com este programa; se não, escreva para a +Free Software Foundation, Inc., no endereço +59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. +*/ +/* +Function: iniciaAtlas + +Inicializa o Atlas +*/ +function iniciaAtlas() +{ + cpObjAtlas = new cpaint(); + cpObjAtlas.set_async("true"); + cpObjAtlas.set_response_type("JSON"); + pegaListaDeAtlas(); +} +/* +Function: pegaListaDeAtlas + +Pega a lista de Atlas e características principais de cada um. + +*/ +function pegaListaDeAtlas() +{ + var local = document.getElementById("listaAtlas"); + if (local) + { + var monta = function (retorno) + { + var texto = ""; + listaAtlas = retorno.data.atlas; + var i = 0; + do + { + if (listaAtlas[i].ID) + { + texto += "
 "; + texto += listaAtlas[i].TITULO+"
"; + texto += "
"+listaAtlas[i].DESCRICAO+"

"; + } + var i = i + 1; + } + while(listaAtlas[i]) + local.innerHTML = texto; + document.getElementById("tituloinstituicao").innerHTML = retorno.data.tituloinstituicao + } + var p = g_locaplic+"/classesphp/atlas_controle.php?funcao=pegaListaDeAtlas"; + cpObjAtlas.call(p,"pegaListaDeAtlas",monta); + } + else + {alert("Div listaAtlas nao existe");} +} diff --git a/classesphp/atlas_controle.php b/classesphp/atlas_controle.php new file mode 100644 index 0000000..88efda5 --- /dev/null +++ b/classesphp/atlas_controle.php @@ -0,0 +1,174 @@ +pega as variáveis da seção->verifica se o debug deve ser ativado->carrega as extensões doPHP->cria o objeto cpaint->carrega as funções de uso mais comuns->faz uma cópia de segurança do map_file->roda a função desejada->retorna os valores obtidos + +About: Licença + +I3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet + +Direitos Autorais Reservados (c) 2006 Ministério do Meio Ambiente Brasil +Desenvolvedor: Edmar Moretti edmar.moretti@mma.gov.br + +Este programa é software livre; você pode redistribuí-lo +e/ou modificá-lo sob os termos da Licença Pública Geral +GNU conforme publicada pela Free Software Foundation; +tanto a 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 junto com este programa; se não, escreva para a +Free Software Foundation, Inc., no endereço +59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. + +About: Parâmetros + +funcao - opção que será executada. + +Retorno: + +cp - o resultado da operação será retornado em um objeto CPAINT. + +Exemplo de chamada CPAINT (Ajax) do lado do cliente (javascript): + +var p = "classesphp/mapa_controle.php?funcao=crialente&resolucao=1.5&g_sid="+g_sid + +var cp = new cpaint() + +cp.set_response_type("JSON") + +cp.call(p,"lente",ajaxabrelente) + +About: Variáveis de Seção + +dir_tmp - diretório, no servidor, temporário utilizado pelo I3Geo, exemplo: c:/ms4w/tmp/ms_tmp +temasdir - diretório, no servidor, onde ficam os arquivos map_file de cada tema, exemplo: c:/ms4w/apache/htdocs/i3geo/temas +temasaplic - diretório, no servidor, onde ficam os arquivos de inicialização, exemplo: c:\ms4w\apache\htdocs\i3geo\aplicmap +locmapserv - localização, no servidor, do CGI, exemplo: /cgi-bin/mapserv.exe +locaplic - localização, no servidor, do I3Geo, exemplo: c:/ms4w/apache/htdocs/i3geo +locsistemas - localização do xml com a llista de temas, exemplo: /menutemas/sistemas.xml +locidentifica - localilzação do xml que define os sistemas adicionais incluídos na opção de identificação, exemplo: /menutemas/identifica.xml +R_path - localização, no servidor, do executável do pacote R, exemplo: c:/ms4w/apache/htdocs/i3geo/pacotes/r/win/bin/R.exe +imgurl - url das imagens geradas pelo mapa, exemplo: http://localhost/ms_tmp/imgTVHbdijFMk/ +tmpurl - url do diretório temporário, exemplo: http://localhost/ms_tmp/ +map_file - endereço, no servidor, do mapfile atual, exemplo: c:/ms4w/tmp/ms_tmp/TVHbdijFMk/TVHbdijFMk.map +mapext - extensão geográfica do mapa atual, exemplo: -76.5125927 -39.3925675209 -29.5851853 9.49014852081 +perfil - nome do perfil para controlar os temas que serão visíveis na lista de temas. +mapdir - localização, no servidor, do diretório com o mapfile temporário do mapa atual. +imgdir - localização, no servidor, das imagens temporárias do mapa atual. +debug - (pode ser definido como "sim" indica se o erro_reporting deve ser definido como E_ALL + +File: i3geo/classesphp/atlas_controle.php + +19/6/2007 + +Include: +, , , , , + +*/ +error_reporting(0); + +//sleep(5); + +// +//pega as variaveis passadas com get ou post +// +$tempo = microtime(1); +include_once("pega_variaveis.php"); +if (!isset($atlasxml)) +{ + include_once("../ms_configura.php"); + $map_file = ""; +} +else +{ + session_name("i3GeoPHP"); + if (isset($g_sid)) + {session_id($g_sid);} + session_start(); + foreach(array_keys($_SESSION) as $k) + { + eval("\$".$k."='".$_SESSION[$k]."';"); + } +} +if (isset($debug) && $debug == "sim") +{error_reporting(E_ALL);} +// +//ativa o php mapscript e as extensões necessárias +//se as extensões já estiverem carregadas no PHP, vc pode comentar essa linha para que o processamento fique mais rápido +// +include_once ("carrega_ext.php"); +require_once("../classesjs/cpaint/cpaint2.inc.php"); +// +//cria objeto cpaint para uso com ajax +// +$cp = new cpaint(); +if ($funcao == "criaMapa") +{ + session_destroy(); + include("../ms_configura.php"); + chdir($locaplic); + $interface = "mashup"; + include("ms_criamapa.php"); + $cp->set_data(session_id()); + $cp->return_data(); +} +if (!isset($map_file)) +{ + //nesse caso é necessário criar o diretório temporário e iniciar o mapa + $cp->set_data("linkquebrado"); + $cp->return_data(); + exit; +} +require_once("classe_vermultilayer.php"); +require_once("funcoes_gerais.php"); +if ($map_file != "") +{ + // + //copia o map_file atual com outro nome para restaurar caso ocorra algum problema + // + copiaSeguranca($map_file); + // + //substitui a string de conexão + // + substituiCon($map_file,$postgis_mapa); +} +// +//faz a busca da função que deve ser executada +// +switch ($funcao) +{ +/* +Property: pegaListaDeAtlas + +Pega a lista de Atlas definida no arquivo xml menutemas/atlas.xml. + +Include: + +*/ + case "pegaListaDeAtlas": + include("classe_atlas.php"); + $atl = new Atlas($atlasxml); + $resultado = $atl->pegaListaDeAtlas($tituloInstituicao); + $cp->set_data($resultado); + break; +} +if (!connection_aborted()) +{ + restauraCon($map_file,$postgis_mapa); + $cp->return_data(); +} +else +{exit();} +?> \ No newline at end of file diff --git a/classesphp/classe_atlas.php b/classesphp/classe_atlas.php new file mode 100644 index 0000000..e0e3097 --- /dev/null +++ b/classesphp/classe_atlas.php @@ -0,0 +1,79 @@ +arquivo = $atlasxml; + $this->xml = simplexml_load_file($atlasxml); + } +/* +Method: pegaListaDeAtlas + +Pega a lista de atlas existentes e as informações básicas sobre cada um +*/ + function pegaListaDeAtlas($tituloinstituicao) + { + $tituloinstituicao = mb_convert_encoding($tituloinstituicao,"HTML-ENTITIES","auto"); + $atlas = array(); + foreach($this->xml->ATLAS as $s) + { + $id = mb_convert_encoding($s->ID,"HTML-ENTITIES","auto"); + $titulo = mb_convert_encoding($s->TITULO,"HTML-ENTITIES","auto"); + $descricao = mb_convert_encoding($s->DESCRICAO,"HTML-ENTITIES","auto"); + $icone = mb_convert_encoding($s->ICONE,"HTML-ENTITIES","auto"); + $w = mb_convert_encoding($s->WABERTURA,"HTML-ENTITIES","auto"); + $h = mb_convert_encoding($s->HABERTURA,"HTML-ENTITIES","auto"); + $templatehtml = mb_convert_encoding($s->TEMPLATEHTML,"HTML-ENTITIES","auto"); + $atlas[] = array("ID"=>$id,"TITULO"=>$titulo,"DESCRICAO"=>$descricao,"ICONE"=>$icone,"W"=>$w,"H"=>$h,"TEMPLATEHTML"=>$templatehtml); + } + return (array("atlas"=>$atlas,"tituloinstituicao"=>$tituloinstituicao)); + } +} +?> \ No newline at end of file diff --git a/classesphp/classe_mapa.php b/classesphp/classe_mapa.php index 28bef7f..4993813 100644 --- a/classesphp/classe_mapa.php +++ b/classesphp/classe_mapa.php @@ -664,7 +664,7 @@ $locaplic - string Diretório onde fica a aplicação. // //verifica se o tema é um arquivo php // - if (file_exists($locaplic."/temas/".$nome.".php")) + if ((file_exists($locaplic."/temas/".$nome.".php")) || (file_exists($nome.".php"))) {include_once($locaplic."/temas/".$nome.".php");} else { diff --git a/classesphp/mapa_controle.php b/classesphp/mapa_controle.php index 0a4ee53..7103cee 100644 --- a/classesphp/mapa_controle.php +++ b/classesphp/mapa_controle.php @@ -1,6 +1,6 @@ + + + + + + + 0 + + Título do atlas para testes + + Esse é um texto mais longo com a descrição do atlas + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + sim + + + + sim + + + + + + + + + + + + + + + + 1 + Título do segundo atlas para testes + Esse é um texto mais longo com a descrição do atlas - teste 2 + + + + + + + + + + + + + + + + + sim + + + + sim + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ms_configura.php b/ms_configura.php index afef840..0260a9b 100644 --- a/ms_configura.php +++ b/ms_configura.php @@ -49,7 +49,7 @@ $mensagemInicia = "I3Geo versão 3.9"; Nome que será utilizado em alguns cabçalhos e títulos de páginas */ -$tituloInstituicao = "MMA - Ministério do Meio Ambiente"; +$tituloInstituicao = "MMA - Ministério do Meio Ambiente"; if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) { /* @@ -236,6 +236,12 @@ if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) Em alguns casos o uso do cgi torna a aplicação mais rápida. */ $utilizacgi = "sim"; + /* + Variable: $atlasxml + + Indica o nome do arquivo xml que será utilizado na interface Atlas do i3geo. + */ + $atlasxml = "http://localhost/i3geo/menutemas/atlas.xml"; } else //se for linux { @@ -259,5 +265,6 @@ else //se for linux */ $menutemas = ""; $utilizacgi = "sim"; + $atlasxml = "http://mapas.mma.gov.br/i3geo/menutemas/atlas.xml"; } ?> diff --git a/ms_criamapa.php b/ms_criamapa.php index f80778c..e5bdb4b 100644 --- a/ms_criamapa.php +++ b/ms_criamapa.php @@ -138,6 +138,7 @@ $debug_ = $debug; $ler_extensoes_ = $ler_extensoes; $postgis_mapa_ = $postgis_mapa; $tituloInstituicao_ = $tituloInstituicao; +$atlasxml_ = $atlasxml; // //se houver string de conexão para substituição //o modo cgi não irá funcionar @@ -193,6 +194,7 @@ $_SESSION["perfil"] = $perfil_; $_SESSION["navegadoresLocais"] = $navegadoresLocais_; $_SESSION["utilizacgi"] = $utilizacgi_; $_SESSION["tituloInstituicao"] = $tituloInstituicao_; +$_SESSION["atlasxml"] = $atlasxml; // //pega todas as variáveis da sessão, mesmo as que foram definidas anteriormente // -- libgit2 0.21.2