Этот компонент темы добавляет кнопку копирования к блокам кода внутри сообщений Discourse — идеально подходит для сообществ, публикующих примеры кода или статьи базы знаний, требующие копирования текста.
На настольных компьютерах кнопка копирования появляется при наведении курсора на блок.
На мобильных устройствах кнопка копирования отображается всегда, но сдвигает код внутри блока вниз, чтобы не перекрывать первую строку кода, если она слишком длинная.
Обратите внимание, что это работает только для блоков кода, созданных с помощью ``` ```, а не для встроенных блоков кода.
Это блок кода.
Скопируйте этот текст.
Это встроенный блок кода. Копирование здесь не работает.
Огромная благодарность @j.jaffeux, который выполнил значительную часть начальной разработки этого компонента.
Интересно, рассматриваем ли мы возможность замены локализованного текста «Копировать»/«Скопировано» на иконки? Например, иконку копирования для «Копировать» и иконку галочки для «Скопировано»?
Я не против добавить настройку в компонент. Причина, по которой я выбрал локализованный текст, в том, что это делает происходящее понятным, плюс текст может иметь меньшую высоту и при этом оставаться читаемым. С эстетической точки зрения это решение лучше подходило для данного случая.
Также исправлено несколько ошибок в старых версиях Discourse, где отсутствуют @ember/runloop и Promise из библиотеки rsvp. (Спасибо @jomaxro за сообщения об этих проблемах)
Мне это очень нравится! Но можно ли сделать кнопку копирования видимой только при нажатии на мобильных устройствах? Меня немного расстраивает постоянная потеря места на экране на мобильных: для каждого блока кода добавляется лишняя строка:
так как это опционально, вы включите это только на сайтах, где копирование блоков кода действительно является распространённым действием
… тем не менее… вероятность того, что какой-либо конкретный блок кода будет скопирован на мобильном, ничтожно мала, поэтому мне кажется, что соотношение интерфейса к использованию здесь не сбалансировано, и я бы предпочёл вариант с появлением при нажатии для мобильных устройств?
На мобильных устройствах это гораздо более приемлемый компромисс, и очень даже. На ноутбуке, настольном компьютере или планшете дополнительное занимаемое пространство абсолютно нормально.
Я бы с радостью использовал эту функцию, но как только я включил её для моей темы Grey Amber, мой сайт стал работать медленно и иногда становился неответчивым, пока я её не отключил.
У кого-нибудь было такое поведение, или это может так сильно нагружать VPS при включении?
Сайт на 99,9% состоит из отдельных строк кода, и я надеялся переключить их в блоки кода, так что, вроде бы, не должно быть попытки извлекать и конвертировать существующий код. Или всё-таки есть?
Должен ли я подождать какое-то время, чтобы всё нормализовалось? Сайт просто периодически падал, а когда страница иногда всё же загружалась, появлялась ошибка и сообщение от Discourse «попробуйте снова».
Единственное небольшое неудобство: на длинных первых строках иконка может перекрываться кнопкой, но, думаю, это приемлемо, так как можно прокрутить страницу:
Что касается возможной проблемы с производительностью, я протестировал страницу с десятками блоков кода и не обнаружил никаких проблем. Поэтому мне потребуется воспроизведение ошибки, прежде чем я смогу что-то сделать @lcestou, пожалуйста.
Попробуйте новый блок кода здесь:
rsync -a file.txt file_backup.txt
rsync -a /var/www/public_html/ /var/www/public_html_backup/