Subversion Repositories eFlore/Applications.eflore-consultation

Compare Revisions

Ignore whitespace Rev 527 → Rev 528

/trunk/modules/popup_contact/PopupContact.php
13,19 → 13,20
*/
 
class PopupContact extends aControleur {
 
private $conteneur = null;
private $imagesApi = null;
private $utilisateur = null;
private $appUrls = null;
private $id_destinataire = '';
private $id_image = '';
 
 
public function initialiser() {
$this->capturerParametres();
$this->setSortie(self::RENDU_SCRIPT, $this->getVue('contact_scripts'));
$style = '<link href="modules/popup_contact/presentations/styles/contact.css" rel="stylesheet" type="text/css" />';
$this->setSortie(self::RENDU_STYLE, $style);
$this->conteneur = new Conteneur();
$this->imagesApi = $this->conteneur->getApiImages();
$this->utilisateur = $this->conteneur->getUtilisateur();
$this->appUrls = $this->conteneur->getAppUrls();
}
 
private function capturerParametres() {
41,19 → 42,46
$this->executerForm();
}
 
public function executerForm(){
$infos = array();
$infos['idDestinataire'] = $this->id_destinataire;
public function executerForm() {
if ($this->utilisateur->etreIdentifie()) {
$this->afficherFormContact();
} else {
$this->afficherFormIdentification();
}
}
 
private function afficherFormContact() {
$entete = array();
$entete['formType'] = 'contact';
$this->setSortie(self::ENTETE, $this->getVue('contact_entete', $entete));
 
$infos = array();
$infos['idDestinataire'] = $this->id_destinataire;
$infos['idImage'] = $this->id_image;
 
$infos['utilisateurCourriel'] = $this->utilisateur->getCourriel();
$infos['urlPopUp'] = $this->appUrls->obtenirUrlPopUpContact($this->id_destinataire, $this->id_image);
 
$this->imagesApi->setProjet('cel');
$imageInfos = $this->imagesApi->getInfosImageParIdImage($this->id_image);
Debug::printr($imageInfos);
//$infos['sujet'] = "Observation #"+idObs+" de "+nomSci;
//$infos['message'] = "\n\n\n\n\n\n\n\n--\nConcerne l'observation de \""+nomSci+'" du "'+date+'" au lieu "'+lieu+'".';
$imageInfos = $this->imagesApi->getInfosImageParIdImage($this->id_image);
$idObs = $imageInfos['observation.id'];
$nomSci = $imageInfos['determination.nom_sci'];
$date = $imageInfos['date'];
$lieu = $imageInfos['station.libelle'];
 
$infos['sujet'] = "Observation #$idObs de $nomSci";
$infos['message'] = "\n\n\n\n\n\n\n\n--\nConcerne l'observation de $nomSci du $date au lieu $lieu";
 
$this->setSortie(self::RENDU_CORPS, $this->getVue('form_contact', $infos));
}
 
$this->setSortie(self::RENDU_CORPS, $this->getVue('popup_contact', $infos));
private function afficherFormIdentification() {
$entete = array();
$entete['formType'] = 'identification';
$this->setSortie(self::ENTETE, $this->getVue('contact_entete', $entete));
 
$infos = array();
$infos['urlPopUp'] = $this->appUrls->obtenirUrlPopUpContact($this->id_destinataire, $this->id_image);
$this->setSortie(self::RENDU_CORPS, $this->getVue('form_identification', $infos));
}
 
}
?>
/trunk/modules/popup_contact/presentations/styles/contact.css
File deleted
\ No newline at end of file
/trunk/modules/popup_contact/presentations/styles/identification.css
New file
0,0 → 1,6
@CHARSET "UTF-8";
/*----------------------------------------------------------------------------------------------------------*/
/* Balises */
input[type="checkbox"]{
margin:2px 5px;
}
/trunk/modules/popup_contact/presentations/scripts/identification.js
New file
0,0 → 1,95
$(document).ready(function() {
$("#connexion").on('click', connecter);
});
 
function connecter() {
var erreurMsg = "";
var urlWs = URL_WS_UTILISATEUR;
var courriel = $("#courriel").val();
var mdp = $("#mdp").val();
var donnees = {'methode':'connexion','courriel':courriel,'mdp':mdp};
$.ajax({
type : "PUT",
cache : false,
url : urlWs,
data : donnees,
beforeSend : nettoyerMsg,
success : function(data) {
if (data.identifie) {
rechargerPage();
} else {
afficherErreur(data.message);
}
},
error : function(jqXHR, textStatus, errorThrown) {
erreurMsg += "Erreur Ajax :\ntype : "+textStatus+' '+errorThrown+"\n";
erreurMsg += extraireInfosReponse(jqXHR);
afficherErreur('Une erreur est survenue lors de la connexion.');
if (DEBUG) {
console.log('Erreur : '+erreurMsg);
}
},
complete : function(jqXHR, textStatus) {
var debugMsg = extraireEnteteDebug(jqXHR);
if (DEBUG) {
console.log('Débogage : '+debugMsg);
}
}
});
return false;
}
 
function nettoyerMsg() {
$(".msg").remove();
}
 
function rechargerPage() {
window.location.reload();
}
 
function extraireInfosReponse(jqXHR) {
var erreurMsg = '';
try {
reponse = jQuery.parseJSON(jqXHR.responseText);
if (reponse != null) {
$.each(reponse, function (cle, valeur) {
erreurMsg += valeur + "\n";
});
}
} catch(e) {
erreurMsg += "L'erreur n'était pas en JSON.";
}
return erreurMsg;
}
 
function extraireEnteteDebug(jqXHR) {
var debugMsg = '';
if (jqXHR.getResponseHeader("X-DebugJrest-Data") != '') {
debugInfos = jQuery.parseJSON(jqXHR.getResponseHeader("X-DebugJrest-Data"));
if (debugInfos != null) {
$.each(debugInfos, function (cle, valeur) {
debugMsg += valeur + "\n";
});
}
}
return debugMsg;
}
 
function afficherErreur(msg) {
afficherTxt(msg, 'attention');
}
 
function afficherInfo(msg) {
afficherTxt(msg, 'information');
}
 
function afficherMsg(msg) {
afficherTxt(msg);
}
 
function afficherTxt(msg, type) {
type = type ? ' '+type : '';
nettoyerMsg();
$("#zone-dialogue").append('<pre class="msg'+type+'">'+msg+'</pre>');
}
/trunk/modules/popup_contact/presentations/scripts/contact.js
1,104 → 1,34
$(document).ready(function() {
$("#annuler").on('click', fermerFenetre);
$("#effacer").on('click', effacerFomulaire);
$("#envoyer").on('click', envoyerCourriel);
});
 
function effacerFomulaire() {
$("#destinataire_id").attr('value', '');
$("#sujet").attr('value', '');
$("#message").text('');
function fermerFenetre() {
window.close();
}
 
function ajouterFomulaireContact(element) {
$(element).fancybox({
transitionIn:'elastic',
transitionOut:'elastic',
speedIn :600,
speedOut:200,
scrolling: 'no',
titleShow: false,
onStart: function(selectedArray, selectedIndex, selectedOpts) {
var element = selectedArray[selectedIndex];
 
var motif = / contributeur-([0-9]+)$/;
motif.exec($(element).attr('class'));
var id = RegExp.$1;
// console.log('Destinataire id : '+id);
$("#fc_destinataire_id").attr('value', id);
var motif = / obs-([0-9]+) /;
motif.exec($(element).attr('class'));
var id = RegExp.$1;
// console.log('Obs id : '+id);
chargerInfoObsPourMessage(id);
},
onCleanup: function() {
// console.log('Avant fermeture fancybox');
$("#fc_destinataire_id").attr('value', '');
$("#fc_sujet").attr('value', '');
$("#fc_message").text('');
},
onClosed: function(e) {
// console.log('Fermeture fancybox');
if (e.stopPropagation) {
e.stopPropagation();
}
return false;
}
});
function effacerFomulaire() {
$("#sujet").attr('value', $("#sujet_defaut").val());
$("#message").text($("#message_defaut").val());
}
 
function chargerInfoObsPourMessage(idObs) {
var nomSci = trim($(".cel-obs-"+idObs+" .nom-sci:eq(0)").text());
var date = trim($(".cel-obs-"+idObs+" .date:eq(0)").text());
var lieu = trim($(".cel-obs-"+idObs+" .lieu:eq(0)").text());
var sujet = "Observation #"+idObs+" de "+nomSci;
var message = "\n\n\n\n\n\n\n\n--\nConcerne l'observation de \""+nomSci+'" du "'+date+'" au lieu "'+lieu+'".';
$("#sujet").attr('value', sujet);
$("#message").text(message);
}
 
function initialiserFormulaireContact() {
// console.log('Initialisation du form contact');
$("#form-contact").validate({
rules: {
fc_sujet : "required",
fc_message : "required",
fc_utilisateur_courriel : {
required : true,
email : true}
}
});
$("#form-contact").bind("submit", envoyerCourriel);
$("#fc_annuler").bind("click", function() {$.fancybox.close();});
}
 
function envoyerCourriel() {
// console.log('Formulaire soumis');
if ($("#form-contact").valid()) {
// console.log('Formulaire valide');
// $.fancybox.showActivity();
var destinataireId = $("#fc_destinataire_id").attr('value');
var urlMessage = "http://www.tela-botanica.org/service:annuaire:Utilisateur/"+destinataireId+"/message"
function envoyerCourriel(event) {
if (verifierFormContact()) {
var destinataireId = $("#destinataire_id").val();
var urlMessage = URL_WS_UTILISATEUR+"/"+destinataireId+"/message"
var erreurMsg = "";
var sujet = $("#sujet").val()+" - Carnet en ligne - Tela Botanica";
var message = $("#message").val()+"\n--\n"+
"Ce message vous est envoyé par l'intermédiaire de l'application eFlore du réseau Tela Botanica.\n"+
"http://www.tela-botanica.org/eflore";
var donnees = new Array();
$.each($(this).serializeArray(), function (index, champ) {
var cle = champ.name;
cle = cle.replace(/^fc_/, '');
if (cle == 'sujet') {
champ.value += " - Carnet en ligne - Tela Botanica";
}
if (cle == 'message') {
champ.value += "\n--\n"+
"Ce message vous est envoyé par l'intermédiaire du widget Cartographique "+
"du Carnet en Ligne du réseau Tela Botanica.\n"+
"http://www.tela-botanica.org/widget:cel:carto";
}
donnees[index] = {'name':cle,'value':champ.value};
});
donnees[0] = {'name':'sujet','value':sujet};
donnees[1] = {'name':'message','value':message};
donnees[2] = {'name':'utilisateur_courriel','value':$("#utilisateur_courriel").val()};
donnees[3] = {'name':'copies','value':$("#copies").val()};
 
$.ajax({
type : "POST",
cache : false,
105,10 → 35,10
url : urlMessage,
data : donnees,
beforeSend : function() {
$(".msg").remove();
nettoyerMsg();
},
success : function(data) {
$("#fc-zone-dialogue").append('<pre class="msg info">'+data.message+'</pre>');
afficherInfo('Votre message a été correctement envoyé');
},
error : function(jqXHR, textStatus, errorThrown) {
erreurMsg += "Erreur Ajax :\ntype : "+textStatus+' '+errorThrown+"\n";
130,22 → 60,53
}
}
if (erreurMsg != '') {
$("#fc-zone-dialogue").append('<p class="msg">'+
'Une erreur est survenue lors de la transmission de votre message.'+'<br />'+
'Vous pouvez signaler le disfonctionnement à <a href="'+
'mailto:cel@tela-botanica.org'+'?'+
'subject=Disfonctionnement du widget de Cartographie'+
"&body="+erreurMsg+"\nDébogage :\n"+debugMsg+
'">cel@tela-botanica.org</a>.'+
'</p>');
afficherMsg('Une erreur est survenue lors de la transmission de votre message.'+'<br />'+
'Vous pouvez signaler le disfonctionnement à <a href="'+
'mailto:cel@tela-botanica.org'+'?'+
'subject=Disfonctionnement du formulaire de contact'+
"&body="+erreurMsg+"\nDébogage :\n"+debugMsg+
'">eflore_remarques@tela-botanica.org</a>.');
}
if (DEBUG) {
console.log('Débogage : '+debugMsg);
}
// console.log('Débogage : '+debugMsg);
// console.log('Erreur : '+erreurMsg);
}
});
} else {
afficherInfo('Veuillez saisir un message');
}
event.preventDefault();
return false;
}
 
function afficherInfo(msg) {
afficherTxt(msg, 'information');
}
 
function afficherMsg(msg) {
afficherTxt(msg);
}
 
function afficherTxt(msg, type) {
type = type ? ' '+type : '';
nettoyerMsg();
$("#zone-dialogue").append('<pre class="msg'+type+'">'+msg+'</pre>');
}
 
function nettoyerMsg() {
$(".msg").remove();
}
 
function verifierFormContact() {
var valide = true;
var msg = trim($("#message").val());
var msgDefaut = trim($("#message_defaut").val());
if (msg == msgDefaut) {
valide = false;
}
return valide;
}
 
function trim(chaine) {
return chaine.replace(/^\s+/g, '').replace(/\s+$/g, '');
}
/trunk/modules/popup_contact/squelettes/popup_contact.tpl.html
File deleted
\ No newline at end of file
/trunk/modules/popup_contact/squelettes/contact_scripts.tpl.html
File deleted
\ No newline at end of file
/trunk/modules/popup_contact/squelettes/form_identification.tpl.html
New file
0,0 → 1,22
<div class="importance1">
<div id="zone-dialogue">
<p class="msg attention">
Vous n'êtes pas identifiez sur le site de Tela Botanica.<br />
Veuillez vous identifiez afin d'accéder au formulaire de contact.
</p>
</div>
<form id="form-connexion" action="<?= $urlPopUp ?>" method="post">
<h3>Identifiez vous</h3>
<label for="courriel">Courriel : </label>
<input type="text" id="courriel" name="courriel" maxlength="80" value="" />
<label for="mdp">Mot de passe : </label>
<input type="password" id="mdp" name="mdp" maxlength="80" value="" />
<p>
<input type="submit" id="connexion" class="gauche btn" name="connexion" value="Connexion" />
<input id="persistance" class="gauche" name="persistance" type="checkbox" value="o" />
<label for="persistance">Rester connecté</label>
</p>
</form>
</div>
/trunk/modules/popup_contact/squelettes/form_contact.tpl.html
New file
0,0 → 1,27
<div class="importance1">
<div id="zone-dialogue"></div>
<form id="form-contact" method="post" action="<?= $urlPopUp ?>">
<div class="champ">
<label for="sujet">Sujet</label>
<input id="sujet" name="sujet" value="<?= $sujet ?>"/>
</div>
<div class="champ">
<label for="message">Message</label>
<textarea id="message" name="message" rows="10"><?= $message ?></textarea>
</div>
<div>
<input id="sujet_defaut" name="sujet_defaut" type="hidden" value="<?= $sujet ?>" />
<input id="message_defaut" name="message_defaut" type="hidden" value="<?= $message ?>" />
<input id="destinataire_id" name="destinataire_id" type="hidden" value="<?= $idDestinataire ?>" />
<input id="copies" name="copies" type="hidden" value="eflore_remarques@tela-botanica.org" />
<input id="utilisateur_courriel" name="utilisateur_courriel" type="hidden" value="<?= $utilisateurCourriel ?>"/>
<button id="annuler" class="btn" type="submit">Annuler</button>
<button id="effacer" class="btn" type="reset">Effacer</button>
<button id="envoyer" class="droite btn" type="submit">Envoyer</button>
</div>
</form>
</div>
/trunk/modules/popup_contact/squelettes/contact_entete.tpl.html
New file
0,0 → 1,15
<!-- CSS -->
<? if ($formType != 'contact') : ?>
<link href="modules/popup_contact/presentations/styles/<?= $formType ?>.css" rel="stylesheet" type="text/css"/>
<? endif; ?>
 
<!-- JavaScript -->
<script type="text/javascript" src="http://www.tela-botanica.org/commun/jquery/1.7.1/jquery-1.7.1.js"></script>
<script type="text/Javascript" src="http://www.tela-botanica.org/commun/jquery/cookie/1.0/jquery.cookie.min.js"></script>
<script type="text/javascript">
//<![CDATA[
var DEBUG = false;
var URL_WS_UTILISATEUR = "http://localhost/applications/annuaire/jrest/utilisateur";//"http://www.tela-botanica.org/service:annuaire:Utilisateur"
//]]>
</script>
<script type="text/Javascript" src="modules/popup_contact/presentations/scripts/<?= $formType ?>.js"></script>