Administrando comentarios en Drupal mediante correo

Administrando comentarios en Drupal mediante correo
En esta ocasión vamos a ver cómo podemos administrar los comentarios realizados por nuestros usuarios en un sitio hecho con Drupal mediante correo electrónico y como hacer un uso más profundo de los comandos con el módulo Feeds.

En el artículo anterior vimos como publicar contenido en el sitio, ahora vamos a ver cómo publicar comentarios y cómo actualizar su estado a no publicado en caso de que sea un comentario inapropiado y no queremos que se publique; todo mediante correo electrónico.

Primero que todo tenemos que tener configurados el módulo Mailhandler y el módulo Feeds  como vimos en el artículo anterior (importante aplicar el parche al módulo Mailhandler que ya vimos). Ahora vamos a crear un nuevo Feed importer, para eso nos dirigimos a Structure -> Feeds importers -> Add importer, le damos un nombre y una descripción, y creamos.

En la sección Basic settings -> Settings seleccionamos en Periodic import la opción As often as possible.

En la sección Fetcher -> Change seleccionamos Mailhandler fetcher.

La sección Mailhandler fetcher la dejamos tal y como aparece.

En la sección Parser -> Change seleccionamos Mailhandler IMAP stream parser.

 En la sección Mailhandler IMAP stream parser -> Settings definiremos los comandos que vamos a utilizar para conformar nuestro comentario.

Comandos disponibles
 Dejamos status como viene por defecto y añadimos el comando nodeid para especificar en el correo el id del contenido al que le vamos a insertar un nuevo comentario.

En la sección Comment processor -> Mapping añadimos los siguientes elementos que conforman los parámetros que contendrán nuestros comentarios:

Elementos del comentario nuevo
Al comando que creamos nodeid le hacemos corresponder el Node ID (id del nodo) al que le vamos a insertar el nuevo comentario. La fecha del email que obtiene mediante Date se la asignamos a Published date (fecha de publicado o creado el comentario). El Subject (asunto) del correo va a ser el Title (título) de nuestro comentario. El Body (el contenido del correo) será el Comment (el contenido del comentario), este contenido no tiene en cuenta los comandos y sus valores que establecimos antes. El comando status será el Published status (estado del comentario) que definirá si nuestro comentario recién creado será inmediatamente aprobado y publicado o no.

Ahora primero antes de utilizar nuestro feed por primera vez tenemos que enviar un correo con los parámetros que definimos en el mapping a la cuenta de correo que establecimos en el Mailhandler. En el correo tenemos que definir los comandos con su contenido que vamos a utilizar como aparece en la siguiente imagen (importante que cada comando que tengamos que definir en el correo este una línea debajo del otro y el contenido encerrado entre corchetes):

Email contenido
Ahora nos dirigimos de nuevo a Basic settings -> Settings y damos en el vínculo que aparece debajo del Attach to content type que dice import. Esto nos  mostrará los Feeds que hemos creado y que tenemos disponibles para importar. Hacemos clic en el feed en el que estamos trabajando, abriéndose una nueva página con la información referente a este y damos clic en el botón Import. Esto realizará el import de nuestro feed y si todo sale bien nos mostrará un cartel diciendo que se ha creado un comentario.

Puedes crear este feed si no quieres realizar todos estos pasos dando en importar un nuevo feed y copiando el contenido de este archivo desde mi cuenta de Github aquí.

Desaprobando un comentario por correo

Para esto modificamos este feed que ya creamos y vamos a hacerle los siguientes cambios (es importante que sea el mismo feed que utilizamos anteriormente para insertar un comentario, pues si creamos un  nuevo feed desde cero para actualizar un comentario puede no funcionar).

Primero que todo nos dirigimos a la sección Mailhandler IMAP stream parser -> Settings y definimos los siguientes comandos  uno debajo del otro:

status: 0
commentid
commentuid

Comandos disponibles

El primer comando status: 0 establece que el comentario que vamos a actualizar le vamos a cambiar el estado de publicado a no aprobado. En cuanto a los otros dos comandos, los vamos a definir para poder obtener correctamente la información del correo y crear nuestro comentario.

En la sección Comment processor -> Settings cambiamos el Insert new comments a Do not insert new comments y el Update existing comments a la opción con el mismo nombre. De esta forma le estamos diciendo que no queremos insertar un nuevo comentario sino actualizar uno existente. También podemos cambiar el nombre de usuario que aparecerá como el que realizó la actualización del comentario o dejar el que viene por defecto.

En la sección Comment processor -> Mapping añadimos los siguientes elementos que conforman los parámetros que contendrán nuestros comentarios (importante asegurarnos de haber marcado a commentuid - GUI como el elemento que vamos a utilizar como único (Used as unique), pues a la hora de actualizar un comentario tenemos que tener esto, aunque en realidad no lo utilicemos):

Elementos del comentario a actualizar
Ahora el correo que enviemos debe tener una estrucutra como esta, dónde como pueden ver solo tenemos que pasarle el id del nodo al que pertenece el comentario y el id del comentario al que queremos modificar el estado de publicado.

Email contenido

Ya podemos entonces importar nuestro feed, para eso nos dirigimos ahora al Cron en Configuration -> System -> Cron, pues como ya habíamos importado anteriormente el feed y ya podemos hacerlo desde aquí de ahora en adelante. Si todo sale bien nos mostrará un mensaje de que se ha actualizado 1 comentario y si buscamos este comentario en la sección de Contenido -> Comentarios podemos ver como ahora el comentario que teníamos publicado cambió su estado a no aprobado.

Puedes crear este feed si no quieres realizar todos estos pasos dando en importar un nuevo feed y copiando el contenido de este archivo desde mi cuenta de Github aquí.

Bueno, es todo por hoy, no dejen de comentar ante cualquier duda o sugerencia. Y si tienen otra vía para hacer esto, por favor háganla saber en los comentarios.

Déjame saber cualquier duda, sugerencia o experiencia al respecto. ¡Espero tú opinión! También puedes comentar como anónimo. ConversionConversion EmoticonEmoticon

:)
:(
=(
^_^
:D
=D
=)D
|o|
@@,
;)
:-bd
:-d
:p
:ng