gruposusuarios.js 10.3 KB
/*
Title: gruposusuarios.js

Funções que controlam o cadastro de grupos de usuarios

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/gruposusuarios.js
*/
YAHOO.namespace("admin.container");
/*
Function: initMenu

Inicializa o editor
*/
function initMenu(){
	ativaBotaoAdicionaGrupo("../php/gruposusuarios.php?funcao=alterarGrupos","adiciona");
	core_carregando("ativa");
	core_ativaPainelAjuda("ajuda","botaoAjuda");
	pegaGrupos();
}
function ativaBotaoAdicionaGrupo(sUrl,idBotao){
	var botao, adiciona = function()
	{
		core_carregando("ativa");
		core_carregando($trad("msgNovoRegistro",i3GEOadmin.core.dicionario));
		var callback =
		{
				success:function(o)
				{
					try
					{
						var j = YAHOO.lang.JSON.parse(o.responseText);
					adicionaNosGrupos(j,true);
					editar("grupo",j[j.length-1].id_grupo);
						core_carregando("desativa");
					}
					catch(e){core_handleFailure(e,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
	botao = new YAHOO.widget.Button(idBotao,{ onclick: { fn: adiciona } });
	botao.addClass("rodar");
}
function pegaGrupos(){
	core_pegaDados($trad("msgBuscaUsuarios",i3GEOadmin.gruposusuarios.dicionario),"../php/gruposusuarios.php?funcao=pegaGrupos","montaArvore");
}
/*
Function: montaArvore

Monta a árvore de edição

<PEGAPRANCHAS>
*/
function montaArvore(dados){
	YAHOO.example.treeExample = new function()	{
		tree = "";
		function changeIconMode(){
			buildTree();
		}
		function loadNodeData(node, fnLoadComplete){
			var sUrl = "../php/gruposusuarios.php?funcao=pegaUsuariosGrupo&id_grupo="+node.data.id_grupo;
			var callback = {
				success: function(oResponse){
					var dados = YAHOO.lang.JSON.parse(oResponse.responseText);
					adicionaNosUsuarios(node,dados,false);
					oResponse.argument.fnLoadComplete();
				},
				failure: function(oResponse){
					oResponse.argument.fnLoadComplete();
				},
				argument:{
					"node": node,
					"fnLoadComplete": fnLoadComplete
				},
				timeout: 25000
			};
			YAHOO.util.Connect.asyncRequest('GET', sUrl, callback);
		}
		function buildTree(){
			tree = new YAHOO.widget.TreeView("tabela");
			tree.setDynamicLoad(loadNodeData, 1);
			var root = tree.getRoot();
			var tempNode = new YAHOO.widget.TextNode('', root, false);
			tempNode.enableHighlight = false;
			tempNode.isLeaf = true;
			core_carregando("desativa");
		}
		buildTree();
	}();
		adicionaNosGrupos(dados);
		tree.draw();
}
function adicionaNosUsuarios(no,dados,redesenha)
{
	function temaIconMode(){
		var newVal = parseInt(this.value);
		if (newVal != currentIconMode)
		{currentIconMode = newVal;}
	}
	if(!redesenha){
		var conteudo = "<span style=\"cursor:pointer;\" onclick=\"editar('usuario','"+no.data.id_grupo+"')\" ><img style=\"position:relative;top:2px\" src=\"../imagens/05.png\" /><i>"+ $trad("novoUsuario",i3GEOadmin.gruposusuarios.dicionario) +"</i></span>";
		var d = {html:conteudo};
		var tempNode = new YAHOO.widget.HTMLNode(d, no, false,true);
		tempNode.isLeaf = true;
		tempNode.enableHighlight = false;
	}
	for (var i=0, j=dados.length; i<j; i++){
		var conteudo = "&nbsp;<img style=\"position:relative;cursor:pointer;top:0px\" onclick=\"excluir('usuario','"+dados[i].id_grupo+"','"+dados[i].id_usuario+"')\" title=excluir width='10px' heigth='10px' src=\"../imagens/01.png\" />";
		if(dados[i].nome != "")
		{conteudo += "&nbsp;<span><b>"+dados[i].login+"</b></span>";}
		else
		{conteudo += "&nbsp;<span style=color:red >"+ $trad("definePapel",i3GEOadmin.gruposusuarios.dicionario) +"</span>";}
		var d = {html:conteudo,id_nousuario:dados[i].id_usuario+"_"+dados[i].id_grupo,tipo:"usuario"};
		var tempNode = new YAHOO.widget.HTMLNode(d, no, false,true);
		tempNode.isLeaf = true;
		tempNode.enableHighlight = false;
	}
	if(redesenha){tree.draw();}
}
function adicionaNosGrupos(dados,redesenha){
	var root = tree.getRoot();
	for (var i=0, j=dados.length; i<j; i++){
		var conteudo = "&nbsp;<img style=\"position:relative;cursor:pointer;top:0px\" onclick=\"excluir('grupo','"+dados[i].id_grupo+"')\" title=excluir width='10px' heigth='10px' src=\"../imagens/01.png\" />";
		conteudo += "&nbsp;<img style=\"position:relative;cursor:pointer;top:2px\" onclick=\"editar('grupo','"+dados[i].id_grupo+"')\" title=editar src=\"../imagens/06.png\" /><b>";
		if(dados[i].nome && dados[i].nome != "")
		{conteudo += "&nbsp;<span>"+dados[i].nome+" id: "+dados[i].id_grupo+"</span>";}
		else
		{conteudo += "&nbsp;<span style=color:red >"+ $trad("defineGrupo",i3GEOadmin.gruposusuarios.dicionario) +"</span>";}
		var d = {html:conteudo,id_grupo:dados[i].id_grupo,tipo:"grupo"};
		var tempNode = new YAHOO.widget.HTMLNode(d, root, false,true);
		tempNode.enableHighlight = false;
	}
	if(redesenha){tree.draw();}
}
/*
Function: editar

Abre o editor de um no
*/
function editar(tipo,id){
	core_carregando("ativa");
	core_carregando($trad("msgBuscaDados",i3GEOadmin.core.dicionario));
	var sUrl = null;
	var callback =	{
		success:function(o)		{
			try			{
				if(tipo == "grupo")				{
					var dados = YAHOO.lang.JSON.parse(o.responseText)[0];
					montaDivGrupo(dados);
					core_carregando("desativa");
				}
				if(tipo == "usuario")				{
					var dados = YAHOO.lang.JSON.parse(o.responseText);
					core_montaEditor("gravaDados('usuario','"+id+"')","250px","100px","","Usu&aacute;rio",true,true,false);
					$i("editor_bd").innerHTML = montaDivUsuario(dados);
					document.getElementById("Eid_usuario").style.width = "200px";
					core_carregando("desativa");
				}
				core_carregando("desativa");
			}
			catch(e){core_handleFailure(e,o.responseText);}
		},
		failure:core_handleFailure,
		argument: { foo:"foo", bar:"bar" }
	};
	if(tipo == "grupo")
	{sUrl = "../php/gruposusuarios.php?funcao=pegaDadosGrupo&id_grupo="+id;}
	if(tipo == "usuario")
	{sUrl = "../php/gruposusuarios.php?funcao=listaUsuarios";}
	if(sUrl)
	{core_makeRequest(sUrl,callback);}
}
function montaDivGrupo(i){
	var temp = function(){
		gravaDados('grupo',i.id_grupo);
	};
	core_montaEditor(temp,"450px","280px","","Grupo",true,true,false);
	var param = {
		"linhas":[
				{titulo:$trad("nome",i3GEOadmin.gruposusuarios.dicionario),id:"Enome",size:"50",value:i.nome,tipo:"text",div:""},
				{titulo:$trad("descricao",i3GEOadmin.gruposusuarios.dicionario),id:"Edescricao",size:"50",value:i.descricao,tipo:"text",div:""}
		]
	};
	var ins = "";
	ins += core_geraLinhas(param);
	ins += "<br><br><br>";
	$i("editor_bd").innerHTML = ins;
}
function montaDivUsuario(dados){
	var ins = "<p><select id='Eid_usuario' >";
	ins += core_comboObjeto(dados,"id_usuario","login","","ativo");
	ins += "</select>";
	return(ins);
}
/*
Function: excluir

Exclui um elemento do atlas

<EXCLUIRATLAS>

<EXCLUIRPRANCHA>

<EXCLUIRTEMA>
*/
function excluir(tipo,id_grupo,id_usuario)
{
	var mensagem = $trad("msgExcluiUsuario",i3GEOadmin.gruposusuarios.dicionario)+id_usuario;
	var no = null;
	var sUrl = null;
	if(tipo == "grupo")	{
		no = tree.getNodeByProperty("id_grupo",id_grupo);
		sUrl = "../php/gruposusuarios.php?funcao=excluirGrupo&id_grupo="+id_grupo;
	}
	if(tipo == "usuario")	{
		no = tree.getNodeByProperty("id_nousuario",id_usuario+"_"+id_grupo);
		sUrl = "../php/gruposusuarios.php?funcao=excluirUsuarioGrupo&id_grupo="+id_grupo+"&id_usuario="+id_usuario;
	}
	if(sUrl)
	{core_excluiNoTree(sUrl,no,mensagem);}
}
/*
Function: gravaDados

Altera dados de um elemento do Atlas

<ALTERARATLAS>

<ALTERARPRANCHA>

<ALTERARTEMA>
*/
function gravaDados(tipo,id){
	var campos = null;
	var par = null;
	var prog = null;
	if(tipo == "grupo"){
		campos = new Array("nome","descricao");
		par = "&id_grupo="+id;
		prog = "../php/gruposusuarios.php?funcao=alterarGrupos";
	}
	if(tipo == "usuario"){
		campos = new Array("id_usuario");
		par = "&id_grupo="+id;
		prog = "../php/gruposusuarios.php?funcao=adicionaUsuarioGrupo";
	}
	for (var i=0;i<campos.length;i++)
	{par += "&"+campos[i]+"="+($i("E"+campos[i]).value);}

	var callback = {
			success:function(o){
				try	{
					if(YAHOO.lang.JSON.parse(o.responseText) == "erro")	{
						core_carregando("<span style=color:red >"+ $trad("msgNaoExclui",i3GEOadmin.gruposusuarios.dicionario) +"</span>");
						setTimeout("core_carregando('desativa')",3000);
					}
					else{
						if(tipo == "grupo"){
							var no = tree.getNodeByProperty("id_grupo",id);
							no.getContentEl().getElementsByTagName("span")[0].innerHTML = document.getElementById("Enome").value+" id:"+id;
						no.getContentEl().getElementsByTagName("span")[0].style.color = "";
							no.html = no.getContentEl().innerHTML;
						}
						if(tipo == "usuario"){
							var no = tree.getNodeByProperty("id_grupo",id);
							adicionaNosUsuarios(no,YAHOO.lang.JSON.parse(o.responseText),true);
						}
						core_carregando("desativa");
					}
				YAHOO.admin.container.panelEditor.destroy();
				YAHOO.admin.container.panelEditor = null;
				}
				catch(e){core_handleFailure(e,o.responseText);}
			},
			failure:core_handleFailure,
			argument: { foo:"foo", bar:"bar" }
	};
	if(prog && par){
		core_carregando("ativa");
		core_carregando($trad("gravaId",i3GEOadmin.core.dicionario)+id);
		var sUrl = prog+par;
		core_makeRequest(sUrl,callback,'POST');
	}
}