Commit 6c64b69b888ac8ec6d79dafa3ec7dd00f52365b6

Authored by Edmar Moretti
1 parent 1c78df8d

Nova opção para salvar um layer diretamente da árvore de camadas. Essa opção só …

…fica ativa para usuários editores
admin/admin.db
No preview for this file type
admin/imagens/limparcache.png 0 → 100644

894 Bytes

admin/php/editormapfile.php
@@ -92,7 +92,7 @@ switch (strtoupper($funcao)) @@ -92,7 +92,7 @@ switch (strtoupper($funcao))
92 {JSON} 92 {JSON}
93 */ 93 */
94 case "EDITASIMBOLO": 94 case "EDITASIMBOLO":
95 - include_once("../../classesphp/classe_legenda.php"); 95 + include_once("$locaplic/classesphp/classe_legenda.php");
96 if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) 96 if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN'))
97 {$map_file = $locaplic."/aplicmap/geral1windows.map";} 97 {$map_file = $locaplic."/aplicmap/geral1windows.map";}
98 else 98 else
@@ -203,7 +203,7 @@ switch (strtoupper($funcao)) @@ -203,7 +203,7 @@ switch (strtoupper($funcao))
203 } 203 }
204 else 204 else
205 { 205 {
206 - unlink("../../temas/".$codigoMap.".map"); 206 + unlink("$locaplic/temas/".$codigoMap.".map");
207 $tabela = "i3geoadmin_temas"; 207 $tabela = "i3geoadmin_temas";
208 exclui(); 208 exclui();
209 retornaJSON("ok"); 209 retornaJSON("ok");
@@ -211,6 +211,29 @@ switch (strtoupper($funcao)) @@ -211,6 +211,29 @@ switch (strtoupper($funcao))
211 } 211 }
212 break; 212 break;
213 /* 213 /*
  214 + Valor: REFAZERLAYER
  215 +
  216 + Altera um layer existente em um mapfile com base em um layer existente em outro mapfile
  217 +
  218 + Parametros:
  219 +
  220 + codigomap {string} - nome do mapfile existente em i3geo/temas que será atualizado (sem .map)
  221 +
  222 + maporigem {string} - nome completo do arquivo mapfile que contem o layer que será utilizado para alterar o original
  223 +
  224 + nomelayer {string} - código do layer em mapfile que será utilizado para atualizar codigoMap
  225 +
  226 + Retorno:
  227 +
  228 + {JSON}
  229 + */
  230 + case "REFAZERLAYER":
  231 + if(verificaEditores($editores) == "nao")
  232 + {echo "Vc nao e um editor cadastrado. Apenas os editores definidos em i3geo/ms_configura.php podem acessar o sistema de administracao.";exit;}
  233 + retornaJSON(refazerLayer());
  234 + exit;
  235 + break;
  236 + /*
214 Valor: CRIARNOVOLAYER 237 Valor: CRIARNOVOLAYER
215 238
216 Cria um novo layer em um mapfile 239 Cria um novo layer em um mapfile
@@ -911,6 +934,26 @@ switch (strtoupper($funcao)) @@ -911,6 +934,26 @@ switch (strtoupper($funcao))
911 exit; 934 exit;
912 break; 935 break;
913 } 936 }
  937 +function refazerLayer()
  938 +{
  939 + global $nomelayer, $codigomap, $maporigem, $locaplic;
  940 + error_reporting(E_ALL);
  941 + $mapa = ms_newMapObj($maporigem);
  942 + $arqtema = $locaplic."/temas/".$codigomap.".map";
  943 + $mapatema = ms_newMapObj($arqtema);
  944 + $layeroriginal = @$mapatema->getlayerbyname($codigomap);
  945 + $layernovo = @$mapa->getlayerbyname($nomelayer);
  946 + if($layeroriginal != "" && $layernovo != "")
  947 + {
  948 + $layeroriginal->set("status",MS_DELETE);
  949 + $nl = ms_newLayerObj($mapatema,$layernovo);
  950 + $nl->set("name",$codigomap);
  951 + $mapatema->save($arqtema);
  952 + removeCabecalho($arqtema);
  953 + return array("data"=>"ok");
  954 + }
  955 + return "erro";
  956 +}
914 function sobeDesce() 957 function sobeDesce()
915 { 958 {
916 global $movimento,$tipo,$codigoMap,$codigoLayer,$indiceClasse,$indiceEstilo,$locaplic; 959 global $movimento,$tipo,$codigoMap,$codigoLayer,$indiceClasse,$indiceEstilo,$locaplic;
@@ -997,7 +1040,7 @@ function criarNovoMap() @@ -997,7 +1040,7 @@ function criarNovoMap()
997 function criarNovoLayer() 1040 function criarNovoLayer()
998 { 1041 {
999 global $locaplic,$codigoMap; 1042 global $locaplic,$codigoMap;
1000 - include_once("../../classesphp/funcoes_gerais.php"); 1043 + include_once("$locaplic/classesphp/funcoes_gerais.php");
1001 $mapfile = $locaplic."/temas/".$codigoMap.".map"; 1044 $mapfile = $locaplic."/temas/".$codigoMap.".map";
1002 $mapa = ms_newMapObj($mapfile); 1045 $mapa = ms_newMapObj($mapfile);
1003 $nl = ms_newLayerObj($mapa); 1046 $nl = ms_newLayerObj($mapa);
@@ -1011,7 +1054,7 @@ function autoClassesLayer() @@ -1011,7 +1054,7 @@ function autoClassesLayer()
1011 { 1054 {
1012 global $codigoMap,$codigoLayer,$itemExpressao,$itemNome,$locaplic,$dir_tmp; 1055 global $codigoMap,$codigoLayer,$itemExpressao,$itemNome,$locaplic,$dir_tmp;
1013 $mapfile = $locaplic."/temas/".$codigoMap.".map"; 1056 $mapfile = $locaplic."/temas/".$codigoMap.".map";
1014 - include_once("../../classesphp/classe_alteraclasse.php"); 1057 + include_once("$locaplic/classesphp/classe_alteraclasse.php");
1015 error_reporting(0); 1058 error_reporting(0);
1016 $nometemp = $dir_tmp."/".nomerandomico().".map"; 1059 $nometemp = $dir_tmp."/".nomerandomico().".map";
1017 if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) 1060 if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN'))
classesjs/dicionario_ajuda.js
@@ -778,6 +778,14 @@ g_traducao_ajuda = { @@ -778,6 +778,14 @@ g_traducao_ajuda = {
778 pt:"Aplica um arquivo XML, no formato SLD, ao tema ativo.", 778 pt:"Aplica um arquivo XML, no formato SLD, ao tema ativo.",
779 complemento:"SLD é um formato padrão que permite definir filtros e simbologia. Vários softwraes permitem criar arquivos nesse padrão.", 779 complemento:"SLD é um formato padrão que permite definir filtros e simbologia. Vários softwraes permitem criar arquivos nesse padrão.",
780 apijs:"i3GEO.tema.dialogo.aplicarsld()" 780 apijs:"i3GEO.tema.dialogo.aplicarsld()"
  781 + },
  782 + "92": {
  783 + titulo: "Aplicar SLD",
  784 + diretorio:"i3geo/ferramentas/salvamapfile",
  785 + categoria:"5",
  786 + pt:"Salva as definições da camada no arquivo mapfile de origem",
  787 + complemento:"Essa opção só é ativada para usuários que são administradores. Permite que a camada seja alterada, por exemplo, modificando-se a legenda, e que o resultado seja salvo nas definições originais da camada.",
  788 + apijs:"i3GEO.tema.dialogo.salvaMapfile()"
781 } 789 }
782 } 790 }
783 }; 791 };
classesphp/classe_temas.php
@@ -1030,6 +1030,20 @@ Retorna o SLD correspondente à legenda do tema. @@ -1030,6 +1030,20 @@ Retorna o SLD correspondente à legenda do tema.
1030 return $this->layer->generateSLD(); 1030 return $this->layer->generateSLD();
1031 } 1031 }
1032 /* 1032 /*
  1033 +function: peganomelayer
  1034 +
  1035 +Retorna o nome do layer e outros dados relacionados
  1036 +*/
  1037 + function peganomelayer()
  1038 + {
  1039 + if(!$this->layer){return "erro";}
  1040 + $nomeoriginal = $this->layer->getmetadata("nomeoriginal");
  1041 + $nomearquivo = $this->locaplic."/temas/".$nomeoriginal;
  1042 + if(!file_exists($nomearquivo))
  1043 + {$nomearquivo = "";}
  1044 + return array("mapfile"=>$this->arquivo,"nomeoriginal"=>$nomeoriginal,"nomelayer"=>$this->layer->name,"nomearquivo"=>$nomearquivo);
  1045 + }
  1046 +/*
1033 function: pegadata 1047 function: pegadata
1034 1048
1035 Retorna o valor do elemento DATA 1049 Retorna o valor do elemento DATA
ferramentas/salvamapfile/index.js.php 0 → 100644
@@ -0,0 +1,147 @@ @@ -0,0 +1,147 @@
  1 +<?php error_reporting(0);if(extension_loaded('zlib')){ob_start('ob_gzhandler');} header("Content-type: text/javascript"); ?>
  2 +/*jslint plusplus:false,white:false,undef: false, rhino: true, onevar: true, evil: true */
  3 +
  4 +/*
  5 +Title: Salva as definições de uma camada no arquivo mapfile correspondente
  6 +
  7 +Veja:
  8 +
  9 +<i3GEO.tema.dialogo.salvamapfile>
  10 +
  11 +Arquivo:
  12 +
  13 +i3geo/ferramentas/salvamapfile/index.js.php
  14 +
  15 +Licenca:
  16 +
  17 +GPL2
  18 +
  19 +i3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet
  20 +
  21 +Direitos Autorais Reservados (c) 2006 Ministério do Meio Ambiente Brasil
  22 +Desenvolvedor: Edmar Moretti edmar.moretti@mma.gov.br
  23 +
  24 +Este programa é software livre; você pode redistribuí-lo
  25 +e/ou modificá-lo sob os termos da Licença Pública Geral
  26 +GNU conforme publicada pela Free Software Foundation;
  27 +
  28 +Este programa é distribuído na expectativa de que seja útil,
  29 +porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita
  30 +de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA.
  31 +Consulte a Licença Pública Geral do GNU para mais detalhes.
  32 +Você deve ter recebido uma cópia da Licença Pública Geral do
  33 +GNU junto com este programa; se não, escreva para a
  34 +Free Software Foundation, Inc., no endereço
  35 +59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
  36 +*/
  37 +if(typeof(i3GEOF) === 'undefined'){
  38 + i3GEOF = [];
  39 +}
  40 +/*
  41 +Classe: i3GEOF.salvamapfile
  42 +*/
  43 +i3GEOF.salvamapfile = {
  44 + /*
  45 + Variavel: aguarde
  46 +
  47 + Estilo do objeto DOM com a imagem de aguarde existente no cabeçalho da janela.
  48 + */
  49 + aguarde: "",
  50 + /*
  51 + Variavel: tema
  52 +
  53 + código do tema
  54 + */
  55 + tema: i3GEO.temaAtivo,
  56 + /*
  57 + Function: inicia
  58 +
  59 + Inicia a ferramenta. É chamado por criaJanelaFlutuante
  60 +
  61 + Parametro:
  62 +
  63 + iddiv {String} - id do div que receberá o conteudo HTML da ferramenta
  64 + */
  65 + inicia: function(iddiv){
  66 + try{
  67 + i3GEOF.salvamapfile.aguarde.visibility = "visible";
  68 + var p = i3GEO.configura.locaplic+"/classesphp/mapa_controle.php?g_sid="+i3GEO.configura.sid+"&funcao=peganomelayer&tema="+i3GEOF.salvamapfile.tema,
  69 + cp = new cpaint(),
  70 + retorno = function(retorno){
  71 + i3GEOF.salvamapfile.aguarde.visibility = "hidden";
  72 + var nome = retorno.data.nomeoriginal;
  73 + if(nome == "")
  74 + {
  75 + $i(iddiv).innerHTML = "<p class=paragrafo >Não existe um arquivo mapfile em i3geo/temas já criado para essa camada. Utilize o sistema de admnistração para <a href='"+i3GEO.configura.locaplic+"/admin/html/editormapfile.html' target=_blank >criar um</a>"
  76 + }
  77 + else
  78 + {
  79 + var ins = "<p class=paragrafo >O tema ativo possui um mapfile já criado. Ao salvar, as definições originais de legenda, filtros e outras, serão substituídas pelas atuais</p>" +
  80 + '<br><br><p class=paragrafo ><input size=20 id=i3GEOsalvamapfilebotao1 type=button value="Salvar" />&nbsp;&nbsp;<input size=20 id=i3GEOsalvamapfilebotao2 type=button value="Testar" />';
  81 + $i(iddiv).innerHTML = ins;
  82 + new YAHOO.widget.Button(
  83 + "i3GEOsalvamapfilebotao1",
  84 + {onclick:{fn: function(){i3GEOF.salvamapfile.salva(nome,retorno.data.mapfile,retorno.data.nomelayer);}}}
  85 + );
  86 + new YAHOO.widget.Button(
  87 + "i3GEOsalvamapfilebotao2",
  88 + {onclick:{fn: function(){window.open(i3GEO.configura.locaplic+"/testamapfile.php?map="+nome);}}}
  89 + );
  90 + }
  91 + };
  92 + cp.set_response_type("JSON");
  93 + cp.call(p,"",retorno);
  94 + }
  95 + catch(erro){alert(erro);}
  96 + },
  97 + /*
  98 + Function: criaJanelaFlutuante
  99 +
  100 + Cria a janela flutuante para controle da ferramenta.
  101 + */
  102 + criaJanelaFlutuante: function(){
  103 + var janela,divid,temp,titulo,cabecalho,minimiza;
  104 + cabecalho = function(){};
  105 + minimiza = function(){
  106 + i3GEO.janela.minimiza("i3GEOF.salvamapfile");
  107 + };
  108 + //cria a janela flutuante
  109 + titulo = "Salva o tema "+i3GEO.temaAtivo+" <a class=ajuda_usuario target=_blank href='" + i3GEO.configura.locaplic + "/ajuda_usuario.php?idcategoria=5&idajuda=92' >&nbsp;&nbsp;&nbsp;</a>";
  110 + janela = i3GEO.janela.cria(
  111 + "300px",
  112 + "150px",
  113 + "",
  114 + "",
  115 + "",
  116 + titulo,
  117 + "i3GEOF.salvamapfile",
  118 + false,
  119 + "hd",
  120 + cabecalho,
  121 + minimiza
  122 + );
  123 + divid = janela[2].id;
  124 + $i("i3GEOF.salvamapfile_corpo").style.backgroundColor = "white";
  125 + $i("i3GEOF.salvamapfile_corpo").style.textAlign = "left";
  126 + i3GEOF.salvamapfile.aguarde = $i("i3GEOF.salvamapfile_imagemCabecalho").style;
  127 + i3GEOF.salvamapfile.inicia(divid);
  128 + },
  129 + /*
  130 + Function: salva
  131 +
  132 + Salva o mapfile
  133 + */
  134 + salva: function(nome,mapfile,nomelayer){
  135 + if(i3GEOF.salvamapfile.aguarde.visibility === "visible")
  136 + {return;}
  137 + i3GEOF.salvamapfile.aguarde.visibility = "visible";
  138 + var temp = function(){
  139 + i3GEOF.salvamapfile.aguarde.visibility = "hidden";
  140 + },
  141 + p = i3GEO.configura.locaplic+"/admin/php/editormapfile.php?funcao=REFAZERLAYER&codigomap="+nome+"&maporigem="+mapfile+"&nomelayer="+nomelayer,
  142 + cp = new cpaint();
  143 + cp.set_response_type("JSON");
  144 + cp.call(p,"",temp);
  145 + }
  146 +};
  147 +<?php error_reporting(0);if(extension_loaded('zlib')){ob_end_flush();}?>
0 \ No newline at end of file 148 \ No newline at end of file
temas/biomashp.map
1 MAP 1 MAP
2 - FONTSET "c:\ms4w\apache\htdocs\i3geo/symbols/fontes.txt"  
3 - SYMBOLSET "c:\ms4w\apache\htdocs\i3geo/symbols/simbolos.sym" 2 + FONTSET "c:\ms4w\apache\htdocs\i3geo/symbols/fontes.txt"
  3 + SYMBOLSET "c:\ms4w\apache\htdocs\i3geo/symbols/simbolos.sym"
4 LAYER 4 LAYER
5 CONNECTION "" 5 CONNECTION ""
6 DATA "c:\ms4w\apache\htdocs\geodados\brasil\vegetacao\biomas.shp" 6 DATA "c:\ms4w\apache\htdocs\geodados\brasil\vegetacao\biomas.shp"
@@ -19,6 +19,7 @@ MAP @@ -19,6 +19,7 @@ MAP
19 "ltempoitemtitulo" "" 19 "ltempoitemtitulo" ""
20 "ltempoitemlink" "" 20 "ltempoitemlink" ""
21 "palletefile" "" 21 "palletefile" ""
  22 + "nomeoriginal" "biomashp"
22 "permitedownload" "sim" 23 "permitedownload" "sim"
23 "ltempoformatodata" "" 24 "ltempoformatodata" ""
24 "ltempoitemicone" "" 25 "ltempoitemicone" ""
@@ -31,69 +32,69 @@ MAP @@ -31,69 +32,69 @@ MAP
31 "ltempoitemfim" "" 32 "ltempoitemfim" ""
32 END 33 END
33 NAME "biomashp" 34 NAME "biomashp"
34 - STATUS OFF 35 + STATUS DEFAULT
35 TEMPLATE "none.htm" 36 TEMPLATE "none.htm"
36 OPACITY 50 37 OPACITY 50
37 TYPE POLYGON 38 TYPE POLYGON
38 UNITS METERS 39 UNITS METERS
39 CLASS 40 CLASS
40 NAME "CAATINGA" 41 NAME "CAATINGA"
41 - EXPRESSION ('[ID]'eq'2.00') 42 + EXPRESSION ('[CD_LEGENDA]'eq'CAATINGA')
42 STYLE 43 STYLE
43 ANGLE 360 44 ANGLE 360
44 - COLOR 138 134 150  
45 - OPACITY 100 45 + COLOR 214 54 97
46 SYMBOL 0 46 SYMBOL 0
  47 + WIDTH 1
47 END 48 END
48 END 49 END
49 CLASS 50 CLASS
50 NAME "PAMPA" 51 NAME "PAMPA"
51 - EXPRESSION ('[ID]'eq'5.00') 52 + EXPRESSION ('[CD_LEGENDA]'eq'PAMPA')
52 STYLE 53 STYLE
53 ANGLE 360 54 ANGLE 360
54 - COLOR 105 219 217  
55 - OPACITY 100 55 + COLOR 127 191 202
56 SYMBOL 0 56 SYMBOL 0
  57 + WIDTH 1
57 END 58 END
58 END 59 END
59 CLASS 60 CLASS
60 NAME "CERRADO" 61 NAME "CERRADO"
61 - EXPRESSION ('[ID]'eq'3.00') 62 + EXPRESSION ('[CD_LEGENDA]'eq'CERRADO')
62 STYLE 63 STYLE
63 ANGLE 360 64 ANGLE 360
64 - COLOR 186 52 176  
65 - OPACITY 100 65 + COLOR 244 126 198
66 SYMBOL 0 66 SYMBOL 0
  67 + WIDTH 1
67 END 68 END
68 END 69 END
69 CLASS 70 CLASS
70 NAME "PANTANAL" 71 NAME "PANTANAL"
71 - EXPRESSION ('[ID]'eq'6.00') 72 + EXPRESSION ('[CD_LEGENDA]'eq'PANTANAL')
72 STYLE 73 STYLE
73 ANGLE 360 74 ANGLE 360
74 - COLOR 125 128 2  
75 - OPACITY 100 75 + COLOR 146 148 168
76 SYMBOL 0 76 SYMBOL 0
  77 + WIDTH 1
77 END 78 END
78 END 79 END
79 CLASS 80 CLASS
80 NAME "AMAZONIA" 81 NAME "AMAZONIA"
81 - EXPRESSION ('[ID]'eq'1.00') 82 + EXPRESSION ('[CD_LEGENDA]'eq'AMAZONIA')
82 STYLE 83 STYLE
83 ANGLE 360 84 ANGLE 360
84 - COLOR 129 234 3  
85 - OPACITY 100 85 + COLOR 195 147 81
86 SYMBOL 0 86 SYMBOL 0
  87 + WIDTH 1
87 END 88 END
88 END 89 END
89 CLASS 90 CLASS
90 NAME "MATA ATLANTICA" 91 NAME "MATA ATLANTICA"
91 - EXPRESSION ('[ID]'eq'4.00') 92 + EXPRESSION ('[CD_LEGENDA]'eq'MATA ATLANTICA')
92 STYLE 93 STYLE
93 ANGLE 360 94 ANGLE 360
94 - COLOR 159 226 219  
95 - OPACITY 100 95 + COLOR 240 245 39
96 SYMBOL 0 96 SYMBOL 0
  97 + WIDTH 1
97 END 98 END
98 END 99 END
99 END 100 END