(Retiré) Utilisez une ID dans un champ utilisateur personnalisé pour faire le lien vers le profil externe d'un utilisateur

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 « J'aime »

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 « J'aime »

Existe-t-il un moyen de modifier les champs de profil utilisateur existants plutôt que d’en ajouter de nouveaux ? De sorte que la valeur du champ Twitter existant puisse être modifiée pour contenir une balise d’ancrage.

Le message principal qui nous permet d’ajouter de nouveaux champs de profil cliquables à l’aide de connecteurs, de poignées d’outlets Handlebars, etc., les « ajoute », et j’ai donc dû masquer les champs de profil existants.
Par exemple, je pouvais ajouter un champ Twitter cliquable et donc masquer le champ Twitter existant.
Maintenant, le nouveau champ Twitter ajouté se trouve dans un div séparé plutôt que d’appartenir au même div Ember préexistant, ce qui entraîne des problèmes de CSS étranges.

L’utilisation de /connectors/user-profile-public-fields/Twitter au lieu de /connectors/user-profile-primary/ aiderait-elle ici ?

C’est très sympa. Je l’ai bifurqué et j’ai essayé de le rendre un peu plus général en tant que composant de thème, sans les éléments spécifiques à Namati. J’espère que cela ne vous dérange pas !

J’ai également ajouté un message séparé pour faciliter sa recherche par les autres :

2 « J'aime »

Salut à tous, je voulais juste partager que j’ai créé une version plugin de ceci. Elle permet simplement de spécifier quel champ utilisateur convertir en lien, et—optionnellement—un préfixe (par exemple https://mysite.com/users/). J’ai pensé à partager cela au cas où quelqu’un préférerait installer un composant de thème plutôt que de modifier le code. Il est basé sur le code du message original de ce fil.

En passant, pour mon cas d’usage particulier, je ne souhaite pas que n’importe quel utilisateur puisse le modifier ; je prévois plutôt de le mettre à jour via l’API Discourse. Dans ce cas, un « champ personnalisé » serait-il préférable à un « champ utilisateur » ? Je vois les deux dans l’API, mais custom_fields sont vides.

7 « J'aime »

@wilson29thid accepterais-tu de créer un sujet de #thème pour ce composant ? Ce serait formidable d’avoir cela comme composant de thème installable plutôt que de demander aux gens de copier/coller le code à chaque fois.

5 « J'aime »

Bien sûr - la création d’un sujet ici avec cette balise le rend-elle installable ?

1 « J'aime »

Il est déjà installable via l’URL git. La création d’un sujet aidera simplement les gens à le trouver plus facilement.

1 « J'aime »

Question légèrement différente. Je souhaite ajouter un lien qui s’ouvre dans une nouvelle fenêtre dans la description d’un champ utilisateur sur la page d’inscription. Cette page ne reconnaît pas les liens enveloppés dans [ceci](format).

Je veux que les utilisateurs acceptent avoir lu nos valeurs communautaires avant de s’inscrire, et avoir un lien ici les aidera s’ils les ont manquées. Pour l’instant, je leur ai juste dit de copier/coller le lien complet dans leur navigateur.

Comment cela fonctionne-t-il avec Discourse 3.2 et Ember 5 ?

J’ai mis à jour la version : \u003cscript type=\"text/discourse-plugin\" version=\"1.13.0\"\u003e et j’ai remplacé api.registerConnectorClass par api.renderInOutlet comme suggéré ici mais j’obtiens dans la console du navigateur : [THEME 27] Error: klass is not an Ember component

J’ai remplacé property par computed comme suggéré ici mais j’obtiens dans la console du navigateur : [THEME 27] ReferenceError: computed is not defined

Oh, j’ai oublié l’importation, j’ai donc ajouté le import EmberObject, { computed } from '@ember/object'; manquant après la balise script d’ouverture, mais cela entraîne une SyntaxError : « /discourse/theme-27/discourse/initializers/theme-field-140-common-html-script-3 : ‘import’ et ‘export’ ne peuvent apparaître qu’au niveau supérieur.

1 « J'aime »

Hmm ouais, les techniques suggérées dans le post original sont assez dépassées (ce qui est logique, étant donné qu’il a été écrit en 2016 :sweat_smile:).

De nos jours, ce genre de chose devrait être empaqueté dans un dépôt git et publié en tant que Theme component pour que les gens puissent l’installer et le configurer via les paramètres.

2 « J'aime »

J’ai fini par retravailler le TC de @wilson29thid ici bien qu’il ait toujours un avertissement de dépréciation que je dois corriger à un moment donné.

1 « J'aime »

Cette fonctionnalité de l’OP se trouve désormais dans un nouveau mini composant :