Компонент темы Reftagger

Библиотека Reftagger позволяет преобразовывать библейские ссылки на вашем форуме Discourse в ссылки с предпросмотром при наведении.

По просьбе @outofthebox мы создали компонент темы на основе этого кода.

Мы добавили настройку, которая позволяет выбрать нужный перевод, а также расширили политику безопасности контента (CSP), чтобы библиотека Reftagger могла быть включена.

Репозиторий здесь.

13 лайков

@RGJ, наше сообщество обожает эту функцию. Спасибо за разработку с учётом безопасности и возможности кастомизации. Я ценю вашу щедрость в том, что вы делитесь этой работой с сообществом Discourse.

5 лайков

Мы используем это уже около 18 месяцев, и всё работает как по маслу. Рады видеть, что оно стало ещё лучше и доступнее!

3 лайка

Вау, это супер круто.

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

1 лайк

Существует компонент темы auto abbrify words, который выполняет такую функцию.

3 лайка

Я очень ценю вас и всех, кто участвовал в первоначальном обсуждении на Meta о том, как сделать эту функцию рабочей!

2 лайка

Всем привет, Reftagger несколько месяцев работал отлично, а потом просто перестал. Он по-прежнему автоматически создаёт внешнюю ссылку для формата «книга/глава/стих», но предпросмотр при наведении не загружается.

Кажется, что он тоже обновлён до актуальной версии. Есть какие-то идеи?

1 лайк

Какую версию Discourse вы используете?

1 лайк

Как я могу найти эту информацию?

Это должно быть где-то в панели администратора по адресу /admin

В нём просто сказано, что всё актуально:

1 лайк

У меня работает нормально на Discourse 2.7.7 (по крайней мере в Safari).

Теперь всё работает снова.
Похоже, Reftagger перешёл на другой CDN (reftagger.bibliacdn.com), который нужно было добавить в белый список политики безопасности контента. Я добавил его и выпустил новую версию компонента темы. Всё, что вам нужно сделать, — обновить компонент.

3 лайка

Вот оно, спасибо, сэр :slightly_smiling_face:

1 лайк

Привет, Ричард,

Возвращаюсь к старому обсуждению. Я установил этот компонент темы, и возникают две проблемы.

Во-первых, появляется сообщение о том, что компонент требует обновления.
[Уведомление администратора] Тема ‘Reftagger’ содержит код, требующий обновления. (id:discourse.script-tag-discourse-plugin) (узнать больше)

Во-вторых, возможно, это связано с первым уведомлением о необходимости обновления компонента. Ссылки не помечаются, а страницы зависают, отображая кружок загрузки на вкладке браузера.

Возможно ли обновить этот компонент?

Я добился некоторого прогресса в этом с помощью ChatGPT и теперь у меня есть работающие рефтеггеры как для Logos RefTagger, так и для Blue Letter Bible.

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

Если у кого-то есть предложения по улучшению — они будут приняты с благодарностью. Мои навыки ограничиваются только руководством LLM.

Использование Logos RefTagger:

import { apiInitializer } from “discourse/lib/api”;
import loadScript from “discourse/lib/load-script”;

export default apiInitializer(“0.1”, (api) => {
// 1. Определите настройки RefTagger в объекте window ПЕРЕД загрузкой скрипта
window.refTagger = {
settings: {
bibleVersion: “ESV”, // например, версия Библии по умолчанию
tagChapters: true, // отмечать также ссылки на главы
convertHyperlinks: false, // не перерабатывать существующие ссылки
roundCorners: true,
socialSharing: ,
}
};

// 2. Подключитесь к рендерингу постов в Discourse:
api.decorateCooked((element) => {
// Загрузите внешний скрипт RefTagger (если он ещё не загружен)
loadScript(“https://api.reftagger.com/v2/RefTagger.js”).then(() => {
// Запустите разметку на новом элементе контента
window.refTagger.tag(element);
});
});
});

Использование BLB ScriptTagger:

import { apiInitializer } from “discourse/lib/api”;
import loadScript from “discourse/lib/load-script”;

export default apiInitializer(“0.1”, (api) => {
// При желании установите настройки BLB ScriptTagger до загрузки (показаны значения по умолчанию)
window.BLB ||= {}; // убедитесь, что глобальный объект BLB существует
window.BLB.Tagger ||= {};
window.BLB.Tagger.Translation = “NKJV”; // версия перевода по умолчанию
window.BLB.Tagger.HyperLinks = “all”; // отмечать даже уже связанные ссылки
window.BLB.Tagger.TargetNewWindow = true; // ссылки открываются в новой вкладке
// … (другие настройки, такие как DarkTheme и т.д., при необходимости)

api.decorateCooked((elem) => {
loadScript(“https://www.blueletterbible.org/assets/scripts/blbToolTip/BLB_ScriptTagger-min.js”)
.then(() => {
if (window.BLB && window.BLB.Tagger) {
window.BLB.Tagger.pageInit(); // повторно просканировать новый контент на наличие стихов:contentReference[oaicite:6]{index=6}
}
});
});
});

Эта проблема уже решена.

Это я не могу воспроизвести, даже до устранения вышеуказанной проблемы, которая была лишь предупреждением, а не ошибкой.

3 лайка

Огромное спасибо за обновление!

2 лайка