From 5d2661f93b56e3de49823e955c8edf216072ed63 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Thu, 26 Jun 2008 16:21:59 +0000 Subject: [PATCH] --- admin/html/testemenu.html | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ admin/js/admin.js | 3 +++ admin/js/core.js | 255 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ admin/js/menu.js | 183 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ admin/js/menutemas.js | 1 + admin/php/admin.php | 2 +- admin/php/menutemas.php | 21 +++++++++++++++++---- admin/rssgrupos.php | 1 + admin/rsssubgrupos.php | 1 + admin/rsstemas.php | 1 + admin/xmlatlas.php | 1 + admin/xmlgeorss.php | 1 + admin/xmlidentifica.php | 1 + admin/xmllinksdownload.php | 1 + admin/xmlmapas.php | 1 + admin/xmlmenutemas.php | 1 + admin/xmlservicoswms.php | 1 + admin/xmlservicosws.php | 1 + admin/xmlsistemas.php | 1 + 19 files changed, 521 insertions(+), 5 deletions(-) create mode 100644 admin/html/testemenu.html create mode 100644 admin/js/core.js create mode 100644 admin/js/menu.js diff --git a/admin/html/testemenu.html b/admin/html/testemenu.html new file mode 100644 index 0000000..3304266 --- /dev/null +++ b/admin/html/testemenu.html @@ -0,0 +1,49 @@ + + + + + Menus + + + + + +
+
+

Administração do i3geo - menu de temas

+ +
+
+
Ajuda
+
+ Este programa permite editar a lista de menus.

+ Você pode criar vários menus e depois acrescentar grupos, subgrupos e temas em cada um. + Cada menu é mostrado como uma árvore na guia de adição de temas do i3geo.

+ O menu é baseado no banco admin.db e os usuários que não são editores podem + ver apenas os menus publicados.

+ Os perfis que podem ser definidos para cada menu, são obtidos da tabela de perfis. Veja + o menu principal do sistema de administração para maiores detalhes.

+ A lista de IPs dos usuários que podem editar os menu é definida no + arquivo i3geo/ms_configura.php +
+
+
+ +
+

Menus existentes: (clique na célula para editar e salve a linha editada)

+
+
+
+
+ + diff --git a/admin/js/admin.js b/admin/js/admin.js index 1560cab..17f4e13 100644 --- a/admin/js/admin.js +++ b/admin/js/admin.js @@ -34,6 +34,9 @@ $mensagemAguarde = "";//""; + log.innerHTML += "
  • HTTP status: " + o.status + "
  • "; + log.innerHTML += "
  • Status code message: " + o.statusText + "
  • "; + log.innerHTML += "
  • HTTP headers:
      " + o.getAllResponseHeaders + "
  • "; + log.innerHTML += "
  • Server response: " + o.responseText + "
  • "; + log.innerHTML += "
  • Argument object: Object ( [foo] => " + o.argument.foo + " [bar] => " + o.argument.bar +" )
  • "; + } +} +/* +Function: core_handleFailure + +Processa o retorno da chamada em ajax quando tiver falhado. + +Parameters: + +o - string retornada pelo ajax +*/ +function core_handleFailure(o,texto) +{ + //div onde será mostrado o log + if(!$i('logajax')) + {document.body.innerHTML += "
    ";} + log = $i('logajax'); + YAHOO.log("The failure handler was called. tId: " + o.tId + ".", "info", "example"); + if(o.responseText !== undefined) + { + log.innerHTML = ""; + } + if (!YAHOO.example.container.wait) + { + YAHOO.example.container.wait = new YAHOO.widget.Panel("wait",{width: "240px",fixedcenter: true,close: true,draggable: false,zindex:4,modal: true,visible: false}); + YAHOO.example.container.wait.setHeader("Aguarde..."); + YAHOO.example.container.wait.render(document.body); + } + else + {YAHOO.example.container.wait.setBody(log.innerHTML);} +} +/* +Function: core_makeRequest + +Executa uma chamada em ajax. + +Parameters: + +sUrl - url que será executada + +callback - função que processará o retorno +*/ +function core_makeRequest(sUrl,callback) +{ + var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback); + YAHOO.log("Initiating request; tId: " + request.tId + ".", "info", "example"); +} +/* +Function: core_carregando + +Mostra uma janela de aguarde +*/ +function core_carregando() +{ + if (!YAHOO.example.container.wait) + { + YAHOO.example.container.wait = new YAHOO.widget.Panel("wait",{width: "240px",fixedcenter: true,close: true,draggable: false,zindex:4,modal: true,visible: false}); + YAHOO.example.container.wait.setHeader("Aguarde..."); + YAHOO.example.container.wait.setBody(""); + YAHOO.example.container.wait.render(document.body); + } + YAHOO.example.container.wait.show(); +} +/* +Function: core_dialogoContinua + +Mostra um diálogo do tipo sim não + +Parameters: + +handleYes - função para sim + +handleNo - função para não + +mensagem - mensagem do diálogo + +largura - largura do diálogo em px +*/ +function core_dialogoContinua(handleYes,handleNo,mensagem,largura) +{ + if(!$i("dialogoContinua")) + {document.body.innerHTML += "
    ";} + // Instantiate the Dialog + YAHOO.namespace("continua.container"); + YAHOO.continua.container.simpledialog1 = + new YAHOO.widget.SimpleDialog("simpledialog1", + { width: largura+"px", + fixedcenter: true, + visible: false, + draggable: false, + close: true, + text: mensagem, + icon: YAHOO.widget.SimpleDialog.ICON_HELP, + modal: true, + constraintoviewport: true, + buttons: [ { text:"Sim", handler:handleYes, isDefault:true }, + { text:"Não", handler:handleNo } ] + } ); + YAHOO.continua.container.simpledialog1.setHeader("Tem certeza?"); + YAHOO.continua.container.simpledialog1.render("dialogoContinua"); + YAHOO.continua.container.simpledialog1.show(); +} +/* +Function: core_ativaPainelAjuda + +Parameters: + +id - id do elemento que receberá o painel + +botao - id do elemento que deverá ser lcicado para abrir o painel +*/ +function core_ativaPainelAjuda(id,botao) +{ + YAHOO.example.container.panelAjuda = new YAHOO.widget.Panel(id, { width:"350px", height:"200px",overflow:"auto", visible:false,constraintoviewport:true } ); + YAHOO.example.container.panelAjuda.render(); + YAHOO.util.Event.addListener(botao, "click", YAHOO.example.container.panelAjuda.show, YAHOO.example.container.panelAjuda, true); +} + +// +//define o local correto dos programas +var scriptLocation = ""; +var scripts = document.getElementsByTagName('script'); +var i = 0; +for (i = 0; i < scripts.length; i++) { + var src = scripts[i].getAttribute('src'); + if (src) { + var index = src.lastIndexOf("core.js"); + // is it found, at the end of the URL? + if ((index > -1) && (index + "core.js".length == src.length)) { + scriptLocation = src.slice(0, -"core.js".length); + break; + } + } +} +// +//arquivos javascript que serão carregados +// +var jsfiles = new Array( +"../../pacotes/yui252/build/utilities/utilities.js", +"../../pacotes/yui252/build/yahoo-dom-event/yahoo-dom-event.js", +"../../pacotes/yui252/build/element/element-beta-min.js", +"../../pacotes/yui252/build/datasource/datasource-beta-min.js", +"../../pacotes/yui252/build/datatable/datatable-beta-min.js", +"../../pacotes/yui252/build/button/button-min.js", +"../../pacotes/yui252/build/dragdrop/dragdrop-min.js", +"../../pacotes/yui252/build/container/container-min.js", +"../../pacotes/yui252/build/connection/connection-min.js", +"../../pacotes/yui252/build/json/json-min.js" +); +// +//arquivos css +// +var cssfiles =new Array( +"../html/admin.css", +"../../pacotes/yui252/build/fonts/fonts-min.css", +"../../pacotes/yui252/build/datatable/assets/skins/sam/datatable.css", +"../../pacotes/yui252/build/button/assets/skins/sam/button.css", +"../../pacotes/yui252/build/container/assets/skins/sam/container.css" +); +// +//carrega os arquivos js +// +var allScriptTags = ""; +for (i = 0; i < jsfiles.length; i++) +{ + var currentScriptTag = ""; + allScriptTags += currentScriptTag; +} +document.write(allScriptTags); +// +//carrega os arquivos css +// +var allCssTags = ""; +for (i = 0; i < cssfiles.length; i++) +{ + var currentCssTag = ""; + allCssTags += currentCssTag; +} +document.write(allCssTags); + + + + diff --git a/admin/js/menu.js b/admin/js/menu.js new file mode 100644 index 0000000..cab4a06 --- /dev/null +++ b/admin/js/menu.js @@ -0,0 +1,183 @@ +YAHOO.namespace("example.container"); +function initMenu() +{ + ativaBotaoAdicionaMenu() + core_carregando(); + core_ativaPainelAjuda("ajuda","botaoAjuda"); + pegaMenus(); + pegaPerfis(); +} +function ativaBotaoAdicionaMenu() +{ + var adicionalinha = function() + { + core_carregando(); + var sUrl = "../php/menutemas.php?funcao=alteraMenus&publicado_menu=&perfil=&nome=&desc=&id=&aberto="; + var callback = + { + success:function(o) + { + try + {pegaMenus();} + catch(e){core_handleFailure(o,o.responseText);} + }, + failure:core_handleFailure, + argument: { foo:"foo", bar:"bar" } + }; + core_makeRequest(sUrl,callback) + }; + //cria o botão de adição de um novo menu + var adiciona = new YAHOO.widget.Button("adiciona",{ onclick: { fn: adicionalinha } }); +} +function pegaPerfis() +{ + //pega a lista de perfis + var sUrl = "../php/menutemas.php?funcao=pegaPerfisYUI"; + var callback = + { + success:function(o) + { + try + {$perfis = YAHOO.lang.JSON.parse(o.responseText);} + catch(e){core_handleFailure(o,o.responseText);} + }, + failure:core_handleFailure, + argument: { foo:"foo", bar:"bar" } + }; + core_makeRequest(sUrl,callback) +} +function pegaMenus() +{ + var sUrl = "../php/menutemas.php?funcao=pegaMenusYUI"; + var callback = + { + success:function(o) + { + try + {montaTabela(YAHOO.lang.JSON.parse(o.responseText));} + catch(e){core_handleFailure(o,o.responseText);} + }, + failure:core_handleFailure, + argument: { foo:"foo", bar:"bar" } + }; + core_makeRequest(sUrl,callback) +} +function montaTabela(dados) +{ + YAHOO.example.InlineCellEditing = new function() + { + // Custom formatter for "address" column to preserve line breaks + var formatTexto = function(elCell, oRecord, oColumn, oData) + { + elCell.innerHTML = "

    " + oData + "

    "; + }; + var formatSalva = function(elCell, oRecord, oColumn) + { + elCell.innerHTML = "
    "; + }; + var formatExclui = function(elCell, oRecord, oColumn) + { + elCell.innerHTML = "
    "; + }; + var myColumnDefs = [ + {label:"exclui",formatter:formatExclui}, + {label:"salva",formatter:formatSalva}, + {label:"id",key:"id_menu", formatter:formatTexto}, + {label:"nome",resizeable:true,key:"nome_menu", formatter:formatTexto, editor:"textbox"}, + {label:"publicado?",key:"publicado_menu",editor:"radio" ,editorOptions:{radioOptions:["SIM","NAO"],disableBtns:false}}, + {label:"perfis",resizeable:true,key:"perfil_menu", formatter:formatTexto, editor:"textbox"}, + {label:"aberto?",key:"aberto", editor:"radio" ,editorOptions:{radioOptions:["SIM","NAO"],disableBtns:false}}, + {label:"descrição",resizeable:true,key:"desc_menu", formatter:formatTexto, editor:"textbox"} + ]; + myDataSource = new YAHOO.util.DataSource(dados); + myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSARRAY; + myDataSource.responseSchema = + { + fields: ["publicado_menu","perfil_menu","aberto","desc_menu","id_menu","nome_menu"] + }; + myDataTable = new YAHOO.widget.DataTable("tabela", myColumnDefs, myDataSource); + // Set up editing flow + myDataTable.highlightEditableCell = function(oArgs) + { + var elCell = oArgs.target; + if(YAHOO.util.Dom.hasClass(elCell, "yui-dt-editable")) + { + myDataTable.highlightCell(elCell); + } + }; + myDataTable.subscribe("cellMouseoverEvent", myDataTable.highlightEditableCell); + myDataTable.subscribe("cellMouseoutEvent", myDataTable.onEventUnhighlightCell); + myDataTable.subscribe("cellClickEvent", myDataTable.onEventShowCellEditor); + + // Hook into custom event to customize save-flow of "radio" editor + myDataTable.subscribe("editorUpdateEvent", function(oArgs) + { + if(oArgs.editor.column.key === "active") + { + this.saveCellEditor(); + + } + }); + myDataTable.subscribe("editorBlurEvent", function(oArgs) + { + this.cancelCellEditor(); + }); + }; + YAHOO.example.container.wait.hide(); +} +function gravaLinha(row) +{ + var r = myDataTable.getRecordSet().getRecord(row); + var publicado_menu = r.getData("publicado_menu"); + var perfil_menu = r.getData("perfil_menu"); + var aberto = r.getData("aberto") + var desc_menu = r.getData("desc_menu") + var id_menu = r.getData("id_menu") + var nome_menu = r.getData("nome_menu") + core_carregando(); + var sUrl = "../php/menutemas.php?funcao=alteraMenus&publicado_menu="+publicado_menu+"&perfil="+perfil_menu+"&nome="+nome_menu+"&desc="+desc_menu+"&id="+id_menu+"&aberto="+aberto+""; + var callback = + { + success:function(o) + { + YAHOO.example.container.wait.hide(); + }, + failure:core_handleFailure, + argument: { foo:"foo", bar:"bar" } + }; + core_makeRequest(sUrl,callback) +} +function excluiLinha(id,row) +{ + //dialogo + // Define various event handlers for Dialog + var handleYes = function() { + this.hide(); + core_carregando(); + var sUrl = "../php/menutemas.php?funcao=excluirRegistro&id="+id+"&tabela=menus"; + var callback = + { + success:function(o) + { + try + { + pegaMenus(); + //ativaBotaoAdicionaMenu(); + //core_ativaPainelAjuda("ajuda","botaoAjuda"); + } + catch(e){core_handleFailure(o,o.responseText);} + }, + failure:core_handleFailure, + argument: { foo:"foo", bar:"bar" } + }; + core_makeRequest(sUrl,callback) + }; + var handleNo = function() + { + this.hide(); + }; + var mensagem = "Exclui o registro?"; + var largura = "300" + core_dialogoContinua(handleYes,handleNo,mensagem,largura) +} +YAHOO.util.Event.addListener(window, "load", initMenu); \ No newline at end of file diff --git a/admin/js/menutemas.js b/admin/js/menutemas.js index fdc4e3d..10d3518 100644 --- a/admin/js/menutemas.js +++ b/admin/js/menutemas.js @@ -71,6 +71,7 @@ function montaParametros() ins += "
    " } document.body.innerHTML += ins + $i("aguarde").style.display="none" //pegaParametros() } /* diff --git a/admin/php/admin.php b/admin/php/admin.php index 7c7cab5..6e2ae55 100644 --- a/admin/php/admin.php +++ b/admin/php/admin.php @@ -46,7 +46,7 @@ if(!isset($locaplic)) } } include_once($locaplic."/classesphp/pega_variaveis.php"); -error_reporting(0); +error_reporting(E_ALL); // //carrega o phpmapscript // diff --git a/admin/php/menutemas.php b/admin/php/menutemas.php index f42f0b4..50c65f3 100644 --- a/admin/php/menutemas.php +++ b/admin/php/menutemas.php @@ -27,6 +27,7 @@ File: i3geo/admin/mapfiles.php 19/6/2007 */ +error_reporting(E_ALL); include_once("admin.php"); $cp = new cpaint(); //faz a busca da função que deve ser executada @@ -48,6 +49,12 @@ switch ($funcao) $cp->return_data(); break; + case "pegaMenusYUI": + $dados = pegaDados('SELECT * from i3geoadmin_menus order by nome_menu'); + echo json_encode($dados); + exit; + break; + case "pegaTags": $cp->set_data(pegaDados('SELECT * from i3geoadmin_tags order by nome')); $cp->return_data(); @@ -56,11 +63,17 @@ switch ($funcao) case "pegaPerfis": $cp->set_data(pegaDados('SELECT * from i3geoadmin_perfis order by perfil')); $cp->return_data(); - break; + break; + + case "pegaPerfisYUI": + $dados = pegaDados('SELECT * from i3geoadmin_perfis order by perfil'); + echo json_encode($dados); + exit; + break; case "alteraMenus": - $cp->set_data(alteraMenus()); - $cp->return_data(); + alteraMenus(); + exit; break; case "pegaGrupos": @@ -330,7 +343,7 @@ function alteraMenus() $dbhw->query("UPDATE i3geoadmin_menus SET publicado_menu = '$publicado_menu',aberto = '$aberto', nome_menu = '$nome', desc_menu = '$desc', perfil_menu = '$perfil' WHERE id_menu = $id"); } else - $dbhw->query("INSERT INTO i3geoadmin_menus (publicado_menu, nome_menu, desc_menu, aberto, perfil_menu) VALUES ('','', '','sim','')"); + $dbhw->query("INSERT INTO i3geoadmin_menus (publicado_menu, nome_menu, desc_menu, aberto, perfil_menu) VALUES ('','', '','SIM','')"); $dbhw = null; $dbh = null; return "ok"; diff --git a/admin/rssgrupos.php b/admin/rssgrupos.php index 4427145..7854b7b 100644 --- a/admin/rssgrupos.php +++ b/admin/rssgrupos.php @@ -20,5 +20,6 @@ if(!isset($locaplic)) } include_once($locaplic."/classesphp/pega_variaveis.php"); include_once($locaplic."/admin/php/xml.php"); +echo header("Content-type: application/xml"); echo geraRSSgrupos($locaplic); ?> diff --git a/admin/rsssubgrupos.php b/admin/rsssubgrupos.php index 05ae15c..4ead422 100644 --- a/admin/rsssubgrupos.php +++ b/admin/rsssubgrupos.php @@ -20,5 +20,6 @@ if(!isset($locaplic)) } include_once($locaplic."/classesphp/pega_variaveis.php"); include_once($locaplic."/admin/php/xml.php"); +echo header("Content-type: application/xml"); echo geraRSSsubgrupos($locaplic,$id); ?> diff --git a/admin/rsstemas.php b/admin/rsstemas.php index 108f9bb..4564af9 100644 --- a/admin/rsstemas.php +++ b/admin/rsstemas.php @@ -20,5 +20,6 @@ if(!isset($locaplic)) } include_once($locaplic."/classesphp/pega_variaveis.php"); include_once($locaplic."/admin/php/xml.php"); +echo header("Content-type: application/xml"); echo geraRSStemas($locaplic,$id); ?> diff --git a/admin/xmlatlas.php b/admin/xmlatlas.php index 4337587..0098043 100644 --- a/admin/xmlatlas.php +++ b/admin/xmlatlas.php @@ -20,5 +20,6 @@ if(!isset($locaplic) || !isset($editores)) } include_once($locaplic."/classesphp/pega_variaveis.php"); include_once($locaplic."/admin/php/xml.php"); +echo header("Content-type: application/xml"); echo geraXmlAtlas($locaplic,$editores); ?> diff --git a/admin/xmlgeorss.php b/admin/xmlgeorss.php index 8f1a395..59779bd 100644 --- a/admin/xmlgeorss.php +++ b/admin/xmlgeorss.php @@ -20,5 +20,6 @@ if(!isset($locaplic)) } include_once($locaplic."/classesphp/pega_variaveis.php"); include_once($locaplic."/admin/php/xml.php"); +echo header("Content-type: application/xml"); echo geraXmlGeorss($locaplic); ?> diff --git a/admin/xmlidentifica.php b/admin/xmlidentifica.php index 31ccf9a..5fca672 100644 --- a/admin/xmlidentifica.php +++ b/admin/xmlidentifica.php @@ -21,5 +21,6 @@ if(!isset($locaplic) || !isset($editores)) include_once($locaplic."/classesphp/pega_variaveis.php"); include_once($locaplic."/admin/php/xml.php"); if(!isset($perfil)){$perfil = "";} +echo header("Content-type: application/xml"); echo geraXmlIdentifica($perfil,$locaplic,$editores); ?> diff --git a/admin/xmllinksdownload.php b/admin/xmllinksdownload.php index 45b2c19..5c0967d 100644 --- a/admin/xmllinksdownload.php +++ b/admin/xmllinksdownload.php @@ -20,5 +20,6 @@ if(!isset($locaplic)) } include_once($locaplic."/classesphp/pega_variaveis.php"); include_once($locaplic."/admin/php/xml.php"); +echo header("Content-type: application/xml"); echo geraXmlDownload($locaplic); ?> diff --git a/admin/xmlmapas.php b/admin/xmlmapas.php index 204258c..3415196 100644 --- a/admin/xmlmapas.php +++ b/admin/xmlmapas.php @@ -21,5 +21,6 @@ if(!isset($locaplic)) include_once($locaplic."/classesphp/pega_variaveis.php"); include_once($locaplic."/admin/php/xml.php"); if(!isset($perfil)){$perfil = "";} +echo header("Content-type: application/xml"); echo geraXmlMapas($perfil,$locaplic,$editores); ?> diff --git a/admin/xmlmenutemas.php b/admin/xmlmenutemas.php index 4747331..bc6ecae 100644 --- a/admin/xmlmenutemas.php +++ b/admin/xmlmenutemas.php @@ -23,5 +23,6 @@ include_once($locaplic."/admin/php/xml.php"); if(!isset($perfil)){$perfil = "";} if(!isset($id_menu)){$id_menu = "";} if(!isset($tipo)){$tipo = "";} +echo header("Content-type: application/xml"); echo geraXmlMenutemas($perfil,$id_menu,$tipo,$locaplic); ?> diff --git a/admin/xmlservicoswms.php b/admin/xmlservicoswms.php index 1cca4dd..7ed5236 100644 --- a/admin/xmlservicoswms.php +++ b/admin/xmlservicoswms.php @@ -20,5 +20,6 @@ if(!isset($locaplic)) } include_once($locaplic."/classesphp/pega_variaveis.php"); include_once($locaplic."/admin/php/xml.php"); +echo header("Content-type: application/xml"); echo geraXmlWMS($locaplic); ?> diff --git a/admin/xmlservicosws.php b/admin/xmlservicosws.php index f0cfed0..3a802db 100644 --- a/admin/xmlservicosws.php +++ b/admin/xmlservicosws.php @@ -20,5 +20,6 @@ if(!isset($locaplic)) } include_once($locaplic."/classesphp/pega_variaveis.php"); include_once($locaplic."/admin/php/xml.php"); +echo header("Content-type: application/xml"); echo geraXmlWS($locaplic); ?> diff --git a/admin/xmlsistemas.php b/admin/xmlsistemas.php index ea71e18..5fa3a00 100644 --- a/admin/xmlsistemas.php +++ b/admin/xmlsistemas.php @@ -21,5 +21,6 @@ if(!isset($locaplic) || !isset($editores)) include_once($locaplic."/classesphp/pega_variaveis.php"); include_once($locaplic."/admin/php/xml.php"); if(!isset($perfil)){$perfil = "";} +echo header("Content-type: application/xml"); echo geraXmlSistemas($perfil,$locaplic,$editores); ?> -- libgit2 0.21.2