Node Edit Protection

Previene la pérdida accidental de cambios no guardados en formularios de edición de nodos mostrando un diálogo de confirmación del navegador cuando los usuarios intentan navegar fuera de la página.

node_edit_protection
5,694 sites
22
drupal.org

Instalar

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

Overview

Node Edit Protection es un módulo de utilidad simple pero esencial que ayuda a prevenir que los usuarios pierdan accidentalmente su trabajo no guardado al editar nodos de Drupal. Detecta automáticamente cuando un usuario ha realizado cambios en un formulario de edición de nodo y muestra un diálogo de confirmación del navegador si intenta navegar fuera sin guardar.

El módulo funciona adjuntando un comportamiento JavaScript a todos los formularios de edición de nodos. Rastrea las interacciones del usuario con los campos del formulario y monitorea los intentos de navegación, incluyendo hacer clic en enlaces, usar el botón de retroceso del navegador, cerrar la pestaña o actualizar la página. Cuando se detectan cambios no guardados, el navegador muestra un mensaje de advertencia: "Perderás todo el trabajo no guardado."

Este módulo también incluye soporte integrado para CKEditor, detectando cambios realizados dentro de instancias del editor WYSIWYG.

Features

  • Protege automáticamente todos los formularios de edición de nodos sin configuración
  • Detecta cambios no guardados monitoreando las interacciones con los campos del formulario (eventos blur)
  • Muestra un diálogo de confirmación del navegador al navegar fuera con cambios no guardados
  • Permite el envío normal del formulario sin activar la advertencia
  • Maneja varios métodos de navegación: enlaces, botón de retroceso, actualización de página, cierre de pestaña
  • Integración incorporada con CKEditor para detectar cambios en editores WYSIWYG
  • Funciona de forma transparente sin configuraciones visibles para el usuario ni interfaz de administración
  • Compatible con Drupal 8, 9, 10 y 11

Use Cases

Protección de editores de contenido contra pérdida accidental de datos

Los editores de contenido que trabajan en artículos extensos o formularios de nodos complejos pueden perder accidentalmente su trabajo al hacer clic en un enlace de la barra de herramientas de administración, usar el botón de retroceso del navegador o cerrar la pestaña del navegador. Node Edit Protection muestra un diálogo de advertencia en todos estos escenarios, dando a los editores la oportunidad de cancelar la navegación y guardar su trabajo.

Flujo de trabajo de edición con múltiples pestañas

Los editores que trabajan frecuentemente con múltiples pestañas del navegador pueden cerrar accidentalmente una pestaña con cambios no guardados. Este módulo intercepta la acción de cierre de pestaña y solicita al usuario que confirme, previniendo la pérdida accidental de datos.

Protección en entornos de capacitación

En entornos de capacitación donde nuevos usuarios de Drupal están aprendiendo el sistema, este módulo proporciona una red de seguridad adicional contra errores comunes como navegar fuera antes de guardar el contenido.

Tips

  • El módulo funciona automáticamente sin necesidad de configuración - simplemente instálalo y habilítalo
  • La protección se aplica a todos los formularios de añadir y editar nodos, no solo a tipos de contenido específicos
  • El mensaje de advertencia es traducible a través de la interfaz de traducción estándar de Drupal
  • Los botones de envío del formulario se excluyen automáticamente de activar la advertencia, por lo que las operaciones normales de guardado funcionan sin problemas
  • Los enlaces con href='#' (anclas dentro de la página) también se excluyen para prevenir falsos positivos con operaciones AJAX

Technical Details

Hooks 1
hook_form_alter

Adjunta la biblioteca JavaScript node_edit_protection a todos los formularios que tienen la clase CSS 'node-form', lo cual incluye todos los formularios de añadir y editar nodos.

Troubleshooting 3
El diálogo de advertencia no aparece al salir de un formulario de edición de nodo

Asegúrate de que el módulo esté habilitado y que JavaScript esté funcionando correctamente. Revisa la consola del navegador en busca de errores de JavaScript que puedan impedir el funcionamiento del módulo. También verifica que el formulario tenga la clase CSS 'node-form'.

La advertencia aparece incluso cuando no se han realizado cambios

El módulo detecta cambios monitoreando eventos blur en los campos del formulario. Si haces clic en un campo y luego haces clic fuera, se marcará como editado. Esto es por diseño para asegurar que no se pierda ningún cambio.

Los cambios en CKEditor no se detectan

Asegúrate de estar usando CKEditor (no CKEditor 5) ya que el módulo busca el objeto global CKEDITOR. Para CKEditor 5, la detección puede no funcionar como se espera.