Subversion Repositories eFlore/Applications.cel

Rev

Rev 3971 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3631 idir 1
function WidgetPhotoContact () {}
2
 
3
WidgetPhotoContact.prototype = new WidgetPhotoCommun();
4
 
5
WidgetPhotoContact.prototype.initTpl = function() {
6
	$( '#form-contact' ).validate({
7
		rules: {
8
			fc_sujet : 'required',
9
			fc_message : 'required',
10
			fc_utilisateur_courriel : {
11
				required : true,
12
				email : true
13
			}
14
		}
15
	});
16
};
17
 
18
WidgetPhotoContact.prototype.initEvts = function() {
19
	const lthis = this;
20
 
21
	$( '#form-contact' ).on( 'submit', function( event ) {
22
		event.preventDefault();
23
		lthis.envoyerCourriel();
24
	});
25
	this.initEvtsRetourPopupPhoto();
26
};
27
 
28
WidgetPhotoContact.prototype.initEvtsRetourPopupPhoto = function() {
29
	const lthis = this;
30
 
31
	$( '#fc_annuler.popup_url' ).on( 'click', function( event ) {
32
		event.preventDefault();
33
		lthis.retourPopupPhoto();
34
	});
35
	$( '#fc_annuler.popup_url' ).on( 'keydown', function( event ) {
36
		var isEnter = false;
37
 
38
		event = event || window.event;
39
		// event.keyCode déprécié, on tente d'abord event.key
40
		if ( 'key' in event) {
41
			isEnter = ( event.key === 'Enter' );
42
		} else {
43
			isEnter = ( event.keyCode === 13 );
44
		}
45
		if ( isEnter ) {
46
			lthis.retourPopupPhoto();
47
		}
48
	});
49
	$( 'body' ).on( 'keyup', function( event ) {
50
		if( $( '#fenetre-modal' ).hasClass( 'show' ) ) {
51
			var isEscape = false;
52
 
53
			event = event || window.event;
54
			// event.keyCode déprécié, on tente d'abord event.key
55
			if ( 'key' in event) {
56
				isEscape = ( event.key === 'Escape' || event.key === 'Esc' );
57
			} else {
58
				isEscape = ( event.keyCode === 27 );
59
			}
60
			if ( isEscape ) {
61
				lthis.retourPopupPhoto();
62
			}
63
		}
64
	});
65
};
66
 
67
WidgetPhotoContact.prototype.envoyerCourriel = function() {
68
	const lthis = this;
3823 idir 69
	var donnees = [];
3631 idir 70
 
71
	if ( $( '#form-contact' ).valid() ) {
72
		var destinataireId = $( '#fc_destinataire_id' ).val(),
73
			typeEnvoi      = $( '#fc_type_envoi' ).val(),
74
		// l'envoi aux non inscrits passe par le service intermédiaire du cel
75
		// qui va récupérer le courriel associé à l'image indiquée
3976 julien 76
			urlMessage     = 'https://api-test.tela-botanica.org/service:cel:celMessage/image/' + destinataireId,
3631 idir 77
			erreurMsg      = '';
78
 
79
		$.each( $( '#form-contact' ).serializeArray(), function ( index, champ ) {
80
			var cle = champ.name;
81
 
82
			cle = cle.replace( /^fc_/, '' );
83
			if ( cle === 'sujet' ) {
84
				champ.value += ' - Carnet en ligne - Tela Botanica';
85
			}
86
			if ( cle === 'message' ) {
87
				champ.value +=
88
					"\n--\n" +
89
					"Ce message vous est envoyé par l'intermédiaire du widget photo " +
90
					"du Carnet en Ligne du réseau Tela Botanica.\n" +
91
					"http://www.tela-botanica.org/widget:cel:photo";
92
			}
93
			donnees[index] = {
94
				'name' : cle,
95
				'value': champ.value
96
			};
97
		});
3976 julien 98
		console.log(donnees);
99
		var xhr = new XMLHttpRequest();
100
		xhr.open("POST", urlMessage, true);
101
		xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
102
 
103
		xhr.onreadystatechange = function () {
104
			if (xhr.readyState === 4) { // Request is complete
105
				// Remove existing messages
106
				document.querySelectorAll('.msg').forEach(function (msg) {
107
					msg.remove();
108
				});
109
 
110
				if (xhr.status >= 200 && xhr.status < 300) { // Request was successful
111
					var data = JSON.parse(xhr.responseText);
112
					document.getElementById('fc-zone-dialogue').innerHTML += '<pre class="msg info">' + data.message + '</pre>';
113
				} else { // Error during the request
114
					var erreurMsg = "Erreur Ajax :\ntype : " + xhr.statusText + ' ' + xhr.status + "\n";
115
					var reponse = JSON.parse(xhr.responseText);
116
 
117
					if (lthis.valOk(reponse)) {
118
						Object.values(reponse).forEach(function (valeur) {
119
							erreurMsg += valeur + "\n";
120
						});
121
					}
122
 
123
					var debugMsg = '';
124
					var debugInfos = JSON.parse(xhr.getResponseHeader("X-DebugJrest-Data"));
125
 
126
					if (lthis.valOk(debugInfos)) {
127
						Object.values(debugInfos).forEach(function (valeur) {
128
							debugMsg += valeur + "\n";
129
						});
130
					}
131
 
132
					document.getElementById('fc-zone-dialogue').innerHTML +=
133
						'<p class="msg">' +
134
						'Une erreur est survenue lors de la transmission de votre message.<br>' +
135
						'Vous pouvez signaler le disfonctionnement à ' +
136
						'<a ' +
137
						'href="mailto:cel-remarques@tela-botanica.org?' +
138
						'subject=Disfonctionnement du widget carto' +
139
						"&body=" + erreurMsg + "\nDébogage :\n" + debugMsg +
140
						'"' +
141
						'>' +
142
						'cel-remarques@tela-botanica.org' +
143
						'</a>' +
144
						'.' +
145
						'</p>';
146
				}
147
			}
148
		};
149
 
150
// Send the request with the donnees variable
151
		xhr.send(donnees);
152
 
153
		/*
3631 idir 154
		$.ajax({
155
			type       : "POST",
156
			cache      : false,
157
			url        : urlMessage,
158
			data       : donnees,
159
			beforeSend : function() {
160
				$( '.msg' ).remove();
161
			},
162
			success    : function( data ) {
163
				$( '#fc-zone-dialogue' ).append( '<pre class="msg info">' + data.message + '</pre>' );
164
			},
165
			error      : function( jqXHR, textStatus, errorThrown ) {
166
				erreurMsg += "Erreur Ajax :\ntype : " + textStatus + ' ' + errorThrown + "\n";
167
				reponse = jQuery.parseJSON( jqXHR.responseText );
168
				if ( lthis.valOk( reponse ) ) {
169
					$.each( reponse, function ( cle, valeur ) {
170
						erreurMsg += valeur + "\n";
171
					});
172
				}
173
			},
174
			complete   : function( jqXHR, textStatus ) {
175
				var debugMsg = '';
176
				if ( lthis.valOk( jqXHR.getResponseHeader( "X-DebugJrest-Data" ) ) ) {
177
					debugInfos = jQuery.parseJSON( jqXHR.getResponseHeader( "X-DebugJrest-Data" ) );
178
					if ( lthis.valOk( debugInfos ) ) {
179
						$.each( debugInfos, function ( cle, valeur ) {
180
							debugMsg += valeur + "\n";
181
						});
182
					}
183
				}
184
				if ( lthis.valOk( erreurMsg ) ) {
185
					$( '#fc-zone-dialogue' ).append(
186
						'<p class="msg">' +
187
							'Une erreur est survenue lors de la transmission de votre message.<br>' +
188
							'Vous pouvez signaler le disfonctionnement à '+
189
							'<a '+
190
								'href="mailto:cel-remarques@tela-botanica.org?'+
191
									'subject=Disfonctionnement du widget carto'+
192
									"&body=" + erreurMsg + "\nDébogage :\n" + debugMsg+
193
								'"' +
194
							'>'+
195
								'cel-remarques@tela-botanica.org'+
196
							'</a>'+
197
							'.'+
198
						'</p>'
199
					);
200
				}
201
			}
202
		});
3976 julien 203
		 */
3631 idir 204
	}
205
	return false;
206
};
207
 
208
 
209
WidgetPhotoContact.prototype.retourPopupPhoto = function() {
210
	const lthis = this;
211
	var popup_url = $( '#fc_annuler.popup_url' ).data( 'popup_url' );
212
	if ( lthis.valOk( popup_url ) ) {
213
		lthis.chargerContenuModale( popup_url );
214
	}
215
};