Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 3269 → Rev 3270

/trunk/widget/modules/saisie2/squelettes/css/saisie.css
170,6 → 170,7
font-weight: 700;
}
 
#photos-conteneur label.label-file.error,
.control-group.error input,
.control-group.error select,
.control-group.error textarea {
/trunk/widget/modules/saisie2/squelettes/js/WidgetSaisie.js
370,11 → 370,28
WidgetSaisie.prototype.surChangementTaxonListe = function() {
if ( valeurOk( $( '#taxon-liste' ).val() ) ) {
if ( 'autre' !== $( '#taxon-liste' ).val() ) {
$( '#taxon-input-groupe' ).hide( 200, function () {
$( this ).addClass( 'hidden' ).show();
});
$( '#taxon-input-groupe' )
.hide( 200, function () {
$( this ).addClass( 'hidden' ).show();
})
.find( '#taxon-autre' ).val( '' );
} else {
$( '#taxon-input-groupe' ).hide().removeClass( 'hidden' ).show(200);
$( '#taxon-input-groupe' )
.hide()
.removeClass( 'hidden' )
.show(200)
.find( '#taxon-autre' )
.on( 'change', function() {
if( !valeurOk( $( '#taxon-autre' ).data( 'numNomSel' ) ) ) {
$( '#taxon' ).val( $( '#taxon-autre' ).val() );
$( '#taxon' ).data( 'numNomSel', '' )
.data( 'nomRet','' )
.data( 'numNomRet', '' )
.data( 'nt', '' )
.data( 'famille', '' );
}
$( '#taxon' ).trigger( 'change' );
});
}
}
};
396,6 → 413,7
.data( 'numNomRet', optionRetenue.data( 'num-nom-ret' ) )
.data( 'nt', optionRetenue.data( 'nt' ) )
.data( 'famille', optionRetenue.data( 'famille' ) );
$( '#taxon' ).trigger( 'change' );
 
numNomSel = $( '#taxon' ).data( 'numNomSel' );
// Si l'espèce est mal déterminée la certitude est "à déterminer"
443,7 → 461,7
},
html: true
});
$( taxonSelecteur ).on( 'autocompleteselect change', this.surAutocompletionTaxon );
$( taxonSelecteur ).on( 'autocompleteselect', this.surAutocompletionTaxon );
};
 
WidgetSaisie.prototype.getUrlAutocompletionNomsSci = function() {
506,7 → 524,6
};
 
WidgetSaisie.prototype.surAutocompletionTaxon = function( event, ui ) {
 
if ( valeurOk( ui ) ) {
$( '#taxon' ).val( ui.item.value );
$( '#taxon' ).data( 'value', ui.item.value )
532,11 → 549,12
});
}
}
$( '#taxon' ).trigger( 'change' );
};
 
// Form Validator *************************************************************/
WidgetSaisie.prototype.configurerFormValidator = function() {
var lthis = this;
var lthis = this;
 
$.validator.addMethod(
'dateCel',
574,33 → 592,34
$.extend( $.validator.defaults, {
errorElement: 'span',
onfocusout: function( element ) {
if ( $( element ).valid() ) {
$( element ).closest( '.control-group' ).removeClass( 'error' );
} else {
$( element ).closest( '.control-group' ).addClass( 'error' );
if( valeurOk( element.id, false, 'taxon' ) ) {
if ( $( element ).valid() ) {
$( element ).closest( '.control-group' ).removeClass( 'error' );
} else {
$( element ).closest( '.control-group' ).addClass( 'error' );
}
}
},
onkeyup : function( element ) {
if ( $( element ).valid() ) {
if( valeurOk( element.id, false, 'taxon' ) ) {
if ( $( element ).valid() ) {
$( element ).closest( '.control-group' ).removeClass( 'error' );
} else {
$( element ).closest( '.control-group' ).addClass( 'error' );
}
}
},
unhighlight: function( element ) {
if( valeurOk( element.id, false, 'taxon' ) ) {
$( element ).closest( '.control-group' ).removeClass( 'error' );
} else {
$( element ).closest( '.control-group' ).addClass( 'error' );
}
},
highlight: function( element ) {
$( element ).closest( '.control-group' ).addClass( 'error' );
},
unhighlight: function( element ) {
$( element ).closest( '.control-group' ).removeClass( 'error' );
},
 
}
});
};
 
 
/**
* validation des champs étendus
*/
WidgetSaisie.prototype.chpEtendusValidation = function() {
var lthis = this;
var $thisForm = $( '#form-supp' ),
702,7 → 721,8
 
 
WidgetSaisie.prototype.definirReglesFormValidator = function() {
var formSuppValidation = this.chpEtendusValidation();
var formSuppValidation = this.chpEtendusValidation(),
lthis = this;
 
$( '#form-supp' ).validate({
onclick : function( element ) {
763,6 → 783,13
$( this ).valid();
});
 
$( '#taxon' ).on( 'change', function() {
var images = valeurOk( $( '#miniatures .miniature' ) );
lthis.validerTaxonImage( valeurOk( $( this ).val() ), images );
});
 
this.surPresenceAbsenceMiniature();
 
$( '#form-observation' ).validate({
rules : {
date_releve : {
793,13 → 820,52
});
};
 
WidgetSaisie.prototype.validerTaxonImage = function( taxon = false, images = false ) {
var taxonOuImage = ( images || taxon );
console.log();
if ( images || taxon ) {
this.masquerPanneau( '#dialogue-taxon-or-image' );
$( '#bloc-taxon' ).removeClass( 'error' )
.find( 'span.error' ).hide();
$( '#fichier' ).parent( 'label.label-file' ).removeClass( 'error' );
$( '#photos-conteneur').removeClass( 'error' ).find( 'span.error' ).hide();
} else {
this.afficherPanneau( '#dialogue-taxon-or-image' );
$( '#bloc-taxon' ).addClass( 'error' )
.find( 'span.error' ).show();
$( '#fichier' ).parent( 'label.label-file' ).addClass( 'error' );
$( '#photos-conteneur').addClass( 'error' ).find( 'span.error' ).show();
}
return ( images || taxon );
};
 
WidgetSaisie.prototype.surPresenceAbsenceMiniature = function() {
var lthis = this;
// Selectionne le noeud dont les mutations seront observées
var targetNode = document.getElementById( 'miniatures' );
// Fonction callback à éxécuter quand une mutation est observée
var callback = function( mutationsList ) {
for( var mutation of mutationsList ) {
var taxon = valeurOk( $( '#taxon' ).val() );
images = ( 0 < mutation.target.childElementCount );
lthis.validerTaxonImage( taxon, images );
}
};
// Créé une instance de l'observateur lié à la fonction de callback
var observer = new MutationObserver( callback );
// Commence à observer le noeud cible pour les mutations précédemment configurées
observer.observe( targetNode, { childList: true } );
};
 
WidgetSaisie.prototype.validerFormulaire = function() {
var observateur = $( '#form-observateur' ).valid();
var obs = $( '#form-observation' ).valid();
var images = valeurOk( $( '#miniatures .miniature' ) );
var taxon = ( valeurOk( $( '#taxon' ).data( 'numNomSel' ) ) || valeurOk( $( '#taxon-liste' ).data( 'numNomSel' ) ) );
var geoloc = ( $( '#latitude' ).valid() && $( '#longitude' ).valid() );
var chpsSupp = new Boolean();
var observateur = $( '#form-observateur' ).valid();
var obs = $( '#form-observation' ).valid();
var images = valeurOk( $( '#miniatures .miniature' ) );
var taxon = valeurOk( $( '#taxon' ).val() );
// validation et panneau taxon/images
var taxonOuImage = this.validerTaxonImage( taxon, images );
console.log(taxonOuImage);
var chpsSupp = new Boolean();
if ( valeurOk( $( '#form-supp' ) ) ) {
chpsSupp = ( function () {
var otherFlag = $( '#form-supp' ).valid();
816,17 → 882,12
} else {
chpsSupp = true;
}
// panneau geoloc
( $( '#latitude' ).valid() && $( '#longitude' ).valid() ) ? this.masquerPanneau( '#dialogue-geoloc-ko' ) : this.afficherPanneau( '#dialogue-geoloc-ko' );
// panneau observateur
( observateur ) ? this.masquerPanneau( '#dialogue-utilisateur-non-identifie' ) : this.afficherPanneau( '#dialogue-utilisateur-non-identifie' );
 
( geoloc ) ? this.masquerPanneau( '#dialogue-geoloc-ko' ) : this.afficherPanneau( '#dialogue-geoloc-ko' );
( observateur ) ? this.masquerPanneau( '#dialogue-utilisateur-non-identifie' ) : this.afficherPanneau( '#dialogue-utilisateur-non-identifie' );
if ( images || taxon ) {
this.masquerPanneau( '#dialogue-taxon-or-image' );
this.masquerPanneau( '#dialogue-image-or-taxon' );
} else {
this.afficherPanneau( '#dialogue-taxon-or-image' );
this.afficherPanneau( '#dialogue-image-or-taxon' );
}
return ( observateur && obs && ( images || taxon ) && chpsSupp );
return ( observateur && obs && taxonOuImage && chpsSupp );
};
 
// Fichier Images *************************************************************/
857,7 → 918,7
'<div class="miniature mb-3 mr-3">'+
'<img class="miniature-img" class="miniature img-rounded" alt="' + imgNom + '" src="' + miniatureUrl + '"/>'+
'<a class="effacer-miniature"><i class="far fa-trash-alt"></i></a>'+
'</div>'
'</div>';
return html;
};
 
/trunk/widget/modules/saisie2/squelettes/saisie.tpl.html
122,7 → 122,7
</div>
 
<div id="zone-courriel-confirmation" class="control-group col-md-6 hidden">
<label for="courriel_confirmation" class="col-sm-8 obligatoire" title="Veuillez confirmer le courriel.">
<label for="courriel_confirmation" class="col-sm-8 obligatoire" title="<?php echo $observateur['courriel-confirmation-title']; ?>">
<i class="fa fa-envelope" aria-hidden="true"></i>
<?php echo $observateur['courriel-confirmation']; ?>
</label>
265,7 → 265,7
<input id="referentiel" name="referentiel" value="<?php echo $widget['referentiel']; ?>" type="hidden">
<?php endif; ?>
 
<div class="control-group">
<div id="bloc-taxon" class="control-group">
<?php $isTaxonListe = ( isset( $widget['especes']['taxons'] ) && count( (array) $widget['especes']['taxons'] ) > 0 ) ;?>
<label for="<?php echo ( !$isTaxonListe ) ? 'taxon' : 'taxon-liste';?>" class="col-sm-8" title="">
<i class="fa fa-leaf" aria-hidden="true"></i>
273,13 → 273,13
</label>
<div class="col-sm-8 mb-3">
<?php if ( $widget['type_especes'] === 'fixe' || $widget['especes']['espece_imposee'] ) : ?>
<input id="taxon" name="taxon" type="text" class="form-control" value="<?php echo $widget['especes']['nom_sci_espece_defaut']; ?>" />
<input id="taxon" name="taxon" type="text" class="form-control taxon-validation" title"" value="<?php echo $widget['especes']['nom_sci_espece_defaut']; ?>"/>
</div>
</div>
 
<?php elseif ( isset( $widget['especes']['taxons'] ) && count( (array) $widget['especes']['taxons'] ) > 0 ) : ?>
<?php ksort( $widget['especes']['taxons'] ); ?>
<select id="taxon-liste" name="taxon-liste" class="form-control custom-select">
<select id="taxon-liste" name="taxon-liste" class="form-control custom-select taxon-validation" title="<?php echo $observation['taxon-title'];?>">
<option class="choisir" value="inconnue" selected hidden><?php echo $general['choisir']; ?></option>
<?php foreach ($widget['especes']['taxons'] as $taxon) : ?>
<option
295,7 → 295,8
<?php endforeach; ?>
<option value="autre"><?php echo $observation['autre-espece']; ?></option>
</select>
<input id="taxon" name="taxon" class="form-control" type="hidden">
<span for="taxon-liste" class="error" style="display: none;"><?php echo $observation['taxon-title'];?></span>
<input id="taxon" name="taxon" class="form-control" type="hidden" />
</div>
</div>
<div id="taxon-input-groupe" class="control-group hidden">
308,7 → 309,8
</div>
</div>
<?php else : ?>
<input id="taxon" name="taxon" class="form-control" type="text">
<input id="taxon" name="taxon" class="form-control taxon-validation" type="text" title="<?php echo $observation['taxon-title'];?>">
<span for="taxon" class="error" style="display: none;"><?php echo $observation['taxon-title'];?></span>
</div>
</div>
<?php endif; ?>
607,6 → 609,7
<input type="hidden" name="MAX_FILE_SIZE" value="5242880">
</label>
</div>
<span for="fichier" class="error" style="display: none;"><?php echo $observation['taxon-title'];?></span>
 
<div id="miniatures"></div>
<p class="miniature-msg" class="span12">&nbsp;</p>
613,15 → 616,6
</div>
</form>
 
<!-- Messages d'erreur du formulaire-->
<div class="zone-alerte">
<div id="dialogue-image-or-taxon" class="alert alert-warning alert-block hidden">
<a class="close">×</a>
<h4 class="alert-heading"><?php echo $observation['alert-img-tax-title']; ?></h4>
<p><?php echo $observation['alert-img-tax']; ?></p>
</div>
</div>
 
<div id="image" class="row"></div>
</div>
 
/trunk/widget/modules/saisie2/i18n/fr.ini
38,6 → 38,7
deconnexion = "Déconnexion"
courriel = "Courriel"
courriel-confirmation = "Courriel (confirmation)"
courriel-confirmation-title = "Veuillez confirmer le courriel."
courriel-title = "Veuillez saisir votre adresse courriel."
courriel-input-title = "Saisissez le courriel avec lequel vous êtes inscrit à Tela Botanica. Si vous n'êtes pas inscrit ce n'est pas grave,
vous pourrez le faire ultérieurement. Des informations complémentaires vont vous être demandées&nbsp;: prénom et nom."
63,8 → 64,9
referentiel = "Référentiel"
espece = "Espèce"
autre-espece = "Autre espèce"
taxon-title = "Une obsevation doit comporter au moins une image ou un nom d'espèce"
alert-img-tax-title = "Information&nbsp;: Observation incomplète"
alert-img-tax = "Une observation doit comporter au moins un nom d'espèce ou une image"
alert-img-tax = "Une observation doit comporter au moins un lieu, une date et un auteur, et soit un nom d'espèce, soit une image"
certitude = "Certitude"
certCert = "Certaine"
certDout= "Douteuse"
/trunk/widget/modules/saisie2/i18n/en.ini
32,7 → 32,8
profil = "My profile"
deconnexion = "Log out"
courriel = "Email"
courriel-confirmation = "Email ()"
courriel-confirmation = "Email (confirmation)"
courriel-confirmation-title = "Please confirm the email."
courriel-title = "Enter your email adress"
courriel-input-title = "Enter your Tela Botanica's inscription mail. If you are not registered,
you can do it later to manage your data. You will be asked for additional information & nbsp; first name and last name."
58,9 → 59,10
date = "Date"
referentiel = "Referential"
espece = "Species"
taxon-title = "An observation must include at least either a species name or an image"
autre-espece = "Other species"
alert-img-tax-title = "Information&nbsp;: Incomplete observation"
alert-img-tax = "An observation must include at least a species name or a picture"
alert-img-tax = "An observation must include at least one place, date, and author, and either a species name or an image"
certitude = "Identification"
certCert = "Certain"
certDout = "Dubious"