Плагин Locations 🌍

:information_source: Описание Плагин для Discourse, добавляющий структурированные и геокодированные локации тем и пользователей с возможностью обнаружения на основе карт
:hammer_and_wrench: Ссылка на репозиторий https://github.com/merefield/discourse-locations
:open_book: Руководство по установке Как устанавливать плагины в Discourse
:heart: Спонсорство Пожалуйста, рассмотрите возможность стать постоянным спонсором моей работы в open source на уровне, который соответствует возможностям и потребностям вас или вашей организации, чтобы обеспечить этому плагину необходимую поддержку и гарантировать его работоспособность на вашем сайте в будущем.

Вам нравится этот плагин? Пожалуйста, поставьте ему :star: на GitHub! :pray:

Возможности

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

Функция Базовый плагин Расширение Pro
Структурированные локации тем и настраиваемые поля ввода :white_check_mark:
Необязательное или обязательное геокодирование с несколькими провайдерами :white_check_mark:
Отображение карт тем по категориям и для всего сайта :white_check_mark:
Локации пользователей в постах, профилях, карточках и на карте каталога :white_check_mark:
Карта пользователей на базе Leaflet с поиском по локальному имени и имени пользователя :white_check_mark:
Настраиваемые метки локаций, флаги, маркеры на карте, кластеризация и тайлы :white_check_mark:
По умолчанию новая тема получает локацию текущего пользователя :white_check_mark:
Автоматическое определение локации пользователя на основе IP :white_check_mark: Исключительно
Обнаружение близлежащих тем на основе локации текущего пользователя :white_check_mark: Исключительно
Необязательные инструменты Discourse Chatbot с учётом локаций :white_check_mark: Исключительно
Фильтры карты пользователей с учётом прав доступа групп и ограничений по количеству результатов :white_check_mark: Исключительно
Интерактивный глобус карты пользователей на WebGL :white_check_mark: Исключительно
Экран-заставка с глобусом при простое :white_check_mark: Исключительно

Установка Pro добавляет его эксклюзивные функции к базовому функционалу; она не заменяет базовый плагин.

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

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

Полезная документация:

Конфиденциальность и хранение данных

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

Сырые пользовательские поля локаций не становятся общедоступными. Ответы для тем, профилей, карточек, постов и каталога раскрывают только те данные о локациях, которые требуются для конкретного интерфейса, и соблюдают правила видимости профилей и групп в Discourse.

Расширение Pro

Discourse Locations Pro — это необязательное расширение, доступное спонсорам GitHub как благодарность за поддержку непрерывной разработки. Спонсоры-физические лица и независимые сообщества получают доступ начиная с бронзового уровня ($7/мес), тогда как бизнесу и учреждениям необходимо стать спонсорами на уровне серебряного уровня ($40/мес) или выше. Квалифицированные спонсоры получают инструкции по установке из частного репозитория.

Расширение Pro добавляет автоматический поиск по IP, раздел «Близлежащие темы», инструменты для чат-бота, улучшенные фильтры карты пользователей, интерактивный глобус и экран-заставку с глобусом. Каждая необязательная автоматизация или интеграция остаётся отключённой до момента настройки, а главный параметр Pro может отключить все функции Pro, не отключая при этом базовый плагин.

Станьте спонсором на GitHub, чтобы получить Locations Pro

110 лайков
OpenStreet maps embedding
Learn how to build Discourse plugins by helping me
Job exception: undefined method `name' for
A plugin to "check" a portion of a post before it can be posted
Suitability of Discourse for Discussion on Page
Locations dropdown (Google maybe?)
Enable tagging only in some categories
My 2nd Discourse forum, 2 years after the first one
How to add custom fields to models
2020: The Year in Review
Angus' Events Plugin :calendar:
Listing users by group - ERROR: missing FROM-clause entry for table "groups"
2021: The Year in Review
A "Votes" option for the top menu in main page
Forum Completely Broken 2.8.5
It's Time We Talked About Tags
Who use event plugin in their discourse community?
Automated map
Configure plugin Custom Wizard for autoposting
2022: The Year in Review
Show a modal dialog after clicking toolbar button via a plugin
Must have plugins and components for Discourse?
Getting a 500 error on the mobile for bookmark and some category pages
Get aggregate user location data from IP addresses?
Could a List of Recommended Topics Be Added to the Top Menu?
2023: The Year in Review
¿Cómo encuentro a una persona en Discourse?
Angus' Events Plugin :calendar:
Usercard Redesign Experiment
Is it possible to add a location and display them on a map?
Generating an ical to use with a custom map
Remove overriding of cmd/ctrl-f
Locate a feature like the one shown in the photo
Discourse.fontawesome-6-upgrade needs updating
2024: The Year in Review
Migrated my old custom-built trail-journal/blog to Discourse
Newly created topic shown location based on device
Alternative post templates
What happens next?
Discourse-events 'this.router' error
请教关于MaxMind 错误日志问题
National Flags
How minimal is your forum?
Layouts Plugin
Suggestions on how I can have hundreds of small groups (e.g. streets in a town)?
Problème accès aux onglets des paramètres des catégories
Discourse Calendar and Events
Topic List Previews (legacy)
New Theme: Tag-Pages Navigation
Locations plugin modifications
Traditional multi level hierarchy vs flat discourse hierarchy
More options to filter users on users page
Project ideas for Google Summer of Code 2018
Traditional multi level hierarchy vs flat discourse hierarchy
Any way to display Location below the name in posts?
Developing with Discourse
Calendar plugin features to make it really useful for us
Learn how to build Discourse plugins by helping me
Developing
Discourse-common asset availability: difference between development and production?
2018: The Year in Review
Object instead of users due to locations plugin
Inserting a date with Paris timezone gives me Berlin
Failed building stable due to 3rd party plugin
Angus' Events Plugin :calendar:
How to make a topic filter based on current user group and topic location
2019: The Year in Review
United states map
Fig - Native Discourse client for iOS
Loading slider issues

Я очень новичок в этой технологии. Я установил плагин (я вижу команду Map в меню-гамбургере и у меня есть поле местоположения на странице профиля пользователя (с работающей геокодировкой через Nominatim), НО…

Я не вижу кнопку «Добавить местоположение» в редакторе.

Вот моя конфигурация:

А вот окно редактора:

Наконец, вот как я установил плагин:

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-math.git
          - git clone https://github.com/paviliondev/discourse-events.git
          - git clone https://github.com/paviliondev/discourse-locations.git
          - git clone https://github.com/davidtaylorhq/discourse-whos-online.git
          - git clone https://github.com/discourse/twitter-profile-link.git
          - git clone https://github.com/discourse/discourse-tooltips.git

Я пробовал с locale=en, но результат тот же.

2 лайка

Ну что ж, поправка: плагин работает как положено в профиле пользователя.

Согласно карте, я — покойник, так как карта указывает на точку посреди самого большого кладбища Монреаля:

13 лайков

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

6 лайков

Спасибо! Всё сработало.

Кстати, галочка по умолчанию была “включена”, НО!! нужно открыть панель настройки, снять галочку и поставить её снова, чтобы функция заработала.

4 лайка

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

3 лайка

@angus Я заметил эту проблему недавно, когда у пользователей не указана локация в профиле:

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

Возможно, это связано с теми, кто удалил локацию из своего профиля? Или, может быть, проблема в пустой строке, например “”, а не в NULL? :thinking:

3 лайка

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

Карточка пользователя:
user-card

Профиль пользователя:

3 лайка

Это, скорее всего, вызвано изменением в ядре:

5 лайков

@omarfilip @david Спасибо за информацию :+1:t2:

@angus сможешь ли ты это изменить?

4 лайка

@david @Richie Спасибо, этот плагин был обновлён для поддержки изменений.

Обращаем ваше внимание, что скоро этот плагин перейдёт на тот же график обновлений, что и основные плагины Pavilion. Это означает, что он будет синхронизирован с последней версией ядра Discourse в первую неделю каждого месяца. Более подробная информация, специфичная для этого плагина, будет опубликована позже, но ознакомьтесь с деталями по ссылкам ниже:

5 лайков

Спасибо за быстрое исправление, Ангус.

4 лайка

Привет, @angus. Подтверждено, что теперь локация отображается на карточке пользователя, но мы всё ещё видим проблему, при которой у некоторых пользователей отображаются значок карты и булавка, даже если локация не указана:

А также на их полной странице профиля:

4 лайка

Я не могу запустить приложение Discourse из-за плагина locations. Ниже прилагаю лог. Если закомментировать locations в app.yml, всё работает. Кто-нибудь может расставить приоритеты и исправить это?

Кроме того, есть ли способ обновляться только до версии плагина, прошедшей тесты (если такая вообще существует), как это делается для основного приложения Discourse? Чтобы в будущем не сталкиваться с подобными проблемами.

Лог
5: from /var/www/discourse/plugins/discourse-layouts/plugin.rb:49:in `block in activate!'
4: from /var/www/discourse/lib/discourse_event.rb:13:in `trigger'
3: from /usr/local/lib/ruby/2.6.0/set.rb:338:in `each'
2: from /usr/local/lib/ruby/2.6.0/set.rb:338:in `each_key'
1: from /var/www/discourse/lib/discourse_event.rb:14:in `block in trigger'
/var/www/discourse/plugins/discourse-locations/plugin.rb:234:in `block in activate!': uninitialized constant DiscourseLayouts::WidgetHelper
Did you mean?  DiscourseLayouts::WidgetSerializer (NameError)

** НЕСОВМЕСТИМЫЙ ПЛАГИН **

Сборка Discourse не удалась из-за ошибок в плагине по адресу
/var/www/discourse/plugins/discourse-locations

Попробуйте удалить этот плагин и собрать заново!
I, [2020-04-25T20:32:06.399307 #1]  INFO -- : gem install icalendar -v 2.4.1 -i /var/www/discourse/plugins/discourse-events/gems/2.6.5 --no-document --ignore-dependencies --no-user-install
ВНИМАНИЕ! iCalendar 2.0 не обратно совместим с 1.x. Пожалуйста, ознакомьтесь с README для получения информации о новом синтаксисе

ВНИМАНИЕ! icalendar 2.2.0 по умолчанию переключается на нестрогой парсинг. Пожалуйста, ознакомьтесь с README, если вы полагаетесь на строгий парсинг, чтобы узнать, как его включить.

Для поддержки TimeWithZone требуется ActiveSupport, но для общего использования он не обязателен.
Успешно установлен icalendar-2.4.1
Установлено 1 gem
gem install geocoder -v 1.4.4 -i /var/www/discourse/plugins/discourse-locations/gems/2.6.5 --no-document --ignore-dependencies --no-user-install
Успешно установлен geocoder-1.4.4
Установлено 1 gem

I, [2020-04-25T20:32:06.400580 #1]  INFO -- : Завершение асинхронных процессов
I, [2020-04-25T20:32:06.400773 #1]  INFO -- : Отправка INT для HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/10/bin/postmaster -D /etc/postgresql/10/main pid: 50
I, [2020-04-25T20:32:06.400979 #1]  INFO -- : Отправка TERM для exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 167
167:signal-handler (1587846726) Получен SIGTERM, планирование завершения...
2020-04-25 20:32:06.401 UTC [50] LOG:  получен запрос быстрого завершения
2020-04-25 20:32:06.403 UTC [50] LOG:  прерывание любых активных транзакций
2020-04-25 20:32:06.406 UTC [50] LOG:  рабочий процесс: запуск логической репликации (PID 59) завершился с кодом выхода 1
167:M 25 Apr 2020 20:32:06.406 # Пользователь запросил завершение...
167:M 25 Apr 2020 20:32:06.406 * Сохранение финального снапшота RDB перед выходом.
2020-04-25 20:32:06.409 UTC [54] LOG:  завершение работы
2020-04-25 20:32:06.439 UTC [50] LOG:  система баз данных завершена
167:M 25 Apr 2020 20:32:06.502 * База данных сохранена на диск
167:M 25 Apr 2020 20:32:06.502 # Redis готов к выходу, пока...


ОШИБКА
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' завершился с ошибкой #<Process::Status: pid 13098 exit 1>
Место возникновения ошибки: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec завершился с ошибкой с параметрами {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
b5a02d7f9df6b6a9dc160e269de30eef49bb0aeaf5dcb1b712bab5e6edad4030
** НЕ УДАЛОСЬ ЗАПУСТИТЬСЯ ** пожалуйста, прокрутите вверх и поищите более ранние сообщения об ошибках, их может быть несколько.
./discourse-doctor может помочь диагностировать проблему.
root@discuss:/var/discourse#
3 лайка

@k4rtik Спасибо за ваш отчет и извините, что вы столкнулись с этой проблемой. Ваша ситуация возникла по следующим причинам:

  1. Плагин layouts был обновлен 2 дня назад.
  2. Плагин locations поддерживал существующую версию плагина layouts.
  3. Вы используете оба плагина.
  4. Вы обновили свой Discourse между первоначальным обновлением плагина layouts и добавлением поддержки в плагин locations.

Я обновил плагин locations для поддержки новой версии плагина layouts: Update to support layouts v0.2 · merefield/discourse-locations@52aec30 · GitHub. Теперь при обновлении с установленными обоими плагинами всё будет работать. @Richie Это исправит вашу проблему: Add include? to geo_json in user_card serializer · merefield/discourse-locations@5185063 · GitHub

Наличие ветки tests-passed в плагине, к сожалению, не помогло бы в данной конкретной ситуации, а также в значительной части других случаев несовместимости плагинов. Люди обновляют системы с разной периодичностью и используют множество различных комбинаций кастомизаций.

Тем не менее, мы начинаем предпринимать шаги для решения этой проблемы. Мы переходим к графику, согласно которому основные открытые плагины Pavilion (этот плагин, Events, Topic List Previews и т. д.) будут обновляться в соответствии с версиями Discourse каждые 24 часа в первые 5 дней каждого месяца, начиная с 1 по 5 мая.

Это дает вам безопасное окно для обновления всех плагинов на try.thepavilion.io вместе с самим Discourse с большей уверенностью в том, что:

  1. У вас не возникнет конфликтов между плагином и Discourse, а если они всё же появятся, они будут устранены в течение менее чем 24 часов.

  2. У вас не возникнет проблем из-за изменений в самом плагине. Любые потенциально ломающие изменения в самом плагине будут происходить вне этого окна.

Это касается всех плагинов, перечисленных здесь:

Этот список может быть расширен со временем. Подробнее: https://try.thepavilion.io.

Если у вас есть вопросы по этому поводу, не стесняйтесь написать мне в личные сообщения или свяжитесь с нами на thepavilion.io.

8 лайков

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

2 лайка

@angus подтверждено — проблема решена :clap:t2:

Ещё раз спасибо за вашу постоянную поддержку этого плагина :smiley:

4 лайка

Привет, @angus. Я получил уведомление о том, что первое сообщение в этой теме было отредактировано.

Похоже, что репозиторий перемещён в новое место.

Должны ли мы все обновить настройки Discourse для нового местоположения, или существующее / старое местоположение всё ещё будет обновляться?

Нужно ли что-то пересобирать после изменения местоположения источника плагина?

3 лайка

Привет, @Richie! Вы можете продолжать использовать старый URL GitHub - merefield/discourse-locations: Tools for handling locations in Discourse · GitHub. Обновить его можно будет, когда у вас появится такая возможность, например, когда вам потребуется пересобрать ваш сайт по другой причине.

Плагин был перенесён с моего личного аккаунта GitHub на аккаунт Pavilion некоторое время назад. При переносе репозитория GitHub автоматически перенаправляет все ссылки со старого адреса на новый.

В ближайшие недели первое сообщение будет немного изменено. Я напишу документацию по этому вопросу на сайте thepavilion.io, а также добавлю более краткое описание здесь, на meta.

4 лайка

Отлично, я об этом не знал :+1:t2:

Ещё раз спасибо за поддержку!

3 лайка