From 429d657e97ebc9d3a1ac5bba98d7a13f3ce5d2cb Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Thu, 18 Nov 2010 17:08:03 +0000 Subject: [PATCH] Inclusão de opção para atualizar ou criar a miniatura de um tema no sistema de administração --- admin/js/listatemas.js | 23 ++++++++++++++++++++++- admin/php/menutemas.php | 32 ++++++++++++++++++++++++++------ classesphp/funcoes_gerais.php | 13 +++++++++---- geraminiatura.php | 149 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------- temas/miniaturas/4b27aa09_1350_2.img.tmp | 0 temas/miniaturas/biomashp.map.grande.png | Bin 10269 -> 0 bytes temas/miniaturas/biomashp.map.mini.png | Bin 1881 -> 0 bytes 7 files changed, 151 insertions(+), 66 deletions(-) delete mode 100644 temas/miniaturas/4b27aa09_1350_2.img.tmp diff --git a/admin/js/listatemas.js b/admin/js/listatemas.js index 485dfb9..edfde5e 100644 --- a/admin/js/listatemas.js +++ b/admin/js/listatemas.js @@ -109,11 +109,32 @@ function montaDivTemas(i) ins += "

Permite acesso via kmz (kml com dados vetoriais)?
" ins += "




" + ins += "

" + + ins += "

Atualiza ou cria a miniatura
"; + ins += "



"; + ins += "" return(ins) } +function atualizaMiniatura(){ + $i("imagemMiniatura").src = "../../imagens/aguarde.gif"; + var tema = $i("codigo_tema").value; + var sUrl = "../php/menutemas.php?funcao=atualizaMiniatura&tema="+tema; + var callback = + { + success:function(o) + { + try + {$i("imagemMiniatura").src = "../../temas/miniaturas/"+tema+".map.grande.png";} + catch(e){core_handleFailure(e,o.responseText);} + }, + failure:core_handleFailure, + argument: { foo:"foo", bar:"bar" } + }; + core_makeRequest(sUrl,callback,"GET") +} function gravaDadosTema(id) { //validacao diff --git a/admin/php/menutemas.php b/admin/php/menutemas.php index e8323df..1102a79 100644 --- a/admin/php/menutemas.php +++ b/admin/php/menutemas.php @@ -60,12 +60,6 @@ switch (strtoupper($funcao)) retornaJSON(verificaEditores($editores)); exit; break; - case "IMPORTARXMLMENU": - if(verificaEditores($editores) == "nao") - {echo "Vc nao e um editor cadastrado. Apenas os editores definidos em i3geo/ms_configura.php podem acessar o sistema de administracao.";exit;} - retornaJSON(importarXmlMenu()); - exit; - break; /* Valor: PEGAMENUS @@ -364,6 +358,10 @@ switch (strtoupper($funcao)) registraTema(); $dados = pegaDados($sql); } + $imagem = ""; + if(file_exists($locaplic."/temas/miniaturas/".$codigo_tema.".map.grande.png")) + {$imagem = $codigo_tema.".map.grande.png";} + $dados[0]["imagem"] = $imagem; if(is_array($dados) && count($dados) > 1) {$dados = "erro. Mais de um mapfile com mesmo código registrado no banco";} retornaJSON($dados); @@ -383,6 +381,21 @@ switch (strtoupper($funcao)) exit; break; /* + Valor: ATUALIZAMINIATURA + + Atualiza as imagens das miniaturas de um tema + + Retorno: + + {JSON} + */ + case "ATUALIZAMINIATURA": + if(verificaEditores($editores) == "nao") + {echo "Vc nao e um editor cadastrado. Apenas os editores definidos em i3geo/ms_configura.php podem acessar o sistema de administracao.";exit;} + retornaJSON(atualizaMiniatura($tema)); + exit; + break; + /* Valor: ALTERATEMAS Altera os dados de um tema @@ -1163,4 +1176,11 @@ function removeCabecalho($arq,$symbolset=true) fclose($handle); chmod($arq, 0666); } +function atualizaMiniatura(){ + global $tema,$locaplic; + include_once("../../classesphp/funcoes_gerais.php"); + require("../../geraminiatura.php"); + verificaMiniatura($tema,"todos",true); + exit; +} ?> \ No newline at end of file diff --git a/classesphp/funcoes_gerais.php b/classesphp/funcoes_gerais.php index 7778f18..782251f 100644 --- a/classesphp/funcoes_gerais.php +++ b/classesphp/funcoes_gerais.php @@ -2267,14 +2267,19 @@ Retorno: {objeto} layer modificado */ -function autoClasses(&$nlayer,$mapa) +function autoClasses(&$nlayer,$mapa,$locaplic=null) { $postgis_mapa = ""; $substituicon = "nao"; - if(file_exists("ms_configura.php")) - include_once("ms_configura.php"); + if(!isset($locaplic)) + { + if(file_exists("ms_configura.php")) + include_once("ms_configura.php"); + else + include_once("../ms_configura.php"); + } else - include_once("../ms_configura.php"); + {include_once("$locaplic/ms_configura.php");} if ($nlayer->connectiontype == MS_POSTGIS) { if ($nlayer->connection == " ") diff --git a/geraminiatura.php b/geraminiatura.php index 3b039a2..9c0b743 100644 --- a/geraminiatura.php +++ b/geraminiatura.php @@ -4,13 +4,14 @@ Title: geraminiatura.php Gera as miniaturas dos mapas baseado nos mapfiles existentes em i3geo/temas. As miniaturas são utilizadas no i3geo na guia temas para mostrar um preview de cada tema. -As imagens são armazenadas no diretório temporário do i3geo e devem ser movidas para o diretório i3geo/temas/miniaturas +Por padrão, as imagens são armazenadas no diretório temporário do i3geo e devem ser movidas para o diretório i3geo/temas/miniaturas para poderem ser utilizadas. O programa verifica se a miniatura já existe no diretório temas/miniaturas e gera apenas as que faltarem. +É utilizado também como um include pelo sistema de administração, permitindo armazenar as miniaturas no local correto. Licenca: -I3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet +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 @@ -43,10 +44,6 @@ tipo - tipo de retorno mini|grande|todos error_reporting(E_ALL); set_time_limit(300); ini_set('max_execution_time', 300); -include("ms_configura.php"); -include("classesphp/funcoes_gerais.php"); -require_once("classesphp/pega_variaveis.php"); -include_once ("classesphp/carrega_ext.php"); // //carrega o phpmapscript // @@ -60,46 +57,63 @@ if (!function_exists('ms_GetVersion')) else {dl('php_mapscript.so');} } -ms_ResetErrorList(); -if (!isset($tipo)) -{ - echo "Utilize geraminiatura.php?tipo=mini ou grande ou todos. As imagens são armazenadas no diretório temporário."; - echo "
Após geradas as imagens, copie os arquivos para o diretório i3geo/temas/miniaturas."; - echo "
As miniaturas são geradas apenas para os arquivos que ainda não existem no diretório temas/miniaturas."; - echo "
Gerar todas as miniaturas"; - echo "
Gerar apenas as pequenas"; - echo "
Gerar apenas as grandes"; - exit; -} -$arqs = listaArquivos("temas"); -foreach ($arqs["arquivos"] as $arq) +// +//no caso do programa ser utilizado via URL +// +if(!isset($tipo)) +{$tipo = "";} +if($tipo == "mini" || $tipo == "todos" || $tipo == "grande") { - $temp = explode(".",$arq); - if($temp[(count($temp) - 1)] == "map") + ms_ResetErrorList(); + if (!isset($tipo)) { - if($tipo == "mini" || $tipo == "todos") - {if(!file_exists('temas/miniaturas/'.$arq.'.mini.png')){echo "
".$arq."
";verifica($arq,"mini");}} - if($tipo == "grande" || $tipo == "todos") - {if(!file_exists('temas/miniaturas/'.$arq.'.grande.png')){echo "
".$arq."
";verifica($arq,"grande");}} + echo "Utilize geraminiatura.php?tipo=mini ou grande ou todos. As imagens são armazenadas no diretório temporário."; + echo "
Após geradas as imagens, copie os arquivos para o diretório i3geo/temas/miniaturas."; + echo "
As miniaturas são geradas apenas para os arquivos que ainda não existem no diretório temas/miniaturas."; + echo "
Gerar todas as miniaturas"; + echo "
Gerar apenas as pequenas"; + echo "
Gerar apenas as grandes"; + exit; + } + + include("ms_configura.php"); + include("classesphp/funcoes_gerais.php"); + require_once("classesphp/pega_variaveis.php"); + include_once ("classesphp/carrega_ext.php"); + $arqs = listaArquivos("temas"); + foreach ($arqs["arquivos"] as $arq) + { + $temp = explode(".",$arq); + if($temp[(count($temp) - 1)] == "map") + { + if($tipo == "mini" || $tipo == "todos") + {if(!file_exists('temas/miniaturas/'.$arq.'.mini.png')){echo "
".$arq."
";verificaMiniatura($arq,"mini");}} + if($tipo == "grande" || $tipo == "todos") + {if(!file_exists('temas/miniaturas/'.$arq.'.grande.png')){echo "
".$arq."
";verificaMiniatura($arq,"grande");}} + } } } -function verifica($map,$tipo) +// +//se tipo for igual a "admin", as imagens são gravadas em i3geo/temas/miniaturas +// +function verificaMiniatura($map,$tipo,$admin=false) { global $locaplic; ms_ResetErrorList(); + error_reporting(E_ALL); $tema = ""; $map = str_replace("\\","/",$map); $map = basename($map); - if (file_exists('temas/'.$map)) - {$tema = 'temas/'.$map;} - if (file_exists('temas/'.$map.'.map')) - {$tema = 'temas/'.$map.".map";} + if (file_exists($locaplic.'/temas/'.$map)) + {$tema = $locaplic.'/temas/'.$map;} + if (file_exists($locaplic.'/temas/'.$map.'.map')) + {$tema = $locaplic.'/temas/'.$map.".map";} if ($tema != "") { if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) - {$mapa = ms_newMapObj("aplicmap/geral1windows.map");} + {$mapa = ms_newMapObj("$locaplic/aplicmap/geral1windows.map");} else - {$mapa = ms_newMapObj("aplicmap/geral1.map");} + {$mapa = ms_newMapObj("$locaplic/aplicmap/geral1.map");} if(@ms_newMapObj($tema)) {$nmapa = ms_newMapObj($tema);} else @@ -114,7 +128,7 @@ function verifica($map,$tipo) $layern = $nmapa->getLayerByName($teman); $layern->set("status",MS_DEFAULT); ms_newLayerObj($mapa, $layern); - autoClasses(&$layern,$mapa); + autoClasses(&$layern,$mapa,$locaplic); if ($layern->data == "") $dados = $layern->connection; else @@ -139,40 +153,65 @@ function verifica($map,$tipo) } } } - zoomTema($pegarext,&$mapa); - if ($tipo == "mini") + zoomTemaMiniatura($pegarext,&$mapa); + if ($tipo == "mini" || $tipo == "todos") { - $mapa->setsize(50,50); - $sca = $mapa->scalebar; - $sca->set("status",MS_OFF); + $mapa->setsize(50,50); + $sca = $mapa->scalebar; + $sca->set("status",MS_OFF); + $objImagemM = @$mapa->draw(); + if (!$objImagemM) + {echo "Problemas ao gerar o mapa
";return;} + $weboM = $mapa->web; + $urlM = $weboM->imageurl."/".$map; } - if ($tipo == "grande") + if ($tipo == "grande" || $tipo == "todos") { - $mapa->setsize(300,300); - $sca = $mapa->scalebar; - $sca->set("status",MS_OFF); + $mapa->setsize(300,300); + $sca = $mapa->scalebar; + $sca->set("status",MS_OFF); + $objImagemG = @$mapa->draw(); + if (!$objImagemG) + {echo "Problemas ao gerar o mapa
";return;} + $weboG = $mapa->web; + $urlG = $weboG->imageurl."/".$map; } - $objImagem = @$mapa->draw(); - $webo = $mapa->web; - $url = $webo->imageurl."/".$map; - - if (!$objImagem) - {echo "Problemas ao gerar o mapa
";return;} if($tipo=="mini" || $tipo == "todos") { - $nomec = ($objImagem->imagepath).$map.".mini.png"; - echo "

"; + $nomecM = ($objImagemM->imagepath).$map.".mini.png"; + $objImagemM->saveImage($nomecM); } if($tipo=="grande" || $tipo == "todos") { - $nomec = ($objImagem->imagepath).$map.".grande.png"; - echo "

"; + $nomecG = ($objImagemG->imagepath).$map.".grande.png"; + $objImagemG->saveImage($nomecG); + } + + if($admin == false) + { + if($tipo=="mini" || $tipo == "todos") + {echo "

";} + if($tipo=="grande" || $tipo == "todos") + {echo "

";} + } + // + //copia a imagem + // + if($admin == true) + { + $dir = $locaplic."/temas/miniaturas"; + $mini = $dir."/".$map.".map.mini.png"; + $grande = $dir."/".$map.".map.grande.png"; + if(file_exists($mini)) + {unlink($mini);} + if(file_exists($grande)) + {unlink($grande);} + copy(($objImagemG->imagepath).$map.".grande.png",$grande); + copy(($objImagemM->imagepath).$map.".mini.png",$mini); } - $objImagem->saveImage($nomec); - //$objImagem->free(); } } -function zoomTema($nomelayer,&$mapa) +function zoomTemaMiniatura($nomelayer,&$mapa) { $layer = $mapa->getlayerbyname($nomelayer); if($layer->type > 2) diff --git a/temas/miniaturas/4b27aa09_1350_2.img.tmp b/temas/miniaturas/4b27aa09_1350_2.img.tmp deleted file mode 100644 index e69de29..0000000 --- a/temas/miniaturas/4b27aa09_1350_2.img.tmp +++ /dev/null diff --git a/temas/miniaturas/biomashp.map.grande.png b/temas/miniaturas/biomashp.map.grande.png index a4ebe58..02d8d28 100644 Binary files a/temas/miniaturas/biomashp.map.grande.png and b/temas/miniaturas/biomashp.map.grande.png differ diff --git a/temas/miniaturas/biomashp.map.mini.png b/temas/miniaturas/biomashp.map.mini.png index 41478b1..397f5ca 100644 Binary files a/temas/miniaturas/biomashp.map.mini.png and b/temas/miniaturas/biomashp.map.mini.png differ -- libgit2 0.21.2