Bouton de plugin editors-xtd

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] Bouton de plugin editors-xtd

    Bonjour,

    J'avais un bouton Commande qui me permettait de saisir le prix dans un article afin que le visiteur puisse passer la commande par mail.
    Ce plugin fonctionnait bien avec Joomla 3.9 mais ne fonctionne plus avec Joomla 4.
    Je recherche un peu d'aide pour le modifier.
    Fichier commande.xml
    Code HTML:
    <?xml version="1.0" encoding="utf-8"?>
    <extension version="3.4" type="plugin" method="upgrade" group="editors-xtd">
    <name>Commande</name>
    <author>Bill</author>
    <creationDate>December 2015</creationDate>
    <copyright>Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved.</copyright>
    <license>GNU General Public License version 2 or later; see LICENSE.txt</license>
    <authorEmail>bill@gate.fr</authorEmail>
    <authorUrl>www.thebigboss.fr</authorUrl>
    <version>1.0.0</version>
    <description>"Creates a Button which inserts price typed and link mailto commande includes article title subject" </description>
    <files>
    <filename plugin="commande">commande.php
    </filename>
    </files>
    </extension>


    Fichier commande.php
    Code PHP:
    <?php defined'_JEXEC' ) or die( 'Restricted access' );
    jimport'joomla.plugin.plugin' );
    class 
    plgButtonCommande extends JPlugin { function onDisplay($name) { // Récupére l'id de l'article courant $id = JRequest::getInt('id');// Get a db connection.
    $dbJFactory::getDbo(); //JFactory de l'objet JDatabase
    // Requête pour obtenir le titre de l'article en fonction de l'id
    $query'SELECT `title` FROM #__content WHERE `id`='.$id;
    $db->setQuery($query);
    $resultaddslashes($db->loadResult());
    if ((!isset(
    $result)) or ($result == ""))
    {
    echo 
    "Titre inconnu";
    $titre" ";
    } else {
    $tab2= array();
    $tab2str_split($result,1);
    $titreimplode($tab2);
    echo 
    $titre;
    }
    $titre JText::_($titretrue);
    $js " var titre = '$titre';
    //alert(titre); //test
    //boîte de saisie du prix, puis
    // insère le code dans la zone de l'éditeur
    function xtdCommandeClick(editor)
    {
    prix = prompt('Tapez le prix de l\'article [ex: 123,45 -sans euro-]');
    alert(prix); //test
    prix2 =
    '
    <p style="
    text-align:leftcolor:#FF0066; font-weight:bold; font-size:1.3em;">
    <em>&nbsp;&nbsp;' + prix + ' &euro;&nbsp;ht</em>
    </
    p>
    ';
    txt = '
    <p style="text-align:left;">
    <
    a href="mailto:bill@gate.fr?subject=Commande: '+titre+' - '+prix+' &euro; ht">
    <
    img src="images/design/commande.gif" alt="Commande" title="Commande par mail" />
    </
    a>
    </
    p>';
    if (!txt) return;
    jInsertEditorText(prix2+txt, editor);
    }";
    $doc = JFactory::getDocument();
    $doc->addScriptDeclaration($js);
    $button = new JObject;
    $button->modal = false;
    $button->class = '
    btn';
    $button->link = '
    #';
    $button->text JText::_('Commande');
    $button->name 'smiley-2';
    //code Js appelé lors du clic
    $button->onclick 'xtdCommandeClick(\''.$name.'\');
    return false;'
    ;
    return 
    $button; } }
    Dernière édition par jacfev à 16/12/2021, 14h57

  • #2
    Bonjour,

    Tu devrais proposer le plugin prêt à être installé, quitte à en changer les paramètres de mail.
    Il me semble difficile d'analyser ton code, mais à voir tout ce qui est en rouge, j'ai l'impression que des guillemets simples ou doubles ne sont pas à la bonne place.
    Et au début de ton code, tu ne récupères plus l'ID faute d'avoir remplacé JRequest.
    "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
    MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

    Commentaire


    • #3
      OK RobertG,

      Voici le code complet du fichier PHP

      Code PHP:
      <?php // OK fonctionne
      // no direct access
      defined'_JEXEC' ) or die( 'Restricted access' );
      jimport'joomla.plugin.plugin' );
      class 
      plgButtonCommande extends JPlugin
      {
      function 
      onDisplay($name)
      {
      // Récupére l'id de l'article courant
      //$id = $_GET['id'];
      $id JRequest::getInt('id');
      // Get a db connection.
      $dbJFactory::getDbo(); //JFactory de l'objet JDatabase
      // Requête pour obtenir le titre de l'article en fonction de l'id
      $query'SELECT `title` FROM #__content WHERE `id`='.$id;
      //$query= 'SELECT title FROM #__content WHERE id='.$id;
      $db->setQuery($query);
      $resultaddslashes($db->loadResult());
      if ((!isset(
      $result)) or ($result == ""))
      {
      echo 
      "Titre inconnu";
      $titre" ";
      } else {
      //echo $result.'<br />';
      $tab= array();
      $tab2= array();
      $tabstr_split($result,1);
      /*
      echo "AVANT ";
      echo '<br />'.count($tab). 'El&eacute;ments'.'<br />';
      var_dump($tab);
      */
      //on refait un tableau de valeurs
      //foreach ($tab as $cle => $valeur)
      $i0;
      foreach (
      $tab as $valeur)
      {
      //if ($valeur == "à") {
      if ($tab[$i] == "à") {
      $tab[$i]= "a";
      $tab2[$i]= "a";
      } elseif (
      $tab[$i] == "è") {
      $tab2[$i]= "e";
      } elseif (
      $tab[$i] == "î") {
      $tab2[$i]= "i";
      } elseif ((
      $tab[$i] == "°") OR ($tab[$i] == "º") OR ($tab[$i] == "°") OR ($tab[$i] == "&deg;")) {
      $tab2[$i-1]= "";
      $tab2[$i]= "o";
      } elseif ((
      $tab[$i] == '"') && ($tab[$i-1] == "\")) {
      $tab2[$i-1]= NULL;
      $tab2[$i]= "";
      } elseif ((
      $tab[$i] == "'") && ($tab[$i-1] == "\")) {
      $tab2[$i-1]= NULL;
      $tab2[$i]= " ";
      } elseif ($tab[$i] == '"') {
      $tab2[$i]= "";
      } else {
      //
      $tab2[$i]$valeur;
      $tab2[$i]$tab[$i];
      }
      $i++;
      }
      /*
      echo "
      APR&Egrave;S";
      echo '<br />'.count(
      $tab2). 'El&eacute;ments'.'<br />';
      var_dump(
      $tab2);
      */
      $titre= implode($tab2);
      echo 
      $titre;
      }
      $titre = JText::_($titre, true); //en +
      $js = "
      var titre '$titre';
      //alert(titre);
      //boîte de saisie du prix, puis
      // insère le code dans la zone de l'éditeur
      function xtdCommandeClick(editor)
      {
      prix prompt('Tapez le prix de l\'article [ex: 123,45 -sans euro-]');
      //alert(prix);
      prix2 '<p style="text-align:left; color:#FF0066; font-weight:bold; font-size:1.3em;"><em>&nbsp;&nbsp;' prix ' &euro;&nbsp;ht</em></p>';
      txt '<p style="text-align:left;"><a href="mailto:cde@bill.fr?subject=Commande: '+titre+' - '+prix+' &euro; ht"><img src="images/design/commande.gif" alt="Commande" title="Commande par mail" /></a></p>';
      if (!
      txt) return;
      jInsertEditorText(prix2+txteditor);
      }
      ";
      $doc = JFactory::getDocument();
      $doc->addScriptDeclaration($js);
      //
      $doc->addScriptDeclaration('var txt=\''.JText::_('KEY',true).'\';');
      $button = new JObject;
      $button->modal = false;
      $button->class = 'btn';
      $button->link = '#';
      $button->text = JText::_('Commande');
      $button->name = 'smiley-2';
      //code Js appelé lors du clic
      $button->onclick = 'xtdCommandeClick(\''.$name.'\'); return false;';
      return 
      $button;
      }
      }

      Commentaire


      • #4
        Tu as quelques conseils de modification de code sur le site de Roland : https://ordi-genie.com/joomla/develo...-vers-joomla-4
        "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
        MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

        Commentaire


        • #5
          Merci encore RobertG, bonne piste, je regarde si je peux m'en sortir avec ça

          Commentaire

          Annonce

          Réduire
          Aucune annonce pour le moment.

          Partenaire de l'association

          Réduire

          Hébergeur Web PlanetHoster
          Travaille ...
          X