Snapblocks

:information_source: Краткое описание Позволяет пользователям использовать snapblocks в своих сообщениях.
:hammer_and_wrench: Ссылка на репозиторий GitHub - snap-blocks/snapblocks-discourse: snapblocks discourse plugin · GitHub
:open_book: Руководство по установке Как установить плагины в Discourse

Возможности

Snapblocks — это форк scratchblocks, который позволяет пользователям преобразовывать текст в изображения скриптов Snap!. Этот плагин для Discourse позволяет пользователям использовать snapblocks в своих сообщениях.

Вы можете создать snapblocks в сообщении, введя код snapblocks внутри тегов bbcode [snapblocks][/snapblocks]. Например:

[snapblocks]
move (10) steps
[/snapblocks]

Также можно использовать [scratchblocks][/scratchblocks] в качестве псевдонима, хотя эту функцию можно отключить.

Вы также можете использовать [sb][/sb] для вставки кода snapblocks прямо в строку.

Используйте блок [sb]move (10) steps[/sb], чтобы двигаться вперёд.

Параметры

Доступно несколько настроек для изменения способа отображения snapblocks.

  • Стиль блоков
  • Масштаб блоков
  • Зебра-окраска
  • Перенос блоков
  • Показывать пробелы
  • Шапки Санта-Клауса

Многие параметры также можно использовать в фрагментах snapblocks.

[snapblocks blockStyle="snap-flat" wrap="true" wrapSize=100 zebra="true" showSpaces="false" santa="true"]
when flag clicked
if <[] = []> {
  forever {
    run ({} @addInput) with inputs [Hello world] @delInput @verticalEllipsis @addInput
  }
}
[/snapblocks]

Стиль блоков также можно задать с помощью параметра по умолчанию.

[snapblocks="snap-flat"]
move (10) steps
[/snapblocks]

Конфигурация

Название Описание
Стиль блоков Стиль блоков по умолчанию. Может быть snap, snap-flat, scratch2, scratch3 или scratch3-hc.
Масштаб блоков Масштаб изображения блоков по умолчанию. Должно быть число с плавающей точкой.
Зебра-окраска Если несколько блоков одного цвета, чередовать более светлый цвет.
Перенос блоков Переносить части блока на новую строку, если блок становится слишком широким.
Показывать пробелы Отображать пробелы в виде точки в полях ввода.
Псевдоним Scratchblock Включить псевдоним [scratchblocks].

ИСТОРИЯ ИЗМЕНЕНИЙ

  • 1.5.0
    • Обновление snapblocks до версии v1.10.0
    • Исправлена ошибка при загрузке библиотеки snapblocks (вызывала ошибку из-за «неправильного имени файла»)
  • 1.4.1
    • Исправлено цитирование многострочных фрагментов кода
    • Реализовано определение переводов блоков
  • 1.4.0
    • Улучшено цитирование snapblocks
    • Текст внутри блоков нельзя выделить (хотя можно выделить область над ними и процитировать весь скрипт).
  • 1.3.0
    • Добавлена опция «Шапки Санта-Клауса» в настройки
    • Добавлена опция santa в фрагменты snapblocks
    • Обновление snapblocks до версии 1.8.0
  • 1.2.0
    • Добавлена возможность включения/выключения псевдонима [scratchblocks] (наконец-то удалось реализовать это).
    • Обновление snapblocks до версии 1.7.0
  • 1.1.1
    • Обеспечена возможность прокрутки для скриптов, выходящих за границы.
    • Добавлен реальный текст при использовании кнопки snapblocks на панели инструментов.
  • 1.1.0
    • Обновление snapblocks до версии 1.6.0
  • 1.0.0
    • Первый релиз

ПЛАНЫ

  • Разрешить отдельный стиль по умолчанию для [scratchblocks]
14 лайков

Есть ли какие-либо несовместимости с scratchblocks, которые указывали бы на необходимость отдельного плагина для Scratch?

Если нет, об этом можно упомянуть здесь и в README плагина на GitHub.

1 лайк

Я бы сказал, что единственные несовместимости — это в основном незначительные правки синтаксиса, такие как выпадающие меню и блок define. В целом код scratchblocks в основном совместим с snapblocks.

Тем не менее, я по-прежнему считаю, что должен существовать отдельный плагин для scratchblocks, так как знаю форумы, посвященные Scratch или модификациям для Scratch, которые могут не захотеть использовать snapblocks, поскольку snapblocks оптимизирован для работы с Snap (к тому же мне не хватает полировки стилей для Scratch). Кроме того, я не добавил возможность переключения сочетания клавиш панели инструментов для использования scratchblocks.

Если кто-то захочет создать плагин для scratchblocks, используя этот плагин в качестве основы (сам я, скорее всего, не смогу этим заняться), стоит отметить, что функция рендеринга, которую я использовал, отсутствует в API scratchblocks, поэтому потребуется больше работы, чем просто подключение библиотеки scratchblocks.

1 лайк

На первый взгляд, не возникает возражений против использования этого плагина для первоначальных экспериментов (моя среда — школьная), и только в случае необходимости стоит уделить время созданию плагина для Scratch.

1 лайк

Запрос на добавление функции: стиль блоков можно было бы определить отдельно для псевдонима [scratchblocks]. Это позволило бы легко использовать стилизованные элементы Scratch и Snap!.

2 лайка

На самом деле это хорошая идея. Я изучу возможность её добавления.

3 лайка

Я не вижу логики на стороне сервера; возможно, это лучше реализовать как компонент темы?

3 лайка

Это подключается к парсеру сообщений, чтобы убедиться, что содержимое внутри тегов не обрабатывается, и предоставляет множество опций для настройки поведения. Также я хочу добавить поддержку нового WYSIWYG-редактора сообщений, но у меня возникают трудности с его корректной работой. Кроме того, я не хочу, чтобы администраторам форума приходилось включать его для каждой темы, так как это может вызывать проблемы и путаницу (я уже сталкивался с этим раньше).

Так что, возможно, я что-то не понимаю в возможностях компонента темы? Может ли это быть просто настройка «включить один раз глобально и забыть»?

(ой, нажал не ту кнопку ответа @RGJ )

Установка плагина гораздо более хлопотна, чем это :thinking:, и не будет работать на хостинговых планах Discourse.org.

Кроме того, я думаю, что на большинстве форумов есть только одна активная тема.

Компоненты тем могут иметь настройки и делать всё, что может делать JavaScript-часть плагина. При текущем состоянии плагина вы не потеряете никакой функциональности.

2 лайка

Разве вы просто не клонируете репозиторий в директорию плагинов? Мне кажется, это не так уж утомительно. Однако то, что это не работает на хостинге Discourse, — верное замечание.

Не на том форуме, для которого был создан этот плагин. Но я только что проверил, и, похоже, интерфейс настроек компонентов темы претерпел серьёзные изменения с тех пор, как мне в последний раз приходилось с ними работать, поэтому теперь управлять ими кажется проще, чем я помню.

Понятно, тогда я попробую переписать его как компонент темы, но, думаю, смогу заняться этим не скоро из-за других обязательств.

1 лайк

Не у всех администраторов есть доступ к командной строке, а те, у кого он есть, не всегда хорошо с ней знакомы.

Кроме того, это требует пересборки, которая происходит не мгновенно, может иметь побочные эффекты и потенциально привести к проблемам.

Обновление плагина также требует пересборки, тогда как обновление компонента темы осуществляется одним кликом.

2 лайка

Возможно, я займусь этим позже, так как здесь действительно нет логики на стороне сервера.

3 лайка

Это было бы полезно, так как я предполагаю, что вы, возможно, знаете о Discourse больше, чем я (этот плагин был в основном собран наспех путём изучения других плагинов).

1 лайк