Encodage d'URL dans les sorties de plugin

J’essaie d’ajouter un bouton de partage LinkedIn aux badges d’une communauté hébergée par Discourse dont je suis administrateur.

À cette fin, j’essaie d’utiliser ce Plugin Outlet. J’ai inclus le code suivant dans la section head d’un thème.

<script type='text/x-handlebars' data-template-name='/connectors/badge-contents-top/linkedin-button'>
  <a href="https://www.linkedin.com/profile/add?certUrl=https://community.my_community.io{{@outletArgs.url}}" class="linkedin-share-button">
    <img src="https://download.linkedin.com/desktop/add2profile/buttons/en_US.png " alt="LinkedIn Add to Profile button">
  </a>
</script>

Veuillez noter l’attribut href : https://www.linkedin.com/profile/add?certUrl=https://community.my_community.io/{{@outletArgs.url}}.
La valeur de @outletArgs.url ressemble à https://community.my_community.io/badges/<badge_id>/<badge_name>?username=<username>. Je veux me concentrer sur la partie username=<username>.

L’URL n’est pas encodée, le signe égal est passé littéralement, donc lorsque le navigateur traite https://www.linkedin.com/profile/add?certUrl=https://community.my_community.io/https://community.my_community.io/badges/<badge_id>/<badge_name>?username=<username>, il ignore =<username>.

Comment puis-je encoder l’URL ici ?

J’ai géré cela en utilisant Discourse Theme CLI de la manière suivante :

  • Créé un nouveau thème et en ai fait un composant (exécuté discourse_theme new et suivi les instructions).

  • Dans javascripts/discourse/connectors/badge-contents-top, créé un fichier JavaScript avec un contenu proche de. . .

    import Component from "@glimmer/component";
    import { inject as service } from "@ember/service";
    
    export default class LinkedinButton extends Component {
      @service siteSettings;
    
      get encodedUrl() {
        return encodeURIComponent(this.args.outletArgs.url);
      }
    }
    
  • Dans le même répertoire que ci-dessus, créé un fichier Handlebars qui contient à peu près le HTML interne de la balise script dans la question.

    • J’ai donné à ce fichier et au fichier précédent le même nom, à part leur extension, c’est-à-dire, pour ce que cela vaut.
1 « J'aime »

Je ne vois pas d’application à cela ? Est-ce redondant ?

Oui ! Merci de l’avoir signalé.

1 « J'aime »

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.