Plugin de Localizações 🌍

:information_source: Resumo Um plugin para Discourse que adiciona localizações estruturadas e geocodificadas para tópicos e usuários, com descoberta baseada em mapa
:hammer_and_wrench: Link do Repositório https://github.com/merefield/discourse-locations
:open_book: Guia de Instalação Como instalar plugins no Discourse
:heart: Patrocínio Considere se tornar um patrocinador contínuo do meu trabalho open source em um nível que atenda aos recursos e necessidades da sua organização ou pessoais, para garantir que este plugin receba a manutenção que merece e continue funcionando para o seu site no futuro.

Gostando deste plugin? Por favor, dê um :star: no GitHub! :pray:

Recursos

O Discourse Locations fornece a base completa para armazenamento de localizações, geocodificação e mapas. A extensão opcional Pro adiciona descoberta avançada, automação e apresentação do mapa de usuários, exigindo este plugin base.

Recurso Plugin base Extensão Pro
Localizações estruturadas de tópicos e campos de entrada configuráveis :white_check_mark:
Geocodificação opcional ou obrigatória com múltiplos provedores :white_check_mark:
Visões de mapa de tópicos por categoria e do site inteiro :white_check_mark:
Localizações de usuários em publicações, perfis, cartões e no mapa do diretório :white_check_mark:
Mapa de usuários Leaflet com busca por nome local e nome de usuário :white_check_mark:
Rótulos de localização, bandeiras, marcadores de mapa, agrupamento e tiles configuráveis :white_check_mark:
Definir o local do usuário atual como padrão para um novo tópico :white_check_mark:
Estimativa automatizada de localização de usuário baseada em IP :white_check_mark: Exclusivo
Descoberta de tópicos próximos baseada na localização do usuário atual :white_check_mark: Exclusivo
Ferramentas opcionais de Discourse Chatbot conscientes de localização :white_check_mark: Exclusivo
Filtros de mapa de usuários com grupos e limites de resultados conscientes de permissões :white_check_mark: Exclusivo
Globo interativo de mapa de usuários em WebGL :white_check_mark: Exclusivo
Economizador de tela com globo ocioso :white_check_mark: Exclusivo

A instalação do Pro adiciona seus recursos exclusivos à funcionalidade base; ele não substitui o plugin base.

Configuração

As configurações do plugin base usam o prefixo location_ e controlam localizações de tópicos, geocodificação, exibição de mapa, localizações de usuários e o mapa de usuários padrão.

Documentação útil:

Privacidade e armazenamento

Os usuários escolhem se desejam salvar uma localização de perfil. Localizações de tópicos e usuários totalmente editáveis permanecem em campos personalizados pertencentes à base, enquanto as tabelas de projeção pertencentes ao plugin suportam consultas espaciais e ordenação de mapas.

Os campos personalizados de localização bruta não são tornados publicamente globais. As respostas de tópicos, perfis, cartões, publicações e diretórios expõem apenas os dados de localização necessários por aquela superfície e respeitam as regras de visibilidade de perfil e grupo do Discourse.

Extensão Pro

O Discourse Locations Pro é uma extensão opcional disponível para Patrocinadores do GitHub como agradecimento por apoiarem o desenvolvimento contínuo. Patrocinadores individuais e de comunidades independentes recebem acesso a partir da categoria Bronze de US$ 7/mês; empresas e instituições devem patrocinar na categoria Silver de US$ 40/mês ou superior. Patrocinadores elegíveis recebem instruções de instalação do repositório privado.

A extensão Pro adiciona busca automatizada de IP, tópicos próximos, ferramentas de Chatbot, filtros aprimorados de mapa de usuários, o globo interativo e o economizador de tela com globo. Cada automação ou integração opcional permanece desativada até ser configurada, e a configuração mestre do Pro pode desativar todo o comportamento do Pro sem desativar o plugin base.

Patrocine no GitHub para obter o Locations Pro

110 curtidas
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

Sou muito novo com essa tecnologia. Instalei o plugin (vejo o comando Map no menu hambúrguer e tenho um campo de localização na minha página de perfil do usuário (com georreferenciamento funcional usando o Nominatim), MAS…

Não vejo o botão “Adicionar localização” no editor.

Esta é a minha configuração:

E esta é a janela do editor:

Finalmente, esta é a forma como instalei o plugin:

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

Tentei com locale=en e obtive os mesmos resultados.

2 curtidas

Bem, bem, correção: o plugin funciona conforme o esperado no Perfil do Usuário.

De acordo com o mapa, sou uma pessoa falecida, já que o mapa indica um ponto no meio do maior cemitério de Montreal:

13 curtidas

Ele também precisa ser ativado para cada uma das categorias que você deseja utilizar.

6 curtidas

Obrigado! Funcionou.

A propósito, a marca de seleção já vinha “ativada” por padrão, MAS!! você precisa mostrar o painel de configuração, desmarcar e marcar novamente para que o recurso funcione de verdade.

4 curtidas

Fico feliz que tenha funcionado. Faz tempo que não uso o plugin, então foi mais ou menos meu melhor palpite.

3 curtidas

@angus Notei esse problema recentemente quando as pessoas não têm um local preenchido em seu perfil:

No entanto, isso não está ocorrendo em todos os usuários; não consigo identificar exatamente o padrão.

Será que afeta aqueles que apagaram um local em seu perfil? Ou talvez seja uma string vazia, como “”, em vez de NULL? :thinking:

3 curtidas

Parece que a atualização recente removeu completamente a localização do cartão do usuário.

Cartão do usuário:
user-card

Perfil do usuário:

3 curtidas

Isso muito provavelmente foi causado por essa alteração no núcleo:

5 curtidas

@omarfilip @david Obrigado pela contribuição :+1:t2:

@angus isso é algo que você poderá modificar?

4 curtidas

@david @Richie Obrigado, este plugin foi atualizado para suportar a mudança.

Apenas um aviso: em breve este plugin passará a seguir o mesmo cronograma de atualizações dos principais plugins do Pavilion. Isso significa que ele será alinhado com a versão mais recente do núcleo do Discourse na primeira semana de cada mês. Detalhes específicos sobre este plugin serão divulgados em breve, mas consulte mais informações nos links abaixo:

5 curtidas

Obrigado pela correção rápida, Angus.

4 curtidas

Olá @angus, confirmado: os locais agora estão sendo exibidos no cartão do usuário, mas ainda estamos observando o problema em que alguns usuários têm um pino de mapa e um ícone de mapa exibidos, mesmo sem nenhum local inserido:

E em sua página de perfil completo:

4 curtidas

Não consigo iniciar o aplicativo Discourse por causa do plugin de localizações no momento. Estou anexando o log abaixo; ele funciona se eu comentar as localizações no app.yml. Alguém pode priorizar isso e corrigir?

Além disso, existe alguma maneira de atualizar apenas para a versão “tests-passed” do plugin (se houver tal coisa), assim como o aplicativo principal do Discourse faz? Para que não enfrentemos problemas semelhantes no futuro.

Log
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)

** PLUGIN INCOMPATÍVEL **

Você não consegue compilar o Discourse devido a erros no plugin em
/var/www/discourse/plugins/discourse-locations

Por favor, tente remover este plugin e reconstruir novamente!
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
ATENÇÃO! iCalendar 2.0 não é compatível com versões anteriores da 1.x. Consulte o README para a nova sintaxe

ATENÇÃO! icalendar 2.2.0 altera para análise não estrita como padrão. Consulte o README se você
depende de análise estrita para obter informações sobre como ativá-la.

ActiveSupport é necessário para suporte a TimeWithZone, mas não é necessário para uso geral.
icalendar-2.4.1 instalado com sucesso
1 gem instalado
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 instalado com sucesso
1 gem instalado

I, [2020-04-25T20:32:06.400580 #1]  INFO -- : Encerrando processos assíncronos
I, [2020-04-25T20:32:06.400773 #1]  INFO -- : Enviando INT para 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 -- : Enviando TERM para exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 167
167:signal-handler (1587846726) Recebido SIGTERM agendando desligamento...
2020-04-25 20:32:06.401 UTC [50] LOG:  recebida solicitação de desligamento rápido
2020-04-25 20:32:06.403 UTC [50] LOG:  abortando todas as transações ativas
2020-04-25 20:32:06.406 UTC [50] LOG:  processo worker: lançador de replicação lógica (PID 59) saiu com código de saída 1
167:M 25 Apr 2020 20:32:06.406 # Usuário solicitou desligamento...
167:M 25 Apr 2020 20:32:06.406 * Salvando o snapshot final RDB antes de sair.
2020-04-25 20:32:06.409 UTC [54] LOG:  desligando
2020-04-25 20:32:06.439 UTC [50] LOG:  sistema de banco de dados desligado
167:M 25 Apr 2020 20:32:06.502 * Banco de dados salvo no disco
167:M 25 Apr 2020 20:32:06.502 # Redis agora está pronto para sair, tchau tchau...


FALHA
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' falhou com retorno #<Process::Status: pid 13098 exit 1>
Local da falha: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec falhou com os parâmetros {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
b5a02d7f9df6b6a9dc160e269de30eef49bb0aeaf5dcb1b712bab5e6edad4030
** FALHA NO BOOTSTRAP ** por favor, role para cima e procure mensagens de erro anteriores, pode haver mais de uma.
./discourse-doctor pode ajudar a diagnosticar o problema.
root@discuss:/var/discourse#
3 curtidas

@k4rtik Obrigado pelo seu relatório e desculpe pelo impacto sofrido. Seu problema ocorreu porque:

  1. O plugin layouts foi atualizado há 2 dias.
  2. O plugin locations estava suportando a versão existente do plugin layouts.
  3. Você usa ambos os plugins.
  4. Você atualizou seu Discourse entre a atualização inicial do plugin layouts e a adição de suporte no plugin locations.

Atualizei o plugin locations para suportar a nova versão do plugin layouts: Update to support layouts v0.2 · merefield/discourse-locations@52aec30 · GitHub. Ao atualizar agora com ambos os plugins instalados, funcionará. @Richie Isso resolverá seu problema: Add include? to geo_json in user_card serializer · merefield/discourse-locations@5185063 · GitHub

Ter uma branch tests-passed no plugin, infelizmente, não ajudaria muito nesta situação específica, nem em uma parte significativa de outras situações de incompatibilidade de plugins. As pessoas atualizam em frequências diferentes e têm muitas combinações diferentes de personalizações.

Dito isso, estamos começando a dar alguns passos para resolver esse problema. Estamos adotando uma programação para garantir que os principais plugins de código aberto do Pavilion (este plugin, Events, Topic List Previews, etc.) estejam atualizados com o Discourse a cada 24 horas nos primeiros 5 dias de cada mês, começando de 1º a 5 de maio.

Isso oferece a você uma janela segura para atualizar todos os plugins em try.thepavilion.io junto com o próprio Discourse, com maior certeza de que:

  1. Você não experimentará conflitos entre o plugin e o Discourse e, caso ocorram, serão resolvidos em menos de 24 horas.

  2. Você não experimentará problemas devido a alterações no próprio plugin. Quaisquer alterações potencialmente disruptivas no próprio plugin ocorrerão fora dessa janela.

Isso se aplica a todos os plugins listados aqui:

Esta lista pode ser expandida ao longo do tempo. Saiba mais em: https://try.thepavilion.io.

Se tiver alguma dúvida sobre isso, sinta-se à vontade para me enviar uma mensagem privada ou entrar em contato conosco em thepavilion.io.

8 curtidas

Obrigado, sim, eu estava tentando descobrir por que meu layout personalizado não aparecia também com a última atualização. Ainda parece não aparecer, mas vi no Pavilion que vocês estão no processo de lançar documentação atualizada sobre as mudanças no plugin, então vou aguardar um pouco.

2 curtidas

@angus confirmado - problema resolvido :clap:t2:

Obrigado novamente pelo seu contínuo suporte a este plugin :smiley:

4 curtidas

Olá @angus, vi uma notificação dizendo que a primeira postagem neste tópico foi editada.

Parece que o local do repositório mudou.

Devemos todos atualizar nossas configurações do Discourse para o novo local, ou o local antigo/existente continuará sendo atualizado?

Precisamos reconstruir algo após alterar o local da fonte do plugin?

3 curtidas

Ei @Richie, você pode continuar usando a URL antiga de GitHub - merefield/discourse-locations: Tools for handling locations in Discourse · GitHub. Você pode esperar para atualizá-la quando tiver uma oportunidade natural, ou seja, quando precisar reconstruir seu site por algum outro motivo.

O plugin foi transferido do meu GitHub pessoal para o do Pavilion há algum tempo. Quando um repositório é transferido, o GitHub redireciona automaticamente todos os links para a localização antiga para a nova.

O primeiro post sofrerá algumas alterações nas próximas semanas. Vou escrever uma documentação sobre isso no thepavilion.io e uma descrição mais curta aqui no meta.

4 curtidas

Excelente, eu não sabia disso :+1:t2:

Obrigado mais uma vez pelo apoio!

3 curtidas