Changeset 79494 in spip-zone


Ignore:
Timestamp:
Dec 22, 2013, 12:20:16 PM (5 years ago)
Author:
bystrano@…
Message:

marche pas trop mal avec le glisser-déposer de jqueryui.sortable

Location:
_plugins_/saisie_liste/trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/saisie_liste/trunk/formulaires/tester_saisie_liste_objets.html

    r79488 r79494  
    1212                                     label, Titre de l'objet,
    1313                                     nom, titre_objet},
    14                            1, #ARRAY{saisie, textarea,
    15                                      nom, description_objet}}
     14                           1, #ARRAY{saisie, oui_non,
     15                                     nom, the_ou_cafe,
     16                                     label, Thé ou Café}}
    1617  })]
    1718
  • _plugins_/saisie_liste/trunk/formulaires/tester_saisie_liste_objets.php

    r79491 r79494  
    2121function formulaires_tester_saisie_liste_objets_traiter_dist () {
    2222
    23   var_dump(_request('liste_1'));
     23  /* var_dump(_request('liste_1')); */
    2424}
  • _plugins_/saisie_liste/trunk/js/jquery.saisie_liste_objets.js

    r79493 r79494  
     1(function () {
     2
     3    $.fn.saisieListeObjets = function( options ) {
     4
     5        var self = this;
     6
     7        this.nom = options.nom;
     8
     9        // numéroter les li's
     10        this.find('> li').each(function (index, li) {
     11            $(li).data('index_objet', index);
     12        });
     13
     14        this.sortable({
     15            containement: 'parent',
     16            cursor: 'move',
     17            placeholder: 'ui-state-highlight',
     18            update: function (event, ui) {
     19                $(this).find('input[name*="permutations"]')
     20                    .attr('value', (function () {
     21                        var permutations = [];
     22
     23                        self.find('> li').each(function (index, li) {
     24                            permutations.push($(li).data('index_objet'));
     25                         });
     26                        return permutations.join(',');
     27                    })());
     28            }
     29        });
     30
     31        return this;
     32    };
     33
     34})();
  • _plugins_/saisie_liste/trunk/saisie_liste_objets_fonctions.php

    r79491 r79494  
    11<?php
     2
     3function enumerer ($max) {
     4
     5  $resultat = array();
     6  for ($i=0; $i<=$max; $i++) {
     7    $resultat[] = $i;
     8  }
     9  return $resultat;
     10}
     11
     12function joindre ($tableau, $liant) {
     13
     14  return implode($liant, $tableau);
     15}
    216
    317function filtrer_valeurs_vides ($valeurs) {
     
    519  $valeurs_filtrees = array();
    620
    7   if (isset($valeurs['action'])) unset($valeurs['action']);
     21  unset($valeurs['action']);
     22  unset($valeurs['permutations']);
    823
    924  foreach ($valeurs as $objet) {
    1025    $objet_est_vide = TRUE;
    11     foreach ($objet as $valeur) {
    12       if ($valeur !== '') {
    13         $objet_est_vide = FALSE;
     26    if (is_array($objet)) {
     27      foreach ($objet as $valeur) {
     28        if ($valeur !== '') {
     29          $objet_est_vide = FALSE;
     30        }
    1431      }
    1532    }
     
    4966}
    5067
     68function permuter ($tableau, $permutations) {
     69
     70  $resultat = array();
     71  for ($i=0; $i<count($permutations); $i++) {
     72    $resultat[$i] = $tableau[$permutations[$i]];
     73  }
     74  return $resultat;
     75}
     76
    5177function traitements_liste_objets ($nom_saisie) {
    5278
    5379  $valeurs = _request($nom_saisie);
     80  $permutations = explode(',', $valeurs['permutations']);
    5481
    5582  if (array_key_exists('action', $valeurs)) {
     
    6491        case 'ajouter':
    6592          // on n'as rien à faire pour ajouter un objet, il suffit de
    66           // recharger le formulaire, et celui-ci affichera un objet vide
    67           // prêt à remplir à la fin de la liste.
     93          // recharger le formulaire
    6894          break;
    6995        case 'monter':
    70           $objet_au_dessus = $valeurs[$index_objet-1];
    71           $valeurs[$index_objet-1] = $valeurs[$index_objet];
    72           $valeurs[$index_objet]   = $objet_au_dessus;
     96          // il faut opérer sur la liste des permutations, parce ce qu'elle
     97          // correspond à l'ordre des objets affichés quand l'utilisateur
     98          // a submit.
     99          $index_objet = array_search($index_objet, $permutations);
     100          $objet_en_dessus = $permutations[$index_objet-1];
     101          $permutations[$index_objet-1] = $permutations[$index_objet];
     102          $permutations[$index_objet]   = $objet_au_dessus;
    73103          break;
    74104        case 'descendre':
    75           $objet_en_dessous = $valeurs[$index_objet+1];
    76           $valeurs[$index_objet+1] = $valeurs[$index_objet];
    77           $valeurs[$index_objet]   = $objet_en_dessous;
     105          $index_objet = array_search($index_objet, $permutations);
     106          $objet_en_dessous = $permutations[$index_objet+1];
     107          $permutations[$index_objet+1] = $permutations[$index_objet];
     108          $permutations[$index_objet]   = $objet_en_dessous;
    78109          break;
    79110      }
    80111    }
    81112
    82     set_request($nom_saisie, filtrer_valeurs_vides($valeurs));
     113    set_request($nom_saisie, filtrer_valeurs_vides(
     114                                 permuter($valeurs, $permutations)));
     115
    83116    return $erreurs = array($nom_saisie => $action . '-' . $index_objet . ' ok');
    84117  }
    85118
    86   set_request($nom_saisie, filtrer_valeurs_vides($valeurs));
     119  set_request($nom_saisie, filtrer_valeurs_vides(
     120                               permuter($valeurs, $permutations)));
    87121  return FALSE;
    88122}
  • _plugins_/saisie_liste/trunk/saisies/liste_objets.html

    r79490 r79494  
    22  <legend>#ENV{label}</legend>
    33
    4   <ul>
     4  <ul id="liste-objets-#ENV{nom}">
     5
     6    <input type="hidden" name="#ENV{nom}\[permutations\]"
     7           value="[(#ENV{valeur}|count|enumerer|joindre{','})]" />
     8
    59    <BOUCLE_liste_objets(DATA) {enum 0, #ENV{valeur}|count}>
    610      #SET{compteur_objets, #COMPTEUR_BOUCLE|moins{1}}
     
    4650    </BOUCLE_liste_objets>
    4751  </ul>
    48   <input type="submit" name="ajouter" value="ajouter objet" />
     52  <input type="submit" name="#ENV{nom}[action][ajouter]" value="Ajouter Objet" />
    4953</fieldset>
     54
     55<script type="text/javascript">
     56  $('#liste-objets-#ENV{nom}').saisieListeObjets({
     57    nom: '#ENV{nom}'
     58  });
     59</script>
Note: See TracChangeset for help on using the changeset viewer.