(Pensionato) Usa un ID in un campo personalizzato dell'utente per collegarlo al profilo esterno di un utente

Also today I realized that the User Profile page actually displays the custom field as it should, although compared to the user card, now the custom field (Website) is displayed last instead of first..

1 Mi Piace

I feel like I’ve seen a discussion of this, but I can’t find it now.

I’ve got a custom profile field that holds a user’s website implemented using this tutorial, but allowing for any external site to be entered, rather than just linking to Twitter or something. The problem I have is that about 80% of the users don’t bother to put “http(s)://” in front of the URL they enter. They (rightly) expect that “www.example.com” should just work. So how do I make it just work?

Edited to add: Figured it out. Below is the entire if block of javascript I used to determine whether to attempt to show an external link. The inner if is what determines whether the external URL needs to have “http” added to it, and takes care of doing it.

    if (userFields && userFields[churchURLFieldId]) {
      const rawChurchURL = userFields[churchURLFieldId];
      var url = rawChurchURL;
      if (!/^https?:\/\//i.test(rawChurchURL)) {
        url = 'http://' + rawChurchURL;
      }
      const link = "<a href='"+url+"' target='_blank'>"+userFields[churchNameFieldId];+"</a>";
      return Ember.Object.create({ link, name: churchURL.get('name') });
    } else {
      return null;
    }
1 Mi Piace

È possibile modificare i campi del profilo utente esistenti invece di aggiungerne di nuovi? In modo che il valore esistente del campo Twitter possa essere modificato per contenere un tag anchor. Il post principale che ci consente di aggiungere nuovi campi del profilo cliccabili utilizzando connettori, outlet Handlebar, ecc., li “aggiunge”, quindi ho dovuto nascondere i campi del profilo esistenti. Ad esempio, potevo aggiungere un campo Twitter cliccabile e quindi dovevo nascondere il campo Twitter esistente. Ora il nuovo campo Twitter aggiunto si trova in un div separato invece di appartenere allo stesso div Ember preesistente, il che comporta problemi di CSS. Utilizzare /connectors/user-profile-public-fields/Twitter invece di /connectors/user-profile-primary/ potrebbe aiutare in questo caso?

È molto carino! L’ho fatto fork e ho provato a renderlo un po’ più generico come componente del tema, rimuovendo gli elementi specifici di Namati. Spero non ti dispiaccia!

Ho anche aggiunto un post separato per renderlo più facile da trovare per gli altri:

2 Mi Piace

Ciao a tutti, volevo solo condividere che ho creato una versione molto basilare in forma di plugin di questo. Consente semplicemente di specificare quale campo utente trasformare in un link e, opzionalmente, un prefisso (ad esempio https://mysite.com/users/). Ho pensato di condividerlo nel caso qualcuno preferisca installare un componente del tema invece di modificare il codice. Si basa sul codice del post originale in questa discussione.

A proposito, per il mio caso d’uso specifico, non voglio che nessun utente possa modificarlo; anzi, ho intenzione di aggiornarlo tramite l’API di Discourse. In tal caso, sarebbe meglio un “campo personalizzato” rispetto a un “campo utente”? Ne vedo entrambi nell’API, ma custom_fields risultano vuoti.

7 Mi Piace

@wilson29thid saresti disposto a impostare un argomento Theme per questo componente? Sarebbe fantastico averlo come componente tema installabile anziché richiedere alle persone di copiare/incollare il codice ogni volta.

5 Mi Piace

Certo, la creazione di un argomento qui con quel tag lo rende installabile?

1 Mi Piace

È già installabile tramite l’URL git. La creazione di un argomento aiuterà le persone a trovarlo più facilmente.

1 Mi Piace

Domanda leggermente diversa. Voglio aggiungere un link che si apra in una finestra diversa nella descrizione di un campo utente nella pagina di iscrizione. Quella pagina non riconosce i link racchiusi in [questo](formato).

Voglio che gli utenti accettino di aver letto i nostri valori della community prima di iscriversi, e avere un link lì aiuterà se li hanno persi. Al momento ho semplicemente detto loro di copiare/incollare il link completo nel loro browser.

Come funziona con Discourse 3.2 ed Ember 5?

Ho aggiornato la versione: \u003cscript type=\"text/discourse-plugin\" version=\"1.13.0\"\u003e e ho cambiato api.registerConnectorClass in api.renderInOutlet come suggerito qui ma ottengo nella console del browser: [THEME 27] Error: klass is not an Ember component

Ho scambiato property con computed come suggerito qui ma ottengo nella console del browser: [THEME 27] ReferenceError: computed is not defined

Oh, ho dimenticato l’import, quindi ho aggiunto il mancante import EmberObject, { computed } from '@ember/object'; dopo il tag script di apertura ma ciò risulta in un SyntaxError: "/discourse/theme-27/discourse/initializers/theme-field-140-common-html-script-3: ‘import’ and ‘export’ may only appear at the top level.

1 Mi Piace

Hmm sì, le tecniche suggerite nell’OP sono piuttosto datate (il che ha senso, dato che è stato scritto nel 2016 :sweat_smile:).

Oggigiorno questo tipo di cose dovrebbe essere impacchettato in un repository git e pubblicato come Theme component affinché le persone possano installarlo e configurarlo tramite le impostazioni.

2 Mi Piace

Ho finito per rielaborare il TC di @wilson29thid qui anche se ha ancora un avviso di deprecazione che devo correggere prima o poi.

1 Mi Piace

Questa funzionalità dell’OP si trova ora in un nuovo mini componente: