(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…

Capture

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

Is there a way to edit existing user profile fields rather than adding new one? So that the existing twitter field value can be edited to contain anchor tag

the main post that allows us to add new clickable profile fields using connectors/handlebar outlets etc, those get “added” and so I had to hide the existing profile fields
e.g. I could add a clickable twitter field and so have to hide the existing twitter field
Now the newly added twitter field will be in a separate div rather than belonging to that same ember div which was pre-existing, resulting in weird css

Would using /connectors/user-profile-public-fields/Twitter instead of using /connectors/user-profile-primary/ help here?

This is very nice, i forked it and tried to make it a bit more general as a theme component without the Namati specific stuff. Hope you don’t mind!

Added a separate post as well to make it easier to find for others:

2 Mi Piace

Hi all, just wanted to share that I made a very basic plugin version of this. It just lets you specify which user field to make into a link, and—optionally—a prefix (e.g. https://mysite.com/users/). Just thought I’d share in case anyone would rather install a theme component instead of modify code. It’s based on the code in the original post in this thread.

On a side note, for my particular use case, I don’t want any user to be able to edit it; rather, I plan to update it via the discourse API. In that case, would a “custom field” be better than a “user field”? I see both in the API, but custom_fields are blank.

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: