Icono de Discourse

:discourse2: Resumen Discourse Icon te permite usar iconos de tu subconjunto de iconos SVG en una publicación.
:eyeglasses: Vista previa Vista previa en Discourse Theme Creator
:hammer_and_wrench: Enlace al repositorio https://github.com/discourse/discourse-icon
:open_book: ¿Nuevo en los temas de Discourse? Guía para principiantes sobre el uso de temas de Discourse

Instalar este componente del tema

Características

Uso:

[wrap=icon id=square][/wrap]

Ejemplo:
Este es el icono y el icono .

Este es el icono [wrap=icon id=far-square][/wrap] y el icono [wrap=icon id=pencil][/wrap].

Nota: si el icono no se muestra, es porque no está en tu subconjunto. Si eres administrador, puedes agregarlo en la configuración de tu sitio: subconjunto de iconos SVG.


:discourse2: ¿Alojado por nosotros? Los componentes de tema están disponibles para usar en nuestros planes Estándar, Empresarial y para Empresas.

31 Me gusta

¡Increíble! ¡Esto es icónico!

(meta tiene muchos muchos temas, pero afortunadamente, gracias a @kris.kotlarek, tenemos un botón para añadir a todos los temas… hay que organizar el progreso allí, porque tarda un poco en hacer su magia)

13 Me gusta

Sí, no quería añadirlo a todos por ahora, ya que acabo de terminar de codificarlo :grin:, pero lo haré ahora.

Edición: oh, ya está hecho.

10 Me gusta

¡Gracias, eso es súper divertido! :sunglasses:

Nunca me metí en las etiquetas de script BB, ni tampoco he codificado FontAwesome a mano, así que la práctica de usar un par de etiquetas vacías siempre me ha parecido extraña. ¿Es eso por convención popular o hay una razón de webcraft para usar pares de etiquetas? Además, ¿pueden tener contenido entre ellas? ¿Eso afecta al texto?

3 Me gusta

Hay múltiples causas aquí.

Primero, cuando escribí la función de BBCode wrap, @sam me pidió explícitamente que soportara 3 formatos:

[wrap=foo][/wrap]
[wrap=foo]bar[/wrap]
[wrap=foo]
bar
[/wrap]

Esto se hizo para mantener la coherencia con nuestro uso actual de BBCode en Discourse.

Podría haber usado una sintaxis mejor como [icon=times], pero en ese caso tendría que ser un plugin y no un componente de tema.

Como experimento, creo que está bien tal como está hoy, y si la gente lo usa mucho, podríamos considerar crear un plugin que lo haga con una sintaxis más concisa.

Otra idea que he tenido es agregar una API para añadir símbolos de autocompletado en el editor, tal como lo hacemos para usuarios/categorías/emojis… Pero me temo que esto sería una pesadilla si múltiples componentes eligieran sus propios símbolos…

5 Me gusta

¡Ah! Necesito agregar soporte para otro bbcode y esos. Pensé que usaría esto como punto de partida, pero estás diciendo que el asunto del envoltorio se maneja en el núcleo, lo que explica por qué no puedo encontrar cómo lo maneja tu componente del tema.

Mi solución actual es usar el componente de palabras enlazadas y una regex fea, pero todavía estoy luchando por agregar las clases necesarias a los enlaces.

3 Me gusta

Sí, lee este tema para saber más:

4 Me gusta

Bien, lo he revisado una docena de veces. Y he impreso el código de tu componente y lo he estado mirando durante horas, tratando de entender si lo que no entiendo es el grado en que es JavaScript o Ember. ¿No puedo agregar una etiqueta [foo] sin un plugin? ¿O puedo de alguna manera reemplazar wrap en tu código con foo para cubrir mi nuevo bbcode?

1 me gusta

No, no puedes. Porque parte de ello se ejecuta en el servidor. Si deseas tu propio BBCode personalizado, tendrás que escribir un plugin y ver cómo se implementa, por ejemplo, wrap:

https://github.com/discourse/discourse/blob/master/app/assets/javascripts/pretty-text/engines/discourse-markdown/d-wrap.js.es6

5 Me gusta

¡Gracias! Empieza a tener sentido. No había tenido tantos problemas aprendiendo un nuevo idioma desde C++ y Objective Pascal en 1990.

Mi truco actual con expresiones regulares casi funciona. Tendré que decidir si optar por el enfoque de plugin o quedarme con mi truco (y averiguar cómo agregar las clases).

¡Al menos ahora entiendo por qué no puedo encontrar ese envoltorio en el componente del tema!

3 Me gusta

Puedo pensar en algunas posibles estructuras de sintaxis para agregar al complemento wrap para esto:

[wrap=foo /]
[wrap/=foo]

(imitando las etiquetas de auto-cierre de XML), pero ambas son bastante feas :confused:

¿Alguien tiene ideas geniales para algo que se vea bien?

3 Me gusta

pues no soy muy fan de esto :confused:

6 Me gusta

He encontrado un gran error…

Si usas un envoltorio de icono y luego resaltas la cita, la imagen resultante se agranda enormemente:

  • Usa un envoltorio de icono en una frase de una publicación. Por ejemplo: Este es un icono [wrap=icon id=far-check-square][/wrap]
  • Resalta el texto relevante y haz clic en ‘Citar’.
  • El icono se vuelve súper grande en el extracto citado.

Así es como se ve la sintaxis cuando se cita resaltado:

[quote="JammyDodger, post:1, topic:294, full:true"]
Este es un icono ![](/svg-sprite/grumpy.jammydodger.monster/icon/222222/far-check-square.svg)
[/quote]

Esta es una respuesta donde se vuelve masiva

Aunque citarlo usando la burbuja de diálogo en la barra de formato funciona bien.

4 Me gusta

¿Cómo puedes resaltar el icono de la cita? En mi sitio de prueba, el icono se omite.

No estoy seguro. Solo uso el ratón.

¿Qué navegador estás usando?

Usando el ratón, probé con Chrome y Firefox, y no pude seleccionar el icono. :thinking:


EDITAR:

Si envuelves un icono no disponible en el subconjunto actual, creará una imagen SVG en su lugar.
Luego, puedes citarlo.

2 Me gusta

¿Puedes proporcionar un ejemplo? Tu captura de pantalla muestra una casilla de verificación marcada y no tengo problemas para seleccionarla en mi instancia de prueba (así como otros iconos que probablemente no usa Discourse como x-ray).

2 Me gusta

Veo el problema. El componente busca comprobando si hay un contenedor con la clase d-wrap; pero no hay contenedor si el icono proporcionado no pertenece al subconjunto. Crea una imagen como SVG en su lugar.

Por ejemplo:

SVG, icono dentro del subconjunto

Imagen como SVG, icono no dentro del subconjunto

Si citas las imágenes, el componente no hace nada, ya que no hay contenedor (y la imagen se convierte a markdown, resultando en una imagen sin ninguna clase)

1 me gusta

¿Significa esto que necesito tener un campo svg_icons en settings.yml disponible en mi tema? ¿O podría usar cualquier campo svg_icons disponible de cualquier componente temático habilitado también? Y si ese es el caso, ¿tendría sentido añadir este campo a este componente temático?

svg_icons:
  default: ''
  type: 'list'
  list_type: 'compact'

Porque en mi experiencia, los iconos SVG se transforman en etiquetas <img /> y no heredan currentColor cuando se cambia el esquema de color:
Por favor, compara el párrafo Ejemplo:

2 Me gusta

¿Se podría mejorar la representación en modo oscuro?

Me encantaría tener los mismos colores que en la interfaz:

3 Me gusta