From 21baff3b6d0dc9648e110e16dc245f2413d82843 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Sat, 28 Mar 2015 15:48:00 +0000 Subject: [PATCH] Novos ícones no editor de mapfiles e mudanças no plugin parametrssql para permitir mudar variaveis apos adicionar a camada ao mapa --- admin/admin.db | Bin 278528 -> 0 bytes admin/imagens/i3geo2.jpg | Bin 0 -> 1862 bytes admin/imagens/i3geo2editor.jpg | Bin 0 -> 2156 bytes admin/js/editormapfile.js | 17 +++++++++-------- admin/php/editormapfile.php | 1 - classesjs/classe_plugini3geo.js | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++------ ferramentas/conectarwms/index.js | 18 +++++++++++++++++- ferramentas/conectarwms/listalayers.php | 37 ++++++++++++++++++++++++++++++++++++- ferramentas/parametrossql/exec.php | 117 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------- ferramentas/parametrossql/index.js | 14 ++++++++++++++ temas/_llocaliphp.map | 4 ++-- 11 files changed, 195 insertions(+), 76 deletions(-) create mode 100755 admin/imagens/i3geo2.jpg create mode 100755 admin/imagens/i3geo2editor.jpg diff --git a/admin/admin.db b/admin/admin.db index 8b8ae16..37127a5 100644 Binary files a/admin/admin.db and b/admin/admin.db differ diff --git a/admin/imagens/i3geo2.jpg b/admin/imagens/i3geo2.jpg new file mode 100755 index 0000000..afc8961 Binary files /dev/null and b/admin/imagens/i3geo2.jpg differ diff --git a/admin/imagens/i3geo2editor.jpg b/admin/imagens/i3geo2editor.jpg new file mode 100755 index 0000000..588bbd9 Binary files /dev/null and b/admin/imagens/i3geo2editor.jpg differ diff --git a/admin/js/editormapfile.js b/admin/js/editormapfile.js index a92c245..e9c490c 100644 --- a/admin/js/editormapfile.js +++ b/admin/js/editormapfile.js @@ -278,20 +278,21 @@ function montaNosRaiz(redesenha) iconePlus = false; conteudo += "("+$mapfiles[i].extensao+") "; } - conteudo += " "; + conteudo += " "; if(iconePlus) - {conteudo += " ";} - conteudo += " "; - conteudo += " "; + {conteudo += " ";} + conteudo += " "; + conteudo += " "; if(iconePlus){ - conteudo += " "; + conteudo += " "; } //opcao de download se for gvsig if($mapfiles[i].extensao === "gvp"){ - conteudo += " "; + conteudo += " "; } - conteudo += " "; - conteudo += " "; + conteudo += " "; + conteudo += " "; + conteudo += " "; conteudo += " "+$mapfiles[i].codigo+" "+$mapfiles[i].nome+""; if($mapfiles[i].imagem != "" && $i("mostraMini").checked == true){ conteudo += "
"; diff --git a/admin/php/editormapfile.php b/admin/php/editormapfile.php index 05a2740..577df37 100644 --- a/admin/php/editormapfile.php +++ b/admin/php/editormapfile.php @@ -137,7 +137,6 @@ switch (strtoupper($funcao)) retornaJSON($layer->getmetadata("PLUGINI3GEO")); break; case "GRAVAPLUGIN": - //echo $plugin;exit; $mapfile = $locaplic."/temas/".$codigoMap.".map"; $mapa = ms_newMapObj($mapfile); $layer = $mapa->getlayerbyname($codigoLayer); diff --git a/classesjs/classe_plugini3geo.js b/classesjs/classe_plugini3geo.js index 85464bf..de3a284 100644 --- a/classesjs/classe_plugini3geo.js +++ b/classesjs/classe_plugini3geo.js @@ -102,6 +102,13 @@ i3GEO.pluginI3geo = formAdmin : function(plugin, configString) { return i3GEO.pluginI3geo[plugin].formAdmin(configString); }, + /** + * Constroi um icone que sera adicionado na barra de icones do tema quando for adicionado na arvore de camadas + * Esse icone e utilizado para reabrir o formulario de parametros + */ + iconeArvoreDeCamadas : function(nomecamada){ + return i3GEO.pluginI3geo[plugin].iconeArvoreDeCamadas(nomecamada); + }, linkAjuda : function(plugin) { return i3GEO.pluginI3geo[plugin].linkAjuda(); }, @@ -234,6 +241,13 @@ i3GEO.pluginI3geo = + " Veja o exemplo utilizado no tema _lmapadecalor.map

"; return ins; }, + /** + * Constroi um icone que sera adicionado na barra de icones do tema quando for adicionado na arvore de camadas + * Esse icone e utilizado para reabrir o formulario de parametros + */ + iconeArvoreDeCamadas : function(nomecamada){ + return false; + }, googlemaps : { aplicaPropriedades : function(camada) { camada.sel = "nao"; @@ -511,6 +525,13 @@ i3GEO.pluginI3geo = return ins; }, + /** + * Constroi um icone que sera adicionado na barra de icones do tema quando for adicionado na arvore de camadas + * Esse icone e utilizado para reabrir o formulario de parametros + */ + iconeArvoreDeCamadas : function(nomecamada){ + return false; + }, googlemaps : { aplicaPropriedades : function(camada) { camada.sel = "nao"; @@ -853,6 +874,13 @@ i3GEO.pluginI3geo = + "

Veja o exemplo utilizado no tema _lmapakml.map

"; return ins; }, + /** + * Constroi um icone que sera adicionado na barra de icones do tema quando for adicionado na arvore de camadas + * Esse icone e utilizado para reabrir o formulario de parametros + */ + iconeArvoreDeCamadas : function(nomecamada){ + return false; + }, googlemaps : { aplicaPropriedades : function(camada) { camada.sel = "nao"; @@ -996,6 +1024,8 @@ i3GEO.pluginI3geo = } } }, + //TODO incluir um marcador que indique se o formulario sera aberto ao adicionar a camada ou nao + //TODO apos adicionar a camada, incluir icone que permita modificar os parametros /** * Section: i3GEO.pluginI3geo.parametrossql * @@ -1018,8 +1048,9 @@ i3GEO.pluginI3geo = * Exemplo: * * "PLUGINI3GEO" - * '{"plugin":"parametrossql","parametros":{[{"titulo":"","tipo":"input|select","valores":[],"chave":"","php":""}]}}' + * '{"plugin":"parametrossql","parametros":{[{"titulo":"","tipo":"input|select","valores":[],"chave":"","prog":"","ativo":sim|nao}]}}' * + * A opção "ativo" indica se o formulário será aberto ou não quando a camada for adicionada ao mapa */ parametrossql : { linkAjuda : function() { @@ -1028,7 +1059,7 @@ i3GEO.pluginI3geo = }, formAdmin : function(config) { var n, i, parametros, ins = "", configDefault = - '{"plugin":"parametrossql","parametros":[{"titulo":"","tipo":"input","valores":[],"chave":"","prog":""},{"titulo":"","tipo":"input","valores":[],"chave":"","prog":""},{"titulo":"","tipo":"input","valores":[],"chave":"","prog":""},{"titulo":"","tipo":"input","valores":[],"chave":"","prog":""}]}'; + '{"plugin":"parametrossql","ativo":"sim","parametros":[{"titulo":"","tipo":"input","valores":[],"chave":"","prog":""},{"titulo":"","tipo":"input","valores":[],"chave":"","prog":""},{"titulo":"","tipo":"input","valores":[],"chave":"","prog":""},{"titulo":"","tipo":"input","valores":[],"chave":"","prog":""}]}'; if (config === "") { config = configDefault; } @@ -1038,7 +1069,18 @@ i3GEO.pluginI3geo = } parametros = config.parametros; n = 4; - ins += ""; + if(config.ativo == undefined){ + config.ativo = "sim"; + } + ins += "

Abre o formulário quando a camada é adicionada ao mapa: (true ou false)

"; + ins += ""; + } else{ + ins += ""; + } + + ins += "
TítuloChaveTipo (input ou select)ValoresPHP que retorna os valores (opcional)
"; for (i = 0; i < n; i++) { ins += " " + ""; + + "' /> " + + ""; } ins += "
TítuloChaveTipo (input ou select)ValoresPHP que retorna os valores (opcional)
" @@ -1063,6 +1106,7 @@ i3GEO.pluginI3geo = + "
Será mostrado ao usuário um formulário com opções. Cada opção conterá um título e um campo de formulário" + "
Cada campo de formulário pode ser dos tipos input (para digitar um valor) ou select (caixa de opções)." + "
Em valores deve ser definida a lista ou o valor default que será mostrado. No caso de listas, utilize vírgula para separar os valores." + + "
Em ativo, é indicado com sim ou nao se o formulário será aberto quando a camada for adicionada ao mapa." + "
Como opcional, pode ser definido o endereço de um programa PHP que retorna a lista de nomes e valores que serão utilizados para preencher " + "o campo de escolha. Para mais informações, veja o mapfile i3geo/temas/_llocaliphp.map. O caminho desse arquivo PHP é relativo à pasta i3geo."; return ins; @@ -1075,7 +1119,7 @@ i3GEO.pluginI3geo = for (j = 0; j < nlinhas; j++) { temp = []; for (i = 0; i < ncampos; i++) { - if(campos[campo]){ + if(campos[campo] && campos[campo].name != ""){ temp.push('"'+campos[campo].name + '" : "' + campos[campo].value @@ -1087,10 +1131,17 @@ i3GEO.pluginI3geo = + temp.join(",") + "}"); } - return '{"plugin":"parametrossql","parametros":[' + return '{"plugin":"parametrossql","ativo":"' + $i("parametrosSqlAtivo").value + '","parametros":[' + par.join(",") + ']}'; }, + /** + * Constroi um icone que sera adicionado na barra de icones do tema quando for adicionado na arvore de camadas + * Esse icone e utilizado para reabrir o formulario de parametros + */ + iconeArvoreDeCamadas : function(nomecamada){ + return false; + }, inicia : function(camada) { i3GEO.janela.fechaAguarde("aguardePlugin"); var iniciaform = function() { diff --git a/ferramentas/conectarwms/index.js b/ferramentas/conectarwms/index.js index 28d8a8d..aff167e 100644 --- a/ferramentas/conectarwms/index.js +++ b/ferramentas/conectarwms/index.js @@ -168,7 +168,7 @@ Veja: */ -function clickGuia3() +function clickGuia3(codLayer) { var listatemas = function(retorno) { @@ -190,6 +190,8 @@ function clickGuia3() $i("textoSLD").style.display = "block"; } } + //ativa um layer caso tenha sido enviado como um parametro no inicio da ferramenta + ativaAutoLayer(codLayer); } else {$i("listatemas").innerHTML = "erro";} @@ -209,6 +211,20 @@ function clickGuia3() cp.call(p,"temaswms",listatemas); } } +function ativaAutoLayer(codLayer){ + if(codLayer && codLayer != ""){ + var container = $i("listatemas"), + rs = container.getElementsByTagName("input"), + nrs = re.lenght, + i,r; + for(i = 0; i < nrs; i++){ + r = rs[i]; + if(r.type === "radio" && r.name === codLayer){ + r.onclick.call(); + } + } + } +} /* Function: registraws diff --git a/ferramentas/conectarwms/listalayers.php b/ferramentas/conectarwms/listalayers.php index e72f825..1cf3818 100644 --- a/ferramentas/conectarwms/listalayers.php +++ b/ferramentas/conectarwms/listalayers.php @@ -1,4 +1,12 @@ + + @@ -43,11 +51,38 @@ p{ " /> + + diff --git a/ferramentas/parametrossql/exec.php b/ferramentas/parametrossql/exec.php index 016d4b2..612f134 100755 --- a/ferramentas/parametrossql/exec.php +++ b/ferramentas/parametrossql/exec.php @@ -16,6 +16,8 @@ Aplica a substituicao de chaves pelos valores enviados //pega o layer $nomeLayer = ""; $c = $map->numlayers; + //obtem o layer existente no mapfile + //esse layer pode conter o nome no metadata nomeoriginal ou em NAME for ($i=0;$i < $c;++$i){ $layer = $map->getlayer($i); if($layer->name == $tema){ @@ -31,68 +33,69 @@ Aplica a substituicao de chaves pelos valores enviados } else{ $layer = $map->getlayerbyname($nomeLayer); - $data = $layer->data; - //pega as chaves do proprio mapfile - $c = $layer->getmetadata("PLUGINI3GEO"); - if($c == ""){ - //tenta pegar os parametros do arquivo mapfile original - $map1 = ms_newMapObj($locaplic."/temas/".$nomeLayer.".map"); - $layer1 = $map1->getlayerbyname($nomeLayer); - $c = $layer1->getmetadata("PLUGINI3GEO"); - if($c == ""){ - $retorno = "erro"; - } + //os parametros do plugin sao obtidos do mapfile original + //isso evita que o mapfile temporario contenha as informacoes + //sobre as variaveis de substituicao + if(file_exists($locaplic."/temas/".$nomeLayer.".map")){ + $map1 = @ms_newMapObj($locaplic."/temas/".$nomeLayer.".map"); } - if($c != ""){ - $cs = json_decode($c,true); - $cs = $cs["parametros"]; - $chaves = array(); - foreach($cs as $c){ - $chaves[] = $c["chave"]; - } - $chaves = implode(",",$chaves); - //verifica se o layer ja teve os parametros substituidos anteriormente - //nesse caso, o data he obtido do metadata que guarda o valor original - if($layer->getmetadata("DATAORIGINAL") != ""){ - $data = $layer->getmetadata("DATAORIGINAL"); - } - else{ - $layer->setmetadata("DATAORIGINAL",$data); - } - $filtro = $layer->getFilterString(); - if($layer->getmetadata("FILTROORIGINAL") != ""){ - $filtro = $layer->getmetadata("FILTROORIGINAL"); - } - else{ - $layer->setmetadata("FILTROORIGINAL",$filtro); - } - $chaves = str_ireplace(array("and", "or", "select","from","where","update","delete","insert","--"),"",$chaves); - $chaves = explode(",",$chaves); - $valores = str_ireplace(array("and", "or", "select","from","where","update","delete","insert","--"),"",$valores); - $valores = explode(",",strip_tags($valores)); - $n = count($chaves); - for($i = 0; $i < $n; $i++){ - if($chaves[$i] != ""){ - $v = $valores[$i]; - $data = str_replace($chaves[$i],$v,$data); - if($filtro != ""){ - $filtro = str_replace($chaves[$i],$v,$filtro); + elseif (file_exists($locaplic."/temas/".$layer->getmetadata("nomeoriginal").".map")){ + $map1 = @ms_newMapObj($locaplic."/temas/".$layer->getmetadata("nomeoriginal").".map"); + } + if($map1){ + $layer1 = $map1->getlayerbyname($nomeLayer); + if($layer1 != ""){ + $data = $layer1->data; + $c = $layer1->getmetadata("PLUGINI3GEO"); + if($c == ""){ + $retorno = "erro"; + } + if($c != ""){ + $cs = json_decode($c,true); + $cs = $cs["parametros"]; + $chaves = array(); + foreach($cs as $c){ + $chaves[] = $c["chave"]; } + $chaves = implode(",",$chaves); + $filtro = $layer1->getFilterString(); + if(!empty($valores)){ + $chaves = str_ireplace(array("and", "or", "select","from","where","update","delete","insert","--"),"",$chaves); + $chaves = explode(",",$chaves); + $valores = str_ireplace(array("and", "or", "select","from","where","update","delete","insert","--"),"",$valores); + $valores = explode(",",strip_tags($valores)); + $n = count($chaves); + for($i = 0; $i < $n; $i++){ + if($chaves[$i] != ""){ + $v = $valores[$i]; + $data = str_replace($chaves[$i],$v,$data); + if($filtro != ""){ + $filtro = str_replace($chaves[$i],$v,$filtro); + } + } + } + if($filtro != ""){ + $layer->setfilter($filtro); + } + $layer->set("data",$data); + } + $layer->set("status",MS_DEFAULT); + $layer->setmetadata("PLUGINI3GEO",'{"plugin":"parametrossql","ativo":"sim","parametros":[{"titulo":"","tipo":"input","valores":[],"chave":"","prog":""}'); + $layer->setmetadata("TEMA",$layer->getmetadata("TEMA")." - ".implode(",",$valores)); + $layer->set("name","plugin".nomeRandomico()); + if (connection_aborted()){ + exit(); + } + $salvo = $map->save($map_file); + $retorno = "ok"; } } - if($filtro != ""){ - $layer->setfilter($filtro); + else{ + $retorno = "layer $nomeLayer nao encontrado"; } - $layer->set("data",$data); - $layer->set("status",MS_DEFAULT); - $layer->setmetadata("PLUGINI3GEO",""); - $layer->setmetadata("TEMA",$layer->getmetadata("TEMA")." - ".implode(",",$valores)); - $layer->set("name","plugin".nomeRandomico()); - if (connection_aborted()){ - exit(); - } - $salvo = $map->save($map_file); - $retorno = "ok"; + } + else{ + $retorno = "mapfile nao encontrado em temas"; } } break; diff --git a/ferramentas/parametrossql/index.js b/ferramentas/parametrossql/index.js index 6e99b83..3c4d466 100755 --- a/ferramentas/parametrossql/index.js +++ b/ferramentas/parametrossql/index.js @@ -106,6 +106,20 @@ i3GEOF.parametrossql = { Cria a janela flutuante para controle da ferramenta. */ iniciaJanelaFlutuante: function(camada){ + //verifica se deve ser aberto o formulario + if(camada.plugini3geo.ativo != undefined && camada.plugini3geo.ativo === "nao"){ + fim = function(){ + i3GEO.atualiza(); + }; + p = i3GEO.configura.locaplic+"/ferramentas/parametrossql/exec.php?g_sid="+i3GEO.configura.sid + + "&funcao=aplicar" + + "&tema=" + camada.name + + "&chaves=&valores="; + cp = new cpaint(); + cp.set_response_type("JSON"); + cp.call(p,"foo",fim); + return; + } var minimiza,cabecalho,janela,divid,temp,titulo; if($i("i3GEOF.parametrossql")){ i3GEOF.parametrossql.inicia("i3GEOF.parametrossql_corpo",camada); diff --git a/temas/_llocaliphp.map b/temas/_llocaliphp.map index ab44d3b..63c8b84 100755 --- a/temas/_llocaliphp.map +++ b/temas/_llocaliphp.map @@ -4,6 +4,7 @@ MAP LAYER CONNECTION "" DATA "/var/www/i3geo/aplicmap/dados/locali.shp" + FILTER (([ANOCRIA] = 1990)) METADATA "METAESTAT_ID_MEDIDA_VARIAVEL" "" "TIP" "TIPO,NOMELOC,ANOCRIA" @@ -35,7 +36,7 @@ MAP "permitecomentario" "SIM" "LTEMPOITEMICONE" "" "metaestat" "" - "PLUGINI3GEO" '{"plugin":"parametrossql","parametros":[{"titulo" : "Ano de criação","chave" : "1990","tipo" : "input","valores" : "","prog" : "aplicmap/dados/listaano.php"},{"titulo" : "","chave" : "","tipo" : "input","valores" : "","prog" : ""},{"titulo" : "","chave" : "","tipo" : "input","valores" : "","prog" : ""},{"titulo" : "","chave" : "","tipo" : "input","valores" : "","prog" : ""}]}' + "PLUGINI3GEO" '{"plugin":"parametrossql","ativo":"nao","parametros":[{"titulo" : "Ano de criação","chave" : "1990","tipo" : "input","valores" : "","prog" : "aplicmap/dados/listaano.php"},{"titulo" : "","chave" : "","tipo" : "input","valores" : "","prog" : ""},{"titulo" : "","chave" : "","tipo" : "input","valores" : "","prog" : ""},{"titulo" : "","chave" : "","tipo" : "input","valores" : "","prog" : ""}]}' "download" "SIM" "itembuscarapida" "NOMELOC" "ITENS" "NOMEMUN,TIPO,NOMELOC,ANOCRIA" @@ -57,7 +58,6 @@ MAP TEMPLATE "none.htm" TILEITEM "location" TYPE POINT - FILTER (([ANOCRIA] = 1990)) UNITS METERS CLASS NAME "Vila" -- libgit2 0.21.2