menu.js 11.1 KB
/*
Title: menu.js

Funções que controlam a interface do editor de menus

Licenca:

GPL2

i3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet

Direitos Autorais Reservados (c) 2006 Ministério do Meio Ambiente Brasil
Desenvolvedor: Edmar Moretti edmar.moretti@gmail.com

Este programa é software livre; você pode redistribuí-lo
e/ou modificá-lo sob os termos da Licença Pública Geral
GNU conforme publicada pela Free Software Foundation;

Este programa é distribuído na expectativa de que seja útil,
porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita
de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA.
Consulte a Licença Pública Geral do GNU para mais detalhes.
Você deve ter recebido uma cópia da Licença Pública Geral do
GNU junto com este programa; se não, escreva para a
Free Software Foundation, Inc., no endereço
59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.

Arquivo:

i3geo/admin/js/menus.js
*/
/*
Function: initEditorMenu

Inicializa o editor

<ALTERAMENUS>
*/
if(typeof(i3GEOadmin) === 'undefined'){
	var i3GEOadmin = {};
}
i3GEOadmin.menus = {
	letra: "",
	dados: "",
	dataTable: null,
	colunas: ["it","es","en","publicado_menu","perfil_menu","aberto","desc_menu","id_menu","nome_menu"],
	formatTexto: function(elCell, oRecord, oColumn, oData){
		if(oData === ""){
			oData = "<span style='color:gray' ></span>";
		}
		elCell.innerHTML = "<pre ><p style=cursor:default >" + oData + "</pre>";
	},
	formatExclui: function(elCell, oRecord, oColumn){
		elCell.innerHTML = "<div class=excluir title='exclui' style='text-align:center' ></div>";
	},
	formatMais: function(elCell, oRecord, oColumn){
		elCell.innerHTML = "<div class=editar style='text-align:center' ></div>";
	},
	defColunas: function(){
		return [
			{key:"excluir",label:"excluir",formatter:i3GEOadmin.menus.formatExclui},
			{key:"mais",label:"editar",formatter:i3GEOadmin.menus.formatMais},
			{label:"id",key:"id_menu", formatter:i3GEOadmin.menus.formatTexto},
			{label:"nome padr&atilde;o do menu",resizeable:true,key:"nome_menu", formatter:i3GEOadmin.menus.formatTexto},
			{label:"nome em ingl&ecirc;s (opcional)",resizeable:true,key:"en", formatter:i3GEOadmin.menus.formatTexto},
			{label:"nome em espanhol (opcional)",resizeable:true,key:"es", formatter:i3GEOadmin.menus.formatTexto},
			{label:"nome em italiano (opcional)",resizeable:true,key:"it", formatter:i3GEOadmin.menus.formatTexto},
			{label:"publicado para todos verem?",key:"publicado_menu", formatter:i3GEOadmin.menus.formatTexto},
			{label:"perfis",resizeable:true,key:"perfil_menu", formatter:i3GEOadmin.menus.formatTexto},
			{label:"inicia aberto?",key:"aberto", formatter:i3GEOadmin.menus.formatTexto},
			{label:"descri&ccedil;&atilde;o",resizeable:true,key:"desc_menu", formatter:i3GEOadmin.menus.formatTexto}
		];
	},
	/*
	 * Inicializa o menu
	 */
	inicia: function(){
		YAHOO.namespace("admin.container");
		core_ativaPainelAjuda("ajuda","botaoAjuda");
		YAHOO.namespace("menus");
		var temp = function(o){
			i3GEOadmin.menus.obtem();
			return;
		};
		core_ativaBotaoAdicionaLinha("../php/menutemas.php?funcao=alteraMenus&publicado_menu=&perfil=&nome=&desc=&id=&aberto=","adicionaNovoMenu",temp);
		i3GEOadmin.menus.obtem();
	},
	/*
	 * Obt&eacute;m a lista de menus
	 */
	obtem: function(){
		i3GEOadmin.menus.dados = "";
		core_carregando("ativa");
		core_pegaDados("buscando menus...","../php/menutemas.php?funcao=pegaMenus","i3GEOadmin.menus.tabela");
	},
	tabela: function(dados){
		if(i3GEOadmin.menus.dados == ""){
			i3GEOadmin.menus.dados = dados;
		}
		core_listaDeLetras("letras_M","i3GEOadmin.menus.filtra");
		YAHOO.example.InlineCellEditing = new function(){
			// Custom formatter for "address" column to preserve line breaks
			var myDataSource = new YAHOO.util.DataSource(dados);
			myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;
			myDataSource.responseSchema = {
				fields: i3GEOadmin.menus.colunas
			};
			//i3GEOadmin.menus.dataTable = new YAHOO.widget.DataTable("tabela", i3GEOadmin.menus.defColunas(), myDataSource);
			i3GEOadmin.menus.dataTable = new YAHOO.widget.ScrollingDataTable("tabela", i3GEOadmin.menus.defColunas(), myDataSource,{width:"100%"});
			i3GEOadmin.menus.dataTable.subscribe('postRenderEvent',function(){
					//abre o editor
					if(i3GEOadmin.menus.dados[0].nome_menu == ""){
						var rec = i3GEOadmin.menus.dataTable.getRecordSet().getRecord(0);
						i3GEOadmin.menus.editor([i3GEOadmin.menus.dados[0]],i3GEOadmin.menus.dados[0].id_menu,rec.getId());
					}
				}
			);
			i3GEOadmin.menus.dataTable.subscribe('cellClickEvent',function(ev){
				var sUrl, callback,$clicouId, $recordid,
					target = YAHOO.util.Event.getTarget(ev),
					column = this.getColumn(target),
					registro = this.getRecord(target);
				if(YAHOO.menus.panelCK)	{
					YAHOO.menus.panelCK.destroy();
					YAHOO.menus.panelCK = null;
				}
				if (column.key == 'excluir'){
					i3GEOadmin.menus.exclui(registro.getData('id_menu'),target);
				}
				if (column.key == 'mais'){
					core_carregando("ativa");
					core_carregando("buscando dados...");
					$clicouId = registro.getData('id_menu');
					$recordid = registro.getId();
					sUrl = "../php/menutemas.php?funcao=pegamenus&id_menu="+$clicouId;
					callback = {
	  					success:function(o){
	  						try{
	  							i3GEOadmin.menus.editor(YAHOO.lang.JSON.parse(o.responseText),$clicouId,$recordid);
	  						}
	  						catch(e){core_handleFailure(e,o.responseText);}
	  					},
	  					failure:core_handleFailure,
	  					argument: { foo:"foo", bar:"bar" }
					};
					core_makeRequest(sUrl,callback);
				}
			});
		};
		core_carregando("desativa");
	},
	editor: function(dados,id,recordid){
		if(!$i("janela_editor2")){
			var ins,
				novoel = document.createElement("div");
			novoel.id =  "janela_editor2";
			ins = '<div class="hd"><input id=okcancel_checkbox_id2 type="buttom" value="Salva" /><span style="margin-left:10px;position:relative;top:-10px;">Menu</span></div>';
			ins += "<div class='bd' style='height:354px;overflow:auto'>";
			ins += "<div id='editor_bd2'></div>";
			ins += "<div id='letras_M'></div>";
			novoel.innerHTML = ins;

			document.body.appendChild(novoel);

			new YAHOO.widget.Button(
				"okcancel_checkbox_id2",
				{onclick:{fn: function(){
					i3GEOadmin.menus.salva(id,recordid);
					YAHOO.menus.panelEditor2.destroy();
					YAHOO.menus.panelEditor2 = null;
				}}}
			);

			YAHOO.menus.panelEditor2 = new YAHOO.widget.Panel("janela_editor2", { modal:true,fixedcenter:true,close:true,width:"480px", height:"480px",overflow:"auto", visible:false,constraintoviewport:true } );
			YAHOO.menus.panelEditor2.render();
		}
		var fecha = function(){
			YAHOO.menus.panelEditor2.destroy();
			YAHOO.menus.panelEditor2 = null;
		};
		YAHOO.util.Event.addListener(YAHOO.menus.panelEditor2.close, "click", fecha);

		YAHOO.menus.panelEditor2.show();
		$i("editor_bd2").innerHTML = i3GEOadmin.menus.formulario(dados[0]);
		core_carregando("desativa");
	},
	formulario: function(i){
		var param = {
				"linhas":[
					{titulo:"Nome padr&atilde;o:",id:"Enome_menu",size:"50",value:i.nome_menu,tipo:"text",div:""},
					{titulo:"Descri&ccedil;&atilde;o (opcional):",id:"Edesc_menu",size:"50",value:i.desc_menu,tipo:"text",div:""},
					{titulo:"Nome em ingl&ecirc;s (opcional):",id:"Een",size:"50",value:i.en,tipo:"text",div:""},
					{titulo:"Espanhol (opcional):",id:"Ees",size:"50",value:i.es,tipo:"text",div:""},
					{titulo:"Italiano (opcional):",id:"Eit",size:"50",value:i.it,tipo:"text",div:""},
					{titulo:"Perfis (opcional):",id:"Eperfil_menu",size:"50",value:i.perfil_menu,tipo:"text",div:""}
				]
			},
			ins = "";
		ins += core_geraLinhas(param);
		ins += "<p>Publicado para todos verem?<br>";
		ins += "<select  id='Epublicado_menu' />";
		ins += "<option value='' ";
		if (i.publicado_menu == ""){ins += "selected";}
		ins += ">---</option>";
		ins += "<option value='SIM' ";
		if ((i.publicado_menu).toLowerCase() == "sim"){ins += "selected";}
		ins += " >sim</option>";
		ins += "<option value='NAO' ";
		if ((i.publicado_menu).toLowerCase() == "nao"){ins += "selected";}
		ins += " >n&atilde;o</option>";
		ins += "</select></p>";
		ins += "<p>Inicia aberto na &aacute;rvore?<br>";
		ins += "<select  id='Eaberto' />";
		ins += "<option value='' ";
		if (i.aberto == ""){ins += "selected";}
		ins += ">---</option>";
		ins += "<option value='SIM' ";
		if ((i.aberto).toLowerCase() == "sim"){ins += "selected";}
		ins += " >sim</option>";
		ins += "<option value='NAO' ";
		if ((i.aberto).toLowerCase() == "nao"){ins += "selected";}
		ins += " >n&atilde;o</option>";
		ins += "</select></p>";
		return(ins);
	},
	atualizaFiltro: function(dados){
		i3GEOadmin.menus.dados = dados;
		i3GEOadmin.menus.filtra(i3GEOadmin.menus.letra);
	},
	filtra: function(letra){
		i3GEOadmin.menus.letra = letra;
		if(i3GEOadmin.menus.dados == ""){
			core_carregando("ativa");
			core_pegaDados("buscando menus...","../php/menutemas.php?funcao=pegaMenus","i3GEOadmin.menus.atualizaFiltro");
			return;
		}
		var i,temp,
			n = i3GEOadmin.menus.dados.length,
			novo;
		if(letra == "Todos"){
			novo = i3GEOadmin.menus.dados;
		}
		else{
			novo = [];
			for(i=0;i<n;i++){
				temp = i3GEOadmin.menus.dados[i].nome_menu;
				if(temp.charAt(0).toUpperCase() == letra.toUpperCase()){
					novo.push(i3GEOadmin.menus.dados[i]);
				}
			}
		}
		i3GEOadmin.menus.tabela(novo);
	},
	exclui: function(id,row){
		var mensagem = " excluindo o registro do id= "+id,
			sUrl = "../php/menutemas.php?funcao=excluirRegistro&id="+id+"&tabela=menus";
		core_excluiLinha(sUrl,row,mensagem,"",i3GEOadmin.menus.dataTable);
		i3GEOadmin.menus.dados = "";
	},
	salva: function(id,recordid){
		var i,c,sUrl, callback,
			campos = i3GEOadmin.menus.colunas,
			par = "",
			n = campos.length;
		for (i=0;i<n;i++){
			c = $i("E"+campos[i].key);
			if(c){
				par += "&"+campos[i].key+"="+(c.value);
			}
		}
		par += "&id_menu="+id;
		core_carregando("ativa");
		core_carregando(" gravando o registro do id= "+id);
		sUrl = "../php/menutemas.php?funcao=alteraMenus"+par;
		callback = {
	  		success:function(o){
	  			try	{
	  				if(YAHOO.lang.JSON.parse(o.responseText) == "erro")	{
	  					core_carregando("<span style=color:red >N&atilde;o foi poss&iacute;vel excluir. Verifique se n&atilde;o existem registros vinculados</span>");
	  					setTimeout("core_carregando('desativa')",3000);
	  				}
	  				else{
	  					var rec = i3GEOadmin.menus.dataTable.getRecordSet().getRecord(recordid);
	  					i3GEOadmin.menus.dataTable.updateRow(rec,YAHOO.lang.JSON.parse(o.responseText)[0]);
	  					i3GEOadmin.menus.dados = "";
	  					core_carregando("desativa");
	  				}
	  			}
	  			catch(e){core_handleFailure(e,o.responseText);}
	  		},
	  		failure:core_handleFailure,
	  		argument: { foo:"foo", bar:"bar" }
		};
		core_makeRequest(sUrl,callback);
	}
};