Commit 9555ce159c09eace8543dafd3a044a50dc0727cd

Authored by Edmar Moretti
1 parent d4fc7cd0

Novos filtros no editor de mapfiles

admin/html/editormapfile.html
... ... @@ -39,61 +39,45 @@ body {
39 39 <script src="../../classesjs/classe_plugini3geo.js" type="text/javascript"></script>
40 40  
41 41 <link rel="stylesheet" type="text/css" href="admin.css">
  42 +<style>
  43 +table.ygtvtable {
  44 + margin-top: 3px;;
  45 +}
  46 +</style>
42 47  
43 48 </head>
44 49 <body class=" yui-skin-sam fundoPonto">
45 50 <center>
46 51 <div class="bordaSuperior">&nbsp;</div>
47 52 <div class="mascaraPrincipal" id="divGeral">
48   - <div id=cabecalhoPrincipal ></div>
  53 + <div id=cabecalhoPrincipal></div>
49 54 <h1>
50   - Administra&ccedil;&atilde;o do i3geo - mapfiles dos temas <img
51   - src="../imagens/04.png" style="cursor: pointer" id=botaoAjuda />
  55 + Administra&ccedil;&atilde;o do i3geo - mapfiles dos temas
  56 + <img src="../imagens/04.png" style="cursor: pointer" id=botaoAjuda />
52 57 </h1>
53 58 <div id="formulario" style="display: none">
54 59 <div id="ajuda" style="display: none">
55 60 <div class="hd">Ajuda</div>
56 61 <div class="bd" style="height: 144px; overflow: auto">
57   - <p>Importante: a restri&ccedil;&atilde;o ao tema por meio da defini&ccedil;&atilde;o de grupos de usu&aacute;rios n&atilde;o bloqueia o acesso por meio de download, WMS, KML, etc.
58   - Para bloquear esse tipo de acesso &eacute; necess&aacute;rio alterar as op&ccedil;&otilde;es espec&iacute;ficas. Por padr&atilde;o, esses servi&ccedil;os s&atilde;o habilitados para qualquer usu&aacute;rio, n&atilde;o sendo poss&iacute;vel bloquear apenas para determinados grupos.
59   - <p>Este formul&aacute;rio permite criar ou editar os arquivos
60   - mapfile que comp&otilde;em temas no i3geo.
61   - <p>Os arquivo .map s&atilde;o armazenados no diretório
62   - i3geo/temas e podem tamb&eacute;m ser editados manualmente.
63   - <p>Cada arquivo cont&eacute;m layers definidos conforme a
64   - sintaxe utilizada pelo Mapserver. Esses arquivos s&atilde;o as
65   - estruturas b&aacute;sicas utilizadas pelo i3geo na
66   - apresenta&ccedil;&atilde;o de dados e montagem das camadas que
67   - s&atilde;o vistas no mapa.
68   - <p>Após criados os mapfiles, deve-se ainda definir as
69   - caracter&iacute;sticas de cada LAYER.
70   - <p>A lista de IPs dos usu&aacute;rios que podem administrar o
71   - i3geo &eacute; definida no arquivo i3geo/ms_configura.php
72   - <p>Apenas os mapfiles que forem vinculados a um tema
73   - poder&atilde;o ser vistos na janela de inclus&atilde;o de temas
74   - na &aacute;rvore de temas. Se voc&ecirc; criou um mapfile
75   - manualmente, utilize a op&ccedil;&atilde;o de
76   - edi&ccedil;&atilde;o (&iacute;cone apresentado ao lado de cada
77   - mapfile) para fazer essa associa&ccedil;&atilde;o.
78   - <p>A op&ccedil;&atilde;o "Verifica temas sem mapfiles"
79   - possibilita resolver problemas decorrentes da
80   - elimina&ccedil;&atilde;o manual de um arquivo mapfile do
81   - servidor. Nesses casos, o registro no banco de dados permanece.
82   - Com essa op&ccedil;&atilde;o &eacute; poss&iacute;vel apagar os
83   - registros ou recriar o mapfile perdido.
  62 + <p>Importante: a restri&ccedil;&atilde;o ao tema por meio da defini&ccedil;&atilde;o de grupos de usu&aacute;rios n&atilde;o bloqueia o acesso por meio de download, WMS, KML, etc. Para bloquear esse tipo de acesso &eacute; necess&aacute;rio alterar as op&ccedil;&otilde;es espec&iacute;ficas. Por padr&atilde;o, esses servi&ccedil;os s&atilde;o habilitados para qualquer usu&aacute;rio, n&atilde;o sendo poss&iacute;vel bloquear apenas para determinados grupos.
  63 + <p>Este formul&aacute;rio permite criar ou editar os arquivos mapfile que comp&otilde;em temas no i3geo.
  64 + <p>Os arquivo .map s&atilde;o armazenados no diretório i3geo/temas e podem tamb&eacute;m ser editados manualmente.
  65 + <p>Cada arquivo cont&eacute;m layers definidos conforme a sintaxe utilizada pelo Mapserver. Esses arquivos s&atilde;o as estruturas b&aacute;sicas utilizadas pelo i3geo na apresenta&ccedil;&atilde;o de dados e montagem das camadas que s&atilde;o vistas no mapa.
  66 + <p>Após criados os mapfiles, deve-se ainda definir as caracter&iacute;sticas de cada LAYER.
  67 + <p>A lista de IPs dos usu&aacute;rios que podem administrar o i3geo &eacute; definida no arquivo i3geo/ms_configura.php
  68 + <p>Apenas os mapfiles que forem vinculados a um tema poder&atilde;o ser vistos na janela de inclus&atilde;o de temas na &aacute;rvore de temas. Se voc&ecirc; criou um mapfile manualmente, utilize a op&ccedil;&atilde;o de edi&ccedil;&atilde;o (&iacute;cone apresentado ao lado de cada mapfile) para fazer essa associa&ccedil;&atilde;o.
  69 + <p>A op&ccedil;&atilde;o "Verifica temas sem mapfiles" possibilita resolver problemas decorrentes da elimina&ccedil;&atilde;o manual de um arquivo mapfile do servidor. Nesses casos, o registro no banco de dados permanece. Com essa op&ccedil;&atilde;o &eacute; poss&iacute;vel apagar os registros ou recriar o mapfile perdido.
84 70 </div>
85 71 <div class="ft"></div>
86 72 </div>
87   - <input onclick="" type=button id=adiciona
88   - value="Criar um novo mapfile" /> <input onclick="" type=button id=uploadGvsig
89   - value="Upload gvSIG" /> <input onclick="" type=button
90   - id=semmapfiles value="Verificar temas sem mapfiles" /> <p class=paragrafo >
91   - Al&eacute;m de criar os mapfiles, &eacute; necess&aacute;rio definir
92   - as caracter&iacute;sticas de cada LAYER nas op&ccedil;&otilde;es
93   - abaixo. <br> Para incluir o tema nos menus, <a
94   - href='arvore.html'>edite a &aacute;rvore de temas </a> </p>
95   - <p class=paragrafo >O texto marcado em cinza corresponde ao nome do tema registrados na &aacute;rvore de temas (registro no banco de dados).
96   - Nem todos os temas s&atilde;o utilizados na &aacute;rvore, por isso n&atilde;o necessitam ser associados a um 'tema' e registrados no banco de dados.</p>
  73 + <input onclick="" type=button id=adiciona value="Criar um novo mapfile" />
  74 + <input onclick="" type=button id=uploadGvsig value="Upload gvSIG" />
  75 + <input onclick="" type=button id=semmapfiles value="Verificar temas sem mapfiles" />
  76 + <p class=paragrafo>
  77 + Al&eacute;m de criar os mapfiles, &eacute; necess&aacute;rio definir as caracter&iacute;sticas de cada LAYER nas op&ccedil;&otilde;es abaixo. <br> Para incluir o tema nos menus,
  78 + <a href='arvore.html'>edite a &aacute;rvore de temas </a>
  79 + </p>
  80 + <p class=paragrafo>O texto marcado em cinza corresponde ao nome do tema registrados na &aacute;rvore de temas (registro no banco de dados). Nem todos os temas s&atilde;o utilizados na &aacute;rvore, por isso n&atilde;o necessitam ser associados a um 'tema' e registrados no banco de dados.</p>
97 81 <div id="letras"></div>
98 82 <p>Mapfiles (arquivos existentes no diret&oacute;rio i3geo/temas):</p>
99 83 <div id="tabela" style="left: -5px;"></div>
... ... @@ -151,10 +135,9 @@ body {
151 135 </script>
152 136  
153 137 <script>
154   - if(i3GEO.util.pegaCookie("I3GEOletraAdmin")) {
  138 + if (i3GEO.util.pegaCookie("I3GEOletraAdmin")) {
155 139 letraAtual = i3GEO.util.pegaCookie("I3GEOletraAdmin");
156   - }
157   - else{
  140 + } else {
158 141 letraAtual = "";
159 142 }
160 143 function filtraLetra(letra) {
... ... @@ -164,9 +147,13 @@ body {
164 147 letra = "";
165 148 }
166 149 i3GEO.util.insereCookie("I3GEOletraAdmin", letra);
167   - core_pegaMapfiles("montaArvore()", letra, document
168   - .getElementById("selFiltro").value,document
169   - .getElementById("checaNomes").checked);
  150 + core_pegaMapfiles(
  151 + "montaArvore()",
  152 + letra,
  153 + document.getElementById("selFiltro").value,
  154 + document.getElementById("checaNomes").checked,
  155 + document.getElementById("checaNames").checked
  156 + );
170 157 }
171 158 //necessario para a ferramenta login e outras
172 159 i3GEO.configura = {
... ... @@ -174,39 +161,43 @@ body {
174 161 };
175 162 //
176 163 cabecalhoGeral("cabecalhoPrincipal", "editormapfile");
177   - temp = function() {
178   - var ins = "<p>Filtrar: "
179   - + "<select id='selFiltro' onchange='filtraLetra(\""
180   - + letraAtual
181   - + "\")' >"
182   - + "<option value='' >----</option>"
183   - + "<option value='link_tema,=,' >Sem fonte</option>"
184   - + "<option value='nome_tema,=,' >Nome n&atilde;o definido no banco de dados</option>"
185   - + "<option value='nome_tema,!=,' >Nome definido no banco de dados</option>"
186   - + "<option value='download_tema,=,sim' >Permite download</option>"
187   - + "<option value='download_tema,=,nao' >N&atilde;o permite download</option>"
188   - + "<option value='ogc_tema,=,sim' >Permite WMS</option>"
189   - + "<option value='ogc_tema,=,nao' >N&atilde;o permite WMS</option>"
190   - + "<option value='kml_tema,=,sim' >Permite KML</option>"
191   - + "<option value='kml_tema,=,nao' >N&atilde;o permite KML</option>"
192   - + "<option value='kmz_tema,=,sim' >Permite KMZ</option>"
193   - + "<option value='kmz_tema,=,nao' >N&atilde;o permite KMZ</option>"
194   - + "</select>";
195   - ins += "<br><input onclick='filtraLetra(\""
196   - + letraAtual
197   - + "\")' type=checkbox id=mostraMini style=position:relative;top:2px; /><span class=paragrafo >Mostra a miniatura armazenada em temas/miniaturas</span>";
198   -
199   - ins += "<br><input onclick='filtraLetra(\""
200   - + letraAtual
201   - + "\")' type=checkbox id=checaNomes style=position:relative;top:2px; /><span class=paragrafo >Verifica nome registrado no banco e no mapfile. Marca em vermelho o nome registrado no mapfile quando houver diverg&ecirc;ncia</span>";
202   -
203   -
204   - ins += "<p><div id=filtroDeLetras ></div>";
205   - document.getElementById("letras").innerHTML = ins;
206   - core_listaDeLetras("filtroDeLetras","filtraLetra");
207   - document.getElementById("formulario").style.display = "block";
208   - initMenu();
209   - };
210   - i3GEO.login.verificaOperacao("admin/html/editormapfile",i3GEO.configura.locaplic, temp, "sessao",i3GEO.login.dialogo.abreLogin);
  164 + temp =
  165 + function() {
  166 + var ins =
  167 + "<p>Filtrar: " + "<select id='selFiltro' onchange='filtraLetra(\""
  168 + + letraAtual
  169 + + "\")' >"
  170 + + "<option value='' >----</option>"
  171 + + "<option value='link_tema,=,' >Sem fonte</option>"
  172 + + "<option value='nome_tema,=,' >Nome n&atilde;o definido no banco de dados</option>"
  173 + + "<option value='nome_tema,!=,' >Nome definido no banco de dados</option>"
  174 + + "<option value='download_tema,=,sim' >Permite download</option>"
  175 + + "<option value='download_tema,=,nao' >N&atilde;o permite download</option>"
  176 + + "<option value='ogc_tema,=,sim' >Permite WMS</option>"
  177 + + "<option value='ogc_tema,=,nao' >N&atilde;o permite WMS</option>"
  178 + + "<option value='kml_tema,=,sim' >Permite KML</option>"
  179 + + "<option value='kml_tema,=,nao' >N&atilde;o permite KML</option>"
  180 + + "<option value='kmz_tema,=,sim' >Permite KMZ</option>"
  181 + + "<option value='kmz_tema,=,nao' >N&atilde;o permite KMZ</option>"
  182 + + "</select>";
  183 + ins +=
  184 + "<br><input onclick='filtraLetra(\"" + letraAtual
  185 + + "\")' type=checkbox id=mostraMini style=position:relative;top:2px; /><span class=paragrafo >Mostra a miniatura armazenada em temas/miniaturas</span>";
  186 +
  187 + ins +=
  188 + "<br><input onclick='filtraLetra(\"" + letraAtual
  189 + + "\")' type=checkbox id=checaNomes style=position:relative;top:2px; /><span class=paragrafo >Verifica nome registrado no banco e no mapfile. Marca em vermelho o nome registrado no mapfile quando houver diverg&ecirc;ncia</span>";
  190 +
  191 + ins +=
  192 + "<br><input onclick='filtraLetra(\"" + letraAtual
  193 + + "\")' type=checkbox id=checaNames style=position:relative;top:2px; /><span class=paragrafo >Verifica se o nome do arquivo &eacute; o mesmo do LAYER</span>";
  194 +
  195 + ins += "<p><div id=filtroDeLetras ></div>";
  196 + document.getElementById("letras").innerHTML = ins;
  197 + core_listaDeLetras("filtroDeLetras", "filtraLetra");
  198 + document.getElementById("formulario").style.display = "block";
  199 + initMenu();
  200 + };
  201 + i3GEO.login.verificaOperacao("admin/html/editormapfile", i3GEO.configura.locaplic, temp, "sessao", i3GEO.login.dialogo.abreLogin);
211 202 </script>
212   -</body>
  203 +</body>
213 204 \ No newline at end of file
... ...
admin/js/core.js
... ... @@ -610,8 +610,10 @@ letra - (opcional) letra inicial utilizada para filtrar a lista
610 610 filtro - (opcional) string com o filtro, por exemplo, "'download_tema' = 'SIM'"
611 611  
612 612 checaNomes - (0pcional) bate o nome do mapfile (tema) com o registro no banco
  613 +
  614 +checaNames - (opcional) bate o nome do mapfile com o nome do layer
613 615 */
614   -function core_pegaMapfiles(funcaoM,letra,filtro,checaNomes)
  616 +function core_pegaMapfiles(funcaoM,letra,filtro,checaNomes,checaNames)
615 617 {
616 618 if(!letra){
617 619 letra = "";
... ... @@ -625,7 +627,10 @@ function core_pegaMapfiles(funcaoM,letra,filtro,checaNomes)
625 627 if(!checaNomes){
626 628 checaNomes = "false";
627 629 }
628   - var sUrl = "../php/menutemas.php?funcao=listaMapsTemas&letra="+letra+"&filtro="+filtro+"&checaNomes="+checaNomes;
  630 + if(!checaNames){
  631 + checaNames = "false";
  632 + }
  633 + var sUrl = "../php/menutemas.php?funcao=listaMapsTemas&letra="+letra+"&filtro="+filtro+"&checaNomes="+checaNomes+"&checaNames="+checaNames;
629 634 var callbackM =
630 635 {
631 636 success:function(o)
... ...
admin/js/editormapfile.js
... ... @@ -290,10 +290,14 @@ function montaNosRaiz(redesenha)
290 290 if($mapfiles[i].extensao === "gvp"){
291 291 conteudo += "&nbsp;<img style=\"margin-left:2px;width:12px;position:relative;cursor:pointer;top:2px\" onclick=\"downloadGvp('"+$mapfiles[i].codigo+"')\" title='download' src=\"../imagens/down1.gif\" />";
292 292 }
293   - conteudo += "&nbsp;<img style=\"margin-left:2px;width:12px;position:relative;cursor:pointer;top:2px\" onclick=\"testarMapfile('"+$mapfiles[i].codigo+"','"+$mapfiles[i].extensao+"')\" title='testar!' src=\"../imagens/41.png\" />";
  293 + if($mapfiles[i].extensao === "map" || $mapfiles[i].extensao === "gvp"){
  294 + conteudo += "&nbsp;<img style=\"margin-left:2px;width:12px;position:relative;cursor:pointer;top:2px\" onclick=\"testarMapfile('"+$mapfiles[i].codigo+"','"+$mapfiles[i].extensao+"')\" title='testar!' src=\"../imagens/41.png\" />";
  295 + conteudo += "&nbsp;<img style=\"margin-left:2px;width:12px;position:relative;cursor:pointer;top:2px\" onclick=\"testarMapfileRapido('"+$mapfiles[i].codigo+"','"+$mapfiles[i].extensao+"')\" title='teste rapido' src=\"../imagens/41r.png\" />";
  296 + }
294 297 conteudo += "&nbsp;<img width=20px style=\"margin-left:2px;position:relative;cursor:pointer;top:2px\" onclick=\"javascript:window.open('../../interface/black_editor.php?&temaEdicao="+$mapfiles[i].codigo+"')\" title='editar no i3Geo' src=\"../imagens/i3geo2editor.jpg\" />";
295 298 conteudo += "&nbsp;<img width=20px style=\"margin-left:2px;position:relative;cursor:pointer;top:2px\" onclick=\"javascript:window.open('../../ms_criamapa.php?temasa="+$mapfiles[i].codigo+"&layers="+$mapfiles[i].codigo+"')\" title='testar no i3Geo' src=\"../imagens/i3geo2.jpg\" />";
296 299 conteudo += "<b>&nbsp;<span>"+$mapfiles[i].codigo+" <span style=color:gray id='idNome_"+$mapfiles[i].codigo+"'>"+$mapfiles[i].nome+"</span></span>";
  300 + conteudo += "</b><br><img src=''style='display:none;' id='testeRapido"+$mapfiles[i].codigo+"' />";
297 301 if($mapfiles[i].imagem != "" && $i("mostraMini").checked == true){
298 302 conteudo += "</b><br><img src='../../temas/miniaturas/"+$mapfiles[i].imagem+"'/>";
299 303 }
... ... @@ -306,6 +310,15 @@ function montaNosRaiz(redesenha)
306 310 tree.draw();
307 311 return nos;
308 312 }
  313 +function testarMapfileRapido(codigoMap,extensao)
  314 +{
  315 + if($i("testeRapido"+codigoMap).style.display === "block"){
  316 + $i("testeRapido"+codigoMap).style.display = "none";
  317 + return;
  318 + }
  319 + $i("testeRapido"+codigoMap).src = "../../testamapfile.php?tipo=grande&map="+codigoMap+".map";
  320 + $i("testeRapido"+codigoMap).style.display = "block";
  321 +}
309 322 function testarMapfile(codigoMap,extensao)
310 323 {
311 324 window.open("../../testamapfile.php?map="+codigoMap+"."+extensao);
... ...
admin/php/menutemas.php
... ... @@ -1221,7 +1221,7 @@ Retorna a lista de mapfiles do diretorio i3geo/temas
1221 1221 */
1222 1222 function listaMapsTemas()
1223 1223 {
1224   - global $cp,$locaplic,$letra,$filtro,$esquemaadmin,$checaNomes;
  1224 + global $cp,$locaplic,$letra,$filtro,$esquemaadmin,$checaNomes,$checaNames;
1225 1225 $arquivos = array();
1226 1226 if (is_dir($locaplic."/temas"))
1227 1227 {
... ... @@ -1316,7 +1316,7 @@ function listaMapsTemas()
1316 1316 $handle = fopen($locaplic."/temas/".$arq.".map", "r");
1317 1317 while (!feof($handle)){
1318 1318 $linha = fgets($handle);
1319   - if(strpos(strtoupper($linha),"'TEMA'") !== false || strpos(strtoupper($linha),'"TEMA"') !== false){
  1319 + if(stripos($linha,"'TEMA'") !== false || stripos($linha,'"TEMA"') !== false){
1320 1320 $ntema = str_replace(array("'TEMA'",'"TEMA"',"'tema'",'"tema"'),"",$linha);
1321 1321 $ntema = trim(str_replace(array("'",'"'),"",$ntema));
1322 1322 if($n != $ntema && $n != utf8_encode($ntema) && $n != ""){
... ... @@ -1329,6 +1329,30 @@ function listaMapsTemas()
1329 1329 }
1330 1330 }
1331 1331 }
  1332 + if($checaNames == "true"){
  1333 + if($extensao == "map"){
  1334 + if(file_exists($locaplic."/temas/".$arq.".map")){
  1335 + $handle = fopen($locaplic."/temas/".$arq.".map", "r");
  1336 + //deve buscar dentro de LAYER pois pode haver simbolos antes
  1337 + $elayer = false;
  1338 + while (!feof($handle)){
  1339 + $linha = trim(fgets($handle));
  1340 + if(stripos($linha,"LAYER") === 0){
  1341 + $elayer = true;
  1342 + }
  1343 + if($elayer == true && stripos($linha,"NAME") === 0){
  1344 + $ntema = ltrim($linha,"NAMEname");
  1345 + $ntema = trim(str_replace(array("'",'"'),"",$ntema));
  1346 + if($arq != $ntema){
  1347 + $n .= "<img style='margin-left:3px;' src='../imagens/face-sad.png' title='Nome do LAYER diferente do nome do arquivo' />";
  1348 + }
  1349 + break;
  1350 + }
  1351 + }
  1352 + fclose($handle);
  1353 + }
  1354 + }
  1355 + }
1332 1356 if(isset($filtro) && $filtro != "" && $n != ""){
1333 1357 $lista[] = array("grupousr"=>$grupousr,"id_tema"=>$id,"nome"=>$n,"codigo"=>$arq,"imagem"=>$imagem,"extensao"=>$extensao);
1334 1358 }
... ...