(Aposentado) Use um ID em um campo de usuário personalizado para vincular ao perfil externo de um usuário

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 curtida

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 curtida

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 curtidas

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 curtidas

@wilson29thid você estaria disposto a configurar um tópico de #tema para este componente? Seria ótimo ter isso como um componente de tema instalável em vez de exigir que as pessoas copiem e colem o código toda vez.

5 curtidas

Claro - criar um tópico aqui com essa tag o torna instalável?

1 curtida

Já é instalável através da URL do git. Criar um tópico apenas ajudará as pessoas a encontrá-lo mais facilmente.

1 curtida

Pergunta ligeiramente diferente. Quero adicionar um link que abre em uma janela diferente na descrição de um campo de usuário na página de inscrição. Essa página não reconhece links encapsulados no formato [este](formato).

Quero que os usuários concordem que leram nossos valores da comunidade antes de ingressar, e ter um link lá ajudará se eles os perderam. No momento, eu apenas disse a eles para copiar/colar o link completo em seus navegadores.

Como isso funciona com o Discourse 3.2 e o Ember 5?

Atualizei a versão: \u003cscript type=\"text/discourse-plugin\" version=\"1.13.0\"\u003e e alterei api.registerConnectorClass para api.renderInOutlet como sugerido aqui, mas recebo no console do navegador: [THEME 27] Error: klass is not an Ember component

Troquei property por computed como sugerido aqui, mas recebo no console do navegador: [THEME 27] ReferenceError: computed is not defined

Ah, esqueci a importação, então adicionei a import EmberObject, { computed } from '@ember/object'; ausente após a tag de script de abertura, mas isso resulta em um SyntaxError: "/discourse/theme-27/discourse/initializers/theme-field-140-common-html-script-3: ‘import’ and ‘export’ may only appear at the top level.

1 curtida

Hmm sim, as técnicas sugeridas no OP estão bem desatualizadas (o que faz sentido, já que foi escrito em 2016 :sweat_smile:).

Hoje em dia, esse tipo de coisa deve ser empacotado em um repositório git e publicado como um Theme component para as pessoas instalarem e configurarem através das configurações.

2 curtidas

Eu acabei refazendo o TC do @wilson29thid aqui, embora ele ainda tenha um aviso de depreciação que preciso corrigir em algum momento.

1 curtida

Esta funcionalidade do OP agora pode ser encontrada em um novo mini componente: