Eliminar usuarios desde el front-end

Para cualquier duda sobre Joomla! 1.5 que no tenga cabida en alguno de los foros de más abajo.

Moderators: carcam, AlexVega, hefesto

Locked
sarahawari
Joomla! Apprentice
Joomla! Apprentice
Posts: 12
Joined: Mon Dec 20, 2010 10:16 pm

Eliminar usuarios desde el front-end

Post by sarahawari » Wed Feb 02, 2011 10:31 pm

Hola, no he encontrado un foro especifico para mi pregunta, espero que sea este.

Os cuento, estoy intentando modificar un modulo que me lista los usuarios de mi BBDD, es el UserList XTD. Quiero insertar un vinculo (o boton) que me borre dicho usuario. Lo que he echo es agregar unas lineas al codigo del view del componente. Donde muestra todos los datos he añadido:

Code: Select all

<script type="text/javascript">
function confirm(iduser){
	global $database;
	if(confirm('Realmente quieres eliminar este usuario?')){
		<?php 
		global $database;		
		//Eliminar usuario		
		$database->setQuery("DELETE FROM `jos_users` WHERE id=10" );
		$database->query();
		?>
		alert('Ya se ha eliminado el usuario '+iduser);
	}
}
</script>

...

echo "<a href='$base_url'.'index.php?option=com_userlist_xtd&Itemid=16&lang=es' 
onClick='javascript:confirmacion($row->id)'>"._DELETE."</a>";
La columna "Eliminar" me sale bien y si hago click encima del texto (es como un link), me va a la funcion confirmar.
Bien, he comprobado que asi me borra el usuario nº 10, el que tengo escrito a mano. El problema es que no se como recoger el valor de la funcion javascript en php, es decir, que en la query recoja la variable iduser que recoge la funcion del script.

He leido que esto con Html no se puede y hay que usar Ajax, es cierto?? q lio!

Sino me valdria crear la funcion de eliminar en el propio fichero y llamarlo desde el vinculo, es decir prescindir de la confirmacion, pero tampoco se como llamarle, me dice que delete() no existe.

Code: Select all

echo "<a href='$base_url'.'index.php?option=com_userlist_xtd&Itemid=16&lang=es' onClick='delete()'>"._DELETE."</a>"; 
gracias de antemano

carcam
Joomla! Hero
Joomla! Hero
Posts: 2161
Joined: Sat Dec 29, 2007 1:53 am
Location: Spain
Contact:

Re: Eliminar usuarios desde el front-end

Post by carcam » Tue Feb 08, 2011 7:34 am

Estás mezclando la Vista con el controlador y el modelo, y eso hace que se te complique un poco. En Joomla! si haces con cuidado las cosas deberías ser capaz de obtener ese valor de id y ejecutar el borrado en función de lo que diga el usuario, pero incluir la función de borrado dentro del javascript como has hecho no es una buena práctica Joomla!

En la Wiki de desarrolladores verás mucha información para que puedas entender el sistema de desarrollo MVC (Modelo Vista Controlador) y puedas hacer fácilmente lo que quieres ;):

http://docs.joomla.org/Developers
Miembro del equipo de eventos de Joomla: https://volunteers.joomla.org/teams/events-team
Hago desarrolo y soporte en http://www.jevents.net
Twitter: @carcam

sarahawari
Joomla! Apprentice
Joomla! Apprentice
Posts: 12
Joined: Mon Dec 20, 2010 10:16 pm

Re: Eliminar usuarios desde el front-end

Post by sarahawari » Tue Feb 08, 2011 9:28 am

Hola carcam, la verdad es que no habia pensado en eso. Mirare la docu que me dejas a ver si encuentro algo interesante y ya te dire.

Un saludo

sarahawari
Joomla! Apprentice
Joomla! Apprentice
Posts: 12
Joined: Mon Dec 20, 2010 10:16 pm

Re: Eliminar usuarios desde el front-end

Post by sarahawari » Wed Feb 09, 2011 10:56 pm

Sigo comiendome la cabeza y no consigo avanzar. La cosa es que en la carpeta de este componente, solo hay 4 ficheros y el contenido es bastante diferente al que hay en la Wiki. Dos de esos ficheros no tienen gran codigo, son parte de codigo para la BBDD, que añade Order by, direccion...

Los otros dos, son lo que creo que es la vista, donde esta todo el codigo html, tablas, td... y el que creo que es el modelo, donde esta la funcion que llama a la clase que hay en fichero de la vista.
A partir de ahi, he metido el contenido de la funcion delete en el segundo fichero, el modelo:

Code: Select all

function delete($iduser){
	global $database;
	//Eliminar referencias del usuario
	$database->setQuery("DELETE FROM `jos_core_acl_aro` WHERE value = '$iduser'");
	$database->query();
	$database->setQuery("DELETE FROM `jos_joomdoc` WHERE dmowner = '$iduser'");
	$database->query();
	//Eliminar usuario
	$database->setQuery("DELETE FROM `jos_users` WHERE id = '$iduser'");
	$database->query();	
}
Y en el otro fichero (la supuesta vista) el resto del codigo:

Code: Select all

<script language="JavaScript">
function confirmacion(iduser){
	if(confirm('Realmente quieres eliminar al usuario?')){
		//Borrar
		<?php delete($iduser); ?>
		alert('Ya se ha eliminado el usuario');
	} 
}
</script>
...
echo "<a href='$base_url"."index.php?option=com_userlist_xtd&Itemid=16&lang=es' onClick='confirmacion($row->id)'>"._DELETE."</a>"; 
El caso es que si en la funcion de confirmacion pogo un numero a mano, x ej. delete(12), me borra el usuario 12 con sus referencias. Pero asi no, no me coge la variable $iduser. Esto supongo que sera debido a que no se pueden pasar variables de Javascript a php, pero es ahi donde me atasco. necesito pasar ese codigo!

a ver si me puedes hechar una mano, please

carcam
Joomla! Hero
Joomla! Hero
Posts: 2161
Joined: Sat Dec 29, 2007 1:53 am
Location: Spain
Contact:

Re: Eliminar usuarios desde el front-end

Post by carcam » Thu Feb 10, 2011 11:10 am

El que el componente sea distinto en su código de lo que propone la wiki no es raro. Significa que el creador del componente no siguió las convenciones Joomla!. Si te fijas en muchos componentes puedes elegir un elemento (por ejemplo un artículo) y al pinchar un botón ejecutar una acción (por ejemplo borrarlo, editarlo...). Eso se hace usando Javascript, PHP y HTML y aprovechando la potencia del framework de Joomla!. Revisa cómo se hace eso en otros componentes y puede que tengas alguna pista.
Miembro del equipo de eventos de Joomla: https://volunteers.joomla.org/teams/events-team
Hago desarrolo y soporte en http://www.jevents.net
Twitter: @carcam


Locked

Return to “Joomla! 1.5”