Плагин Locations 🌍

:information_source: Краткое описание Позволяет привязывать геокодированные локации к темам и отображать их на красивой карте. Также даёт возможность пользователям отмечать своё местоположение и коллективно отображать их на общей карте пользователей на вашем сайте.
:hammer_and_wrench: Ссылка на репозиторий GitHub - merefield/discourse-locations: Tools for handling locations in Discourse · GitHub
:open_book: Руководство по установке Как установить плагины в Discourse
:heart: Спонсорство Пожалуйста, рассмотрите возможность стать постоянным спонсором моей работы с открытым исходным кодом на уровне, соответствующем вашим или ресурсам и потребностям вашей организации, чтобы этот плагин получал заслуженное обслуживание и продолжал работать на вашем сайте в будущем.

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

Документация

Посмотрите README в репозитории.

Поддержка

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

Существует вариант разовой охоты за багами.

Существует версия Locations с РАННИМ ДОСТУПОМ, доступная исключительно сторонникам определённого уровня.

Эта версия включает следующие функции, которых сейчас нет в публичной версии Locations:

Заголовок Описание
Глобус карты пользователей Добавляет интерактивный 3D-глобус для карты пользователей с аватарами, размещёнными по местоположению, возможностью вращения перетаскиванием/касанием, масштабированием, сбросом, фокусировкой поиска, кликами по карточкам пользователей и постоянным bump-маппингом.
Заставка экрана глобуса Опциональная экспериментальная заставка в режиме ожидания, показывающая вращающийся 3D-глобус с аватарами пользователей под заголовком.
Расширенные фильтры карты пользователей Добавляет элементы управления для ограничения количества результатов, типа поиска, поискового запроса и фильтрации по группам на карте пользователей.
Фильтр тем рядом Добавляет фильтр списка тем рядом, основанный на расстоянии от текущего местоположения пользователя.
Поиск местоположения пользователя по IP Автоматически оценивает и сохраняет местоположения пользователей на основе данных IP с настраиваемым режимом триггера, точностью, временем охлаждения, разрешением GeoNames, поведением при пропуске уже существующих записей и отладочным логированием.

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

110 лайков
OpenStreet maps embedding
Events Plugin :calendar:
Learn how to build Discourse plugins by helping me
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
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?
New Theme: Tag-Pages Navigation
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
Usercard Redesign Experiment
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.fontawesome-6-upgrade needs updating
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?
Topic List Previews (legacy)
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
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
Job exception: undefined method `name' for
A plugin to "check" a portion of a post before it can be posted

Я очень новичок в этой технологии. Я установил плагин (я вижу команду 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 лайка