Commit cb81fb7d91d9fa5cec02789b6738b7347554d29f

Authored by Edmar Moretti
1 parent a993cbd3

Inclusão da opção de clonar mapfile no editor de mapfiles

admin/admin.db
No preview for this file type
admin1/catalogo/mapfile/exec.php
... ... @@ -30,7 +30,10 @@ error_reporting ( 0 );
30 30 include_once (dirname ( __FILE__ ) . "/../../../admin/php/login.php");
31 31 $funcoesEdicao = array (
32 32 "LISTA",
33   - "ADICIONAR"
  33 + "ADICIONAR",
  34 + "EXCLUIR",
  35 + "LIMPACACHE",
  36 + "CLONARMAPFILE"
34 37 );
35 38 if (in_array ( strtoupper ( $funcao ), $funcoesEdicao )) {
36 39 if (verificaOperacaoSessao ( "admin/html/editormapfile" ) === false) {
... ... @@ -56,7 +59,7 @@ switch ($funcao) {
56 59 header ( "HTTP/1.1 400 arquivo ja existe" );
57 60 exit ();
58 61 }
59   - $novo = adicionar ( $locaplic, $_POST ["link_tema"], $codigo, $_POST ["acessopublico"], $_POST ["metaestat"], $_POST ["titulo"], $_POST ["desc_tema"], $_POST ["tituloEN"], $_post ["tituloES"], $dbhw );
  62 + $novo = adicionar ( $locaplic, $_POST ["link_tema"], $codigo, $_POST ["acessopublico"], $_POST ["metaestat"], $_POST ["titulo"], $_POST ["desc_tema"], $_POST ["tituloEN"], $_POST ["tituloES"], true, $dbhw );
60 63 if ($novo === false) {
61 64 header ( "HTTP/1.1 500 erro ao consultar banco de dados" );
62 65 exit ();
... ... @@ -85,7 +88,7 @@ switch ($funcao) {
85 88 exit ();
86 89 break;
87 90 case "LISTA" :
88   - $retorna = lista ( $dbh, $_GET["filtro"], $_GET["palavra"] );
  91 + $retorna = lista ( $dbh, $_GET ["filtro"], $_GET ["palavra"] );
89 92 $dbhw = null;
90 93 $dbh = null;
91 94 if ($retorna === false) {
... ... @@ -96,32 +99,99 @@ switch ($funcao) {
96 99 exit ();
97 100 break;
98 101 case "LIMPACACHE" :
99   - $mapfile = $locaplic."/temas/".$_POST["codigo"].".map";
100   - if(!file_exists($mapfile)){
  102 + $mapfile = $locaplic . "/temas/" . $_POST ["codigo"] . ".map";
  103 + if (! file_exists ( $mapfile )) {
101 104 header ( "HTTP/1.1 403 arquivo nao existe" );
102 105 exit ();
103 106 }
104   - $mapa = ms_newMapObj($mapfile);
105   - $nomes = $mapa->getalllayernames();
106   - //$cachedir e $dir_tmp vem de ms_configura.php
107   - if($cachedir != ""){
  107 + $mapa = ms_newMapObj ( $mapfile );
  108 + $nomes = $mapa->getalllayernames ();
  109 + // $cachedir e $dir_tmp vem de ms_configura.php
  110 + if ($cachedir != "") {
108 111 $d = $cachedir;
  112 + } else {
  113 + $d = $dir_tmp . "/cache";
109 114 }
110   - else{
111   - $d = $dir_tmp."/cache";
112   - }
113   - foreach($nomes as $nome){
114   - $nome = str_replace(".","",$nome);
115   - $nome = strip_tags($nome);
116   - $nome = htmlspecialchars($nome, ENT_QUOTES);
117   - $dirs[] = $d."/".$nome;
118   - $dirs[] = $d."/googlemaps/".$nome;
119   - $dirs[] = $d."/wmts/".$nome;
120   - foreach($dirs as $dir){
121   - rrmdir($dir);
  115 + foreach ( $nomes as $nome ) {
  116 + $nome = str_replace ( ".", "", $nome );
  117 + $nome = strip_tags ( $nome );
  118 + $nome = htmlspecialchars ( $nome, ENT_QUOTES );
  119 + $dirs [] = $d . "/" . $nome;
  120 + $dirs [] = $d . "/googlemaps/" . $nome;
  121 + $dirs [] = $d . "/wmts/" . $nome;
  122 + foreach ( $dirs as $dir ) {
  123 + rrmdir ( $dir );
122 124 }
123 125 }
124   - retornaJSON("ok");
  126 + retornaJSON ( "ok" );
  127 + exit ();
  128 + break;
  129 + case "CLONARMAPFILE" :
  130 + $codigo = $_POST ["codigo"];
  131 + $codigo = str_replace ( " ", "", removeAcentos ( $codigo ) );
  132 + $codigo = str_replace ( ".", "", $codigo );
  133 + $codigo = strip_tags ( $codigo );
  134 + $codigo = htmlspecialchars ( $codigo, ENT_QUOTES );
  135 +
  136 + $novocodigo = $_POST ["novocodigo"];
  137 + $novocodigo = str_replace ( " ", "", removeAcentos ( $novocodigo ) );
  138 + $novocodigo = str_replace ( ".", "", $novocodigo );
  139 + $novocodigo = strip_tags ( $novocodigo );
  140 + $novocodigo = htmlspecialchars ( $novocodigo, ENT_QUOTES );
  141 +
  142 + $arq = $locaplic . "/temas/" . $codigo . ".map";
  143 + $arqnovo = $locaplic . "/temas/" . $novocodigo . ".map";
  144 +
  145 + if ($codigo == "" || !file_exists ( $arq )) {
  146 + header ( "HTTP/1.1 400 arquivo nao existe" );
  147 + exit ();
  148 + }
  149 + if ($novocodigo == "" || file_exists ( $arqnovo )) {
  150 + header ( "HTTP/1.1 400 arquivo ja existe" );
  151 + exit ();
  152 + }
  153 + //obtem os dados do banco do tema existente
  154 + $dados = pegaDados ( "SELECT * from " . $esquemaadmin . "i3geoadmin_temas WHERE codigo_tema = '" . $codigo . "'", $dbh, false );
  155 + if (count ( $dados ) > 0) {
  156 + //o mapfile esta registrado como um tema no banco de adm
  157 + $dataCol = array (
  158 + "link_tema" => $dados [0] ["link_tema"],
  159 + "kml_tema" => $dados [0] ["kml_tema"],
  160 + "kmz_tema" => $dados [0] ["kmz_tema"],
  161 + "ogc_tema" => $dados [0] ["ogc_tema"],
  162 + "download_tema" => $dados [0] ["download_tema"],
  163 + "desc_tema" => "",
  164 + "tipoa_tema" => $dados [0] ["tipoa_tema"],
  165 + "tags_tema" => '',
  166 + "nome_tema" => $_POST["titulo"],
  167 + "codigo_tema" => $novocodigo,
  168 + "it" => "",
  169 + "es" => "",
  170 + "en" => ""
  171 + );
  172 + $acessopublico = $dados [0] ["download_tema"];
  173 + } else {
  174 + $acessopublico = "";
  175 + }
  176 + //faz a copia do mapfile
  177 + $mapa = ms_newMapObj($arq);
  178 + $layer = @$mapa->getlayerbyname($codigo);
  179 + $layer->set("name",$novocodigo);
  180 + $layer->setmetadata("TEMA",$_POST["titulo"]);
  181 + $mapa->save($arqnovo);
  182 + include(dirname(__FILE__)."/../../php/removeCabecalhoMapfile.php");
  183 + removeCabecalhoMapfile($arqnovo);
  184 +
  185 + if ($novo === false) {
  186 + header ( "HTTP/1.1 500 erro ao consultar banco de dados" );
  187 + exit ();
  188 + } elseif (count ( $dados ) > 0) {
  189 + //registra no banco de dados caso nao tenha ocorrido erro ao criar o mapfile
  190 + i3GeoAdminInsert ( $dbhw, "i3geoadmin_temas", $dataCol );
  191 + }
  192 + retornaJSON ( array (
  193 + "codigo" => $novocodigo
  194 + ) );
125 195 exit ();
126 196 break;
127 197 }
... ... @@ -147,24 +217,24 @@ function excluir($codigo, $dbhw) {
147 217 return "o tema e utilizado em alguma raiz";
148 218 }
149 219 }
150   - if (!file_exists ( "$locaplic/temas/" . $codigo . ".map" )) {
  220 + if (! file_exists ( "$locaplic/temas/" . $codigo . ".map" )) {
151 221 return "o arquivo mapfile nao existe";
152 222 }
153   - //verifica se pode escrever
154   - $handle = fopen("$locaplic/temas/" . $codigo . ".map", "r+");
155   - if($handle == false){
  223 + // verifica se pode escrever
  224 + $handle = fopen ( "$locaplic/temas/" . $codigo . ".map", "r+" );
  225 + if ($handle == false) {
156 226 return "o arquivo nao pode ser apagado verifique as permissoes";
157 227 }
158   - fclose($handle);
159   - //tenta excluir do banco
  228 + fclose ( $handle );
  229 + // tenta excluir do banco
160 230 $resultado = i3GeoAdminExclui ( $esquemaadmin . "i3geoadmin_temas", "id_tema", $id, $dbhw, true );
161 231 if ($resultado === false) {
162 232 return "nao foi possivel excluir do banco de dados";
163 233 }
164   - unlink("$locaplic/temas/" . $codigo . ".map");
  234 + unlink ( "$locaplic/temas/" . $codigo . ".map" );
165 235 return true;
166 236 }
167   -function adicionar($locaplic, $link_tema, $codigo, $acessopublico, $metaestat, $titulo, $desc_tema, $tituloEN, $tituloES, $dbhw) {
  237 +function adicionar($locaplic, $link_tema, $codigo, $acessopublico, $metaestat, $titulo, $desc_tema, $tituloEN, $tituloES, $registraBanco, $dbhw) {
168 238 global $convUTF, $esquemaadmin;
169 239 $arq = $locaplic . "/temas/" . $codigo . ".map";
170 240 if (empty ( $acessopublico ) || $acessopublico == "on") {
... ... @@ -220,31 +290,35 @@ function adicionar($locaplic, $link_tema, $codigo, $acessopublico, $metaestat, $
220 290 $titulo = utf8_decode ( $titulo );
221 291 $desc_tema = utf8_decode ( $desc_tema );
222 292 }
223   - try {
224   - $dataCol = array (
225   - "link_tema" => $link_tema,
226   - "kml_tema" => $acessopublico,
227   - "kmz_tema" => $acessopublico,
228   - "ogc_tema" => $acessopublico,
229   - "download_tema" => $acessopublico,
230   - "desc_tema" => $desc_tema,
231   - "tipoa_tema" => $tipoa_tema,
232   - "tags_tema" => '',
233   - "nome_tema" => $titulo,
234   - "codigo_tema" => $codigo,
235   - "it" => "",
236   - "es" => $tituloES,
237   - "en" => $tituloEN
238   - );
239   - i3GeoAdminInsert ( $dbhw, "i3geoadmin_temas", $dataCol );
240   - // salva o arquivo mapfile
241   - foreach ( $dados as $dado ) {
242   - fwrite ( $fp, $dado . "\n" );
  293 + if($registraBanco == true){
  294 + try {
  295 + $dataCol = array (
  296 + "link_tema" => $link_tema,
  297 + "kml_tema" => $acessopublico,
  298 + "kmz_tema" => $acessopublico,
  299 + "ogc_tema" => $acessopublico,
  300 + "download_tema" => $acessopublico,
  301 + "desc_tema" => $desc_tema,
  302 + "tipoa_tema" => $tipoa_tema,
  303 + "tags_tema" => '',
  304 + "nome_tema" => $titulo,
  305 + "codigo_tema" => $codigo,
  306 + "it" => "",
  307 + "es" => $tituloES,
  308 + "en" => $tituloEN
  309 + );
  310 + i3GeoAdminInsert ( $dbhw, "i3geoadmin_temas", $dataCol );
  311 + // salva o arquivo mapfile
  312 + foreach ( $dados as $dado ) {
  313 + fwrite ( $fp, $dado . "\n" );
  314 + }
  315 + fclose ( $fp );
  316 + return true;
  317 + } catch ( PDOException $e ) {
  318 + return false;
243 319 }
244   - fclose ( $fp );
245   - return $retorna;
246   - } catch ( PDOException $e ) {
247   - return false;
  320 + } else {
  321 + return true;
248 322 }
249 323 }
250 324 function lista($dbh, $filtro = "", $palavra = "") {
... ... @@ -256,10 +330,12 @@ function lista($dbh, $filtro = "", $palavra = "") {
256 330 while ( ($file = readdir ( $dh )) !== false ) {
257 331 if (! stristr ( $file, '.map' ) === FALSE) {
258 332 $file = str_replace ( ".map", "", $file );
259   - //verifica se existe um filtro de palavra
260   - if($palavra != ""){
261   - if(stripos($file, $palavra) !== false){
262   - $arquivos[] = array("nome"=>$file);
  333 + // verifica se existe um filtro de palavra
  334 + if ($palavra != "") {
  335 + if (stripos ( $file, $palavra ) !== false) {
  336 + $arquivos [] = array (
  337 + "nome" => $file
  338 + );
263 339 }
264 340 } else {
265 341 $arquivos [] = array (
... ... @@ -374,21 +450,21 @@ function lista($dbh, $filtro = "", $palavra = "") {
374 450 return $lista;
375 451 }
376 452 function rrmdir($dir) {
377   - if (is_dir($dir)) {
378   - $objects = scandir($dir);
379   - foreach ($objects as $object) {
  453 + if (is_dir ( $dir )) {
  454 + $objects = scandir ( $dir );
  455 + foreach ( $objects as $object ) {
380 456 if ($object != "." && $object != "..") {
381   - if (filetype($dir."/".$object) == "dir") {
382   - rrmdir($dir."/".$object);
  457 + if (filetype ( $dir . "/" . $object ) == "dir") {
  458 + rrmdir ( $dir . "/" . $object );
383 459 } else {
384   - $object = str_replace(".png","",$object).".png";
385   - chmod($dir."/".$object,077);
386   - unlink($dir."/".$object);
  460 + $object = str_replace ( ".png", "", $object ) . ".png";
  461 + chmod ( $dir . "/" . $object, 077 );
  462 + unlink ( $dir . "/" . $object );
387 463 }
388 464 }
389 465 }
390   - reset($objects);
391   - //rmdir($dir);
  466 + reset ( $objects );
  467 + // rmdir($dir);
392 468 }
393 469 }
394 470 ?>
... ...
admin1/catalogo/mapfile/index.js
... ... @@ -217,22 +217,25 @@ Obtém a lista
217 217 );
218 218 },
219 219 clonaDialogo: function(codigo){
220   - var f = '<h4 class="pull-right"></h4><form id="form-modal-adiciona" class="form-horizontal"><div class="form-group form-group-lg"><label class="col-md-6 control-label">'+i3GEOadmin.mapfile.dicionario.nomeArquivo+':</label><div class="col-md-6"><input type="text" class="form-control" name="clonarComo" value="" required ></div></div></form>';
221   - var hash = {
222   - "mensagem": f,
223   - "onBotao1": "i3GEOadmin.mapfile.clona('"+codigo+"')",
224   - "botao1": i3GEOadmin.mapfile.dicionario.criaCopia,
225   - "onBotao2": "i3GEOadmin.core.fechaModalConfirma();",
226   - "botao2": i3GEOadmin.mapfile.dicionario.cancela
227   - };
228   - i3GEOadmin.core.abreModalConfirma(hash);
  220 + var html = Mustache.to_html(
  221 + "{{#data}}" + $("#templateClonarTema").html() + "{{/data}}",
  222 + $.extend(
  223 + {},
  224 + i3GEOadmin.mapfile.dicionario,
  225 + {
  226 + "data": "modal",
  227 + "codigoAtual": codigo
  228 + }
  229 + )
  230 + );
  231 + i3GEOadmin.core.abreModalGeral(html);
229 232 },
230   - clona: function(codigo){
  233 + clona: function(){
231 234 var parametros = $("#form-modal-adiciona").serialize();
232 235 i3GEOadmin.core.modalAguarde(true);
233 236 $.post(
234   - "exec.php?funcao=clona",
235   - parametros + "&codigo=" + codigo
  237 + "exec.php?funcao=clonarmapfile",
  238 + parametros
236 239 )
237 240 .done(
238 241 function(data, status){
... ...
admin1/catalogo/mapfile/index.php
... ... @@ -180,6 +180,32 @@ include &quot;../../head.php&quot;;
180 180 </div>
181 181 </form>
182 182 </script>
  183 +<script id="templateClonarTema" type="x-tmpl-mustache">
  184 + <h4>{{{clonaMapfile}}}</h4>
  185 + <form id="form-modal-adiciona" style="" action="#" onsubmit="i3GEOadmin.mapfile.clona();return false;" onchange="this.style.boxShadow='2px 2px 5px 0 #009688';" class="form-horizontal" role="form" method="post" >
  186 + <div class="row">
  187 + <div class="col-md-12">
  188 + <div class="form-group form-group-lg">
  189 + <label class="col-md-6 control-label" for="novocodigo" >{{{nomeMap}}}</label>
  190 + <div class="col-md-6">
  191 + <input title="{{{nomeArquivo}}}" type="text" value="" class="form-control" name="novocodigo" required>
  192 + </div>
  193 + </div>
  194 + <div class="form-group form-group-lg">
  195 + <label class="col-md-6 control-label" for="titulo" >{{{tituloTema}}}</label>
  196 + <div class="col-md-6">
  197 + <input title="{{{tituloTema}}}" type="text" value="" class="form-control" name="titulo" >
  198 + </div>
  199 + </div>
  200 + </div>
  201 + <input type="hidden" value="{{codigoAtual}}" class="form-control" name="codigo" >
  202 + <div class="pull-right">
  203 + <button type="submit" class="btn btn-primary" role="button" style="color:#008579;">{{criaCopia}}</button>
  204 + </div>
  205 + </div>
  206 + </form>
  207 +</script>
  208 +
183 209 <script type="text/javascript" src="index.js"></script>
184 210 <script type="text/javascript" src="../../dicionario/editormapfile.js"></script>
185 211 <script>
... ...
admin1/dicionario/editormapfile.js
... ... @@ -1514,5 +1514,10 @@ i3GEOadmin.mapfile.dicionario = {
1514 1514 pt : "Link para os metadados",
1515 1515 en : "",
1516 1516 es : ""
  1517 + }],
  1518 + 'clonaMapfile' : [{
  1519 + pt : "Faz uma c&oacute;pia do mapfile atual com um novo nome e novo t&iacute;tulo",
  1520 + en : "",
  1521 + es : ""
1517 1522 }]
1518 1523 };
... ...
admin1/head.php
... ... @@ -224,9 +224,6 @@ h2 small {
224 224 </script>
225 225 <!-- Template para o Modal de confirmacao -->
226 226 <script id="modalConfirmaTpl" type="x-tmpl-mustache">
227   - <button class="btn btn-primary btn-fab btn-fab-mini pull-left">
228   - <i class="material-icons">help</i>
229   - </button>
230 227 <h4 class="pull-right">{{{mensagem}}}</h4>
231 228 <div class="clearfix"></div>
232 229 <div class="pull-right">
... ...
admin1/php/removeCabecalhoMapfile.php 0 → 100644
... ... @@ -0,0 +1,68 @@
  1 +<?php
  2 +function removeCabecalhoMapfile($arq,$symbolset=true){
  3 + if(!file_exists($arq)){
  4 + return false;
  5 + }
  6 + $arq = str_replace(".map","",$arq).".map";
  7 + $handle = fopen($arq, "r");
  8 + if ($handle){
  9 + $cabeca = array();
  10 + if($symbolset){
  11 + $cabeca[] = "MAP\n";
  12 + //$final[] = "SYMBOLSET ../symbols/simbolos.sym\n";
  13 + //$final[] = "FONTSET ".'"'."../symbols/fontes.txt".'"'."\n";
  14 + }
  15 + $grava = false;
  16 + while (!feof($handle)){
  17 + $linha = fgets($handle);
  18 + if($symbolset){
  19 + if(strpos(strtoupper($linha),"SYMBOLSET") !== false){
  20 + $cabeca[] = $linha;
  21 + }
  22 + if(strpos(strtoupper($linha),"FONTSET") !== false){
  23 + $cabeca[] = $linha;
  24 + }
  25 + }
  26 + if(strtoupper(trim($linha)) == "LAYER"){
  27 + $grava = true;
  28 + }
  29 + if($grava){
  30 + $final[] = rtrim($linha, "\r\n") . PHP_EOL;
  31 + }
  32 + }
  33 + fclose($handle);
  34 + }
  35 + $final = array_merge($cabeca,$final);
  36 + $handle = fopen($arq, "w+");
  37 + if($handle !== false){
  38 + $testar = array("LEGENDAWMS","LEGENDAIMG","KEYIMAGE","TILEINDEX","TILEITEM","SYMBOL","LABELITEM","FILTERITEM","GROUP","ENCODING","TIP","CLASSE","ITENSDESC","CLASSESNOME","ITENSLINK","ESCALA","CLASSESSIMBOLO","MENSAGEM","EXTENSAO","CLASSESITEM","ESCONDIDO","CLASSESCOR","DOWNLOAD","CLASSESTAMANHO","ITENS","TEMA","APLICAEXTENSAO","IDENTIFICA","TRANSITIONEFFECT");
  39 + foreach ($final as $f){
  40 + //
  41 + //remove resultados em branco
  42 + //e grava a linha
  43 + //
  44 + $teste = strtoupper($f);
  45 + $teste = trim($teste);
  46 + $teste = str_replace(array(" ","'",'"'),"",$teste);
  47 + //$teste = str_replace("'","",$teste);
  48 + //$teste = str_replace('"',"",$teste);
  49 + $teste = preg_replace('/[\n\r\t ]*/', '', $teste);
  50 + $passou = true;
  51 + foreach ($testar as $t)
  52 + {
  53 + if($teste == $t){
  54 + $passou = false;
  55 + }
  56 + }
  57 + if($passou == true){
  58 + fwrite($handle,$f);
  59 + }
  60 + }
  61 + fclose($handle);
  62 + return true;
  63 + }
  64 + else{
  65 + return false;
  66 + }
  67 +}
  68 +?>
0 69 \ No newline at end of file
... ...