Partage
  • Partager sur Facebook
  • Partager sur Twitter

Intégrer Image dans Drag & Drop

    15 novembre 2019 à 10:57:41

    Bonjour,

    Je gère une galerie de photos avec un fichier drag & drop qui me permet de modifier le rank de mes photos

    Ma view

        <h1>Drag and drop </h1>
    
        <div class="shoppingList">
            <div class="reponse"></div>
            <ul>
    <?php
                foreach($images as $image): 
                    echo '<li id="element_'.$image->id.'">'.$image->reference.' </li>';
                endforeach; ?>
    ?>
            </ul>
        </div>

    Mon JS

    (function($){
    	$.fn.shoppingList = function(options) {
    
    		// Options par defaut
    		var defaults = {
    		};
    				
    		var options = $.extend(defaults, options);
    		
    		this.each(function(){
    				
    			var obj = $(this);
    			
    			// Empêcher la sélection des éléments à la souris (meilleure gestion du drag & drop)
    			var _preventDefault = function(evt) { evt.preventDefault(); };
    			$("li").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault);
    
    			// Initialisation du composant "sortable"
    			$(obj).sortable({
    				axis: "y", // Le sortable ne s'applique que sur l'axe vertical
    				containment: ".shoppingList", // Le drag ne peut sortir de l'élément qui contient la liste
    				handle: ".item", /* Le drag ne peut se faire que sur l'élément .item
    				 (le texte) VOIR TOUT EN DESSOUS*/
    				distance: 10, /* Le drag ne commence qu'à partir de 10px de distance
    				 de l'élément*/
    				// Evenement appelé lorsque l'élément est relaché
    				stop: function(event, ui){
    					// Pour chaque item de liste
    					$(obj).find("li").each(function(){
    						// On actualise sa position
    						index = parseInt($(this).index()+1);
    						// On la met à jour dans la page
    						$(this).find(".count").text(index);
    					});
    				},
    				update: function()
    				{
    					// On prépare la variable contenant les paramètres
    					var order = $(this).sortable("serialize")+'&action=updateListeOrder';
    					/* $(this).sortable("serialize") sera le paramètre "element",
    					 un tableau contenant les différents "id"
    					 action sera le paramètre qui permet éventuellement par la suite
    					  de gérer d'autres scripts de mise à jour*/
    			 
    					// Ensuite on appelle notre page updateListe.php en lui passant en paramètre la variable order
    					$.post("index.php?p=admin.images.dragdrop_order", order, function(theResponse)
    					
    					{
    						 /*On affiche dans l'élément portant la classe "reponse"
    						 le résultat du script de mise à jour*/
    						$(".reponse").html(theResponse).fadeIn("fast");
    						setTimeout(function()
    						{
    							$(".reponse").fadeOut("slow");
    						}, 2000);
    					});
    				}
    			});
    
    			// Pour chaque élément trouvé dans la liste de départ
    			$(obj).find("li").each(function(){
    				// On ajoute les contrôles
    				addControls($(this));
    			});
    			
    			/*
    			* Fonction qui ajoute les contrôles aux items
    			* @Paramètres
    			*  - elt: élément courant (liste courante)
    			*
    			* @Return void
    			*/
    			
    			function addControls(elt)
    			{
    				// On ajoute en premier l'élément textuel
    				$(elt).html("<span class='item'>"+$(elt).text()+"</item>");
    				// Puis l'élément de position
    				$(elt).prepend('<span class="count">'+parseInt($(elt).index()+1)+'</span>');
    
    			}
    		});
    		// On continue le chainage JQuery
    		return this;
    	};
    })(jQuery);

    Tout marche bien sans problème mais pour plus de visibilité je voudrai rajouter sur chaque ligne la photo concernée ainsi que son id

    Si je le fais au niveau de la view c'est caché j'ai l'impression par la fonction addControls

    Comment puis je faire

    Merci d'avance.

    Cordialement,

    Hervé




    • Partager sur Facebook
    • Partager sur Twitter

    Intégrer Image dans Drag & Drop

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown