From c9dfcd39c14bcb12cf86fa86c18e3fddfb4156a4 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Sat, 31 Mar 2018 12:14:11 -0300 Subject: [PATCH] Alteração na forma como o download de um tema é feito, para gerar um arquivo zip apenas e fazer o download automaticamente --- classesphp/funcoes_gerais.php | 101 +++++++++++++++++++++++++++++++++++++++++++---------------------------------------------------------- classesphp/mapa_controle.php | 13 +++++++++++++ ferramentas/download/dicionario.js | 16 ++++++++-------- ferramentas/download/forcedownload.php | 21 +++++++++++++++++++++ ferramentas/download/index.js | 21 +++++++++++---------- 5 files changed, 96 insertions(+), 76 deletions(-) create mode 100644 ferramentas/download/forcedownload.php diff --git a/classesphp/funcoes_gerais.php b/classesphp/funcoes_gerais.php index 5639f48..50db90b 100755 --- a/classesphp/funcoes_gerais.php +++ b/classesphp/funcoes_gerais.php @@ -1807,60 +1807,47 @@ function downloadTema2($map_file, $tema, $locaplic, $dir_tmp, $postgis_mapa) $map = ms_newMapObj($map_file); $rectextent = $map->extent; $extensao = ".map"; - if (file_exists($locaplic . "/temas/" . $tema . ".gvp")) { - $extensao = ".gvp"; - } - if ($extensao == ".map") { - // - // problema aqui - // $tema pode ser diferente do nome do mapfile - // - $teste = @$map->getlayerbyname($tema); - // caso o usuario tenha usado caixa alta no nome do layer - if ($teste == "") { - $teste = @$map->getlayerbyname(strtoupper($tema)); + // + // problema aqui + // $tema pode ser diferente do nome do mapfile + // + $teste = @$map->getlayerbyname($tema); + // caso o usuario tenha usado caixa alta no nome do layer + if ($teste == "") { + $teste = @$map->getlayerbyname(strtoupper($tema)); + } + // se o layer não existir no mapfile, pega da pasta i3geo/temas e adiciona em $map + if ($teste == "") { + // tema pode ser o nome de um arquivo mapfile + if (file_exists($tema . ".map")) { + $maptemp = ms_newMapObj($tema . ".map"); + $tema = basename($tema); + } else { + $maptemp = ms_newMapObj($temasdir . "/" . $tema . ".map"); } - // se o layer não existir no mapfile, pega da pasta i3geo/temas e adiciona em $map - if ($teste == "") { - // tema pode ser o nome de um arquivo mapfile - if (file_exists($tema . ".map")) { - $maptemp = ms_newMapObj($tema . ".map"); - $tema = basename($tema); - } else { - $maptemp = ms_newMapObj($temasdir . "/" . $tema . ".map"); - } - $numlayers = $maptemp->numlayers; - for ($i = 0; $i < $numlayers; ++ $i) { - $ll = $maptemp->getlayer($i); - $permite = $ll->getmetadata("permitedownload"); - if ($permite != "nao") { - ms_newLayerObj($map, $ll); - } + $numlayers = $maptemp->numlayers; + for ($i = 0; $i < $numlayers; ++ $i) { + $ll = $maptemp->getlayer($i); + $permite = $ll->getmetadata("permitedownload"); + if ($permite != "nao") { + ms_newLayerObj($map, $ll); } - $teste = @$map->getlayerbyname($tema); - if ($teste == "") { - $ll = $maptemp->getlayer(0); - $permite = $ll->getmetadata("permitedownload"); - if ($permite != "nao") { - ms_newLayerObj($map, $ll); - $tema = $ll->name; - } + } + $teste = @$map->getlayerbyname($tema); + if ($teste == "") { + $ll = $maptemp->getlayer(0); + $permite = $ll->getmetadata("permitedownload"); + if ($permite != "nao") { + ms_newLayerObj($map, $ll); + $tema = $ll->name; } - } else { - // remove o metadata com um nome de arquivo opcional, pois a função de download pode estar sendo executada da árvore de camadas - $teste = $map->getlayerbyname($tema); - $teste->setmetadata("arquivodownload", ""); } } else { - include_once ($locaplic . "/pacotes/gvsig/gvsig2mapfile/class.gvsig2mapfile.php"); - $gm = new gvsig2mapfile($locaplic . "/temas/" . $tema . ".gvp"); - $gvsigview = $gm->getViewsNames(); - foreach ($gvsigview as $gv) { - $dataView = $gm->getViewData($gvsigview); - $map = $gm->addLayers($map, $gvsigview, $dataView["layerNames"]); - $temas = array_merge($temas, $gm->nomesLayersAdicionados); - } + // remove o metadata com um nome de arquivo opcional, pois a função de download pode estar sendo executada da árvore de camadas + $teste = $map->getlayerbyname($tema); + $teste->setmetadata("arquivodownload", ""); } + // // salva o mapfile com um outro nome para evitar que o mapa atual, se estiver aberto, seja modificado // @@ -1883,7 +1870,6 @@ function downloadTema2($map_file, $tema, $locaplic, $dir_tmp, $postgis_mapa) // verifica se existe mais de um tema (grupo) montando o array com os temas // os grupos podem ter o nome do layer em GROUP ao invés de NAME // - if ($extensao == ".map") { $multilayer = 0; $grupos = $map->getAllGroupNames(); foreach ($grupos as $grupo) { @@ -1904,7 +1890,6 @@ function downloadTema2($map_file, $tema, $locaplic, $dir_tmp, $postgis_mapa) if ($multilayer == 0) { $temas[] = $tema; } - } // $temas agora é um array com os NAMEs dos LAYERS que serão baixados $radtmp = dirname($dir_tmp); $ziper = new zipfile(); @@ -2472,16 +2457,16 @@ function seems_utf8($Str) */ function removeAcentos($s) { - $s = ereg_replace("[áàâã]", "a", $s); - $s = ereg_replace("[ÁÀÂÃ]", "A", $s); - $s = ereg_replace("[éèê]", "e", $s); + $s = ereg_replace("[á�âã]", "a", $s); + $s = ereg_replace("[Á�ÂÃ]", "A", $s); + $s = ereg_replace("[é�ê]", "e", $s); $s = ereg_replace("[í]", "i", $s); $s = ereg_replace("[Í]", "I", $s); - $s = ereg_replace("[ÉÈÊ]", "E", $s); - $s = ereg_replace("[óòôõ]", "o", $s); - $s = ereg_replace("[ÓÒÔÕ]", "O", $s); - $s = ereg_replace("[úùû]", "u", $s); - $s = ereg_replace("[ÚÙÛ]", "U", $s); + $s = ereg_replace("[É�Ê]", "E", $s); + $s = ereg_replace("[��ôõ]", "o", $s); + $s = ereg_replace("[��ÔÕ]", "O", $s); + $s = ereg_replace("[ú��]", "u", $s); + $s = ereg_replace("[Ú��]", "U", $s); $s = str_replace("ç", "c", $s); $s = str_replace("Ç", "C", $s); // $str = htmlentities($s); diff --git a/classesphp/mapa_controle.php b/classesphp/mapa_controle.php index f598bf8..51e797b 100755 --- a/classesphp/mapa_controle.php +++ b/classesphp/mapa_controle.php @@ -1035,6 +1035,19 @@ switch (strtoupper($funcao)) { case "DOWNLOAD2": $retorno = downloadTema2($map_file, $_pg["tema"], $locaplic, $dir_tmp, $postgis_mapa); break; + /* + * Valor: DOWNLOAD3 + * + * Gera um arquivo para download de um tema. + */ + case "DOWNLOAD3": + $retorno = downloadTema2($map_file, $_pg["tema"], $locaplic, $dir_tmp, $postgis_mapa); + $retorno["arquivos"] = ""; + $retorno["datas"] = ""; + $_SESSION["downloadZipTema"] = $retorno["shape-zip"]; + $retorno["shape-zip"] = ""; + session_write_close(); + break; /* * Valor: DOWNLOAD3 * diff --git a/ferramentas/download/dicionario.js b/ferramentas/download/dicionario.js index 40ae216..7fd740f 100755 --- a/ferramentas/download/dicionario.js +++ b/ferramentas/download/dicionario.js @@ -1,9 +1,9 @@ //+$trad(1,i3GEOF.download.dicionario)+ i3GEOF.download.dicionario = { 'download' : [ { - pt : "Clique com o botão da direita do mouse sobre o(s) arquivo(s) abaixo para fazer o download.", - en : "Click the right mouse button on the file(s) below to download.", - es : "Haga clic con el botón derecho del ratón sobre el (los) archivo (s) abajo para descargar." + pt : "Gerando arquivo...", + en : "", + es : "" } ], 'erroTema' : [ { pt : "Ocorreu um erro. O tema não foi encontrado. Pode ser que o código do tema não existe na definição do mapfile. Informe o administrador do sistema.", @@ -15,9 +15,9 @@ i3GEOF.download.dicionario = { en : "Number of records", es : "Número de registros" } ], - 'pagdownload' : [ { - pt : "Acesse aqui a página de download, que contém mais opções", - en : "For more options, access the download page here", - es : "Para más opciones, acceda aquí a la página de descarga" - } ] + 'arquivook' : [ { + pt : "Arquivo gerado", + en : "", + es : "" + } ] }; \ No newline at end of file diff --git a/ferramentas/download/forcedownload.php b/ferramentas/download/forcedownload.php new file mode 100644 index 0000000..9cb920c --- /dev/null +++ b/ferramentas/download/forcedownload.php @@ -0,0 +1,21 @@ + \ No newline at end of file diff --git a/ferramentas/download/index.js b/ferramentas/download/index.js index 8c15ad4..a6e002f 100755 --- a/ferramentas/download/index.js +++ b/ferramentas/download/index.js @@ -91,7 +91,7 @@ i3GEOF.download = { */ html:function(divid,tema){ var cp,p,ins,mostraDownload,c; - ins = '
'+$trad('download',i3GEOF.download.dicionario)+'
'; + ins = '
'+$trad('download',i3GEOF.download.dicionario)+'
'; ins += '
'; $i(divid).innerHTML += ins; c = i3GEO.arvoreDeCamadas.pegaTema(tema); @@ -113,17 +113,18 @@ i3GEOF.download = { ins = "
"+$trad('erroTema',i3GEOF.download.dicionario)+"
"; } else{ - for (arq=0;arq"+arqs[arq]+""; - } + ins += "
" + $trad('arquivook',i3GEOF.download.dicionario) + "
"; + var url = i3GEO.configura.locaplic + "/ferramentas/download/forcedownload.php?g_sid=" + i3GEO.configura.sid; + var link = document.createElement("a"); + $(link).click(function(e) { + e.preventDefault(); + window.location.href = url; + }); + $(link).click(); } if(retorno.nreg){ - ins += "
"+$trad('registros',i3GEOF.download.dicionario)+" ="+retorno.nreg + "
"; + ins += "
"+$trad('registros',i3GEOF.download.dicionario)+" ="+retorno.nreg + "
"; } - temp = i3GEO.configura.locaplic+"/datadownload.htm?tema="+tema+"&temaDownload="+tema; - ins += "
"; - ins += ""+$trad('pagdownload',i3GEOF.download.dicionario)+"
"; - } else{ ins = "
"+$trad("x66")+"
"; @@ -131,7 +132,7 @@ i3GEOF.download = { $i("i3GEOdownloadResultado").innerHTML = ins + "
"; i3GEOF.download.aguarde.visibility = "hidden"; }; - p = i3GEO.configura.locaplic+"/classesphp/mapa_controle.php?g_sid="+i3GEO.configura.sid+"&funcao=download2&tema="+tema; + p = i3GEO.configura.locaplic+"/classesphp/mapa_controle.php?g_sid="+i3GEO.configura.sid+"&funcao=download3&tema="+tema; cp = new cpaint(); cp.set_response_type("JSON"); cp.call(p,"downloadTema",mostraDownload); -- libgit2 0.21.2