Browse Source

le javascript séparément

svn/root/trunk
Rainer 1 year ago
parent
commit
9fe3109829
3 changed files with 102 additions and 0 deletions
  1. 1
    0
      .gitattributes
  2. 1
    0
      .gitignore
  3. 100
    0
      javascript/gestion_listes_prix_objets.js.html

+ 1
- 0
.gitattributes View File

@@ -7,6 +7,7 @@ formulaires/configurer_prix_objets.html -text
7 7
 formulaires/prix.html -text
8 8
 formulaires/prix.php -text
9 9
 inc/prix_objets.php -text
10
+javascript/gestion_listes_prix_objets.js.html -text
10 11
 lang/paquet-prix_objets.xml -text
11 12
 lang/paquet-prix_objets_fr.php -text
12 13
 lang/paquet-prix_objets_pt_br.php -text

+ 1
- 0
.gitignore View File

@@ -2,3 +2,4 @@
2 2
 /.buildpath
3 3
 .settings*
4 4
 !inc/.settings*
5
+!javascript/.settings*

+ 100
- 0
javascript/gestion_listes_prix_objets.js.html View File

@@ -0,0 +1,100 @@
1
+#HTTP_HEADER{Content-Type: text/javascript; charset=#CHARSET}
2
+[(#REM)<script>/*
3
+
4
+/* Gestion du tri des listes de documents et de leur enregistrement
5
+	- Gestion du tri par glisser-déposer
6
+
7
+
8
+	Markup :
9
+	- Conteneur principal : .portfolios
10
+	- Listes              : .liste_items.documents
11
+	- Listes ordonnables  : .liste_items.documents.ordonner_rang_lien\[data-lien\]
12
+
13
+*/]
14
+
15
+function ordonner_listes_prix_objets() {
16
+	if ($.fn.sortable) {
17
+		$(".liste-objets-lies.prix_objets .ordonner_rang_lien[data-lien]").find('.sortable').each(function () {
18
+			// détruire / recréer le sortable à chaque appel ajax
19
+			if ($(this).has('.ui-sortable').length) {
20
+				$(this).sortable('destroy');
21
+			}
22
+			// pas de tri possible s'il n'y a qu'un seul élément.
23
+			if ($(this).find('tr').length < 2) {
24
+				$(this).find('.deplacer-document').hide();
25
+				return true; // continue
26
+			} else {
27
+				$(this).find('.deplacer-document').show();
28
+			}
29
+			$(this).sortable({
30
+				/*axis: "y",*/ /* minidoc a un affichage en case */
31
+				placeholder: ".ui-state-highlight",
32
+				cursor: "move",
33
+				containment: "parent",
34
+				tolerance: "pointer",
35
+				update: function (event, ui) {
36
+					var items = $(this);
37
+					var item = ui.item;
38
+					var liste = items.sortable('toArray');
39
+					var ordre = [];
40
+
41
+					$.each(liste, function(i, id) {
42
+						if (id) {
43
+							ordre.push( id.substring(4) ); // prix123 => 123
44
+						}
45
+					});
46
+
47
+					// l'objet lié est indiqué dans l'attribut data-lien sur la liste
48
+					var lien = items.parents(".liste_items.prix_objets").data("lien").split("/");
49
+					var objet_lie = lien[0];
50
+					var id_objet_lie = lien[1];
51
+					var action = '[(#VAL{ordonner_prix_objets}|generer_url_action{"", 1})]';
52
+					var params = {
53
+						objet_source: 'prix_objet',
54
+						objet_lie: objet_lie,
55
+						id_objet_lie: id_objet_lie,
56
+						ordre: ordre,
57
+					};
58
+
59
+					$.ajax({
60
+						url: action,
61
+						data: params,
62
+						dataType: 'json',
63
+						cache: false,
64
+					}).done(function(data) {
65
+
66
+						var couleur_origine = item.css('background-color');
67
+						var couleur_erreur = $("<div class='remove'></div>").css('background-color');
68
+						var couleur_succes = $("<div class='append'></div>").css('background-color');
69
+
70
+						if (data.errors.length) {
71
+							items.sortable('cancel');
72
+							item.css({backgroundColor: couleur_erreur}).animate({backgroundColor: couleur_origine}, 'normal', function(){
73
+								item.css({backgroundColor: ''});
74
+							});
75
+						} else {
76
+							item.css({backgroundColor: couleur_succes}).animate({backgroundColor: couleur_origine}, 'normal', function(){
77
+								item.css({backgroundColor: ''});
78
+							});
79
+							items.parent().find('.tout_desordonner').show();
80
+						}
81
+					});
82
+				}
83
+			});
84
+			// bouton "désordonner"
85
+			if ($(this).parent().find('.deplacer-document[data-rang!=0]').length) {
86
+				$(this).parent().find('.tout_desordonner').show();
87
+			} else {
88
+				$(this).parent().find('.tout_desordonner').hide();
89
+			}
90
+		});
91
+	}
92
+}
93
+
94
+/* Initialisation et relance en cas de chargement ajax */
95
+if (window.jQuery) {
96
+	jQuery(function($){
97
+		ordonner_listes_prix_objets();
98
+		onAjaxLoad(ordonner_listes_prix_objets);
99
+	});
100
+}

Loading…
Cancel
Save