Permitir la modificación del texto de Zona Horaria (especialmente en Eventos)

Continuando la discusión de :globe_showing_europe_africa: Nueva función de calendario: mostrar hora local:

Nuestro(s) sitio(s) está(n) casi exclusivamente restringido(s) a nuestra nación.

Tenemos un problema particular en el que nuestra zona horaria parece una ubicación específica en nuestro país, y por lo tanto puede confundir a los usuarios cuando se ve con el campo de ubicación inmediatamente debajo:

En este caso, el evento (local) se celebra en un establecimiento local bien conocido a unos 1000 km de la ciudad de Auckland (en otra ciudad). Tener el (Auckland) ahí es bastante engañoso.

Ha habido algo de discusión en el hilo enlazado al respecto:

Sería muy útil poder ocultar la zona horaria (especialmente en Eventos) para los eventos locales a nivel de sitio, pero no veo cómo hacerlo con CSS, y ask.discourse.com no ayuda.

Junto a esto, sería muy útil poder establecer los eventos locales como predeterminados.

1 me gusta

Si entiendo bien:

  • la ciudad de la zona horaria del evento solo se muestra si “Mostrar hora local” está activado en la configuración del evento
  • “Mostrar hora local” está desactivado por defecto

Así que supongo que tienes usuarios que activan “Mostrar hora local”, y tú no quieres esto.

¿Qué pasaría si ocultas la configuración “Mostrar hora local” para que no se pueda activar?

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

Los nuevos eventos mostrarán entonces la hora y la ciudad de la zona horaria del usuario. (No veo una forma de ocultar la ciudad, ya que es contenido generado).
por ejemplo, un evento creado en la hora de Phoenix se mostrará con mi propia hora local y “Chicago”.

Gracias por tu consideración y sugerencias, ¡Todd!

No exactamente, ese no es el problema. En realidad no importa mucho si es local o del usuario (será el mismo en la mayoría de los casos).
El problema es que nuestra zona horaria en particular es engañosa debido al texto que contiene (es la única zona horaria de Nueva Zelanda). Esto también se aplica a ti: en tu ejemplo anterior, implica que el evento se llevará a cabo en Little Creek, Chicago.

Esto es lo que busco en su lugar:

Bueno, después de golpearme la cabeza contra el muro de la codificación de vibraciones por un tiempo, tengo este fragmento de javascript (colocado en la pestaña JS de un Componente de Tema local) que me está funcionando:

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 mutación persistente para eventos dinámicos/salida de calendario
    const observer = new MutationObserver(() => {
      swapTimezones(document);
    });

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

    // Opcionalmente, también ejecutar de nuevo después de otros eventos de navegación
    window.addEventListener("hashchange", () => swapTimezones(document));
    window.addEventListener("popstate", () => swapTimezones(document));
  });
});

Si encuentro tiempo, lo empaquetaré como un Componente de Tema instalable para que otros puedan usarlo si lo desean.

No me di cuenta de que Nueva Zelanda tenía una sola zona horaria, pero cuando terminé allí tuve la sensación de que tu problema necesitaría javascript. ¡Me alegro de que hayas encontrado una solución en JS!

1 me gusta