Sistema de mensajes para Symfony, parte 2 + demo
Tal como lo había comentado hace 3 semanas atrás, aquí esta la segunda parte del sistema de mensajes para symfony.
Ya habia comentado como hacer mensajes de acciones exitosa y mensajes de error de validaciones pues me quedan los warnings y los mensajes informativos.
Con respecto a los warnings, no son nada muy dificil, sólo un div que advierta al usuario sobre X cosa. Las razones para mostrar un warning pueden ser variadas. Desde que una tarea no se puede ejecutar por X motivos, una tarea que fue ejecutada pero con ciertos problemas menores, una advertencia para ser precavido en lo que haga el usuario, etc.
El código para mostrar un warning es este:
Finalmente con los mensajes informativos la cosa se pone un poco más entretenida.
La idea detrás de los mensajes informativos es que cierta información se muestre a los usuarios cuando esta se crea, pero a medida que los usuarios vayan cerrando estos mensajes/información, no les aparezcan más a ellos.
Esto sirve principalmente para un usuario que conoce un sitio nuevo y se le da la información necesaria para que aprenda a usar las funcionalidades básicas, o para mostrar noticias o cosas similares.
Un buen ejemplo es el que me tope hoy en facebook, cuando me conecte salia este mensaje:
Curiosamente aprete en cerrar y no apareció más =)
La implementación que use en el demo es bastante sencilla, la verdad no quise complicarme mucho para hacerlo, pero si necesitan algo un poco más serio en la descarga hay un schema.yml tentativo que podrás usar y también deberás reescribir los metodos del myUser.class.php.
Para obtener mensajes como estos, se necesitan 2 cosas, 1.- poner los mensajes en donde se quiere que aparezcan y 2.- gestionar que mensajes le aparecen a que usuarios.
Para poner un mensaje informativo como el anterior se puede hacer lo siguiente:
<?php if($sf_user->hasInfo(2)): ?> <div class="info" id="2"> <img src="/images/close.png" class="close"/> <ul> <li>Vamos a hacer cambios en la página de inicio muy pronto.</li> <li>Familiarizate con las nuevas funciones. Estos cambios van a producirse muy ponto ... bla bla ...</li> </ul> </div> <?php endif; ?>
Y estos metodos en el myUser.class.php:
public function init($force = false) { if($force || !$this->hasAttribute(1)){ $this->setAttribute(1, true); $this->setAttribute(2, true); } } public function hasInfo($info_id) { return $this->getAttribute($info_id); } public function delInfo($info_id) { $this->setAttribute($info_id, false); }
También para quitar los info se necesita el siguiente código jQuery en el partial _messages.php:
$('.info .close').click(function(){ var id = $(this).parent().attr('id'); $(this).parent().fadeOut('slow', function(){ $.ajax({ type:'POST', dataType:'html', url:'/id/'+id }); $(this).remove(); }); });
Todo esto lo puedes encontrar en la descarga y para verlo funcionar acá el demo.
Les recuerdo que la descarga y el demo estan con SYMFONY 1.0 (obviamente es completamente migrable) …… y esta sin freeze, las funcionalidades para que desaparezcan los mensajes estan escritas en jQuery por lo que si alguien las puede hacer en prototype u otro se agradecerá.


8:58 pm
March 5th, 2009
la verdad está muy bueno lo q hiciste. De seguro que lo voy a usar más adelante en el proximo proyecto q use sf. Saludos!
7:23 pm
March 6th, 2009
[...] Acerca « Sistema de mensajes para Symfony, parte 2 + demo [...]