Creo que es posible. En el manejador de eventos dpg_displaypage, debes usar $.ajax() para llamar a tu API externa. Además, creo que necesitas agregar tu API externa a la configuración de Discourse content security policy script src.
Parece que este plugin aún está en mantenimiento, pero he logrado aislar un problema en mi servidor donde la página de inicio de sesión no es visible cuando el plugin está habilitado. Espero poder resolver esto.
Si este plugin está habilitado en mi servidor, puedo confirmar que la página de inicio de sesión aparece en blanco, y si desactivo el plugin, la página de inicio de sesión vuelve a aparecer con normalidad. Si un usuario ya ha iniciado sesión, el problema no se presenta y el servidor funciona con normalidad.
Busco ayuda o soporte para resolver esto. Estoy dispuesto a proporcionar cualquier información adicional necesaria para apoyar la solución del problema.
Gracias, Jordan.
Sí, necesitaré más información, ya que he revisado mis diversas instancias de Discourse y no he podido reproducir el problema.
Cuando dices “la página de inicio de sesión no se puede ver”, te refieres al popup de inicio de sesión, ¿verdad?
Por favor, dame más detalles y/o capturas de pantalla. Además, si es posible, envíame un mensaje privado y proporciona la URL de tu instancia de Discourse.
Hola Syl,
Gracias por la respuesta.
Cuando tengo el plugin discpage habilitado y accedo a la instancia de Discourse sin haber iniciado sesión, se me muestra una página completamente en blanco. Mira lo siguiente:
También acabo de revisar los registros de la consola y noté que hay algunos errores relacionados con discpage. Aunque para mí no significan nada. Quizás para ti sí tengan sentido…
Gracias por reportar esto. El error ha sido registrado aquí:
https://github.com/sylque/discpage/issues/17
Mientras se soluciona el error, una solución temporal es desactivar la configuración de Discourse “se requiere inicio de sesión”.
EDITO: el error ya ha sido solucionado.
Hola Syl,
Es un poco incómodo
, perdona si soy directo. Estaba revisando el código fuente del plugin, solo por curiosidad, sin tener ninguna habilidad de programación, y me confunde el formato del archivo lib. Supongo que no es una elección técnica (¿pero qué sé yo?
), y puedo imaginar y entender de dónde viene.
Siento que estás en medio del proceso, y ya es genial, así que realmente no quiero parecer ingrato, pero ¿considerarías compartir una versión inteligible de tu trabajo?
En mi opinión, a largo plazo, el ritmo de las actualizaciones del núcleo puede ser difícil de seguir para los autores de plugins; esto podría aliviar la mente de aquellos que podrían usar las funciones de tu plugin pero dudan en construir algo basándose en los hombros de tan pocas personas, y ¿por qué no?, ¡incluso podría generar buena voluntad e interés!
Muchas gracias de todos modos ![]()
Hola Benjamin,
El código fuente del complemento se ha publicado en forma minificada porque me da vergüenza. Es el resultado de un experimento de I+D y necesita una refactorización exhaustiva. He pospuesto la tarea hasta que el complemento genere cierto interés.
![]()
¡Bueno, cuéntame entre los “muy interesados”!
Creo que es una variación muy agradable de la función principal de “cita”.
Estoy buscando un incentivo para que mis usuarios se involucren en algunos análisis de discursos (que es bastante similar a tu caso de uso de Castafiore, aunque, por desgracia, mucho menos entretenido), y espero que este diseño los impulse a ponerse en modo escritura.
¡Hasta ahora todo bien!
Mis dos centavos:
- Opinión humilde sobre el encabezado: preferiría mantenerlo centrado; siento que integra las páginas estáticas del plugin de manera más fluida en un discurso globalmente “normal”.
- Caso marginal: podría ser interesante especificar una categoría de globo por categoría estática, en caso de que varias categorías estáticas tengan diferentes permisos de lectura/escritura.
- ¿Me estoy perdiendo algo o los
[dpgb id=título] [/dpgb](que, creo, se convierten en globos) deben configurarse manualmente? Intenté con sinceridad (y sin éxito) usar el botón de cita del compositor, ¡ay!
. Probablemente sea necesario, ya que el slug de la etiqueta debe definirse
. - ¿Podría la configuración
discpage hide tagsconvertirse enhide discpage tags? No termino de comprender la dificultad de ocultar solo las etiquetas dpg-****, pero creo que podrían saturar un poco la lista sugerida al crear un tema.
Siguiente paso: ¡la prueba de compromiso del usuario!
Gracias @Benjamin_D, tus comentarios son muy bienvenidos.
La alineación del encabezado debe adaptarse a:
- Páginas normales de Discourse (ancho máximo = 1110 px),
- Páginas estáticas de DiscPage (ancho máximo = 782 px, ya que 1110 px es demasiado ancho para una página estática donde no se pueden colocar barras laterales, widgets o imágenes),
- Diseño dividido de DiscPage, con una página estática a la izquierda y temas a la derecha (ancho máximo = 100 %).
He realizado muchas pruebas, tanto con alineación fija del encabezado como con alineación dependiente del diseño, y llegué a la conclusión de que una alineación permanente a la izquierda era la mejor opción.
Sin embargo, estaré encantado de revisar cualquier idea que puedas proponer. Asegúrate de abordar los tres casos mencionados anteriormente.
Esto ya está soportado; consulta este párrafo en la documentación:
De hecho, puedes establecer varias categorías aquí. Llamemos PageCat a la categoría de la página estática a la que pertenece el globo. Si hay más de una categoría de globo en este campo, DiscPage tomará la primera que sea o bien un hermano de PageCat (mismo padre inmediato) o el padre inmediato de PageCat. Si no se encuentra ninguna categoría así, DiscPage tomará la primera categoría de la lista. Esta función permite emparejar [categoría de página estática, categoría de globo], lo cual es útil, por ejemplo, en foros multilingües o para configurar páginas estáticas con diferentes permisos de grupo.
Coincido en que no es fácil de entender. Cualquier idea sobre cómo mejorar la redacción será bienvenida.
Sí, los globos deben insertarse manualmente utilizando una sintaxis de texto.
Cuando probaste el plugin por primera vez, ¿por qué pensaste que el botón de citar podría ser de alguna ayuda? (Me interesa conocer tu estado mental en ese momento).
La función hide discpage tags ya está implementada: las etiquetas de DiscPage están ocultas por defecto en todas las páginas y widgets de Discourse. En otras palabras, si puedes ver una etiqueta de DiscPage en cualquier lugar (cuando DiscPage está habilitado), eso es un error.
La configuración discpage hide tags es muy diferente: permite a quienes no desean habilitar las etiquetas en su instancia de Discourse, pero se vieron obligados a hacerlo para usar DiscPage, simular una instancia sin etiquetas.
En realidad, es más bien el ancho máximo de 1110px lo que mantendría, incluso si, en pantalla dividida, la página estática bajo el encabezado ocupa el 100%. Comenté el bloque html.dpg header.d-header .wrap y no se siente tan mal tener un poco de espacio blanco alrededor del encabezado sobre la página estática dividida (aunque los botones de editar título y página parecen un poco perdidos allí, en diseño no dividido).
Estúpido de mí, RTFM
(en mi defensa, probablemente lo hice el año pasado y lo olvidé
)
No recordaba que DiscPage ocultaba la categoría globo (acabo de probarlo como administrador), pero es una gran característica.
Así que, si entiendo correctamente, en caso de múltiples {categoría de página estática, derechos de usuario}, uno debería hacer que una categoría globo asociada sea subcategoría de la estática (lo cual tiene sentido desde el punto de vista de los derechos), o tener ambas categorías como subcategorías de una tercera categoría padre común. No es importante, pero ¿también funcionaría si la estática es subcategoría de la globo?
Probablemente solo la forma de globo del icono, junto con el hecho de que probablemente nunca haya usado el botón de citar del compositor, y quizás pensé: Oye, ¿eso estaba ahí antes? Así que lo probé ![]()
No me importa tener que escribir algunas líneas de “código”, pero puedo escuchar a mis usuarios aullando desde aquí. Tal vez simplemente no se configuran las páginas estáticas por ahora. A veces siento que cada golpe en el teclado puede ser la gota que colma el vaso… ![]()
Por supuesto, lo siento… Voy a culpar a mi leve fiebre; no sé por qué pensé que no estaban ocultas, tal vez vi un destello de una en el cuadro desplegable de etiquetas en la parte del globo de la pantalla dividida. Ahora entiendo la coma final que vi al probarlo todo, ¡incluso etiquetando los temas del globo!
¿Sería posible permitir a los usuarios crear y editar sus publicaciones estáticas? La restricción de administrador podría lograrse entonces únicamente mediante la configuración de seguridad de categorías.
edición:
quizás no, modificar tag_groups parece requerir StaffConstraint ![]()
Puedo permitir que un usuario de nivel de confianza 4 configure un globo cambiando a = User.current()) && a.admin por User.current()) && a.trust_level >= 4, pero la etiqueta no se creará hasta que un administrador edite la página estática… ![]()
Sería genial algo así: un moderador de categoría que pudiera cambiar el grupo de etiquetas de su categoría ![]()
Por cierto, he descubierto que la lista de verificación de complementos parece interferir con discpage (algo relacionado con getmodel())
Prefiero el diseño actual. Sin embargo, debería haber una forma sencilla de personalizarlo. Lo pensaré.
No, esta combinación no es compatible.
Como ya has deducido, la creación de páginas estáticas no está limitada a los administradores, pero sí la inserción de globos. La razón es que no hay una forma directa de crear etiquetas en Discourse (ver este hilo). Para ello, opté por utilizar la API de tag group, que está restringida a administradores. Existían soluciones alternativas, pero presentaban sus propios inconvenientes.
¿Te refieres a este plugin? ¿Qué problema hay?
Efectivamente, con ambos complementos habilitados, al actualizar una página estática, se desactiva Discpage (devuelve una disposición normal) y la consola muestra un error:
Uncaught (in promise) TypeError: postModel is undefined
checklistSyntax javascripts/discourse/initializers/checklist:29
Ambos complementos funcionan correctamente por separado.
Gracias @Benjamin_D. El problema se ha reportado aquí:
EDITO: esto se ha solucionado en la última versión (1.0.38).
Hola @syl, lamento ser el mensajero de malas noticias
, he encontrado otro problema de compatibilidad, un poco más problemático: con discpage habilitado, un enlace de invitación lleva a una página en blanco (en lugar de la página de registro).
La consola del navegador dice:
r.site.categories is undefined
Desactivar el plugin hace que el enlace de invitación funcione como de costumbre.
Muchas gracias por reportar esto, @Benjamin_D. Este es otro error más con el modo “inicio de sesión obligatorio”, así que he reabierto el problema anterior en GitHub. Hasta que esto se solucione, una solución temporal es desactivar el modo “inicio de sesión obligatorio”.
EDITO: esto ya se ha solucionado en la última versión (1.0.38)
¡Hola @syl!
Creo que el reciente cambio en las rutas de etiquetas
ha roto algo ![]()
Como mínimo, el enlace en las burbujas ahora debería apuntar a /tag/dpg-xxx y no a /tags/dpg-xxx
Gracias @Benjamin_D, esto se ha solucionado en la v1.0.38.

