New file |
0,0 → 1,486 |
<?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 ----------------------------------------------------------------------------------------+ |
*/ |
?> |