From 58c46468d67b0b12290eee5a4fea3f97d5c93114 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Wed, 10 Aug 2011 17:19:50 +0000 Subject: [PATCH] Inclusão de opção para remover temas órfãos no sistema de admnistração (temas que não possuem mapfile) --- admin/admin.db | Bin 74752 -> 0 bytes admin/html/editormapfile.html | 3 +++ admin/js/core.js | 21 ++++++++++++--------- admin/js/editormapfile.js | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---- admin/js/listatemas.js | 4 ++-- admin/php/editormapfile.php | 4 +++- admin/php/menutemas.php | 37 +++++++++++++++++++++++++++++++++++++ classesphp/funcoes_gerais.php | 2 ++ temas/biomashp.map | 23 +++++++++++------------ temas/geopr_aneel_linhas.map | 37 ------------------------------------- 10 files changed, 137 insertions(+), 65 deletions(-) delete mode 100644 temas/geopr_aneel_linhas.map diff --git a/admin/admin.db b/admin/admin.db index 9eb3a41..dbdc82f 100644 Binary files a/admin/admin.db and b/admin/admin.db differ diff --git a/admin/html/editormapfile.html b/admin/html/editormapfile.html index d874279..5f34d2b 100644 --- a/admin/html/editormapfile.html +++ b/admin/html/editormapfile.html @@ -40,10 +40,13 @@ arquivo i3geo/ms_configura.php

Apenas os mapfiles que forem vinculados a um tema poderão ser vistos na janela de inclusão de temas na árvore de temas. Se você criou um mapfile manualmente, utilize a opção de edição (ícone apresentado ao lado de cada mapfile) para fazer essa associação. +

A opção "Verifica temas sem mapfiles" possibilita resolver problemas decorrentes da eliminação manual de um arquivo mapfile do servidor. + Nesses casos, o registro no banco de dados permanece. Com essa opção é possível apagar os registros ou recriar o mapfile perdido.

+

Além de criar os mapfiles, é necessário definir as características de cada LAYER nas opções abaixo.
diff --git a/admin/js/core.js b/admin/js/core.js index f8830b0..01e899b 100644 --- a/admin/js/core.js +++ b/admin/js/core.js @@ -69,7 +69,7 @@ function cabecalhoGeral(id,excluir){ var i,n,temp, ins = "
Opções principais", botoes = [ - {id:"principal",titulo:"Principal",link:"../index.html"}, + {id:"principal",titulo:"Início",link:"../index.html"}, {id:"menus",titulo:"Menus",link:"menus.html"}, {id:"arvore",titulo:"Árvore de temas",link:"arvore.html"}, {id:"editormapfile",titulo:"Mapfiles",link:"editormapfile.html"}, @@ -248,6 +248,8 @@ function core_carregando(tipo) YAHOO.example.container.wait.setBody(""); YAHOO.example.container.wait.render(document.body); } + else + {YAHOO.example.container.wait.show();} YAHOO.example.container.wait.setBody(""); if(tipo == "ativa") {YAHOO.example.container.wait.show();} @@ -1018,14 +1020,13 @@ function core_pegaDados(mensagem,sUrl,funcaoRetorno) try { if(funcaoRetorno != "") - eval(funcaoRetorno+"(YAHOO.lang.JSON.parse(o.responseText))"); - else + {eval(funcaoRetorno+"(YAHOO.lang.JSON.parse(o.responseText))");} core_carregando("desativa"); } catch(e) { if("mensagem" != "") - core_carregando("desativa"); + {core_carregando("desativa");} core_handleFailure(o,o.responseText); } }, @@ -1176,9 +1177,11 @@ function core_excluiNoTree(sUrl,no,mensagem) } else { - tree.removeNode(no); - tree.draw(); - core_carregando("desativa"); + if(no){ + tree.removeNode(no); + tree.draw(); + } + core_carregando("desativa"); } } catch(e){core_handleFailure(o,o.responseText);} @@ -1222,7 +1225,7 @@ function core_montaEditor(funcaoOK,w,h,funcaoClose) var w = "400px"; var h = w; } - if(!YAHOO.example.container.panelEditor) + if(!$i("janela_editor")) { var novoel = document.createElement("div"); novoel.id = "janela_editor"; @@ -1256,7 +1259,7 @@ function core_montaEditor(funcaoOK,w,h,funcaoClose) else { if($i("editor_bd")) - $i("editor_bd").innerHTML == "" + {$i("editor_bd").innerHTML == "";} } var fecha = function() { diff --git a/admin/js/editormapfile.js b/admin/js/editormapfile.js index af958bd..88278de 100644 --- a/admin/js/editormapfile.js +++ b/admin/js/editormapfile.js @@ -140,12 +140,23 @@ Inicializa a árvore de edição */ function initMenu() { - ativaBotaoAdicionaMapfile("adiciona") + ativaBotaoAdicionaMapfile("adiciona"); + ativaBotaoVerificarOrfaos("semmapfiles"); + core_carregando("ativa"); core_carregando("buscando temas..."); core_ativaPainelAjuda("ajuda","botaoAjuda"); core_pegaMapfiles("montaArvore()") } +function ativaBotaoVerificarOrfaos(idBotao) +{ + var temp = function(){ + core_montaEditor("","450px","660px"); + verificaOrfaos(); + }; + //cria o botão de adição de um novo menu + var verifica = new YAHOO.widget.Button(idBotao,{ onclick: { fn: temp } }); +} function ativaBotaoAdicionaMapfile(idBotao) { var adiciona = function() @@ -518,6 +529,58 @@ function editorDeTexto(codigoMap) core_makeRequest(sUrl,callback) } /* +Function: verificaOrfaos + +Verifica se existem temas cadastrados no banco de dados e que não possuem mapfile associado. + +É mostrada ujma lista dos casos e opção para apagar o registro do banco ou criar novamente o mapfile + + +*/ +function verificaOrfaos() +{ + sUrl = "../php/menutemas.php?funcao=verificaOrfaos"; + core_carregando("ativa"); + core_carregando(" verificando"); + + var callback = + { + success:function(o) + { + try + { + if(YAHOO.lang.JSON.parse(o.responseText) == "erro") + { + core_carregando("Erro"); + setTimeout("core_carregando('desativa')",3000) + } + else + { + core_carregando("desativa"); + var ins = "

Os temas listados a seguir não possuem mapfiles criados. Você pode excluir o registro do tema (remoção do banco de dados) clicando na opção 'excluir' ou criar o mapfile na opção existente no formulário principal.", + d = YAHOO.lang.JSON.parse(o.responseText), + n = d.length, + i,ima; + for(i=0;i'; + ins += "

"+ima+d[i].nome_tema+" "+d[i].codigo_tema+" id: "+d[i].id_tema+""; + } + $i("editor_bd").innerHTML = ins; + } + } + catch(e){core_handleFailure(e,o.responseText);} + }, + failure:core_handleFailure, + argument: { foo:"foo", bar:"bar" } + }; + core_makeRequest(sUrl,callback) +} +function excluirOrfao(codigo_tema){ + excluirMapfile(codigo_tema); + YAHOO.example.container.panelEditor.destroy(); + YAHOO.example.container.panelEditor = null; +} +/* Function: adicionaNovoMapfile Adiciona um novo mapfile @@ -701,7 +764,7 @@ function classesAuto(codigoMap,codigoLayer) if(!YAHOO.example.container.panelEditorAutoClasses) { var novoel = document.createElement("div"); - novoel.id = "janela_editor"; + novoel.id = "janela_editor_auto"; var ins = '

Editor
'; ins += "
"; ins += "
"; @@ -713,7 +776,7 @@ function classesAuto(codigoMap,codigoLayer) { label: "Cancela", value: "CANCEL", checked: false } ]); editorBotoes.on("checkedButtonChange", on_editorCheckBoxChange); - YAHOO.example.container.panelEditorAutoClasses = new YAHOO.widget.Panel("janela_editor", { fixedcenter:true,close:true,width:"400px", height:"400px",overflow:"auto", visible:false,constraintoviewport:true } ); + YAHOO.example.container.panelEditorAutoClasses = new YAHOO.widget.Panel("janela_editor_auto", { fixedcenter:true,close:true,width:"400px", height:"400px",overflow:"auto", visible:false,constraintoviewport:true } ); YAHOO.example.container.panelEditorAutoClasses.render(); var sUrl = "../php/editormapfile.php?funcao=pegaItensLayer&codigoMap="+codigoMap+"&codigoLayer="+codigoLayer; var callback = @@ -831,7 +894,7 @@ function excluirMapfile(codigoMap) var mensagem = " excluindo "+codigoMap; var no = tree.getNodeByProperty("id",codigoMap) var sUrl = "../php/editormapfile.php?funcao=excluirMapfile&codigoMap="+codigoMap; - core_excluiNoTree(sUrl,no,mensagem) + core_excluiNoTree(sUrl,no,mensagem) } /* Function: clonarMapfile diff --git a/admin/js/listatemas.js b/admin/js/listatemas.js index f3653e6..967201c 100644 --- a/admin/js/listatemas.js +++ b/admin/js/listatemas.js @@ -24,7 +24,7 @@ function montaEditorTema(dados) if(!YAHOO.example.container.panelEditorTema) { var novoel = document.createElement("div"); - novoel.id = "janela_editor"; + novoel.id = "janela_editor_tema"; var ins = '
Editor
'; ins += "
"; ins += "
"; @@ -36,7 +36,7 @@ function montaEditorTema(dados) { label: "Cancela", value: "CANCEL", checked: false } ]); editorBotoes.on("checkedButtonChange", on_editorCheckBoxChange); - YAHOO.example.container.panelEditorTema = new YAHOO.widget.Panel("janela_editor", { fixedcenter:true,close:true,width:"400px", height:"400px",overflow:"auto", visible:false,constraintoviewport:true } ); + YAHOO.example.container.panelEditorTema = new YAHOO.widget.Panel("janela_editor_tema", { fixedcenter:true,close:true,width:"400px", height:"400px",overflow:"auto", visible:false,constraintoviewport:true } ); YAHOO.example.container.panelEditorTema.render(); var fecha = function() { diff --git a/admin/php/editormapfile.php b/admin/php/editormapfile.php index 968b1df..9a961a0 100644 --- a/admin/php/editormapfile.php +++ b/admin/php/editormapfile.php @@ -304,6 +304,7 @@ switch (strtoupper($funcao)) retornaJSON(excluirLayer()); exit; break; + /* Valor: LISTACLASSES @@ -1312,6 +1313,7 @@ function alterarConexao() function pegaMetadados() { global $codigoMap,$codigoLayer,$locaplic,$postgis_mapa; + //error_reporting(E_ALL); $dados = array(); $mapfile = $locaplic."/temas/".$codigoMap.".map"; $mapa = ms_newMapObj($mapfile); @@ -1361,7 +1363,7 @@ function pegaMetadados() $dados["permitecomentario"] = $layer->getmetadata("permitecomentario"); $dados["itembuscarapida"] = $layer->getmetadata("itembuscarapida"); $dados["legendaimg"] = $layer->getmetadata("legendaimg"); - if($layer->connectiontype == 7 || $layer->connectiontype== 9){ + if($layer->connectiontype == 7 || $layer->connectiontype == 9){ $dados["wms_srs"] = $layer->getmetadata("wms_srs"); $dados["wms_name"] = $layer->getmetadata("wms_name"); $dados["wms_server_version"] = $layer->getmetadata("wms_server_version"); diff --git a/admin/php/menutemas.php b/admin/php/menutemas.php index 9154122..fcc3513 100644 --- a/admin/php/menutemas.php +++ b/admin/php/menutemas.php @@ -558,6 +558,19 @@ switch (strtoupper($funcao)) retornaJSON(listaMapsTemas()); exit; break; + /* + Valor: VERIFICAORFAOS + + Verifica se existem temas sem o correspondente mapfile + + Retorno: + + {JSON} + */ + case "VERIFICAORFAOS": + retornaJSON(verificaOrfaos()); + exit; + break; } function excluiPerfil($id) { @@ -1131,7 +1144,31 @@ function listaMapsTemas() } return $lista; } +/* +Retorna a lista de temas sem mapfiles +*/ +function verificaOrfaos() +{ + global $cp,$locaplic; + $arquivos = array(); + // + //pega o nome de cada tema + // + $sql = "select nome_tema,codigo_tema,id_tema from i3geoadmin_temas "; + $dbh = ""; + include($locaplic."/admin/php/conexao.php"); + $q = $dbh->query($sql,PDO::FETCH_ASSOC); + $regs = $q->fetchAll(); + $nomes = array(); + foreach($regs as $reg){ + if(!file_exists($locaplic."/temas/".$reg["codigo_tema"].".map") && !file_exists($locaplic."/temas/".$reg["codigo_tema"].".php")){ + $nomes[] = array("nome_tema"=>$reg["nome_tema"],"codigo_tema"=>$reg["codigo_tema"],"id_tema"=>$reg["id_tema"]); + } + } + sort($nomes); + return $nomes; +} function removeCabecalho($arq,$symbolset=true) { $handle = fopen($arq, "r"); diff --git a/classesphp/funcoes_gerais.php b/classesphp/funcoes_gerais.php index 70c5e1e..5214edf 100644 --- a/classesphp/funcoes_gerais.php +++ b/classesphp/funcoes_gerais.php @@ -1356,6 +1356,8 @@ function pegaItens($layer,$mapa="") $url = $url."&SERVICE=wfs&VERSION=1.1.0&REQUEST=DescribeFeatureType&TYPENAME=".$layer->getmetadata("wms_name"); //$url = "http://ogi.state.ok.us/geoserver/wfs?VERSION=1.1.0&REQUEST=DescribeFeatureType&TYPENAME=okcounties"; $xml = simplexml_load_file($url); + if($xml == false) + {return array();} $dom = new DOMDocument(); $dom->loadXML($xml->asxml()); $items = array(); diff --git a/temas/biomashp.map b/temas/biomashp.map index 605bb4f..d168bc8 100644 --- a/temas/biomashp.map +++ b/temas/biomashp.map @@ -6,30 +6,30 @@ MAP DATA "c:\ms4w\apache\htdocs\i3geo\aplicmap\dados\biomas.shp" GROUP "Grupo 1" METADATA - "cache" "" "ltempoitemimagem" "" - "ltempoitemdescricao" "" + "cache" "" "CLASSE" "SIM" - "ltempoiteminicio" "" + "ltempoitemdescricao" "" "palletestep" "" - "ltempoitemtip" "" + "ltempoiteminicio" "" "permitekmz" "sim" - "ltempoitemtitulo" "" - "description_template" "" + "ltempoitemtip" "" "iconetema" "http://www.gpsdrive.de/development/map-icons/square.small/leisure/park.png" + "description_template" "" + "ltempoitemtitulo" "" "ltempoitemlink" "" - "extensao" "-44 -23 -39 -21" "palletefile" "" - "ltempoformatodata" "" + "extensao" "-44 -23 -39 -21" "permitedownload" "sim" + "ltempoformatodata" "" "ltempoitemicone" "" "download" "SIM" - "permiteogc" "" "permitekml" "sim" + "permiteogc" "" "TEMA" "biomashp" - "aplicaextensao" "SIM" - "editorsql" "" "identifica" "NAO" + "editorsql" "" + "aplicaextensao" "SIM" "ltempoitemfim" "" END NAME "biomashp" @@ -44,7 +44,6 @@ MAP STYLE ANGLE 360 COLOR 21 44 114 - SYMBOL 0 WIDTH 1 END END diff --git a/temas/geopr_aneel_linhas.map b/temas/geopr_aneel_linhas.map deleted file mode 100644 index b48ca9f..0000000 --- a/temas/geopr_aneel_linhas.map +++ /dev/null @@ -1,37 +0,0 @@ -MAP - FONTSET "../symbols/fontes.txt" - SYMBOLSET "../symbols/simbolos.sym" - LAYER - CONNECTION "http://sigel.aneel.gov.br/wmsconnector/com.esri.wms.Esrimap/gsiwms?" - CONNECTIONTYPE WMS - DATA "" - METADATA - "wms_srs" "EPSG:4326" - "wms_exceptions_format" "application/vnd.ogc.se_xml" - "CLASSE" "SIM" - "wfs" "nao" - "wms_force_separate_request" "1" - "TEXTO" "NAO" - "legendawms" "http://sigel.aneel.gov.br/wmsconnector/com.esri.wms.Esrimap/gsiwms?&service=wms&request=getlegendgraphic&version=1.1.1&service=wms&layer=3&format=image/png" - "formatosinfo" "application/vnd.ogc.wms_xml,text/xml,text/html,text/plain" - "wms_name" "3" - "wms_format" "image/png" - "wms_formatlist" "image/png,image/jpeg" - "wms_connectiontimeout" "30" - "TEMA" "Linhas de Transmissão" - "wms_server_version" "1.1.1" - "wms_style" "default" - END - NAME "geopr_aneel_linhas" - OFFSITE 255 255 255 - STATUS DEFAULT - TOLERANCE 0 - TYPE RASTER - UNITS METERS - CLASS - NAME " " - END - END - -END - -- libgit2 0.21.2