Subversion Repositories eFlore/Applications.cel

Rev

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

function WidgetPhotoContact () {}

WidgetPhotoContact.prototype = new WidgetPhotoCommun();

WidgetPhotoContact.prototype.initTpl = function() {
        $( '#form-contact' ).validate({
                rules: {
                        fc_sujet : 'required',
                        fc_message : 'required',
                        fc_utilisateur_courriel : {
                                required : true,
                                email : true
                        }
                }
        });
};

WidgetPhotoContact.prototype.initEvts = function() {
        const lthis = this;

        $( '#form-contact' ).on( 'submit', function( event ) {
                event.preventDefault();
                lthis.envoyerCourriel();
        });
        this.initEvtsRetourPopupPhoto();
};

WidgetPhotoContact.prototype.initEvtsRetourPopupPhoto = function() {
        const lthis = this;

        $( '#fc_annuler.popup_url' ).on( 'click', function( event ) {
                event.preventDefault();
                lthis.retourPopupPhoto();
        });
        $( '#fc_annuler.popup_url' ).on( 'keydown', function( event ) {
                var isEnter = false;

                event = event || window.event;
                // event.keyCode déprécié, on tente d'abord event.key
                if ( 'key' in event) {
                        isEnter = ( event.key === 'Enter' );
                } else {
                        isEnter = ( event.keyCode === 13 );
                }
                if ( isEnter ) {
                        lthis.retourPopupPhoto();
                }
        });
        $( 'body' ).on( 'keyup', function( event ) {
                if( $( '#fenetre-modal' ).hasClass( 'show' ) ) {
                        var isEscape = false;

                        event = event || window.event;
                        // event.keyCode déprécié, on tente d'abord event.key
                        if ( 'key' in event) {
                                isEscape = ( event.key === 'Escape' || event.key === 'Esc' );
                        } else {
                                isEscape = ( event.keyCode === 27 );
                        }
                        if ( isEscape ) {
                                lthis.retourPopupPhoto();
                        }
                }
        });
};

WidgetPhotoContact.prototype.envoyerCourriel = function() {
        const lthis = this;
        var donnees = [];

        if ( $( '#form-contact' ).valid() ) {
                var destinataireId = $( '#fc_destinataire_id' ).val(),
                        typeEnvoi      = $( '#fc_type_envoi' ).val(),
                // l'envoi aux non inscrits passe par le service intermédiaire du cel
                // qui va récupérer le courriel associé à l'image indiquée
                        urlMessage     = 'https://api-test.tela-botanica.org/service:cel:celMessage/image/' + destinataireId,
                        erreurMsg      = '';

                $.each( $( '#form-contact' ).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 photo " +
                                        "du Carnet en Ligne du réseau Tela Botanica.\n" +
                                        "http://www.tela-botanica.org/widget:cel:photo";
                        }
                        donnees[index] = {
                                'name' : cle,
                                'value': champ.value
                        };
                });
                console.log(donnees);
                var xhr = new XMLHttpRequest();
                xhr.open("POST", urlMessage, true);
                xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

                xhr.onreadystatechange = function () {
                        if (xhr.readyState === 4) { // Request is complete
                                // Remove existing messages
                                document.querySelectorAll('.msg').forEach(function (msg) {
                                        msg.remove();
                                });

                                if (xhr.status >= 200 && xhr.status < 300) { // Request was successful
                                        var data = JSON.parse(xhr.responseText);
                                        document.getElementById('fc-zone-dialogue').innerHTML += '<pre class="msg info">' + data.message + '</pre>';
                                } else { // Error during the request
                                        var erreurMsg = "Erreur Ajax :\ntype : " + xhr.statusText + ' ' + xhr.status + "\n";
                                        var reponse = JSON.parse(xhr.responseText);

                                        if (lthis.valOk(reponse)) {
                                                Object.values(reponse).forEach(function (valeur) {
                                                        erreurMsg += valeur + "\n";
                                                });
                                        }

                                        var debugMsg = '';
                                        var debugInfos = JSON.parse(xhr.getResponseHeader("X-DebugJrest-Data"));

                                        if (lthis.valOk(debugInfos)) {
                                                Object.values(debugInfos).forEach(function (valeur) {
                                                        debugMsg += valeur + "\n";
                                                });
                                        }

                                        document.getElementById('fc-zone-dialogue').innerHTML +=
                                                '<p class="msg">' +
                                                'Une erreur est survenue lors de la transmission de votre message.<br>' +
                                                'Vous pouvez signaler le disfonctionnement à ' +
                                                '<a ' +
                                                'href="mailto:cel-remarques@tela-botanica.org?' +
                                                'subject=Disfonctionnement du widget carto' +
                                                "&body=" + erreurMsg + "\nDébogage :\n" + debugMsg +
                                                '"' +
                                                '>' +
                                                'cel-remarques@tela-botanica.org' +
                                                '</a>' +
                                                '.' +
                                                '</p>';
                                }
                        }
                };

// Send the request with the donnees variable
                xhr.send(donnees);

                /*
                $.ajax({
                        type       : "POST",
                        cache      : false,
                        url        : urlMessage,
                        data       : donnees,
                        beforeSend : function() {
                                $( '.msg' ).remove();
                        },
                        success    : function( data ) {
                                $( '#fc-zone-dialogue' ).append( '<pre class="msg info">' + data.message + '</pre>' );
                        },
                        error      : function( jqXHR, textStatus, errorThrown ) {
                                erreurMsg += "Erreur Ajax :\ntype : " + textStatus + ' ' + errorThrown + "\n";
                                reponse = jQuery.parseJSON( jqXHR.responseText );
                                if ( lthis.valOk( reponse ) ) {
                                        $.each( reponse, function ( cle, valeur ) {
                                                erreurMsg += valeur + "\n";
                                        });
                                }
                        },
                        complete   : function( jqXHR, textStatus ) {
                                var debugMsg = '';
                                if ( lthis.valOk( jqXHR.getResponseHeader( "X-DebugJrest-Data" ) ) ) {
                                        debugInfos = jQuery.parseJSON( jqXHR.getResponseHeader( "X-DebugJrest-Data" ) );
                                        if ( lthis.valOk( debugInfos ) ) {
                                                $.each( debugInfos, function ( cle, valeur ) {
                                                        debugMsg += valeur + "\n";
                                                });
                                        }
                                }
                                if ( lthis.valOk( 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-remarques@tela-botanica.org?'+
                                                                        'subject=Disfonctionnement du widget carto'+
                                                                        "&body=" + erreurMsg + "\nDébogage :\n" + debugMsg+
                                                                '"' +
                                                        '>'+
                                                                'cel-remarques@tela-botanica.org'+
                                                        '</a>'+
                                                        '.'+
                                                '</p>'
                                        );
                                }
                        }
                });
                 */
        }
        return false;
};


WidgetPhotoContact.prototype.retourPopupPhoto = function() {
        const lthis = this;
        var popup_url = $( '#fc_annuler.popup_url' ).data( 'popup_url' );
        if ( lthis.valOk( popup_url ) ) {
                lthis.chargerContenuModale( popup_url );
        }
};