Subversion Repositories eFlore/Applications.coel-consultation

Compare Revisions

Ignore whitespace Rev 53 → Rev 54

/trunk/configurations/config.default.ini
10,8 → 10,8
info.abr = COLL
; Version du Framework nécessaire au fonctionnement de cette application
info.framework.version = 0.2
;Encodage de l'application. (Pour l'utf-8 ne pas mettre le tiret!)
appli_encodage = "UTF8"
;Encodage de l'application
appli_encodage = "UTF-8"
; Nom de domaine pour l'URL de base de l'application : 162.38.234.6
domaine = "localhost"
; URL de base de l'application, si elle est laissée vide, l'application fonctionnera en Stand-alone
/trunk/configurations/config_papyrus.default.ini
1,4 → 1,8
; +------------------------------------------------------------------------------------------------------+
; Paramètrage de la session
; Devons nous démarrer une session : oui (true) ou non (false)
session_demarrage = "php:false"
session_demarrage = "php:false"
; Encodage de sortie de l'application dans le contexte de Papyrus
sortie_encodage = "ISO-8859-15"
; URL de base de l'application, si elle est laissée vide, l'application fonctionnera en Stand-alone
url_base = "php:$GLOBALS['_GEN_commun']['url']->getUrl()"
/trunk/configurations/.htaccess
New file
0,0 → 1,2
# Ce fichier est là pour éviter l'accès au fichier .ini depuis un navigateur.
deny from all
/trunk/index.php
74,18 → 74,18
</div>
<div>
<?php echo Collection::getChrono(); ?>
<?php echo GestionnaireException::getExceptions(); ?>
<?php echo Collection::getExceptions(); ?>
</div>
<div id="pied">
<p> &copy;<a href="http://www.tela-botanica.org/" accesskey="1">Tela Botanica</a> / 2000-2010 - Le réseau des Botanistes Francophones</p>
<p> &copy;<a href="http://www.tela-botanica.org/" accesskey="1">Tela Botanica</a> / 2000-<?=date('Y')?> - Le réseau des Botanistes Francophones</p>
</div>
</div>
<div id="nav_gauche">
<ul>
<li><a href="index.php?module=Recherche">Recherche</a></li>
<li><a href="index.php?module=Carte">Carte</a></li>
<li><a href="index.php?module=Syndication">Syndication</a></li>
<li><a href="<?=basename(__FILE__)?>?module=Recherche">Recherche</a></li>
<li><a href="<?=basename(__FILE__)?>?module=Carte">Carte</a></li>
<li><a href="<?=basename(__FILE__)?>?module=Syndication">Syndication</a></li>
</ul>
</div>
/trunk/squelettes/moteur.tpl.html
31,13 → 31,13
<p>Par défaut, la recherche est insensible à la casse (majuscule / minuscule) et s'effectue
en intercalant automatiquement le joker % avant et après la chaine recherchée et entre chaque mot de celle-ci.</p>
<p>Le moteur de recherche permet d'utiliser des opérateurs dans le texte recherché pour préciser la requête.</p>
<p>Exemples&nbsp;: <a href="<?=sprintf($url_exemple, urlencode('mpu'))?>">mpu</a>,
<a href="<?=sprintf($url_exemple, urlencode('"herbier de Coste"'))?>">"herbier de Coste"</a>,
<a href="<?=sprintf($url_exemple, urlencode('bot:he'))?>">bot:he</a>,
<a href="<?=sprintf($url_exemple, urlencode('Coste bot:he'))?>">Coste bot:he</a>,
<a href="<?=sprintf($url_exemple, urlencode('herbier zg:France'))?>">herbier zg:France</a>,
<a href="<?=sprintf($url_exemple, urlencode('p:coste pr:co'))?>">p:coste pr:co</a>,
<a href="<?=sprintf($url_exemple, urlencode('Ecole sci:1'))?>">Ecole sci:1</a>.</p>
<p>Exemples&nbsp;: <a href="<?=Recherche::getUrlExemple('mpu')?>">mpu</a>,
<a href="<?=Recherche::getUrlExemple('"herbier de Coste"')?>">"herbier de Coste"</a>,
<a href="<?=Recherche::getUrlExemple('bot:he')?>">bot:he</a>,
<a href="<?=Recherche::getUrlExemple('Coste bot:he')?>">Coste bot:he</a>,
<a href="<?=Recherche::getUrlExemple('herbier zg:France')?>">herbier zg:France</a>,
<a href="<?=Recherche::getUrlExemple('p:coste pr:co')?>">p:coste pr:co</a>,
<a href="<?=Recherche::getUrlExemple('Ecole sci:1')?>">Ecole sci:1</a>.</p>
<table>
<thead>
<tr>
55,7 → 55,7
<td>Recherches scientifiques</td>
<td>Limite les résultats aux institutions autorisant la consultation des collections
<em>sans (=0)</em> ou <em>avec (=1)</em> des objectifs de recherches scientifiques.</td>
<td><a href="<?=sprintf($url_exemple, urlencode('sci:0'))?>">sci:0</a></td>
<td><a href="<?=Recherche::getUrlExemple('sci:0')?>">sci:0</a></td>
</tr>
<tr>
<td>bot:</td>
63,7 → 63,7
AL (Collection en alcool), XY (Xylothèque), PM (Collection de préparations microscopiques).</td>
<td>Type de collection botanique</td>
<td>Limite les résultats aux collections botaniques du type indiqué.</td>
<td><a href="<?=sprintf($url_exemple, urlencode('bot:he'))?>">bot:he</a></td>
<td><a href="<?=Recherche::getUrlExemple('bot:he')?>">bot:he</a></td>
</tr>
<tr>
<td>zg:</td>
70,7 → 70,7
<td>Texte libre</td>
<td>Origine géographique du contenu de la collection</td>
<td>Limite les résultats aux collections dont le contenu correspond à la zone géographique indiquée.</td>
<td><a href="<?=sprintf($url_exemple, urlencode('zg:lozère'))?>">zg:lozère</a></td>
<td><a href="<?=Recherche::getUrlExemple('zg:lozère')?>">zg:lozère</a></td>
</tr>
<tr>
<td>p:</td>
78,7 → 78,7
<td>Nom ou partie du nom d'une personne.</td>
<td>Limite les résultats aux institutions et collections liées a une personne dont le nom ou une
partie du nom correspond à la valeur indiquée.</td>
<td><a href="<?=sprintf($url_exemple, urlencode('p:coste'))?>">p:coste</a></td>
<td><a href="<?=Recherche::getUrlExemple('p:coste')?>">p:coste</a></td>
</tr>
<tr>
<td>pr:</td>
87,15 → 87,15
<td>Rôle d'une personne.</td>
<td>Limite les résultats aux institutions et collections liées a une personne dont le rôle
correspond à la valeur indiquée.</td>
<td><a href="<?=sprintf($url_exemple, urlencode('pr:AU'))?>">pr:AU</a></td>
<td><a href="<?=Recherche::getUrlExemple('pr:AU')?>">pr:AU</a></td>
</tr>
</tbody>
</table>
<p>Pour les opérateurs dont la valeur possible est un <em>texte libre</em>, il est possible d'utiliser des jokers.
Ces "jokers" permettent de modifier la recherche sur une chaine de caractères.</p>
<p>Exemples&nbsp;: <a href="<?=sprintf($url_exemple, urlencode('"herbier de Coste"'))?>">"herbier de Coste"</a>,
<a href="<?=sprintf($url_exemple, urlencode('"herbier % Montpellier"'))?>">"herbier % Montpellier"</a>,
<a href="<?=sprintf($url_exemple, urlencode('p:"Jo_l"'))?>">p:"Jo_l"</a>.
<p>Exemples&nbsp;: <a href="<?=Recherche::getUrlExemple('"herbier de Coste"')?>">"herbier de Coste"</a>,
<a href="<?=Recherche::getUrlExemple('"herbier % Montpellier"')?>">"herbier % Montpellier"</a>,
<a href="<?=Recherche::getUrlExemple('p:"Jo_l"')?>">p:"Jo_l"</a>.
</p>
<table>
<thead>
109,19 → 109,19
<tr>
<td>""</td>
<td>Permet de rechercher sur une expression exacte.</td>
<td><a href="<?=sprintf($url_exemple, urlencode('"Archives de l\'herbier Granger"'))?>">
<td><a href="<?=Recherche::getUrlExemple('"Archives de l\'herbier Granger"')?>">
"Archives de l'herbier Granger"</a></td>
</tr>
<tr>
<td>%</td>
<td>Remplace n'importe quel nombre de caractères, y compris aucun.</td>
<td><a href="<?=sprintf($url_exemple, urlencode('"herbier %Abbé% Carondelet"'))?>">
<td><a href="<?=Recherche::getUrlExemple('"herbier %Abbé% Carondelet"')?>">
"herbier %Abbé% Carondelet"</a></td>
</tr>
<tr>
<td>_</td>
<td>Remplace exactement un caractère</td>
<td><a href="<?=sprintf($url_exemple, urlencode('p:"Jo_l"'))?>">p:"Jo_l"</a></td>
<td><a href="<?=Recherche::getUrlExemple('p:"Jo_l"')?>">p:"Jo_l"</a></td>
</tr>
</tbody>
</table>
/trunk/index_iso-8859-15.php
New file
0,0 → 1,92
<?php
// declare(encoding='ISO-8859-15');
/** Inclusion du fichier principal de l'application*/
require_once 'collection.php';
?>
<!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 xml:lang="fr" lang="fr">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-15" />
<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" />
 
<title><?php echo Collection::getMetaTitre(); ?></title>
<meta name="description" content="<?php echo Collection::getMetaDescription();?>" />
<meta name="keywords" content="<?php echo Collection::getMetaTags();?>" />
<meta name="revisit-after" content="15 days" />
<meta name="robots" content="index,follow" />
<meta name="author" content="Tela Botanica" />
 
<link rel="shortcut icon" type="image/x-icon" href="http://www.tela-botanica.org/favicon.ico" />
<link rel="icon" type="image/png" href="http://www.tela-botanica.org/sites/commun/generique/images/favicones/tela_botanica.png" />
 
<link rel="stylesheet" type="text/css" media="screen" href="http://www.tela-botanica.org/sites/commun/fr/styles/commun_simple.css" />
 
<style type="text/css" media="screen">
<!--
@import "http://www.tela-botanica.org/sites/commun/fr/styles/commun_complexe.css";
@import "http://www.tela-botanica.org/sites/parlons_bota/fr/styles/parlons_bota.css";
-->
</style>
 
<link rel="stylesheet" type="text/css" media="print" href="http://www.tela-botanica.org/sites/commun/fr/styles/impression.css" />
 
<link rel="stylesheet" type="text/css" media="screen" href="squelettes/css/collection/collection.css" />
<link rel="stylesheet" type="text/css" media="screen" href="squelettes/css/humanity/jquery-ui-1.8.custom.css" />
<script type="text/javascript" src="squelettes/js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="squelettes/js/jquery-ui-1.8.custom.min.js"></script>
</head>
<body xml:lang="fr" lang="fr">
<div id="reducteur">
 
<div id="logo_tela">
<a href="/" title="Retour à l'accueil du site">
<img src="http://www.tela-botanica.org/sites/reseau/generique/images/graphisme/logo_jaune.gif" alt="le logo de Tela Botanica"/>
</a>
</div>
<div id="bandeau">
<div id="bandeau_contenu">
<div id="titre_monde">
<h1>Collections</h1>
</div>
</div>
</div>
<div id="droite">
<div id="onglets">
<?php echo Collection::getContenuNavigation(); ?>
</div>
<div id="contenu">
<div id="entete">
<?php echo Collection::getContenuTete(); ?>
</div>
<div id="texte">
<?php echo Collection::getContenuCorps(); ?>
</div>
<div id="pied_texte">
<?php echo Collection::getContenuPied(); ?>
</div>
</div>
<div>
<?php echo Collection::getExceptions(); ?>
</div>
<div id="pied">
<p> &copy;<a href="http://www.tela-botanica.org/" accesskey="1">Tela Botanica</a> / 2000-<?=date('Y')?> - Le réseau des Botanistes Francophones</p>
</div>
</div>
<div id="nav_gauche">
<ul>
<li><a href="<?=basename(__FILE__)?>?module=Recherche">Recherche</a></li>
<li><a href="<?=basename(__FILE__)?>?module=Carte">Carte</a></li>
<li><a href="<?=basename(__FILE__)?>?module=Syndication">Syndication</a></li>
</ul>
</div>
</div>
</body>
</html>
/trunk/controleurs/Recherche.php
13,6 → 13,9
*/
class Recherche extends ColControleur {
private $chaine_recherche = null;
private static $url_exemple = null;
//+----------------------------------------------------------------------------------------------------------------+
// Méthodes
/**
29,10 → 32,8
$donnees = array();
// Gestion des données de la requête
$chaine = $this->obtenirChaineRecherche();
$this->memoriserChaineRecherche($chaine);
$donnees['recherche'] = htmlspecialchars(stripslashes($chaine));
$donnees['recherche'] = htmlspecialchars($this->obtenirChaineRecherche());
 
// Gestion des urls
$this->url->setVariableRequete('module', 'Recherche');
$this->url->setVariableRequete('action', 'rechercher');
40,7 → 41,7
$donnees['url_module'] = 'Recherche';
$donnees['url_action'] = 'rechercher';
$this->url->setVariableRequete('recherche', '%s');
$donnees['url_exemple'] = $this->url->getUrl();
self::$url_exemple = $this->url->getUrl();
$this->url->unsetVariablesRequete(array('module', 'action', 'recherche'));
// Gestion du squelette et de la sortie
49,8 → 50,17
private function obtenirChaineRecherche() {
$chaine = '';
if (isset($_GET['recherche'])) {
if (!is_null($this->chaine_recherche)) {
$chaine = $this->chaine_recherche;
} else if (isset($_GET['recherche'])) {
// Pré-traitement de la chaine de recherche
$chaine = $_GET['recherche'];
// Suppression des slash ajouté automatiquement par PHP devant les guillemets
$chaine = stripslashes($chaine);
// Mémorisation de la chaine
$this->memoriserChaineRecherche($chaine);
// Stockage dans la classe pour éviter d'effectuer à nouveau le traitement ci-dessus
$this->chaine_recherche = $chaine;
} else if (isset($_SESSION['col']['recherche'])) {
$chaine = $_SESSION['col']['recherche'];
}
60,6 → 70,19
private function memoriserChaineRecherche($chaine) {
$_SESSION['col']['recherche'] = $chaine;
}
 
public static function getUrlExemple($chaine) {
$url = '';
if (!is_null(self::$url_exemple)) {
// L'utilisation d'urlencode nécessiate de pré-encodé la chaine dans le format de sortie si nécessaire
if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
$chaine = mb_convert_encoding($chaine, Config::get('sortie_encodage'), Config::get('appli_encodage'));
}
$chaine = urlencode($chaine);
$url = sprintf(self::$url_exemple, $chaine);
}
return $url;
}
/**
* Recherche des collections.
71,9 → 94,8
$parametres = array('mots' => '*');
// Récupération des paramêtres de l'url
$chaine_de_recherche = '';
if (isset($_GET['recherche'])) {
$chaine_de_recherche = $_GET['recherche'];
$chaine_de_recherche = $this->obtenirChaineRecherche();
if (!empty($chaine_de_recherche)) {
$this->url->setVariableRequete('recherche', $chaine_de_recherche);
}
$parametres = $this->parserChaineDeRecherche($chaine_de_recherche);
91,6 → 113,7
$fragmenteur = Composant::fabrique('fragmenteur', $options);
$donnees['fragmenteur'] = $fragmenteur->executer();
list($de, $a) = $fragmenteur->getDeplacementParPageId();
$this->url->unsetVariableRequete('recherche');
 
// Gestion de l'accès aux données
$rechercheDao->setLimitation(($de - 1), $fragmenteur->getDonneesParPage());
129,11 → 152,7
$this->chargerPiedDePage();
}
private function parserChaineDeRecherche($chaine) {
// Pré-traitement de la chaine de recherche
// Suppression des slash ajouté automatiquement par PHP
$chaine = stripslashes($chaine);
private function parserChaineDeRecherche($chaine) {
$mots = preg_split('/ /i', $chaine, -1, PREG_SPLIT_NO_EMPTY);
$parametres = array('mots' => '');
$cle_precedente = null;
/trunk/controleurs/Collection.php
170,4 → 170,14
return $sortie;
}
/**
* Retourne les messages d'exceptions et d'erreurs.
*/
public static function getExceptions() {
$sortie = GestionnaireException::getExceptions();
if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
$sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage'));
}
return $sortie;
}
}