Rev 2 | 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.2 2007-02-13 18:06:21 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.2 $ $Date: 2007-02-13 18:06:21 $// +------------------------------------------------------------------------------------------------------+*/// +------------------------------------------------------------------------------------------------------+// | 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) : stringfunction 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) : stringfunction 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) : stringfunction 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) : stringfunction 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) : stringfunction 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) : stringfunction 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) : stringfunction 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) : stringfunction 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 voidfunction 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) : stringfunction 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) : stringfunction 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) : stringfunction 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) : stringfunction 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 $champfunction 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 .= $texte.' ';$retour .= '<img class="'.BB_CLASS_IMG_SUIVANT.'" src="'.BB_IMG_SUIVANT.'" alt="'.$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 .= $texte.' ';$retour .= '<img class="'.BB_CLASS_IMG_SUIVANT.'" src="'.BB_IMG_SUIVANT.'" alt="'.$texte.'..."/>';} else {$retour .= ' '.$texte;}$retour .= '</a>'."\n";break;}break;}return $retour;}/* +--Fin du code ----------------------------------------------------------------------------------------+** $Log: not supported by cvs2svn $* Revision 1.1 2005/11/23 10:22:25 jp_milcent* Ajout au dépot de l'application BiblioBota.* Elle doit à terme migrer dans eFlore.** 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 ----------------------------------------------------------------------------------------+*/?>