Revision Log Default

Genera automáticamente mensajes de registro de revisión predeterminados para entidades de contenido cuando el usuario no proporciona ninguno.

revision_log_default
2,551 sites
41
drupal.org

Install

Drupal 11, 10, 9, 8 v8.x-1.4
composer require 'drupal/revision_log_default:8.x-1.4'

Overview

Revision Log Default es un módulo de utilidad que completa automáticamente los mensajes de registro de revisión para cualquier entidad de contenido de Drupal que soporte el registro de revisiones. Cuando un usuario guarda contenido sin proporcionar un mensaje de registro de revisión, este módulo genera un mensaje significativo y legible que describe lo que se cambió.

El módulo funciona de manera transparente en segundo plano sin requerir configuración. Se integra perfectamente con el flujo de trabajo de moderación de contenido del core y con módulos de terceros como Workbench Moderation, asegurando que los registros de revisión reflejen con precisión los últimos cambios incluso cuando se trabaja con revisiones en borrador.

Este módulo resuelve el problema común de los historiales de revisión vacíos al garantizar que cada cambio de contenido esté documentado, facilitando el seguimiento del historial de modificaciones del contenido a lo largo del tiempo.

Features

  • Genera automáticamente mensajes de registro de revisión cuando el usuario no proporciona ninguno
  • Crea mensajes contextuales basados en el tipo de cambio: creación de nuevo contenido, creación de traducción o actualizaciones de campos
  • Lista los nombres específicos de los campos que fueron modificados al actualizar contenido existente (ej. 'Updated the Title and Body fields')
  • Maneja mensajes gramaticalmente correctos para diferentes números de campos modificados (formas singular, dual y plural)
  • Establece correctamente la marca de tiempo de creación de revisión cuando coincide con la original (común con REST API, Quick Edit o código personalizado)
  • Establece automáticamente el ID de usuario de la revisión, recurriendo al propietario de la entidad cuando el usuario actual es anónimo (útil para CLI y migraciones)
  • Se integra con el módulo Content Moderation para comparar contra la última revisión en lugar de la revisión predeterminada
  • Se integra con el módulo Workbench Moderation para flujos de trabajo de moderación heredados
  • Maneja inteligentemente tipos de campos especiales incluyendo campos de ruta y campos de comentarios
  • Ignora los campos relacionados con revisiones y la marca de tiempo 'changed' al determinar qué campos fueron modificados
  • Funciona con cualquier tipo de entidad de contenido que implemente RevisionLogInterface (nodes, media, entidades personalizadas, etc.)

Use Cases

Auditoría de Flujo de Trabajo Editorial

Los editores de contenido que trabajan en un sitio de noticias frecuentemente actualizan artículos pero raramente recuerdan ingresar mensajes de registro de revisión. Con Revision Log Default habilitado, cada guardado se documenta automáticamente. Cuando un editor actualiza el titular y la imagen destacada, el registro de revisión muestra 'Updated the Title and Image fields', creando una pista de auditoría completa sin requerir entrada manual.

Gestión de Contenido Multilingüe

Un equipo de traducción agrega traducciones en francés y alemán al contenido existente en inglés. Cuando crean nuevas traducciones, el módulo registra automáticamente 'Created French translation' y 'Created German translation', facilitando el seguimiento de qué traducciones fueron agregadas y cuándo.

REST API y Drupal Headless

Una aplicación desacoplada actualiza contenido a través de la REST API de Drupal. Dado que los clientes API raramente proporcionan mensajes de registro de revisión, Revision Log Default asegura que todos los cambios realizados vía API estén documentados. El módulo también establece correctamente la marca de tiempo de la revisión incluso cuando la API no la proporciona.

Migración de Contenido

Durante una migración desde un CMS heredado, el contenido se importa a través de Drush o scripts de migración. El módulo establece los IDs de usuario de revisión apropiados (recurriendo al propietario del contenido cuando se ejecuta como anónimo) y genera mensajes 'Created new Article' para todo el contenido migrado.

Cambios con Quick Edit

Los usuarios que realizan ediciones en línea con el módulo Quick Edit a menudo no tienen acceso al campo de registro de revisión. Revision Log Default documenta automáticamente estos cambios rápidos, como 'Updated the Body field', asegurando que las ediciones en línea se rastreen correctamente en el historial de revisiones.

Tips

  • El módulo funciona automáticamente una vez habilitado - no se necesita configuración
  • Los mensajes de registro de revisión proporcionados por el usuario siempre tienen prioridad; el módulo solo completa los registros vacíos
  • El módulo es particularmente útil para sitios con flujos de trabajo editoriales, ya que asegura que cada cambio de contenido esté documentado
  • Funciona con cualquier tipo de entidad de contenido personalizada siempre que implemente RevisionLogInterface
  • Considera habilitar este módulo temprano en un proyecto para construir un historial de revisiones completo desde el inicio

Technical Details

Hooks 1
hook_entity_presave

El módulo implementa hook_entity_presave() para interceptar el guardado de entidades de contenido y completar el mensaje de registro de revisión cuando está vacío. Este hook se ejecuta para todas las entidades de contenido que implementan RevisionLogInterface.

Troubleshooting 3
Los registros de revisión siguen apareciendo vacíos

Asegúrate de que el tipo de entidad de contenido implemente RevisionLogInterface. Los tipos de entidad personalizados deben tener el soporte de revisiones habilitado con las revision_metadata_keys apropiadas definidas en su anotación de entidad.

Los campos modificados no se detectan correctamente

Algunos tipos de campos complejos pueden no funcionar perfectamente con la lógica de comparación de campos. El módulo usa el método equals() en las listas de elementos de campo. Si un tipo de campo personalizado no implementa esto correctamente, los cambios pueden no ser detectados.

El módulo registra cambios en campos que no modifiqué

Algunos campos pueden tener sus valores alterados por otros hooks o procesos antes de que se ejecute el hook presave. Esto puede causar que el módulo detecte cambios que no fueron realizados directamente por el usuario.