Discourse Retort

Спасибо, да, это особенность Popper — библиотеки, которую выбор эмодзи использует для позиционирования. Я обновил использование Popper, чтобы устранить эту проблему.

4 лайка

Прежде всего, огромное спасибо @angus :pray: за то, что взялись за этот плагин — он уже давно стал одним из наших любимых.

Я обновился до последней версии, и, похоже, это сломало личные сообщения (PM).

Uncaught TypeError: Cannot read property 'map' of undefined
    at _retort-2c5f89abb14744b92588a2ea05689cf5f5fe97d5b9094543abfacf0b1281182f.js:57
    at _application-95c62ce5b40d9a86771813c87729bec8a97a85040e9142c1de823499c05122ad.js:82147
    at Array.map (<anonymous>)
    at h (_application-95c62ce5b40d9a86771813c87729bec8a97a85040e9142c1de823499c05122ad.js:82146)
    at i.html (_application-95c62ce5b40d9a86771813c87729bec8a97a85040e9142c1de823499c05122ad.js:78359)
    at i.value (_application-95c62ce5b40d9a86771813c87729bec8a97a85040e9142c1de823499c05122ad.js:82625)
    at i.value (_application-95c62ce5b40d9a86771813c87729bec8a97a85040e9142c1de823499c05122ad.js:82345)
    at s (_vendor-66c7c54e4c3d88ab9a314688832cc04210ab4ae3401f48fb186a7134473d0d0a.js:20534)
    at t.exports (_vendor-66c7c54e4c3d88ab9a314688832cc04210ab4ae3401f48fb186a7134473d0d0a.js:20521)
    at e (_vendor-66c7c54e4c3d88ab9a314688832cc04210ab4ae3401f48fb186a7134473d0d0a.js:19890)
_retort-2c5f89abb14744b92588a2ea05689cf5f5fe97d5b9094543abfacf0b1281182f.js:368 Uncaught TypeError: Cannot read property 'toString' of undefined
    at t.disabledFor (_retort-2c5f89abb14744b92588a2ea05689cf5f5fe97d5b9094543abfacf0b1281182f.js:368)
    at _retort-2c5f89abb14744b92588a2ea05689cf5f5fe97d5b9094543abfacf0b1281182f.js:51
    at _application-95c62ce5b40d9a86771813c87729bec8a97a85040e9142c1de823499c05122ad.js:82147
    at Array.map (<anonymous>)
    at h (_application-95c62ce5b40d9a86771813c87729bec8a97a85040e9142c1de823499c05122ad.js:82146)
    at i.html (_application-95c62ce5b40d9a86771813c87729bec8a97a85040e9142c1de823499c05122ad.js:78359)
    at i.value (_application-95c62ce5b40d9a86771813c87729bec8a97a85040e9142c1de823499c05122ad.js:82625)
    at i.value (_application-95c62ce5b40d9a86771813c87729bec8a97a85040e9142c1de823499c05122ad.js:82345)
    at s (_vendor-66c7c54e4c3d88ab9a314688832cc04210ab4ae3401f48fb186a7134473d0d0a.js:20534)
    at t.exports (_vendor-66c7c54e4c3d88ab9a314688832cc04210ab4ae3401f48fb186a7134473d0d0a.js:20521)
1 лайк

Спасибо, сегодня у нас был PR по удалению lodash, ещё одно устаревание.

Теперь должно быть исправлено:

Пожалуйста, обновите и дайте знать, как у вас получится.

8 лайков

Кажется, теперь всё работает нормально, большое спасибо! :smile:

Мы применили этот CSS, чтобы немного улучшить внешний вид для нас

Desktop

.emoji-picker.has-limited-set img.emoji {
    width: 40px !important;
    height: 40px !important;
}

.post-retort {
    margin: 0px 2px;
}

.emoji-picker.has-limited-set .limited-emoji-set {
    flex-wrap: wrap;
}

.emoji-picker {
    min-height: 80px;
    max-width: 400px;
}

Mobile

.emoji-picker.has-limited-set .limited-emoji-set {
    flex-wrap: wrap !important;
}

.emoji-picker {
    min-width: 100% !important;
}

4 лайка

Я только что пересобрал Discourse, чтобы обновить плагин. Но теперь иконка плагина отсутствует, как и все мои компоненты темы. Не знаю, связано ли это, но в консоли браузера я вижу это сообщение:

Редактирование: после отключения Retort все компоненты темы вернулись, так что связь действительно, похоже, есть.

2 лайка

Я часто вижу эту ошибку на своем сайте, и через некоторое время весь сайт начинает работать медленно / с задержками для меня.

В безопасном режиме всё в порядке, сайт работает быстро и отзывчиво.

Используется Google Chrome: Версия 85.0.4183.83 (Официальная сборка) (64-разрядная)

Ошибка:

Uncaught TypeError: Cannot read property 'map' of undefined
    at retort-11c49191cf3e1f7f570d8808ade67b5d7fcfdfe612b792c49f064baacdebadc7.js:1
    at application-acabe31b416e73071c4f82b77bdadcf4a5fc525109638830baeeacd14e3a3656.js:1
    at Array.map (<anonymous>)
    at h (application-acabe31b416e73071c4f82b77bdadcf4a5fc525109638830baeeacd14e3a3656.js:1)
    at i.html (application-acabe31b416e73071c4f82b77bdadcf4a5fc525109638830baeeacd14e3a3656.js:1)
    at i.value (application-acabe31b416e73071c4f82b77bdadcf4a5fc525109638830baeeacd14e3a3656.js:1)
    at i.value (application-acabe31b416e73071c4f82b77bdadcf4a5fc525109638830baeeacd14e3a3656.js:1)
    at s (vendor-bf8061112a1b547c1b596d16d89c9a42af976a43984f9eacd40a8c690c0f30b2.js:1)
    at t.exports (vendor-bf8061112a1b547c1b596d16d89c9a42af976a43984f9eacd40a8c690c0f30b2.js:1)
    at e (vendor-bf8061112a1b547c1b596d16d89c9a42af976a43984f9eacd40a8c690c0f30b2.js:1)



 if (!v.default.disabledFor(e))
                    return v.default.storeWidget(r),
                    o.retorts.map(function(e) {   <<<<< ОШИБКА ЗДЕСЬ
                        var t = e.usernames
                          , i = e.emoji;
                        return r.attach("retort-toggle", {
                            post: o,
                            usernames: t,
                            emoji: i
                        })

Некоторые проблемы с CSS и как я их решил для личного использования

Настольная версия

Первое — не столько проблема, но она может ею стать. У нас редко бывает столько ретортов в одном посте, но имейте в виду: если их будет больше восьми, элементы управления постом сломаются.
screenshot-vapingcommunity.co.uk-2020.09.08-20_46_47

А вот здесь их восемь — выглядит отлично.
screenshot-vapingcommunity.co.uk-2020.09.08-20_47_53

Использованный CSS для настольной версии

.post-retort {
	margin: 0px 2px;
	border: 1px solid #333;
	border-radius: 5px;
	padding: 3px;
	background-color: #666;
}

Телефон: iPhone SE первого поколения

Мобильная версия

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

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

А вот так это выглядит после наших изменений в CSS.

CSS для мобильной версии

.post-retort {
	border: 1px solid #333;
	border-radius: 5px;
	padding: 3px;
	background-color: #666;
	margin: 2px 2px;
	float: none;
}

С помощью вышеуказанного CSS для мобильной версии можно добиться того же вида на настольной версии — реторты будут размещены над элементами управления постом.

screenshot-vapingcommunity.co.uk-2020.09.08-21_03_13

Нам очень нравится этот плагин, и он активно используется на нашем форуме. Спасибо, что взялись за это, @angus :+1:

5 лайков

У меня тоже возникает эта ошибка. Однако компоненты моей темы продолжают работать, но пикер ответов нигде не отображается (так как сломался JS).

Мы обновили Discourse до версии 2.5.1 и впервые установили этот плагин.

4 лайка

Я не могу использовать wait load

2 лайка

Как-то мне удалось решить свою проблему сегодня, пересобрав приложение.
Попробуйте, пожалуйста, сделать то же самое у себя?

У меня тоже стабильная версия (2.5.1).

1 лайк

Да, я сообщил о проблеме в их трекере задач на GitHub, и она была исправлена на следующий день — очень приятно :slight_smile:

2 лайка

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

Мы не меняли никаких настроек. Вот наша текущая конфигурация:

Это ожидаемое поведение? Можно ли это изменить?

Спасибо!!

3 лайка

Всем привет,
Я новичок в Discourse. Я установил Discourse, используя исходный код из GitHub, и он уже работает онлайн.
Сегодня я установил Retort и в разделе «Администрирование → Плагины» вижу, что новый плагин Retort установлен и активирован.

Когда я создал новую тему и просмотрел её с другого аккаунта в надежде увидеть кнопку нового плагина Retort, я не нашёл там ожидаемой кнопки…

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

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

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

1 лайк

Это не ожидаемое поведение. Я займусь этим в выходные.

@kchang, откройте веб-консоль (How can I open the browsers console? – Mailster Knowledge Base) и проверьте, нет ли там ошибок, связанных с этим или другими плагинами/темами, которые у вас установлены (скопируйте и вставьте сюда любые красные строки из консоли; если они длинные, спрячьте их во вкладку «Скрыть детали»).

2 лайка

Привет, @angus,
Большое спасибо за ваш ответ. Я заметил несколько красных строк в консоли; пожалуйста, посмотрите изображение ниже из Opera, которое появляется каждый раз при переходе к посту.

Кажется, что-то не так с “import” в моей установке. Я установил Discourse из исходного кода, а не через Docker, поэтому всегда помещаю новые плагины в discourse/plugins. Именно так я успешно установил два других плагина. Не уверен, правильно ли я установил retort таким же образом.

Кстати, у меня уже был установлен @popperjs/core через npm, но я не знаю, почему возникла эта ошибка…

Спасибо.

1 лайк

Этот импорт был добавлен в ходе рефакторинга emoji-picker, который привел к обновлению этого плагина некоторое время назад (см. выше). Он был добавлен в Discourse примерно месяц назад. Если вы получаете эту ошибку, значит, вы используете более старую версию Discourse. Я предполагаю, что вы работаете с веткой stable.

Этот плагин также поддерживает ветку stable благодаря файлу .discourse_compatibility, но если вы не используете Docker, вам нужно установить плагин с помощью задачи rake plugin:pull_compatible_all, которая загрузит правильную версию плагина для stable.

Если это производственная среда и вы относительно недавно начали работать с Discourse, я настоятельно рекомендую использовать Docker. Он берет на себя управление рядом аспектов окружения Discourse, например, загрузку правильной версии плагина для вашей среды, что может вызвать проблемы у новичков.

4 лайка

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

1 лайк

Спасибо большое, @angus! Вы правы, я сейчас на стабильной ветке Discourse. Я запущу задачу Rake, чтобы получить совместимую версию Retort. Как только я получу доменное имя, перейду на использование Docker-образа — это будет удобнее. :grinning:

Обновление:
Я выполнил команду rake plugin:pull_compatible_all, но, похоже, моя стабильная версия Discourse слишком старая. Поэтому я загрузил последнюю версию Discourse. Теперь всё работает без сбоев :grin:

Ещё раз спасибо за вашу добрую помощь :smiley:

2 лайка

В теме по умолчанию Discourse в мобильном режиме кнопка «Ответить» отделена от остальных иконок нижней панели инструментов (лайк, поделиться и т. д.), из-за чего иконка «Цитировать» опускается вниз, и это выглядит очень некрасиво.
Я добавил этот CSS в тему, чтобы исправить дизайн. Возможно, он окажется полезным и для вас.

.mobile-view {
    
    .topic-post nav.post-controls .actions button.reply {
        margin: inherit;
        margin-left: 10px;
    }
    
    nav.post-controls .actions {
        text-align: right;
        float: right;
        display: inline-block;
    }
    
    .topic-post nav.post-controls .actions .double-button {
        display: inline-flex;
    }
    
    .post-menu-area {
        margin: 0;
        padding-top: 15px;
    }
}
3 лайка

Отлично, спасибо :slightly_smiling_face:

Если тебе нужна помощь с отладкой или у тебя есть какие-то идеи насчёт возможной причины проблемы, дай знать.

1 лайк