Subversion Repositories eFlore/Applications.cel

Compare Revisions

No changes between revisions

Ignore whitespace Rev 711 → Rev 712

/trunk/widget/modules/saisie/configurations/CG34_ObsBiodiv_Flore_recap definitif 22 04 2011.xls
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/widget/modules/saisie/configurations/CG34_ObsBiodiv_Flore_recap definitif 22 04 2011.xls
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/widget/modules/saisie/configurations/biodiversite34_taxons.tsv
New file
0,0 → 1,4
nom_sel num_nom_sel nom_ret num_nom_ret num_taxon famille nom_fr
Pancratium maritimum L. 47379 Pancratium maritimum L. 47379 5834 Amaryllidaceae Lis de mer
Echinophora spinosa L. 23444 Echinophora spinosa L. 23444 166 Apiaceae Panais épineux
Calystegia soldanella (L.) Roem. & Schult. 12352 Calystegia soldanella (L.) Roem. & Schult. 12352 2450 Convolvulaceae Liserons de mer
/trunk/widget/modules/saisie/squelettes/biodiversite34/js/biodiversite34.js
New file
0,0 → 1,42
$(function() {
$("#date").datepicker($.datepicker.regional['fr']);
$("#courriel-confirmation").bind('paste', function(e) {
$("#dialogue-bloquer-copier-coller").dialog();
return false;
});
var obsNumero = 0;
$("#ajouter-obs").click(function(e) {
obsNumero = obsNumero + 1;
$("#liste-obs tbody").append(
'<tr id="obs-'+obsNumero+'">'+
'<td>'+obsNumero+'</td>'+
'<td>'+$("#date").val()+'</td>'+
'<td>'+$("#taxon option:selected").text()+'</td>'+
'<td>'+$("#notes").val()+'</td>'+
'<td><button class="supprimer-obs" value="'+obsNumero+'">Supprimer</button></td>'+
'</tr>');
$("#liste-obs").data('obs-id:'+obsNumero, {'date' : $("#date").val(), 'taxon' : $("#taxon").val()});
});
$(".supprimer-obs").live('click', function() {
var obsId = $(this).val();
$('#obs-'+obsId).remove();
$("#liste-obs").removeData('obs-id:'+obsId)
});
$( "#tramsmettre-obs").click(function(e) {
var observations = $("#liste-obs").data();
if (observations == undefined) {
$("#dialogue-zero-obs").dialog();
} else {
$.each(observations, function (obsId, value) {
$.each(value, function (key, value) {
alert(obsId+' : '+key + '=' + value);
});
});
}
 
});
});
/trunk/widget/modules/saisie/squelettes/biodiversite34/biodiversite34.tpl.html
New file
0,0 → 1,119
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Biodiversité 34</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<meta http-equiv="Content-style-type" content="text/css" />
<meta http-equiv="Content-script-type" content="text/javascript" />
<meta http-equiv="Content-language" content="fr" />
<meta name="revisit-after" content="15 days" />
<meta name="robots" content="index,follow" />
<meta name="author" content="Delphine CAUQUIL, Jean-Pascal MILCENT" />
<meta name="keywords" content="Tela Botanica, Biodiversité34, CG34, CEL" />
<meta name="description" content="Widget de saisie simplifié pour le projet Biodiversité 34" />
 
<!-- Favicones -->
<link rel="icon" type="image/png" href="http://www.tela-botanica.org/sites/commun/generique/images/favicones/tela_botanica.png" />
<link rel="shortcut icon" type="image/x-icon" href="http://www.tela-botanica.org/sites/commun/generique/images/favicones/tela_botanica.ico" />
<!-- Javascript : bibliothèques -->
<!-- Google Map v3 -->
<script type="text/javascript" src="http://maps.google.com/maps/api/js?v=3.3&amp;sensor=true"></script>
<!-- Jquery -->
<script type="text/javascript" src="http://www.tela-botanica.org/commun/jquery/1.6/jquery-1.6.min.js"></script>
<script type="text/javascript" src="http://www.tela-botanica.org/commun/jquery/jquery-ui/1.8.13/js/jquery-ui-1.8.13.custom.min.js"></script>
<script type="text/javascript" src="http://www.tela-botanica.org/commun/jquery/jquery-ui/1.8.13/js/jquery.ui.datepicker-fr.js"></script>
<script type="text/javascript" src="http://www.tela-botanica.org/commun/jquery/fancybox/1.3.4/jquery.fancybox-1.3.4.pack.js"></script>
<script type="text/javascript" src="<?=$url_base?>modules/saisie/squelettes/biodiversite34/js/biodiversite34.js"></script>
<!-- CSS -->
<link href="<?=$url_base?>modules/saisie/squelettes/biodiversite34/css/biodiversite34.css" rel="stylesheet" type="text/css" media="screen" />
<link rel="stylesheet" href="http://www.tela-botanica.org/commun/jquery/jquery-ui/1.8.13/css/ui-darkness/jquery-ui-1.8.13.custom.css" type="text/css" media="screen" />
<link rel="stylesheet" href="http://www.tela-botanica.org/commun/jquery/fancybox/1.3.4/jquery.fancybox-1.3.4.css" type="text/css" media="screen" />
<!-- Stats : Google Analytics -->
<script type="text/javascript">
//<![CDATA[
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';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
//]]>
</script>
</head>
 
<body>
<h1>Biodiversité 34</h1>
<h2>Saisie des observations</h2>
<form action="#">
<fieldset>
<legend>Identification</legend>
<label for="prenom">Prénom</label>
<input id="prenom" name="prenom" type="text" value="" />
<label for="nom">NOM</label>
<input id="nom" name="nom" type="text" value="" />
<label for="courriel">Courriel</label>
<input id="courriel" name="courriel" type="text" value="" />
<label for="courriel-confirmation">Courriel (confirmation)</label>
<input id="courriel-confirmation" name="courriel-confirmation" type="text" value="" />
</fieldset>
<fieldset>
<legend>Station / Localisation</legend>
<label for="milieu">Milieu</label>
<select id="milieu" name="milieu">
<option value="Trottoir">Trottoir</option>
</select>
<label for="latitude">Latitude</label>
<input id="latitude" name="latitude" type="text" value="" />
<label for="longitude">Longitude</label>
<input id="longitude" name="longitude" type="text" value="" />
<button type="button">Repérer la localisation sur une carte Google Map</button>
</fieldset>
<fieldset>
<legend>Observation</legend>
<label for="date">Date</label>
<input id="date" name="date" type="text" value="" />
<label for="taxon">Espèce</label>
<select id="taxon" name="taxon">
<?php foreach ($taxons as $taxon) : ?>
<option value="<?=$taxon['num_nom_sel']?>"><?=$taxon['nom_fr']?></option>
<?php endforeach; ?>
</select>
<label for="notes">Notes</label>
<textarea id="notes" name="notes"></textarea>
<button id="ajouter-obs" type="button">Ajouter</button>
</fieldset>
</form>
<h2>Liste des observations à transmettre</h2>
<form action="#">
<table id="liste-obs">
<thead><tr><th>Numéro</th><th>Date</th><th>Nom</th><th>Notes</th><th>Suppression</th></tr></thead>
<tbody></tbody>
</table>
<button id="tramsmettre-obs" type="button">Transmettre</button>
</form>
<div id="dialogue-bloquer-copier-coller" style="display: none;" title="Information copier/coller">
<p>
Merci de ne pas copier/coller votre courriel.<br/>
La double saisie permet de vérifier l'absence d'erreurs.
</p>
</div>
<div id="dialogue-zero-obs" style="display: none;" title="Information aucune observation">
<p>
Veuillez saisir des observations pour les transmettres.
</p>
</div>
</body>
</html>
/trunk/widget/modules/saisie/squelettes/biodiversite34/css/biodiversite34.css
New file
0,0 → 1,88
@CHARSET "UTF-8";
html {
overflow:hidden;
}
body {
overflow:hidden;
padding:0;
margin:0;
width:100%;
height:100%;
font-family:Arial;
font-size:12px;
background-color:#4A4B4C;
color:#CCC;
}
h1 {
font-size:1.6em;
}
h2 {
font-size:1.4em;
}
a, a:active, a:visited {
border-bottom:1px dotted #666;
color:#CCC;
text-decoration:none;
}
a:active {
outline:none;
}
a:focus {
outline:thin dotted;
}
a:hover {
color:#56B80E;
border-bottom:1px dotted #56B80E;
}
/*+-----------------------------------------------------------------------------------------------------------------+*/
/* Présentation des listes de définitions */
dl {
width:100%;
}
dt {
float:left;
font-weight:bold;
text-align:top left;
margin-right:0.3em;
}
dd {
width:auto;
margin:0.5em 0;
}
/*+-----------------------------------------------------------------------------------------------------------------+*/
/* Tableau : */
table {
border:1px solid gray;
border-collapse:collapse;
}
table thead, table tfoot, table tbody {
background-color:Gainsboro;
border:1px solid gray;
color:black;
}
table tbody {
background-color:#FFF;
}
table th {
font-family:monospace;
border:1px dotted gray;
padding:5px;
background-color:Gainsboro;
}
table td {
font-family:arial;
border:1px dotted gray;
padding:5px;
text-align:left;
}
table caption {
font-family:sans-serif;
}
/*+-----------------------------------------------------------------------------------------------------------------+*/
/* Générique */
.nettoyage{
clear:both;
}
hr.nettoyage{
visibility:hidden;
}
/trunk/widget/modules/saisie/Saisie.php
New file
0,0 → 1,87
<?php
// declare(encoding='UTF-8');
/**
* Widget fournissant des interfaces de saisies simplifiée pour différent projets.
* Encodage en entrée : utf8
* Encodage en sortie : utf8
*
* Cas d'utilisation et documentation :
* @link http://www.tela-botanica.org/wikini/eflore/wakka.php?wiki=AideCELWidgetSaisie
*
* Paramètres :
* ===> projet = chaine [par défaut : Biodiversite34]
* 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)
*/
class Saisie extends WidgetCommun {
const DS = DIRECTORY_SEPARATOR;
const PROJET_DEFAUT = 'biodiversite34';
/**
* Méthode appelée par défaut pour charger ce widget.
*/
public function executer() {
$retour = null;
extract($this->parametres);
 
if (!isset($projet)) {
$projet = self::PROJET_DEFAUT;
}
$methode = $this->traiterNomMethodeExecuter($projet);
if (method_exists($this, $methode)) {
$retour = $this->$methode();
} else {
$this->messages[] = "Ce type de service '$methode' n'est pas disponible.";
}
 
if (is_null($retour)) {
$contenu = 'Un problème est survenu : '.print_r($this->messages, true);
} else {
$squelette = dirname(__FILE__).self::DS.'squelettes'.self::DS.$projet.self::DS.$retour['squelette'].'.tpl.html';
$contenu = $this->traiterSquelettePhp($squelette, $retour['donnees']);
}
$this->envoyer($contenu);
}
public function executerBiodiversite34() {
$widget['squelette'] = 'biodiversite34';
$widget['donnees'] = array();
$widget['donnees']['url_base'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], '');
$widget['donnees']['taxons'] = $this->recupererListeTaxonBiodiversite34();
return $widget;
}
private function recupererListeTaxonBiodiversite34() {
$taxons = null;
$fichier_tsv = dirname(__FILE__).self::DS.'configurations'.self::DS.'biodiversite34_taxons.tsv';
if (file_exists($fichier_tsv) && is_readable($fichier_tsv)) {
$taxons = $this->decomposerFichierTsv($fichier_tsv);
} else {
$this->debug[] = "Impossible d'ouvrir le fichier '$fichier_tsv'.";
}
return $taxons;
}
private function decomposerFichierTsv($fichier, $delimiter = "\t"){
$header = NULL;
$data = array();
if (($handle = fopen($fichier, 'r')) !== FALSE) {
while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE) {
if (!$header) {
$header = $row;
} else {
$data[] = array_combine($header, $row);
}
}
fclose($handle);
}
return $data;
}
}