| Resumen | Permite a los usuarios autorizados duplicar eventos/temas del calendario (creados a través de Discourse Calendar and Events ) en un nuevo período de tiempo. Funciona con un solo tema o con una serie completa etiquetada (por ejemplo, todos los temas etiquetados como `grand-prix`), con una etapa de revisión para editar las fechas propuestas antes de confirmar. | |
| Enlace al repositorio | GitHub - louking/discourse-event-duplicator: discourse plugin to duplicate events · GitHub | |
| Guía de instalación | Cómo instalar plugins en Discourse |
Resumen
Este plugin se desarrolló para una comunidad de un club de running cuyo calendario consiste principalmente en los mismos eventos que ocurren cada año en una fecha desplazada. Recrear el tema de cada evento a mano cada temporada implicaba duplicar el bloque [event ...], corregir el título y buscar cuáles ya se habían hecho. Eso era tedioso y propenso a errores. Event Duplicator lo automatiza: selecciona un evento de origen, o una serie completa etiquetada de ellos, obtén una nueva fecha propuesta, revísala o edítala y confirma.
Consulta docs/USAGE.md para una guía completa orientada al usuario: quién puede usarlo, duplicar una serie frente a un solo tema, cómo funciona la etapa de revisión.
Características
- Duplicación de series: selecciona una categoría y una o más etiquetas (por ejemplo,
grand-prix,signature-race; las coincidencias se combinan con OR y se deduplican, por lo que un tema con múltiples etiquetas coincidentes solo aparece una vez), opcionalmente restringido a un rango de fechas de origen, y luego revisa las fechas propuestas de la siguiente ocurrencia antes de confirmar. - Duplicación de un solo evento: el mismo flujo de revisión y confirmación para un tema a la vez, desde el menú de administración de ese tema (icono de llave inglesa).
- Etapa de revisión editable: cada fila muestra la fecha de inicio original junto a una nueva fecha propuesta que puedes editar (con granularidad de día), más un título editable. La fecha de finalización siempre se deriva automáticamente de la duración del evento de origen, por lo que no puede desincronizarse con una fecha de inicio editada.
- Dos estrategias de desplazamiento de fecha conectables, seleccionables por ejecución con un valor predeterminado configurable:
- Misma fecha del calendario: desplaza hacia adelante por el número de meses configurado.
- Nº día de la semana del mes: conserva, por ejemplo, “el 3º sábado del mes” incluso cuando el desplazamiento cae en un mes diferente.
- Cantidad de desplazamiento configurable: desplaza hacia adelante por cualquier número de meses (12, es decir, un año, por defecto), no solo anualmente. Útil para cadencias mensuales, trimestrales u otras recurrentes. Anulable por ejecución, con un valor predeterminado a nivel de sitio a través de una nueva configuración (abajo).
- Marcado de “Fecha por determinar”: para eventos cuya fecha en el mundo real aún no está definida, marca una fila. Una anotación configurable (predeterminada
(date TBD)) se agrega tanto al título del tema como al nombre del evento. - Seguimiento de duplicados: evita duplicar el mismo evento dos veces (relevante ya que un tema puede tener más de una etiqueta de serie). Los temas ya duplicados se marcan y se desmarcan por defecto en la revisión, con una opción explícita de volver a marcar la casilla para forzarlo de todos modos. Eliminar un tema duplicado libera automáticamente su origen para una nueva duplicación, y restaurarlo lo vuelve a bloquear.
- Retroalimentación posterior a la duplicación: las filas duplicadas con éxito se convierten en un enlace al nuevo tema directamente en la tabla de revisión. Los fallos genuinos se informan por fila en lugar de abortar todo el lote.
Requisitos
- discourse-calendar debe estar instalado y habilitado. Este plugin duplica eventos utilizando la propia marca de publicación
[event ...]de discourse-calendar y el modeloDiscoursePostEvent::Eventen lugar de crear un almacenamiento de fechas separado. - Probado con Discourse 2026.7.0. No verificado en versiones anteriores.
Configuración
Todas las configuraciones están en Admin → Settings → Plugins, busca event_duplicator:
| Configuración | Predeterminado | Descripción |
|---|---|---|
event_duplicator_enabled |
desactivado | Habilita el plugin. |
event_duplicator_allowed_groups |
staff | Grupos (además del permiso normal de creación de temas por categoría) autorizados para duplicar eventos. Nota: una lista vacía significa nadie, no todos. Agrega el grupo “everyone” para abrirlo completamente. |
event_duplicator_default_date_strategy |
Same calendar date | Regla de desplazamiento de fecha predeterminada; anulable por ejecución. |
event_duplicator_default_shift_months |
12 | Cantidad de desplazamiento predeterminada, en meses; anulable por ejecución. |
event_duplicator_tbd_annotation |
(date TBD) |
Texto agregado al título/nombre del evento de un tema duplicado cuando se marca como TBD en la revisión. Déjalo en blanco para deshabilitar completamente la función de anotación. |
La autorización es una combinación AND de tres verificaciones: permisos normales de categoría de Discourse, membresía en event_duplicator_allowed_groups y el permiso propio de discourse-calendar para crear publicaciones [event] en absoluto.
Limitaciones conocidas
- La edición de fechas en la etapa de revisión es solo con granularidad de día (sin edición de hora del día). Esa es una decisión deliberada de alcance: el caso de uso objetivo son fechas de carreras/eventos recurrentes, no horas.
Código fuente / incidencias
- GitHub: GitHub - louking/discourse-event-duplicator: discourse plugin to duplicate events · GitHub
- Incidencias/solicitudes de funciones: Issues · louking/discourse-event-duplicator · GitHub
- Las suites de pruebas de backend (RSpec) y frontend (QUnit) están incluidas y se ejecutan en CI con cada push/PR.
Actualizado 2026-08-01: v1.1.0 agrega desplazamiento basado en meses configurable, ver abajo

