/trunk/widget/modules/lg/Lg.php |
---|
152,6 → 152,9 |
} |
$tableau = json_decode($json, true); |
$tableau = $this->traiterParametres($estProjetDefini, $tableau[0]); |
if (isset($this->parametres['squelette']) && $this->parametres['squelette'] === 'lichens') { |
$tableau['type_especes'] = 'liste'; |
} |
$tableau['especes'] = $this->rechercherInfosEspeces($tableau); |
if ($tableau['milieux'] != "") { |
$tableau['milieux'] = explode(";", $tableau['milieux']); |
362,9 → 365,9 |
*/ |
protected function recupererListeTaxon() { |
$taxons = array(); |
$langue_projet_url = ( isset ( $this->parametres['langue'] ) && $this->parametres['langue'] !== 'fr' ) ? '_' . $this->parametres['langue'] : ''; |
$chemin_images = dirname(__FILE__) . self::DS . 'configurations' . self::DS; |
$fichier_tsv = $chemin_images . 'sauvages_taxons.tsv'; |
// utiliser la ligne ci-dessous quand la liste des lichens sera prête |
// $fichier_tsv = dirname(__FILE__) . self::DS . 'configurations' . self::DS . 'lichens.tsv'; |
$fichier_tsv = dirname(__FILE__) . self::DS . 'configurations' . self::DS . 'sauvages_taxons.tsv'; |
if ( file_exists( $fichier_tsv ) && is_readable( $fichier_tsv ) ) { |
$taxons = $this->decomposerFichierTsv( $fichier_tsv ); |
/trunk/widget/modules/lg/squelettes/js/ReleveLg.js |
---|
673,6 → 673,7 |
* Fonction handler de l'évenement location du module tb-geoloc |
*/ |
ReleveLg.prototype.locationHandler = function( location ) { |
const lthis = this; |
var locDatas = location.originalEvent.detail; |
if ( this.utils.valOk( locDatas ) ) { |
708,7 → 709,7 |
communeInsee = ( this.utils.valOk( locDatas.inseeData.code ) ) ? locDatas.inseeData.code : ''; |
} else if ( this.utils.valOk( locDatas.locality ) ) { |
nomCommune = locDatas.locality; |
} else if ( this.utils.valOk( locDatas.locality ) ) { |
} else if ( this.utils.valOk( locDatas.osmCounty ) ) { |
nomCommune = locDatas.osmCounty; |
} |
$( '#rue' ).val( rue ); |
719,16 → 720,22 |
$( '#altitude' ).val( altitude ); |
$( '#pays' ).val( pays ); |
if ( this.utils.valOk( $( '#rue' ).val() ) && this.utils.valOk( $( '#commune-nom' ).val() ) ) { |
if( !this.utils.valOk( $( '#geoloc #error-drc' ) ) ) { |
$( '#geoloc' ).closest( '.control-group' ).removeClass( 'error' ); |
} |
$( '#geoloc-error' ).addClass( 'hidden' ); |
} else { |
$( '#geoloc' ).closest( '.control-group' ).addClass( 'error' ); |
$( '#geoloc' ).addClass( 'hidden' ); |
$( '#rue,#commune-nom' ).prop( 'disabled', false ); |
$( '#geoloc-datas' ).removeClass( 'hidden' ); |
$( '#geoloc-datas' ).closest( '.control-group' ).addClass( 'error' ); |
$( '#geoloc-error' ).removeClass( 'hidden' ); |
$( '#releve-date' ).removeClass( 'erreur' ).closest( '.control-group' ).removeClass( 'error' ).find( '#error-drc' ).remove(); |
$( '#geoloc #error-drc' ).remove(); |
} |
$( '#rue,#commune-nom' ).change( function() { |
if ( lthis.utils.valOk( $( '#rue' ).val() ) && lthis.utils.valOk( $( '#commune-nom' ).val() ) ) { |
$( '#geoloc-error' ).addClass( 'hidden' ); |
} else { |
$( '#geoloc-error' ).removeClass( 'hidden' ); |
} |
}); |
} else { |
console.log( 'Error location' ); |
} |
814,25 → 821,7 |
this.releveDatas = $.parseJSON( $( '#releve-data' ).val() ); |
this.releveDatas[this.obsNbre] = arbreData; |
$( '#releve-data' ).val( JSON.stringify( this.releveDatas ) ); |
this.supprimerMiniatures(); |
$( '#taxon' ).val( '' ); |
$( '#taxon' ).data( 'numNomSel', '' ) |
.data( 'nomRet','' ) |
.data( 'numNomRet', '' ) |
.data( 'nt', '' ) |
.data( 'famille', '' ); |
if( this.isTaxonListe ) { |
$( '#taxon-liste' ).find( 'option' ).each( function() { |
if ( $( this ).hasClass( 'choisir' ) ) { |
$( this ).attr( 'selected', true ); |
} else { |
$( this ).attr( 'selected', false ); |
} |
}); |
$( '#taxon-input-groupe' ).addClass( 'hidden' ); |
$('#taxon-autre').val(''); |
} |
this.modeArbresBasculerActivation( false ); |
$( '#barre-progression-upload' ).attr( 'aria-valuemax', this.obsNbre ); |
$( '#barre-progression-upload .sr-only' ).text( '0/' + this.obsNbre + ' ' + this.utils.msgTraduction( 'observations-transmises' ) ); |
} else { |
1241,10 → 1230,8 |
imgHtml = ''; |
$( '#arbre-nb').text( numArbre ); |
taxon.item = arbreDatas.taxon; |
this.surAutocompletionTaxon( {}, taxon ); |
$.each( 'certitude', function( i, value ) { |
if( !lthis.utils.valOk( arbreDatas[value] ) ) { |
arbreDatas[value] = ''; |
1280,7 → 1267,6 |
} |
}); |
} |
this.modeArbresBasculerActivation( desactiverForm, numArbre ); |
}; |
1312,15 → 1298,9 |
$( this ).prop( 'selected', false ); |
} |
}); |
$( '#taxon' ).data( 'numNomSel', '' ) |
.data( 'nomRet','' ) |
.data( 'numNomRet', '' ) |
.data( 'nt', '' ) |
.data( 'famille', '' ); |
this.supprimerMiniatures(); |
$( '#face-ombre' ).find( 'input' ).prop( 'checked', false ); |
$( |
'#taxon,'+ |
'#circonference,'+ |
'#com-arbres,'+ |
'#rue-arbres,'+ |
1328,9 → 1308,11 |
'#longitude-arbres,'+ |
'#certitude' |
).val( '' ); |
$( '#arbre-nb' ).text( numArbre ); |
$( '#arbre-info-lien-' + numArbre ).addClass( 'disabled' ); |
$( '.arbre-info' ).not( '#arbre-info-lien-' + numArbre ).removeClass( 'disabled' ); |
if( 0 < numArbre ) { |
$( '#arbre-nb' ).text( numArbre ); |
$( '#arbre-info-lien-' + numArbre ).addClass( 'disabled' ); |
$( '.arbre-info' ).not( '#arbre-info-lien-' + numArbre ).removeClass( 'disabled' ); |
} |
} |
}; |
1393,7 → 1375,8 |
exId = 0, |
indexObs = '', |
exIndexObs = '', |
arbreExId = 0; |
arbreExId = 0, |
arbreId = 0; |
for ( var id = obsId; id <= ( this.obsNbre + 1 ); id++ ) { |
exId = parseInt(id) + 1; |
1736,7 → 1719,6 |
.closest( '.control-group' ) |
.removeClass( 'error' ); |
} |
$( '#geoloc #error-drc' ).remove(); |
} else { |
$( '#releve-date' ) |
.addClass( 'erreur' ) |
1746,9 → 1728,6 |
$( '#releve-date' ).after( errorDateRue ); |
} |
$( '#geoloc' ).closest( '.control-group' ).addClass( 'error' ); |
if ( !this.utils.valOk( $( '#geoloc' ).find( '#error-drc' ) ) ) { |
$( '#geoloc' ).prepend( errorDateRue ); |
} |
} |
if ( dateValid ) { |
$( '#releve-date' ).closest( '.control-group span.error' ).not( '#error-drc' ).remove(); |
/trunk/widget/modules/lg/squelettes/js/LichensLg.js |
---|
39,7 → 39,12 |
LichensLg.prototype.initForm = function() { |
const lthis = this; |
this.ajouterAutocompletionNoms(); |
this.surChangementTaxonListe(); |
$( '#taxon-liste' ).on( 'change', lthis.surChangementTaxonListe ); |
$( '#taxon-liste' ).on( 'change', lthis.surChangementValeurTaxon.bind( lthis ) ); |
if ( this.debug ) { |
console.log( 'Selected taxon:' + $( '#taxon-liste option:selected' ).val()); |
} |
this.configurerFormValidator(); |
this.definirReglesFormValidator(); |
}; |
131,7 → 136,6 |
scrollTop: $( '#charger-form' ).offset().top |
}, 300 ); |
}); |
// Alertes et tooltips |
$( '.alert .close' ).on( 'click', this.fermerPanneauAlert ); |
$( '#btn-aide' ).on( 'click', this.basculerAffichageAide ); |
164,6 → 168,73 |
} |
}; |
// uniquement utilisé si taxon-liste ******************************************/ |
// Affiche/Cache le champ taxon |
LichensLg.prototype.surChangementTaxonListe = function() { |
const utils = new UtilsApa(); |
if ( utils.valOk( $( '#taxon-liste' ).val() ) ) { |
if ( 'autre' !== $( '#taxon-liste' ).val() ) { |
$( '#taxon-input-groupe' ) |
.hide( 200, function () { |
$( this ).addClass( 'hidden' ).show(); |
}) |
.find( '#taxon-autre' ).val( '' ); |
} else { |
$( '#taxon-input-groupe' ) |
.hide() |
.removeClass( 'hidden' ) |
.show(200) |
.find( '#taxon-autre' ) |
.focus() |
.on( 'change', function() { |
if( !utils.valOk( $( '#taxon-autre' ).data( 'numNomSel' ) ) ) { |
$( '#taxon' ).val( $( '#taxon-autre' ).val() ); |
$( '#taxon' ).removeData( 'value' ) |
.removeData( 'numNomSel' ) |
.removeData( 'nomRet' ) |
.removeData( 'numNomRet' ) |
.removeData( 'nt' ) |
.removeData( 'famille' ); |
} |
$( '#taxon' ).trigger( 'change' ); |
}); |
} |
} |
}; |
LichensLg.prototype.surChangementValeurTaxon = function() { |
var numNomSel = 0; |
if( this.utils.valOk( $( '#taxon-liste' ).val() ) ) { |
if( 'autre' === $( '#taxon-liste' ).val() ) { |
this.ajouterAutocompletionNoms(); |
} else { |
var optionRetenue = $( '#taxon-liste' ).find( 'option[value="' + $( '#taxon-liste' ).val() + '"]' ); |
// $( '#taxon' ).val( $( '#taxon-liste' ).val() ); |
$( '#taxon' ).val( $( '#taxon-liste' ).val() ) |
.data( 'value', $( '#taxon-liste' ).val() ) |
.data( 'numNomSel', optionRetenue.data( 'num-nom-sel' ) ) |
.data( 'nomRet', optionRetenue.data( 'nom-ret' ) ) |
.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" |
if( !this.utils.valOk( numNomSel ) ) { |
$( '#certitude' ).find( 'option' ).each( function() { |
if ( $( this ).hasClass( 'aDeterminer' ) ) { |
$( this ).attr( 'selected', true ); |
} else { |
$( this ).attr( 'selected', false ); |
} |
}); |
} |
} |
} |
}; |
// Autocompletion taxons ******************************************************/ |
/** |
* Initialise l'autocompletion taxons |
171,7 → 242,12 |
LichensLg.prototype.ajouterAutocompletionNoms = function() { |
const lthis = this; |
$( '#taxon' ).autocomplete({ |
var taxonSelecteur = '#taxon'; |
if ( this.utils.valOk( $( '#taxon-liste' ).val(), true, 'autre' ) ) { |
taxonSelecteur += '-autre'; |
} |
$( taxonSelecteur ).autocomplete({ |
source: function( requete, add ) { |
// la variable de requête doit être vidée car sinon le parametre "term" est ajouté |
requete = ''; |
194,11 → 270,15 |
}, |
html: true |
}); |
$( '#taxon' ).on( 'autocompleteselect', this.surAutocompletionTaxon ); |
$( taxonSelecteur ).on( 'autocompleteselect', this.surAutocompletionTaxon ); |
}; |
LichensLg.prototype.getUrlAutocompletionNomsSci = function() { |
var mots = $( '#taxon' ).val(); |
var taxonSelecteur = '#taxon'; |
if ( this.utils.valOk( $( '#taxon-liste' ).val(), true, 'autre' ) ) { |
taxonSelecteur += '-autre'; |
} |
var mots = $( taxonSelecteur ).val(); |
var url = this.serviceAutocompletionNomSciUrlTpl.replace( '{referentiel}', this.nomSciReferentiel ); |
url = url.replace( '{masque}', mots ); |
209,8 → 289,12 |
* Objet taxons pour autocompletion en fonction de la recherche |
*/ |
LichensLg.prototype.traiterRetourNomsSci = function( data ) { |
var taxonSelecteur = '#taxon'; |
var suggestions = []; |
if ( this.utils.valOk ( $( '#taxon-liste' ).val(), true, 'autre' ) ) { |
taxonSelecteur += '-autre'; |
} |
if ( undefined != data.resultat ) { |
$.each( data.resultat, function( i, val ) { |
val.nn = i; |
229,7 → 313,7 |
}; |
if ( suggestions.length >= this.autocompletionElementsNbre ) { |
nom.label = '...'; |
nom.value = $( '#taxon' ).val(); |
nom.value = $( taxonSelecteur ).val(); |
suggestions.push( nom ); |
return false; |
} else { |
256,7 → 340,7 |
* charge les données dans #taxon |
*/ |
LichensLg.prototype.surAutocompletionTaxon = function( event, ui ) { |
const utils = new UtilsLg(); |
const utils = new UtilsApa(); |
if ( utils.valOk( ui ) ) { |
$( '#taxon' ).val( ui.item.value ); |
393,14 → 477,7 |
// Résumé obs et stockage en data de "#list-obs" pour envoi |
this.afficherObs( obsData ); |
this.stockerObsData( obsData ); |
this.supprimerMiniatures(); |
$( '#taxon' ).val( '' ); |
$( '#taxon' ).removeData( 'value' ) |
.removeData( 'numNomSel' ) |
.removeData( 'nomRet' ) |
.removeData( 'numNomRet' ) |
.removeData( 'nt' ) |
.removeData( 'famille' ); |
this.reinitialiserFormLichens(); |
$( '#barre-progression-upload' ).attr( 'aria-valuemax', this.obsNbre ); |
$( '#barre-progression-upload .sr-only' ).text( '0/' + this.obsNbre + ' ' + this.utils.msgTraduction( 'observations-transmises' ) ); |
} else { |
408,6 → 485,28 |
} |
}; |
LichensLg.prototype.reinitialiserFormLichens = function() { |
this.supprimerMiniatures(); |
$( '#taxon,#taxon-autre,#commentaire' ).val( '' ); |
$( '#taxon' ).removeData( 'value' ) |
.removeData( 'numNomSel' ) |
.removeData( 'nomRet' ) |
.removeData( 'numNomRet' ) |
.removeData( 'nt' ) |
.removeData( 'famille' ); |
$( '#taxon-liste,#certitude' ).find( 'option' ).each( function() { |
if ( $( this ).hasClass( 'choisir' ) ) { |
$( this ).attr( 'selected', true ); |
} else { |
$( this ).attr( 'selected', false ); |
} |
}); |
$( '#taxon-input-groupe' ).addClass( 'hidden' ); |
$( 'input[name=lichens-tronc]:checked' ).each( function() { |
$( this ).prop( 'checked', false ); |
}); |
}; |
/** |
* Formatage des données du formulaire pour stockage et envoi |
*/ |
1043,10 → 1142,6 |
const taxonOuImage = this.validerTaxonImage( taxon, images ); |
const observateur = ( $( '#form-observateur' ).valid() && $( '#courriel' ).valid() ) |
const obs = $( '#form-lichens' ).valid(); |
console.log('images : ' + images); |
console.log('taxon : ' + taxon); |
console.log('taxonOuImage : ' + taxonOuImage); |
console.log(obs); |
// panneau observateur |
if ( observateur ) { |
/trunk/widget/modules/lg/squelettes/arbres.tpl.html |
---|
9,8 → 9,8 |
<?php echo $observation['lieu-releve']; ?> |
</label> |
<div class="control-group"> |
<span id="geoloc-error" class="error hidden"><?php echo $observation['geoloc-erreur']; ?></span> |
<div id="geoloc" class="col-sm-8 geoloc"> |
<span id="geoloc-error" class="error hidden"><?php echo $observation['geoloc-erreur']; ?></span> |
<tb-geolocation-element |
id="tb-geolocation" |
layer='osm' |
35,10 → 35,6 |
<input type="text" class="form-control rue" disabled id="rue" name="rue" value=""> |
</div> |
</div> |
<!-- <input type="hidden" class="form-control latitude" disabled id="latitude" name="latitude" value="43.5984" style="display:none"> |
<input type="hidden" class="form-control longitude" disabled id="longitude" name="longitude" value="3.896799" style="display:none"> --> |
<input type="hidden" class="form-control latitude" disabled id="latitude" name="latitude" value="" style="display:none"> |
<input type="hidden" class="form-control longitude" disabled id="longitude" name="longitude" value="" style="display:none"> |
<div class="mt-3"> |
<label class="col-sm-8" for="commune-nom"><?php echo $observation['nom-commune']; ?></label> |
<div class="col-sm-8"> |
48,15 → 44,14 |
<input type="hidden" class="commune-insee" disabled id="commune-insee" name="commune-insee" value=""> |
</div> |
</div> |
<!-- <input type="hidden" class="form-control latitude" disabled id="latitude" name="latitude" value="43.5984" style="display:none"> |
<input type="hidden" class="form-control longitude" disabled id="longitude" name="longitude" value="3.896799" style="display:none"> --> |
<!-- <input type="text" class="form-control altitude" disabled id="altitude" name="altitude" value="23"> --> |
<input type="hidden" class="form-control latitude" disabled id="latitude" name="latitude" value="" style="display:none"> |
<input type="hidden" class="form-control longitude" disabled id="longitude" name="longitude" value="" style="display:none"> |
<input type="hidden" class="form-control altitude" disabled id="altitude" name="altitude" value="" style="display:none"> |
<div class="row pl-3 pr-3 mt-3"> |
<div class="d-flex flex-column col-sm-4"> |
<label for="altitude"><?php echo $observation['altitude']; ?></label> |
<div> |
<!-- <input type="text" class="form-control altitude" disabled id="altitude" name="altitude" value="23"> --> |
<input type="text" class="form-control altitude" disabled id="altitude" name="altitude" value=""> |
</div> |
</div> |
<div class="d-flex flex-column col-sm-4"> |
<label for="pays"><?php echo $observation['pays']; ?></label> |
<div> |
<!-- <input type="text" class="form-control pays" disabled id="pays" name="pays" value="France"> --> |
/trunk/widget/modules/lg/squelettes/lichens.tpl.html |
---|
32,14 → 32,41 |
<input id="referentiel" name="referentiel" value="<?php echo $widget['referentiel']; ?>" type="hidden"> |
<div id="bloc-taxon" class="control-group"> |
<label for="taxon" class="col-sm-8 obligatoire" title=""> |
<label for="taxon-liste" class="col-sm-8 obligatoire" title=""> |
<i class="fa fa-leaf" aria-hidden="true"></i> |
<?php echo $general['espece']; ?> (<?php echo $widget['referentiel']; ?>) |
<?php echo $general['espece']; ?><!-- (<?php echo $widget['referentiel']; ?>)--> |
</label> |
<div class="col-sm-8 mb-3"> |
<input id="taxon" name="taxon" class="form-control taxon-validation has-tooltip" type="text" data-toggle="tooltip" title="<?php echo $general['espece-title']; ?>" autocomplete="off"> |
<?php ksort( $widget['especes']['taxons'] ); ?> |
<select id="taxon-liste" name="taxon-liste" class="form-control custom-select taxon-validation has-tooltip" data-toggle="tooltip" title="<?php echo $observation['liste-espece-title']; ?>"> |
<option class="choisir" value="inconnue" selected hidden><?php echo $general['choisir']; ?></option> |
<?php foreach ($widget['especes']['taxons'] as $taxon) : ?> |
<option |
class="nom-sci" |
value="<?php echo $taxon['nom_sel'];?>" |
title="<?php echo $taxon['nom_fr'];?>" |
data-num-nom-sel="<?php echo $taxon['num_nom_sel'];?>" |
data-nom-ret="<?php echo $taxon['nom_ret'];?>" |
data-num-nom-ret="<?php echo $taxon['num_nom_ret'];?>" |
data-nt="<?php echo $taxon['num_taxon'];?>" |
data-famille="<?php echo $taxon['famille'];?>" |
><?php echo $taxon['nom_sel'];?></option> |
<?php endforeach; ?> |
<option value="autre"><?php echo $general['autre-espece']; ?></option> |
</select> |
<span for="taxon-liste" class="error" style="display: none;"><?php echo $observation['error-taxon'];?></span> |
<input id="taxon" name="taxon" type="hidden" /> |
</div> |
</div> |
<div id="taxon-input-groupe" class="control-group hidden"> |
<label for="taxon-autre" class="col-sm-8" title=""> |
<i class="fab fa-pagelines" aria-hidden="true"></i> |
<?php echo $general['autre-espece']; ?> |
</label> |
<div class="col-sm-8 mb-3"> |
<input id="taxon-autre" name="taxon-autre" class="form-control has-tooltip" type="text" data-toggle="tooltip" title="<?php echo $observation['espece-title']; ?>"> |
</div> |
</div> |
<div class="control-group"> |
<label for="certitude" class="col-sm-8 obligatoire" title=""> |
/trunk/widget/modules/lg/i18n/fr.ini |
---|
7,6 → 7,7 |
arbre = "Arbre" |
arbres = "Arbres" |
espece = "Espèce" |
autre-espece = "Autre espèce" |
espece-title = "Saisir le taxon observé, en utilisant l’autocomplétion autant que possible" |
certitude = "Certitude" |
certCert = "Certaine" |
85,8 → 86,7 |
lieu-releve = "Lieu du relevé" |
geoloc-title = "Localisation du relevé" |
geoloc-erreur = "Le nom de la rue, ou de la commune, n'ont pas pu être correctement déterminées pour la localisation indiquée. |
<br> Veuillez replacer le marqueur sur la rue. |
<br> Si le problème persiste veuillez nous contacter sur <a href=\"<?php echo $url_remarques\; ?>?service=cel\&pageSource=<?php echo urlencode( 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'] )\; ?>\" target=\"_blank\" onclick=\"javascript: window.open( this.getAttribute( 'href' ), 'Tela Botanica - Remarques', config = 'height=700, width=640, scrollbars=yes, resizable=yes' )\; return false\;\">le formulaire de signalement d'erreurs</a>." |
<br> Veuillez indiquer manuellement le nom de la rue ou/et de la commune." |
releves-exist = "Relevés existants : " |
date = "Date de relevé" |
date-title ="Saisir la date de l’observation" |
157,8 → 157,9 |
transencours = "Transfert des observations en cours...<br /> |
Cela peut prendre plusieurs minutes en fonction de la taille des images et du nombre |
d'observations à transférer." |
transok = "Vos observations ont bien été transmises.<br /> |
Elles sont désormais consultables à travers les différents outils de visualisation |
transok = "Merci pour l'envoi de vos données.<br /> |
Vos observations ont bien été transmises.<br /> |
Elles sont désormais consultables à travers les différents outils de visualisation |
du réseau (<a href=\"https://www.tela-botanica.org/flore/\">eFlore</a>, |
<a href=\"https://www.tela-botanica.org/appli:pictoflora\">galeries d'images</a>, |
<a href=\"https://www.tela-botanica.org/appli:identiplante\">identiplante</a>, |
165,9 → 166,7 |
<a href=\"https://www.tela-botanica.org/widget:cel:cartoPoint\">cartographie (widget)</a>...)<br /> |
Si vous souhaitez les modifier ou les supprimer, vous pouvez les retrouver en vous |
connectant à votre <a href=\"https://www.tela-botanica.org/appli:cel\">Carnet en ligne</a>.<br /> |
N'oubliez pas qu'il est nécessaire de |
<a href=\"https://beta.tela-botanica.org/test/page:inscription\">s'inscrire à Tela Botanica</a> |
au préalable, si ce n'est pas déjà fait." |
Pour toute question n'hésitez pas à nous contacter à l'adresse suivante : apa@tela-botanica.org" |
transko = "Une erreur est survenue lors de la transmission d'une observation.<br /> |
Vous pouvez tenter de la retransmettre en cliquant à nouveau sur le bouton transmettre ou bien la supprimer |
et transmettre les suivantes.<br /> |