Copiar componente de tema de Codeblocks

:warning: Este componente de tema ahora está obsoleto en favor de Copiar el contenido del bloque de código al portapapeles, una función principal de Discourse.

:sun_with_face: Vista previa en Theme Creator
:computer: Repositorio Git: https://github.com/discourse/discourse-copy-codeblocks
:bulb: ¿Cómo instalo un tema o un componente de tema?

Este componente de tema agrega un botón de copiar a los bloques de código dentro de las publicaciones de Discourse, ideal para comunidades que comparten ejemplos de código o artículos de base de conocimientos que requieren copiar texto.

En escritorio, el botón de copiar aparece al pasar el cursor sobre el bloque.

En dispositivos móviles, el botón de copiar siempre está visible, pero empuja el código dentro del bloque hacia abajo para evitar ocultar la primera línea de código si es demasiado larga.

Tenga en cuenta que esto solo funciona para bloques de código generados por ```, y no para bloques de código en línea.

Este es un bloque de código.
Copie este texto.

Este es un bloque de código en línea. La función de copiar no funciona aquí.

Muchas gracias a @j.jaffeux, quien realizó gran parte del desarrollo inicial de esta función.

24 Me gusta

¿Cuál es la diferencia entre esto y https://meta.discourse.org/t/copy-option-for-code-blocks-in-discourse/60961?u=falco?

7 Me gusta

Varias cosas:

  • No incluye una librería completa de portapapeles
  • No depende de jQuery
  • No filtra los escuchadores de eventos
  • No depende de múltiples eventos
  • Utiliza estándares de codificación actualizados
  • No tiene el error de comillas

No estoy seguro de si esto funciona correctamente en móviles también.

15 Me gusta

¡Genial!

Me pregunto si estaríamos abiertos a reemplazar el texto localizado “copiar”/“copiado” con iconos. ¿Quizás el icono de copiar para “copiar” y el icono de marca de verificación para “copiado”?

3 Me gusta

Estoy abierto a agregar una configuración al componente. La razón por la que opté por el texto localizado es que resulta claro lo que sucede, además de que el texto puede tener una altura menor y seguir siendo legible. La estética parecía encajar mejor con el caso de uso.

7 Me gusta

Parece que deberíamos eliminar o descontinuar una u otra y consolidar los esfuerzos. :thinking:

7 Me gusta

Minor: el retraso al copiar es demasiado rápido en mi iPhone; el texto debería decir ‘Copiado’ durante unos 3 segundos antes de volver al estado anterior.

Se ve bien :+1:

8 Me gusta

Modificado aquí:

https://github.com/discourse/discourse-copy-codeblocks/commit/d1af36a4a5197dab4ca1dd62a05930088882de45

También se corrigieron varios errores en versiones antiguas de Discourse que no tienen @ember/runloop ni Promise de la biblioteca rsvp disponibles. (Gracias a @jomaxro por los informes sobre estos)

7 Me gusta

Lo sentimos, pero un :heart: no es suficiente esta vez.

¡Genial! Esto es increíble. Esto, combinado con Placeholder Forms, es realmente genial.

Lo que acabo de hacer con ello

sfdisk -d /dev/=gooddev= | sfdisk /dev/=newdev=
mdadm --manage /dev/md1 --add /dev/=newdev=
mdadm --detail /dev/md1

¡Mira cómo funciona!

while true; do mdadm --detail /dev/md1|grep "Rebuild Status" ; sleep 10;done

Obtener el tiempo de encendido para todos los discos

for x in a b c d ; do smartctl -a /dev/sd$x|grep Power_On; done
12 Me gusta

¡Me encanta mucho! :heart_eyes: Pero ¿podría el botón de copiar ser visible solo al tocar en móviles? Me siento un poco decepcionado por la pérdida constante de espacio en pantalla en móviles, una línea extra para cada bloque de código:

Pero luego me doy cuenta de que:

  • los bloques de código no son tan comunes
  • como es opcional, solo lo activarías en sitios donde copiar bloques de código sea una actividad frecuente

…dicho esto… las probabilidades de que cualquier bloque de código se copie en un móvil son extremadamente bajas, así que siento que la relación entre la interfaz de usuario y el uso no es equilibrada, y preferiría algo que aparezca solo al tocar en móviles.

No es urgente.

3 Me gusta

Sí, es una solicitud totalmente justa :+1: Comparto esta preocupación también, encontraremos una solución.

1 me gusta

Incluso esto sería preferible en móviles, creo. La alineación no es perfecta, pero se entiende el concepto:

(Incluso si se superpone al texto, etc., no estoy seguro de si eso lo hace más difícil o más fácil que mostrarlo al tocar:thinking:)

Originalmente teníamos eso, pero se superponía al texto sin poder verlo. Me gusta la idea de que se vuelva visible al tocarlo. Lo investigaré.

1 me gusta

En móviles, ese es un intercambio mucho mejor, sin duda. En portátiles, ordenadores de escritorio o tabletas, el espacio adicional que se consume es 100% aceptable.

1 me gusta

Hola,

Me encantaría usar esto, pero en cuanto lo activé para mi tema Grey Amber, mi sitio se volvió lento y en ocasiones no respondía hasta que lo desactivé.

¿Alguien ha experimentado este comportamiento? ¿O podría ser que esto sobrecargue tanto el VPS cuando está activado?

El sitio está compuesto en un 99,9 % por líneas de código individuales y esperaba cambiar a bloques de código para esto, así que no debería estar intentando recuperar ni convertir ningún código existente. ¿O sí lo hace?

¿Debo darle un tiempo para que se normalice? Simplemente seguía derribando el sitio temporalmente y, cuando alguna página llegaba a cargar, aparecía un mensaje de error con la opción de “intentar de nuevo” de Discourse.

Gracias de antemano.

2 Me gusta

¡Vaya, eso suena a un error bastante grave!

1 me gusta

Error menor: el texto “copiar” puede aparecer en una cita. (Mucho menos grave que la publicación anterior.)

El button.copy-cmd debe excluirse de la cita. Aplicar user-select: none en el CSS corrige Ctrl-C, pero no la funcionalidad de cita.

3 Me gusta

¿Tienes un enlace a tu sitio? Parece muy extraño que un tema pueda causar esto. ¿Cuántos bloques de código tienes en una página?

Así que he realizado varios cambios aquí. Dado que nuestros problemas eran:

  • espacio en pantalla en móviles
  • error al copiar texto en citas
  • y hemos recibido solicitudes de tener un icono en lugar de texto

La solución obvia que resuelve todo esto… fue usar un icono.

En móviles ahora es aceptable tenerlo a la derecha, ya que ocupa menos espacio y solo necesitamos algo de relleno para el texto:

Solo una pequeña molestia: en las primeras líneas muy largas, el texto quedará oculto detrás del botón. Creo que es aceptable dado que puedes hacer scroll:

Y en escritorio funcionará como antes, sin el error de la cita:

En cuanto al posible error de rendimiento, probé una página con decenas de bloques de código y no tuve ningún problema, así que necesitaré una reproducción del error antes de poder hacer algo @lcestou, por favor.

Prueba el nuevo bloque de código aquí:

rsync -a file.txt file_backup.txt
rsync -a /var/www/public_html/ /var/www/public_html_backup/
7 Me gusta

¡Esta función ya está integrada en el núcleo de Discourse :tada:

Como resultado, este componente del tema está ahora OBSOLETO. Seguirá funcionando en instancias antiguas de Discourse, pero ya no recibirá actualizaciones.

He actualizado el primer mensaje para reflejar esta información.

5 Me gusta