/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; |
} |
} |
/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/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/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> ©<a href="http://www.tela-botanica.org/" accesskey="1">Tela Botanica</a> / 2000-2010 - Le réseau des Botanistes Francophones</p> |
<p> ©<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 : <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 : <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 : <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 : <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> ©<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> |