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 92 {JSON}
93 93 */
94 94 case "EDITASIMBOLO":
95   - include_once("../../classesphp/classe_legenda.php");
  95 + include_once("$locaplic/classesphp/classe_legenda.php");
96 96 if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN'))
97 97 {$map_file = $locaplic."/aplicmap/geral1windows.map";}
98 98 else
... ... @@ -203,7 +203,7 @@ switch (strtoupper($funcao))
203 203 }
204 204 else
205 205 {
206   - unlink("../../temas/".$codigoMap.".map");
  206 + unlink("$locaplic/temas/".$codigoMap.".map");
207 207 $tabela = "i3geoadmin_temas";
208 208 exclui();
209 209 retornaJSON("ok");
... ... @@ -211,6 +211,29 @@ switch (strtoupper($funcao))
211 211 }
212 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 237 Valor: CRIARNOVOLAYER
215 238  
216 239 Cria um novo layer em um mapfile
... ... @@ -911,6 +934,26 @@ switch (strtoupper($funcao))
911 934 exit;
912 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 957 function sobeDesce()
915 958 {
916 959 global $movimento,$tipo,$codigoMap,$codigoLayer,$indiceClasse,$indiceEstilo,$locaplic;
... ... @@ -997,7 +1040,7 @@ function criarNovoMap()
997 1040 function criarNovoLayer()
998 1041 {
999 1042 global $locaplic,$codigoMap;
1000   - include_once("../../classesphp/funcoes_gerais.php");
  1043 + include_once("$locaplic/classesphp/funcoes_gerais.php");
1001 1044 $mapfile = $locaplic."/temas/".$codigoMap.".map";
1002 1045 $mapa = ms_newMapObj($mapfile);
1003 1046 $nl = ms_newLayerObj($mapa);
... ... @@ -1011,7 +1054,7 @@ function autoClassesLayer()
1011 1054 {
1012 1055 global $codigoMap,$codigoLayer,$itemExpressao,$itemNome,$locaplic,$dir_tmp;
1013 1056 $mapfile = $locaplic."/temas/".$codigoMap.".map";
1014   - include_once("../../classesphp/classe_alteraclasse.php");
  1057 + include_once("$locaplic/classesphp/classe_alteraclasse.php");
1015 1058 error_reporting(0);
1016 1059 $nometemp = $dir_tmp."/".nomerandomico().".map";
1017 1060 if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN'))
... ...
classesjs/dicionario_ajuda.js
... ... @@ -778,6 +778,14 @@ g_traducao_ajuda = {
778 778 pt:"Aplica um arquivo XML, no formato SLD, ao tema ativo.",
779 779 complemento:"SLD é um formato padrão que permite definir filtros e simbologia. Vários softwraes permitem criar arquivos nesse padrão.",
780 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 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 1047 function: pegadata
1034 1048  
1035 1049 Retorna o valor do elemento DATA
... ...
ferramentas/salvamapfile/index.js.php 0 → 100644
... ... @@ -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 148 \ No newline at end of file
... ...
temas/biomashp.map
1 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 4 LAYER
5 5 CONNECTION ""
6 6 DATA "c:\ms4w\apache\htdocs\geodados\brasil\vegetacao\biomas.shp"
... ... @@ -19,6 +19,7 @@ MAP
19 19 "ltempoitemtitulo" ""
20 20 "ltempoitemlink" ""
21 21 "palletefile" ""
  22 + "nomeoriginal" "biomashp"
22 23 "permitedownload" "sim"
23 24 "ltempoformatodata" ""
24 25 "ltempoitemicone" ""
... ... @@ -31,69 +32,69 @@ MAP
31 32 "ltempoitemfim" ""
32 33 END
33 34 NAME "biomashp"
34   - STATUS OFF
  35 + STATUS DEFAULT
35 36 TEMPLATE "none.htm"
36 37 OPACITY 50
37 38 TYPE POLYGON
38 39 UNITS METERS
39 40 CLASS
40 41 NAME "CAATINGA"
41   - EXPRESSION ('[ID]'eq'2.00')
  42 + EXPRESSION ('[CD_LEGENDA]'eq'CAATINGA')
42 43 STYLE
43 44 ANGLE 360
44   - COLOR 138 134 150
45   - OPACITY 100
  45 + COLOR 214 54 97
46 46 SYMBOL 0
  47 + WIDTH 1
47 48 END
48 49 END
49 50 CLASS
50 51 NAME "PAMPA"
51   - EXPRESSION ('[ID]'eq'5.00')
  52 + EXPRESSION ('[CD_LEGENDA]'eq'PAMPA')
52 53 STYLE
53 54 ANGLE 360
54   - COLOR 105 219 217
55   - OPACITY 100
  55 + COLOR 127 191 202
56 56 SYMBOL 0
  57 + WIDTH 1
57 58 END
58 59 END
59 60 CLASS
60 61 NAME "CERRADO"
61   - EXPRESSION ('[ID]'eq'3.00')
  62 + EXPRESSION ('[CD_LEGENDA]'eq'CERRADO')
62 63 STYLE
63 64 ANGLE 360
64   - COLOR 186 52 176
65   - OPACITY 100
  65 + COLOR 244 126 198
66 66 SYMBOL 0
  67 + WIDTH 1
67 68 END
68 69 END
69 70 CLASS
70 71 NAME "PANTANAL"
71   - EXPRESSION ('[ID]'eq'6.00')
  72 + EXPRESSION ('[CD_LEGENDA]'eq'PANTANAL')
72 73 STYLE
73 74 ANGLE 360
74   - COLOR 125 128 2
75   - OPACITY 100
  75 + COLOR 146 148 168
76 76 SYMBOL 0
  77 + WIDTH 1
77 78 END
78 79 END
79 80 CLASS
80 81 NAME "AMAZONIA"
81   - EXPRESSION ('[ID]'eq'1.00')
  82 + EXPRESSION ('[CD_LEGENDA]'eq'AMAZONIA')
82 83 STYLE
83 84 ANGLE 360
84   - COLOR 129 234 3
85   - OPACITY 100
  85 + COLOR 195 147 81
86 86 SYMBOL 0
  87 + WIDTH 1
87 88 END
88 89 END
89 90 CLASS
90 91 NAME "MATA ATLANTICA"
91   - EXPRESSION ('[ID]'eq'4.00')
  92 + EXPRESSION ('[CD_LEGENDA]'eq'MATA ATLANTICA')
92 93 STYLE
93 94 ANGLE 360
94   - COLOR 159 226 219
95   - OPACITY 100
  95 + COLOR 240 245 39
96 96 SYMBOL 0
  97 + WIDTH 1
97 98 END
98 99 END
99 100 END
... ...