(Retirado) Utiliza un ID en un campo de usuario personalizado para enlazar con el perfil externo de un usuario

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 me gusta

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 me gusta

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 Me gusta

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 Me gusta

@wilson29thid ¿estarías dispuesto a configurar un tema Theme para este componente? Sería genial tener esto como un componente de tema instalable en lugar de requerir que las personas copien y peguen el código cada vez.

5 Me gusta

Claro, ¿crear un tema aquí con esa etiqueta hace que sea instalable?

1 me gusta

Ya es instalable a través de la URL de git. Crear un tema solo ayudará a la gente a encontrarlo más fácilmente.

1 me gusta

Pregunta ligeramente diferente. Quiero añadir un enlace que se abra en una ventana diferente a la descripción de un campo de usuario en la página de registro. Esa página no reconoce los enlaces envueltos en [esto](formato).

Quiero que los usuarios acepten que han leído nuestros valores comunitarios antes de unirse, y tener un enlace allí ayudará si se los han perdido. Ahora mismo, solo les he dicho que copien/peguen el enlace completo en su navegador.

¿Cómo funciona esto con Discourse 3.2 y Ember 5?

He actualizado la versión: \u003cscript type=\"1.13.0\"\u003e y he cambiado api.registerConnectorClass por api.renderInOutlet como se sugiere aquí pero obtengo en la consola del navegador: [THEME 27] Error: klass is not an Ember component

He cambiado property por computed como se sugiere aquí pero obtengo en la consola del navegador: [THEME 27] ReferenceError: computed is not defined

Oh, olvidé la importación, así que agregué la import EmberObject, { computed } from '@ember/object'; faltante después de la etiqueta de script de apertura, pero eso resulta en 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 me gusta

Hmm sí, las técnicas sugeridas en el OP están bastante desactualizadas (lo cual tiene sentido, dado que fue escrito en 2016 :sweat_smile:).

Hoy en día, este tipo de cosas deberían empaquetarse en un repositorio de git y publicarse como un Theme component para que la gente lo instale y configure a través de la configuración.

2 Me gusta

Sin embargo, volví a trabajar en el TC de @wilson29thid aquí, aunque todavía tiene una advertencia de depreciación que necesito solucionar en algún momento.

1 me gusta

Esta funcionalidad de la OP ahora se puede encontrar en un nuevo minicomponente: