/trunk/composants/fragmenteur/squelettes/defaut.tpl.html |
---|
1,6 → 1,8 |
<!-- FRAGMENTEUR : début --> |
<div id="fragmenteur" style="clear:left;"> |
<h2>Recherche et navigation dans les résultats :</h2> |
<h2>Navigation dans les résultats :</h2> |
<?php if (isset($alphabet)) : ?> |
<p style="margin:0;" class="aide">Cliquer sur une lettre pour faire apparaitre la liste des taxons correspondante :</p> |
<p> |
<strong> |
13,7 → 15,8 |
<?php endforeach; ?> |
</strong> |
</p> |
<?php endif; ?> |
<form id="fragmenteur_quantite" action="<?=$url;?>" method="get"> |
<p>Affichage des données <?=$frag_donnee_debut;?> à <?=$frag_donnee_fin;?> sur <?=$frag_donnee_total;?> résultats. |
<?php if ($pager_links['pages']) : ?> |
23,9 → 26,10 |
<span class="frag_pages"><?=$pager_links['pages'];?> </span> |
<span class="frag_suivant"><?=$pager_links['next'];?> </span> |
<span class="frag_dernier"><?=$pager_links['last'];?> </span> |
. |
<?php endif; ?> |
. Nombre de résultats par page : |
<select name="frag_nbre" onchange="javascript:this.form.submit();"> |
Nombre de résultats par page : |
<select id="frag_nbre" name="frag_nbre" onchange="javascript:this.form.submit();"> |
<option value="*" <?= ($par_page_selected == '*') ? 'selected="selected"': '';?>>tous</option> |
<?php foreach ($par_page as $nbre) : ?> |
<option value="<?=$nbre;?>" <?=$nbre == $par_page_selected? 'selected="selected"': '';?>><?=$nbre;?></option> |
32,7 → 36,7 |
<?php endforeach; ?> |
</select> |
<?php foreach ($form_get_url_chp_hidden as $cle => $val) : ?> |
<input type="hidden" id="<?=$cle;?>" name="<?=$cle;?>" value="<?=$val;?>" /> |
<input type="hidden" name="<?=$cle;?>" value="<?=$val;?>" /> |
<?php endforeach; ?> |
</p> |
</form> |
/trunk/composants/fragmenteur/Fragmenteur.php |
---|
8,6 → 8,8 |
const SQUELETTE = 'defaut'; |
const DONNEES_PAR_PAGE_CHOIX = '10,20,50,100'; |
const DONNEES_PAR_PAGE_DEFAUT = 10; |
const ALPHABET_AFFICHAGE_DEFAUT = false; |
const ALPHABET_LETTRE_DEFAUT = 'A'; |
private $pager_mode; |
private $pager; |
20,6 → 22,8 |
private $url_var; |
private $squelette; |
private $chemin_squelette; |
private $recherche_alphabetique; |
private $squelette_donnees = array(); |
public function __construct($options) { |
// Gestion de l'url |
35,13 → 39,16 |
trigger_error($msg, E_USER_ERROR); |
} |
// Gestion de la lettre |
$lettre = (isset($options['lettre']) ? $options['lettre'] : 'A'); |
$this->setLettre($lettre); |
if (isset($_GET['lettre'])) { |
$this->setLettre(urldecode($_GET['lettre'])); |
// Gestion de la liste alphabétique |
$this->alphabet_affichage = (isset($options['alphabet_affichage']) ? $options['alphabet_affichage'] : self::ALPHABET_AFFICHAGE_DEFAUT); |
if ($this->alphabet_affichage == true) { |
$lettre = (isset($options['lettre']) ? $options['lettre'] : self::ALPHABET_LETTRE_DEFAUT); |
$this->setLettre($lettre); |
if (isset($_GET['lettre'])) { |
$this->setLettre(urldecode($_GET['lettre'])); |
} |
} |
// Gestion des infos pour le pager |
$this->squelette = (isset($options['squelette']) ? $options['squelette'] : self::SQUELETTE).'.tpl.html'; |
$this->chemin_squelette = dirname(__FILE__).DS.'squelettes'.DS.$this->squelette; |
99,44 → 106,62 |
public function setDonneesTotal($dt) { |
$this->donnees_total = $dt; |
} |
private function getSqueletteDonnees() { |
return $this->squelette_donnees; |
} |
private function setSqueletteDonnees($cle, $valeur) { |
$this->squelette_donnees[$cle] = $valeur; |
} |
public function executer() { |
// Gestion de la liste alphabétique |
$this->url->setVariableRequete('lettre', '*'); |
$donnees['alphabet']['*'] = array( 'url' => $this->url->getURL(), |
'lettre' => 'tous'); |
$this->url->unsetVariableRequete('lettre'); |
for ($i = 65; $i <= 90; $i++){ |
$this->url->setVariableRequete('lettre', chr($i)); |
$donnees['alphabet'][] = array( 'url' => $this->url->getURL(), |
'lettre' => chr($i)); |
if ($this->alphabet_affichage == true) { |
$alphabet = array(); |
$this->url->setVariableRequete('lettre', '*'); |
$alphabet['*'] = array( 'url' => $this->url->getURL(), |
'lettre' => 'tous'); |
$this->url->unsetVariableRequete('lettre'); |
} |
// Gestion de la lettre |
$donnees['lettre_selected'] = $this->getLettre(); |
for ($i = 65; $i <= 90; $i++){ |
$this->url->setVariableRequete('lettre', chr($i)); |
$alphabet[chr($i)] = array('url' => $this->url->getURL(), |
'lettre' => chr($i)); |
$this->url->unsetVariableRequete('lettre'); |
} |
$this->setSqueletteDonnees('alphabet', $alphabet); |
// Gestion de la lettre |
$this->setSqueletteDonnees('lettre_selected', $this->getLettre()); |
// Gestion de l'url |
$this->url->setVariableRequete('lettre', $this->getLettre()); |
} |
// Gestion des urls |
$this->url->setVariableRequete('lettre', $this->getLettre()); |
$this->url->setVariableRequete('page', $this->pager->getCurrentPageID()); |
$donnees['url'] = $this->url->getURL(); |
$this->setSqueletteDonnees('url', $this->url->getURL()); |
// Gestion du fragmenteur |
$donnees['frag_donnee_total'] = $this->donnees_total; |
$this->setSqueletteDonnees('frag_donnee_total', $this->donnees_total); |
$page_id_x_saut = ($this->pager->getCurrentPageID() * $this->donnees_par_page); |
$donnees['frag_donnee_debut'] = ($page_id_x_saut - $this->donnees_par_page) > 0 ? ($page_id_x_saut - $this->donnees_par_page) : 0; |
$donnees['frag_donnee_fin'] = $page_id_x_saut >= $this->donnees_total ? $this->donnees_total : $page_id_x_saut; |
$donnees['par_page'] = explode(',', self::DONNEES_PAR_PAGE_CHOIX); |
$donnees['par_page_selected'] = $_SESSION['fragmenteur']['par_page']; |
$donnees['pager_links'] = $this->pager->getLinks(); |
$this->setSqueletteDonnees('frag_donnee_debut', (($page_id_x_saut - $this->donnees_par_page) > 0 ? ($page_id_x_saut - $this->donnees_par_page) : 0)); |
$this->setSqueletteDonnees('frag_donnee_fin', ($page_id_x_saut >= $this->donnees_total ? $this->donnees_total : $page_id_x_saut)); |
$this->setSqueletteDonnees('par_page', explode(',', self::DONNEES_PAR_PAGE_CHOIX)); |
$this->setSqueletteDonnees('par_page_selected', $_SESSION['fragmenteur']['donnees_par_page']); |
$this->setSqueletteDonnees('pager_links', $this->pager->getLinks()); |
// Gestion des paramêtres pour le formulaire du Fragmenteur |
$tab_parties = $this->url->getVariablesRequete(); |
$form_get_url_chp_hidden = array(); |
foreach ($tab_parties as $cle => $valeur) { |
$donnees['form_get_url_chp_hidden'][$cle] = $valeur; |
$form_get_url_chp_hidden[$cle] = $valeur; |
} |
$this->setSqueletteDonnees('form_get_url_chp_hidden', $form_get_url_chp_hidden); |
$sortie = SquelettePhp::analyser($this->chemin_squelette, $donnees); |
// Création du rendu à partir du squelette et de ses données |
$sortie = SquelettePhp::analyser($this->chemin_squelette, $this->getSqueletteDonnees()); |
return $sortie; |
} |
/trunk/bibliotheque/utilitaires/SquelettePhp.php |
---|
9,7 → 9,7 |
* @param $fichier string le nom du fichier squelette. |
* @param $tableau array le tableau de données à fournir au squelette. |
*/ |
public static function analyser(String $fichier, Array $donnees) { |
public static function analyser($fichier, Array $donnees) { |
// Extrait les variables et les ajoutes à l'espace de noms local (c'est à dire cette méthode) |
extract($donnees); |
// Démarre le buffer |
/trunk/squelettes/pied.tpl.html |
---|
New file |
0,0 → 1,2 |
<p>Pour plus d'informations ou nous faire part d'une erreur, veuillez nous contacter à l'adresse |
<a href="mailto:coel@tela-botanica.org">coel@tela-botanica.org</a>.</p> |
/trunk/squelettes/moteur.tpl.html |
---|
1,10 → 1,10 |
<h2>Rechercher une collection</h2> |
<form id="col_form" name="col_form" action="<?=$url_form;?>" method="get"> |
<input id="module" name="module" type="hidden" value="<?=$url_module;?>" /> |
<input id="action" name="action" type="hidden" value="<?=$url_action;?>" /> |
<input name="module" type="hidden" value="<?=$url_module;?>" /> |
<input name="action" type="hidden" value="<?=$url_action;?>" /> |
<fieldset> |
<legend>Rechercher</legend> |
<input id="recherche" name="recherche" type="text" /> |
<input id="col_form_submit" type="submit" value="OK" /> |
<input name="recherche" type="text" value="<?=$recherche;?>"/> |
<input type="submit" value="OK" /> |
</fieldset> |
</form> |
/trunk/controleurs/Recherche.php |
---|
12,7 → 12,10 |
* @version SVN: $$Id: AdminAdministrateur.php 128 2009-09-02 12:20:55Z aurelien $$ |
*/ |
class Recherche extends Controleur { |
const RENDU_TETE = 'tete'; |
const RENDU_CORPS = 'corps'; |
const RENDU_PIED = 'pied'; |
private $sortie = array(); |
private $parametres = array(); |
private $url = null; |
22,20 → 25,45 |
$this->url = $this->parametres['url']; |
parent::__construct(); |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// Méthodes à refactoriser dans une classe mère |
/** |
* Fonction d'affichage par défaut, elle appelle la liste des administrateurs |
*/ |
public function executerActionParDefaut() { |
return $this->chargerMoteurRecherche(); |
return $this->rechercher(); |
} |
/** |
* Fonction d'affichage par défaut, elle appelle la liste des administrateurs |
*/ |
protected function setSortie($position, $contenu, $fusionner = false) { |
if ($position != self::RENDU_TETE && |
$position != self::RENDU_CORPS && |
$position != self::RENDU_PIED) { |
trigger_error("La position '$position' n'existe pas", E_USER_WARNING); |
} else { |
if ($fusionner) { |
$this->sortie[$position] .= $contenu; |
} else { |
$this->sortie[$position] = $contenu; |
} |
} |
} |
public function getSortie() { |
return $this->sortie; |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// Méthodes |
/** |
* Charge le moteur de recherche et l'envoie à la vue. |
* @return string la vue correspondante |
*/ |
public function chargerMoteurRecherche() { |
$donnees = array(); |
// Gestion des données de la requête |
$donnees['recherche'] = (isset($_GET['recherche']) ? $_GET['recherche'] : ''); |
// Gestion de l'url |
$this->url->setVariableRequete('module', 'Recherche'); |
$this->url->setVariableRequete('action', 'rechercher'); |
43,12 → 71,8 |
$donnees['url_module'] = 'Recherche'; |
$donnees['url_action'] = 'rechercher'; |
// Gestion du squelette |
$this->chargerVue('moteur', $donnees); |
// Attribution des morceaux de HTML à la sortie |
$sortie['corps'] = $this->moteur; |
return $sortie; |
// Gestion du squelette et de la sortie |
$this->setSortie(self::RENDU_TETE, $this->getVue('moteur', $donnees)); |
} |
/** |
95,11 → 119,17 |
} |
// Gestion des squelettes |
$this->chargerVue('resultat', $donnees); |
$sortie_moteur = $this->chargerMoteurRecherche(); |
// Attribution des morceaux de HTML à la sortie |
$sortie['corps'] = $sortie_moteur['corps'].$this->resultat; |
return $sortie; |
$this->chargerMoteurRecherche(); |
$resultat = $this->getVue('resultat', $donnees); |
$this->setSortie(self::RENDU_CORPS, $resultat); |
$this->chargerPiedDePage(); |
} |
/** |
* Recherche des collections. |
* @return string la vue correspondante |
*/ |
public function chargerPiedDePage() { |
$this->setSortie(self::RENDU_PIED, $this->getVue('pied')); |
} |
} |
/trunk/controleurs/Collection.php |
---|
14,7 → 14,7 |
* @version SVN:<svn_id> |
*/ |
class Collection { |
class Collection extends Controleur { |
/** |
* Instance de la classe pointant sur elle même (pour le pattern singleton) |
29,7 → 29,7 |
/** |
* Constructeur vide |
*/ |
private function __construct() { |
public function __construct() { |
$meta = array('titre' => '', 'description' => '', 'tags' => ''); |
$sortie = array('metadonnees' => $meta, 'corps' => '', 'tete' => '', 'pied' => '', 'navigation' => ''); |
$url = new Url(Config::get('url_base')); |
37,6 → 37,7 |
'action' => 'executerActionParDefaut', |
'sortie' => $sortie, |
'url' => $url); |
parent::__construct(); |
} |
/** |
60,7 → 61,8 |
$ClasseModule = self::$parametres['module']; |
$action = self::$parametres['action']; |
$module = new $ClasseModule(); |
self::fusionnerSortie($module->$action()); |
$module->$action(); |
self::fusionnerSortie($module->getSortie()); |
} |
/** |