Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php
/*vim: set expandtab tabstop=4 shiftwidth=4: */
// +------------------------------------------------------------------------------------------------------+
// | PHP version 4.1 |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
// +------------------------------------------------------------------------------------------------------+
// | This library is free software; you can redistribute it and/or |
// | modify it under the terms of the GNU Lesser General Public |
// | License as published by the Free Software Foundation; either |
// | version 2.1 of the License, or (at your option) any later version. |
// | |
// | This library is distributed in the hope that it will be useful, |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
// | Lesser General Public License for more details. |
// | |
// | You should have received a copy of the GNU Lesser General Public |
// | License along with this library; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: bbc_affichage.fonct.php,v 1.1 2005-11-23 10:22:25 jp_milcent Exp $
/**
* Fonctions de l'interface de consultation de Biblio Bota.
*
* Contient les fonctions fournissant du XHTML pour l'affichage de l'interface de consultation de BibioBota.
*
*@package BiblioBota-Consultation
*@subpackage Fonctions
//Auteur original :
*@author Jean-Charles GRANGER <tela@vecteur.org>
//Autres auteurs :
*@author Jean-Pascal MILCENT <jpm@clapas.org>
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.1 $ $Date: 2005-11-23 10:22:25 $
// +------------------------------------------------------------------------------------------------------+
*/
// +------------------------------------------------------------------------------------------------------+
// | ENTETE du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
/*Mettre ici les inclusions de fichiers*/
// +------------------------------------------------------------------------------------------------------+
// | LISTE de FONCTIONS |
// +------------------------------------------------------------------------------------------------------+
/*Mettre ici la liste de fonctions.*/
// string ColorizeFound($tomod,$tofind)
// Colorie dans une chaine de texte $tomod la chaine $tofind.
// $tofind peut contenir des espaces, chaque terme sera quand même colorié.
// Retourne la chaine de caractères $tomod convertie.
function ColorizeFound($tomod, $tofind)
{
$words = explode(' ', $tofind);
// Liste de mots générant des problèmes vis à vis de la chaine $edited
$forbid_lst[0] = 'la';
$forbid_lst[1] = 'texte';
$forbid_lst[2] = 'found';
$forbid_lst[3] = 'un';
$forbid_lst[4] = 'fou';
$forbid_lst[5] = 'las';
$forbid_lst[6] = 'class';
$forbid_lst[7] = 'text';
$forbid_lst[8] = 'ou';
$forbid_lst[9] = 'ext';
$forbid_lst[10] = 'te';
$forbid_lst[11] = 'ex';
$forbid_lst[12] = 'und';
$forbid_lst[13] = 'a';
$forbid_lst[14] = 'c';
$forbid_lst[15] = 'd';
$forbid_lst[16] = 'e';
$forbid_lst[17] = 'f';
$forbid_lst[18] = 'l';
$forbid_lst[19] = 'n';
$forbid_lst[20] = 'o';
$forbid_lst[21] = 'p';
$forbid_lst[22] = 's';
$forbid_lst[23] = 't';
$forbid_lst[24] = 'u';
$forbid_lst[25] = 'x';
for ($i = 0; $i < count($words); $i++) {
$words[$i] = ereg_replace('\[', '', $words[$i]);
$words[$i] = ereg_replace('\]', '', $words[$i]);
$edited = '<span class="bb_txt_trouve">'.$words[$i].'</span>';
if (($words[$i] != '') && ($tomod != '') && (! in_array($words[$i], $forbid_lst))){
$tomod = eregi_replace($words[$i], $edited, $tomod);
}
}
return $tomod;
}
// form_mk_submit($value) :
// créé un bouton de validation de formulaire
// Entrée : string $value (facultatif), string $class
// Sortie (par retour) : string
function form_mk_submit($value = 'Chercher', $class = 'texte_tb')
{
$retour = '';
$retour .= '<input type="submit" name="valider" value="'.$value.'" class="'.$class.'" />';
$retour .= '<input type="hidden" name="TabFinder[valid]" value="1" />';
return $retour;
}
// form_mk_reset($value) :
// créé un bouton d'effacement de formulaire
// Entrée : string $value (facultatif)
// Sortie (par retour) : string
function form_mk_reset($value = 'Effacer', $class = 'texte_tb')
{
return '<input type="reset" value="'.$value.'" name="valider" class="'.$class.'" />';
}
// form_mk_chaine($value,$class) :
// créé un champ texte "chaine"
// Entrée : $value (valeur de TabFinder['chaine']), $class (classe CSS) par défaut "insInputForm"
// Sortie (par retour) : string
function form_mk_chaine($value = '', $class = 'insInputForm')
{
$id = 'TabFinder[chaine]';
$retour = '<label for="'.$id.'">'.'Rechercher : '.'</label>';
$retour .= '<input type="text" id="'.$id.'" name="'.$id.'" class="'.$class.'" value="'.$value.'" />'."\n";
return $retour;
}
// form_mk_geo($value,$class) :
// créé un champ texte "geo"
// Entrée : $value (valeur de TabFinder['geo']), $class (classe CSS) par défaut "insInputForm"
// Sortie (par retour) : string
function form_mk_geo($value = '', $class = 'insInputForm')
{
$id = 'TabFinder[geo]';
$retour = '<label for="'.$id.'">'.'Zone géo. : '.'</label>';
$retour .= '<input type="text" id="'.$id.'" name="'.$id.'" class="'.$class.'" value="'.$value.'" />'."\n";
return $retour;
}
// form_mk_auteur($value,$class) :
// créé un champ texte "auteur"
// Entrée : $value (valeur de TabFinder['auteur']), $class (classe CSS) par défaut "insInputForm"
// Sortie (par retour) : string
function form_mk_auteur($value = '', $class = 'insInputForm')
{
$id = 'TabFinder[auteur]';
$retour = '<label for="'.$id.'">'.'Auteur : '.'</label>';
$retour .= '<input type="text" id="'.$id.'" name="'.$id.'" class="'.$class.'" value="'.$value.'" />';
return $retour;
}
// form_mk_step($actualstep,$class) :
// créé une liste déroulante TabFinder[step] pour fragmenter les pages en x résultats
// Entrée : $actualstep (valeur de TabFinder['step']), $class (classe CSS) par défaut "insInputForm"
// Sortie (par retour) : string
function form_mk_step($actualstep, $class = 'insInputForm')
{
$retour = '';
$id = 'TabFinder[step]';
$retour .= '<label for="'.$id.'">'.'Grouper les résultats : '.'</label>';
$retour .= '<select id="'.$id.'" name="'.$id.'" class="'.$class.'">'."\n";
$retour .= ' <option value="10"';
if ($actualstep == 10) {
$retour .= 'selected="selected"';
}
$retour .= '>par 10</option>'."\n";
$retour .= ' <option value="20"';
if (($actualstep == 20) || ($actualstep == '')) {
$retour .= 'selected="selected"';
}
$retour .= '>par 20</option>'."\n";
$retour .= ' <option value="50"';
if ($actualstep == 50) {
$retour .= 'selected="selected"';
}
$retour .= '>par 50</option>'."\n";
$retour .= '</select>'."\n";
return $retour;
}
// form_mk_typque($actualstep,$class) :
// créé une liste déroulante TabFinder[step] pour fragmenter les pages en x résultats
// Entrée : $actualtypque (valeur de TabFinder['typque']), $class (classe CSS) par défaut "insInputForm"
// Sortie (par retour) : string
function form_mk_typque($actualtypque, $class = 'insInputForm')
{
global $label_bbota;
$retour = '';
$retour .= '<select name="TabFinder[typque]" size="1" class="'.$class.'">'."\n";
$retour .= ' <option value="1"';
if (($actualtypque == '') || ($actualtypque == 1)) {
$retour .= ' selected="selected"';
}
$retour .= '>'.$label_bbota['bool_separe'].'</option>'."\n";
$retour .= ' <option value="0"';
if (($actualtypque == 0) && ($actualtypque != '')) $retour .= ' selected';
$retour .= '>'.$label_bbota['bool_exacte'].'</option>'."\n";
$retour .= '</select>'."\n";
return $retour;
}
// form_mk_since($value,$class) :
// créé un champ texte "since"
// Entrée : $value (valeur de TabFinder['since']), $class (classe CSS) par défaut "insInputForm"
// Sortie (par retour) : string
function form_mk_since($value = '', $class = 'insInputForm')
{
$id = 'TabFinder[since]';
$retour = '<label for="'.$id.'">'.'Réduire aux données mises en ligne depuis le : '.'</label>';
$retour .= '<input type="text" id="'.$id.'" name="'.$id.'" class="'.$class.'" value="'.$value.'" maxlength="10" />';
$retour .= ' (au format jj/mm/aaaa)'."\n";
return $retour;
}
// form_mk_plugin($value) :
// créé un element de formulaire caché en fonction du contenu de Plugin
// Entrée : string $value
// Sortie (par retour) : string ou void
function form_mk_plugin($value)
{
if ($value != '') {
return '<input type="hidden" name="TabFinder[plugin]" value="'.$value.'" />'."\n";
} else {
return '';
}
}
// form_mk_advance() :
// créé un element/lien formulaire appelant la page elle-même pour avoir un formulaire en mode "avancé"
// Entrée :
// Sortie (par retour) : string
function form_mk_advance()
{
global $TabFinder, $arg_0, $arg_1, $arg_2, $arg_3, $arg_4, $arg_5;
if (empty($TabFinder)) {
$TabFinder = '';
}
$stockagevar = '';
foreach($TabFinder as $tmp_stock_i => $value) {
if ($tmp_stock_i != 'args' && $tmp_stock_i != 'finder_mode') {
$stockagevar .= $tmp_stock_i.','.$value.'!';
}
}
$stockagevar = ereg_replace(' ', '{', $stockagevar);
if ($TabFinder['finder_mode'] == 'normal') {
$chaine_url_middle = 'advance';
$chaine_labelle = 'Plus';
} else if ($TabFinder['finder_mode'] == 'advance') {
$chaine_url_middle = 'normal';
$chaine_labelle = 'Moins';
}
$chaine_url_end = '&arg_0='.$arg_0.'&arg_1='.$arg_1.'&arg_2='.$arg_2.'&arg_3='.$arg_3.'&arg_4='.$arg_4.'&arg_5='.$arg_5;
$chaine_url_start = "\n".'<input type="button" class="texte_tb" value="'.$chaine_labelle.' d\'options" '.
'onclick="javascript:window.location.href=\''.$GLOBALS['_GEN_commun']['url']->getURL().
'&TransTab='.$stockagevar.'finder_mode,'.$chaine_url_middle.$chaine_url_end.'\';" />'."\n";
return $chaine_url_start;
}
// presa_mk_title($value,$colspan) :
// créé une ligne de titre dans un <tr>
// Entrée : string $value, int $colspan
// ($value : titre ; $colspan : nombre de colonnes fusionnées ; par défaut $colspan = 1)
// Sortie (par retour) : string
function presa_mk_title($value, $niveau = '2', $class = 'insTitle1')
{
return '<h'.$niveau.' class="'.$class.'">'.$value.'</h'.$niveau.'>'."\n";
}
// presa_mk_maxtitle($value,$colspan) :
// créé une ligne de titre dans un <tr>
// Entrée : string $value, int $colspan
// ($value : titre ; $colspan : nombre de colonnes fusionnées ; par défaut $colspan = 1)
// Sortie (par retour) : string
function presa_mk_maxtitle($value, $niveau = '1', $class = 'insMsg')
{
return '<h'.$niveau.' class="'.$class.'">'.$value.'</h'.$niveau.'>'."\n";
}
// presa_mk_blkline($colspan=1) :
// créé une ligne vide dans un <tr>
// Entrée : int $colspan
// ($colspan : nombre de colonnes fusionnées ; par défaut $colspan = 1)
// Sortie (par retour) : string
function presa_mk_blkline($colspan=1)
{
return '<tr><td class="texte_tb" colspan="'.$colspan.'"> </td></tr>'."\n";
}
// count_num_of_reductor($table,$id)
// retourne le nombre d'items de la table $tbl['item'] ayant un
// type de réducteur $id dans le champ $champ
function count_num_of_reductor($champ, $id)
{
global $tbl;
global $retour_biblio;
global $plugin_store;
if ($retour_biblio['limit_domain'] == 1) {
$from_ajout = ', '.$tbl['domaine_lk'];
$requete_ajout = ' AND B_I_IDITEM = B_DL_IDITEM AND B_DL_IDDOM = 1';
} else {
$from_ajout = '';
$requete_ajout = '';
}
if ((BB_ARGUMENT_REGROUPEMENT == 'media') && ($champ == 'B_I_TYPLOG')) {
$requete_ajout .= ' AND '.$GLOBALS['query_dom']['phy'];
}
$requete = 'SELECT COUNT(B_I_IDITEM) AS CPT '.
'FROM '.$tbl['item'].$plugin_store['count_add_table'].$from_ajout.' '.
'WHERE '.$champ.' = '.$id.' '.
$requete_ajout.' '.
$plugin_store['count_add_query'];
$resultat = $GLOBALS['db_bb']->query($requete);
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
$nbre_ligne = $resultat->numRows();
if ($nbre_ligne != 1) {
die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete, 'Erreur : '.$nbre_ligne.' résultat(s) au lieu d\'1.'));
$resultat->free();
return -1;
} else {
$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
$nombre = $ligne->CPT;
$resultat->free();
return $nombre;
}
}
/**Fonction CreateNavigBiblio() - construit l'interface de navigation de la consultation avancée.
*
* Créée des boutons pour accéder à certains services spécifiques de Biblio Bota
* (listes,modifications...).
* Cette fonction utilise les constantes :
* - BB_URL_COURANTE_CONSULTATION
* - BB_IMG_PRECEDENT
* - BB_CLASS_IMG_PRECEDENT
*
* @param string la destination du bouton (goback ou goto).
* @param string le sujet de destination du bouton (coll, fasc ou art).
* @param array un tableau contenant les arguments des liens des boutons.
* @param string le texte du bouton qui remplacera l'image.
* @param bool booléen indiquant si on doit afficher une image ou pas.
*
* @return array les infos des "voir aussi".
*/
function CreateNavigBiblio($destination, $sujet, $tableau, $texte = '', $image = 0)
{
if (!isset($tableau['pass'])) {
$tableau['pass'] = '';
}
if (!isset($tableau['locusfasc'])) {
$tableau['locusfasc'] = '';
}
$retour = '';
switch ($destination) {
// GoBack permet de créer des retours aux pages précédentes (fasc->coll, art->fasc)
case 'goback':
switch ($sujet) {
case 'coll':
// Permet de retourner des fascicules aux collections
$action = BB_URL_COURANTE_CONSULTATION.'&consultation=avancee&page=1&coll='.$tableau['pass'].$tableau['args'];
$retour = '<p class="bb_navigation">';
$retour .= '<a href="'.$action.'">';
if ($image == 1) {
$retour .= '<img class="'.BB_CLASS_IMG_PRECEDENT.'" src="'.BB_IMG_PRECEDENT.'" alt="'.$texte.'..."/>';
$retour .= ' '.$texte;
} else {
$retour .= ' '.$texte;
}
$retour .= '</a></p>'."\n";
break;
case 'fasc':
// Permet de retourner des articles aux fascicules
$action = BB_URL_COURANTE_CONSULTATION.'&consultation=avancee&page=1&fasc='.$tableau['back'].$tableau['args'].
'&locusfasc='.$tableau['locusfasc'];
$retour = '<p class="bb_navigation">';
$retour .= '<a href="'.$action.'">';
if ($image == 1) {
$retour .= '<img class="'.BB_CLASS_IMG_PRECEDENT.'" src="'.BB_IMG_PRECEDENT.'" alt="'.$texte.'..."/>';
$retour .= ' '.$texte;
} else {
$retour .= ' '.$texte;
}
$retour .= '</a></p>'."\n";
break;
}
break;
// GoTo permet de descendre d'un niveau (coll->fasc->art)
case 'goto':
switch ($sujet) {
case 'fasc':
// Permet de descendre des coll aux fasc
$action = BB_URL_COURANTE_CONSULTATION.'&consultation=avancee&page=1&fasc='.$tableau['pass'].$tableau['args'];
$retour = '<p class="bb_navigation">';
$retour .= '<a href="'.$action.'">';
if ($image == 1) {
$retour .= '<img class="'.BB_CLASS_IMG_PRECEDENT.'" src="'.BB_IMG_PRECEDENT.'" alt="'.$texte.'..."/>';
$retour .= ' '.$texte;
} else {
$retour .= ' '.$texte;
}
$retour .= '</a></p>'."\n";
break;
case 'art':
// Permet de descendre des fasc aux art
$action = BB_URL_COURANTE_CONSULTATION.'&consultation=avancee&page=1&art='.$tableau['pass'].$tableau['args'].
'&locusfasc='.$tableau['locusfasc'];
$retour = ' - ';
$retour .= '<a href="'.$action.'">';
if ($image == 1) {
$retour .= '<img class="'.BB_CLASS_IMG_PRECEDENT.'" src="'.BB_IMG_PRECEDENT.'" alt="'.$texte.'..."/>';
$retour .= ' '.$texte;
} else {
$retour .= ' '.$texte;
}
$retour .= '</a>'."\n";
break;
}
break;
}
return $retour;
}
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.6 2005/05/17 10:10:08 jpm
* Correction des bogues avant mise en ligne du site v4.
*
* Revision 1.5 2005/01/04 16:23:47 jpm
* Amélioration de la forme.
*
* Revision 1.4 2004/09/16 12:07:30 jpm
* Changement de noms de constantes.
*
* Revision 1.3 2004/09/14 10:18:17 jpm
* Mise en forme et amélioration du code.
* Passage au XHTML strict.
*
* Revision 1.2 2004/09/10 18:44:25 jpm
* Ajout de fonction et mise en forme.
*
* Revision 1.1 2004/09/10 09:45:37 jpm
* Ajout des fichiers BiblioBota configurer pour Papyrus.
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>