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.
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”?
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.
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.
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)
¡Me encanta mucho! 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:
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.
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.
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.
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:
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/
¡Esta función ya está integrada en el núcleo de Discourse
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.