Prossimi cambiamenti nell'intestazione - Preparazione di temi e plugin

Abbiamo recentemente lavorato sull’aggiornamento dell’intestazione di Discourse dal vecchio sistema di rendering ‘widget’ ai moderni componenti Glimmer. Questo cambiamento è ora disponibile nel core di Discourse dietro l’impostazione del sito glimmer header mode.

:timer_clock: Tempistica Approssimativa

(stime molto indicative - soggette a modifiche in entrambe le direzioni)

Q1 2024:

  • :white_check_mark: implementazione core completata e abilitata su Meta

  • :white_check_mark: pubblicato consiglio di aggiornamento; messaggi di deprecazione nella console abilitati

  • :white_check_mark: inizia il lavoro per aggiornare tutti i plugin e i temi ufficiali e di terze parti

Q2 2024:

  • :white_check_mark: inizia l’abilitazione predefinita della nuova implementazione dell’intestazione

  • :white_check_mark: temi e plugin ufficiali e di terze parti pronti per l’aggiornamento

  • :white_check_mark: i messaggi di deprecazione iniziano a generare un banner di avviso per gli amministratori per eventuali problemi residui

Q3 2024:

  • :white_check_mark: Pubblicato argomento di annuncio per una maggiore visibilità: Preparing your community for behind-the-scenes header changes

  • :white_check_mark: settimana del 5 agosto 2024 (v3.4.0.beta1): nuova intestazione abilitata per tutti i siti per impostazione predefinita. Gli amministratori potranno comunque tornare all’intestazione vecchia attivando l’impostazione del sito ‘glimmer header mode’.

  • :white_check_mark: settimana del 2 settembre 2024: rimozione definitiva del flag di funzionalità e del codice legacy

:eyes: Cosa Significa per Me?

Se il tuo plugin o tema utilizza le API ‘widget’ per personalizzare l’intestazione, queste dovranno essere aggiornate per essere compatibili con la nuova intestazione.

:person_tipping_hand: Come Posso Provare la Nuova Intestazione?

Nell’ultima versione di Discourse, la nuova intestazione viene abilitata automaticamente quando tutti i tuoi temi/plugin sono compatibili.

Se i tuoi temi/plugin non sono compatibili, verrà utilizzata l’intestazione legacy e verrà stampato un avviso nella console insieme ai messaggi di deprecazione esistenti. Verrà mostrato anche un banner di avviso agli amministratori nell’interfaccia utente.

Nel raro caso in cui questo sistema automatico non funzioni come previsto, puoi sovrascrivere temporaneamente questo ‘flag di funzionalità automatico’ tramite l’impostazione del sito glimmer header mode. Se lo fai, ti preghiamo di farci sapere il motivo in questo argomento.

:technologist: Devo Aggiornare il Mio Plugin/Tema?

Per determinare se la tua personalizzazione deve essere aggiornata, verifica se utilizza decorateWidget, changeWidgetSetting, reopenWidget o attachWidgetAction su uno di questi widget:

  • header
  • site-header
  • header-contents
  • header-buttons
  • user-status-bubble
  • sidebar-toggle
  • header-icons
  • header-topic-info
  • header-notifications
  • home-logo
  • user-dropdown

oppure utilizza uno di questi metodi dell’API plugin:

  • addToHeaderIcons
  • addHeaderPanel

Tutte queste azioni genereranno ora messaggi di deprecazione nella console. Gli ID di deprecazione sono:

  • discourse.add-header-panel
  • discourse.header-widget-overrides

:warning: Se utilizzi più di un tema nella tua istanza, assicurati di controllarli tutti.

Avviso per gli amministratori

A partire dal 20 giugno 2024, abbiamo abilitato l’avviso per gli amministratori per le deprecazioni sopra indicate.

Se la tua istanza è stata distribuita dopo questa data e i plugin, il tema o i componenti del tema attuali della tua istanza attivano uno degli avvisi di deprecazione, verrà visualizzato il seguente messaggio solo per gli amministratori*:

Questo messaggio serve solo per avvisare gli amministratori che devono agire presto per modernizzare le personalizzazioni interessate: le vecchie personalizzazioni continueranno a funzionare fino alla rimozione del codice legacy.

:twisted_rightwards_arrows: Quali Sono le Sostituzioni?

Ogni tema/plugin è diverso, ma ecco alcune indicazioni per i casi d’uso più comuni:

addToHeaderIcons

:information_source: Per le icone personalizzate nell’intestazione, consigliamo di rimuovere il tuo codice e installare il componente tema ufficiale Custom Header Links (Icons) Theme Component. Se questo non soddisfa le tue esigenze, consulta di seguito le informazioni sui necessari cambiamenti di codice:

L’API plugin addToHeaderIcons è stata deprecata a favore della nuova API headerIcons. Esiste per consentire l’aggiunta, la rimozione o il riordinamento delle icone nell’intestazione. Richiede il passaggio di un Componente.

Il componente può essere passato nel seguente modo:

Prima Dopo
api.addToHeaderIcons(“widget-foo”) api.headerIcons.add(“foo”, FooIcon)
api.decorateWidget(“header-icons:before”, () => return helper.h(“div”, “widget-foo”)) api.headerIcons.add(“foo”, FooIcon, { before: “search” })
api.decorateWidget(“header-icons:after”, () => return helper.h(“div”, “widget-foo”)) api.headerIcons.add(“foo”, FooComponent, { after: “search” })

Questo esempio utilizza il Formato Tag Template di Ember (gjs) per definire un componente in linea e passarlo all’API headerButtons.add:

// .../discourse/api-initializers/add-my-button.gjs

import DButton from "discourse/components/d-button";
import { apiInitializer } from "discourse/lib/api";

export default apiInitializer("1.0", (api) => {
  api.headerIcons.add("some-unique-name", <template>
    <li><DButton class="icon btn-flat" @href="/u" @icon="address-book" /></li>
  </template>);
});

O per un menu a tendina, puoi utilizzare <DMenu invece di <DButton:

import DButton from "discourse/components/d-button";
import { apiInitializer } from "discourse/lib/api";
import DMenu from "float-kit/components/d-menu";

export default apiInitializer("1.0", (api) => {
  api.headerIcons.add("some-unique-name", <template>
    <li>
      <DMenu class="icon btn-flat" @icon="address-book">
        <DButton @translatedLabel="Utente 1" @href="/u/user1" />
        <DButton @translatedLabel="Utente 2" @href="/u/user2" />
        <DButton @translatedLabel="Utente 3" @href="/u/user3" />
      </DMenu>
    </li>
  </template>);
});

Commit di aggiornamento di esempio:

decorateWidget("header-buttons:*")

:information_source: Per i link personalizzati nell’intestazione, consigliamo di rimuovere il tuo codice e installare il componente tema ufficiale Custom Header Links Theme Component. Se questo non soddisfa le tue esigenze, consulta di seguito le informazioni sui necessari cambiamenti di codice:

Il widget header-buttons è stato deprecato e abbiamo introdotto un’API plugin headerButtons. Esiste per consentire l’aggiunta, la rimozione o il riordinamento dei pulsanti nell’intestazione. Richiede il passaggio di un Componente.

Prima Dopo
api.decorateWidget(“header-buttons:before”) api.headerButtons(“button-name”, ButtonComponent, { before: “auth” })
api.decorateWidget(“header-buttons:after”) api.headerButtons(“button-name”, ButtonComponent, { after: “auth” })

changeWidgetSetting(...) per i widget dell’intestazione

:information_source: I casi d’uso più comuni di changeWidgetSetting possono essere realizzati utilizzando questi componenti tema:

Se questi non si adattano al tuo caso d’uso, continua a leggere…

Alcune personalizzazioni sui widget dell’intestazione utilizzavano l’API changeWidgetSetting.

Sebbene non esista una sostituzione diretta per personalizzazioni come quella sopra, a causa del funzionamento dei campi dei componenti Glimmer, abbiamo introdotto una nuova API plugin in Discourse 3.3.0.beta3 per gestire alcuni di questi casi.

registerValueTransformer può essere utilizzato per sovrascrivere i valori contrassegnati nel codice sorgente come sovrascrivibili; questo è un approccio simile a quello degli outlet dei plugin.

Abbiamo già aggiunto due transformer per i casi d’uso che abbiamo trovato comuni nel nostro codice sorgente:

  • home-logo-href: può essere utilizzato per sovrascrivere l’URL nell’ancora del logo home. Vedi la sezione home-logo qui sotto per esempi.

  • header-notifications-avatar-size: può essere utilizzato per modificare le dimensioni dell’immagine recuperata per l’avatar dell’utente nell’intestazione. Esempio:

Il codice seguente:

api.changeWidgetSetting(
  "header-notifications",
  "avatarSize",
  settings.header_avatars_size
);

Verrebbe convertito in:

api.registerValueTransformer(
  "header-notifications-avatar-size",
  () => settings.header_avatars_size
);

Questi transformer devono essere aggiunti al codice sorgente di Discourse. Se ne hai bisogno di uno diverso, ti preghiamo di farcelo sapere pubblicando il tuo caso d’uso qui sotto.

Maggiori dettagli sulle nuove API dei transformer dei valori sono disponibili qui.

home-logo

Abbiamo introdotto un plugin outlet home-logo in sostituzione delle decorazioni widget home-logo:before o home-logo:after. Puoi utilizzare la convenzione di denominazione automatica __before e __after nel tuo file di connettore per specificare dove deve essere posizionato il tuo contenuto personalizzato.

Maggiori dettagli sulla convenzione di denominazione dei file di connettore before/after sono disponibili qui.

Prima Dopo
api.decorateWidget(“home-logo:before”) Sposta il contenuto in /connectors/home-logo__before
api.decorateWidget(“header-buttons:after”) Sposta il contenuto in /connectors/home-logo__after)

Modifica dell’URL dell’ancora home-logo:

Un’esigenza molto comune è modificare l’URL a cui punta il home-logo. Abbiamo introdotto il transformer dei valori home-logo-href per risolvere questo problema. Esempi:

  • per cambiare il link in un URL statico

    api.registerValueTransformer("home-logo-href", () => "https://example.com");
    
  • per restituire un URL dinamico in base all’utente corrente

    api.registerValueTransformer("home-logo-href", () => {
      const currentUser = api.getCurrentUser();
      return `https://example.com/${currentUser.username}`;
    });
    
  • per restituire un URL in base a un’impostazione del tema-componente

    api.registerValueTransformer("home-logo-href", () => {
      return settings.example_logo_url_setting;
    });
    

:sos: E per le altre personalizzazioni?

Se la tua personalizzazione non può essere realizzata utilizzando CSS, PluginOutlets o le nuove API che abbiamo introdotto, ti preghiamo di farcelo sapere creando un nuovo argomento Development per discuterne.

:sparkles: Come Aggiorno un Tema/Plugin per Supportare sia la Vecchia che la Nuova Intestazione?

Tutte le nuove API e i plugin outlet elencati in questo documento sono supportati sia sulla nuova che sulla vecchia intestazione. Quindi devi effettuare un solo aggiornamento al tuo tema/plugin ora, e gli utenti saranno pronti per il passaggio.

Ma come definisco un FooIcon?

In un plugin ho provato a creare /assets/javascripts/discourse/components/server-link.js (come per altri componenti che uso in un file hbs)

import Component from "@ember/component";
import discourseComputed from "discourse-common/utils/decorators";

export default Component.extend({
// deve andare qualcosa qui?
});

E un assets/javascripts/discourse/templates/components/server-link.hbs con
questo è un link (penso di poterlo trasformare in un link se riesco a far funzionare questo “Hello, world”)

L’esempio sopra ha const IconWithDropdown = ... ma dove andrebbe? Ho provato a metterlo in un inizializzatore (dove era api.decorateWidget), ma non mi sembra javascript valido né per ember, per quanto ne capisco.

Prima avevo un array headerlinks e facevo

        headerLinks.push(
          h(
            `li.headerLink.no-servers`,
            h("a", anchorAttributes, I18n.t("pfaffmanager.no_servers_title"))
          )
        );

per aggiungere i link che volevo. Penso che se riesco a far funzionare

      api.headerIcons.add("foo", ServerLink, { before: "search" });

allora posso semplicemente metterlo nel ciclo che ha costruito quell’array.

OMG. I componenti Glimmer vanno in assets/javascripts/discourse/component e i componenti Ember vanno in assets/javascripts/discourse/components?!?!\n\nOra ho un server-link.gjs\n\nimport Component from \"@ember/component\";\nexport default class ServerLink extends Component {\n // Argomento richiesto per l'URL\n url = null;\n // Argomento opzionale per il testo del link\n text = 'asdf';\n click() {\n console.log('ServerLink cliccato!',this);\n\n }\n // Template per il componente\n \u003ctemplate\u003e\n {{log \"il mio template\" this}}\n LINK!\n \u003ca href={{this.url}}\u003e{{this.text}}\u003c/a\u003e\n \u003c/template\u003e\n}\n\n\ne nel mio initializer questo:\n\n api.headerIcons.add(\"foo\", ServerLink, { param: \"url, yo\", before: \"search\" });\n\n\nOra ho qualcosa nell’header.\n\nMa come passo le cose a ServerLink? Devo chiamarlo più volte con URL diversi e testi da cliccare diversi. Non riesco a vedere le cose in quel {} nel componente.\n\nE non vuoi davvero mettere javascript prima del \u003ctemplate\u003e, dato che il mio console.log(\"\") non verrà analizzato!\n\nHo anche provato a fare:\n\n const x = new ServerLink({\n url: \"mylink\",\n text: \"my-text\",\n name: 'Bob',\n message: 'Generato da JavaScript',\n });\n \ne poi passare x invece di ServerLink, ma ancora niente.

Intendi dire che vuoi più pulsanti nelle intestazioni con icone/testo/URL diversi o lo stesso pulsante, ma a seconda del contesto, il testo/URL può cambiare?

Sì, sei in una classe: lì dichiareresti variabili, funzioni o template!

Sì. I collegamenti cambiano per utenti diversi. Il vecchio codice collegava tramite un array di servers e li inseriva in questo array:

            headerLinks.push(
              h(
                `li.headerLink${deviceClass}${newClass}`,
                h("a", anchorAttributes, linkText)
              )
            );

E poi ha fatto questo:

      // api.decorateWidget("header-buttons:before", (helper) => {
      //   return helper.h("ul.pfaffmanager-header-links", headerLinks);
      // });

Quindi avevo fino a 3 collegamenti che venivano aggiunti all’intestazione, ognuno collegato a un URL di server separato.

Aha. Ora ho capito.

No, non preoccuparti: la convenzione è ancora /components/ :sweat_smile:

(Tecnicamente, puoi definire e passare componenti gjs come preferisci, quindi puoi scegliere qualsiasi nome di directory ti piaccia. Ma noi ci atteniamo a /components/.)

Sì, è una domanda lecita: lavorerò alla stesura di alcuni documenti “da zero” su come aggiungere icone all’header in modo che abbiamo un punto di riferimento migliore.

Nel frattempo, però, potresti apprezzare dare un’occhiata all’aggiornamento di discourse-icon-header-links per trarre ispirazione. La cosa bella dell’uso di GJS è che puoi definire componenti ovunque, e questi ottengono accesso alle variabili nello scope locale.

Quindi, se rinomini il tuo initializer in .gjs, puoi fare cose come

servers.forEach((server) => {
  api.headerIcons.add(`server-${server.id}`, <li><DButton @translatedLabel={{server.name}} @icon="server" /></li>);
});

Oppure puoi definire un componente prima nello stesso file e usarlo come

class ServerButton extends Component {
  get icon(){
    // logica per decidere l'icona
  }
  <li><DButton @translatedLabel={{@server.name}} @icon={{this.icon}} /></li>
}

...

servers.forEach((server) => {
  api.headerIcons.add(`server-${server.id}`, <ServerButton @server={{server}} />);
});

Oppure potresti spostare l’iterazione all’interno del template (utile se la lista dei server è un TrackedArray che potrebbe cambiare a runtime!)

api.headerIcons.add("server-buttons",
  {{#each servers as |server|}}
    <ServerButton @server={{server}} />
  {{/each}}
);

Oh. Evvai. Pensavo di averlo provato in components e non aveva funzionato.

Grazie! Penso di poter far funzionare una di queste cose. Il link ai link dell’header è di grande aiuto. Sono abbastanza sicuro che quando ho scritto il mio codice avessi abbastanza buon senso da guardare proprio quel componente per capirlo allora.

Vedendo um raio de esperança!

Olá @david e @Arkshine! Consegui!

O q ueeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee

Sim, agora isso parece muito legal, e ainda mais o que eu quero, mas essas coisas não mudam muito, então vou parar por aqui. Se eles mudarem um nome de host, eles terão que recarregar a página para que o link mude.

Presumo que você excluirá minha bagunça extra aqui quando atualizar as coisas acima (ou talvez eu não tivesse sido tão falante em um tópico de documentação. . .)

Ho aggiornato l’OP con alcuni esempi gjs completi e ho incluso un link alla documentazione upstream di Ember. Cosa ne pensi @pfaffman? C’è qualcos’altro che pensi valga la pena aggiungere?

È meglio dato che ha un esempio funzionante. Ma capisco correttamente che ci sono componenti ember e componenti glimmer? E se è così, dovresti dire che è richiesto un componente glimmer, secondo me?

E forse collegare alla documentazione di glimmer su come funzionano?

Sembra che tu possa avere componenti inline come nel tuo esempio, e un altro tipo in cui lo assegni a qualcosa come una variabile nello stesso file o lo metti in un altro file che metti nella directory dei componenti e poi includi? Penso che tutto ciò possa essere troppo per questo argomento, ma mi piacerebbe un argomento dedicato a riguardo.

Sono totalmente intercambiabili: puoi usare un componente Ember classico o un componente Glimmer. E per entrambi, puoi scegliere di scriverli utilizzando il formato vecchio stile .js/.hbs o il formato nuovo stile .gjs.

Vedrò se riesco a inserire alcuni link alla documentazione di Ember :+1:

:mega: Oggi abbiamo unito questa modifica, che abiliterà automaticamente la nuova implementazione dell’header per i siti con temi/plugin compatibili.

Se i tuoi temi/plugin non sono compatibili, verrà ancora utilizzato l’header legacy e un avviso verrà stampato sulla console insieme ai messaggi di deprecazione esistenti. Nel prossimo futuro, questo avviso sulla console verrà aggiornato a un banner di avviso nell’interfaccia utente.

Nell’improbabile eventualità che questa modifica automatica causi problemi, puoi sovrascrivere temporaneamente questo ‘flag di funzionalità automatico’ tramite l’impostazione del sito glimmer header mode. Se lo fai, faccelo sapere il motivo in questo topic.

Non stavo cercando di apportare modifiche, ma gli avvisi di deprecazione mi dicono il contrario,

Quindi c’è una scelta e forse un modo semplice per mantenere lo status quo?

o

Cosa mi perderei scegliendo di mantenere una vecchia intestazione, non capisco cosa significhi la nuova, vedo le impostazioni di gruppo, la personalizzazione per diversi gruppi è intrigante, ma cosa si può personalizzare?

Questo è quello che ho trovato oggi,

Non sono un guru o un mago con questi cambiamenti, richiedono tempo e non li faccio abbastanza spesso per desiderare davvero di imparare le tecniche che gli utenti qui sembrano facilmente comprendere/conoscere.

Mi dispiace un po’ doverli fare in primo luogo, ma prima di urlare come un vecchio a cui è finito il budino, vorrei sapere, cosa, perché e dove sta andando tutto questo?

Lo faccio per vivere e ancora trovo questo roba javascript tutt’altro che facile.

Sono un vecchio e sento il tuo dolore.

È solo progresso, temo. Questo aggiornamento di Ember ha rotto un sacco di cose e non è ancora finita.

L’hai “chiesto tu” quando hai fatto quella personalizzazione. Scommetto che negli ultimi cinque anni hai comprato un nuovo telefono o laptop.

Se fossi nei tuoi panni (e tu fossi come me, senza il lavoro a tempo pieno su Discourse), posterei in Marketplace. Se fossi me, probabilmente non risponderei per meno di $300, ma c’è una ragionevole possibilità che qualcun altro lo faccia per $100 o $200. Suppongo che non si romperà di nuovo per altri 5 anni o più.

Penso che il selettore di temi a hamburger di cui puoi liberarti e usare la barra laterale.

Risposta onesta e gentile, la apprezzo ma non c’è molto su cui lavorare, forse c’è altro in arrivo (spero)

Non sapevo nemmeno che ci occupassimo di Java qui :man_shrugging:

Non voglio che nessuno ti rubi la tua crostata :face_with_hand_over_mouth:

Certo, ma qual è l’obiettivo desiderato, questo software si occupa di così tante cose che mi chiedo chi veda quale fine?

È semplicemente necessario per l’aggiornamento di ember?

Non so nemmeno perché sia stato fatto ember, ma se funziona perché correggerlo, sono sicuro che c’è una lunga e profonda spiegazione che porta al futuro delle cose, ma non c’è una vera visione da condividere?

Visito altri forum che utilizzano software molto datato, personalmente trovo discourse molto migliore di tutti loro, ma non sembrano soffrire in confronto, hanno gli stessi problemi di crescita, la maggior parte sono personalità contro software secondo me, troppi vecchi che hanno perso la loro crostata, mi chiedo, c’è un futuro IOT che renderà letteralmente obsoleti tutti quei forum dove non funzioneranno affatto e discourse ne è consapevole e si sta preparando?

C’è altra onestà da parte tua :grin: vero, ed ero più ansioso di imparare, più ambizioso, sentivo di più il valore, da allora sono stato picchiato, investito e lasciato per morto

Ok, ci sto, accetto quella scommessa e dato che hai già perso mi aiuti con questo, saremo amici.

Allora probabilmente ti saresti già licenziato molto tempo fa, il picchiato, investito e lasciato per morto era una descrizione piuttosto eufemistica, sono rimasto solo io al volante, immagino che chiunque altro sia in qualche pannello da qualche parte che cerca di riparare l’iperguida, non lo so dato che non comunico spesso con gli altri, non abbiamo finanziamenti, noi (FULL30) siamo stati de-piattaformati dai social media e anche da discourse, mi chiedo quanti altri clienti paganti discourse abbia volontariamente tagliato o quanti altri siano stati ritenuti così offensivi nelle loro convinzioni che discourse ha pubblicamente messo soldi contro di loro?

Eppure, mentre dico la verità, non mi offendo, vivi e lascia vivere, so che sta arrivando un futuro, quello che non so è perché sono ancora qui e sto ancora provando, ma lo sto facendo, quindi continuerò a provare, come gli AA, solo per oggi :hugs:

Ma era di gran moda quando l’ho usato :expressionless:

La barra laterale (qui) può essere chiusa con un menu hamburger, non c’è molta differenza di funzione, apre e chiude una finestra di navigazione, ma la mia non può essere salvata facilmente?

Sì, mi piacerebbe e preferirei pagare qualcuno per ripulire il mio codice personalizzato e rendere le cose piacevoli, e pagherei volentieri, mi piace impiegare gli altri, condividere la ricchezza, quando sarò grande voglio essere un filantropo, ma oggi ho bisogno di un filantropo :innocent: e ancora una volta apprezzo qualsiasi aiuto gli altri possano offrire.

L’altro modo di giocare è chiedere aiuto alla tua community, smettere di fare qualsiasi cosa fosse la personalizzazione, avviare un nuovo argomento che condivida il tuo codice e chiedere aiuto. Ho ricevuto molto aiuto in queste questioni di recente.

Purtroppo no. La possibilità di attenersi alla ‘vecchia intestazione’ è solo una cosa temporanea durante il periodo di transizione. Presto, la nuova intestazione sarà l’unica opzione.

Sì! Siamo sempre felici di aiutare con domande in Dev. Inoltre, condividere il codice e le soluzioni pubblicamente crea una risorsa utile per gli altri.

phew, la mia community è più in sintonia con altri problemi

Sicuramente potrei condividere qui ma poi va al contrario, quale programmatore è interessato ad aiutarci?

L’ironia, la programmazione potrebbe benissimo essere le armi da fuoco del futuro, potrebbe causare molta più morte e distruzione, divago

Molto bene, cosa significa esattamente per me, creare un gruppo di utenti, pubblico e non registrato forse?

Queste impostazioni di gruppo, percepisco che si basano sui livelli di fiducia rispetto a gruppi effettivamente diversi, come un gruppo di caccia e un gruppo di pesca?

Prima devo capire l’obiettivo e dove i miei sforzi da lupo solitario avranno il massimo impatto, risparmiando tempo e preservando l’atmosfera personalizzata per il mio forum.


Non voglio deviare il thread di nessuno, se si ritiene che questo debba essere un thread separato, va bene per me

ma come potrà mai esserci una vera relazione coesa quando le persone sentono il bisogno di rimuovere qualcosa che le offende?

Ci vuole pazienza per capire gli altri, il link rimosso, mostrava un logo mancante dopo ma non durante la pubblicazione, un altro problema di intestazione da discutere?

Era un post sul mio forum scritto da un uomo che credo ben oltre gli 80 anni, potrei chiederlo di sicuro ma si rifiuta di parlarmi, lo rimprovero, lo banno o lo evito?

No, perché, perché c’è un modo migliore ma significa sopportare gli altri e come pensano, trovo brava gente in posti brutti, brava gente che sembra brutta, e viceversa in entrambi.

Esattamente, ho appena trovato gli errori, vorrei affrontarli ma non capisco la causa principale se non che il futuro sta andando avanti, abbiamo bisogno di una nuova intestazione, ok va bene, qual è il corso corretto su cui puntare, una semplice messa a punto, una correzione completa della rotta?

Stiamo discutendo solo della necessità di lavorare su queste tre aree?

Ho un uso misto di componenti, ho iniziato senza e poi ho imparato che possono essere utili, non sono mai andato completamente con i componenti e ho un miscuglio.

Ecco il mio tema per quello che vale senza i componenti
discourse-full30-ii.zip (10,1 KB)
Posso pubblicare anche quelli, alcuni, i modali, non funzionano già di recente