Comment faire un drag and drop avec joomla sur un Mobile

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

  • Comment faire un drag and drop avec joomla sur un Mobile

    Bonjour
    J'ai réalisé une page joomla pour une expo qui aura lieu en janvier, le but est un petit jeu de glisser déposer avec un buzz pour la réponse.
    Cela fonctionne très bien sur un PC Mais sur un mobile le drag et drop ne fonctionne pas ?
    Je ne sais pas ou chercher ? (J'ai installé une extension MobileKIt pour joomla mais cela ne change rien)
    Voila la page : http://www.yc06.fr/j3.3.6/index.php?option=com_content&view=article&id=32&It emid=204&jmk_redirect=1
    La page sera accessible avec un QRCode dans l'expo donc forcement avec des Mobiles
    Merci de votre aide
    bonne journée



  • #2
    Bonjour,

    Quelle extension utilisez-vous pour que cela fonctionne sur PC ?

    MobileKit est un plugin (date de 2014) juste pour détecter si vous êtes sur mobile ou non, il modifie pas le comportement de votre site.

    J'ai trouvé plusieurs discussions sur le sujet drag&drop mobile (qui date aussi un peu) : https://stackoverflow.com/questions/...rop-for-mobile , https://stackoverflow.com/questions/...mobile-devices la réponse standard est "Most mobile devices do not listen to the drag events"..." I would recommend using the touchmove event..."

    Il existe plusieurs librairies qui sont compatibles PC/Mobile : https://github.com/SortableJS/Sortable semble correspondre à votre demande. Il faut juste en faire un plugin.

    Pascal
    If anything can go wrong, it will...
    If I can help, I will ..https://conseilgouz.com

    Commentaire


    • #3
      Merci pour votre réponse
      Sur le PC j'ai juste codé dans un article en HTML5 et java.
      Et avec la souri le rendu correspond, mais sur un mobile impossible de sélectionner les mots avec l’écran tactile pour les faire glisser !
      de plus je ne vois pas comment je peux faire un plugin ?
      J'utilise ceux que joomla fourni, je suis incapable d'en faire un !
      Si cela peut vous aider, voila le code ecrit dans l'article joomla

      <script>

      var ch=5;
      var i=parseInt(ch);

      function dragstart_handler(ev) {
      // On ajoute l'identifiant de l'élément cible à l'objet de transfert
      ev.dataTransfer.setData("application/my-app", ev.target.id);
      ev.dataTransfer.dropEffect = "move";
      }

      function dragover_handler(ev) {
      ev.preventDefault();
      ev.dataTransfer.dropEffect = "move"
      }

      function drop_handler(ev) {
      ev.preventDefault();
      // On obtient l'identifiant de la cible et on ajoute l'élément déplacé au DOM de la cible
      //var data = ev.dataTransfer.getData("application/my-app");
      //ev.target.appendChild(document.getElementById(data ));

      var chaine = "<div id="targetB" ondragover="dragover_handler(event)" ondrop="drop_handler(event)"><img src="images/TEST/Buzz.png" width="250" height="350" alt="Buzz" style="float: right;" /></div>"

      var element=document.getElementById("targetB");
      document.getElementById("targetB").innerHTML=chain e;

      var audioElement = new Audio('/j3.3.6/images/TEST/buzz.mp3');
      audioElement.play();


      i=i-1;

      if (i < 1)
      {
      var cfinal="A votre avis, &ccedil;a ne marche pas ou les comp&eacute;tences n&rsquo;ont pas de sexe ?";
      var element2=document.getElementById("Cpt");
      document.getElementById("Cpt").innerHTML=cfinal;
      ce06();
      } else {
      setTimeout(buzzablanc,1000);
      var element1=document.getElementById("Cpt");
      var chaine1 = "Il vous reste ";
      var chaine2 = i.toString() ;
      var chaine3 = " essais";
      var chaine4 = chaine1+chaine2+chaine3;
      document.getElementById("Cpt").innerHTML=chaine4;

      }
      }

      function buzzablanc() {
      var chaine2 = "<div id="targetB" ondragover="dragover_handler(event)" ondrop="drop_handler(event)"><img src="images/TEST/Buzz0.png" width="250" height="350" alt="Essaye Encore" style="float: right;" /></div>";
      var element=document.getElementById("targetB");
      document.getElementById("targetB").innerHTML=chain e2;

      }

      function ce06() {
      var chaine = "<div id="targetB" ondragover="dragover_handler(event)" ondrop="drop_handler(event)"><img src="images/LogoCE06.JPG" width="250" height="350" alt="FIN" style="float: right;" /></div>";
      var element=document.getElementById("targetB");
      document.getElementById("targetB").innerHTML=chain e;

      }


      </script>

      <html manifest="manifest.mf">

      <html lang="fr">
      <head>
      <meta charset="utf-8"/>
      <style>

      table {
      background:white;
      border-collapse:collapse;
      width:100%;
      }
      th {
      color:black;
      }
      th, td {
      text-align:center;
      padding:5px;
      //border-right:1px solid black;
      }
      th:last-child, td:last-child {
      border-right:0;
      }
      tbody tr:nth-child(odd) {
      background:white;
      }
      tbody tr:nth-child(even) {
      background:white;
      }
      @media screen and (max-width:800px) {
      table {
      display:flex;
      }
      thead {
      width:20%;
      min-width:90px;
      }
      tbody {
      flex:1;
      }
      tr {
      display:flex;
      flex-direction:column;
      }
      th, td {
      text-align:left;
      border-right:0;
      border-bottom:1px solid black;
      }
      tr:last-child td:last-child {
      border-bottom:0;
      }


      }
      @media screen and (max-width:461px) {
      tbody tr:not(:first-child) td::before {
      margin-left:-95px;
      }
      }
      </style>
      </head>

      <body>


      <table summary="Tableau" cellpadding="0" cellspacing="0">
      <caption style="text-align: center;">
      <span style="color: #ff6600; font-size: 16pt;">Faites glisser la comp&eacute;tence vers l'image associ&eacute;e</span>
      </caption>
      <tr>

      <th id="p1" ondragstart="dragstart_handler(event)" draggable="true">Diplomatie </th>
      <th id="p1" ondragstart="dragstart_handler(event)" draggable="true">Empathie </th>
      <th id="p1" ondragstart="dragstart_handler(event)" draggable="true">Charisme </th>
      <th id="p1" ondragstart="dragstart_handler(event)" draggable="true">Leadership </th>
      </tr>


      <tr>
      <th id="p1" ondragstart="dragstart_handler(event)" draggable="true">Bienveillance </th>
      <th id="p1" ondragstart="dragstart_handler(event)" draggable="true">Réactivité </th>
      <th id="p1" ondragstart="dragstart_handler(event)" draggable="true">Prise de d&eacute;cision </th>
      <th id="p1" ondragstart="dragstart_handler(event)" draggable="true">Emotivit&eacute; </th>
      </tr>
      <tr>
      <th id="p1" ondragstart="dragstart_handler(event)" draggable="true">Multi-t&acirc;che </th>
      <th id="p1" ondragstart="dragstart_handler(event)" draggable="true">Fiablilité </th>
      <th id="p1" ondragstart="dragstart_handler(event)" draggable="true">Patience </th>
      <th id="p1" ondragstart="dragstart_handler(event)" draggable="true">Adaptation </th>
      </tr>
      <tr>
      <th id="p1" ondragstart="dragstart_handler(event)" draggable="true">Rigueur </th>
      <th id="p1" ondragstart="dragstart_handler(event)" draggable="true">Curiosité </th>
      <th id="p1" ondragstart="dragstart_handler(event)" draggable="true">Persévérence </th>
      <th id="p1" ondragstart="dragstart_handler(event)" draggable="true">Intuition </th>
      </tr>

      </table>


      <table>
      <tr>
      <th id="targetF" ondragover="dragover_handler(event)" ondrop="drop_handler(event)"><img src="images/TEST/femme.jpg" width="250" height="350" alt="femme" style="float: right;" /></th>
      <th id="targetB" ><img src="images/LogoCE06.JPG" width="250" height="350" alt="" style="float: right;" /></th>
      <th id="targetH" ondragover="dragover_handler(event)" ondrop="drop_handler(event)" ><img src="images/TEST/homme.jpg" width="250" height="350" alt="" style="float: right;" /></div>
      </tr>
      </table>

      <br>
      <div id="Cpt" style="text-align: center; color: #ff6600; font-size: 20pt;"> </div>
      <br><br><br><br><br>

      </body>
      </html>




      bonne journée

      Commentaire


      • #4
        Dans votre exemple, vous gérez drag&drop qui ne sont pas gérés (ou mal) par les mobiles.

        J'ai trouvé un complément à ajouter pour convertir les événements "touch" en événements drag&drop. Ci-après le code à ajouter à votre code actuel.

        Code PHP:
        /**   * Lightweight script to convert touch handlers to mouse handlers  
        * credit: http://stackoverflow.com/a/6141093   */  
        (function() {  
         function 
        touchHandler(e) {  
         var 
        touches e.changedTouches;   var first touches[0];   var type "";      
         switch(
        e.type) {  
           case 
        "touchstart":  
                  
        type "mousedown";  
                 break;  
           case 
        "touchmove":  
                  
        type="mousemove";  
                  break;  
            case 
        "touchend":  
                  
        type="mouseup";  
                  break;   default:  
             return;  
            }        
            var 
        simulatedEvent document.createEvent("MouseEvent");  
            
        simulatedEvent.initMouseEvent(typetruetruewindow1first.screenXfirst.screenYfirst.clientXfirst.clientYfalsefalsefalsefalse0null);
            
        first.target.dispatchEvent(simulatedEvent);  
            
        e.preventDefault();  
         }      
         function 
        init() {  
            
        document.addEventListener("touchstart"touchHandlertrue);  
            
        document.addEventListener("touchmove"touchHandlertrue);  
            
        document.addEventListener("touchend"touchHandlertrue);  
            
        document.addEventListener("touchcancel"touchHandlertrue);  
         }      
        init();  
        })(); 
        Je n'ai pas essayé mais cela devrait faire l'affaire.

        Pascal
        Dernière édition par pmleconte à 09/11/2019, 14h50
        If anything can go wrong, it will...
        If I can help, I will ..https://conseilgouz.com

        Commentaire


        • #5
          Bonjour
          Merci pour votre aide
          Mais Hélas cela ne change Rien

          bonne journée


          Commentaire

          Annonce

          Réduire
          1 sur 2 < >

          C'est [Réglé] et on n'en parle plus ?

          A quoi ça sert ?
          La mention [Réglé] permet aux visiteurs d'identifier rapidement les messages qui ont trouvé une solution.

          Merci donc d'utiliser cette fonctionnalité afin de faciliter la navigation et la recherche d'informations de tous sur le forum.

          Si vous deviez oublier de porter cette mention, nous nous permettrons de le faire à votre place... mais seulement une fois
          Comment ajouter la mention [Réglé] à votre discussion ?
          1 - Aller sur votre discussion et éditer votre premier message :


          2 - Cliquer sur la liste déroulante Préfixe.

          3 - Choisir le préfixe [Réglé].


          4 - Et voilà… votre discussion est désormais identifiée comme réglée.

          2 sur 2 < >

          Assistance au forum - Outil de publication d'infos de votre site

          Compatibilité: PHP 4.1,PHP4, 5, 6DEV MySQL 3.2 - 5.5 MySQLi from 4.1 ( @ >=PHP 4.4.9)

          Support Version de Joomla! : | J!3.0 | J!2.5.xx | J!1.7.xx | J!1.6.xx | J1.5.xx | J!1.0.xx |

          Version française (FR) D'autres versions sont disponibles depuis la version originale de FPA

          UTILISER À VOS PROPRES RISQUES :
          L'exactitude et l'exhaustivité de ce script ainsi que la documentation ne sont pas garanties et aucune responsabilité ne sera acceptée pour tout dommage, questions ou confusion provoquée par l'utilisation de ce script.

          Problèmes connus :
          FPA n'est actuellement pas compatible avec des sites Joomla qui ont eu leur fichier configuration.php déplacé en dehors du répertoire public_html.

          Installation :

          1. Téléchargez l'archive souhaitée : http://afuj.github.io/FPA/

          Archive zip : https://github.com/AFUJ/FPA/zipball/master

          2. Décompressez le fichier de package téléchargé sur votre propre ordinateur (à l'aide de WinZip ou d'un outil de décompression natif).

          3. Lisez le fichier LISEZMOI inclus pour toutes les notes de versions spécifiques.

          4. LIRE le fichier de documentation inclus pour obtenir des instructions d'utilisation détaillées.

          5. Téléchargez le script fpa-fr.php à la racine de votre site Joomla!. C'est l'endroit que vous avez installé Joomla et ce n'est pas la racine principale de votre serveur. Voir les exemples ci-dessous.

          6. Exécutez le script via votre navigateur en tapant: http:// www. votresite .com/ fpa-fr.php
          et remplacer www. votresite .com par votre nom de domaine


          Exemples:
          Joomla! est installé dans votre répertoire web et vous avez installé la version française du fichier FPA:
          Télécharger le script fpa-fr.php dans: /public_html/
          Pour executer le script: http://www..com/fpa-fr.php

          Joomla! est installé dans un sous-répertoire nommé "cms" et vous avez installé la version française du fichier FPA:
          Télécharger le script fpa-fr.php dans: /public_html/cms/
          Pour executer le script: http://www..com/cms/fpa-fr.php

          En raison de la nature très sensible de l'information affichée par le script FPA, il doit être retiré immédiatement du serveur après son utilisation.

          Pour supprimer le script de votre site, utilisez le lien de script de suppression fourni en haut de la page du script. Si le lien de suppression échoue pour supprimer le script, utilisez votre programme FTP pour le supprimer manuellement ou changer le nom une fois que le script a généré les données du site et le message publié sur le forum. Si le script est toujours présent sur le site, il peut être utilisé pour recueillir suffisamment d'informations pour pirater votre site. Le retrait du script empêche des étrangers de l'utiliser pour jeter un oeil à la façon dont votre site est structuré et de détecter les défauts qui peuvent être utilisé à vos dépends.
          Voir plus
          Voir moins

          Partenaire de l'association

          Réduire

          Hébergeur Web PlanetHoster
          Travaille ...
          X