Subversion Repositories eFlore/Applications.coel-consultation

Compare Revisions

Ignore whitespace Rev 15 → Rev 14

/trunk/squelettes/collection.css
1,68 → 1,36
@CHARSET "UTF-8";
/*--------------------------------------------------------------------------------------------------------------*/
/* Général */
dl{
margin:1em 0;
padding:0;}
dt{
background-color:#EEEEEE;
width:20em;
float:left;
margin:0 0 0 0;
padding:.3em;
border-top:1px solid #999;
font-weight:bold;}
dt:after{
content:" : ";}
/* hack de commentaire avec un antislash pour ie5 mac \*/
h2, h3, dt { clear: both; }
/* end hack */
dd{
float:left;
width:48em;
margin:0 0 0 0;
padding:.3em;
border-top:1px solid #999;}
/*--------------------------------------------------------------------------------------------------------------*/
/* Présentation fiche */
.discretion{
color:#A9A9A9;
font-size:10px;
font-weight:normal;}
/*--------------------------------------------------------------------------------------------------------------*/
/* Tableau du chronométrage du programme */
#pied_texte #chrono{
#pied_texte #chrono {
text-align: center;
margin:0 auto;}
#chrono table{
#chrono table {
display:block;
border:3px solid #6495ed;
border-collapse:collapse;}
#chrono thead, tfoot{
#chrono thead, tfoot {
background-color:#D0E3FA;
border:1px solid #6495ed;}
#chrono tbody{
#chrono tbody {
background-color:#FFFFFF;
border:1px solid #6495ed;}
#chrono th{
#chrono th {
font-family:monospace;
border:1px dotted #6495ed;
padding:5px;
background-color:#EFF6FF;
width:25%;}
#chrono td{
#chrono td {
font-family:sans-serif;
font-size:80%;
border:1px solid #6495ed;
padding:5px;
text-align:center;}
#chrono caption{
#chrono caption {
font-family:sans-serif;
text-align: center;
width:90%;
margin:auto;}
/*--------------------------------------------------------------------------------------------------------------*/
/* Débogage */
.debogage{
color:black;
border:3px solid #6495ed;}
/trunk/squelettes/fiche_structure.tpl.html
1,88 → 1,0
<!-- DEBUT FICHE STRUCTURE -->
<h1><?=$info['cs_nom']?> <span class="discretion">(id:<?=$id?>)</span></h1>
 
<h2>Général</h2>
<h3>Renseignements administratifs</h3>
<dl>
<dt>Acronyme</dt> <dd><?=$info['_acronyme_']?></dd>
<dt>Statut</dt> <dd><?=$info['_type_prive_']?><?=$info['_type_public_']?></dd>
<dt>Date de fondation</dt> <dd><?=$info['cs_date_fondation']?></dd>
<dt>Personne travaillant dans l'institution</dt> <dd><?=$info['cs_nbre_personne']?></dd>
</dl>
 
<h3>Adresse</h3>
<dl>
<dt>Adresse</dt> <dd><?=$info['cs_adresse_01']?></dd>
<dt>Complément d'adresse</dt> <dd><?=$info['cs_adresse_02']?></dd>
<dt>Code postal</dt> <dd><?=$info['cs_code_postal']?></dd>
<dt>Ville</dt> <dd><?=$info['cs_ville']?></dd>
<dt>Région</dt> <dd><?=$info['_region_']?></dd>
<dt>Pays</dt> <dd><?=$info['_pays_']?></dd>
<dt>Latitude/Longitude</dt> <dd><?=$info['_latitude_longitude_']?></dd>
</dl>
 
<h3>Description</h3>
<dl>
<dt>Description</dt> <dd><?=$info['cs_adresse_01']?></dd>
<dt>Condition d'accès</dt> <dd><?=$info['cs_condition_acces']?></dd>
<dt>Condition d'usage</dt> <dd><?=$info['cs_condition_usage']?></dd>
</dl>
 
<h3>Communication</h3>
<dl>
<dt>Téléphone/Fax</dt> <dd><?=$info['_telephone_fax_']?></dd>
<dt>Courriel</dt> <dd><?=$info['cs_courriel']?></dd>
<dt>Site web</dt> <dd><?=$info['_web_']?></dd>
</dl>
 
<h3>Divers</h3>
<dl>
<dt>GUID</dt> <dd><?=$info['cs_guid']?> </dd>
<dt>Notes</dt> <dd><?=$info['cmhl_notes']?> </dd>
<dt>Sources</dt> <dd><?=$info['cmhl_source']?> </dd>
<dt>Modifié par</dt> <dd><?=$info['_modifier_par_']?> </dd>
<dt>Date de dernière modification</dt> <dd><?=$info['cmhl_date_modification']?> </dd>
<dt>État de l'enregistrement</dt> <dd><?=$info['_etat_']?> </dd>
</dl>
 
<h2>Personnel</h2>
 
<h2>Conservation</h2>
<h3>Formation du personnel à la conservation</h3>
<dl>
<dt>Formation en conservation</dt> <dd><?=$info['_formation_']?> <?=$info['_formation_info_']?></dd>
<dt>Intérêt pour une formation</dt> <dd><?=$info['_formation_interet_']?></dd>
</dl>
 
<h3>Opérations & matériels</h3>
<dl>
<dt>Opérations actuelles de restauration</dt> <dd><?=$info['_restauration_']?> <?=$info['_restauration_operation_']?></dd>
<dt>Utilisation de matériel de conservation</dt> <dd><?=$info['_materiel_conservation_']?> <?=$info['_materiel_autre_']?></dd>
<dt>Traitements globaux</dt> <dd><?=$info['_traitement_']?> <?=$info['_traitement_liste_']?></dd>
</dl>
 
<h3>Local</h3>
<dl>
<dt>Locaux spécifiques aux collections</dt> <dd><?=$info['_stockage_local_']?></dd>
<dt>Meubles spécifiques aux collections</dt> <dd><?=$info['_stockage_meuble_']?></dd>
<dt>Paramêtres maîtrisés</dt> <dd><?=$info['_stockage_parametre_']?></dd>
<dt>Conservation des collections en commun</dt> <dd><?=$info['_collection_commune_']?> <?=$info['_collection_autre_']?></dd>
<dt>Accès contrôlé</dt> <dd><?=$info['_acces_controle_']?></dd>
</dl>
 
<h3>Acquisitions</h3>
<dl>
<dt>Acquisition de nouvelles collections</dt> <dd><?=$info['_acquisition_collection_']?></dd>
<dt>Mise en herbier de nouveaux échantillons</dt> <dd><?=$info['_acquisition_echantillon_']?></dd>
<?php if ($info['csc_mark_acquisition_echantillon'] == '1') : ?>
<dt>Traitement avant intégration</dt> <dd><?=$info['_acquisition_traitement_']?></dd>
<?php if ($info['csc_mark_acquisition_traitement'] == '1') : ?>
<dt>Désinsectisation</dt> <dd><?=$info['_acquisition_traitement_insecte_']?></dd>
<dt>Empoisonnement</dt> <dd><?=$info['_acquisition_traitement_poison_']?></dd>
<?php endif; ?>
<?php endif; ?>
</dl>
 
 
<h2>Valorisation</h2>
<!-- FIN FICHE STRUCTURE -->
<h1>Collection <?=$id?></h1>
/trunk/controleurs/Recherche.php
29,9 → 29,7
$donnees = array();
// Gestion des données de la requête
$chaine = $this->obtenirChaineRecherche();
$this->memoriserChaineRecherche($chaine);
$donnees['recherche'] = $chaine;
$donnees['recherche'] = (isset($_GET['recherche']) ? $_GET['recherche'] : '');
// Gestion de l'url
$this->url->setVariableRequete('module', 'Recherche');
44,20 → 42,6
$this->setSortie(self::RENDU_TETE, $this->getVue('moteur', $donnees));
}
private function obtenirChaineRecherche() {
$chaine = '';
if (isset($_GET['recherche'])) {
$chaine = $_GET['recherche'];
} else if (isset($_SESSION['col']['recherche'])) {
$chaine = $_SESSION['col']['recherche'];
}
return $chaine;
}
private function memoriserChaineRecherche($chaine) {
$_SESSION['col']['recherche'] = $chaine;
}
/**
* Recherche des collections.
* @return string la vue correspondante
/trunk/controleurs/Collection.php
45,7 → 45,6
*/
public static function initialiser() {
self::verifierCreationInstance();
self::gererSession();
if (isset($_GET['module'])) {
self::$parametres['module'] = $_GET['module'];
66,15 → 65,6
self::fusionnerSortie($module->getSortie());
}
private static function gererSession() {
if (Config::get('session_demarrage')) {
// Attribution d'un nom à la session
session_name(Config::get('session_nom'));
// Démarrage de la session
session_start();
}
}
/**
* Fusionne un tableau de sortie par défaut avec le tableau renvoyé par l'action du module.
* @param array le tableau à fusionner
/trunk/controleurs/Fiche.php
11,7 → 11,7
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
* @version SVN: $Id$
*/
class Fiche extends ColControleur {
class Recherche extends ColControleur {
//+----------------------------------------------------------------------------------------------------------------+
// Méthodes
22,116 → 22,23
return $this->afficherStructure();
}
/**
* Charge le moteur de recherche et l'envoie à la vue.
*/
public function afficherStructure() {
$donnees = array();
$structureDao = $this->getModele('StructureDao');
// Gestion des actions par défaut
$this->executerAction('Recherche', 'chargerMoteurRecherche');
// Gestion des données de la requête
if (!isset($_GET['id'])) {
} else {
$donnees['id'] = $_GET['id'];
$donnees['info'] = $structureDao->getStructure($donnees['id']);
$this->traiterMetaDonnees($donnees['info']);
$this->traiterDonneesStructure($donnees['info']);
$this->traiterDonneesStructureConservation($donnees['info']);
Debug::printr($donnees);
$this->setSortie(self::RENDU_CORPS, $this->getVue('fiche_structure', $donnees));
}
}
private function traiterMetaDonnees(&$donnees) {
$donnees['_modifier_par_'] = $this->traiterPersonne($donnees['cmhl_ce_modifier_par']);
$donnees['_etat_'] = $this->construireTxtListeOntologie($donnees['cmhl_ce_etat']);
}
private function traiterDonneesStructure(&$donnees) {
// liste 01 : Liste des états des enregistrements de la base de données
Ontologie::chargerListe(1001);
// liste 12 : Liste des types de structure privé
Ontologie::chargerListe(1015);
// liste 13 : Liste des types de structure public
Ontologie::chargerListe(1016);
// liste 71 : Liste des pays du standard ISO-3166-1
Ontologie::chargerListe(1074);
$donnees['recherche'] = (isset($_GET['recherche']) ? $_GET['recherche'] : '');
$donnees['_acronyme_'] = $this->construireTxtTruck($donnees['cs_truk_identifiant_alternatif']);
$donnees['_telephone_fax_'] = $this->construireTxtTruck($donnees['cs_truk_telephone']);
$donnees['_type_prive_'] = $this->construireTxtListeOntologie($donnees['cs_ce_truk_type_prive']);
$donnees['_type_public_'] = $this->construireTxtListeOntologie($donnees['cs_ce_truk_type_public']);
$donnees['_region_'] = Ontologie::getValeurNom($donnees['cs_ce_truk_region']);
$donnees['_pays_'] = $this->construireTxtListeOntologie($donnees['cs_ce_truk_pays']);
$donnees['_web_'] = $this->construireTxtTruckSansMajuscule($donnees['cs_truk_url']);
// Gestion de l'url
$this->url->setVariableRequete('module', 'Recherche');
$this->url->setVariableRequete('action', 'rechercher');
$donnees['url_form'] = $this->url->getUrl();
$donnees['url_module'] = 'Recherche';
$donnees['url_action'] = 'rechercher';
$latitude = $donnees['cs_latitude'];
$longitude = $donnees['cs_longitude'];
$donnees['_latitude_longitude_'] = ($longitude != '' && $latitude != '') ? $latitude+' / '+$longitude : '';
}
private function traiterDonneesStructureConservation(&$donnees) {
// liste 15 : Liste des types de local de stockage de collections
Ontologie::chargerListe(1018);
// liste 16 : Liste des types de mobilier de stockage de collections
Ontologie::chargerListe(1019);
// liste 17 : Liste des paramètres de contrôle environnemental d'un local
Ontologie::chargerListe(1020);
// liste 18 : Liste des types de collection non botanique
Ontologie::chargerListe(1021);
// liste 19 : Liste des types d'opération de restauration pour les collections botaniques
Ontologie::chargerListe(1022);
// liste 20 : Liste oui/non/en partie
Ontologie::chargerListe(1023);
// liste 21 : Liste du matériel dit de nom conservation des parts d'herbier
Ontologie::chargerListe(1024);
$donnees['_formation_'] = $this->formaterOuiNon($donnees['csc_mark_formation']);
$donnees['_formation_info_'] = $this->formaterParenthese($donnees['csc_formation']);
$donnees['_formation_info_'] = $this->formaterSautDeLigne($donnees['_formation_info_']);
$donnees['_formation_interet_'] = $this->formaterOuiNon($donnees['csc_mark_formation_interet']);
$donnees['_stockage_local_'] = $this->construireTxtListeOntologie($donnees['csc_truk_stockage_local']);
$donnees['_stockage_meuble_'] = $this->construireTxtListeOntologie($donnees['csc_truk_stockage_meuble']);
$donnees['_stockage_parametre_'] = $this->construireTxtListeOntologie($donnees['csc_truk_stockage_parametre']);
$donnees['_collection_commune_'] = $this->formaterOuiNon($donnees['csc_mark_collection_commune']);
$donnees['_collection_autre_'] = $this->construireTxtListeOntologie($donnees['csc_truk_collection_autre']);
$donnees['_collection_autre_'] = $this->formaterParenthese($donnees['_collection_autre_']);
$donnees['_acces_controle_'] = $this->formaterOuiNon($donnees['csc_mark_acces_controle']);
$donnees['_restauration_'] = $this->formaterOuiNon($donnees['csc_mark_restauration']);
$donnees['_restauration_operation_'] = $this->construireTxtListeOntologie($donnees['csc_truk_restauration_operation']);
$donnees['_restauration_operation_'] = $this->formaterParenthese($donnees['_restauration_operation_']);
$donnees['_materiel_conservation_'] = $this->construireTxtListeOntologie($donnees['csc_ce_materiel_conservation']);
$donnees['_materiel_autre_'] = $this->construireTxtListeOntologie($donnees['csc_truk_materiel_autre']);
$donnees['_materiel_autre_'] = $this->formaterParenthese($donnees['_materiel_autre_']);
$donnees['_traitement_'] = $this->formaterOuiNon($donnees['csc_mark_traitement']);
$donnees['_traitement_liste_'] = $this->construireTxtListeOntologie($donnees['csc_truk_traitement']);
$donnees['_traitement_liste_'] = $this->formaterParenthese($donnees['_traitement_liste_']);
$donnees['_acquisition_collection_'] = $this->formaterOuiNon($donnees['csc_mark_acquisition_collection']);
$donnees['_acquisition_echantillon_'] = $this->formaterOuiNon($donnees['csc_mark_acquisition_echantillon']);
$donnees['_acquisition_traitement_'] = $this->formaterOuiNon($donnees['csc_mark_acquisition_traitement']);
$donnees['_acquisition_traitement_poison_'] = $this->construireTxtListeOntologie($donnees['csc_truk_acquisition_traitement_poison']);
$donnees['_acquisition_traitement_insecte_'] = $this->construireTxtListeOntologie($donnees['csc_truk_acquisition_traitement_insecte']);
}
private function traiterPersonne($personne_id) {
$personneDao = $this->getModele('PersonneDao');
$personne_nom = $personneDao->getPersonneNomComplet($personne_id);
return $personne_nom;
}
public function afficherCollection() {
$donnees = array();
// Gestion des données de la requête
if (!isset($_GET['id'])) {
} else {
$donnees['id'] = $_GET['id'];
}
// Gestion du squelette et de la sortie
$this->executerAction('Recherche', 'chargerMoteurRecherche');
$this->setSortie(self::RENDU_CORPS, $this->getVue('fiche_collection', $donnees));
$this->setSortie(self::RENDU_TETE, $this->getVue('moteur', $donnees));
}
}
/trunk/modeles/PersonneDao.php
File deleted
\ No newline at end of file
/trunk/modeles/Ontologie.php
File deleted
\ No newline at end of file
/trunk/modeles/MetadonneeDao.php
File deleted
\ No newline at end of file
/trunk/modeles/StructureDao.php
File deleted
\ No newline at end of file
/trunk/bibliotheque/noyau/ColControleur.php
16,12 → 16,6
const RENDU_TETE = 'tete';
const RENDU_CORPS = 'corps';
const RENDU_PIED = 'pied';
const TYPE_AUTRE = 'AUTRE';
const TYPE_TOTAL = 'TOTAL';
const SEPARATEUR_TYPE_VALEUR = '##';
const SEPARATEUR_VALEURS = ';;';
const SEPARATEUR_DONNEES = '||';
const VALEUR_NULL = 'NC';
private $sortie = array();
private $parametres = array();
89,175 → 83,4
$this->sortie = array_merge($this->sortie, $sortie);
}
protected function construireTxtTruckSansMajuscule($chaine_a_analyser) {
return $this->construireTxtTruck($chaine_a_analyser, false);
}
protected function construireTxtTruck($chaine_a_analyser, $majuscule = true) {
$termes = array();
if ((!is_null($chaine_a_analyser)) && (trim($chaine_a_analyser) != '')) {
$valeurs = explode(self::SEPARATEUR_VALEURS, $chaine_a_analyser);
$nbre_valeurs = count($valeurs);
if ($nbre_valeurs > 0) {
for ($i = 0; $i < $nbre_valeurs; $i++) {
$valeur = trim($valeurs[$i]);
if ($valeur != '') {
$valeur_formatee = $this->formaterValeurTruck($valeur);
$termes[] = $valeur_formatee;
}
}
}
}
$chaine_a_retourner = $this->formaterTableauDeTxt($termes, $majuscule);
return $chaine_a_retourner;
}
private function formaterValeurTruck($valeur) {
$chaine_a_retourner = '';
if (preg_match('/^[^#]+##[^$]+$/', $valeur)) {
$cle_valeur = explode(self::SEPARATEUR_TYPE_VALEUR, $valeur);
$chaine_a_retourner = (($cle_valeur[1] == '' || $cle_valeur[1] == 'null') ? self::VALEUR_NULL : $cle_valeur[1]);
$chaine_a_retourner .= ' '.$this->formaterParenthese($cle_valeur[0]);
} else if ($valeur != '') {
$chaine_a_retourner = $valeur;
} else {
trigger_error("Valeur truck posant problème :$valeur", E_USER_NOTICE);
}
return $chaine_a_retourner;
}
protected function formaterParenthese($chaine_a_afficher) {
if ($chaine_a_afficher != '') {
$chaine_a_afficher = '('.$chaine_a_afficher.')';
}
return $chaine_a_afficher;
}
protected function formaterSautDeLigne($chaine_a_formater) {
$txt_a_retourner = preg_replace('/\n/', '<br />', $chaine_a_formater);
return $txt_a_retourner;
}
protected function formaterTableauDeTxt($tableau_de_txt, $majuscule = true) {
$chaine_a_afficher = '';
$taille_du_tableau = count($tableau_de_txt);
if ($taille_du_tableau > 0) {
$index_avt_dernier = $taille_du_tableau - 1;
for ($i = 0; $i < $taille_du_tableau; $i++) {
$mot = $tableau_de_txt[$i];
if ($i != $index_avt_dernier) {
$chaine_a_afficher .= $mot.', ';
} else {
$chaine_a_afficher .= $this->nettoyerPointFinal($mot).'.';
}
}
}
if ($majuscule) {
$chaine_a_afficher = ucfirst($chaine_a_afficher);
}
return $chaine_a_afficher;
}
protected function formaterAutre($chaine_a_afficher) {
if ($chaine_a_afficher != '') {
$chaine_a_afficher = ' [Autre : '.$chaine_a_afficher.']';
}
return $chaine_a_afficher;
}
protected function formaterOuiNon($chaine_a_formater) {
$txt_a_retourner = '';
if ($chaine_a_formater == '0') {
$txt_a_retourner = 'non';
} else if ($chaine_a_formater == '1') {
$txt_a_retourner = 'oui';
}
return $txt_a_retourner;
}
protected function nettoyerPointFinal($mot) {
$mot = preg_replace('/[.]$/', '', $mot);
return $mot;
}
public function construireTxtListeOntologie($chaineAAnalyser, $valeurEstOntologie = true, $typeEstOntologie = true, $donneeEstOntologie = false) {
$termes = array();
$autres = array();
$chaineAAnalyser = trim($chaineAAnalyser);
if ($chaineAAnalyser != '') {
$valeurs = explode(self::SEPARATEUR_VALEURS, $chaineAAnalyser);
$nbreValeurs = count($valeurs);
if ($nbreValeurs > 0) {
for ($i = 0; $i < $nbreValeurs; $i++) {
$valeur = $valeurs[$i];
// VALEUR SANS TYPE
// La valeur sans type est une entrée de l'ontologie
if ($valeurEstOntologie && preg_match('/^[0-9]+$/', $valeur)) {
if ($valeur == '0') {
$valeur = '';
} else {
$valeurOntologie = Ontologie::getValeur($valeur);
if ($valeurOntologie != '') {
$valeur = $valeurOntologie['nom'];
}
}
}
// VALEUR AVEC TYPE
// Type : AUTRE
$valeurTypeAutre = self::TYPE_AUTRE.self::SEPARATEUR_TYPE_VALEUR;
if (preg_match('/^'.$valeurTypeAutre.'.+$/', $valeur)) {
$txtAutre = preg_replace('/^'.$valeurTypeAutre.'/', '', $valeur);
if ($txtAutre != '') {
$autres[] = $txtAutre;
}
$valeur = '';
}
// Type correspondant à une entrée de l'ontologie
if ($typeEstOntologie) {
$valeurTypeOntologie = '[0-9]+'.self::SEPARATEUR_TYPE_VALEUR;
if (preg_match('/^'.$valeurTypeOntologie.'.+$/', $valeur)) {
$type = substr($valeur, 0, strripos($valeur, self::SEPARATEUR_TYPE_VALEUR));
$valeurOntologie = Ontologie::getValeur($type);
if ($valeurOntologie != '') {
$valeurOntologieNom = $valeurOntologie['nom'];
$valeur = preg_replace('/^'.$type.'/', $valeurOntologieNom.': ', $valeur);
}
}
}
// Donnée correspondant à une entrée de l'ontologie
if ($donneeEstOntologie) {
$donneeOntologie = self::SEPARATEUR_TYPE_VALEUR.'([0-9]+)';
if (preg_match('/^.+'.$donneeOntologie.'$/', $valeur, $match)) {
$donnee = $match[1];
$donnee = str_replace(self::SEPARATEUR_TYPE_VALEUR, '', $donnee);
$valeurOntologie = Ontologie::getValeur($donnee);
if ($valeurOntologie != '') {
$valeurOntologieNom = $valeurOntologie['nom'];
$valeur = preg_replace('/'.$donnee.'$/', $valeurOntologieNom, $valeur);
}
}
}
// Nettoyage final
$valeur = preg_replace('/'.self::SEPARATEUR_TYPE_VALEUR.'/', '', $valeur);
if ($valeur != '') {
$termes[] = $valeur;
}
}
}
}
$chaineTermes = $this->formaterTableauDeTxt($termes);
$chaineAutres = $this->formaterTableauDeTxt($autres);
$chaineARetourner = $chaineTermes.$this->formaterAutre($chaineAutres);
return $chaineARetourner;
}
}