Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 2407 → Rev 2408

/trunk/widget/modules/saisie/Saisie.php
9,14 → 9,16
* @link http://www.tela-botanica.org/wikini/eflore/wakka.php?wiki=AideCELWidgetSaisie
*
* Paramètres :
* ===> projet = chaine [par défaut : Biodiversite34]
* ===> projet = chaine [par défaut : defaut] : indique le widgetde saisie à charger.
* ===> mission = chaine [par défaut : vide] : permet de charger un "sous-widget" vis à vis du projet.
* Indique quel projet nous voulons charger
*
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
* @version $Id$
* @copyright Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org)
* @author Mathias CHOUET <mathias@tela-botanica.org>
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Aurelien PERONNET <aurelien@tela-botanica.org>
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
* @copyright 1999-2014 Tela Botanica <accueil@tela-botanica.org>
*/
class Saisie extends WidgetCommun {
 
26,13 → 28,12
const WS_UPLOAD = 'CelWidgetUploadImageTemp';
const WS_OBS = 'CelObs';
const WS_NOM = 'noms';
private $NS_PROJET_VERSION = '1.01';
const EFLORE_API_VERSION = '0.1';
private $NS_PROJET = 'bdtfx';
 
private $projetsVersions = array();
private $ns_referentiel = 'bdtfx';
private $projet = null;
private $configProjet = null;
private $configMission = null;
 
/**
* Méthode appelée par défaut pour charger ce widget.
43,7 → 44,6
 
$this->projet = isset($projet) ? $projet : self::PROJET_DEFAUT;
$this->chargerConfigProjet();
$this->chargerProjetsVersion();
 
$service = isset($service) ? $service : 'widget';
$methode = $this->traiterNomMethodeExecuter($service);
77,7 → 77,14
private function chargerConfigProjet() {
$fichier_config = dirname(__FILE__).self::DS.'configurations'.self::DS.$this->projet.'.ini';
if (file_exists($fichier_config)) {
if (!$this->configProjet = parse_ini_file($fichier_config)) {
if ($this->configProjet = parse_ini_file($fichier_config, true)) {
if (isset($_GET['mission'])) {
$mission = strtolower(trim($_GET['mission']));
if (isset($this->configProjet[$mission])) {
$this->configMission = $this->configProjet[$mission];
}
}
} else {
$this->messages[] = "Le fichier ini '$fichier_config' du projet n'a pu être chargé.";
}
} else {
85,21 → 92,16
}
}
 
private function chargerProjetsVersion() {
if (isset($this->configProjet)) {
foreach ($this->configProjet as $config => $valeur) {
if(strstr($config,'.version')) {
$this->projetsVersions[str_replace('.version', '', $config)] = $valeur;
}
}
}
private function projetASquelette() {
// fonction très simple qui ne teste que si le dossier du projet courant
// existe, mais elle suffit pour le moment.
return file_exists(dirname(__FILE__).self::DS.'squelettes'.self::DS.$this->projet);
}
 
public function executerWidget() {
$referentiel_impose = false;
if (isset($_GET['referentiel']) && $_GET['referentiel'] != '' && $_GET['referentiel'] != "autre") {
$this->NS_PROJET = isset($_GET['referentiel']) && $_GET['referentiel'] != '' ? $_GET['referentiel'] : $this->NS_PROJET;
$this->NS_PROJET_VERSION = $this->projetsVersions[$this->NS_PROJET];
$this->ns_referentiel = isset($_GET['referentiel']) && $_GET['referentiel'] != '' ? $_GET['referentiel'] : $this->ns_referentiel;
$referentiel_impose = true;
}
 
113,21 → 115,17
$widget['donnees']['url_remarques'] = $this->config['chemins']['widgetRemarquesUrl'];
 
$widget['donnees']['logo'] = isset($_GET['logo']) ? $_GET['logo'] : 'defaut';
$widget['donnees']['titre'] = isset($_GET['titre']) ? $_GET['titre'] : 'defaut';
$widget['donnees']['titre'] = ($widget['donnees']['titre'] == '0') ? '' : $widget['donnees']['titre'];
$widget['donnees']['titre'] = $this->getTitrePage();
 
$projetsAutorises = $this->transformerEnTableau($this->config['projets']['autorises']);
if (in_array($this->projet, $projetsAutorises)) {
$urlWsNsTpl = $this->config['chemins']['baseURLServicesEfloreTpl'];
$urlWsNs = sprintf($urlWsNsTpl, self::EFLORE_API_VERSION, $this->NS_PROJET, self::WS_NOM);
$urlWsNs = sprintf($urlWsNsTpl, self::EFLORE_API_VERSION, $this->ns_referentiel, self::WS_NOM);
$urlWsNsSansRef = sprintf($urlWsNsTpl, self::EFLORE_API_VERSION, '{referentiel}', self::WS_NOM);
$widget['donnees']['url_ws_autocompletion_ns'] = $urlWsNs;
$widget['donnees']['url_ws_autocompletion_ns_tpl'] = $urlWsNsSansRef;
$widget['donnees']['ns_referentiel'] = $this->NS_PROJET.':'.$this->NS_PROJET_VERSION;
$widget['donnees']['ns_projet'] = $this->NS_PROJET;
$widget['donnees']['ns_version'] = $this->NS_PROJET_VERSION;
$widget['donnees']['ns_referentiel'] = $this->ns_referentiel;
$widget['donnees']['referentiel_impose'] = $referentiel_impose;
$widget['donnees']['projets_versions'] = $this->projetsVersions;
$widget['donnees']['espece_imposee'] = false;
$widget['donnees']['nn_espece_defaut'] = '';
$widget['donnees']['nom_sci_espece_defaut'] = '';
162,10 → 160,21
return $widget;
}
 
private function projetASquelette() {
// fonction très simple qui ne teste que si le dossier du projet courant
// existe, mais elle suffit pour le moment.
return file_exists(dirname(__FILE__).self::DS.'squelettes'.self::DS.$this->projet);
private function getTitrePage() {
$titre = 'defaut';
if (isset($this->configProjet['titre_page'])) {
$titre = $this->configProjet['titre_page'];
}
if (isset($this->configMission['titre_page'])) {
$titre = $this->configMission['titre_page'];
}
if (isset($_GET['titre'])) {
$titre = $_GET['titre'];
}
if ($titre === 0) {
$titre = '';
}
return $titre;
}
 
public function executerTaxons() {
277,7 → 286,7
 
private function especeEstImposee() {
return (isset($_GET['num_nom']) && $_GET['num_nom'] != ''
|| isset($this->configProjet['sp_imposee']));
|| isset($this->configProjet['sp_imposee']) || isset($this->configMission['sp_imposee']));
}
 
private function getNnEspeceImposee() {
286,12 → 295,14
$nn = $_GET['num_nom'];
} else if (isset($this->configProjet['sp_imposee'])) {
$nn = $this->configProjet['sp_imposee'];
} else if (isset($this->configMission['sp_imposee'])) {
$nn = $this->configMission['sp_imposee'];
}
return $nn;
}
 
private function executerChargementInfosTaxon($num_nom) {
$url_service_infos = sprintf($this->config['chemins']['infosTaxonUrl'], $this->NS_PROJET, $num_nom);
$url_service_infos = sprintf($this->config['chemins']['infosTaxonUrl'], $this->ns_referentiel, $num_nom);
$infos = json_decode(file_get_contents($url_service_infos));
// trop de champs injectés dans les infos espèces peut
// faire planter javascript
/trunk/widget/modules/saisie/configurations/arbres-tetards.ini
File deleted
\ No newline at end of file
/trunk/widget/modules/saisie/configurations/florileges.ini
File deleted
\ No newline at end of file
/trunk/widget/modules/saisie/configurations/sauvages.ini
File deleted
\ No newline at end of file
/trunk/widget/modules/saisie/configurations/defaut.ini
1,7 → 1,0
titre = "Saisie rapide"
 
[referentiels]
bdtfx.version = 1.01
bdtxa.version = 1.00
isfan.version = 1.00
apd.version = 3.4.0
titre = "Saisie rapide"
/trunk/widget/modules/saisie/configurations/missions-flore.ini
1,7 → 1,6
[referentiels]
bdtfx.version = 1.01
; +---------------------------------------------------------------------------------------------------------+
; Ci-dessous créer un groupe pour chaque mission.
; Le nom du groupe sera passé dans l'url via le paramètre "mission".
[odontites]
titre_page = "Odontites luteus (L.) Clairv. [Euphraises jaunes] en Languedoc-Roussillon"
sp_imposee = "44391"
/trunk/widget/modules/saisie/configurations/ambrosia.ini
8,6 → 8,4
Vignes et vergers;Oliveraies incluses|
Cultures pérennes;Luzernes, lavandes, etc.|
Cultures annuelles;Blé, tournesol, etc.|
Friches;Jachères, terres agricoles abandonnées"
[referentiels]
bdtfx.version = 1.01
Friches;Jachères, terres agricoles abandonnées"
/trunk/widget/modules/saisie/squelettes/defaut/defaut.tpl.html
64,12 → 64,8
var SERVICE_SAISIE_URL = "<?=$url_ws_saisie?>";
// URL du web service permettant de récupérer les infos d'une observation du CEL.
var SERVICE_OBS_URL = "<?=$url_ws_obs?>";
// Code du référentiel utilisé pour les nom scientifiques (de la forme nom:code).
// Code du référentiel utilisé pour les nom scientifiques.
var NOM_SCI_REFERENTIEL = "<?=$ns_referentiel?>";
// Nom du référentiel utilisé pour les nom scientifiques.
var NOM_SCI_PROJET = "<?=$ns_projet?>";
// Code de la version du référentiel utilisé pour les nom scientifiques.
var NOM_SCI_VERSION = "<?=$ns_version?>";
// Indication de la présence d'une espèce imposée
var ESPECE_IMPOSEE = "<?=$espece_imposee; ?>";
// Tableau d'informations sur l'espèce imposée
78,14 → 74,11
var AUTOCOMPLETION_ELEMENTS_NBRE = 20;
// Indication de la présence d'un référentiel imposé
var REFERENTIEL_IMPOSE = "<?=$referentiel_impose; ?>";
// Indication des version utilisées de chaque référentiel
var PROJETS_VERSIONS = <?=json_encode($projets_versions)?>;
// URL du web service permettant l'auto-complétion des noms scientifiques.
var SERVICE_AUTOCOMPLETION_NOM_SCI_URL = "<?=$url_ws_autocompletion_ns?>?"+
"masque={masque}&"+
"recherche=etendue&"+
"retour.champs=famille,nom_retenu,nom_retenu_complet,num_taxonomique,nom_retenu.id&"+
//"version.projet="+NOM_SCI_VERSION+"&"+
"ns.structure=au"+"&"+
"navigation.limite="+AUTOCOMPLETION_ELEMENTS_NBRE;
// URL du web service permettant l'auto-complétion des noms scientifiques.
94,7 → 87,6
"recherche=etendue&"+
"retour.champs=famille,nom_retenu,nom_retenu_complet,num_taxonomique,nom_retenu.id&"+
"retour.tri=alpharet&"+ // tri "à la CeL"
//"version.projet="+NOM_SCI_VERSION+"&"+
"ns.structure=au"+"&"+
"navigation.limite="+AUTOCOMPLETION_ELEMENTS_NBRE;
// Nombre d'observations max autorisé avant transmission
/trunk/widget/modules/saisie/squelettes/defaut/js/defaut.js
132,7 → 132,7
};
var addressSuffix = '';
 
switch(NOM_SCI_PROJET) {
switch(NOM_SCI_REFERENTIEL) {
case 'isfan':
// Si des résultats se trouvent dans ce rectangle, ils apparaîtront en premier.
// Ça marche moyen...
236,13 → 236,13
 
function initialiserGoogleMap(){
// Carte
if(NOM_SCI_PROJET == 'bdtxa') {
if(NOM_SCI_REFERENTIEL == 'bdtxa') {
var latLng = new google.maps.LatLng(14.6, -61.08334);// Fort-De-France
var zoomDefaut = 8;
} else if(NOM_SCI_PROJET == 'isfan') {
} else if(NOM_SCI_REFERENTIEL == 'isfan') {
var latLng = new google.maps.LatLng(29.28358, 10.21884);// Afrique du Nord
var zoomDefaut = 4;
} else if(NOM_SCI_PROJET == 'apd') {
} else if(NOM_SCI_REFERENTIEL == 'apd') {
var latLng = new google.maps.LatLng(8.75624, 1.80176);// Afrique de l'Ouest et du Centre
var zoomDefaut = 4;
} else {
724,7 → 724,7
'<li>'+
'<span class="nom-sci">'+$("#taxon").val()+'</span> '+
ajouterNumNomSel()+'<span class="referentiel-obs">'+
($("#taxon").data("numNomSel") == undefined ? '' : '['+NOM_SCI_PROJET+']')+'</span>'+
($("#taxon").data("numNomSel") == undefined ? '' : '['+NOM_SCI_REFERENTIEL+']')+'</span>'+
' observé à '+
'<span class="commune">'+$('#commune-nom').text()+'</span> '+
'('+$('#commune-code-insee').text()+') ['+$("#latitude").val()+' / '+$("#longitude").val()+']'+
758,7 → 758,7
'num_nom_ret' : $("#taxon").data("numNomRet"),
'num_taxon' : $("#taxon").data("nt"),
'famille' : $("#taxon").data("famille"),
'referentiel' : ($("#taxon").data("numNomSel") == undefined ? '' : NOM_SCI_PROJET),
'referentiel' : ($("#taxon").data("numNomSel") == undefined ? '' : NOM_SCI_REFERENTIEL),
 
'latitude' : $("#latitude").val(),
'longitude' : $("#longitude").val(),
775,8 → 775,7
}
 
function surChangementReferentiel() {
NOM_SCI_PROJET = $('#referentiel').val();
NOM_SCI_REFERENTIEL = NOM_SCI_PROJET+':'+PROJETS_VERSIONS[NOM_SCI_PROJET];
NOM_SCI_REFERENTIEL = $('#referentiel').val();
$('#taxon').val('');
initialiserAutocompleteCommune();
initialiserGoogleMap();
1101,7 → 1100,7
 
function getUrlAutocompletionNomsSci() {
var mots = $('#taxon').val();
var url = SERVICE_AUTOCOMPLETION_NOM_SCI_URL_TPL.replace('{referentiel}',NOM_SCI_PROJET);
var url = SERVICE_AUTOCOMPLETION_NOM_SCI_URL_TPL.replace('{referentiel}',NOM_SCI_REFERENTIEL);
url = url.replace('{masque}', mots);
return url;
}
/trunk/widget/modules/saisie/squelettes/missions-flore/squelettes/odontites/titre.tpl.html
New file
0,0 → 1,3
<img id="logo-titre" class="span1" src="<?=$url_base?>/modules/saisie/squelettes/missions-flore/img/logos/tela_botanica.png" alt="Tela Botanica" />
<img id="logo-titre" class="span1" src="<?=$url_base?>/modules/saisie/squelettes/missions-flore/img/logos/cbnmed.png" alt="CBN Porquerolles" />
À la découverte d'<strong>Euphraises jaunes</strong> (<i>Odontites luteus</i> (L.) Clairv.) en Languedoc-Roussillon
/trunk/widget/modules/saisie/squelettes/missions-flore/squelettes/odontites/projet.tpl.html
New file
0,0 → 1,53
<p>
<strong>L'objectif :</strong> observer <b><i>Odontites luteus</i> (L.) Clairv.</b>,
connue sous le nom de l'<i>Euphraise jaune</i>, sur le terrain, du 1er au 15 octobre 2014 !
</p>
<h4>Étape 1 : Préparez votre sortie !</h4>
<ul>
<li>
Apprenez à reconnaître <i>Odontites luteus</i> (L.) Clairv.
à l'aide de sa
<a target="_blank" href="http://www.tela-botanica.org/bdtfx-nn-44391-description">fiche descriptive</a>
sur l'encyclopédie de la Botanique
<b><a target="_blank" href="http://www.tela-botanica.org/page:eflore">eFlore</a></b>.
</li>
<li>
Choisissez le(s) site(s) en région Languedoc-Roussillon à prospecter
pour observer la plante. Vous pouvez
<a target="_blank" href="http://www.tela-botanica.org/widget-test:cel:cartoPoint?logo=http://tela-botanica.net/dl/logo/cbnporquerolle_telabotanica.jpeg&utilisateur=adeline@tela-botanica.org&dept=34,30,66,11,48">
visualiser la répartition historique de la plante dans la région (de 1893 à 2013)
</a>.
</li>
<li>
Télécharger
<a target="_blank" href="<?=$url_base?>/modules/saisie/squelettes/missions-flore/doc/odontites/fiche_terrain.pdf">
votre fiche de terrain.
</a>
</li>
</ul>
<h4>Étape 2 : Partez sur le terrain !</h4>
<ul>
<li>
Emportez votre fiche de terrain et au besoin d'une flore et d'une loupe
pour vous aider à identifier la plante.
</li>
<li>
Prospectez un ou plusieurs site(s) choisi(s), seul, avec des telabotanistes
ou avec le soutien de structures botaniques.
</li>
<li>Notez le maximum d'informations sur la fiche de terrain.</li>
<li>
Pensez à prendre des photos de la plante : port de la plante, organes
de la plante...
<b>vos clichés doivent être les plus nets et précis possibles !</b>
</li>
</ul>
<h4>Étape 3 : Saisissez vos données.</h4>
<ul>
<li>Saisissez vos informations recueillies sur ce formulaire.</li>
<li>
<a target="_blank" href="http://www.tela-botanica.org/widget:cel:cartoPoint?logo=http://tela-botanica.net/dl/logo/cbnporquerolle_telabotanica.jpeg&num_taxon=12783&referentiel=bdtfx&dept=34,30,66,48,11&titre=Mission%20Odontites%202014&annee=2014">
Visualisez vos observations d'<i>Odontites luteus</i> (L.) Clairv. sur la carte des résultats.
</a>
</li>
</ul>
/trunk/widget/modules/saisie/squelettes/missions-flore/missions-flore.tpl.html
2,8 → 2,8
<html lang="fr">
<head>
<?php if (isset($_GET['mission'])) :?>
<?php if ($_GET['mission'] == 'odontites') :?>
<title>Odontites luteus (L.) Clairv. [Euphraises jaunes] en Languedoc-Roussillon</title>
<?php if (isset($titre)) :?>
<title><?=$titre ?></title>
<?php endif; ?>
<?php else : ?>
<title>Mission flore inconnue !</title>
65,10 → 65,8
TAG_OBS = <?=isset($_GET['projet']) ? "'".$_GET['projet']."' + SEPARATION_TAG_OBS + TAG_OBS" : 'TAG_OBS' ?>;
 
 
// Code du référentiel utilisé pour les nom scientifiques (de la forme nom:code).
// Code du référentiel utilisé pour les nom scientifiques.
var NOM_SCI_REFERENTIEL = "<?=$ns_referentiel?>";
// Nom du référentiel utilisé pour les nom scientifiques.
var NOM_SCI_PROJET = "<?=$ns_projet?>";
 
// Indication de la présence d'une espèce imposée
var ESPECE_IMPOSEE = "<?=$espece_imposee; ?>";
75,8 → 73,6
// Tableau d'informations sur l'espèce imposée
var INFOS_ESPECE_IMPOSEE = <?=$infos_espece; ?>;
 
// Indication des version utilisées de chaque référentiel
var PROJETS_VERSIONS = <?=json_encode($projets_versions)?>;
// Nombre d'élément dans les listes d'auto-complétion
var AUTOCOMPLETION_ELEMENTS_NBRE = 20;
// URL du web service permettant l'auto-complétion des noms scientifiques.
132,10 → 128,8
<div>
<h1>
<?php if (isset($_GET['mission'])) :?>
<?php if ($_GET['mission'] == 'odontites') :?>
<img id="logo-titre" class="span1" src="<?=$url_base?>/modules/saisie/squelettes/missions-flore/img/logos/tela_botanica.png" alt="Tela Botanica" />
<img id="logo-titre" class="span1" src="<?=$url_base?>/modules/saisie/squelettes/missions-flore/img/logos/cbnmed.png" alt="CBN Porquerolles" />
À la découverte d'<strong>Euphraises jaunes</strong> (<i>Odontites luteus</i> (L.) Clairv.) en Languedoc-Roussillon
<?php if (file_exists('./modules/saisie/squelettes/missions-flore/squelettes/'.$_GET['mission'].'/titre.tpl.html')) :?>
<?php include_once './modules/saisie/squelettes/missions-flore/squelettes/'.$_GET['mission'].'/titre.tpl.html'; ?>
<?php endif; ?>
<?php else : ?>
<img id="logo-titre" class="span1" src="<?=$url_base?>/modules/saisie/squelettes/missions-flore/img/logos/tela_botanica.png" alt="Tela Botanica" />
155,60 → 149,8
</h3>
</a>
<?php if (isset($_GET['mission'])) :?>
<?php if ($_GET['mission'] == 'odontites') :?>
<p>
<strong>L'objectif :</strong> observer <b><i>Odontites luteus</i> (L.) Clairv.</b>,
connue sous le nom de l'<i>Euphraise jaune</i>, sur le terrain, du 1er au 15 octobre 2014 !
</p>
<h4>Étape 1 : Préparez votre sortie !</h4>
<ul>
<li>
Apprenez à reconnaître <i>Odontites luteus</i> (L.) Clairv.
à l'aide de sa
<a target="_blank" href="http://www.tela-botanica.org/bdtfx-nn-44391-description">fiche descriptive</a>
sur l'encyclopédie de la Botanique
<b><a target="_blank" href="http://www.tela-botanica.org/page:eflore">eFlore</a></b>.
</li>
<li>
Choisissez le(s) site(s) en région Languedoc-Roussillon à prospecter
pour observer la plante. Vous pouvez
<a target="_blank" href="http://www.tela-botanica.org/widget-test:cel:cartoPoint?logo=http://tela-botanica.net/dl/logo/cbnporquerolle_telabotanica.jpeg&utilisateur=adeline@tela-botanica.org&dept=34,30,66,11,48">
visualiser la répartition historique de la plante dans la région (de 1893 à 2013)
</a>.
</li>
<li>
Télécharger
<a target="_blank" href="<?=$url_base?>/modules/saisie/squelettes/missions-flore/doc/odontites/fiche_terrain.pdf">
votre fiche de terrain.
</a>
</li>
</ul>
<h4>Étape 2 : Partez sur le terrain !</h4>
<ul>
<li>
Emportez votre fiche de terrain et au besoin d'une flore et d'une loupe
pour vous aider à identifier la plante.
</li>
<li>
Prospectez un ou plusieurs site(s) choisi(s), seul, avec des telabotanistes
ou avec le soutien de structures botaniques.
</li>
<li>Notez le maximum d'informations sur la fiche de terrain.</li>
<li>
Pensez à prendre des photos de la plante : port de la plante, organes
de la plante...
<b>vos clichés doivent être les plus nets et précis possibles !</b>
</li>
</ul>
<h4>Étape 3 : Saisissez vos données.</h4>
<ul>
<li>Saisissez vos informations recueillies sur ce formulaire.</li>
<li>
<a target="_blank" href="http://www.tela-botanica.org/widget:cel:cartoPoint?logo=http://tela-botanica.net/dl/logo/cbnporquerolle_telabotanica.jpeg&num_taxon=12783&referentiel=bdtfx&dept=34,30,66,48,11&titre=Mission%20Odontites%202014&annee=2014">
Visualisez vos observations d'<i>Odontites luteus</i> (L.) Clairv. sur la carte des résultats.
</a>
</li>
</ul>
<?php if (file_exists('./modules/saisie/squelettes/missions-flore/squelettes/'.$_GET['mission'].'/projet.tpl.html')) :?>
<?php include_once './modules/saisie/squelettes/missions-flore/squelettes/'.$_GET['mission'].'/projet.tpl.html'; ?>
<?php endif; ?>
<?php else : ?>
<p>Mission flore inconnue !</p>
/trunk/widget/modules/saisie/squelettes/missions-flore/js/missions-flore.js
132,7 → 132,7
};
var addressSuffix = '';
 
switch(NOM_SCI_PROJET) {
switch(NOM_SCI_REFERENTIEL) {
case 'isfan':
// Si des résultats se trouvent dans ce rectangle, ils apparaîtront en premier.
// Ça marche moyen...
235,13 → 235,13
 
function initialiserGoogleMap(){
// Carte
if(NOM_SCI_PROJET == 'bdtxa') {
if(NOM_SCI_REFERENTIEL == 'bdtxa') {
var latLng = new google.maps.LatLng(14.6, -61.08334);// Fort-De-France
var zoomDefaut = 8;
} else if(NOM_SCI_PROJET == 'isfan') {
} else if(NOM_SCI_REFERENTIEL == 'isfan') {
var latLng = new google.maps.LatLng(29.28358, 10.21884);// Afrique du Nord
var zoomDefaut = 4;
} else if(NOM_SCI_PROJET == 'apd') {
} else if(NOM_SCI_REFERENTIEL == 'apd') {
var latLng = new google.maps.LatLng(8.75624, 1.80176);// Afrique de l'Ouest et du Centre
var zoomDefaut = 4;
} else {
780,7 → 780,7
'num_nom_ret' : $("#taxon").data("numNomRet"),
'num_taxon' : $("#taxon").data("nt"),
'famille' : $("#taxon").data("famille"),
'referentiel' : ($("#taxon").data("numNomSel") == undefined ? '' : NOM_SCI_PROJET),
'referentiel' : ($("#taxon").data("numNomSel") == undefined ? '' : NOM_SCI_REFERENTIEL),
 
'latitude' : $("#latitude").val(),
'longitude' : $("#longitude").val(),
815,8 → 815,7
}
 
function surChangementReferentiel() {
NOM_SCI_PROJET = $('#referentiel').val();
NOM_SCI_REFERENTIEL = NOM_SCI_PROJET+':'+PROJETS_VERSIONS[NOM_SCI_PROJET];
NOM_SCI_REFERENTIEL = $('#referentiel').val();
$('#taxon').val('');
initialiserAutocompleteCommune();
initialiserGoogleMap();
1106,7 → 1105,7
nn = '<span class="alert-error">[non lié au référentiel]</span>';
} else {
nn = '<span class="nn">['+
'<span class="referentiel-obs">'+($("#taxon").data("numNomSel") == undefined ? '' : NOM_SCI_PROJET+'-')+'</span>'+
'<span class="referentiel-obs">'+($("#taxon").data("numNomSel") == undefined ? '' : NOM_SCI_REFERENTIEL+'-')+'</span>'+
'nn'+$("#taxon").data("numNomSel")+
']</span>';
}
1142,7 → 1141,7
 
function getUrlAutocompletionNomsSci() {
var mots = $('#taxon').val();
var url = SERVICE_AUTOCOMPLETION_NOM_SCI_URL_TPL.replace('{referentiel}',NOM_SCI_PROJET);
var url = SERVICE_AUTOCOMPLETION_NOM_SCI_URL_TPL.replace('{referentiel}',NOM_SCI_REFERENTIEL);
url = url.replace('{masque}', mots);
return url;
}
/trunk/widget/modules/saisie/squelettes/florileges/florileges.tpl.html
3,7 → 3,7
<head>
<title>Florilèges</title>
<meta charset="utf-8">
 
<meta name="author" content="Jean-Pascal MILCENT, Aurélien PERONNET" />
<meta name="keywords" content="Florilege, Tela Botanica, CEL" />
<meta name="description" content="Widget de saisie du projet Florilege" />
10,18 → 10,18
 
<!-- Viewport Mobile -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
 
<!-- Favicones -->
<link rel="shortcut icon" type="image/x-icon" href="<?=$url_base?>/modules/saisie/squelettes/florileges/img/favicon.ico" />
 
<!-- Javascript : bibliothèques -->
<!-- Google Map v3 -->
<!--<script type="text/javascript" src="https://getfirebug.com/firebug-lite.js"></script>-->
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true&amp;language=fr&amp;region=FR"></script>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true&amp;language=fr&amp;region=FR"></script>
 
<!-- Jquery -->
<script type="text/javascript" src="http://www.tela-botanica.org/commun/jquery/1.7.1/jquery-1.7.1.min.js"></script>
 
<!-- Jquery UI : nécessaire pour le minicalendrier et l'auto-complétion -->
<script type="text/javascript" src="http://www.tela-botanica.org/commun/jquery/jquery-ui/1.10.2/js/jquery-ui-1.10.2.custom.min.js"></script>
<script type="text/javascript" src="http://www.tela-botanica.org/commun/jquery/jquery-ui/1.10.2/js/jquery.ui.datepicker-fr.min.js"></script>
32,10 → 32,10
<script type="text/javascript" src="http://www.tela-botanica.org/commun/jquery/validate/1.11.1/messages_fr.js"></script>
<!-- Jquery Form :nécessaire pour l'upload des images -->
<script type="text/javascript" src="http://www.tela-botanica.org/commun/jquery/form/3.32/jquery.form.min.js"></script>
 
<!-- Bootstrap -->
<script type="text/javascript" src="http://www.tela-botanica.org/commun/bootstrap/2.3.2/js/bootstrap.min.js"></script>
 
<!-- Javascript : appli saisie -->
<script src="<?=$url_base?>saisie?projet=florileges&amp;service=taxons" type="text/javascript"></script>
<script type="text/javascript">
46,7 → 46,7
var HTML5 = <?=isset($_GET['html5']) ? 'true' : 'false'?>;
// Mot-clé du widget/projet
var TAG_PROJET = "Florileges,WidgetFlorileges,Sauvages";
 
// Mots-clés à ajouter aux images
var TAG_IMG = "<?=isset($_GET['tag-img']) ? $_GET['tag-img'] : ''?>";
var SEPARATION_TAG_IMG = "<?= isset($_GET['motcle']) && isset($_GET['tag-img']) ? ',' : '' ?>";
55,7 → 55,7
var TAG_OBS = "<?=isset($_GET['tag-obs']) ? $_GET['tag-obs'] : ''?>";
var SEPARATION_TAG_OBS = "<?= isset($_GET['projet']) && isset($_GET['tag-obs']) ? ',' : '' ?>";
TAG_OBS = <?=isset($_GET['projet']) ? "'".$_GET['projet']."' + SEPARATION_TAG_OBS + TAG_OBS" : 'TAG_OBS' ?>;
 
// Précharger le formulaire avec les infos d'une observation
var OBS_ID = "<?=isset($_GET['id-obs']) ? $_GET['id-obs'] : ''?>";
// URL du web service réalisant l'insertion des données dans la base du CEL.
62,12 → 62,8
var SERVICE_SAISIE_URL = "<?=$url_ws_saisie?>";
// URL du web service permettant de récupérer les infos d'une observation du CEL.
var SERVICE_OBS_URL = "<?=$url_ws_obs?>";
// Code du référentiel utilisé pour les nom scientifiques (de la forme nom:code).
// Code du référentiel utilisé pour les nom scientifiques.
var NOM_SCI_REFERENTIEL = "<?=$ns_referentiel?>";
// Nom du référentiel utilisé pour les nom scientifiques.
var NOM_SCI_PROJET = "<?=$ns_projet?>";
// Code de la version du référentiel utilisé pour les nom scientifiques.
var NOM_SCI_VERSION = "<?=$ns_version?>";
// Indication de la présence d'une espèce imposée
var ESPECE_IMPOSEE = "<?=$espece_imposee; ?>";
// Tableau d'informations sur l'espèce imposée
76,14 → 72,11
var AUTOCOMPLETION_ELEMENTS_NBRE = 20;
// Indication de la présence d'un référentiel imposé
var REFERENTIEL_IMPOSE = "<?=$referentiel_impose; ?>";
// Indication des version utilisées de chaque référentiel
var PROJETS_VERSIONS = <?=json_encode($projets_versions)?>;
// URL du web service permettant l'auto-complétion des noms scientifiques.
var SERVICE_AUTOCOMPLETION_NOM_SCI_URL = "<?=$url_ws_autocompletion_ns?>?"+
"masque={masque}&"+
"recherche=etendue&"+
"retour.champs=famille,nom_retenu,nom_retenu_complet,num_taxonomique,nom_retenu.id&"+
//"version.projet="+NOM_SCI_VERSION+"&"+
"ns.structure=au"+"&"+
"navigation.limite="+AUTOCOMPLETION_ELEMENTS_NBRE;
// URL du web service permettant l'auto-complétion des noms scientifiques.
91,7 → 84,6
"masque={masque}&"+
"recherche=etendue&"+
"retour.champs=famille,nom_retenu,nom_retenu_complet,num_taxonomique,nom_retenu.id&"+
//"version.projet="+NOM_SCI_VERSION+"&"+
"ns.structure=au"+"&"+
"navigation.limite="+AUTOCOMPLETION_ELEMENTS_NBRE;
// Nombre d'observations max autorisé avant transmission
119,7 → 111,7
//]]>
</script>
<script type="text/javascript" src="<?=$url_base?>modules/saisie/squelettes/florileges/js/florileges.js"></script>
 
<!-- CSS -->
<link href="http://www.tela-botanica.org/commun/jquery/jquery-ui/1.10.2/css/smoothness/jquery-ui-1.10.2.custom.css" rel="stylesheet" type="text/css" media="screen" />
<link href="http://www.tela-botanica.org/commun/bootstrap/2.3.2/css/bootstrap.min.css" rel="stylesheet" type="text/css" media="screen" />
136,9 → 128,9
<p>
Bienvenue sur l'interface de saisie en ligne des données
"Florilèges"-RUES. Cette interface vous permet d'enregistrer vos
observations de terrain et de les partager simplement
observations de terrain et de les partager simplement
(sous <a href="http://creativecommons.org/licenses/by-sa/2.0/fr/">licence CC-BY-SA</a>)
avec <a href="http://www.plante-et-cite.fr">Plante &amp; Cité</a>,
avec <a href="http://www.plante-et-cite.fr">Plante &amp; Cité</a>,
<a href="http://www.tela-botanica.org/site:accueil">le réseau Tela Botanica</a>
et <a href="http://sauvagesdemarue.mnhn.fr">le programme Sauvage de ma Rue</a>.
</p>
145,9 → 137,9
<p>
En vous identifiant, vous pourrez retrouver et consulter l'ensemble de
vos observations dans <a href="http://www.tela-botanica.org/appli:cel">le Carnet en ligne</a>.<br />
Renseignez tout d'abord les caractéristiques et l'itinéraire technique mis en place
sur le site des relevés, puis détaillez ensuite les espèces observées sur ce site.
Ajoutez chaque observation à la liste à transmettre à l'aide du bouton
Renseignez tout d'abord les caractéristiques et l'itinéraire technique mis en place
sur le site des relevés, puis détaillez ensuite les espèces observées sur ce site.
Ajoutez chaque observation à la liste à transmettre à l'aide du bouton
«&nbsp;Créer&nbsp;».
</p>
<p>
154,9 → 146,9
L'interface de saisie vous permet de renseigner jusqu'à 10 observations à des dates
différentes pour un même site.
Partagez-les avec le bouton «&nbsp;Transmettre&nbsp;».
Elles apparaissent immédiatement sur
<a href="http://www.tela-botanica.org/site:botanique?langue=fr">la carte</a> et
<a href="http://www.tela-botanica.org/site:botanique?langue=fr">la galerie photos</a>
Elles apparaissent immédiatement sur
<a href="http://www.tela-botanica.org/site:botanique?langue=fr">la carte</a> et
<a href="http://www.tela-botanica.org/site:botanique?langue=fr">la galerie photos</a>
du projet.
</p>
<p>
168,11 → 160,11
<button id="btn-aide" class="btn btn-mini btn-success">
<span class="icon-question-sign icon-white"></span>
<span id="btn-aide-txt" >Désactiver l'aide</span>
</button>
</button>
</p>
</div>
</div>
 
<div class="span5">
<div class="well forcer-colonne">
<h2>Observateur</h2>
180,11 → 172,11
<div class="row-fluid">
<div class="span6 control-group has-tooltip" data-placement="bottom"
title="Saisissez le courriel avec lequel vous être 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
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 : prénom et nom.">
<label class="control-label" for="courriel">
<strong class="obligatoire">*</strong>
<strong class="obligatoire">*</strong>
Courriel
</label>
<div class="controls">
196,11 → 188,11
<input id="id_utilisateur" name="id_utilisateur" type="hidden"/>
</div>
</div>
 
</div>
<div id="zone-courriel-confirmation" class="span6 hidden control-group has-tooltip"
data-placement="bottom"
title="Saisissez à nouveau votre courriel afin de le confirmer. Le
data-placement="bottom"
title="Saisissez à nouveau votre courriel afin de le confirmer. Le
copier/coller est désactivé pour éviter les erreurs.">
<label class="control-label" for="courriel_confirmation">
<strong class="obligatoire">*</strong>
211,7 → 203,7
<span class="add-on">
<i class="icon-envelope"></i>
</span>
<input id="courriel_confirmation" name="courriel_confirmation"
<input id="courriel_confirmation" name="courriel_confirmation"
class="span11" type="text"/>
</div>
</div>
237,8 → 229,8
</div>
<div id="zone-personne-complement" class="forcer-colonne">
<div class="row-fluid">
<div class="span6 control-group has-tooltip"
title="Précisez l'entreprise, l'association, l'école, ... au nom de
<div class="span6 control-group has-tooltip"
title="Précisez l'entreprise, l'association, l'école, ... au nom de
laquelle vous participez.">
<label for="structure" class="control-label">
<strong class="obligatoire">*</strong>
245,11 → 237,11
Structure
</label>
<div class="controls">
<input id="structure" name="personneStructure" class="span12 obs-chp-etendu"
<input id="structure" name="personneStructure" class="span12 obs-chp-etendu"
type="text" data-label="Structure de l'observateur"/>
</div>
</div>
<div class="span6 control-group has-tooltip"
<div class="span6 control-group has-tooltip"
title="Précisez le service de la structure au nom de laquelle vous participez.">
<label for="service" class="control-label">
<strong class="obligatoire">*</strong>
256,7 → 248,7
Service
</label>
<div class="controls">
<input id="service" name="personneService" class="span12 obs-chp-etendu"
<input id="service" name="personneService" class="span12 obs-chp-etendu"
type="text" data-label="Service de l'observateur"/>
</div>
</div>
267,7 → 259,7
<label for="fonction">
Fonction
</label>
<input id="fonction" name="personneFonction" class="span12 obs-chp-etendu"
<input id="fonction" name="personneFonction" class="span12 obs-chp-etendu"
type="text" data-label="Fonction de l'observateur"/>
</div>
</div>
293,7 → 285,7
<p>
Vous n'êtes pas inscrit à Tela Botanica avec ce courriel.<br/>
Veuillez compléter les champs supplémentaires ou indiquer votre courriel d'inscription.<br/>
Pour retrouver vos observations dans le <a href="http://www.tela-botanica.org/appli:cel">Carnet en ligne</a>,
Pour retrouver vos observations dans le <a href="http://www.tela-botanica.org/appli:cel">Carnet en ligne</a>,
il sera nécesaire de <a href="http://www.tela-botanica.org/page:inscription">vous inscrire à Tela Botanica</a>.
</p>
</div>
316,7 → 308,7
</div>
</div>
<div class="row-fluid">
<div class="span12 control-group has-tooltip"
<div class="span12 control-group has-tooltip"
title="Nom du site d'étude (quartier, rue, ...)." >
<label for="station" class="control-label">
<strong class="obligatoire">*</strong>
330,7 → 322,7
<div class="forcer-colonne well control-group">
<div class="row-fluid">
<div class="span12">
<label for="map_canvas" class="control-label"
<label for="map_canvas" class="control-label"
title="Veuillez localiser l'observation">
<strong class="obligatoire">*</strong>
Géolocalisation
347,7 → 339,7
</div>
<div class="form-search form-horizontal">
<div class="control-group">
<input id="carte-recherche"
<input id="carte-recherche"
class="search-query span12 obs-chp-etendu has-tooltip"
type="text"
title="Permet de centrer la carte sur le lieu recherché. Il est nécessaire de sélectionner le lieu dans la liste déroulante."
361,9 → 353,9
</div>
<div class="row-fluid">
<div class="span12">
<div id="map-canvas" class="has-tooltip"
<div id="map-canvas" class="has-tooltip"
title="Vous pouvez cliquer sur la carte pour déplacer le marqueur
représentant votre station ou bien le glisser-déposer sur
représentant votre station ou bien le glisser-déposer sur
le lieu souhaité."></div>
</div>
</div>
373,7 → 365,7
<span class="afficher-coord-action">Afficher</span>
<span class="afficher-coord-action" style="display:none;">Cacher</span>
coordonnées
<span id="lat-lon-info" class="info has-tooltip"
<span id="lat-lon-info" class="info has-tooltip"
title="Système géodésique mondial, révision de 1984 - Coordonnées non projetées">
(WGS84)
</span>
383,7 → 375,7
<span for="marqueur-commune">Commune : </span>
<span id="marqueur-commune">
<span id="commune-nom" class="commune-info"></span>
(<span id="commune-code-insee" class="commune-info has-tooltip"
(<span id="commune-code-insee" class="commune-info has-tooltip"
title="Code INSEE de la commune"></span>)
</span>
</div>
425,7 → 417,7
</div>
</div>
<div class="row-fluid">
<div class="span12 control-group has-tooltip"
<div class="span12 control-group has-tooltip"
title="Précisez la typologie du site." >
<label for="typo-urbaine" class="control-label">
<strong class="obligatoire">*</strong>
445,7 → 437,7
</div>
</div>
<div class="row-fluid">
<div class="span12 control-group has-tooltip"
<div class="span12 control-group has-tooltip"
title="Indiquez le type de revêtement au sol." >
<label for="revetement-sol" class="control-label">
<strong class="obligatoire">*</strong>
465,11 → 457,11
</div>
</div>
<div class="row-fluid">
<div class="span12 has-tooltip"
<div class="span12 has-tooltip"
title="Évaluez la densité de zones végétalisés autour du site (haie, aménagement paysager, parcs et jardins, ...)." >
<label>
Présence de zones végétalisés
<select id="presence-zone-vegetalise" class="obs-chp-etendu slider"
<select id="presence-zone-vegetalise" class="obs-chp-etendu slider"
name="presenceZoneVegetalise" data-label="Présence de zones végétalisés">
<option selected value=""></option>
<option value="nulle">nulle</option>
481,11 → 473,11
</div>
</div>
<div class="row-fluid">
<div class="span12 has-tooltip"
<div class="span12 has-tooltip"
title="Indiquez la hauteur des bâtiments avoisinants (en étages)." >
<label>
Hauteur des bâtiments
<select id="hauteur-batiment-avoisinant" class="obs-chp-etendu slider"
<select id="hauteur-batiment-avoisinant" class="obs-chp-etendu slider"
name="hauteurBatimentAvoisinant" data-label="Hauteur des bâtiments">
<option selected value=""></option>
<option value="0">0</option>
506,7 → 498,7
</div>
</div>
<div class="row-fluid">
<div class="span12 control-group has-tooltip"
<div class="span12 control-group has-tooltip"
title="Évaluez l'intensité de gestion du site." >
<label for="intensite-gestion" class="control-label">
<strong class="obligatoire">*</strong>
513,7 → 505,7
Intensité de gestion
</label>
<div class="controls">
<select id="intensite-gestion" class="span12 obs-chp-etendu"
<select id="intensite-gestion" class="span12 obs-chp-etendu"
name="intensiteGestion" data-label="Intensité de gestion">
<option selected value="">Sélectionnez l'intensité</option>
<option>extensive</option>
526,7 → 518,7
<div class="row-fluid">
<div class="span12">
<div class="row-fluid">
<div class="span12 control-group has-tooltip"
<div class="span12 control-group has-tooltip"
title="Évaluez la fréquence d'utilisation de produits phytosanitaires sur le site." >
<label for="periodicite-traitement-phyto" class="control-label">
<strong class="obligatoire">*</strong>
533,8 → 525,8
Utilisation de produits phytosanitaires
</label>
<div class="controls">
<select id="periodicite-traitement-phyto"
class="obs-chp-etendu slider"
<select id="periodicite-traitement-phyto"
class="obs-chp-etendu slider"
name="periodiciteTraitementPhyto"
data-label="Utilisation de produits phytosanitaires">
<option selected value=""></option>
547,17 → 539,17
</div>
</div>
<div id="datp-zone" class="row-fluid hidden">
<div class="span12 has-tooltip"
title="Indiquez la date approximative de l'arrêt des traitements.
Vous pouvez cliquer sur l'icône de calendrier pour
<div class="span12 has-tooltip"
title="Indiquez la date approximative de l'arrêt des traitements.
Vous pouvez cliquer sur l'icône de calendrier pour
sélectionner une date dans un calendrier.">
<label title="Veuillez indiquer la date du relevé au format jj/mm/aaaa">
Date d'arrêt des traitements
<div class="input-prepend">
<span id="date-arret-traitement-phyto-icone" class="add-on"></span>
<input id="date-arret-traitement-phyto" class="input-small obs-chp-etendu"
<input id="date-arret-traitement-phyto" class="input-small obs-chp-etendu"
name="dateArretTraitementPhyto" type="text"
placeholder="jj/mm/aaaa"
placeholder="jj/mm/aaaa"
data-label="Date d'arrêt des traitements"/>
</div>
</label>
566,8 → 558,8
</div>
</div>
<div class="row-fluid">
<div class="span12 control-group has-tooltip"
title="Description de l'itinéraire de gestion (type de traitement,
<div class="span12 control-group has-tooltip"
title="Description de l'itinéraire de gestion (type de traitement,
matériel utilisé, fréquence de passage, ...)." >
<label for="itineraire-gestion" class="control-label">
<strong class="obligatoire">*</strong>
574,8 → 566,8
Description de l'itinéraire de gestion
</label>
<div class="controls">
<textarea id="itineraire-gestion" class="span12 obs-chp-etendu"
rows="7" name="itineraireGestion"
<textarea id="itineraire-gestion" class="span12 obs-chp-etendu"
rows="7" name="itineraireGestion"
data-label="Description de l'itinéraire de gestion"></textarea>
</div>
</div>
594,26 → 586,26
</div>
<div class="span9">
<form id="form-date" class="form-inline">
<div class="span5 control-group has-tooltip"
title="Vous pouvez cliquer sur l'icône de calendrier pour
sélectionner une date dans un calendrier. La date doit être au format :
<div class="span5 control-group has-tooltip"
title="Vous pouvez cliquer sur l'icône de calendrier pour
sélectionner une date dans un calendrier. La date doit être au format :
jj/mm/aaaa">
<label class="control-label">
<strong class="obligatoire">*</strong>
Date du relevé
Date du relevé
<div class="input-prepend">
<span id="date-icone" class="add-on"></span>
<input id="date" class="input-small" name="date" type="text"
<input id="date" class="input-small" name="date" type="text"
placeholder="jj/mm/aaaa" />
</div>
</label>
</div>
<div class="span7 control-group has-tooltip"
<div class="span7 control-group has-tooltip"
title="Date approximative de la dernière intervention." >
<label class="span12 control-label">
<strong class="obligatoire">*</strong>
Dernière intervention
<select id="date-derniere-intervention" class="span8 obs-chp-etendu"
<select id="date-derniere-intervention" class="span8 obs-chp-etendu"
name="dateDerniereIntervention" data-label="Dernière intervention">
<option selected value="">Sélectionnez la date d'intervention</option>
<option value="inconnue">ne sais pas</option>
637,10 → 629,10
<div class="row-fluid">
<div class="span12">
<div id="taxon-liste-input-groupe" class="control-group has-tooltip"
title="Sélectionnez une espèce dans la liste déroulante par son nom latin
title="Sélectionnez une espèce dans la liste déroulante par son nom latin
ou commun. Si une espèce est absente, sélectionner «Autre espèce»." >
<label class="control-label" for="taxon-liste" title="Choisissez l'espèce rencontrée.">
<strong class="obligatoire">*</strong>
<strong class="obligatoire">*</strong>
Espèces les plus communes
</label>
<div class="controls">
648,15 → 640,15
<span class="add-on">
<i class="icon-leaf"></i>
</span>
 
<select id="taxon-liste" class="span10" name="taxon-liste">
<option value="" selected>Sélectionner une espèce</option>
 
<optgroup id="taxon-liste-noms">
<?php foreach ($taxons['sci-et-fr'] as $taxon) :?>
<option
class="<?=$taxon['nom_type'] ?>"
value="<?=$taxon['num_nom'] ?>"
<option
class="<?=$taxon['nom_type'] ?>"
value="<?=$taxon['num_nom'] ?>"
title="<?=$taxon['nom_title'] ?>"
data-nom-a-sauver="<?=$taxon['nom_a_sauver'] ?>"
>
666,9 → 658,9
</optgroup>
<optgroup id="taxon-liste-special">
<?php foreach ($taxons['speciaux'] as $taxon) :?>
<option
class="<?=$taxon['nom_type'] ?>"
value="<?=$taxon['num_nom'] ?>"
<option
class="<?=$taxon['nom_type'] ?>"
value="<?=$taxon['num_nom'] ?>"
title="<?=$taxon['nom_title'] ?>"
data-nom-a-sauver="<?=$taxon['nom_a_sauver'] ?>"
>
685,9 → 677,9
</div>
<div id="taxon-input-groupe" class="row-fluid hidden">
<div class="span12">
<div class="control-group has-tooltip"
title="Sélectionnez une espèce dans la liste déroulante pour lier
votre nom au référentiel. Si vous le désirez vous pouvez aussi saisir
<div class="control-group has-tooltip"
title="Sélectionnez une espèce dans la liste déroulante pour lier
votre nom au référentiel. Si vous le désirez vous pouvez aussi saisir
un nom absent du référentiel (Ex. : 'fleur violette' ou 'Viola sp.1')." >
<label for="taxon" class="control-label" title="Choisissez l'espèce rencontrée.">
Autre espèce
694,7 → 686,7
</label>
<div class="controls">
<input id="taxon" name="taxon" type="text" class="span12"
placeholder="Autre espèce (ou indication sur la plante)"
placeholder="Autre espèce (ou indication sur la plante)"
value="<?= $nom_sci_espece_defaut; ?>" />
</div>
</div>
701,7 → 693,7
</div>
</div>
<div class="row-fluid">
<div class="span12 control-group has-tooltip"
<div class="span12 control-group has-tooltip"
title="Sélectionnez un ou plusieurs milieux dans lesquels l'espèce est présente sur le site.">
<label class="span2 control-label">
<strong class="obligatoire">*</strong>
764,26 → 756,26
</div>
</div>
</div>
 
<div class="row-fluid">
<div class="span12 control-group has-tooltip"
title="Indiquez la hauteur maximum en centimètre de la plante sur le site.">
<label class="control-label">
<strong class="obligatoire">*</strong>
Hauteur max. (en cm) de la plante
<input id="hauteur-plante" class="span2 obs-chp-etendu"
name="hauteurPlante"
type="number" min="0" step="5"
Hauteur max. (en cm) de la plante
<input id="hauteur-plante" class="span2 obs-chp-etendu"
name="hauteurPlante"
type="number" min="0" step="5"
data-label="Hauteur max. (en cm) de la plante"/>
</label>
</div>
</div>
 
<div class="row-fluid">
<div class="span12">
<label for="notes">Commentaires</label>
<div>
<textarea id="notes" class="span12" rows="7" name="notes"
<textarea id="notes" class="span12" rows="7" name="notes"
placeholder="vous pouvez éventuellement ajouter des informations complémentaires à votre observation (altitude, taille de la plante...)"></textarea>
</div>
</div>
793,7 → 785,7
<div class="span6">
<div class="well">
<div class="row-fluid">
<div class="span12 control-group has-tooltip"
<div class="span12 control-group has-tooltip"
title="Évaluez la résistance/résilience de l'espèce face aux traitements utilisés sur ce site." >
<label class="control-label">
<strong class="obligatoire">*</strong>
800,9 → 792,9
Résistance/Résilience
</label>
<div class="controls">
<select id="resistance-traitement-phyto"
class="obs-chp-etendu slider"
name="resistanceTraitementPhyto"
<select id="resistance-traitement-phyto"
class="obs-chp-etendu slider"
name="resistanceTraitementPhyto"
data-label="Résistance/Résilience">
<option selected value=""></option>
<option value="pas de traitement">pas de traitement</option>
814,14 → 806,14
</div>
</div>
</div>
 
<div class="row-fluid">
<div class="span12 has-tooltip"
<div class="span12 has-tooltip"
title="Évaluez la vitesse de croissance de l'espèce sur ce site." >
<label>
Croissance
<select id="vitesse-croissance"
class="obs-chp-etendu slider"
<select id="vitesse-croissance"
class="obs-chp-etendu slider"
name="vitesseCroissance"
data-label="Croissance">
<option selected value=""></option>
837,7 → 829,7
</div>
<div class="well">
<div class="row-fluid">
<div class="span12 has-tooltip"
<div class="span12 has-tooltip"
title="Perception globale de l'espèce par l'équipe technique.">
<label class="span4">
Perceptions par l'équipe
885,13 → 877,13
</div>
</div>
</div>
 
<div class="row-fluid">
<div class="span12 has-tooltip"
<div class="span12 has-tooltip"
title="Évaluez la mauvaise perception des riverains vis à vis de cette espèce." >
<label>
Mauvaise perception par les riverains ?
<select id="perception-riverain-mauvaise" class="obs-chp-etendu"
<select id="perception-riverain-mauvaise" class="obs-chp-etendu"
name="perceptionRiverainMauvaise" data-label="Mauvaise perception par les riverains ?">
<option>inconnue</option>
<option>oui</option>
904,16 → 896,16
</div>
</div>
</form>
<form id="form-upload" class="form-horizontal" action="<?= $url_ws_upload ?>"
 
<form id="form-upload" class="form-horizontal" action="<?= $url_ws_upload ?>"
method="post" enctype="multipart/form-data">
<div class="row-fluid">
<div class="span12 well">
<strong>Ajoutez des images</strong>
<strong>Ajoutez des images</strong>
<p class="miniature-info" class="discretion help-inline">Les photos doivent être au format JPEG et ne doivent pas excéder 5Mo chacunes.</p>
<div id ="photos-conteneur">
<input type="file" id="fichier" name="fichier" accept="image/jpeg" />
<input type="hidden" name="MAX_FILE_SIZE" value="5242880"/>
<input type="hidden" name="MAX_FILE_SIZE" value="5242880"/>
<div id="miniatures"></div>
<p class="miniature-msg" class="span12">&nbsp;</p>
</div>
921,8 → 913,8
</div>
</form>
<div class="row-fluid">
<div class="span12 centre has-tooltip"
title="Une fois les champs remplis, vous pouvez cliquer sur ce bouton pour
<div class="span12 centre has-tooltip"
title="Une fois les champs remplis, vous pouvez cliquer sur ce bouton pour
ajouter votre observation à la liste à transmettre.">
<button id="ajouter-obs" class="btn btn-primary btn-large" type="button">
Créer
929,10 → 921,10
</button>
</div>
</div>
 
</div>
</div>
 
<!-- Messages d'erreur du formulaire-->
<div class="row-fluid">
<div class="zone-alerte span6 offset3">
966,7 → 958,7
</div>
</div>
</div>
 
<!-- Affiche le tableau récapitualif des observations ajoutées -->
<div id="zone-liste-obs" class="row-fluid hidden">
<div class="span12">
976,9 → 968,9
<h2>Observations à transmettre : <span class="obs-nbre">0</span></h2>
</div>
<div class="span4 droite">
<button id="transmettre-obs" class="btn btn-primary btn-large has-tooltip"
<button id="transmettre-obs" class="btn btn-primary btn-large has-tooltip"
type="button" disabled="disabled"
title="Ajoute les observations ci-dessous à votre Carnet en Ligne et les rend publiques.">
title="Ajoute les observations ci-dessous à votre Carnet en Ligne et les rend publiques.">
Transmettre
</button>
</div>
987,7 → 979,7
</div>
</div>
</div>
 
<div class="row-fluid">
<div class="zone-alerte span6 offset3">
<div id="dialogue-zero-obs" class="alert alert-block" style="display: none;">
995,13 → 987,13
<h4 class="alert-heading">Attention : aucune observation</h4>
<p>Veuillez saisir des observations pour les transmettres.</p>
</div>
 
<div id="dialogue-obs-transaction-ok" class="alert alert-success alert-block" style="display: none;">
<a class="close">×</a>
<h4 class="alert-heading">Information : transmission des observations</h4>
<div class="alert-txt"></div>
</div>
 
<div id="dialogue-obs-transaction-ko" class="alert alert-error alert-block" style="display: none;">
<a class="close">×</a>
<h4 class="alert-heading">Erreur : transmission des observations</h4>
1010,14 → 1002,14
</div>
</div>
 
 
<footer class="row-fluid">
<p class="span12">&copy; Tela Botanica 2013</p>
</footer>
</div>
 
<!-- Fenêtres modales -->
<div id="chargement" class="modal-fenetre" style="display:none;">
<div id="chargement" class="modal-fenetre" style="display:none;">
<div id="chargement-centrage" class="modal-contenu">
<div class="progress progress-striped active">
<div id="barre-progression-upload" class="bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="10" style="">
1026,24 → 1018,24
</div>
<p id="chargement-txt" style="color:white;font-size:1.5em;">
Transfert des observations en cours...<br />
Cela peut prendre plusieurs minutes en fonction de la taille des images et du nombre
Cela peut prendre plusieurs minutes en fonction de la taille des images et du nombre
d'observations à transférer.
</p>
</div>
</div>
 
<!-- Templates HTML -->
<div id="tpl-transmission-ok" style="display:none;">
<p class="msg">
Vos observations ont bien été transmises.<br />
Elles sont désormais consultables à travers les différents outils de visualisation
du réseau Tela Botanica (<a href="http://www.tela-botanica.org/site:botanique">eFlore</a>,
<a href="http://www.tela-botanica.org/appli:pictoflora">galeries d'images</a>,
Elles sont désormais consultables à travers les différents outils de visualisation
du réseau Tela Botanica (<a href="http://www.tela-botanica.org/site:botanique">eFlore</a>,
<a href="http://www.tela-botanica.org/appli:pictoflora">galeries d'images</a>,
<a href="http://www.tela-botanica.org/appli:identiplante">identiplante</a>,
<a href="http://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
Si vous souhaitez les modifier ou les supprimer, vous pouvez les retrouver en vous
connectant à votre <a href="http://www.tela-botanica.org/appli:cel">Carnet en ligne</a>.<br />
N'oubliez pas qu'il est nécessaire de
N'oubliez pas qu'il est nécessaire de
<a href="http://www.tela-botanica.org/page:inscription">s'inscrire à Tela Botanica</a>
au préalable, si ce n'est pas déjà fait.
</p>
1051,10 → 1043,10
<div id="tpl-transmission-ko" style="display:none;">
<p class="msg">
Une erreur est survenue lors de la transmission d'une observation (indiquée en rouge).<br />
Vous pouvez tenter de la retransmettre en cliquant à nouveau sur le bouton transmettre ou bien la supprimer
Vous pouvez tenter de la retransmettre en cliquant à nouveau sur le bouton transmettre ou bien la supprimer
et transmettre les suivantes.<br />
Néanmoins, les observations n'apparaissant plus dans la liste "observations à transmettre", ont bien été transmises lors de votre précédente tentative. <br />
Si le problème persiste, vous pouvez signaler le dysfonctionnement sur
Si le problème persiste, vous pouvez signaler le dysfonctionnement sur
<a href="<?= $url_remarques ?>?email=cel_remarques@tela-botanica.org&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;">
1061,7 → 1053,7
le formulaire de signalement d'erreurs</a>.
</p>
</div>
 
<!-- Stats : Google Analytics-->
<script type="text/javascript">
//<![CDATA[
1068,7 → 1060,7
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-20092557-1']);
_gaq.push(['_trackPageview']);
 
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
/trunk/widget/modules/saisie/squelettes/florileges/js/florileges.js
74,7 → 74,7
 
function prechargerForm(infos) {
$('input[name="station"]').val(infos.station);
 
//console.log(infos.extension);
if (infos.extension) {
var ext = infos.extension;
86,7 → 86,7
latLngFinPre.lng = parseFloat(ext.longitudeFinRue.valeur);
prechargerRue();
}
 
var chpsARemplir = ['adresse', 'typoUrbaine', 'revetementSol', 'presenceZoneVegetalise', 'hauteurBatimentAvoisinant',
'intensiteGestion', 'periodiciteTraitementPhyto', 'dateArretTraitementPhyto', 'itineraireGestion'];
$.each(infos.extension, function(nomDuChp, value) {
96,7 → 96,7
.attr('selected', 'selected');
var selectedIndexOptions = $('select[name="' + nomDuChp + '"]').prop('selectedIndex') + 1;
$('[name="' + nomDuChp + '"]').parent().find('.horizontal-slider').slider('value', selectedIndexOptions);
 
if (nomDuChp == 'periodiciteTraitementPhyto') {
$('[name="periodiciteTraitementPhyto"]').trigger('change');
}
217,7 → 217,7
// GOOGLE MAP
 
var map,
geocoder,
geocoder,
markerDeb,
latLngDeb,
markerFin,
228,7 → 228,7
$(document).ready(function() {
initialiserGoogleMap();
afficherEtapeGeolocalisation(1);
 
// Autocompletion du champ adresse
$('#carte-recherche').on('focus', function() {
$(this).select();
236,17 → 236,17
$('#carte-recherche').on('mouseup', function(event) {// Pour Safari...
event.preventDefault();
});
 
$('#carte-recherche').keypress(function(e) {
if (e.which == 13) {
e.preventDefault();
}
});
 
$('#carte-recherche').autocomplete({
//Cette partie utilise geocoder pour extraire des valeurs d'adresse
source: function(request, response) {
 
geocoder.geocode( {'address': request.term+', France', 'region' : 'fr' }, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
response($.map(results, function(item) {
272,7 → 272,7
afficherEtapeGeolocalisation(2);
}
});
 
$('#geolocaliser').on('click', geolocaliser);
});
 
283,13 → 283,13
center: latLngDeb,
mapTypeId: google.maps.MapTypeId.HYBRID,
mapTypeControlOptions: {
mapTypeIds: ['OSM',
google.maps.MapTypeId.ROADMAP,
google.maps.MapTypeId.HYBRID,
google.maps.MapTypeId.SATELLITE,
mapTypeIds: ['OSM',
google.maps.MapTypeId.ROADMAP,
google.maps.MapTypeId.HYBRID,
google.maps.MapTypeId.SATELLITE,
google.maps.MapTypeId.TERRAIN]}
};
 
// Ajout de la couche OSM à la carte
osmMapType = new google.maps.ImageMapType({
getTileUrl: function(coord, zoom) {
301,14 → 301,14
name: 'OSM',
maxZoom: 19
});
 
// Création de la carte Google
map = new google.maps.Map(document.getElementById('map-canvas'), options); //affiche la google map dans la div map_canvas
map.mapTypes.set('OSM', osmMapType);
 
// Ajout de l'évènment sur click dans Carte
google.maps.event.addListener(map, 'click', surClickDansCarte);
 
// Lorsque la carte est chargée, on vérifie si on peut précharger des données
google.maps.event.addListenerOnce(map, 'idle', function(){
if (OBS_ID == '') {
323,7 → 323,7
prechargerRue();
}
});
 
// Création du Geocoder
geocoder = new google.maps.Geocoder();
}
341,7 → 341,7
});
google.maps.event.addListener(markerDeb, 'dragend', surDeplacementMarkerDeb);
}
 
latLngFin = latLngDeb;
if (markerFin != undefined) {
markerFin.setMap(null);
406,7 → 406,7
if (ligneRue != undefined) {
ligneRue.setMap(null);
}
 
ligneRue = new google.maps.Polyline({
path: [pointDebut, pointFin],
strokeColor: "#FF0000",
420,13 → 420,13
function afficherCentreRue() {
latLngDeb = markerDeb.getPosition();
latLngFin = markerFin.getPosition();
latLngCentre = new google.maps.LatLng((latLngFin.lat() + latLngDeb.lat())/2, (latLngFin.lng() + latLngDeb.lng())/2);
latLngCentre = new google.maps.LatLng((latLngFin.lat() + latLngDeb.lat())/2, (latLngFin.lng() + latLngDeb.lng())/2);
mettreAJourStationPosition(latLngCentre);
}
 
function mettreAJourStationPosition(latLng) {
var lat = latLng.lat().toFixed(5),
lng = latLng.lng().toFixed(5);
lng = latLng.lng().toFixed(5);
remplirChampLatitude(lat);
remplirChampLongitude(lng);
}
450,7 → 450,7
type: 'GET',
dataType: 'jsonp',
beforeSend: function() {
$('.commune-info').empty();
$('.commune-info').empty();
$('#dialogue-erreur .alert-txt').empty();
},
success: function(data, textStatus, jqXHR) {
461,7 → 461,7
},
statusCode: {
500: function(jqXHR, textStatus, errorThrown) {
if (DEBUG) {
if (DEBUG) {
$('#dialogue-erreur .alert-txt').append('<p id="msg">Un problème est survenu lors de l\'appel au service fournissante le nom des communes.</p>');
reponse = jQuery.parseJSON(jqXHR.responseText);
var erreurMsg = "";
470,7 → 470,7
erreurMsg += valeur + '<br />';
});
}
 
$('#dialogue-erreur .alert-txt').append(
'<p class="msg-erreur">Erreur 500 : '+errorThrown+'<br />'+erreurMsg+'</p>');
}
487,7 → 487,7
erreurMsg += valeur + '<br />';
});
}
 
$('#dialogue-erreur .alert-txt').append(
'<p class="msg-erreur">Erreur Ajax : '+errorThrown+' (type : '+textStatus+') <br />'+erreurMsg+'</p>');
}
556,18 → 556,18
 
function ajouterAutocompletionNoms() {
$('#taxon').autocomplete({
source: function(requete, add){
source: function(requete, add){
// la variable de requête doit être vidée car sinon le parametre "term" est ajouté
 
var url = getUrlAutocompletionNomsSci();
$.getJSON(url, function(data) {
var suggestions = traiterRetourNomsSci(data);
add(suggestions);
add(suggestions);
});
},
html: true
});
 
$('#taxon').bind('autocompleteselect', function(event, ui) {
$('#taxon').data(ui.item);
if (ui.item.retenu == true) {
609,7 → 609,7
nom.numNomRet = val['nom_retenu.id'];
nom.famille = val.famille;
nom.retenu = (val.retenu == 'false') ? false : true;
 
suggestions.push(nom);
}
});
624,13 → 624,13
* Dual licensed under the MIT or GPL Version 2 licenses.
*
* http://github.com/scottgonzalez/jquery-ui-extensions
*
*
* Adaptation par Aurélien Peronnet pour la mise en gras des noms de taxons valides
*/
(function($) {
var proto = $.ui.autocomplete.prototype,
initSource = proto._initSource;
 
function filter(array, term) {
var matcher = new RegExp($.ui.autocomplete.escapeRegex(term), 'i');
return $.grep(array, function(value) {
637,7 → 637,7
return matcher.test($('<div>').html(value.label || value.value || value).text());
});
}
 
$.extend(proto, {
_initSource: function() {
if (this.options.html && $.isArray(this.options.source)) {
652,7 → 652,7
if (item.retenu == true) {
item.label = '<strong>'+item.label+'</strong>';
}
 
return $('<li></li>')
.data('item.autocomplete', item)
.append($('<a></a>')[this.options.html ? 'html' : 'text'](item.label))
662,15 → 662,15
})(jQuery);
 
//+----------------------------------------------------------------------------------------------------------+
//UPLOAD PHOTO : Traitement de l'image
//UPLOAD PHOTO : Traitement de l'image
$(document).ready(function() {
$('#fichier').on('click change', function(event) {
if ($(this).val().length > 0) {
arreter(event);
var options = {
success: afficherMiniature, // post-submit callback
dataType: 'xml', // 'xml', 'script', or 'json' (expected server response type)
resetForm: true // reset the form after successful submit
var options = {
success: afficherMiniature, // post-submit callback
dataType: 'xml', // 'xml', 'script', or 'json' (expected server response type)
resetForm: true // reset the form after successful submit
};
$('#miniature').append(
'<img id="miniature-chargement" class="miniature" alt="chargement" src="'+CHARGEMENT_IMAGE_URL+'"/>');
684,11 → 684,11
return false;
}
});
 
$('#photo-placeholder').click(function(event) {
$('#fichier').click();
});
 
$('body').on('click', '.effacer-miniature', function(event) {
supprimerMiniature($(this));
});
702,7 → 702,7
return (extension.toLowerCase() == 'jpeg' || extension.toLowerCase() == 'jpg');
}
 
function afficherMiniature(reponse) {
function afficherMiniature(reponse) {
if (DEBUG) {
var debogage = $('debogage', reponse).text();
//console.log('Débogage upload : ' + debogage);
719,7 → 719,7
function creerWidgetMiniature(reponse) {
var miniatureUrl = $('miniature-url', reponse).text(),
imgNom = $('image-nom', reponse).text(),
html =
html =
'<div class="miniature">'+
'<img class="miniature-img" class="miniature" alt="'+imgNom+'" src="'+miniatureUrl+'"/>'+
'<button class="btn effacer-miniature" type="button">Effacer</button>'+
740,7 → 740,7
//+---------------------------------------------------------------------------------------------------------+
// FORMULAIRE : traitements génériques
 
$(document).ready(function() {
$(document).ready(function() {
// Interaction générales
$('.alert .close').on('click', fermerPanneauAlert);
$('.has-tooltip').tooltip('enable');
748,11 → 748,11
$('.dropdown-menu input, .dropdown-menu label').on('click', function(event) {
event.stopPropagation();
});
 
// Afficher/Cacher champs cachés par défaut
surChangementPeriodiciteTraitementPhyto();// Vérif lors du chargement de la page
$('#periodicite-traitement-phyto').on('change', surChangementPeriodiciteTraitementPhyto);
 
// Sliders
transformerEnSlider('#presence-zone-vegetalise');
transformerEnSlider('#hauteur-batiment-avoisinant');
763,16 → 763,16
// Date picker
configurerDatePicker('#date');
configurerDatePicker('#date-arret-traitement-phyto');
 
// Gestion de la liste des taxons
surChangementTaxonListe();// Vérif lors du chargement de la page
ajouterAutocompletionNoms();
$('#taxon-liste').on('change', surChangementTaxonListe);
 
// Validation du formulaire
configurerFormValidator();
definirReglesFormValidator();
 
// Gestion des obs
$('.cb-milieux').on('click', function(event) {
$(this).valid();
786,7 → 786,7
var nouvelleValeur = valeur.replace(/[^0-9]/g, '');
$(this).val(nouvelleValeur);
}
});
});
$('a.afficher-coord').on('click', basculerAffichageCoord);
$('#ajouter-obs').on('click', ajouterObs);
$('.obs-nbre').on('changement', surChangementNbreObs);
803,7 → 803,7
$('body').on('mouseout', '.defilement-control-zone', function(event) {
$('.defilement-control', this).addClass('hidden');
});
 
});
 
function transformerEnSlider(selector) {
810,7 → 810,7
$(selector).each(function(index, el) {
// hide the element
$(el).addClass('slider-on');
 
// add the slider to each element
var slider = $( '<div class="slider-holder"><div class="horizontal-slider"></div></div>' ).
insertBefore( el ).find('.horizontal-slider').slider({
821,7 → 821,7
slide: function(event, ui) {
el.selectedIndex = ui.value - 1;
slider.find('a').text(el.options[el.selectedIndex].text);
 
$(selector + ' option[selected="selected"]').removeAttr('selected');
$(selector + ' :nth-child('+ui.value+')').attr('selected', 'selected')
$(selector).valid();
830,9 → 830,9
$(el).change();
}
});
 
slider.find('a').text(el.options[el.selectedIndex].text);
 
// Create a legend under the slider so we can see the options
var options = [];
for (var option in $(el).children()) {
842,13 → 842,13
}
// the width of each legend/option
var width = (slider.width() / (options.length - 1));
 
// Add the legend. Half the width of the first and last options for display consistency.
slider.after('<div class="slider-legend"><p style="width:' + (width / 2) + 'px;text-align:left;">' +
slider.after('<div class="slider-legend"><p style="width:' + (width / 2) + 'px;text-align:left;">' +
options.join('</p><p style="width:' + width + 'px;">') +'</p></div>')
.parent().find('.slider-legend p:last-child').css('width', width / 2)
.css('text-align', 'right');
 
// if there are too many options so that the text is wider than the width, then hide the text
var lastChild = slider.parent().find('.slider-legend p:last-child');
if (lastChild[0].clientWidth < lastChild[0].scrollWidth) {
892,12 → 892,12
 
function configurerFormValidator() {
$.validator.addMethod(
'dateCel',
function (value, element) {
return value == '' || (/^[0-9]{2}[-\/][0-9]{2}[-\/][0-9]{4}$/.test(value));
},
'dateCel',
function (value, element) {
return value == '' || (/^[0-9]{2}[-\/][0-9]{2}[-\/][0-9]{4}$/.test(value));
},
'Format : jj/mm/aaaa. Date incomplète, utiliser 0, exemple : 00/12/2011.');
 
$.extend($.validator.defaults, {
ignore: [],// Forcer Jquery Validate à examiner les éléments avec en display:none;
highlight: function(element) {
906,7 → 906,7
success: function(element) {
element.text('OK!').addClass('valid');
element.closest('.control-group').removeClass('error').addClass('success');
 
if (element.attr('id') == 'taxon' && $('#taxon').val() != '') {
// Si le taxon n'est pas lié au référentiel, on vide le data associé
if ($('#taxon').data('value') != $('#taxon').val()) {
1055,7 → 1055,7
if (debRue == false || finRue == false) {
afficherPanneau('#dialogue-form-invalide-rue');
} else {
afficherPanneau('#dialogue-form-invalide');
afficherPanneau('#dialogue-form-invalide');
}
}
}
1076,7 → 1076,7
resistance = $('#resistance-traitement-phyto').val(),
milieux = getMilieux(),
notes = (nomSpecial ? taxons[numNomSel]['nom_fr'] + ".<br />" : '') + $('#notes').val();
 
$('#liste-obs').prepend(
'<div id="obs'+obsNbre+'" class="row-fluid obs obs'+obsNbre+'">'+
'<div class="span12">'+
1086,8 → 1086,8
'<button class="btn btn-danger supprimer-obs" value="'+obsNbre+'" title="'+obsNbre+'">'+
'<i class="icon-trash icon-white"></i>'+
'</button>'+
'</div> '+
'<div class="row-fluid">'+
'</div> '+
'<div class="row-fluid">'+
'<div class="span2 obs-miniatures">'+
ajouterImgMiniatureAuTransfert()+
'</div>'+
1111,7 → 1111,7
'<span>Résistance/Résilience :</span> ' + resistance + ' ' +
'</li>' +
'<li>' +
'Commentaires : ' + notes +
'Commentaires : ' + notes +
'</li>'+
'</ul>'+
'</div>'+
1127,7 → 1127,7
$('.cb-milieux:checked').each(function() {
milieux.push($(this).val());
});
 
milieuxStr = Array.prototype.slice.call(milieux).join(', ');
return milieuxStr;
}
1146,21 → 1146,21
css = $(this).hasClass('b64') ? 'miniature b64' : 'miniature',
src = $(this).attr('src'),
alt = $(this).attr('alt');
 
var miniature = '<img class="'+css+' '+visible+'" alt="'+alt+'"src="'+src+'" />';
miniatures += miniature;
 
var indicateurActif = premiere ? 'active' : '';
var indicateur = '<li class="' + indicateurActif + '" data-numero="' + numero++ + '"></li>';
indicateurs += indicateur;
 
premiere = false;
});
 
if ($('#miniatures img').length == 1) {
html = miniatures;
} else {
html =
html =
'<div class="defilement">' +
miniatures +
'<a class="defilement-control-zone gauche">' +
1180,10 → 1180,10
var miniatureSelectionne = element.siblings('img.miniature-selectionnee');
miniatureSelectionne.removeClass('miniature-selectionnee').addClass('miniature-cachee');
var miniatureAffichee = miniatureSelectionne;
 
var indicateurActif = element.parent().find('.defilement-indicateurs .active');
indicateurActif.removeClass('active');
 
if (element.hasClass('defilement-control-zone') && element.hasClass('gauche')) {
if (miniatureSelectionne.prev('.miniature').length != 0) {
miniatureAffichee = miniatureSelectionne.prev('.miniature');
1215,8 → 1215,7
}
 
function surChangementReferentiel() {
NOM_SCI_PROJET = $('#referentiel').val();
NOM_SCI_REFERENTIEL = NOM_SCI_PROJET+':'+PROJETS_VERSIONS[NOM_SCI_PROJET];
NOM_SCI_REFERENTIEL = $('#referentiel').val();
$('#taxon').val('');
}
 
1227,7 → 1226,7
$('#zone-liste-obs').addClass('hidden');
} else {
$('#zone-liste-obs').removeClass('hidden');
 
if (obsNbre > 0 && obsNbre < OBS_MAX_NBRE) {
$('#transmettre-obs').removeAttr('disabled');
$('#ajouter-obs').removeAttr('disabled');
1295,17 → 1294,17
famille = nomHorsListe ? $('#taxon').data('famille') : taxons[numNomSel]['famille'],
referentiel = (numNomSel == undefined) ? '' : NOM_SCI_REFERENTIEL,
notes = (nomSpecial ? taxons[numNomSel]['nom_fr'] + '. ' : '') + $('#notes').val();
 
$('#liste-obs').data('obsId'+obsNbre, {
'date': $('#date').val(),
'date': $('#date').val(),
'notes': notes,
 
'station': $('#station').val(),
'latitude': $('#latitude').val(),
'longitude': $('#longitude').val(),
'commune_nom': $('#commune-nom').text(),
'commune_code_insee': $('#commune-code-insee').text(),
 
'nom_sel': nomSel,
'num_nom_sel': numNomSel,
'nom_ret': nomRet,
1313,12 → 1312,12
'num_taxon': numTaxon,
'famille': famille,
'referentiel': referentiel,
 
'milieu': getMilieux(),
 
// Ajout des champs images
'image_nom': getNomsImgsOriginales(),
 
// Ajout des champs étendus de l'obs
'obs_etendue': getObsChpEtendus()
});
1343,7 → 1342,7
var longitudeFinRue = {cle: 'longitudeFinRue', label: 'Longitude de fin de la rue', valeur: latLngFin.lng().toFixed(5)};
champs.push(longitudeFinRue);
}
 
$('.obs-chp-etendu').each(function() {
var valeur = $(this).val(),
cle = $(this).attr('name'),
1393,13 → 1392,13
// or javascript n'a pas de méthode cross browsers pour extraire les clés
// TODO: utiliser var.keys quand ça sera plus répandu
// ou bien utiliser un vrai tableau et pas un objet
for (var obsNum in observations) {
obsATransmettre = new Object();
for (var obsNum in observations) {
obsATransmettre = new Object();
 
obsATransmettre['projet'] = TAG_PROJET;
obsATransmettre['tag-obs'] = TAG_OBS;
obsATransmettre['tag-img'] = TAG_IMG;
 
var utilisateur = new Object();
utilisateur.id_utilisateur = $("#id_utilisateur").val();
utilisateur.prenom = $("#prenom").val();
1411,7 → 1410,7
if(idObsNumerique != "") {
envoyerObsAuCel(idObsNumerique, obsATransmettre);
}
 
break;
}
}
1441,7 → 1440,7
beforeSend: function() {
$('#dialogue-obs-transaction-ko').hide();
$('#dialogue-obs-transaction-ok').hide();
$('.alert-txt').empty();
$('.alert-txt').empty();
$('#chargement').show();
},
success: function(data, textStatus, jqXHR) {
1478,20 → 1477,20
},
complete: function(jqXHR, textStatus) {
var debugMsg = extraireEnteteDebug(jqXHR);
 
if (erreurMsg != '') {
if (DEBUG) {
$('#dialogue-obs-transaction-ko .alert-txt').append('<pre class="msg-erreur">' + erreurMsg + '</pre>');
$('#dialogue-obs-transaction-ko .alert-txt').append('<pre class="msg-debug">Débogage : ' + debugNonJson + debugMsg + '</pre>');
}
var hrefCourriel = 'mailto:cel_remarques@tela-botanica.org?' +
'subject=Disfonctionnement du widget de saisie ' + TAG_PROJET +
var hrefCourriel = 'mailto:cel_remarques@tela-botanica.org?' +
'subject=Disfonctionnement du widget de saisie ' + TAG_PROJET +
'&body=' + erreurMsg + "\nDébogage :\n" + debugMsg + debugNonJson;
 
// mise en valeur de l'obs en erreur + scroll vers celle ci en changeant le hash
$('#obs'+idObs+' div div').addClass('obs-erreur');
window.location.hash = "obs"+idObs;
 
$('#dialogue-obs-transaction-ko .alert-txt').append($('#tpl-transmission-ko').clone()
.find('.courriel-erreur')
.attr('href', hrefCourriel)
1512,7 → 1511,7
window.location.hash = "dialogue-obs-transaction-ok";
initialiserObs();
}, 1500);
 
}
}
}
/trunk/widget/modules/saisie/squelettes/ambrosia/js/ambrosia.js
132,7 → 132,7
};
var addressSuffix = '';
 
switch(NOM_SCI_PROJET) {
switch(NOM_SCI_REFERENTIEL) {
case 'isfan':
// Si des résultats se trouvent dans ce rectangle, ils apparaîtront en premier.
// Ça marche moyen...
235,19 → 235,8
 
function initialiserGoogleMap(){
// Carte
if(NOM_SCI_PROJET == 'bdtxa') {
var latLng = new google.maps.LatLng(14.6, -61.08334);// Fort-De-France
var zoomDefaut = 8;
} else if(NOM_SCI_PROJET == 'isfan') {
var latLng = new google.maps.LatLng(29.28358, 10.21884);// Afrique du Nord
var zoomDefaut = 4;
} else if(NOM_SCI_PROJET == 'apd') {
var latLng = new google.maps.LatLng(8.75624, 1.80176);// Afrique de l'Ouest et du Centre
var zoomDefaut = 4;
} else {
var latLng = new google.maps.LatLng(46.30871, 2.54395);// Centre de la France
var zoomDefaut = 5;
}
var latLng = new google.maps.LatLng(46.30871, 2.54395);// Centre de la France
var zoomDefaut = 5;
 
var options = {
zoom: zoomDefaut,
780,7 → 769,7
'num_nom_ret' : $("#taxon").data("numNomRet"),
'num_taxon' : $("#taxon").data("nt"),
'famille' : $("#taxon").data("famille"),
'referentiel' : ($("#taxon").data("numNomSel") == undefined ? '' : NOM_SCI_PROJET),
'referentiel' : ($("#taxon").data("numNomSel") == undefined ? '' : NOM_SCI_REFERENTIEL),
 
'latitude' : $("#latitude").val(),
'longitude' : $("#longitude").val(),
815,8 → 804,7
}
 
function surChangementReferentiel() {
NOM_SCI_PROJET = $('#referentiel').val();
NOM_SCI_REFERENTIEL = NOM_SCI_PROJET+':'+PROJETS_VERSIONS[NOM_SCI_PROJET];
NOM_SCI_REFERENTIEL = $('#referentiel').val();
$('#taxon').val('');
initialiserAutocompleteCommune();
initialiserGoogleMap();
1106,7 → 1094,7
nn = '<span class="alert-error">[non lié au référentiel]</span>';
} else {
nn = '<span class="nn">['+
'<span class="referentiel-obs">'+($("#taxon").data("numNomSel") == undefined ? '' : NOM_SCI_PROJET+'-')+'</span>'+
'<span class="referentiel-obs">'+($("#taxon").data("numNomSel") == undefined ? '' : NOM_SCI_REFERENTIEL+'-')+'</span>'+
'nn'+$("#taxon").data("numNomSel")+
']</span>';
}
1142,7 → 1130,7
 
function getUrlAutocompletionNomsSci() {
var mots = $('#taxon').val();
var url = SERVICE_AUTOCOMPLETION_NOM_SCI_URL_TPL.replace('{referentiel}',NOM_SCI_PROJET);
var url = SERVICE_AUTOCOMPLETION_NOM_SCI_URL_TPL.replace('{referentiel}',NOM_SCI_REFERENTIEL);
url = url.replace('{masque}', mots);
return url;
}
/trunk/widget/modules/saisie/squelettes/ambrosia/ambrosia.tpl.html
59,10 → 59,8
TAG_OBS = <?=isset($_GET['projet']) ? "'".$_GET['projet']."' + SEPARATION_TAG_OBS + TAG_OBS" : 'TAG_OBS' ?>;
 
 
// Code du référentiel utilisé pour les nom scientifiques (de la forme nom:code).
// Code du référentiel utilisé pour les nom scientifiques.
var NOM_SCI_REFERENTIEL = "<?=$ns_referentiel?>";
// Nom du référentiel utilisé pour les nom scientifiques.
var NOM_SCI_PROJET = "<?=$ns_projet?>";
 
// Indication de la présence d'une espèce imposée
var ESPECE_IMPOSEE = "<?=$espece_imposee; ?>";
69,8 → 67,6
// Tableau d'informations sur l'espèce imposée
var INFOS_ESPECE_IMPOSEE = <?=$infos_espece; ?>;
 
// Indication des version utilisées de chaque référentiel
var PROJETS_VERSIONS = <?=json_encode($projets_versions)?>;
// Nombre d'élément dans les listes d'auto-complétion
var AUTOCOMPLETION_ELEMENTS_NBRE = 20;
// URL du web service permettant l'auto-complétion des noms scientifiques.
/trunk/widget/modules/saisie/squelettes/sauvages/js/sauvages.js
47,7 → 47,7
 
$(document).ready(function() {
requeterIdentite();// Sur rechargement de la page
 
// Interaction sur le formulaire observateur
$('#prenom').on('change', formaterPrenom);
$('#nom').on('change', formaterNom);
137,7 → 137,7
//+----------------------------------------------------------------------------------------------------------+
//GOOGLE MAP => OK
var map,
geocoder,
geocoder,
markerDeb,
latLngDeb,
markerFin,
148,7 → 148,7
$(document).ready(function() {
initialiserGoogleMap();
afficherEtapeGeolocalisation(1);
 
// Autocompletion du champ adresse
$('#carte-recherche').on('focus', function() {
$(this).select();
156,17 → 156,17
$('#carte-recherche').on('mouseup', function(event) {// Pour Safari...
event.preventDefault();
});
 
$('#carte-recherche').keypress(function(e) {
if (e.which == 13) {
e.preventDefault();
}
});
 
$('#carte-recherche').autocomplete({
//Cette partie utilise geocoder pour extraire des valeurs d'adresse
source: function(request, response) {
 
geocoder.geocode( {'address': request.term+', France', 'region' : 'fr' }, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
response($.map(results, function(item) {
198,7 → 198,7
afficherEtapeGeolocalisation(2);
}
});
 
$('#geolocaliser').on('click', geolocaliser);
});
 
214,13 → 214,13
center: latLngDeb,
mapTypeId: google.maps.MapTypeId.HYBRID,
mapTypeControlOptions: {
mapTypeIds: ['OSM',
google.maps.MapTypeId.ROADMAP,
google.maps.MapTypeId.HYBRID,
google.maps.MapTypeId.SATELLITE,
mapTypeIds: ['OSM',
google.maps.MapTypeId.ROADMAP,
google.maps.MapTypeId.HYBRID,
google.maps.MapTypeId.SATELLITE,
google.maps.MapTypeId.TERRAIN]}
};
 
// Ajout de la couche OSM à la carte
osmMapType = new google.maps.ImageMapType({
getTileUrl: function(coord, zoom) {
232,14 → 232,14
name: 'OSM',
maxZoom: 19
});
 
// Création de la carte Google
map = new google.maps.Map(document.getElementById('map-canvas'), options); //affiche la google map dans la div map_canvas
map.mapTypes.set('OSM', osmMapType);
 
// Ajout de l'évènment sur click dans Carte
google.maps.event.addListener(map, 'click', surClickDansCarte);
 
// Lorsque la carte est chargée, on vérifie si on peut précharger des données
google.maps.event.addListenerOnce(map, 'idle', function(){
// Initialisation du marker de début de rue
251,7 → 251,7
tenterGeolocalisation();
}
});
 
// Création du Geocoder
geocoder = new google.maps.Geocoder();
}
264,9 → 264,9
success: function(data, textStatus, jqXHR) {
if (data != undefined && data != "") {
prechargerForm(data);
}
}
// TODO: voir s'il est pertinent d'indiquer quelque chose en cas d'erreur ou d'obs
// inexistante
// inexistante
},
error: function(jqXHR, textStatus, errorThrown) {
// TODO: cf TODO ci-dessus
275,40 → 275,40
}
 
function prechargerForm(data) {
 
$('#carte-recherche').val(data.zoneGeo);
 
$('#commune-nom').text(data.zoneGeo);
 
if(data.hasOwnProperty("codeZoneGeo")) {
$('#commune-code-insee').text(data.codeZoneGeo.replace('INSEE-C:', ''));
}
pos = new google.maps.LatLng(data.latitude, data.longitude);
 
pos = new google.maps.LatLng(data.latitude, data.longitude);
 
if(data.hasOwnProperty("extension")) {
initialiserMarkerFin();
 
// cas des obs florilèges qui apparaissent aussi comme des obs sauvages
// mais qui n'ont pas de coté de rue
if(data.extension.hasOwnProperty("coteRue")) {
$('#rue_cote option[value='+data.extension.coteRue.valeur+']').attr("selected", "selected");
}
 
deb = new google.maps.LatLng(data.extension.latitudeDebutRue.valeur, data.extension.longitudeDebutRue.valeur);
fin = new google.maps.LatLng(data.extension.latitudeFinRue.valeur, data.extension.longitudeFinRue.valeur);
 
mettreAJourStationPosition(pos);
 
deplacerMarkerDeb(deb);
deplacerMarkerFin(fin);
afficherEtapeGeolocalisation(4);
 
var latlngbounds = new google.maps.LatLngBounds();
latlngbounds.extend(deb);
latlngbounds.extend(fin);
map.setCenter(latlngbounds.getCenter());
map.fitBounds(latlngbounds);
map.fitBounds(latlngbounds);
} else if(data.hasOwnProperty("latitude") && data.hasOwnProperty("longitude")) {
deplacerMarkerDeb(pos);
}
327,7 → 327,7
});
google.maps.event.addListener(markerDeb, 'dragend', surDeplacementMarkerDeb);
}
 
latLngFin = latLngDeb;
if (markerFin != undefined) {
markerFin.setMap(null);
392,7 → 392,7
if (ligneRue != undefined) {
ligneRue.setMap(null);
}
 
ligneRue = new google.maps.Polyline({
path: [pointDebut, pointFin],
strokeColor: "#FF0000",
406,13 → 406,13
function afficherCentreRue() {
latLngDeb = markerDeb.getPosition();
latLngFin = markerFin.getPosition();
latLngCentre = new google.maps.LatLng((latLngFin.lat() + latLngDeb.lat())/2, (latLngFin.lng() + latLngDeb.lng())/2);
latLngCentre = new google.maps.LatLng((latLngFin.lat() + latLngDeb.lat())/2, (latLngFin.lng() + latLngDeb.lng())/2);
mettreAJourStationPosition(latLngCentre);
}
 
function mettreAJourStationPosition(latLng) {
var lat = latLng.lat().toFixed(5),
lng = latLng.lng().toFixed(5);
lng = latLng.lng().toFixed(5);
remplirChampLatitude(lat);
remplirChampLongitude(lng);
}
436,7 → 436,7
type: 'GET',
dataType: 'jsonp',
beforeSend: function() {
$('.commune-info').empty();
$('.commune-info').empty();
$('#dialogue-erreur .alert-txt').empty();
},
success: function(data, textStatus, jqXHR) {
447,7 → 447,7
},
statusCode: {
500: function(jqXHR, textStatus, errorThrown) {
if (DEBUG) {
if (DEBUG) {
$('#dialogue-erreur .alert-txt').append('<p id="msg">Un problème est survenu lors de l\'appel au service fournissante le nom des communes.</p>');
reponse = jQuery.parseJSON(jqXHR.responseText);
var erreurMsg = "";
456,7 → 456,7
erreurMsg += valeur + '<br />';
});
}
 
$('#dialogue-erreur .alert-txt').append(
'<p class="msg-erreur">Erreur 500 : '+errorThrown+'<br />'+erreurMsg+'</p>');
}
473,7 → 473,7
erreurMsg += valeur + '<br />';
});
}
 
$('#dialogue-erreur .alert-txt').append(
'<p class="msg-erreur">Erreur Ajax : '+errorThrown+' (type : '+textStatus+') <br />'+erreurMsg+'</p>');
}
542,18 → 542,18
 
function ajouterAutocompletionNoms() {
$('#taxon').autocomplete({
source: function(requete, add){
source: function(requete, add){
// la variable de requête doit être vidée car sinon le parametre "term" est ajouté
 
var url = getUrlAutocompletionNomsSci();
$.getJSON(url, function(data) {
var suggestions = traiterRetourNomsSci(data);
add(suggestions);
add(suggestions);
});
},
html: true
});
 
$('#taxon').bind('autocompleteselect', function(event, ui) {
$('#taxon').data(ui.item);
if (ui.item.retenu == true) {
566,7 → 566,7
 
function getUrlAutocompletionNomsSci() {
var mots = $('#taxon').val(),
url = SERVICE_AUTOCOMPLETION_NOM_SCI_URL_TPL.replace('{referentiel}',NOM_SCI_PROJET);
url = SERVICE_AUTOCOMPLETION_NOM_SCI_URL_TPL.replace('{referentiel}',NOM_SCI_REFERENTIEL);
url = url.replace('{masque}', mots);
return url;
}
595,7 → 595,7
nom.numNomRet = val['nom_retenu.id'];
nom.famille = val.famille;
nom.retenu = (val.retenu == 'false') ? false : true;
 
suggestions.push(nom);
}
});
610,13 → 610,13
* Dual licensed under the MIT or GPL Version 2 licenses.
*
* http://github.com/scottgonzalez/jquery-ui-extensions
*
*
* Adaptation par Aurélien Peronnet pour la mise en gras des noms de taxons valides
*/
(function($) {
var proto = $.ui.autocomplete.prototype,
initSource = proto._initSource;
 
function filter(array, term) {
var matcher = new RegExp($.ui.autocomplete.escapeRegex(term), 'i');
return $.grep(array, function(value) {
623,7 → 623,7
return matcher.test($('<div>').html(value.label || value.value || value).text());
});
}
 
$.extend(proto, {
_initSource: function() {
if (this.options.html && $.isArray(this.options.source)) {
638,7 → 638,7
if (item.retenu == true) {
item.label = '<strong>'+item.label+'</strong>';
}
 
return $('<li></li>')
.data('item.autocomplete', item)
.append($('<a></a>')[this.options.html ? 'html' : 'text'](item.label))
654,10 → 654,10
$('#fichier').on('click change', function(event) {
if ($(this).val().length > 0) {
arreter(event);
var options = {
success: afficherMiniature, // post-submit callback
dataType: 'xml', // 'xml', 'script', or 'json' (expected server response type)
resetForm: true // reset the form after successful submit
var options = {
success: afficherMiniature, // post-submit callback
dataType: 'xml', // 'xml', 'script', or 'json' (expected server response type)
resetForm: true // reset the form after successful submit
};
$('#miniature').append(
'<img id="miniature-chargement" class="miniature" alt="chargement" src="'+CHARGEMENT_IMAGE_URL+'"/>');
671,11 → 671,11
return false;
}
});
 
$('#photo-placeholder').click(function(event) {
$('#fichier').click();
});
 
$('body').on('click', '.effacer-miniature', function(event) {
supprimerMiniature($(this));
});
689,7 → 689,7
return (extension.toLowerCase() == 'jpeg' || extension.toLowerCase() == 'jpg');
}
 
function afficherMiniature(reponse) {
function afficherMiniature(reponse) {
if (DEBUG) {
var debogage = $('debogage', reponse).text();
console.log('Débogage upload : ' + debogage);
706,7 → 706,7
function creerWidgetMiniature(reponse) {
var miniatureUrl = $('miniature-url', reponse).text(),
imgNom = $('image-nom', reponse).text(),
html =
html =
'<div class="miniature">'+
'<img class="miniature-img" class="miniature" alt="'+imgNom+'" src="'+miniatureUrl+'"/>'+
'<button class="btn effacer-miniature" type="button">Effacer</button>'+
735,7 → 735,7
$('.dropdown-menu input, .dropdown-menu label').on('click', function(event) {
event.stopPropagation();
});
 
// Gestion de la liste des taxons
ajouterAutocompletionNoms();
surChangementTaxonListe();
747,7 → 747,7
// Validation du formulaire
configurerFormValidator();
definirReglesFormValidator();
 
// Interaction sur le formulaire obs
configurerDatePicker('#date');
$('a.afficher-coord').on('click', basculerAffichageCoord);
759,7 → 759,7
$('.obs-nbre').on('changement', surChangementNbreObs);
$('body').on('click', '.supprimer-obs', supprimerObs);
$('#transmettre-obs').on('click', transmettreObs);
 
// Défilement des photos
$('body').on('click', '.defilement-control-zone', function(event) {
defilerMiniatures($(this));
774,12 → 774,12
 
function configurerFormValidator() {
$.validator.addMethod(
'dateCel',
function (value, element) {
return value == '' || (/^[0-9]{2}[-\/][0-9]{2}[-\/][0-9]{4}$/.test(value));
},
'dateCel',
function (value, element) {
return value == '' || (/^[0-9]{2}[-\/][0-9]{2}[-\/][0-9]{4}$/.test(value));
},
'Format : jj/mm/aaaa. Date incomplète, utiliser 0, exemple : 00/12/2011.');
 
$.extend($.validator.defaults, {
ignore: [],// Forcer Jquery Validate à examiner les éléments avec en display:none;
highlight: function(element) {
788,7 → 788,7
success: function(element) {
element.text('OK!').addClass('valid');
element.closest('.control-group').removeClass('error').addClass('success');
 
if (element.attr('id') == 'taxon' && $('#taxon').val() != '') {
// Si le taxon n'est pas lié au référentiel, on vide le data associé
if ($('#taxon').data('value') != $('#taxon').val()) {
942,7 → 942,7
var numNomSel = ($('#taxon-liste').val() == '?') ? $('#taxon').data('numNomSel') : $('#taxon-liste').val(),
nomSpecial = $('#taxon-liste option:selected').hasClass('nom-special'),
taxon = ($('#taxon-liste').val() == '?') ? $('#taxon').val() : $('#taxon-liste option:selected').data('nom-a-sauver'),
referentiel = (numNomSel == undefined) ? '' : '['+NOM_SCI_PROJET+']',
referentiel = (numNomSel == undefined) ? '' : '['+NOM_SCI_REFERENTIEL+']',
commune = $('#commune-nom').text(),
codeInsee = $('#commune-code-insee').text(),
station = $('input[name="adresse"]').val(),
951,7 → 951,7
date = $('#date').val(),
milieux = getMilieux(),
notes = (nomSpecial ? taxons[numNomSel]['nom_fr'] + ".<br />" : '') + $('#notes').val();
 
$('#liste-obs').prepend(
'<div id="obs'+obsNbre+'" class="row-fluid obs obs'+obsNbre+'">' +
'<div class="span12">' +
961,8 → 961,8
'<button class="btn btn-danger supprimer-obs" value="'+obsNbre+'" title="'+obsNbre+'">' +
'<i class="icon-trash icon-white"></i>' +
'</button>' +
'</div> ' +
'<div class="row-fluid">' +
'</div> ' +
'<div class="row-fluid">' +
'<div class="span2 obs-miniatures">' +
ajouterImgMiniatureAuTransfert() +
'</div>'+
982,7 → 982,7
'Milieux : ' + milieux + ' ' + ' ; ' +
'</li>' +
'<li>' +
'Notes : ' + notes +
'Notes : ' + notes +
'</li>' +
'</ul>' +
'</div>' +
998,7 → 998,7
$('.cb-milieux:checked').each(function() {
milieux.push($(this).val());
});
 
milieuxStr = Array.prototype.slice.call(milieux).join(', ');
return milieuxStr;
}
1017,21 → 1017,21
css = $(this).hasClass('b64') ? 'miniature b64' : 'miniature',
src = $(this).attr('src'),
alt = $(this).attr('alt');
 
var miniature = '<img class="'+css+' '+visible+'" alt="'+alt+'"src="'+src+'" />';
miniatures += miniature;
 
var indicateurActif = premiere ? 'active' : '';
var indicateur = '<li class="' + indicateurActif + '" data-numero="' + numero++ + '"></li>';
indicateurs += indicateur;
 
premiere = false;
});
 
if ($('#miniatures img').length == 1) {
html = miniatures;
} else {
html =
html =
'<div class="defilement">' +
miniatures +
'<a class="defilement-control-zone gauche">' +
1051,10 → 1051,10
var miniatureSelectionne = element.siblings('img.miniature-selectionnee');
miniatureSelectionne.removeClass('miniature-selectionnee').addClass('miniature-cachee');
var miniatureAffichee = miniatureSelectionne;
 
var indicateurActif = element.parent().find('.defilement-indicateurs .active');
indicateurActif.removeClass('active');
 
if (element.hasClass('defilement-control-zone') && element.hasClass('gauche')) {
if (miniatureSelectionne.prev('.miniature').length != 0) {
miniatureAffichee = miniatureSelectionne.prev('.miniature');
1086,8 → 1086,7
}
 
function surChangementReferentiel() {
NOM_SCI_PROJET = $('#referentiel').val();
NOM_SCI_REFERENTIEL = NOM_SCI_PROJET+':'+PROJETS_VERSIONS[NOM_SCI_PROJET];
NOM_SCI_REFERENTIEL = $('#referentiel').val();
$('#taxon').val('');
}
 
1098,7 → 1097,7
$('#zone-liste-obs').addClass('hidden');
} else {
$('#zone-liste-obs').removeClass('hidden');
 
if (obsNbre > 0 && obsNbre < OBS_MAX_NBRE) {
$('#transmettre-obs').removeAttr('disabled');
$('#ajouter-obs').removeAttr('disabled');
1158,17 → 1157,17
famille = nomHorsListe ? $('#taxon').data('famille') : taxons[numNomSel]['famille'],
referentiel = (numNomSel == undefined) ? '' : NOM_SCI_REFERENTIEL,
notes = (nomSpecial ? taxons[numNomSel]['nom_fr'] + '. ' : '') + $('#notes').val();
 
$('#liste-obs').data('obsId'+obsNbre, {
'date': $('#date').val(),
'date': $('#date').val(),
'notes': notes,
 
'station': $('input[name="adresse"]').val(),
'latitude': $('#latitude').val(),
'longitude': $('#longitude').val(),
'commune_nom': $('#commune-nom').text(),
'commune_code_insee': $('#commune-code-insee').text(),
 
'nom_sel': nomSel,
'num_nom_sel': numNomSel,
'nom_ret': nomRet,
1176,12 → 1175,12
'num_taxon': numTaxon,
'famille': famille,
'referentiel': referentiel,
 
'milieu': getMilieux(),
 
// Ajout des champs images
'image_nom': getNomsImgsOriginales(),
 
// Ajout des champs étendus de l'obs
'obs_etendue': getObsChpEtendus()
});
1212,7 → 1211,7
var longitudeFinRue = {cle: 'longitudeFinRue', label: 'Longitude de fin de la rue', valeur: latLngFin.lng().toFixed(5)};
champs.push(longitudeFinRue);
}
 
$('.obs-chp-etendu').each(function() {
var valeur = $(this).val(),
cle = $(this).attr('name'),
1249,13 → 1248,13
// or javascript n'a pas de méthode cross browsers pour extraire les clés
// TODO: utiliser var.keys quand ça sera plus répandu
// ou bien utiliser un vrai tableau et pas un objet
for (var obsNum in observations) {
obsATransmettre = new Object();
for (var obsNum in observations) {
obsATransmettre = new Object();
 
obsATransmettre['projet'] = TAG_PROJET;
obsATransmettre['tag-obs'] = TAG_OBS;
obsATransmettre['tag-img'] = TAG_IMG;
 
var utilisateur = new Object();
utilisateur.id_utilisateur = $("#id_utilisateur").val();
utilisateur.prenom = $("#prenom").val();
1267,7 → 1266,7
if(idObsNumerique != "") {
envoyerObsAuCel(idObsNumerique, obsATransmettre);
}
 
break;
}
}
1334,20 → 1333,20
},
complete: function(jqXHR, textStatus) {
var debugMsg = extraireEnteteDebug(jqXHR);
 
if (erreurMsg != '') {
if (DEBUG) {
$('#dialogue-obs-transaction-ko .alert-txt').append('<pre class="msg-erreur">' + erreurMsg + '</pre>');
$('#dialogue-obs-transaction-ko .alert-txt').append('<pre class="msg-debug">Débogage : ' + debugNonJson + debugMsg + '</pre>');
}
var hrefCourriel = 'mailto:cel_remarques@tela-botanica.org?' +
'subject=Disfonctionnement du widget de saisie ' + TAG_PROJET +
var hrefCourriel = 'mailto:cel_remarques@tela-botanica.org?' +
'subject=Disfonctionnement du widget de saisie ' + TAG_PROJET +
'&body=' + erreurMsg + "\nDébogage :\n" + debugMsg + debugNonJson;
 
// mise en valeur de l'obs en erreur + scroll vers celle ci en changeant le hash
$('#obs'+idObs+' div div').addClass('obs-erreur');
window.location.hash = "obs"+idObs;
 
$('#dialogue-obs-transaction-ko .alert-txt').append($('#tpl-transmission-ko').clone()
.find('.courriel-erreur')
.attr('href', hrefCourriel)
1368,7 → 1367,7
window.location.hash = "dialogue-obs-transaction-ok";
initialiserObs();
}, 1500);
 
}
}
}
/trunk/widget/modules/saisie/squelettes/sauvages/sauvages.tpl.html
3,25 → 3,25
<head>
<title>Sauvages de ma rue</title>
<meta charset="utf-8">
 
<meta name="author" content="Jean-Pascal MILCENT, Aurélien PERONNET, Céline VIDAL" />
<meta name="keywords" content="Sauvages de ma rue, CEL, Tela Botanica, Natural Solutions, MNHN" />
<meta name="description" content="Widget de saisie pour le projet Sauvages de ma rue" />
 
<!-- Viewport Mobile -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
 
<!-- Favicones -->
<link rel="shortcut icon" type="image/x-icon" href="<?=$url_base?>/modules/saisie/squelettes/sauvages/img/favicon.ico" />
 
<!-- Javascript : bibliothèques -->
<!-- Google Map v3 -->
<!--<script type="text/javascript" src="https://getfirebug.com/firebug-lite.js"></script>-->
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true&amp;language=fr&amp;region=FR"></script>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true&amp;language=fr&amp;region=FR"></script>
 
<!-- Jquery -->
<script type="text/javascript" src="http://www.tela-botanica.org/commun/jquery/1.7.1/jquery-1.7.1.min.js"></script>
 
<!-- Jquery UI : nécessaire pour le minicalendrier et l'auto-complétion -->
<script type="text/javascript" src="http://www.tela-botanica.org/commun/jquery/jquery-ui/1.10.2/js/jquery-ui-1.10.2.custom.min.js"></script>
<script type="text/javascript" src="http://www.tela-botanica.org/commun/jquery/jquery-ui/1.10.2/js/jquery.ui.datepicker-fr.min.js"></script>
32,10 → 32,10
<script type="text/javascript" src="http://www.tela-botanica.org/commun/jquery/validate/1.11.1/messages_fr.js"></script>
<!-- Jquery Form :nécessaire pour l'upload des images -->
<script type="text/javascript" src="http://www.tela-botanica.org/commun/jquery/form/3.32/jquery.form.min.js"></script>
 
<!-- Bootstrap -->
<script type="text/javascript" src="http://www.tela-botanica.org/commun/bootstrap/2.3.2/js/bootstrap.min.js"></script>
 
<!-- Javascript : appli saisie -->
<script src="<?=$url_base?>saisie?projet=sauvages&amp;service=taxons" type="text/javascript"></script>
<script type="text/javascript">
44,14 → 44,14
var DEBUG = <?=isset($_GET['debug']) ? 'true' : 'false'?>;
// La présence du parametre 'html5' dans l'URL enclenche les fonctions avancées HTML5
var HTML5 = <?=isset($_GET['html5']) ? 'true' : 'false'?>;
 
// La présence du parametre 'ville' dans l'URL géolocalise
var VILLE = "<?=isset($_GET['ville']) ? $_GET['ville'] : ''?>";
VILLE = <?= isset($_GET['commune']) ? "'".$_GET['commune']."'" : 'VILLE' ?>;
 
// Mot-clé du widget/projet
var TAG_PROJET = "WidgetSauvages,Sauvages";
 
// Mots-clés à ajouter aux images
var TAG_IMG = "<?=isset($_GET['tag-img']) ? $_GET['tag-img'] : ''?>";
var SEPARATION_TAG_IMG = "<?= isset($_GET['motcle']) && isset($_GET['tag-img']) ? ',' : '' ?>";
60,17 → 60,13
var TAG_OBS = "<?=isset($_GET['tag-obs']) ? $_GET['tag-obs'] : ''?>";
var SEPARATION_TAG_OBS = "<?= isset($_GET['projet']) && isset($_GET['tag-obs']) ? ',' : '' ?>";
TAG_OBS = <?=isset($_GET['projet']) ? "'".$_GET['projet']."' + SEPARATION_TAG_OBS + TAG_OBS" : 'TAG_OBS' ?>;
 
// URL du web service réalisant l'insertion des données dans la base du CEL.
var SERVICE_SAISIE_URL = "<?=$url_ws_saisie?>";
// URL du web service permettant de récupérer les infos d'une observation du CEL.
var SERVICE_OBS_URL = "<?=$url_ws_obs?>";
// Code du référentiel utilisé pour les nom scientifiques (de la forme nom:code).
// Code du référentiel utilisé pour les nom scientifiques.
var NOM_SCI_REFERENTIEL = "<?=$ns_referentiel?>";
// Nom du référentiel utilisé pour les nom scientifiques.
var NOM_SCI_PROJET = "<?=$ns_projet?>";
// Code de la version du référentiel utilisé pour les nom scientifiques.
var NOM_SCI_VERSION = "<?=$ns_version?>";
// Indication de la présence d'une espèce imposée
var ESPECE_IMPOSEE = "<?=$espece_imposee; ?>";
// Tableau d'informations sur l'espèce imposée
79,14 → 75,11
var AUTOCOMPLETION_ELEMENTS_NBRE = 20;
// Indication de la présence d'un référentiel imposé
var REFERENTIEL_IMPOSE = "<?=$referentiel_impose; ?>";
// Indication des version utilisées de chaque référentiel
var PROJETS_VERSIONS = <?=json_encode($projets_versions)?>;
// URL du web service permettant l'auto-complétion des noms scientifiques.
var SERVICE_AUTOCOMPLETION_NOM_SCI_URL = "<?=$url_ws_autocompletion_ns?>?"+
"masque={masque}&"+
"recherche=etendue&"+
"retour.champs=famille,nom_retenu,nom_retenu_complet,num_taxonomique,nom_retenu.id&"+
//"version.projet="+NOM_SCI_VERSION+"&"+
"ns.structure=au"+"&"+
"navigation.limite="+AUTOCOMPLETION_ELEMENTS_NBRE;
// URL du web service permettant l'auto-complétion des noms scientifiques.
94,7 → 87,6
"masque={masque}&"+
"recherche=etendue&"+
"retour.champs=famille,nom_retenu,nom_retenu_complet,num_taxonomique,nom_retenu.id&"+
//"version.projet="+NOM_SCI_VERSION+"&"+
"ns.structure=au"+"&"+
"navigation.limite="+AUTOCOMPLETION_ELEMENTS_NBRE;
// Nombre d'observations max autorisé avant transmission
128,9 → 120,9
var SERVICE_OBS_URL = "<?=$url_ws_obs?>";
//]]>
</script>
 
<script type="text/javascript" src="<?=$url_base?>modules/saisie/squelettes/sauvages/js/sauvages.js"></script>
 
<!-- CSS -->
<link href="http://www.tela-botanica.org/commun/jquery/jquery-ui/1.10.2/css/smoothness/jquery-ui-1.10.2.custom.css" rel="stylesheet" type="text/css" media="screen" />
<link href="http://www.tela-botanica.org/commun/bootstrap/2.3.2/css/bootstrap.min.css" rel="stylesheet" type="text/css" media="screen" />
153,11 → 145,11
<button id="btn-aide" class="btn btn-mini btn-success">
<span class="icon-question-sign icon-white"></span>
<span id="btn-aide-txt" >Désactiver l'aide</span>
</button>
</button>
</p>
</div>
</div>
<div class="row-fluid">
<div class="row-fluid">
<div class="span12">
<form id="form-observateur" action="#" autocomplete="on">
<h2 id="titre-form-observateur">Observateur</h2>
166,11 → 158,11
<div class="row-fluid">
<div class="span6 control-group has-tooltip" data-placement="bottom"
title="Saisissez le courriel avec lequel vous être 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
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 : prénom et nom.">
<label class="control-label" for="courriel">
<strong class="obligatoire">*</strong>
<strong class="obligatoire">*</strong>
Courriel
</label>
<div class="controls">
182,12 → 174,12
<input id="id_utilisateur" name="id_utilisateur" type="hidden"/>
</div>
</div>
 
</div>
<div id="zone-courriel-confirmation" class="span6 control-group has-tooltip"
style="display:none;"
data-placement="bottom"
title="Saisissez à nouveau votre courriel afin de le confirmer. Le
data-placement="bottom"
title="Saisissez à nouveau votre courriel afin de le confirmer. Le
copier/coller est désactivé pour éviter les erreurs.">
<label class="control-label" for="courriel_confirmation">
<strong class="obligatoire">*</strong>
198,7 → 190,7
<span class="add-on">
<i class="icon-envelope"></i>
</span>
<input id="courriel_confirmation" name="courriel_confirmation"
<input id="courriel_confirmation" name="courriel_confirmation"
class="span11" type="text"/>
</div>
</div>
222,7 → 214,7
</div>
</div>
</div>
</fieldset>
</fieldset>
</div>
</form>
</div>
244,7 → 236,7
<p>
Vous n'êtes pas inscrit à Tela Botanica avec ce courriel.<br/>
Veuillez compléter les champs supplémentaires ou indiquer votre courriel d'inscription.<br/>
Pour retrouver vos observations dans le <a href="http://www.tela-botanica.org/appli:cel">Carnet en ligne</a>,
Pour retrouver vos observations dans le <a href="http://www.tela-botanica.org/appli:cel">Carnet en ligne</a>,
il sera nécesaire de <a href="http://www.tela-botanica.org/page:inscription">vous inscrire à Tela Botanica</a>.
</p>
</div>
255,7 → 247,7
</div>
</div>
</div>
 
<!-- Fiche terrain -->
<form id="form-obs" class="form-inline" action="#" autocomplete="on">
<h2 id="titre-form-obs">Fiche de terrain</h2>
262,17 → 254,17
<div id="zone-fiche-terrain">
<fieldset id="partie-date">
<legend>Date du relevé</legend>
<div class="row-fluid">
<div class="span12 control-group has-tooltip"
title="Vous pouvez cliquer sur l'icône de calendrier pour
sélectionner une date dans un calendrier. La date doit être au format :
<div class="row-fluid">
<div class="span12 control-group has-tooltip"
title="Vous pouvez cliquer sur l'icône de calendrier pour
sélectionner une date dans un calendrier. La date doit être au format :
jj/mm/aaaa">
<label class="control-label">
<strong class="obligatoire">*</strong>
Date du relevé
Date du relevé
<div class="input-prepend">
<span id="date-icone" class="add-on"></span>
<input id="date" class="input-small" name="date" type="text"
<input id="date" class="input-small" name="date" type="text"
placeholder="jj/mm/aaaa" />
</div>
</label>
279,12 → 271,12
</div>
</div>
</fieldset>
 
<fieldset id="partie-station">
<legend>Lieu du relevé</legend>
<div class="row-fluid">
<div class="span12">
<label for="map_canvas" class="control-label"
<label for="map_canvas" class="control-label"
title="Veuillez localiser l'observation">
<strong class="obligatoire">*</strong>
Géolocalisation
301,7 → 293,7
</div>
<div class="form-search form-horizontal">
<div class="control-group">
<input id="carte-recherche"
<input id="carte-recherche"
class="search-query span12 obs-chp-etendu has-tooltip"
type="text"
title="Permet de centrer la carte sur le lieu recherché. Il est nécessaire de sélectionner le lieu dans la liste déroulante."
315,9 → 307,9
</div>
<div class="row-fluid">
<div class="span12">
<div id="map-canvas" class="has-tooltip"
<div id="map-canvas" class="has-tooltip"
title="Vous pouvez cliquer sur la carte pour déplacer le marqueur
représentant votre station ou bien le glisser-déposer sur
représentant votre station ou bien le glisser-déposer sur
le lieu souhaité."></div>
</div>
</div>
327,7 → 319,7
<span class="afficher-coord-action">Afficher</span>
<span class="afficher-coord-action" style="display:none;">Cacher</span>
coordonnées
<span id="lat-lon-info" class="info has-tooltip"
<span id="lat-lon-info" class="info has-tooltip"
title="Système géodésique mondial, révision de 1984 - Coordonnées non projetées">
(WGS84)
</span>
337,7 → 329,7
<span for="marqueur-commune">Commune : </span>
<span id="marqueur-commune">
<span id="commune-nom" class="commune-info"></span>
(<span id="commune-code-insee" class="commune-info has-tooltip"
(<span id="commune-code-insee" class="commune-info has-tooltip"
title="Code INSEE de la commune"></span>)
</span>
</div>
370,14 → 362,14
</div>
</div>
</div>
 
<div class="row-fluid">
<div class="span12 control-group has-tooltip"
<div class="span12 control-group has-tooltip"
title="Choisissez le (ou les) côté(s) de la rue que vous avez étudié.">
<label class="control-label">
<strong class="obligatoire">*</strong>
<strong class="obligatoire">*</strong>
Côté de la rue
 
<select id="rue_cote" class="obs-chp-etendu" name="coteRue" data-label="Côté rue">
<option value="">Sélectionner un type de côté</option>
<option value="pair">Pair</option>
390,29 → 382,29
</fieldset>
 
<fieldset id="partie-observation">
<legend>Observations</legend>
<legend>Observations</legend>
<div class="row-fluid">
<div class="span12">
<div id="taxon-liste-input-groupe" class="control-group has-tooltip"
title="Sélectionnez une espèce dans la liste déroulante par son nom latin
title="Sélectionnez une espèce dans la liste déroulante par son nom latin
ou commun. Si une espèce est absente, sélectionner «Autre espèce»." >
<label>
<strong class="obligatoire">*</strong>
<strong class="obligatoire">*</strong>
Espèces communes
 
<div class="input-prepend ">
<span class="add-on">
<i class="icon-leaf"></i>
</span>
 
<select id="taxon-liste" name="taxon-liste">
<option value="" selected>Sélectionner une espèce</option>
 
<optgroup id="taxon-liste-noms">
<?php foreach ($taxons['sci-et-fr'] as $taxon) :?>
<option
class="<?=$taxon['nom_type'] ?>"
value="<?=$taxon['num_nom'] ?>"
<option
class="<?=$taxon['nom_type'] ?>"
value="<?=$taxon['num_nom'] ?>"
title="<?=$taxon['nom_title'] ?>"
data-nom-a-sauver="<?=$taxon['nom_a_sauver'] ?>"
>
422,9 → 414,9
</optgroup>
<optgroup id="taxon-liste-special">
<?php foreach ($taxons['speciaux'] as $taxon) :?>
<option
class="<?=$taxon['nom_type'] ?>"
value="<?=$taxon['num_nom'] ?>"
<option
class="<?=$taxon['nom_type'] ?>"
value="<?=$taxon['num_nom'] ?>"
title="<?=$taxon['nom_title'] ?>"
data-nom-a-sauver="<?=$taxon['nom_a_sauver'] ?>"
>
441,9 → 433,9
</div>
<div id="taxon-input-groupe" class="row-fluid hidden">
<div class="span12">
<div class="control-group has-tooltip"
title="Sélectionnez une espèce dans la liste déroulante pour lier
votre nom au référentiel. Si vous le désirez vous pouvez aussi saisir
<div class="control-group has-tooltip"
title="Sélectionnez une espèce dans la liste déroulante pour lier
votre nom au référentiel. Si vous le désirez vous pouvez aussi saisir
un nom absent du référentiel (Ex. : 'fleur violette' ou 'Viola sp.1')." >
<label for="taxon" class="control-label" title="Choisissez l'espèce rencontrée.">
Autre espèce
450,15 → 442,15
</label>
<div class="controls">
<input id="taxon" name="taxon" type="text" class="span12"
placeholder="Autre espèce (ou indication sur la plante)"
placeholder="Autre espèce (ou indication sur la plante)"
value="<?= $nom_sci_espece_defaut; ?>" />
</div>
</div>
</div>
</div>
 
<div class="row-fluid">
<div class="span12 control-group has-tooltip"
<div class="span12 control-group has-tooltip"
title="Indiquez le (ou les) milieu(x) dans lequel (lesquels) vous avez rencontré cette espèce.">
<label class="span2 control-label">
<strong class="obligatoire">*</strong>
521,12 → 513,12
</div>
</div>
</div>
 
<div class="row-fluid">
<div class="span12">
<label for="notes">Notes</label>
<div>
<textarea id="notes" class="span12" rows="7" name="notes"
<textarea id="notes" class="span12" rows="7" name="notes"
placeholder="Indiquez nous en particulier le ou les outils d'identification que vous avez utilisé, et toute autre information concernant le milieu ou l'espèce."></textarea>
</div>
</div>
534,9 → 526,9
</fieldset>
</div><!-- zone-fiche-terrain-->
</form>
<div id="zone-fiche-terrain-photo">
<form id="form-upload" class="form-horizontal" action="<?= $url_ws_upload ?>"
 
<div id="zone-fiche-terrain-photo">
<form id="form-upload" class="form-horizontal" action="<?= $url_ws_upload ?>"
method="post" enctype="multipart/form-data">
<div class="row-fluid">
<div class="span12">
543,12 → 535,12
<fieldset id="partie-photo">
<legend>Ajouter des photos</legend>
<p class="miniature-info" class="discretion help-inline">
Vous pouvez ajouter des photos correspondant à cette espèce.
Vous pouvez ajouter des photos correspondant à cette espèce.
Les photos doivent être au format JPEG et ne doivent pas excéder 5Mo chacunes.
</p>
<div id ="photos-conteneur">
<input type="file" id="fichier" name="fichier" accept="image/jpeg" />
<input type="hidden" name="MAX_FILE_SIZE" value="5242880"/>
<input type="hidden" name="MAX_FILE_SIZE" value="5242880"/>
<div id="miniatures"></div>
<p class="miniature-msg" class="span12">&nbsp;</p>
</div>
557,8 → 549,8
</div>
</form>
<div class="row-fluid">
<div class="span12 has-tooltip"
title="Une fois les champs remplis, vous pouvez cliquer sur ce bouton pour
<div class="span12 has-tooltip"
title="Une fois les champs remplis, vous pouvez cliquer sur ce bouton pour
ajouter votre observation à la liste à transmettre.">
<button id="ajouter-obs" class="btn btn-primary btn-large" type="button">
Ajouter
566,7 → 558,7
</div>
</div>
</div>
 
<!-- Messages d'erreur du formulaire-->
<div class="row-fluid">
<div class="zone-alerte span12">
600,7 → 592,7
</div>
</div>
</div>
 
<!-- Affiche le tableau récapitualif des observations ajoutées -->
<div id="zone-liste-obs" class="hidden">
<div class="row-fluid">
610,9 → 602,9
<h2 id="titre-liste-obs">Liste des observations à transmettre : <span class="obs-nbre">0</span></h2>
</div>
<div class="span4 droite">
<button id="transmettre-obs" class="btn btn-primary btn-large has-tooltip"
<button id="transmettre-obs" class="btn btn-primary btn-large has-tooltip"
type="button" disabled="disabled"
title="Ajoute les observations ci-dessous à votre Carnet en Ligne et les rend publiques.">
title="Ajoute les observations ci-dessous à votre Carnet en Ligne et les rend publiques.">
Transmettre
</button>
</div>
621,7 → 613,7
</div>
</div>
</div>
 
<div class="row-fluid">
<div class="zone-alerte span12">
<div id="dialogue-zero-obs" class="alert alert-block" style="display: none;">
629,13 → 621,13
<h4 class="alert-heading">Attention : aucune observation</h4>
<p>Veuillez saisir des observations pour les transmettres.</p>
</div>
 
<div id="dialogue-obs-transaction-ok" class="alert alert-success alert-block" style="display: none;">
<a class="close">×</a>
<h4 class="alert-heading">Information : transmission des observations</h4>
<div class="alert-txt"></div>
</div>
 
<div id="dialogue-obs-transaction-ko" class="alert alert-error alert-block" style="display: none;">
<a class="close">×</a>
<h4 class="alert-heading">Erreur : transmission des observations</h4>
644,9 → 636,9
</div>
</div>
</div>
 
<!-- Fenêtres modales -->
<div id="chargement" class="modal-fenetre" style="display:none;">
<div id="chargement" class="modal-fenetre" style="display:none;">
<div id="chargement-centrage" class="modal-contenu">
<div class="progress progress-success progress-striped active">
<div id="barre-progression-upload" class="bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="10" style="">
655,36 → 647,36
</div>
<p id="chargement-txt" style="color:white;font-size:1.5em;">
Transfert des observations en cours...<br />
Cela peut prendre plusieurs minutes en fonction de la taille des images et du nombre
Cela peut prendre plusieurs minutes en fonction de la taille des images et du nombre
d'observations à transférer.
</p>
</div>
</div>
 
<!-- Templates HTML -->
<div id="tpl-transmission-ok" style="display:none;">
<p class="msg">
<p class="msg">
Merci Beaucoup&nbsp;! Vos observations ont bien été transmises aux chercheurs.<br />
Elles sont désormais affichées sur la carte Sauvages de ma rue,
et s'ajoutent aux données du Carnet en ligne.<br />
Elles sont désormais consultables à travers les différents outils de visualisation
du réseau Tela Botanica (<a href="http://www.tela-botanica.org/site:botanique">eFlore</a>,
<a href="http://www.tela-botanica.org/appli:pictoflora">galeries d'images</a>,
Elles sont désormais consultables à travers les différents outils de visualisation
du réseau Tela Botanica (<a href="http://www.tela-botanica.org/site:botanique">eFlore</a>,
<a href="http://www.tela-botanica.org/appli:pictoflora">galeries d'images</a>,
<a href="http://www.tela-botanica.org/appli:identiplante">identiplante</a>,
<a href="http://www.tela-botanica.org/widget:cel:cartoPoint">cartographie (widget)</a>...)<br />
</p>
</p>
<p>
Bonne continuation&nbsp;!
</p>
<p>
Si vous souhaitez les modifier ou les supprimer, vous pouvez les retrouver en vous
Si vous souhaitez les modifier ou les supprimer, vous pouvez les retrouver en vous
connectant à votre <a href="http://www.tela-botanica.org/appli:cel">Carnet en ligne</a>.<br />
N'oubliez pas qu'il est nécessaire de
N'oubliez pas qu'il est nécessaire de
<a href="http://www.tela-botanica.org/page:inscription">s'inscrire à Tela Botanica</a>
au préalable, si ce n'est pas déjà fait.
</p>
<p>
Pour toute question, n'hésitez pas à nous contacter à&nbsp;:
Pour toute question, n'hésitez pas à nous contacter à&nbsp;:
<a href="mailto:sauvages@tela-botanica.org">sauvages@tela-botanica.org</a>
</p>
</div>
691,10 → 683,10
<div id="tpl-transmission-ko" style="display:none;">
<p class="msg">
Une erreur est survenue lors de la transmission d'une observation (indiquée en rouge).<br />
Vous pouvez tenter de la retransmettre en cliquant à nouveau sur le bouton transmettre ou bien la supprimer
Vous pouvez tenter de la retransmettre en cliquant à nouveau sur le bouton transmettre ou bien la supprimer
et transmettre les suivantes.<br />
Néanmoins, les observations n'apparaissant plus dans la liste "observations à transmettre", ont bien été transmises lors de votre précédente tentative. <br />
Si le problème persiste, vous pouvez signaler le dysfonctionnement sur
Si le problème persiste, vous pouvez signaler le dysfonctionnement sur
<a href="<?= $url_remarques ?>?email=cel_remarques@tela-botanica.org&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;">
701,7 → 693,7
le formulaire de signalement d'erreurs</a>.
</p>
</div>
 
<!-- Stats : Google Analytics-->
<script type="text/javascript">
//<![CDATA[
708,7 → 700,7
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-20092557-1']);
_gaq.push(['_trackPageview']);
 
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
/trunk/widget/modules/saisie/squelettes/arbres-tetards/arbres-tetards.tpl.html
58,10 → 58,8
var SEPARATION_TAG_OBS = "<?= isset($_GET['projet']) && isset($_GET['tag-obs']) ? ',' : '' ?>";
TAG_OBS = <?=isset($_GET['projet']) ? "'".$_GET['projet']."' + SEPARATION_TAG_OBS + TAG_OBS" : 'TAG_OBS' ?>;
 
// Code du référentiel utilisé pour les nom scientifiques (de la forme nom:code).
// Code du référentiel utilisé pour les nom scientifiques.
var NOM_SCI_REFERENTIEL = "<?=$ns_referentiel?>";
// Nom du référentiel utilisé pour les nom scientifiques.
var NOM_SCI_PROJET = "<?=$ns_projet?>";
 
// Indication de la présence d'une espèce imposée
var ESPECE_IMPOSEE = "<?=$espece_imposee; ?>";
68,8 → 66,6
// Tableau d'informations sur l'espèce imposée
var INFOS_ESPECE_IMPOSEE = <?=$infos_espece; ?>;
 
// Indication des version utilisées de chaque référentiel
var PROJETS_VERSIONS = <?=json_encode($projets_versions)?>;
// Nombre d'élément dans les listes d'auto-complétion
var AUTOCOMPLETION_ELEMENTS_NBRE = 20;
// URL du web service permettant l'auto-complétion des noms scientifiques.
/trunk/widget/modules/saisie/squelettes/arbres-tetards/js/arbres-tetards.js
225,20 → 225,8
 
function initialiserGoogleMap(){
// Carte
if (NOM_SCI_PROJET == 'bdtxa') {
var latLng = new google.maps.LatLng(14.6, -61.08334);// Fort-De-France
var zoomDefaut = 8;
} else if (NOM_SCI_PROJET == 'isfan') {
var latLng = new google.maps.LatLng(29.28358, 10.21884);// Afrique du Nord
var zoomDefaut = 4;
} else if (NOM_SCI_PROJET == 'apd') {
var latLng = new google.maps.LatLng(8.75624, 1.80176);// Afrique de l'Ouest et du Centre
var zoomDefaut = 4;
} else {
//var latLng = new google.maps.LatLng(46.30871, 2.54395);// Centre de la France
var latLng = new google.maps.LatLng(45.1667, 5.7905);// Centre de l'Isère
var zoomDefaut = 8;
}
var latLng = new google.maps.LatLng(45.1667, 5.7905);// Centre de l'Isère
var zoomDefaut = 8;
 
var options = {
zoom: zoomDefaut,
498,7 → 486,7
 
function getUrlAutocompletionNomsSci() {
var mots = $('#taxon').val(),
url = SERVICE_AUTOCOMPLETION_NOM_SCI_URL_TPL.replace('{referentiel}',NOM_SCI_PROJET);
url = SERVICE_AUTOCOMPLETION_NOM_SCI_URL_TPL.replace('{referentiel}',NOM_SCI_REFERENTIEL);
url = url.replace('{masque}', mots);
return url;
}
666,26 → 654,8
var geocoderOptions = {},
addressSuffix = '';
 
switch(NOM_SCI_PROJET) {
case 'isfan':
// Si des résultats se trouvent dans ce rectangle, ils apparaîtront en premier.
// Ça marche moyen...
geocoderOptions.bounds = new google.maps.LatLngBounds(
new google.maps.LatLng(20.756114, -22.023927),
new google.maps.LatLng(38.065392, 33.78662)
);
break;
case 'apd':
geocoderOptions.bounds = new google.maps.LatLngBounds(
new google.maps.LatLng(-6.708254, -26.154786),
new google.maps.LatLng(27.488781, 30.490722)
);
break;
case 'bdtfx':
case 'bdtxa':
geocoderOptions.region = 'fr';
addressSuffix = ', France';
}
geocoderOptions.region = 'fr';
addressSuffix = ', France';
 
$('#carte-recherche').autocomplete({
//Cette partie utilise geocoder pour extraire des valeurs d'adresse
993,7 → 963,7
var numNomSel = ($('#taxon-liste').val() == '?') ? $('#taxon').data('numNomSel') : $('#taxon-liste').val(),
nomSpecial = $('#taxon-liste option:selected').hasClass('nom-special'),
taxon = ($('#taxon-liste').val() == '?') ? $('#taxon').val() : $('#taxon-liste option:selected').data('nom-a-sauver'),
referentiel = (numNomSel == undefined) ? '' : '['+NOM_SCI_PROJET+']',
referentiel = (numNomSel == undefined) ? '' : '['+NOM_SCI_REFERENTIEL+']',
commune = $('#commune-nom').text(),
codeInsee = $('#commune-code-insee').text(),
lat = $('input[name="latitude"]').val(),