Hola,
estoy intentando crear una bandeja de entrada de mensajes para una pequeña red social. Cada uno de los mensajes lleva un link al lado del estilo "Marcar como leido". Tras pulsar sobre el link el fondo del mensaje me gustaría que cambiase de color por ejemplo de gris a blanco.
Estos son los elementos con los que estoy trabajando:
- Una tabla MySQL "Mensaje" con tiene un campo llamado "Estado" (0: mensaje no leido, 1: mensaje leido).
- Dos reglas CSS (div.mensaje_0 y div.mensaje_1) que se diferencian en el color de fondo.
- Este codigo en la vista:
Código PHP:
<div class="mensaje_<?php echo (int)$mensaje->getEstado() ?>" id="mensaje_<?php echo $mensaje ?>">
Contenido mensaje
<?php echo link_to_remote('Marcar como leido', array(
'url' => 'mensaje/cambiarEstadoLeido?id='.$mensaje->getId(),
'update' => 'mensaje_'.$mensaje,
));
?>
</div>
link_to_remote es un "helper" de symfony donde la opción 'url' es la petición que se ejecutará tras pulsar sobre el link y la opción 'update' hace referencia al <div> que se actualizará tras pulsar ese mismo link.
Tras pulsar sobre el link "Marcar como leido" se ejecutan estas lineas que actulizan el estado del mensaje y :
Código PHP:
public function executeCambiarEstadoLeido(sfWebRequest $request)
{
$this->mensajes_usuario = Doctrine::getTable('Mensaje')->findById($request->getParameter('id'));
$this->mensajes_usuario[0]->setEstado(1);
}
Y inmediatamente después se ejecuta la parte de la vista correspondiente a esta ultima función:
Código HTML:
<div class="mensaje_1">
Contenido mensaje
</div>
Mi problema: pues que al final tengo un mensaje metido dentro otro mensaje, se ve claramente porque si pongo algo de padding que queda "debajo" aparece el color gris que tiene.
Podria quitar el padding del mensaje que queda "debajo", pero es una solución un poco chapucera..
...
¿Alguien me ayuda? Quizas el helper que estoy usando sea demasiado restrictivo como para que me permita hacer lo que estoy intentado, o sea: no se corten en dar soluciones con AJAX en crudo!
Un saludo
Javi