Permitir a modificação do texto de Fuso Horário (especialmente em Eventos)

Continuando a discussão de :globe_showing_europe_africa: Novo recurso de calendário: mostrar hora local:

Nosso(s) site(s) é/são quase exclusivamente restrito(s) à nossa nação.

Temos um problema específico em que nosso fuso horário se parece com um local específico em nosso país e, portanto, pode confundir os usuários quando visto com o campo de localização imediatamente abaixo dele:

Neste caso, o evento (local) está sendo realizado em um estabelecimento local bem conhecido a cerca de 1000 km da cidade de Auckland (em outra cidade). Ter (Auckland) ali é bastante enganoso.

Houve alguma discussão no tópico vinculado sobre isso:

Seria muito útil poder ocultar o fuso horário (especialmente em Eventos) para eventos locais no nível do site, mas não consigo ver como fazer isso com CSS - e ask.discourse.com não ajuda.

Junto a isso, seria muito útil poder definir eventos locais como padrão.

1 curtida

Se entendi corretamente:

  • O fuso horário da cidade do evento só é exibido se “Mostrar Hora Local” estiver ativado nas configurações do evento
  • “Mostrar Hora Local” está desativado por padrão

Então, presumo que você tenha usuários ativando “Mostrar Hora Local” e você não quer isso.

E se você ocultar a configuração “Mostrar Hora Local” para que não possa ser ativada?

.event-field.show-local-time {
    display: none;
}

Novos eventos exibirão então a hora e a cidade do fuso horário do usuário. (Não vejo uma maneira de ocultar a cidade, pois é conteúdo gerado.)
por exemplo, um evento criado no fuso horário de Phoenix será exibido com meu próprio horário local e “Chicago”.

Obrigado pela sua consideração e sugestões, Todd!

Não exatamente - este não é o problema. Na verdade, não importa muito se é local ou do usuário (será o mesmo na maioria dos casos).
O problema é que nosso fuso horário específico é enganoso devido ao texto que ele contém (é o único fuso horário da Nova Zelândia). Isso também se aplica a você: no seu exemplo acima, implica que o evento será realizado em Little Creek, Chicago.

É isso que estou buscando em vez disso:

Bem, depois de bater a cabeça na parede da codificação de vibração por um tempo, eu tenho este trecho de javascript (colocado na aba JS de um Componente de Tema local) que está resolvendo o problema para mim:

import { apiInitializer } from "discourse/lib/api";

export default apiInitializer("swap-auckland-for-nz", (api) => {
  function swapTimezones(root = document) {
    root.querySelectorAll('.relative-time').forEach(elem => {
      if (elem.textContent && elem.textContent.includes('(Auckland)')) {
        elem.textContent = elem.textContent.replace('(Auckland)', '(NZ)');
      }
    });
  }

  api.onPageChange(() => {
    swapTimezones(document);

    // Configurar observador de mutação persistente para eventos dinâmicos/saída de calendário
    const observer = new MutationObserver(() => {
      swapTimezones(document);
    });

    observer.observe(document.body, { childList: true, subtree: true });

    // Opcionalmente, também executar novamente após outros eventos de navegação
    window.addEventListener("hashchange", () => swapTimezones(document));
    window.addEventListener("popstate", () => swapTimezones(document));
  });
});

Se eu tiver tempo, vou empacotar isso como um Componente de Tema instalável para que outros possam usá-lo, se desejarem.

Eu não percebi que a Nova Zelândia tinha apenas um fuso horário, mas quando terminei lá, tive a sensação de que seu problema precisaria de javascript. Que bom que você conseguiu uma solução em JS!

1 curtida