Subversion Repositories eFlore/Applications.coel-consultation

Compare Revisions

Ignore whitespace Rev 279 → Rev 280

/tags/v1.13-la-grande-rue/CHANGELOG
New file
0,0 → 1,33
Changements 2016-12-29 [création de la branche "v1.13-La-grande-rue"]:
* Intégration à Wordpress pour le nouveau site Web
 
Changements 2016-04-14 [création de la branche "v1.12-Jurançon"]:
* Nettoyage des paramètres de recherche
* Desontologisation de consultation
 
Changements 2015-03-16 [création de la branche "v1.11-Juliénas"]:
* Les publications sources sont séparées par des sauts de ligne dans les meta données
* ajout d'une class permettant d'encapsuler les règles CSS de coel-consultation.
* Intégration du widget de remarques; nouveau paramètre de configuration "url_base_widget_remarques"
* Intégration de Google Analytics
* Réintégration lr et lr-mpu (index + config) - changement de version dans la config
* Ajout de <meta> OpenGraph pour l'intégration à Facebook & co.
* Meta OpenGraph pour Papyrus
* changement de favicons : liens vers resources.tela-botanica.org
* correction URL logo
* suppression du lien vers MoucheVaporisateur
* ajout appel publications
* Nouveau module "RecherchePublications"
* Recherche publis : ajout recherche libre + nom ouvrage
 
Changements 2014-06-19 [création de la branche "v1.10-Jasnieres"]:
* Ajout de meta données des collections : publications sources ainsi que les personnes ayant saisi la fiche
 
Changements 2014-05-12 [création de la branche "v1.9-Irouléguy"]:
* Adaptation à la version 1.4 de coel qui reflète les suppressions de champs intervenues dans coel
 
Changements 2014-02-10 [création de la branche "v1.8-Irany"]:
* Adaptation à la version 1.4 de coel qui a supprimé la notion de projet
 
Changements 2014-01-06 [création de la branche "v1.7-Hermitage"]:
* Nouveau moteur de recherche collections + personnes
/tags/v1.13-la-grande-rue/collection_wordpress.php
New file
0,0 → 1,68
<?php
/**
* Application de consultation des Collections.
* Fichier contenant les fonctions nécessaire pour l'insertion de l'application dans Wordpress.
*
* @category PHP5
* @package Collection
* @author Tela Botanica <equipe-dev@tela-botanica.org>
* @copyright 2010-2016 Tela-Botanica
* @license GPL-v3 et CECILL-v2
*/
 
// Annuler les fausses bonnes idées du JPFramework
restore_exception_handler();
restore_error_handler();
error_reporting(E_ALL);
 
/** Inclusion du fichier principal de l'application */
require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'collection.php';
 
// Configuration des URL d'après l'URL actuelle de Wordpress
global $wp;
$current_url = home_url(add_query_arg(array(),$wp->request));
Config::set('url_base', $current_url);
Config::set('url_base_index', $current_url);
 
// Hook d'ajout des scripts
add_action('wp_enqueue_scripts', 'collections_scripts_et_styles');
 
// ajout des scripts - utiliser dans le hook ci-dessus uniquement
function collections_scripts_et_styles() {
// Cette variable est définie dans le thème WP par template-collections.php,
// d'après l'option "applis_externes_chemin_collections"
global $chemin_collections_http;
 
// Scripts
wp_enqueue_script('jquery-cookie', 'https://resources.tela-botanica.org/jquery/cookie/1.0/jquery.cookie.min.js');
wp_enqueue_script('jquery-ui-1.8.custom', 'https://resources.tela-botanica.org/jquery/jquery-ui/1.8.18/js/jquery-ui-1.8.18.custom.min.js');
wp_enqueue_script('jquery-collection', $chemin_collections_http . '/squelettes/js/jquery-collection.js');
 
// Styles
wp_enqueue_style('collection', $chemin_collections_http . '/squelettes/css/collection/collection.css');
wp_enqueue_style('jquery-ui-1.8', 'https://resources.tela-botanica.org/jquery/jquery-ui/1.8.18/css/smoothness/jquery-ui-1.8.18.custom.css');
}
 
// Initialisation de l'appli
collections_initialisation(); // défini dans collection.php
 
// Affichage du contenu de l'application
function collections_get_contenu() {
return AppControleur::getContenuCorps();
}
 
function collections_get_contenu_tete() {
return AppControleur::getContenuTete();
}
 
function collections_get_contenu_pied() {
return AppControleur::getContenuPied();
}
 
function collections_get_contenu_navigation() {
return AppControleur::getContenuNavigation();
}
 
function collections_get_module() {
return AppControleur::getModule();
}
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/paca.php
===================================================================
--- tags/v1.13-la-grande-rue/paca.php (revision 0)
+++ tags/v1.13-la-grande-rue/paca.php (revision 280)
@@ -0,0 +1,63 @@
+<?php
+// declare(encoding='UTF-8');
+// Nous forçons le parametre "contexte" avec la valeur "paca"
+$_GET['contexte'] = 'paca';
+/** Inclusion du fichier principal de l'application*/
+require_once 'collection.php';
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <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 AppControleur::getMetaTitre(); ?></title>
+ <meta name="description" content="<?php echo AppControleur::getMetaDescription();?>" />
+ <meta name="keywords" content="<?php echo AppControleur::getMetaTags();?>" />
+
+ <meta name="revisit-after" content="15 days" />
+ <meta name="robots" content="index,follow" />
+ <meta name="author" content="Tela Botanica" />
+
+ <link rel="stylesheet" type="text/css" media="screen" href="squelettes/css/collection/generale.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" />
+ <link rel="stylesheet" type="text/css" media="screen" href="squelettes/css/collection/debogage.css" />
+ <link rel="stylesheet" type="text/css" media="print" href="https://www.tela-botanica.org/sites/commun/fr/styles/impression.css" />
+
+ <script type="text/javascript" src="squelettes/js/jquery-1.4.2.min.js"></script>
+ <script type="text/javascript" src="squelettes/js/jquery.cookie.min.js"></script>
+ <script type="text/javascript" src="squelettes/js/jquery-ui-1.8.custom.min.js"></script>
+ <script type="text/javascript" src="squelettes/js/jquery-collection.js"></script>
+ </head>
+ <body>
+ <div id="zone-centrale">
+ <div id="zone-corps">
+ <div id="zone-navigation">
+ <?php echo AppControleur::getContenuNavigation(); ?>
+ </div>
+ <div id="zone-corps-contenu">
+ <div id="entete">
+ <?php echo AppControleur::getContenuTete(); ?>
+ </div>
+ <div id="texte">
+ <?php echo AppControleur::getContenuCorps(); ?>
+ </div>
+ <div id="pied_texte">
+ <?php echo AppControleur::getContenuPied(); ?>
+ </div>
+ </div>
+ <div>
+ <?php echo AppControleur::getChrono(); ?>
+ <?php echo AppControleur::getExceptions(); ?>
+ </div>
+ <div id="zone-pied">
+ <p> &copy;<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>
+ </body>
+</html>
\ No newline at end of file
Index: tags/v1.13-la-grande-rue/configurations/config_papyrus.default.ini
===================================================================
--- tags/v1.13-la-grande-rue/configurations/config_papyrus.default.ini (revision 0)
+++ tags/v1.13-la-grande-rue/configurations/config_papyrus.default.ini (revision 280)
@@ -0,0 +1,12 @@
+; +------------------------------------------------------------------------------------------------------+
+; Paramètrage de la session
+; Devons nous démarrer une session : oui (true) ou non (false)
+session_demarrage = "php:false"
+; Encodage de sortie de l'application dans le contexte de Papyrus
+sortie_encodage = "ISO-8859-1"
+; 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()"
+; URL de base de l'application avec l'indicaiton du fichier de départ
+url_base_index = "{ref:url_base}"
+; URL de base où se situe le .htacces réalisant la réécriture d'URL pour les permaliens de l'application
+url_base_permalien = "http://www.tela-botanica.org/"
\ No newline at end of file
/tags/v1.13-la-grande-rue/configurations/config_papyrus.default.ini
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/configurations/.htaccess
===================================================================
--- tags/v1.13-la-grande-rue/configurations/.htaccess (revision 0)
+++ tags/v1.13-la-grande-rue/configurations/.htaccess (revision 280)
@@ -0,0 +1,2 @@
+# Ce fichier est là pour éviter l'accès au fichier .ini depuis un navigateur.
+deny from all
\ No newline at end of file
Index: tags/v1.13-la-grande-rue/configurations/config_lr-mpu.ini
===================================================================
--- tags/v1.13-la-grande-rue/configurations/config_lr-mpu.ini (revision 0)
+++ tags/v1.13-la-grande-rue/configurations/config_lr-mpu.ini (revision 280)
@@ -0,0 +1,43 @@
+; +------------------------------------------------------------------------------------------------------+
+; Général
+; Séparateur de dossier
+ds = DIRECTORY_SEPARATOR
+
+; +------------------------------------------------------------------------------------------------------+
+; Infos sur l'application
+info.nom = Consultation des Collections LR - MPU
+info.abr = COLL
+; Code numérique de la version de l'application
+info.version.code.num = "1.10"
+; Code alphabétique de la version de l'application
+info.version.code.alpha = "jasnieres"
+; Nom de la version de l'application
+info.version.nom = "Jasnieres"
+; URL de base de l'application avec l'indicaiton du fichier de départ
+url_base_index = "{ref:url_base}lr-mpu.php"
+
+; +------------------------------------------------------------------------------------------------------+
+; Paramètrage de la session
+; Devons nous démarrer une session : oui (true) ou non (false)
+session_demarrage = "php:true"
+; Définition du nom de la session à utiliser
+session_nom = "collection-lr-mpu"
+
+; +------------------------------------------------------------------------------------------------------+
+; Débogage
+; Indique si oui ou non on veut afficher le débogage.
+fw_debogage = false
+
+; +------------------------------------------------------------------------------------------------------+
+; Spécifique à l'application
+; Nom du fichier de l'image à utiliser pour des liens vers des cartes
+img_carte = "carte_lr-mpu.png"
+;Liste des identifiants de projets (séparés par des virgules) sur lesquels on veut limiter l'application (laisser vide pour ne pas limiter).
+projets = "4"
+
+; +------------------------------------------------------------------------------------------------------+
+; Spécifique au module Carte
+; Active (=true) ou désactive (=false) le mode de débogage de la cartographie
+carte_mode_debug = false
+; Nom du fichier de carte généré
+carte_genere_nom = "col_str_dep_lr-mpu"
Index: tags/v1.13-la-grande-rue/configurations/config_lr.ini
===================================================================
--- tags/v1.13-la-grande-rue/configurations/config_lr.ini (revision 0)
+++ tags/v1.13-la-grande-rue/configurations/config_lr.ini (revision 280)
@@ -0,0 +1,43 @@
+; +------------------------------------------------------------------------------------------------------+
+; Général
+; Séparateur de dossier
+ds = DIRECTORY_SEPARATOR
+
+; +------------------------------------------------------------------------------------------------------+
+; Infos sur l'application
+info.nom = Consultation des Collections LR
+info.abr = COLL
+; Code numérique de la version de l'application
+info.version.code.num = "1.10"
+; Code alphabétique de la version de l'application
+info.version.code.alpha = "jasnieres"
+; Nom de la version de l'application
+info.version.nom = "Jasnieres"
+; URL de base de l'application avec l'indicaiton du fichier de départ
+url_base_index = "{ref:url_base}lr.php"
+
+; +------------------------------------------------------------------------------------------------------+
+; Paramètrage de la session
+; Devons nous démarrer une session : oui (true) ou non (false)
+session_demarrage = "php:true"
+; Définition du nom de la session à utiliser
+session_nom = "collection-lr"
+
+; +------------------------------------------------------------------------------------------------------+
+; Débogage
+; Indique si oui ou non on veut afficher le débogage.
+fw_debogage = false
+
+; +------------------------------------------------------------------------------------------------------+
+; Spécifique à l'application
+; Nom du fichier de l'image à utiliser pour des liens vers des cartes
+img_carte = "carte_lr.png"
+;Liste des identifiants de projets (séparés par des virgules) sur lesquels on veut limiter l'application (laisser vide pour ne pas limiter).
+projets = "4"
+
+; +------------------------------------------------------------------------------------------------------+
+; Spécifique au module Carte
+; Active (=true) ou désactive (=false) le mode de débogage de la cartographie
+carte_mode_debug = false
+; Nom du fichier de carte généré
+carte_genere_nom = "col_str_dep_lr"
Index: tags/v1.13-la-grande-rue/configurations/config.default.ini
===================================================================
--- tags/v1.13-la-grande-rue/configurations/config.default.ini (revision 0)
+++ tags/v1.13-la-grande-rue/configurations/config.default.ini (revision 280)
@@ -0,0 +1,103 @@
+; +------------------------------------------------------------------------------------------------------+
+; Général
+; Séparateur de dossier
+ds = DIRECTORY_SEPARATOR
+
+; +------------------------------------------------------------------------------------------------------+
+; Info sur l'application
+info.nom = Consultation des Collections
+; Abréviation de l'application
+info.abr = COLL
+; Code numérique de la version de l'application
+info.version.code.num = "1.10"
+; Code alphabétique de la version de l'application
+info.version.code.alpha = "jasnieres"
+; Nom de la version de l'application
+info.version.nom = "Jasnières"
+; Version du Framework nécessaire au fonctionnement de cette application
+info.framework.version = "0.4"
+;Encodage de l'application
+appli_encodage = "UTF-8"
+; Nom de domaine pour l'URL de base de l'application : 162.38.234.6
+domaine = "www.tela-botanica.org"
+; URL de base de l'application, si elle est laissée vide, l'application fonctionnera en Stand-alone
+url_base = "http://{ref:domaine}/client/collection/v{ref:info.version.code.num}-{ref:info.version.code.alpha}/"
+; URL de base de l'application avec l'indication du fichier de départ
+url_base_index = "{ref:url_base}index.php"
+; URL de base où se situe le .htacces réalisant la réecriture d'URL pour les permaliens de l'application
+url_base_permalien = "{ref:url_base}"
+; Mettre à true si l'application nécessite de s'identifier.
+identification = false
+; URL de base du widget de remarques
+url_base_widget_remarques = "http://{ref:domaine}/widget:reseau:remarques"
+
+; +------------------------------------------------------------------------------------------------------+
+; Paramètrage de la session
+; Devons nous démarrer une session : oui (true) ou non (false)
+session_demarrage = "php:true"
+; Définition du nom de la session à utiliser
+session_nom = "collection"
+
+; +------------------------------------------------------------------------------------------------------+
+; Débogage
+; Indique si oui ou non on veut afficher le débogage.
+fw_debogage = true
+fw_debogage_mode = echo
+; Indique si oui ou non on veut lancer le chronométrage
+chronometrage = false
+
+; +------------------------------------------------------------------------------------------------------+
+; Spécifique à l'application
+; Url du Jrest utilisé pour les services web fournissant les données à l'application
+url_jrest = "http://www.tela-botanica.org/eflore/coel/jrest/"
+; Template d'URL pour les images de l'application
+url_img = "{ref:url_base}squelettes/img/%s"
+; Nom du fichier de l'image à utiliser pour des liens vers des cartes
+img_carte = "carte.png"
+; Template d'URL pour le lien vers une carte (Google Map ou OSM)
+; OSM : http://www.openstreetmap.org/?lat=%s&lon=%s&zoom=17
+; GGM : http://maps.google.fr/?ll=%s,%s
+lien_vers_carte = "http://www.openstreetmap.org/?lat=%s&lon=%s&zoom=17"
+
+; +------------------------------------------------------------------------------------------------------+
+; Pagination
+; paramètre d'URL utilisé pour désigner une page ("page" pose problème avec Wordpress, par exemple)
+parametre_url_page = "idx_page"
+
+; +------------------------------------------------------------------------------------------------------+
+; Spécifique au module Rechercher
+; Nombre de résultats par page par défaut
+resultat_par_page_defaut = "50"
+; Nombre de résultats par page, choix proposés
+resultat_par_page_choix = "20,50,100,200"
+
+; +------------------------------------------------------------------------------------------------------+
+; Spécifique au module Fiche
+guid = "urn:lsid:tela-botanica.org:coel:%s"
+guid_id_structure = "str"
+guid_id_collection = "col"
+guid_id_personne = "per"
+
+; +------------------------------------------------------------------------------------------------------+
+; Spécifique au module Carte
+; Active (=true) ou désactive (=false) le mode de débogage de la cartographie
+carte_mode_debug = false
+; Nom du fichier sans l'extension de la carte de base de fond à utiliser
+carte_base_nom = "france"
+; Chemin vers le dossier des fonds de cartes relatif à l'application
+carte_fonds_chemin = "composants{ref:ds}cartographie{ref:ds}squelettes{ref:ds}"
+; Chemin vers le dossier où seront stockée les cartes créées
+carte_sotckage_chemin = "/home/jpm/web/collection/cartes/"
+; Url du dossier où seront stockée les cartes créées avec %s pour indiquer le fichier
+carte_sotckage_url = "http://{ref:domaine}/collection/cartes/%s"
+; Nom du fichier de carte généré
+carte_genere_nom = "col_str_dep"
+; Constante stockant la couleur la plus foncé utilisée pour les cartes "proportionnelles".0,127,0
+carte_couleur_foncee = "140,168,68"
+; Constante stockant la couleur la plus claire utilisée pour les cartes "proportionnelles".210,230,210
+carte_couleur_claire = "243,247,224"
+
+; +------------------------------------------------------------------------------------------------------+
+; Spécifique au module Syndication
+; Limite du nombre d'entrées pour les flux de la syndication
+flux_limite = "50"
\ No newline at end of file
/tags/v1.13-la-grande-rue/configurations/config.default.ini
Property changes:
Added: svnkit:entry:sha1-checksum
## -0,0 +1 ##
+f5d9969918c9ef695234c3bf5845b935e085f3de
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/configurations/config_paca.ini
===================================================================
--- tags/v1.13-la-grande-rue/configurations/config_paca.ini (revision 0)
+++ tags/v1.13-la-grande-rue/configurations/config_paca.ini (revision 280)
@@ -0,0 +1,41 @@
+; +------------------------------------------------------------------------------------------------------+
+; Général
+; Séparateur de dossier
+ds = DIRECTORY_SEPARATOR
+
+; +------------------------------------------------------------------------------------------------------+
+; Infos sur l'application
+info.nom = Consultation des Collections PACA
+info.abr = COLL
+; Code numérique de la version de l'application
+info.version.code.num = "1.4"
+; Code alphabétique de la version de l'application
+info.version.code.alpha = "gigondas"
+; Nom de la version de l'application
+info.version.nom = "Gigondas"
+; URL de base de l'application avec l'indicaiton du fichier de départ
+url_base_index = "{ref:url_base}paca.php"
+
+; +------------------------------------------------------------------------------------------------------+
+; Paramètrage de la session
+; Devons nous démarrer une session : oui (true) ou non (false)
+session_demarrage = "php:true"
+; Définition du nom de la session à utiliser
+session_nom = "collection-paca"
+
+; +------------------------------------------------------------------------------------------------------+
+; Débogage
+; Indique si oui ou non on veut afficher le débogage.
+fw_debogage = false
+
+; +------------------------------------------------------------------------------------------------------+
+; Spécifique à l'application
+; Nom du fichier de l'image à utiliser pour des liens vers des cartes
+img_carte = "carte_paca.png"
+
+; +------------------------------------------------------------------------------------------------------+
+; Spécifique au module Carte
+; Active (=true) ou désactive (=false) le mode de débogage de la cartographie
+carte_mode_debug = false
+; Nom du fichier de carte généré
+carte_genere_nom = "col_str_dep_paca"
\ No newline at end of file
Index: tags/v1.13-la-grande-rue/configurations
===================================================================
--- tags/v1.13-la-grande-rue/configurations (revision 0)
+++ tags/v1.13-la-grande-rue/configurations (revision 280)
/tags/v1.13-la-grande-rue/configurations
Property changes:
Added: svn:ignore
## -0,0 +1,2 ##
+config.ini
+config_papyrus.ini
Index: tags/v1.13-la-grande-rue/framework.defaut.php
===================================================================
--- tags/v1.13-la-grande-rue/framework.defaut.php (revision 0)
+++ tags/v1.13-la-grande-rue/framework.defaut.php (revision 280)
@@ -0,0 +1,6 @@
+<?php
+// Inclusion du Framework
+// Renomer ce fichier en "framework.php"
+// Indiquyer ci-dessous le chemin vers le fichier autoload.inc.php de la bonne version du Framework
+require_once '/framework/0.2/autoload.inc.php';
+?>
\ No newline at end of file
Index: tags/v1.13-la-grande-rue/index.php
===================================================================
--- tags/v1.13-la-grande-rue/index.php (revision 0)
+++ tags/v1.13-la-grande-rue/index.php (revision 280)
@@ -0,0 +1,110 @@
+<?php
+// declare(encoding='UTF-8');
+/** Inclusion du fichier principal de l'application*/
+require_once 'collection.php';
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <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 AppControleur::getMetaTitre(); ?></title>
+ <meta name="description" content="<?php echo AppControleur::getMetaDescription();?>" />
+ <meta name="keywords" content="<?php echo AppControleur::getMetaTags();?>" />
+
+ <meta name="revisit-after" content="15 days" />
+ <meta name="robots" content="index,follow" />
+ <meta name="author" content="Tela Botanica" />
+
+ <!-- OpenGraph pour Facebook, Pinterest, Google+ -->
+ <meta property="og:type" content="website" />
+ <meta property="og:title" content="CoEL - consultation des collections" />
+ <meta property="og:site_name" content="Tela Botanica" />
+ <meta property="og:description" content="Moteur de recherche sur les collections recensées dans Collections en Ligne" />
+ <meta property="og:image" content="https://resources.tela-botanica.org/tb/img/256x256/carre_englobant.png" />
+ <meta property="og:image:type" content="image/png" />
+ <meta property="og:image:width" content="256" />
+ <meta property="og:image:height" content="256" />
+ <meta property="og:locale" content="fr_FR" />
+
+ <link rel="shortcut icon" type="image/x-icon" href="https://resources.tela-botanica.org/tb/img/16x16/favicon.ico" />
+ <link rel="icon" type="image/png" href="https://resources.tela-botanica.org/tb/img/16x16/favicon.png" />
+
+ <link rel="stylesheet" type="text/css" media="screen" href="squelettes/css/collection/generale.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" />
+ <link rel="stylesheet" type="text/css" media="screen" href="squelettes/css/collection/debogage.css" />
+ <link rel="stylesheet" type="text/css" media="print" href="https://www.tela-botanica.org/sites/commun/fr/styles/impression.css" />
+
+ <script type="text/javascript" src="squelettes/js/jquery-1.4.2.min.js"></script>
+ <script type="text/javascript" src="squelettes/js/jquery.cookie.min.js"></script>
+ <script type="text/javascript" src="squelettes/js/jquery-ui-1.8.custom.min.js"></script>
+ <script type="text/javascript" src="squelettes/js/jquery-collection.js"></script>
+ <script>
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+ })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+ ga('create', 'UA-57885-3', 'auto');
+ ga('require', 'displayfeatures');
+ ga('send', 'pageview');
+
+ </script>
+ </head>
+ <body>
+ <div id="reducteur">
+
+ <div id="logo_tela">
+ <a href="/" title="Retour à l'accueil du site">
+ <img src="https://resources.tela-botanica.org/tb/img/135x102/logo_carre_officiel.png" 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 AppControleur::getContenuNavigation(); ?>
+ </div>
+ <div id="contenu">
+ <div id="entete">
+ <?php echo AppControleur::getContenuTete(); ?>
+ </div>
+ <div id="texte">
+ <?php echo AppControleur::getContenuCorps(); ?>
+ </div>
+ <div id="pied_texte">
+ <?php echo AppControleur::getContenuPied(); ?>
+ </div>
+ </div>
+ <div>
+ <?php echo AppControleur::getChrono(); ?>
+ <?php echo AppControleur::getExceptions(); ?>
+ </div>
+ <div id="pied">
+ <p> &copy;<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>
\ No newline at end of file
/tags/v1.13-la-grande-rue/index.php
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/carte.tpl.html
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/carte.tpl.html (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/carte.tpl.html (revision 280)
@@ -0,0 +1,6 @@
+<!-- COL - DEBUT CARTE -->
+<div id="col-cartographie" class="coel-consultation">
+ <h1>Carte des structures hébergeant des collections</h1>
+ <p><iframe frameborder="0" style="width: 850px; height: 450px;" src="http://www.tela-botanica.org/widget:coel:carto"></iframe></p>
+</div>
+<!-- COL - FIN CARTE -->
\ No newline at end of file
/tags/v1.13-la-grande-rue/squelettes/carte.tpl.html
Property changes:
Added: svnkit:entry:sha1-checksum
## -0,0 +1 ##
+850926279f7e7a2289a725964fb7dd5917408fa8
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/fiche_structure.tpl.html
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/fiche_structure.tpl.html (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/fiche_structure.tpl.html (revision 280)
@@ -0,0 +1,195 @@
+<!-- COL - DEBUT FICHE STRUCTURE -->
+<script type="text/javascript">
+ var jq = jQuery.noConflict();
+ jq(document).ready(function() {
+ jq('#col-str').tabs({
+ cookie: {expires: 1}// Stocke un cookie pour 1 jour
+ });
+ });
+</script>
+<div class="coel-consultation">
+ <h1><?=$info['cs_nom']?> <span class="discretion">(id:<?=$id?>)</span></h1>
+
+ <div id="col-str" class="col-onglets">
+ <ul class="col-sommaire">
+ <li><a href="#col-str-general">Général</a></li>
+ <li><a href="#col-str-personnel">Personnel</a></li>
+ <li><a href="#col-str-conservation">Conservation</a></li>
+ <li><a href="#col-str-valorisation">Valorisation</a></li>
+ <li><a href="#col-str-collection">Collection</a></li>
+ <li><a href="#col-str-meta">Méta-données</a></li>
+ </ul>
+
+ <div id="col-str-general">
+ <h2 id="col-str-titre-general">Général</h2>
+ <h3>Renseignements administratifs</h3>
+ <dl>
+ <dt>Acronyme</dt> <dd><?=$info['_acronyme_']?></dd>
+ <dt>Statut</dt> <dd><?=$info['_type_prive_']?><?=$info['_type_public_']?></dd>
+ <dt>Date de fondation</dt> <dd><?=$info['_date_fondation_']?></dd>
+ <dt>Personnel de l'institution</dt> <dd><?=$info['_nbre_personne_']?></dd>
+ </dl>
+
+ <h3>Adresse</h3>
+ <dl>
+ <dt>Adresse</dt> <dd><?=$info['cs_adresse_01']?></dd>
+ <dt>Code postal</dt> <dd><?=$info['cs_code_postal']?></dd>
+ <dt>Ville</dt> <dd><?=$info['cs_ville']?></dd>
+ <dt>Pays</dt> <dd><?=$info['_pays_']?></dd>
+ <dt>Latitude/Longitude</dt>
+ <dd>
+ <?php if ($info['_latitude_longitude_'] == '&nbsp;') : ?>
+ <?=$info['_latitude_longitude_']?>
+ <?php else : ?>
+ <a class="lien_ext" href="<?=$info['_lien_carte_']?>"><?=$info['_latitude_longitude_']?> <img style="display:inline;" src="<?=$info['_url_img_carte_']?>" alt="Voir sur une carte" /></a>
+ <?php endif; ?>
+ </dd>
+ </dl>
+
+ <h3>Description</h3>
+ <dl class="label-court">
+ <dt>Description</dt> <dd><?=$info['cs_description']?></dd>
+ <dt>Condition d'accès</dt> <dd><?=$info['cs_condition_acces']?></dd>
+ <dt>Condition d'usage</dt> <dd><?=$info['cs_condition_usage']?></dd>
+ </dl>
+
+ <h3>Communication</h3>
+ <dl class="label-court">
+ <dt>Téléphone/Fax</dt> <dd><?=$info['_telephone_fax_']?></dd>
+ <dt>Courriel</dt> <dd><?=$info['_courriel_']?></dd>
+ <dt>Site web</dt> <dd><?=$info['_web_']?></dd>
+ </dl>
+ <hr class="nettoyeur"/>
+ </div>
+
+ <div id="col-str-personnel">
+ <h2 id="col-str-titre-personnel">Personnel</h2>
+ <?php if (count($personnel) > 0) : ?>
+ <dl class="label-moyen">
+ <dt>Personnel des collections</dt> <dd><?=count($personnel)?></dd>
+ </dl>
+ <hr class="nettoyeur"/>
+ <h3>Membres du personnel</h3>
+ <?=$personnelFrag;?>
+ <table>
+ <thead>
+ <tr>
+ <th>Fonction</th>
+ <th>Nom Complet</th>
+ <th>Prénom</th>
+ <th>Nom</th>
+ <th>Tél. Fixe / Fax</th>
+ <th>Courriel principal</th>
+ <th>Statut</th>
+ <th>Temps de travail</th>
+ <th>Spécialité principale</th>
+ <th>Contact ?</th>
+ </tr>
+ </thead>
+ <tbody>
+ <?php foreach ($personnel as $personne) : ?>
+ <tr>
+ <td><?=$personne['_fonction_']?></td>
+ <td><a href="<?=$personne['_url_']?>" title="Accèder à la fiche de la personne"><?=$personne['cp_fmt_nom_complet']?></a></td>
+ <td><?=$personne['cp_prenom']?></td>
+ <td><?=$personne['cp_nom']?></td>
+ <td><?=$personne['_tel_fax_']?></td>
+ <td><?=$personne['_courriel_']?></td>
+ <td><?=$personne['_statut_']?></td>
+ <td><?=$personne['csap_bota_travail_hebdo_tps']?></td>
+ <td><?=$personne['_specialite_']?></td>
+ <td><?=$personne['_contact_']?></td>
+ </tr>
+ <?php endforeach; ?>
+ </tbody>
+ </table>
+ <?php endif; ?>
+ </div>
+
+ <div id="col-str-conservation">
+ <h2 id="col-str-titre-conservation">Conservation</h2>
+ <h3>Formation du personnel à la conservation</h3>
+ <dl>
+ <dt>Formation en conservation</dt> <dd><?=$info['_formation_']?> <?=$info['_formation_info_']?></dd>
+ <dt>Intérêt pour une formation</dt> <dd><?=$info['_formation_interet_']?></dd>
+ </dl>
+
+ <h3>Opérations &amp; matériels</h3>
+ <dl class="label-grand">
+ <dt>Opérations actuelles de restauration</dt> <dd><?=$info['_restauration_']?> <?=$info['_restauration_operation_']?></dd>
+ <dt>Utilisation de matériel de conservation</dt> <dd><?=$info['_materiel_conservation_']?> <?=$info['_materiel_autre_']?></dd>
+ <dt>Traitements globaux</dt> <dd><?=$info['_traitement_']?> <?=$info['_traitement_liste_']?></dd>
+ </dl>
+
+ <h3>Local</h3>
+ <dl class="label-grand">
+ <dt>Locaux spécifiques aux collections</dt> <dd><?=$info['_stockage_local_']?></dd>
+ <dt>Meubles spécifiques aux collections</dt> <dd><?=$info['_stockage_meuble_']?></dd>
+ <dt>Paramêtres maîtrisés</dt> <dd><?=$info['_stockage_parametre_']?></dd>
+ <dt>Conservation des collections en commun</dt> <dd><?=$info['_collection_commune_']?> <?=$info['_collection_commune_autre_']?></dd>
+ <dt>Accès contrôlé</dt> <dd><?=$info['_acces_controle_']?></dd>
+ </dl>
+
+ <h3>Acquisitions</h3>
+ <dl class="label-grand">
+ <dt>Acquisition de nouvelles collections</dt> <dd><?=$info['_acquisition_collection_']?></dd>
+ <dt>Mise en herbier de nouveaux échantillons</dt> <dd><?=$info['_acquisition_echantillon_']?></dd>
+ <?php if ($info['csc_mark_acquisition_echantillon'] == '1') : ?>
+ <dt>Traitement avant intégration</dt> <dd><?=$info['_acquisition_traitement_']?></dd>
+ <?php if ($info['csc_mark_acquisition_traitement'] == '1') : ?>
+ <dt>Désinsectisation</dt> <dd><?=$info['_acquisition_traitement_insecte_']?></dd>
+ <dt>Empoisonnement</dt> <dd><?=$info['_acquisition_traitement_poison_']?></dd>
+ <?php endif; ?>
+ <?php endif; ?>
+ </dl>
+ <hr class="nettoyeur"/>
+ </div>
+
+ <div id="col-str-valorisation">
+ <h2 id="col-str-titre-valorisation">Valorisation</h2>
+ <h3>Actions de valorisation</h3>
+ <dl class="label-grand">
+ <dt>Réalisation d'actions de valorisation</dt> <dd><?=$info['_action_']?> <?=$info['_action_info_']?></dd>
+ <dt>Publications</dt> <dd><?=$info['csv_publication']?></dd>
+ <dt>Autres collections</dt> <dd><?=$info['_collection_autre_']?></dd>
+ <dt>Futures actions de valorisation</dt> <dd><?=$info['_action_future_']?> <?=$info['_action_future_info_']?></dd>
+ </dl>
+
+ <h3>Accès &amp; Usages</h3>
+ <dl class="label-grand">
+ <dt>Condition de visite pour les chercheurs</dt> <dd><?=$info['_visite_avec_motif_']?> <?=$info['_visite_avec_motif_info_']?></dd>
+ <dt>Condition d'accès du grand public</dt> <dd><?=$info['_acces_ss_motif_']?> <?=$info['_acces_ss_motif_info_']?></dd>
+ </dl>
+
+ <h3>Recherches scientifiques</h3>
+ <dl>
+ <dt>Utilisation pour la recherche</dt> <dd><?=$info['_recherche_']?></dd>
+ <?php if ($info['csv_mark_recherche'] == '1') : ?>
+ <dt>Provenance des chercheurs</dt> <dd><?=$info['_recherche_provenance_']?></dd>
+ <dt>Type de recherche</dt> <dd><?=$info['_recherche_type_']?></dd>
+ <?php endif; ?>
+ </dl>
+ <hr class="nettoyeur"/>
+ </div>
+
+ <div id="col-str-collection">
+ <h2 id="col-str-titre-collection">Collections</h2>
+ <h3>Collections liées à cette institution</h3>
+ <?php if (count($collections) > 0) : ?>
+ <?=$collectionsFrag;?>
+ <ul>
+ <?php foreach ($collections as $collection) : ?>
+ <li><a href="<?=$collection['_url_']?>" title="Accèder à la fiche de la collection"><?=$collection['cc_nom']?></a></li>
+ <?php endforeach; ?>
+ </ul>
+ <?php endif; ?>
+ </div>
+
+ <div id="col-str-meta">
+ <?=$metadonnees?>
+ </div>
+ </div>
+
+ <hr />
+</div>
+<!-- COL - FIN FICHE STRUCTURE -->
\ No newline at end of file
/tags/v1.13-la-grande-rue/squelettes/fiche_structure.tpl.html
Property changes:
Added: svnkit:entry:sha1-checksum
## -0,0 +1 ##
+f9d7a5cc676c0e593fe71cc7c19236cfb511e67e
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/pied.tpl.html
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/pied.tpl.html (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/pied.tpl.html (revision 280)
@@ -0,0 +1,21 @@
+<!-- COL - DEBUT PIED DE PAGE -->
+<div class="coel-consultation">
+ <p>
+ Pour plus d'informations ou nous faire part d'une erreur, merci de
+ <a href="<?=$url_base_widget_remarques; ?>?service=coel&pageSource=<?php echo urlencode('http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']); ?>"
+ target="_blank"
+ onclick="javascript:window.open(this.getAttribute('href'), 'Tela Botanica - Remarques', config='height=700, width=640, scrollbars=yes, resizable=yes'); return false;">
+ cliquer ici
+ </a>
+ </p>
+</div>
+<!-- Google Analytics -->
+<script>
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+ })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ ga('create', 'UA-57885-3', 'auto');
+ ga('send', 'pageview');
+</script>
+<!-- COL - FIN PIED DE PAGE -->
\ No newline at end of file
/tags/v1.13-la-grande-rue/squelettes/pied.tpl.html
Property changes:
Added: svnkit:entry:sha1-checksum
## -0,0 +1 ##
+0ea2692a68aa67db509738a988a8cc2e8a47bfd7
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/metadonnees.tpl.html
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/metadonnees.tpl.html (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/metadonnees.tpl.html (revision 280)
@@ -0,0 +1,16 @@
+<h2>Méta-données</h2>
+<dl class="label-moyen">
+ <dt>GUID (Permalien)</dt> <dd><a href="<?=$_guid_url_?>"><?=$_guid_?></a></dd>
+ <dt>Notes</dt> <dd><?=$_notes_?></dd>
+ <dt>Sources</dt> <dd><?=$_source_?>&nbsp;</dd>
+ <?php if($_expert_ != null) { ?>
+ <dt>Collection expertisée par </dt> <dd><?=$_expert_; ?>&nbsp;</dd>
+ <?php } ?>
+ <?php if($_contributeur_ != null) { ?>
+ <dt>Fiche saisie par </dt> <dd><?=$_contributeur_; ?>&nbsp;</dd>
+ <?php } ?>
+ <dt>Modifié par</dt> <dd><?=$_modifier_par_?> (<?=$_modifier_par_courriel_?>)</dd>
+ <dt>Date de dernière modification</dt> <dd><?=$_date_modification_?> </dd>
+ <dt>État de l'enregistrement</dt> <dd><?=$_etat_?> </dd>
+</dl>
+<hr class="nettoyeur"/>
\ No newline at end of file
Index: tags/v1.13-la-grande-rue/squelettes/resultat.tpl.html
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/resultat.tpl.html (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/resultat.tpl.html (revision 280)
@@ -0,0 +1,52 @@
+<!-- COL - DEBUT RESULTAT -->
+<div id="col_resultat" class="coel-consultation">
+ <?=$fragmenteur;?>
+ <?php if (isset($infos)) : ?>
+ <ul>
+ <!-- recherche de collections -->
+ <?php if ($masque['cible'] == 'collections'): ?>
+ <?php foreach ($infos as $info) : ?>
+ <li><?=$info['structure']['ville']?> - <a href="<?=$info['structure']['url']?>"><?=$info['structure']['nom']?></a>
+ <?php if (isset($info['collections'])) : ?>
+ <ul>
+ <?php foreach ($info['collections'] as $collection) : ?>
+ <li><a href="<?=$collection['url']?>"><?=$collection['nom']?></a></li>
+ <?php endforeach; ?>
+ </ul>
+ <?php endif; ?>
+ </li>
+ <?php endforeach; ?>
+ <!-- recherche de personnes -->
+ <?php elseif ($masque['cible'] == 'personnes'): ?>
+ <?php foreach ($infos['personnes'] as $personne) : ?>
+ <li>
+ <a href="<?=$personne['url']?>">
+ <?php if($personne['nomcomplet']): ?>
+ <?=$personne['nomcomplet']?>
+ <?php else: ?>
+ <?=$personne['prenom']?> <?=$personne['nom']?>
+ <?php endif; ?>
+ </a>
+ <?php if($personne['surnom']): ?>
+ (<?=$personne['surnom']?>)
+ <?php endif; ?>
+ </li>
+ <?php endforeach; ?>
+ <!-- recherche de publications -->
+ <?php elseif ($masque['cible'] == 'publications'): ?>
+ <?php foreach ($infos['publications'] as $publication) : ?>
+ <li>
+ <!-- <a href="<?=$publication['url']?>"> -->
+ <?php if($publication['nomcomplet']): ?>
+ <?=$publication['nomcomplet']?>
+ <?php else: ?>
+ <?=$publication['auteur']?> - <?=$publication['date']?> - <?=$publication['titre']?> - <?=$publication['editeur']?> - <?=$publication['nb_pages']?>
+ <?php endif; ?>
+ <!-- </a> -->
+ </li>
+ <?php endforeach; ?>
+ <?php endif; ?>
+ </ul>
+ <?php endif; ?>
+</div>
+<!-- COL - FIN RESULTAT -->
\ No newline at end of file
/tags/v1.13-la-grande-rue/squelettes/resultat.tpl.html
Property changes:
Added: svnkit:entry:sha1-checksum
## -0,0 +1 ##
+96a08bb7ad231013aae91359cfeb8675bb236456
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/courriel.tpl.html
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/courriel.tpl.html (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/courriel.tpl.html (revision 280)
@@ -0,0 +1 @@
+<span class="courriel" title="Envoyer un courriel"><?=$courriel?></span>
\ No newline at end of file
Index: tags/v1.13-la-grande-rue/squelettes/syndication.tpl.html
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/syndication.tpl.html (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/syndication.tpl.html (revision 280)
@@ -0,0 +1,20 @@
+<!-- COL - DEBUT SYNDICATION -->
+<div id="col-syndication" class="coel-consultation">
+ <h1>Liste des flux RSS de l'application Collection En Ligne (COEL)</h1>
+ <p>Veuillez sélectionner un des flux RSS ci-dessous pour obtenir la liste des dernières modifications correspondantes.</p>
+ <ul>
+ <?php foreach ($syndications as $flux) : ?>
+ <li><h2><?=$flux['titre']?></h2>
+ <p><?=$flux['description']?></p>
+ <ul>
+ <?php foreach ($flux['urls'] as $format => $url) : ?>
+ <li class="icone icone-<?=$format?>"><a href="<?=$url?>?limit=<?=$limite?>" class="lien_ext"><?=$format?></a></li>
+ <?php endforeach; ?>
+ </ul>
+ </li>
+ <?php endforeach; ?>
+ </ul>
+ <p>Vous pouvez limiter le nombre de résultat des flux en ajoutant le paramêtre "limit" suivit du nombre de résultats
+ attendus. Exemple : </p>
+</div>
+<!-- COL - FIN SYNDICATION -->
\ No newline at end of file
/tags/v1.13-la-grande-rue/squelettes/syndication.tpl.html
Property changes:
Added: svnkit:entry:sha1-checksum
## -0,0 +1 ##
+475e3d961df9d2338e5e58c26e78d082f11b9c79
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/collection/collection.css
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/collection/collection.css (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/collection/collection.css (revision 280)
@@ -0,0 +1,188 @@
+@charset "UTF-8";
+/*--------------------------------------------------------------------------------------------------------------*/
+/* Général */
+/*Correction CSS Tela */
+#texte, h1{
+ position:relative;/*Pour IE*/}
+#contenu{
+ clear:none;/*Pour IE*/}
+/*Titres*/
+h2, h3{
+ margin:0;
+ padding:1em 0 0 0;}
+/* Liste de définitions */
+dl{
+ margin:0;
+ padding:0;
+ width:auto;}
+dt{
+ background-color:#EEE;
+ width:18em;
+ float:left;
+ text-align:right;
+ margin:0;
+ padding:.3em;
+ border-top:1px solid #999;
+ font-weight:normal;}
+.coel-consultation li {
+ list-style-image:none !important;}
+.label-grand dt{
+ width:28em;}
+.label-court dt{
+ width:12em;}
+dt:after{
+ content:" : ";}
+/* hack de commentaire avec un antislash pour ie5 mac \*/
+.coel-consultation h2,.coel-consultation h3,.coel-consultation dt,.coel-consultation .nettoyeur{
+ clear:both;}
+/* end hack */
+dd{
+ background-color:#FFF;
+ margin:0;
+ padding:.3em;
+ border-top:1px solid #999;}
+.nettoyeur{
+ visibility:hidden;}
+/* Table */
+table{
+ border:1px solid #1C3C78;
+ border-collapse:collapse;
+ width:100% !important;width:95%;/*Pour IE*/
+ margin:auto;}
+thead, tfoot{
+ background-color:#EEE;
+ border:1px solid #1C3C78;}
+tbody{
+ background-color:#FFF;
+ border:1px solid #1C3C78;}
+th{
+ font-family:monospace;
+ border:1px dotted #1C3C78;
+ padding:5px;
+ background-color:#EEE;}
+td{
+ font-family:sans-serif;
+ font-size:80%;
+ border:1px solid #1C3C78;
+ padding:5px;
+ text-align:left;}
+caption{
+ font-family:sans-serif;}
+/*--------------------------------------------------------------------------------------------------------------*/
+/* Présentation Moteur */
+label#col-rech{
+ display:none;}
+/* Navigation dans les résultats */
+.fragmenteur select,.fragmenteur a,.fragmenteur .frag_page_courrante, .fragmenteur .frag_resultats{
+ color:white;
+ padding:5px;
+ margin:0 2px;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ border-radius: 4px;}
+.fragmenteur select,.fragmenteur a{
+ background-color:#5D5C5C;
+ border:1px solid black;}
+.fragmenteur a:hover,.fragmenteur .frag_page_courrante, .fragmenteur .frag_resultats{
+ font-weight:bold;
+ background-color:#AEDC43;
+ border:1px solid #86A736;}
+.frag_separateur{display:none;}
+
+/*--------- Masque de recherche avancée ---------*/
+#col-rech-masque, #pers-rech-masque {
+ width: 725px;
+ /*padding: 10px;*/
+ /*border: solid #ddd 1px;*/
+}
+
+h2.titre-moteur-recherche {
+ margin-bottom: 10px;
+}
+
+.champ-masque {
+ display: inline-block;
+ width: 360px;
+ margin-top: 2px;
+}
+.champ-masque.long {
+ width: 720px;
+}
+.champ-masque input {
+ width: 200px;
+}
+.champ-masque select {
+ max-width: 190px;
+}
+.champ-masque label {
+ display: inline-block;
+ text-align: right;
+}
+.champ-masque label.label-gauche {
+ width: 130px;
+ vertical-align: middle;
+}
+.champ-masque label.label-droite {
+ width: 120px;
+}
+.champ-masque input.input-droite {
+ width: 210px;
+}
+
+/*--------------------------------------------------------------------------------------------------------------*/
+/* Présentation Fiche */
+.discretion{
+ color:#A9A9A9;
+ font-size:10px;
+ font-weight:normal;}
+.txt-long{
+ white-space:pre-wrap;}
+p.txt-long{
+ width:53.6em;
+ padding:.3em;
+ background-color:#FFF;}
+#texte li{
+ margin:3px 0;}
+.col-sommaire a{
+ background:none;}
+/* Liste d'images */
+ul.gallerie{
+ list-style-type:none;}
+ul.gallerie li{
+ float:left;}
+ul.gallerie li img {
+ margin:0.3em;
+ border: 1px solid;
+ border-color:#444 #AAA #AAA #444;
+ padding:10px;}
+/*--------------------------------------------------------------------------------------------------------------*/
+/* Présentation Carte */
+#carte-img{
+ border:none;}
+/*--------------------------------------------------------------------------------------------------------------*/
+/* Présentation Syndication */
+#col-syndication{
+ width:800px;
+ background:url("images/flux.png") no-repeat scroll 560px 60px white;}
+.icone{
+ line-height:20px;
+ padding-left:20px;}
+.icone-atom{
+ background:url(images/atom.png) no-repeat center left;}
+.icone-rss1{
+ background:url(images/rss1.png) no-repeat center left;}
+ .icone-rss2{
+ background:url(images/rss2.png) no-repeat center left;}
+/*--------------------------------------------------------------------------------------------------------------*/
+/* Jquery UI : tabs */
+.ui-tabs .ui-tabs-hide{
+ display: none;}
+/* Nécessaire à IE 6 et 7 pour éviter un décalage vers le bas!*/
+.col-onglets{
+ margin:0;/*Pour IE*/
+ padding:0;/*Pour IE*/
+ height:auto !important;height:100%;/*Pour IE*/}
+
+#col-per > .col-sommaire > li {
+ margin-bottom: 2px;
+}
\ No newline at end of file
/tags/v1.13-la-grande-rue/squelettes/css/collection/collection.css
Property changes:
Added: svnkit:entry:sha1-checksum
## -0,0 +1 ##
+7731f86aabedb86dadfc0ea4266a7bf3594f931e
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/collection/debogage.css
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/collection/debogage.css (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/collection/debogage.css (revision 280)
@@ -0,0 +1,40 @@
+/*--------------------------------------------------------------------------------------------------------------*/
+/* Débogage */
+.debogage{
+ color:black;
+ border:3px solid #6495ed;}
+.debogage_fichier, .debogage_ligne{
+ font-size:10px;
+ color:#A9A9A9;}
+
+/*--------------------------------------------------------------------------------------------------------------*/
+/* Tableau du chronométrage du programme */
+table#chrono{
+ display:block;
+ border:3px solid #6495ed;
+ border-collapse:collapse;
+ text-align: center;
+ margin:0 auto;}
+#chrono thead, tfoot{
+ background-color:#D0E3FA;
+ border:1px solid #6495ed;}
+#chrono tbody{
+ background-color:#FFFFFF;
+ border:1px solid #6495ed;}
+#chrono th{
+ font-family:monospace;
+ border:1px dotted #6495ed;
+ padding:5px;
+ background-color:#EFF6FF;
+ width:25%;}
+#chrono td{
+ font-family:sans-serif;
+ font-size:80%;
+ border:1px solid #6495ed;
+ padding:5px;
+ text-align:center;}
+#chrono caption{
+ font-family:sans-serif;
+ text-align: center;
+ width:90%;
+ margin:auto;}
\ No newline at end of file
Index: tags/v1.13-la-grande-rue/squelettes/css/collection/images/flux.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/css/collection/images/flux.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/collection/images/flux.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/collection/images/flux.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/css/collection/images/flux.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/collection/images/atom.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/css/collection/images/atom.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/collection/images/atom.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/collection/images/atom.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/css/collection/images/atom.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/collection/images/fleche_externe.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/css/collection/images/fleche_externe.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/collection/images/fleche_externe.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/collection/images/fleche_externe.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/css/collection/images/fleche_externe.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/collection/images/licences.txt
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/collection/images/licences.txt (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/collection/images/licences.txt (revision 280)
@@ -0,0 +1,6 @@
++----------------------------------------------------------------------------------------------------------------------+
+Icon set : Supra RSS
+Designer : Webdesigner Depot
+License : Free for commercial use.
+Fichiers : flux.png, rss1.png, rss2.png, atom.png
++----------------------------------------------------------------------------------------------------------------------+
\ No newline at end of file
/tags/v1.13-la-grande-rue/squelettes/css/collection/images/licences.txt
Property changes:
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/collection/images/aide.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/css/collection/images/aide.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/collection/images/aide.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/collection/images/aide.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/css/collection/images/aide.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/collection/images/fichier_pdf.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/css/collection/images/fichier_pdf.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/collection/images/fichier_pdf.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/collection/images/fichier_pdf.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/css/collection/images/fichier_pdf.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/collection/images/mail.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/css/collection/images/mail.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/collection/images/mail.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/collection/images/mail.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/css/collection/images/mail.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/collection/images/rss1.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/css/collection/images/rss1.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/collection/images/rss1.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/collection/images/rss1.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/css/collection/images/rss1.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/collection/images/rss2.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/css/collection/images/rss2.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/collection/images/rss2.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/collection/images/rss2.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/css/collection/images/rss2.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/collection/generale.css
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/collection/generale.css (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/collection/generale.css (revision 280)
@@ -0,0 +1,703 @@
+/*+------------------------------------------------------------------------------------------------------------------+
+COMMUN SIMPLE
++------------------------------------------------------------------------------------------------------------------+*/
+/*Feuille de style support? par Nescape 4.78
+Auteur: Magali Giaume*/
+body {
+ font-family:Arial, Helvetica, Verdana, sans-serif;
+ font-size:12px;
+ background-color:#fff;
+ margin:2px;}
+h1 {
+ font-size:17px;
+ font-weight:bold;
+ padding:0 0 2px 5px;
+ line-height:1.3em;
+ margin:10px 0 4px 0;}
+h2 {
+ font-size:13px;
+ font-weight:bold;
+ color:black;
+ text-transform:uppercase;
+ line-height:1.3em;
+ margin:10px 0 4px 0;}
+h3, #more_resultat li h2, .titre2_cartographie, .titre2_inscription, .inscription_titre2, .titre2_cartographie {
+ font-size:15px;
+ color:black;
+ font-weight:bold;
+ line-height:1.3em;
+ margin:8px 0 4px 0;
+ text-transform:none;}
+h4 {
+ font-size:13px;
+ color:black;
+ font-weight:bold;
+ letter-spacing:0.1em;
+ line-height:1.3em;
+ margin:8px 0 2px 0;}
+h5 {
+ font-size:13px;
+ color:black;
+ font-style:italic;
+ line-height:1.2em;
+ margin:4px 0 1px 0;}
+h6 {
+ font-size:12px;
+ color:black;
+ font-style:italic;
+ line-height:1.2em;
+ margin:4px 0 1px 0;}
+caption {
+ font-size:12px;
+ font-weight:bold;
+ margin:2px;}
+table {
+ border-collapse:collapse;}
+/*bandeau*/
+#titre_monde h1 {
+ font-size:20px}
+#pos_recherche p {
+ margin:0;
+ padding:0;}
+/*tableau*/
+/* Tableau */
+.table_bordure th {
+ background-color:#E4B842;
+ padding:0 5px;
+ text-align:center;
+ border-bottom: 1px dotted grey;
+ border-left: 1px dotted grey;}
+
+.table_bordure {
+ border-spacing:0;
+ text-align:center;
+ border: 1px solid black;}
+
+.table_bordure td {
+ padding:2px;
+ text-align:left;
+ border-bottom: 1px dotted grey;
+ border-left: 1px dotted grey;}
+/*Nom latin*/
+.nom_latin{font-style:italic;}
+.nom_latin_rang, .nom_latin_auteur{font-style:normal;}
+
+/*+------------------------------------------------------------------------------------------------------------------+
+COMMUN COMPLEXE
++------------------------------------------------------------------------------------------------------------------+*/
+
+/*icones*/
+a.lien_ext:after {
+content: " "url(images/fleche_externe.png);}
+a.pdf:before {
+content: url(images/fichier_pdf.png)" ";}
+/*CSS3 : ajout d'un espace entre href et ^ pour konqueror*/
+a.mail:after, a[href ^="mailto:"]:after {
+content: " "url(images/mail.png);}
+.table_bordure th[title]:after {
+content: " "url(images/aide.png);}
+/*abbr {
+ background :url(/client/eflore_chorologie/presentations/images/info.png) no-repeat 100% 5%;
+ padding-right:16px;
+ cursor:help;
+ border:none;}*/
+
+/* presentation des liens */
+a {
+ color:black;
+ text-decoration:none;
+ border-bottom:1px dotted #95ae5d;}
+a:hover {
+ color:#FD8C13;
+ border-bottom:1px dotted #FD8C13;
+
+/* Texte trouvé par le moteur de recherche */
+.surlignage {
+ background-color:yellow;}
+
+/* presentation des listes de definitions */
+dl {width:100%;}
+dt {
+ float:left;
+ font-weight: bold;
+ text-align:top left;
+ margin-right:0.3em;}
+dd {
+ width:auto;
+ margin-left:0;
+ margin:0.5em 0;}
+.ajout_2point dt:after {content:" : ";}
+
+/* presentation des listes */
+#texte li {
+ margin:4px;}
+.liste_decale li, .liste_decale dt {
+ margin-left:2em;}
+ul ul {
+ margin-left:2em;}
+#zone_menu ul, #menus ul{
+ line-height:1.5em;}
+
+/* presentation des images */
+img{
+ border:0;}
+img a{
+ display:block;}
+#logo_tela img {
+ border:0;}
+#logo_tela a {
+ position:absolute;
+ top:0;
+ left:0;}
+#logo_tela a:hover {
+ border:1px dotted;}
+#logo_tela a:hover:after {
+ content: " Retour à l'accueil ";}
+.img_gch_txt_drte img, .flottant_gauche {
+ float:left;
+ margin:5px 10px 5px 5px;}
+.img_gch_txt_drte li {
+ margin-left:40px;}
+.img_drte_txt_gch img, .flottant_droit {
+ float:right;
+ margin-left:10px;}
+.img_drte_txt_gch > img {
+ float:right;
+ margin-left:10px;}
+.img_milieu {
+ display:inline;
+ margin:0 10px;}
+.image_legendee {
+ width: 300px;
+ font-style:italic;
+ margin: 5px}
+.image_legendee img {
+ margin: 0 auto}
+.legende {
+ display:block;
+ font-weight:bold;
+ text-align:center;}
+.clear {
+ clear:both;}
+
+/* presentation fichiers audio */
+.fichier_audio {
+border: 1px solid #99a;}
+.legende_audio {
+margin-top:-0.8em;
+margin-left:10px;
+float:left;}
+.fichier_audio img {
+float:left;
+padding-right:25px}
+.fichier_audio p {
+padding-right:25px;}
+.legende_audio span {
+padding:0 10px;
+background-color:#fff;}
+
+/* autres classes de presentation*/
+.texte_inactif {
+ font-size:10px;
+ color:gray;}
+.erreur {
+ color:#F00;}
+.en_evidence {
+ font-size:16px;
+ font-weight:bold;}
+.attention {
+ display:block;
+ background: #ffffcc url(https://www.tela-botanica.org/sites/commun/generique/images/graphisme/attention.png) no-repeat 2% 50%;
+ text-align:center;
+ border: 1px solid red;
+ min-height: 30px;
+ max-width: 800px;
+ padding:10px 5px 5px 50px;}
+.information {
+ background: #e7ebfd url(https://www.tela-botanica.org/sites/commun/generique/images/graphisme/information.png) no-repeat 2% 50%;
+ text-align:center;
+ border:1px solid #5D81BA;
+ max-width: 800px;
+ min-height:30px;
+ padding:10px 5px 5px 50px;}
+#bb_liste_fascicule li{
+ clear:both;
+ height:100%;}
+.bb_img_fascicule {
+ display:block;}
+blockquote {
+ font-style:italic;
+ text-align:center;}
+legend {
+ text-align:center;}
+.fin_texte{
+ width:0;
+ height:0;
+ text-align: center;
+ clear: both;}
+
+/*DIFFERENTS BLOCS DE LA PAGE*/
+#reducteur {
+ text-align:center;}
+/*bandeau*/
+#bandeau, #zone_bandeau {
+ height:77px;
+ margin:0 0 0 190px;}
+#titre_monde, #site_nom {
+ margin:0;
+ text-align:right;
+ height:38px;}
+#titre_monde h1, #site_nom h1 {
+ background-color:transparent;
+ font-weight: bold;
+ font-size: 28px;
+ margin:0 20px 0 0;
+ padding:0;}
+#plan_contact {
+ margin:0 5px 0 0;
+ text-align:right;
+ height:25px;
+ padding:7px 15px 0 0;}
+#plan_contact a {
+ font-weight:bold;
+ margin-left:10px;
+ background-repeat: repeat-x;
+ background-position:center bottom;}
+#plan_contact a:hover {
+ font-weight:bold;
+ margin-left:10px;
+ background-repeat: repeat-x;
+ background-position:center bottom;}
+
+/*droite*/
+#droite {
+ margin:0 5px 0 207px;
+ position:relative;
+ /* text-align est nécessaire pour IE */
+ text-align:left;
+}
+
+/* droite -> pos_recherche */
+#pos_recherche, #moteur_recherche {
+ font-size:13px;
+ font-weight:bold;
+ min-height:30px;
+ padding:5px 0 5px 20px;
+ text-align:left;}
+#form_more_recherche, #form_recherche {
+ text-align:right;
+ padding:0;
+ margin:0;}
+#form_more_recherche legend {
+ display:none;}
+#form_more_recherche fieldset {
+ float:right;
+ border:0;
+ margin:0;
+ padding:0;}
+#form_more_recherche label {
+ display:none;}
+#more_resultat, #more_resultat li {
+ clear:left;
+ display: inline;
+ margin: 0;
+ padding: 0;
+ list-style-type:none;}
+.more_iid, .more_dui {
+ display:none;}
+.more_ivd {
+ width:600px;}
+.more_duv a {
+ color:#008000;}
+.more_dsv, .more_dsi {
+ color:#C1C1C1;}
+.more_detail, .more_detail li {
+ display: inline;
+ margin: 0;
+ padding: 0;
+ list-style-type:none;}
+
+/*droite -> onglets */
+#onglets {
+ position:relative;
+ float:left;
+ text-align:left;
+ z-index:2;
+ font-weight:bold;}
+#onglets ul {
+ margin:0;
+ padding:0;
+ list-style:none;}
+#onglets li {
+ background:url(https://www.tela-botanica.org/sites/commun/generique/images/graphisme/norm_right_both.gif) no-repeat right top;
+ float:left;
+ margin:0;
+ padding:0;}
+#onglets a {
+ float:left; /* ligne ajoutee pour compatibilite IE5-Mac */
+ display:block;
+ background:url("https://www.tela-botanica.org/sites/commun/generique/images/graphisme/norm_left_both.gif") no-repeat left top;
+ width:.1em;
+ white-space:nowrap;/*2 lignes ajoutees pour compatibilite IE : extension de la zone cliquable a l'ensemble de l'onglet*/
+ padding:5px 15px 4px;
+ text-decoration:none;}
+/* On retablit le float a sa valeur correct mais le hack de l'antislash commente cache cette regle a IE5-Mac \*/
+#header a {float:none;}
+/* End IE5-Mac hack */
+#onglets > ul a {
+ width:auto;} /*propriete ajoutee pour contredire la ligne speciale IE (ci dessus) pour les autres navigateurs*/
+#onglets li:hover {
+ background-position:100% -150px;}
+#onglets li:hover a {
+ background-position:0% -150px;}
+#onglets .menu_inactif {
+ border-bottom:1px solid;}
+#onglets .menu_actif, #onglets .onglet_actif {
+ position:relative;
+ background-position:100% -150px;
+ padding-bottom:2px;
+ z-index:3;
+ font-weight:bold;}
+#onglets .menu_actif a, #onglets .onglet_actif a {
+ position:relative;
+ background-position:0% -150px;
+ padding-bottom:3px;
+ z-index:4;}
+
+/* droite -> contenu */
+#contenu, #zone_contenu, #contenu_accueil {
+ position:relative;
+ top:-1px;
+/* Modif David Delon 26/08/2005 car conflit avec Fckeditor (menu deroulant)
+/* z-index:1;*/
+ clear:both;
+ padding:0 2px 0 2px;
+ text-align:justify;
+ min-height:300px;}
+#texte{
+ line-height:1.2em;
+ text-align:justify;
+ clear:both;
+ padding:0 5px 7px 5px;}
+#texte .image_lien {
+ background-image:none;}
+/* Hides from IE-mac \*/
+* html #texte {height: 1%;}
+/* Bug qui inactive les liens sous IE */
+
+
+/* Droite -> pied_page */
+#pied_text, #pied_page, #zone_pied {
+ clear:both;
+ text-align:center;
+ font-size:11px;}
+#pied_page p, #zone_pied p{
+ position:center;}
+#pied_page a {
+ margin:0 10px;}
+.menu_commun_n1 {
+ padding:0;}
+.menu_commun_n1 li {
+ display:inline;}
+.menu_commun_n1 li+li {
+ display:inline;
+ padding-left:10px;}
+
+/* Tableau */
+.table_cadre {
+ border-spacing:0;
+ text-align:center;}
+.table_cadre th {
+ text-align:center;}
+.table_cadre td {
+ padding:2px;
+ text-align:left;}
+
+/*nav_gauche*/
+#navigation, #nav_gauche {
+ position:absolute;
+ top:2px;
+ left:2px;
+ width:188px;
+ padding-top:150px;
+ min-height:292px;}
+
+/* nav_gauche -> logo_tela */
+#logo_tela, #logo {
+ margin:7px 10px;
+ position:absolute;
+ top:2px;
+ left:18px;
+ z-index:1;}
+#logo_tela a, #logo a {
+ background:none;}
+#acces_direct, #accessibilite {
+ display:none;}
+
+/* nav_gauche -> selecteur_sites */
+#sesi_site {
+ text-align:center;
+ font-size:12px;
+ font-weight:bold;
+ width:180px;
+ height:20px;}
+#sesi_selecteur fieldset, #selecteur_monde fieldset{
+ border:0;
+ margin:0;
+ padding:0;}
+#sesi_selecteur legend, #selecteur_monde legend{
+ display: none;}
+#sesi_selecteur option {
+ font-size:11px;}
+#lien_inscription{
+ margin:2em 0 0 0;
+ font-size:11px;}
+
+/* nav_gauche -> menus */
+#zone_menu, #menus {
+ font-size:13px;
+ margin:10px 0;
+ text-align:left;}
+#zone_menu a, #menus a {
+ background:none;
+ color:#000;
+ display:block;
+ height:1.2em;}
+#zone_menu .menu_actif>a, #menus .menu_actif>a {
+ border:1px solid;}
+#zone_menu > ul a, #menus > ul a {
+ height:auto;}
+#navigation hr, #nav_gauche hr {
+ width:40%;
+ text-align:center;}
+
+/* nav_gauche -> form connexion et deconnexion */
+#form_connexion legend, #identification legend {
+ font-size:14px;
+ font-weight:bold;
+ padding-left:32px;}
+#form_connexion label, #identification label {
+ display:none;}
+label#persistant_label {
+ display:block;
+ margin:0.5em 0 1em 1em;
+ color:black;}
+#form_connexion fieldset, #identification fieldset{
+ border:none;}
+#username, #password {
+ width:10em;
+ text-align:left;
+ margin:0.5em 1em;}
+#persistant {
+ text-align:left;
+ float:left;
+ margin:0.5em 0.5em 1em 1em;}
+#identification_info, #identification, #formconnexion, #iden_action {
+ display:block;
+ width:auto;
+ text-align:center;
+ font-size:11px;
+ margin: 0;
+ padding-bottom:2px;}
+#menu_contextuel {
+ border:1px solid;}
+#deconnexion, #lien_inscription_modif, #lien_inscription {
+ font-size:12px;}
+#inscription_info {
+ text-align:center;}
+#inscription_aide {
+ margin-left:1em;}
+#identification_message, #menu_contextuel h2, #hba_info h1, #hba_info p {
+ display:block;
+ font-size:14px;
+ text-align:center;
+ font-weight:bold;
+ text-transform:none;
+ margin:0 0 5px 0;}
+#identification_prenom, #identification_nom{
+ font-size:13px;
+ font-weight:bold;
+ color:black;}
+#identification_nom {
+ text-transform:uppercase;}
+#iden_action a {
+ line-height:15px;}
+
+/* presentation des menus */
+.menu_classique_n1, .menu_n1 {
+ padding:0;
+ margin:0;
+ font-weight:bold;
+ list-style-type:none;}
+.menu_classique_n1 a {
+ padding:3px 0;}
+.menu_classique_n2, .menu_n2 {
+ padding:0;
+ margin:0;
+ font-weight:normal;
+ list-style-type:none;}
+.menu_classique_n2 a {
+ padding:3px 0 3px 15px;}
+.menu_n3 {
+ margin:0 0 0 10px;
+ padding:0;
+ text-align:left;}
+.menu_inactif a, .menu_actif a {
+ color:#000;
+ text-decoration:none;
+ background-color:transparent;}
+
+/*presentation des syntheses*/
+.page_separateur_date_heure, .page_creation_jour, .page_creation_heure, .page_creation_minute, .page_creation_seconde, .page_separateur_heure, .page_separateur_minute, .page_modification_heure, .page_modification_minute{
+ display:none;}
+.page_titre {
+ font-weight:bold;}
+
+/* Texte champ d'une fiche */
+.champ_cle {
+ font-weight:bold;}
+.champ_valeur {
+ font-weight:normal;}p_cle {
+ font-weight:bold;}
+.champ_valeur {
+ font-weight:normal;}
+.bp_titre {
+ font-weight:bold;}
+.bp_titre_revue, .nom_latin {
+ font-weight:normal;}
+.bp_annee, .bp_num_revue {
+ font-weight:normal;}
+/*menu_commun*/
+.question {
+ font-weight:bold;}
+
+/*Gestion de l'affichage du chronomètre des applications.*/
+#chrono{display:none;}
+
+/* Gestion de l'affichage du bandeau */
+#bandeau_annonce {
+ height:28px;
+ margin:0 0 0 0px;
+ padding-right:20px;
+ text-align:right;
+}
+
+#bandeau_annonce a {
+
+ font-size: 15px;
+ padding: 3px;
+ font-weight:bold;
+ vertical-align:middle;
+}
+
+#bandeau_annonce a:hover {
+ background-image:url(https://www.tela-botanica.org/sites/commun/generique/images/graphisme/img_underline_hover_plan_site_black.png);
+ background-position:center bottom;
+ background-repeat:repeat-x;
+}
+
+/*+------------------------------------------------------------------------------------------------------------------+
+SITE - PARLONS BOTA
++------------------------------------------------------------------------------------------------------------------+*/
+/*Feuille de style du monde debuter en botanique
+Auteur : Magali Giaume, Tamara Le Bourg*/
+h1 {
+ color:#36560B;
+ background-color:#CFDB86;}
+h2, #identification_message, #form_connexion legend, #identification legend, #identification_info, #iden_action {
+ color:#36560B;}
+hr {
+ color: #d1dc8d;}
+table {
+ border:1px solid #36560B;
+ border-collapse: collapse;}
+td, th {
+ border:1px solid #36560B;
+ padding:5px;}
+img {
+ display:block;}
+a img {
+ border:1px dotted #36560B;}
+
+/*DIFFERENTS BLOCS DE LA PAGE*/
+
+/*bandeau*/
+#bandeau {
+ background: url(https://www.tela-botanica.org/sites/parlons_bota/generique/images/graphisme/bandeau_parlons_bota_fond.png) repeat-x;}
+#bandeau_contenu {
+ background:transparent url(https://www.tela-botanica.org/sites/parlons_bota/generique/images/graphisme/bandeau_parlons_bota.jpg) no-repeat;
+ height:77px;}
+#titre_monde h1 {
+ color:#F3F6E2;}
+#plan_contact a {
+ color:#000;
+ background-image: url(https://www.tela-botanica.org/sites/commun/generique/images/graphisme/img_underline_plan_site_black.png);}
+#plan_contact a:hover {
+ background-image: url(https://www.tela-botanica.org/sites/commun/generique/images/graphisme/img_underline_hover_plan_site_black.png);}
+
+/*droite -> onglets */
+#onglets li {
+ background:url("https://www.tela-botanica.org/sites/parlons_bota/generique/images/graphisme/onglet_D_bota.gif") no-repeat right top;}
+#onglets a {
+ background:url("https://www.tela-botanica.org/sites/parlons_bota/generique/images/graphisme/onglet_G_bota.gif") no-repeat left top;}
+#onglets li:hover {
+ color:#becf5c;}
+#onglets li:hover a {
+ color:#36560B;}
+#onglets .menu_inactif {
+ border-bottom:#BECF5C;}
+#onglets .menu_actif a {
+ color:#36560B;}
+
+/* droite -> contenu */
+#contenu {
+ border:1px solid #becf5c;}
+#wikini_page ul{
+ line-height:1em;}
+.commentsheader {
+ display:none;}
+
+/* droite -> pied_page */
+.eflore_pied_page {
+ color:grey;
+ text-align:center;
+ font-size:10px;}
+
+/*nav_gauche*/
+#nav_gauche {
+ background: #fff url(https://www.tela-botanica.org/sites/parlons_bota/generique/images/graphisme/degrade_vertpomme.png) repeat-x;}
+
+/* nav_gauche -> menus */
+#menus .menu_actif>a {
+ background-color:#CFDB86;
+ border-color: rgb(221, 230, 170);}
+#menus a:hover {
+ background-color:#CFDB86;}
+.form_identification input, .form_identification textarea, .form_identification select {
+ background-color:#f4f6e4;}
+#menu_contextuel {
+ color:#BECF5C;}
+/* presentation des menus */
+.menu_classique_n2 .menu_actif {
+ background-color:red;}
+.menu_actif a {
+ color:#36560B;}
+
+/*Styles pour presentation des syntheses et articles en ligne*/
+.nom_latin {
+ font-style:italic;}
+.auteur_msg {
+ color:#990000;
+ font-weight:bold;}
+.txt_souligne {
+ text-decoration:underline;}
+
+/*styles pour ne pas afficher les noms d'auteur et date */
+#sans_auteur .page_auteur, #sans_auteur .page_separateur_auteur, #sans_auteur .page_separateur_titre, #sans_auteur .page_creation_mois, #sans_auteur .page_creation_annee {
+ display:none;}
+/*************************
+Apercu de bota - Glossaire
+*************************/
+
+#glossaire dd {
+ padding-right:10px;}
Index: tags/v1.13-la-grande-rue/squelettes/css/humanity/jquery-ui-1.8.custom.css
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/humanity/jquery-ui-1.8.custom.css (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/humanity/jquery-ui-1.8.custom.css (revision 280)
@@ -0,0 +1,296 @@
+/*
+* jQuery UI CSS Framework
+* Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
+*/
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden { display: none; }
+.ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+.ui-helper-clearfix { display: inline-block; }
+/* required comment for clearfix to work in Opera \*/
+* html .ui-helper-clearfix { height:1%; }
+.ui-helper-clearfix { display:block; }
+/* end clearfix */
+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+* jQuery UI CSS Framework
+* Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
+* To view and modify this theme, visit http://jqueryui.com/themeroller/?tr=ffDefault=Helvetica,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=cb842e&bgTextureHeader=02_glass.png&bgImgOpacityHeader=25&borderColorHeader=d49768&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=f4f0ec&bgTextureContent=05_inset_soft.png&bgImgOpacityContent=100&borderColorContent=e0cfc2&fcContent=1e1b1d&iconColorContent=c47a23&bgColorDefault=ede4d4&bgTextureDefault=02_glass.png&bgImgOpacityDefault=70&borderColorDefault=cdc3b7&fcDefault=3f3731&iconColorDefault=f08000&bgColorHover=f5f0e5&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=f5ad66&fcHover=a46313&iconColorHover=f08000&bgColorActive=f4f0ec&bgTextureActive=04_highlight_hard.png&bgImgOpacityActive=100&borderColorActive=e0cfc2&fcActive=b85700&iconColorActive=f35f07&bgColorHighlight=f5f5b5&bgTextureHighlight=04_highlight_hard.png&bgImgOpacityHighlight=75&borderColorHighlight=d9bb73&fcHighlight=060200&iconColorHighlight=cb672b&bgColorError=fee4bd&bgTextureError=04_highlight_hard.png&bgImgOpacityError=65&borderColorError=f8893f&fcError=592003&iconColorError=ff7519&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=75&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=75&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
+*/
+
+
+/* Component containers
+----------------------------------*/
+.ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; }
+.ui-widget .ui-widget { font-size: 1em; }
+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; }
+.ui-widget-content { border: 1px solid #e0cfc2; background: #f4f0ec url(images/ui-bg_inset-soft_100_f4f0ec_1x100.png) 50% bottom repeat-x; color: #1e1b1d; }
+.ui-widget-content a { color: #1e1b1d; }
+.ui-widget-header { border: 1px solid #d49768; background: #cb842e url(images/ui-bg_glass_25_cb842e_1x400.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
+.ui-widget-header a { color: #ffffff; }
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default, .ui-widget-content .ui-state-default { border: 1px solid #cdc3b7; background: #ede4d4 url(images/ui-bg_glass_70_ede4d4_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #3f3731; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #3f3731; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus { border: 1px solid #f5ad66; background: #f5f0e5 url(images/ui-bg_glass_100_f5f0e5_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #a46313; }
+.ui-state-hover a, .ui-state-hover a:hover { color: #a46313; text-decoration: none; }
+.ui-state-active, .ui-widget-content .ui-state-active { border: 1px solid #e0cfc2; background: #f4f0ec url(images/ui-bg_highlight-hard_100_f4f0ec_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #b85700; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #b85700; text-decoration: none; }
+.ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight, .ui-widget-content .ui-state-highlight {border: 1px solid #d9bb73; background: #f5f5b5 url(images/ui-bg_highlight-hard_75_f5f5b5_1x100.png) 50% top repeat-x; color: #060200; }
+.ui-state-highlight a, .ui-widget-content .ui-state-highlight a { color: #060200; }
+.ui-state-error, .ui-widget-content .ui-state-error {border: 1px solid #f8893f; background: #fee4bd url(images/ui-bg_highlight-hard_65_fee4bd_1x100.png) 50% top repeat-x; color: #592003; }
+.ui-state-error a, .ui-widget-content .ui-state-error a { color: #592003; }
+.ui-state-error-text, .ui-widget-content .ui-state-error-text { color: #592003; }
+.ui-priority-primary, .ui-widget-content .ui-priority-primary { font-weight: bold; }
+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.ui-state-disabled, .ui-widget-content .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_c47a23_256x240.png); }
+.ui-widget-content .ui-icon {background-image: url(images/ui-icons_c47a23_256x240.png); }
+.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
+.ui-state-default .ui-icon { background-image: url(images/ui-icons_f08000_256x240.png); }
+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_f08000_256x240.png); }
+.ui-state-active .ui-icon {background-image: url(images/ui-icons_f35f07_256x240.png); }
+.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_cb672b_256x240.png); }
+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ff7519_256x240.png); }
+
+/* positioning */
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-off { background-position: -96px -144px; }
+.ui-icon-radio-on { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.ui-corner-tl { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px; }
+.ui-corner-tr { -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px; }
+.ui-corner-bl { -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; }
+.ui-corner-br { -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; }
+.ui-corner-top { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px; }
+.ui-corner-bottom { -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; }
+.ui-corner-right { -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px; -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; }
+.ui-corner-left { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px; -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; }
+.ui-corner-all { -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px; }
+
+/* Overlays */
+.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_75_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
+.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_75_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/* Tabs
+----------------------------------*/
+.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 0px; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.ui-tabs .ui-tabs-panel { display: block; border: 0; padding: 1em 1.4em; background: none; }
+.ui-tabs .ui-tabs-hide { display: none !important; }
/tags/v1.13-la-grande-rue/squelettes/css/humanity/jquery-ui-1.8.custom.css
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/humanity/jquery-ui-1.8.custom.min.css
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/humanity/jquery-ui-1.8.custom.min.css (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/humanity/jquery-ui-1.8.custom.min.css (revision 280)
@@ -0,0 +1,237 @@
+.ui-helper-hidden{display:none;}
+.ui-helper-hidden-accessible{position:absolute;left:-99999999px;}
+.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none;}
+.ui-helper-clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden;}
+.ui-helper-clearfix{display:inline-block;}
+/* required comment for clearfix to work in Opera \*/
+* html .ui-helper-clearfix{height:1%;}
+.ui-helper-clearfix{display:block;}
+/* end clearfix */
+.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0);}
+.ui-state-disabled{cursor:default !important;}
+.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;}
+.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%;}
+.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em;}
+.ui-widget .ui-widget{font-size:1em;}
+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em;}
+.ui-widget-content{border:1px solid #e0cfc2;background:#f4f0ec url(images/ui-bg_inset-soft_100_f4f0ec_1x100.png) 50% bottom repeat-x;color:#1e1b1d;}
+.ui-widget-content a{color:#1e1b1d;}
+.ui-widget-header{border:1px solid #d49768;background:#cb842e url(images/ui-bg_glass_25_cb842e_1x400.png) 50% 50% repeat-x;color:#ffffff;font-weight:bold;}
+.ui-widget-header a{color:#ffffff;}
+.ui-state-default, .ui-widget-content .ui-state-default{border:1px solid #cdc3b7;background:#ede4d4 url(images/ui-bg_glass_70_ede4d4_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#3f3731;}
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited{color:#3f3731;text-decoration:none;}
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus{border:1px solid #f5ad66;background:#f5f0e5 url(images/ui-bg_glass_100_f5f0e5_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#a46313;}
+.ui-state-hover a, .ui-state-hover a:hover{color:#a46313;text-decoration:none;}
+.ui-state-active, .ui-widget-content .ui-state-active{border:1px solid #e0cfc2;background:#f4f0ec url(images/ui-bg_highlight-hard_100_f4f0ec_1x100.png) 50% 50% repeat-x;font-weight:normal;color:#b85700;}
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited{color:#b85700;text-decoration:none;}
+.ui-widget:active{outline:none;}
+.ui-state-highlight, .ui-widget-content .ui-state-highlight{border:1px solid #d9bb73;background:#f5f5b5 url(images/ui-bg_highlight-hard_75_f5f5b5_1x100.png) 50% top repeat-x;color:#060200;}
+.ui-state-highlight a, .ui-widget-content .ui-state-highlight a{color:#060200;}
+.ui-state-error, .ui-widget-content .ui-state-error{border:1px solid #f8893f;background:#fee4bd url(images/ui-bg_highlight-hard_65_fee4bd_1x100.png) 50% top repeat-x;color:#592003;}
+.ui-state-error a, .ui-widget-content .ui-state-error a{color:#592003;}
+.ui-state-error-text, .ui-widget-content .ui-state-error-text{color:#592003;}
+.ui-priority-primary, .ui-widget-content .ui-priority-primary{font-weight:bold;}
+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal;}
+.ui-state-disabled, .ui-widget-content .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none;}
+.ui-icon{width:16px;height:16px;background-image:url(images/ui-icons_c47a23_256x240.png);}
+.ui-widget-content .ui-icon{background-image:url(images/ui-icons_c47a23_256x240.png);}
+.ui-widget-header .ui-icon{background-image:url(images/ui-icons_ffffff_256x240.png);}
+.ui-state-default .ui-icon{background-image:url(images/ui-icons_f08000_256x240.png);}
+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon{background-image:url(images/ui-icons_f08000_256x240.png);}
+.ui-state-active .ui-icon{background-image:url(images/ui-icons_f35f07_256x240.png);}
+.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_cb672b_256x240.png);}
+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon{background-image:url(images/ui-icons_ff7519_256x240.png);}
+.ui-icon-carat-1-n{background-position:0 0;}
+.ui-icon-carat-1-ne{background-position:-16px 0;}
+.ui-icon-carat-1-e{background-position:-32px 0;}
+.ui-icon-carat-1-se{background-position:-48px 0;}
+.ui-icon-carat-1-s{background-position:-64px 0;}
+.ui-icon-carat-1-sw{background-position:-80px 0;}
+.ui-icon-carat-1-w{background-position:-96px 0;}
+.ui-icon-carat-1-nw{background-position:-112px 0;}
+.ui-icon-carat-2-n-s{background-position:-128px 0;}
+.ui-icon-carat-2-e-w{background-position:-144px 0;}
+.ui-icon-triangle-1-n{background-position:0 -16px;}
+.ui-icon-triangle-1-ne{background-position:-16px -16px;}
+.ui-icon-triangle-1-e{background-position:-32px -16px;}
+.ui-icon-triangle-1-se{background-position:-48px -16px;}
+.ui-icon-triangle-1-s{background-position:-64px -16px;}
+.ui-icon-triangle-1-sw{background-position:-80px -16px;}
+.ui-icon-triangle-1-w{background-position:-96px -16px;}
+.ui-icon-triangle-1-nw{background-position:-112px -16px;}
+.ui-icon-triangle-2-n-s{background-position:-128px -16px;}
+.ui-icon-triangle-2-e-w{background-position:-144px -16px;}
+.ui-icon-arrow-1-n{background-position:0 -32px;}
+.ui-icon-arrow-1-ne{background-position:-16px -32px;}
+.ui-icon-arrow-1-e{background-position:-32px -32px;}
+.ui-icon-arrow-1-se{background-position:-48px -32px;}
+.ui-icon-arrow-1-s{background-position:-64px -32px;}
+.ui-icon-arrow-1-sw{background-position:-80px -32px;}
+.ui-icon-arrow-1-w{background-position:-96px -32px;}
+.ui-icon-arrow-1-nw{background-position:-112px -32px;}
+.ui-icon-arrow-2-n-s{background-position:-128px -32px;}
+.ui-icon-arrow-2-ne-sw{background-position:-144px -32px;}
+.ui-icon-arrow-2-e-w{background-position:-160px -32px;}
+.ui-icon-arrow-2-se-nw{background-position:-176px -32px;}
+.ui-icon-arrowstop-1-n{background-position:-192px -32px;}
+.ui-icon-arrowstop-1-e{background-position:-208px -32px;}
+.ui-icon-arrowstop-1-s{background-position:-224px -32px;}
+.ui-icon-arrowstop-1-w{background-position:-240px -32px;}
+.ui-icon-arrowthick-1-n{background-position:0 -48px;}
+.ui-icon-arrowthick-1-ne{background-position:-16px -48px;}
+.ui-icon-arrowthick-1-e{background-position:-32px -48px;}
+.ui-icon-arrowthick-1-se{background-position:-48px -48px;}
+.ui-icon-arrowthick-1-s{background-position:-64px -48px;}
+.ui-icon-arrowthick-1-sw{background-position:-80px -48px;}
+.ui-icon-arrowthick-1-w{background-position:-96px -48px;}
+.ui-icon-arrowthick-1-nw{background-position:-112px -48px;}
+.ui-icon-arrowthick-2-n-s{background-position:-128px -48px;}
+.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px;}
+.ui-icon-arrowthick-2-e-w{background-position:-160px -48px;}
+.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px;}
+.ui-icon-arrowthickstop-1-n{background-position:-192px -48px;}
+.ui-icon-arrowthickstop-1-e{background-position:-208px -48px;}
+.ui-icon-arrowthickstop-1-s{background-position:-224px -48px;}
+.ui-icon-arrowthickstop-1-w{background-position:-240px -48px;}
+.ui-icon-arrowreturnthick-1-w{background-position:0 -64px;}
+.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px;}
+.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px;}
+.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px;}
+.ui-icon-arrowreturn-1-w{background-position:-64px -64px;}
+.ui-icon-arrowreturn-1-n{background-position:-80px -64px;}
+.ui-icon-arrowreturn-1-e{background-position:-96px -64px;}
+.ui-icon-arrowreturn-1-s{background-position:-112px -64px;}
+.ui-icon-arrowrefresh-1-w{background-position:-128px -64px;}
+.ui-icon-arrowrefresh-1-n{background-position:-144px -64px;}
+.ui-icon-arrowrefresh-1-e{background-position:-160px -64px;}
+.ui-icon-arrowrefresh-1-s{background-position:-176px -64px;}
+.ui-icon-arrow-4{background-position:0 -80px;}
+.ui-icon-arrow-4-diag{background-position:-16px -80px;}
+.ui-icon-extlink{background-position:-32px -80px;}
+.ui-icon-newwin{background-position:-48px -80px;}
+.ui-icon-refresh{background-position:-64px -80px;}
+.ui-icon-shuffle{background-position:-80px -80px;}
+.ui-icon-transfer-e-w{background-position:-96px -80px;}
+.ui-icon-transferthick-e-w{background-position:-112px -80px;}
+.ui-icon-folder-collapsed{background-position:0 -96px;}
+.ui-icon-folder-open{background-position:-16px -96px;}
+.ui-icon-document{background-position:-32px -96px;}
+.ui-icon-document-b{background-position:-48px -96px;}
+.ui-icon-note{background-position:-64px -96px;}
+.ui-icon-mail-closed{background-position:-80px -96px;}
+.ui-icon-mail-open{background-position:-96px -96px;}
+.ui-icon-suitcase{background-position:-112px -96px;}
+.ui-icon-comment{background-position:-128px -96px;}
+.ui-icon-person{background-position:-144px -96px;}
+.ui-icon-print{background-position:-160px -96px;}
+.ui-icon-trash{background-position:-176px -96px;}
+.ui-icon-locked{background-position:-192px -96px;}
+.ui-icon-unlocked{background-position:-208px -96px;}
+.ui-icon-bookmark{background-position:-224px -96px;}
+.ui-icon-tag{background-position:-240px -96px;}
+.ui-icon-home{background-position:0 -112px;}
+.ui-icon-flag{background-position:-16px -112px;}
+.ui-icon-calendar{background-position:-32px -112px;}
+.ui-icon-cart{background-position:-48px -112px;}
+.ui-icon-pencil{background-position:-64px -112px;}
+.ui-icon-clock{background-position:-80px -112px;}
+.ui-icon-disk{background-position:-96px -112px;}
+.ui-icon-calculator{background-position:-112px -112px;}
+.ui-icon-zoomin{background-position:-128px -112px;}
+.ui-icon-zoomout{background-position:-144px -112px;}
+.ui-icon-search{background-position:-160px -112px;}
+.ui-icon-wrench{background-position:-176px -112px;}
+.ui-icon-gear{background-position:-192px -112px;}
+.ui-icon-heart{background-position:-208px -112px;}
+.ui-icon-star{background-position:-224px -112px;}
+.ui-icon-link{background-position:-240px -112px;}
+.ui-icon-cancel{background-position:0 -128px;}
+.ui-icon-plus{background-position:-16px -128px;}
+.ui-icon-plusthick{background-position:-32px -128px;}
+.ui-icon-minus{background-position:-48px -128px;}
+.ui-icon-minusthick{background-position:-64px -128px;}
+.ui-icon-close{background-position:-80px -128px;}
+.ui-icon-closethick{background-position:-96px -128px;}
+.ui-icon-key{background-position:-112px -128px;}
+.ui-icon-lightbulb{background-position:-128px -128px;}
+.ui-icon-scissors{background-position:-144px -128px;}
+.ui-icon-clipboard{background-position:-160px -128px;}
+.ui-icon-copy{background-position:-176px -128px;}
+.ui-icon-contact{background-position:-192px -128px;}
+.ui-icon-image{background-position:-208px -128px;}
+.ui-icon-video{background-position:-224px -128px;}
+.ui-icon-script{background-position:-240px -128px;}
+.ui-icon-alert{background-position:0 -144px;}
+.ui-icon-info{background-position:-16px -144px;}
+.ui-icon-notice{background-position:-32px -144px;}
+.ui-icon-help{background-position:-48px -144px;}
+.ui-icon-check{background-position:-64px -144px;}
+.ui-icon-bullet{background-position:-80px -144px;}
+.ui-icon-radio-off{background-position:-96px -144px;}
+.ui-icon-radio-on{background-position:-112px -144px;}
+.ui-icon-pin-w{background-position:-128px -144px;}
+.ui-icon-pin-s{background-position:-144px -144px;}
+.ui-icon-play{background-position:0 -160px;}
+.ui-icon-pause{background-position:-16px -160px;}
+.ui-icon-seek-next{background-position:-32px -160px;}
+.ui-icon-seek-prev{background-position:-48px -160px;}
+.ui-icon-seek-end{background-position:-64px -160px;}
+.ui-icon-seek-start{background-position:-80px -160px;}
+.ui-icon-seek-first{background-position:-80px -160px;}
+.ui-icon-stop{background-position:-96px -160px;}
+.ui-icon-eject{background-position:-112px -160px;}
+.ui-icon-volume-off{background-position:-128px -160px;}
+.ui-icon-volume-on{background-position:-144px -160px;}
+.ui-icon-power{background-position:0 -176px;}
+.ui-icon-signal-diag{background-position:-16px -176px;}
+.ui-icon-signal{background-position:-32px -176px;}
+.ui-icon-battery-0{background-position:-48px -176px;}
+.ui-icon-battery-1{background-position:-64px -176px;}
+.ui-icon-battery-2{background-position:-80px -176px;}
+.ui-icon-battery-3{background-position:-96px -176px;}
+.ui-icon-circle-plus{background-position:0 -192px;}
+.ui-icon-circle-minus{background-position:-16px -192px;}
+.ui-icon-circle-close{background-position:-32px -192px;}
+.ui-icon-circle-triangle-e{background-position:-48px -192px;}
+.ui-icon-circle-triangle-s{background-position:-64px -192px;}
+.ui-icon-circle-triangle-w{background-position:-80px -192px;}
+.ui-icon-circle-triangle-n{background-position:-96px -192px;}
+.ui-icon-circle-arrow-e{background-position:-112px -192px;}
+.ui-icon-circle-arrow-s{background-position:-128px -192px;}
+.ui-icon-circle-arrow-w{background-position:-144px -192px;}
+.ui-icon-circle-arrow-n{background-position:-160px -192px;}
+.ui-icon-circle-zoomin{background-position:-176px -192px;}
+.ui-icon-circle-zoomout{background-position:-192px -192px;}
+.ui-icon-circle-check{background-position:-208px -192px;}
+.ui-icon-circlesmall-plus{background-position:0 -208px;}
+.ui-icon-circlesmall-minus{background-position:-16px -208px;}
+.ui-icon-circlesmall-close{background-position:-32px -208px;}
+.ui-icon-squaresmall-plus{background-position:-48px -208px;}
+.ui-icon-squaresmall-minus{background-position:-64px -208px;}
+.ui-icon-squaresmall-close{background-position:-80px -208px;}
+.ui-icon-grip-dotted-vertical{background-position:0 -224px;}
+.ui-icon-grip-dotted-horizontal{background-position:-16px -224px;}
+.ui-icon-grip-solid-vertical{background-position:-32px -224px;}
+.ui-icon-grip-solid-horizontal{background-position:-48px -224px;}
+.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px;}
+.ui-icon-grip-diagonal-se{background-position:-80px -224px;}
+.ui-corner-tl{-moz-border-radius-topleft:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;}
+.ui-corner-tr{-moz-border-radius-topright:6px;-webkit-border-top-right-radius:6px;border-top-right-radius:6px;}
+.ui-corner-bl{-moz-border-radius-bottomleft:6px;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;}
+.ui-corner-br{-moz-border-radius-bottomright:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;}
+.ui-corner-top{-moz-border-radius-topleft:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-topright:6px;-webkit-border-top-right-radius:6px;border-top-right-radius:6px;}
+.ui-corner-bottom{-moz-border-radius-bottomleft:6px;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-moz-border-radius-bottomright:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;}
+.ui-corner-right{-moz-border-radius-topright:6px;-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-moz-border-radius-bottomright:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;}
+.ui-corner-left{-moz-border-radius-topleft:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;}
+.ui-corner-all{-moz-border-radius:6px;-webkit-border-radius:6px;border-radius:6px;}
+.ui-widget-overlay{background:#aaaaaa url(images/ui-bg_flat_75_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.30;filter:Alpha(Opacity=30);}
+.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaaaaa url(images/ui-bg_flat_75_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.30;filter:Alpha(Opacity=30);-moz-border-radius:8px;-webkit-border-radius:8px;border-radius:8px;}
+.ui-tabs{position:relative;padding:.2em;zoom:1;}
+.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0;}
+.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:1px;margin:0 .2em 1px 0;border-bottom:0 !important;padding:0;white-space:nowrap;}
+.ui-tabs .ui-tabs-nav li a{float:left;padding:.5em 1em;text-decoration:none;}
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected{margin-bottom:0;padding-bottom:0px;}
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a{cursor:text;}
+.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a{cursor:pointer;}
+.ui-tabs .ui-tabs-panel{display:block;border:0;padding:1em 1.4em;background:none;}
+.ui-tabs .ui-tabs-hide{display:none !important;}
Index: tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-icons_c47a23_256x240.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-icons_c47a23_256x240.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-icons_c47a23_256x240.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-icons_c47a23_256x240.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-icons_c47a23_256x240.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-icons_ffffff_256x240.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-icons_ffffff_256x240.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-icons_ffffff_256x240.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-icons_ffffff_256x240.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-icons_ffffff_256x240.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_flat_75_aaaaaa_40x100.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_flat_75_aaaaaa_40x100.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_flat_75_aaaaaa_40x100.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_flat_75_aaaaaa_40x100.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_flat_75_aaaaaa_40x100.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_glass_25_cb842e_1x400.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_glass_25_cb842e_1x400.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_glass_25_cb842e_1x400.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_glass_25_cb842e_1x400.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_glass_25_cb842e_1x400.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-icons_cb672b_256x240.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-icons_cb672b_256x240.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-icons_cb672b_256x240.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-icons_cb672b_256x240.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-icons_cb672b_256x240.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_highlight-hard_100_f4f0ec_1x100.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_highlight-hard_100_f4f0ec_1x100.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_highlight-hard_100_f4f0ec_1x100.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_highlight-hard_100_f4f0ec_1x100.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_highlight-hard_100_f4f0ec_1x100.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_highlight-hard_75_f5f5b5_1x100.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_highlight-hard_75_f5f5b5_1x100.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_highlight-hard_75_f5f5b5_1x100.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_highlight-hard_75_f5f5b5_1x100.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_highlight-hard_75_f5f5b5_1x100.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_glass_70_ede4d4_1x400.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_glass_70_ede4d4_1x400.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_glass_70_ede4d4_1x400.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_glass_70_ede4d4_1x400.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_glass_70_ede4d4_1x400.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-icons_f35f07_256x240.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-icons_f35f07_256x240.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-icons_f35f07_256x240.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-icons_f35f07_256x240.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-icons_f35f07_256x240.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-icons_f08000_256x240.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-icons_f08000_256x240.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-icons_f08000_256x240.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-icons_f08000_256x240.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-icons_f08000_256x240.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_inset-soft_100_f4f0ec_1x100.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_inset-soft_100_f4f0ec_1x100.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_inset-soft_100_f4f0ec_1x100.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_inset-soft_100_f4f0ec_1x100.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_inset-soft_100_f4f0ec_1x100.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-icons_ff7519_256x240.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-icons_ff7519_256x240.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-icons_ff7519_256x240.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-icons_ff7519_256x240.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-icons_ff7519_256x240.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_glass_100_f5f0e5_1x400.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_glass_100_f5f0e5_1x400.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_glass_100_f5f0e5_1x400.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_glass_100_f5f0e5_1x400.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_glass_100_f5f0e5_1x400.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_highlight-hard_65_fee4bd_1x100.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_highlight-hard_65_fee4bd_1x100.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_highlight-hard_65_fee4bd_1x100.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_highlight-hard_65_fee4bd_1x100.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/css/humanity/images/ui-bg_highlight-hard_65_fee4bd_1x100.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-icons_222222_256x240.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-icons_222222_256x240.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-icons_222222_256x240.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-icons_222222_256x240.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-icons_222222_256x240.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_inset-soft_25_000000_1x100.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_inset-soft_25_000000_1x100.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_inset-soft_25_000000_1x100.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_inset-soft_25_000000_1x100.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_inset-soft_25_000000_1x100.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_glass_40_0078a3_1x400.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_glass_40_0078a3_1x400.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_glass_40_0078a3_1x400.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_glass_40_0078a3_1x400.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_glass_40_0078a3_1x400.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_gloss-wave_25_333333_500x100.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_gloss-wave_25_333333_500x100.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_gloss-wave_25_333333_500x100.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_gloss-wave_25_333333_500x100.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_gloss-wave_25_333333_500x100.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-icons_a83300_256x240.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-icons_a83300_256x240.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-icons_a83300_256x240.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-icons_a83300_256x240.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-icons_a83300_256x240.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_inset-soft_30_f58400_1x100.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_inset-soft_30_f58400_1x100.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_inset-soft_30_f58400_1x100.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_inset-soft_30_f58400_1x100.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_inset-soft_30_f58400_1x100.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_flat_50_5c5c5c_40x100.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_flat_50_5c5c5c_40x100.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_flat_50_5c5c5c_40x100.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_flat_50_5c5c5c_40x100.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_flat_50_5c5c5c_40x100.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_highlight-soft_80_eeeeee_1x100.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_highlight-soft_80_eeeeee_1x100.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_highlight-soft_80_eeeeee_1x100.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_highlight-soft_80_eeeeee_1x100.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_highlight-soft_80_eeeeee_1x100.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-icons_cccccc_256x240.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-icons_cccccc_256x240.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-icons_cccccc_256x240.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-icons_cccccc_256x240.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-icons_cccccc_256x240.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-icons_ffffff_256x240.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-icons_ffffff_256x240.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-icons_ffffff_256x240.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-icons_ffffff_256x240.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-icons_ffffff_256x240.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-icons_4b8e0b_256x240.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-icons_4b8e0b_256x240.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-icons_4b8e0b_256x240.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-icons_4b8e0b_256x240.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-icons_4b8e0b_256x240.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_glass_20_555555_1x400.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_glass_20_555555_1x400.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_glass_20_555555_1x400.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_glass_20_555555_1x400.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_glass_20_555555_1x400.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_glass_40_ffc73d_1x400.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_glass_40_ffc73d_1x400.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_glass_40_ffc73d_1x400.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_glass_40_ffc73d_1x400.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_glass_40_ffc73d_1x400.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_flat_30_cccccc_40x100.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_flat_30_cccccc_40x100.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_flat_30_cccccc_40x100.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_flat_30_cccccc_40x100.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/images/ui-bg_flat_30_cccccc_40x100.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/jquery-ui-1.8.custom.css
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/jquery-ui-1.8.custom.css (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/jquery-ui-1.8.custom.css (revision 280)
@@ -0,0 +1,296 @@
+/*
+* jQuery UI CSS Framework
+* Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
+*/
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden { display: none; }
+.ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+.ui-helper-clearfix { display: inline-block; }
+/* required comment for clearfix to work in Opera \*/
+* html .ui-helper-clearfix { height:1%; }
+.ui-helper-clearfix { display:block; }
+/* end clearfix */
+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+* jQuery UI CSS Framework
+* Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
+* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Segoe%20UI,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=333333&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=25&borderColorHeader=333333&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=000000&bgTextureContent=05_inset_soft.png&bgImgOpacityContent=25&borderColorContent=666666&fcContent=ffffff&iconColorContent=cccccc&bgColorDefault=555555&bgTextureDefault=02_glass.png&bgImgOpacityDefault=20&borderColorDefault=666666&fcDefault=eeeeee&iconColorDefault=cccccc&bgColorHover=0078a3&bgTextureHover=02_glass.png&bgImgOpacityHover=40&borderColorHover=59b4d4&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=f58400&bgTextureActive=05_inset_soft.png&bgImgOpacityActive=30&borderColorActive=ffaf0f&fcActive=ffffff&iconColorActive=222222&bgColorHighlight=eeeeee&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=80&borderColorHighlight=cccccc&fcHighlight=2e7db2&iconColorHighlight=4b8e0b&bgColorError=ffc73d&bgTextureError=02_glass.png&bgImgOpacityError=40&borderColorError=ffb73d&fcError=111111&iconColorError=a83300&bgColorOverlay=5c5c5c&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=50&opacityOverlay=80&bgColorShadow=cccccc&bgTextureShadow=01_flat.png&bgImgOpacityShadow=30&opacityShadow=60&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px
+*/
+
+
+/* Component containers
+----------------------------------*/
+.ui-widget { font-family: Segoe UI, Arial, sans-serif; font-size: 1.1em; }
+.ui-widget .ui-widget { font-size: 1em; }
+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Segoe UI, Arial, sans-serif; font-size: 1em; }
+.ui-widget-content { border: 1px solid #666666; background: #000000 url(images/ui-bg_inset-soft_25_000000_1x100.png) 50% bottom repeat-x; color: #ffffff; }
+.ui-widget-content a { color: #ffffff; }
+.ui-widget-header { border: 1px solid #333333; background: #333333 url(images/ui-bg_gloss-wave_25_333333_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
+.ui-widget-header a { color: #ffffff; }
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default, .ui-widget-content .ui-state-default { border: 1px solid #666666; background: #555555 url(images/ui-bg_glass_20_555555_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eeeeee; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #eeeeee; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus { border: 1px solid #59b4d4; background: #0078a3 url(images/ui-bg_glass_40_0078a3_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #ffffff; }
+.ui-state-hover a, .ui-state-hover a:hover { color: #ffffff; text-decoration: none; }
+.ui-state-active, .ui-widget-content .ui-state-active { border: 1px solid #ffaf0f; background: #f58400 url(images/ui-bg_inset-soft_30_f58400_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #ffffff; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #ffffff; text-decoration: none; }
+.ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight, .ui-widget-content .ui-state-highlight {border: 1px solid #cccccc; background: #eeeeee url(images/ui-bg_highlight-soft_80_eeeeee_1x100.png) 50% top repeat-x; color: #2e7db2; }
+.ui-state-highlight a, .ui-widget-content .ui-state-highlight a { color: #2e7db2; }
+.ui-state-error, .ui-widget-content .ui-state-error {border: 1px solid #ffb73d; background: #ffc73d url(images/ui-bg_glass_40_ffc73d_1x400.png) 50% 50% repeat-x; color: #111111; }
+.ui-state-error a, .ui-widget-content .ui-state-error a { color: #111111; }
+.ui-state-error-text, .ui-widget-content .ui-state-error-text { color: #111111; }
+.ui-priority-primary, .ui-widget-content .ui-priority-primary { font-weight: bold; }
+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.ui-state-disabled, .ui-widget-content .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_cccccc_256x240.png); }
+.ui-widget-content .ui-icon {background-image: url(images/ui-icons_cccccc_256x240.png); }
+.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
+.ui-state-default .ui-icon { background-image: url(images/ui-icons_cccccc_256x240.png); }
+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
+.ui-state-active .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_4b8e0b_256x240.png); }
+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_a83300_256x240.png); }
+
+/* positioning */
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-off { background-position: -96px -144px; }
+.ui-icon-radio-on { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.ui-corner-tl { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px; }
+.ui-corner-tr { -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px; }
+.ui-corner-bl { -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; }
+.ui-corner-br { -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; }
+.ui-corner-top { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px; }
+.ui-corner-bottom { -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; }
+.ui-corner-right { -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px; -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; }
+.ui-corner-left { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px; -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; }
+.ui-corner-all { -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px; }
+
+/* Overlays */
+.ui-widget-overlay { background: #5c5c5c url(images/ui-bg_flat_50_5c5c5c_40x100.png) 50% 50% repeat-x; opacity: .80;filter:Alpha(Opacity=80); }
+.ui-widget-shadow { margin: -7px 0 0 -7px; padding: 7px; background: #cccccc url(images/ui-bg_flat_30_cccccc_40x100.png) 50% 50% repeat-x; opacity: .60;filter:Alpha(Opacity=60); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/* Tabs
+----------------------------------*/
+.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.ui-tabs .ui-tabs-panel { display: block; border: 0; padding: 1em 1.4em; background: none; }
+.ui-tabs .ui-tabs-hide { display: none !important; }
/tags/v1.13-la-grande-rue/squelettes/css/ui-darkness/jquery-ui-1.8.custom.css
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/fiche_personne.tpl.html
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/fiche_personne.tpl.html (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/fiche_personne.tpl.html (revision 280)
@@ -0,0 +1,212 @@
+<!-- COL - DEBUT FICHE PERSONNE -->
+<script type="text/javascript">
+ var jq = jQuery.noConflict();
+ jq(document).ready(function() {
+ jq("#col-per").tabs({
+ cookie: {expires: 1}// Stocke un cookie pour 1 jour
+ });
+ });
+</script>
+<div class="coel-consultation">
+ <h1><?=$info['cp_fmt_nom_complet']?> <span class="discretion">(id:<?=$id?>)</span></h1>
+ <hr class="nettoyeur"/>
+ <div id="col-per" class="col-onglets">
+ <ul class="col-sommaire">
+ <li><a href="#col-per-general">Général</a></li>
+ <li><a href="#col-per-adresse">Adresses</a></li>
+ <li><a href="#col-per-info-nat">Informations naturalistes</a></li>
+ <li><a href="#col-per-publication">Publications liées</a></li>
+ <li><a href="#col-per-collection">Collections liées</a></li>
+ <li><a href="#col-per-institution">Institutions liées</a></li>
+ <li><a href="#col-per-image">Images</a></li>
+ <li><a href="#col-per-meta">Méta-données</a></li>
+ </ul>
+
+ <div id="col-per-general">
+ <h2>Général</h2>
+ <h3>Identité</h3>
+ <div style="width:100%;">
+ <?php if ($info['_image_principale_url_'] != '&nbsp;') : ?>
+ <img style="background-color:#FFF;float:left;margin-right:.3em;padding:0.3em;" src="<?=$info['_image_principale_url_']?>" alt="Illustration de l'auteur"/>
+ <?php endif; ?>
+
+ <dl class="label-court" style="float:left;width:40%;">
+ <dt>Préfixe</dt> <dd><?=$info['_prefixe_']?></dd>
+ <dt>Prénom</dt> <dd><?=$info['cp_prenom']?></dd>
+ <dt>Nom</dt> <dd><?=$info['cp_nom']?></dd>
+ <dt>Suffixe</dt> <dd><?=$info['_suffixe_']?></dd>
+ <dt>Autres noms</dt> <dd><?=$info['_autre_noms_']?></dd>
+ <dt>Abréviation</dt> <dd><?=$info['cp_abreviation']?></dd>
+ <dt>Autres abréviations</dt> <dd><?=$info['_autre_abreviations_']?></dd>
+ <dt>Sexe</dt> <dd><?=$info['_sexe_']?></dd>
+ </dl>
+ </div>
+ <h3>Description</h3>
+ <p class="txt-long"><?=$info['cp_description']?></p>
+
+ <h3>Naissance &amp; décès</h3>
+ <dl class="label-court">
+ <dt>Date de naissance</dt> <dd><?=$info['_naissance_date_']?></dd>
+ <dt>Lieu de naissance</dt> <dd><?=$info['cp_naissance_lieu']?></dd>
+ <dt>Est décédée?</dt> <dd><?=$info['_deces_']?></dd>
+ <dt>Date de décès</dt> <dd><?=$info['_deces_date_']?></dd>
+ <dt>Lieu de décès</dt> <dd><?=$info['cp_deces_lieu']?></dd>
+ </dl>
+
+ <h3>Contact</h3>
+ <dl class="label-court">
+ <dt>Téléphones</dt> <dd><?=$info['_telephones_']?></dd>
+ <dt>Courriels</dt> <dd><?=$info['_courriels_']?></dd>
+ <dt>Sites web</dt>
+ <dd>
+ <?php if (($nbre_url = count($info['_sites_web_'])) > 0) : ?>
+ <?php while (list($i, $url) = each($info['_sites_web_'])) : ?>
+ <a class="lien_ext" href="<?=$url?>"><?=$url?></a><?=(($nbre_url - 1) == $i) ? '.' : ', ';?>
+ <?php endwhile; ?>
+ <?php else : ?>
+ &nbsp;
+ <?php endif; ?>
+ </dd>
+ </dl>
+
+ <hr class="nettoyeur"/>
+ </div>
+
+ <div id="col-per-adresse">
+ <h2>Adresses</h2>
+ <dl class="label-court">
+ <dt>Adresse</dt> <dd><?=$info['cp_adresse_01']?></dd>
+ <dt>Boite postale</dt> <dd><?=$info['cp_bp']?></dd>
+ <dt>Code postal</dt> <dd><?=$info['cp_code_postal']?></dd>
+ <dt>Ville</dt> <dd><?=$info['cp_ville']?></dd>
+ <dt>Pays</dt> <dd><?=$info['_pays_']?></dd>
+ </dl>
+ <hr class="nettoyeur"/>
+ </div>
+
+ <div id="col-per-info-nat">
+ <h2>Informations naturalistes</h2>
+ <h3>Vie et renommée de l'auteur</h3>
+ <p class="txt-long"><?=$info['cp_biographie']?></p>
+ <h3>Spécialité(s)</h3>
+ <p class="txt-long"><?=$info['_specialites_']?></p>
+ <h3>Récolte(s)</h3>
+ <p class="txt-long"><?=$info['_recoltes_']?></p>
+ <hr class="nettoyeur"/>
+ </div>
+
+ <div id="col-per-publication">
+ <h2>Publications liées</h2>
+ <?php if (count($publications) > 0) : ?>
+ <?=$publicationsFrag?>
+ <table>
+ <thead>
+ <tr>
+ <th>Relation</th>
+ <th>Auteurs</th>
+ <th>Titre</th>
+ <th>Nom de la revue / collection</th>
+ <th>Éditeur</th>
+ <th>Année</th>
+ <th>Série / Tome</th>
+ <th>Fascicule</th>
+ <th>Page(s)</th>
+ </tr>
+ </thead>
+ <tbody>
+ <?php foreach ($publications as $publication) : ?>
+ <tr>
+ <td><?=$publication['_role_']?></td>
+ <td><?=$publication['cpu_fmt_auteur']?></td>
+ <td><?=$publication['cpu_titre']?></td>
+ <td><?=$publication['cpu_collection']?></td>
+ <td><?=$publication['_editeur_']?></td>
+ <td><?=$publication['_date_parution_']?></td>
+ <td><?=$publication['cpu_indication_nvt']?></td>
+ <td><?=$publication['cpu_fascicule']?></td>
+ <td><?=$publication['cpu_truk_pages']?></td>
+ </tr>
+ <?php endforeach; ?>
+ </tbody>
+ </table>
+ <?php else : ?>
+ <p>Aucune</p>
+ <?php endif; ?>
+ <hr class="nettoyeur"/>
+ </div>
+
+ <div id="col-per-collection">
+ <h2>Collections liées</h2>
+ <?php if (count($collections) > 0) : ?>
+ <?=$collectionsFrag?>
+ <table>
+ <thead>
+ <tr>
+ <th>Collection</th>
+ <th>Relation</th>
+ </tr>
+ </thead>
+ <tbody>
+ <?php foreach ($collections as $collection) : ?>
+ <tr>
+ <td><a href="<?=$collection['_url_']?>" title="Accèder à la fiche de la collection"><?=$collection['cc_nom']?></a></td>
+ <td><?=$collection['_role_']?></td>
+ </tr>
+ <?php endforeach; ?>
+ </tbody>
+ </table>
+ <?php else : ?>
+ <p>Aucune</p>
+ <?php endif; ?>
+ <hr class="nettoyeur"/>
+ </div>
+
+ <div id="col-per-institution">
+ <h2>Institution liées</h2>
+ <?php if (count($structures) > 0) : ?>
+ <?=$structuresFrag?>
+ <table>
+ <thead>
+ <tr>
+ <th>Structure</th>
+ <th>Fonction</th>
+ <th>Statut</th>
+ </tr>
+ </thead>
+ <tbody>
+ <?php foreach ($structures as $structure) : ?>
+ <tr>
+ <td><a href="<?=$structure['_url_']?>" title="Accèder à la fiche de l'institution"><?=$structure['cs_nom']?></a></td>
+ <td><?=$structure['_fonction_']?></td>
+ <td><?=$structure['_statut_']?></td>
+ </tr>
+ <?php endforeach; ?>
+ </tbody>
+ </table>
+ <?php else : ?>
+ <p>Aucune</p>
+ <?php endif; ?>
+ <hr class="nettoyeur"/>
+ </div>
+
+ <div id="col-per-image">
+ <h2>Images</h2>
+ <?php if (count($info['_logos_']) > 0) : ?>
+ <ul class="gallerie">
+ <?php foreach ($info['_logos_'] as $url_logo) : ?>
+ <li><img src="<?=$url_logo?>" alt="<?=$url_logo?>"/></li>
+ <?php endforeach; ?>
+ </ul>
+ <hr class="nettoyeur"/>
+ <?php else : ?>
+ <p>Aucune</p>
+ <?php endif; ?>
+ </div>
+
+ <div id="col-per-meta">
+ <?=$metadonnees?>
+ </div>
+
+ </div>
+</div>
+<!-- COL - FIN FICHE PERSONNE -->
\ No newline at end of file
/tags/v1.13-la-grande-rue/squelettes/fiche_personne.tpl.html
Property changes:
Added: svnkit:entry:sha1-checksum
## -0,0 +1 ##
+c972b6a7ce325a66228c5ba38805a81fe681edb4
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/moteur_publications.tpl.html
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/moteur_publications.tpl.html (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/moteur_publications.tpl.html (revision 280)
@@ -0,0 +1,119 @@
+<!-- COL - DEBUT MOTEUR RECHERCHE PUBLICATIONS -->
+<script type="text/javascript">
+ var jq = jQuery.noConflict();
+ // Function pour cacher / afficher les options de recherche
+ jq(document).ready(function() {
+ jq("#col-rech-opt-toggle").html("Afficher les options de recherche");
+ jq("#col-rech-opt").hide();
+ jq("#col-rech-opt-toggle").toggle(
+ function() {
+ jq("#col-rech-opt-toggle").html("Cacher les options de recherche");
+ jq("#col-rech-opt").slideDown("fast");
+ },
+ function() {
+ jq("#col-rech-opt-toggle").html("Afficher les options de recherche");
+ jq("#col-rech-opt").slideUp("fast");
+ }
+ );
+ // Rechargement des options sélectionnées dans les select
+ jq('#col-form select').each(function() {
+ var optionSelectionnee = jq(this).attr('data-option-selectionnee');
+ jq(this).find('option[value="' + optionSelectionnee + '"]').attr('selected', 'selected');
+ });
+ });
+</script>
+
+<div class="coel-consultation">
+ <h2 id="rechercher-parmi-publications" class="titre-moteur-recherche">Rechercher une publication</h2>
+
+ <form id="pub-form" name="col-form" action="<?=$url_form;?>" method="get">
+
+ <input name="module" type="hidden" value="<?=$url_module;?>" />
+ <input name="action" type="hidden" value="<?=$url_action;?>" />
+ <?php if (isset($url_contexte)) : ?>
+ <input name="contexte" type="hidden" value="<?=$url_contexte;?>" />
+ <?php endif; ?>
+
+ <div id="col-rech-masque">
+ <div class="champ-masque long">
+ <label class="label-gauche">Recherche libre</label>
+ <input class="long" name="masque[libre]" value="<?= htmlspecialchars($masque['libre']) ?>" />
+ </div>
+ <div class="champ-masque" title="Titre">
+ <label class="label-gauche">Titre</label>
+ <input name="masque[titre]" type="text" value="<?= htmlspecialchars($masque['titre']) ?>" />
+ </div>
+ <div class="champ-masque" title="Auteur">
+ <label class="label-droite">Auteur</label>
+ <input name="masque[auteur]" type="text" value="<?= htmlspecialchars($masque['auteur']) ?>" />
+ </div>
+ <div class="champ-masque" title="Date">
+ <label class="label-gauche">Date</label>
+ <input name="masque[date]" type="text" value="<?= $masque['date'] ?>" />
+ </div>
+ <div class="champ-masque">
+ <label class="label-droite">Nom de l'ouvrage</label>
+ <input name="masque[ouvrage]" value="<?= htmlspecialchars($masque['ouvrage']) ?>" />
+ </div>
+ </div>
+
+ <input class="button" id="pub-rech-ok" type="submit" value="OK" />
+ </form>
+
+ <br/>
+ <a id="col-rech-opt-toggle" href="#col-rech-opt-txt" title="Précisions sur les options de recherche"></a>
+
+ <div id="col-rech-opt">
+ <h2 id="col-rech-opt-titre">Options de recherche</h2>
+ <div id="col-rech-opt-txt">
+ <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>Pour les opérateurs dont la valeur est un <em>texte libre</em> ou une <em>liste</em>,
+ il est possible d'utiliser des jokers.
+ Ces "jokers" permettent de modifier la recherche.
+ </p>
+ <table>
+ <thead>
+ <tr>
+ <th>Joker</th>
+ <th>Applicable sur</th>
+ <th>Explication</th>
+ <!-- <th>Exemples</th> -->
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>""</td>
+ <td>Texte libre</td>
+ <td>Permet de rechercher sur une expression exacte.</td>
+ <!-- <td><a href="<?=Recherche::getUrlExemple('"Archives de l\'herbier Granger"')?>">
+ "Archives de l'herbier Granger"</a></td> -->
+ </tr>
+ <tr>
+ <td>%</td>
+ <td>Texte libre</td>
+ <td>Remplace n'importe quel nombre de caractères, y compris aucun.</td>
+ <!-- <td><a href="<?=Recherche::getUrlExemple('"herbier %Abbé% Carondelet"')?>">
+ "herbier %Abbé% Carondelet"</a></td> -->
+ </tr>
+ <tr>
+ <td>_</td>
+ <td>Texte libre</td>
+ <td>Remplace exactement un caractère</td>
+ <!-- <td><a href="<?=Recherche::getUrlExemple('p:"Jo_l"')?>">p:"Jo_l"</a></td> -->
+ </tr>
+ <tr>
+ <td>,</td>
+ <td>Liste</td>
+ <td>Permet d'indiquer plusieurs valeurs</td>
+ <!-- <td><a href="<?=Recherche::getUrlExemple('veg:br,ph')?>">veg:br,ph</a></td> -->
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+</div>
+<!-- COL - FIN MOTEUR RECHERCHE PUBLICATIONS -->
\ No newline at end of file
Index: tags/v1.13-la-grande-rue/squelettes/fiche_collection.tpl.html
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/fiche_collection.tpl.html (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/fiche_collection.tpl.html (revision 280)
@@ -0,0 +1,285 @@
+<!-- COL - DEBUT FICHE COLLECTION -->
+<script type="text/javascript">
+ var jq = jQuery.noConflict();
+ jq(document).ready(function() {
+ jq("#col-col").tabs({
+ cookie: {expires: 1}// Stocke un cookie pour 1 jour
+ });
+ });
+</script>
+<div class="coel-consultation">
+ <h1><?=$info['cc_nom']?> <span class="discretion">(id:<?=$id?>)</span></h1>
+ <dl>
+ <dt>Structure</dt> <dd><a href="<?=$info['_structure_url_']?>"><?=$info['_structure_nom_']?></a></dd>
+ <dt>Ville</dt> <dd><?=$info['_structure_ville_']?></dd>
+ </dl>
+ <hr class="nettoyeur"/>
+ <div id="col-col" class="col-onglets">
+ <div class="col-sommaire">
+ <ul >
+ <li><a href="#col-col-general">Général</a></li>
+ <li><a href="#col-col-personne">Personnes</a></li>
+ <li><a href="#col-col-publication">Publications</a></li>
+ <li><a href="#col-col-description">Description</a></li>
+ <li><a href="#col-col-contenu">Contenu</a></li>
+ <li><a href="#col-col-inventaire">Inventaire</a></li>
+ <li><a href="#col-col-note">Notes</a></li>
+ <li><a href="#col-col-meta">Méta-données</a></li>
+ <a href="http://www.tela-botanica.org/appli:coel#Collections" target="_blank" style="float:right">Modifier</a>
+ </ul></div>
+
+ <div id="col-col-general">
+ <h2>Général</h2>
+ <h3>Intitulés, statut et codes</h3>
+ <dl>
+ <dt>Autres intitulés</dt> <dd><?=$info['_nom_alternatif_']?></dd>
+ <dt>À pour collection parente</dt> <dd><?=$info['_collection_mere_nom_']?> <?php if ($info['cc_ce_mere'] != '0') : ?><span class="discretion">(id:<?=$info['cc_ce_mere']?>)</span><?php endif; ?></dd>
+ <dt>Type de collection</dt> <dd><?=$info['_type_ncd_']?></dd>
+ <dt>Statut</dt> <dd><?=$info['_type_depot_']?></dd>
+ <dt>Acronymes</dt> <dd><?=$info['_code_']?></dd>
+ <dt>Cote</dt> <dd><?=$info['cc_cote']?></dd>
+ </dl>
+
+ <h3>Description</h3>
+ <dl>
+ <dt>Description</dt> <dd class="txt-long"><?=$info['cc_description']?></dd>
+ <dt>Historique</dt> <dd class="txt-long"><?=$info['cc_historique']?></dd>
+ <dt>Site web</dt> <dd><?=$info['_url_']?></dd>
+ </dl>
+
+ <h3>Spécimens «types»</h3>
+ <dl>
+ <dt>Présence</dt> <dd><?=$info['_specimen_type_']?></dd>
+ <dt>Nombre</dt> <dd><?=$info['_specimen_type_nbre_']?> <?=$info['_specimen_type_nbre_precision_']?></dd>
+ <dt>Classement</dt> <dd><?=$info['_specimen_type_classement_']?></dd>
+ </dl>
+
+ <h3>Couvertures</h3>
+ <dl>
+ <dt>Lieux concernés</dt> <dd><?=$info['_couverture_lieu_']?></dd>
+ <dt>Période de constitution</dt> <dd><?=$info['_couverture_periode_']?></dd>
+ </dl>
+ <hr class="nettoyeur"/>
+ </div>
+
+ <div id="col-col-personne">
+ <h2>Personnes</h2>
+ <h3>Personne(s) liées à la collection</h3>
+ <?php if (count($personnes) > 0) : ?>
+ <?=$personnesFrag;?>
+ <table>
+ <thead>
+ <tr>
+ <th>Relation</th>
+ <th>Nom Complet</th>
+ <th>Nom</th>
+ <th>Prénom</th>
+ <th>Date de naissance</th>
+ <th>Lieu de naissance</th>
+ <th>Décès</th>
+ <th>Date de décès</th>
+ <th>Lieu de décès</th>
+ </tr>
+ </thead>
+ <tbody>
+ <?php foreach ($personnes as $personne) : ?>
+ <tr>
+ <td><?=$personne['_role_']?></td>
+ <td><a href="<?=$personne['_url_']?>" title="Accèder à la fiche de la personne"><?=$personne['cp_fmt_nom_complet']?></a></td>
+ <td><?=$personne['cp_nom']?></td>
+ <td><?=$personne['cp_prenom']?></td>
+ <td><?=$personne['_naissance_date_']?></td>
+ <td><?=$personne['cp_naissance_lieu']?></td>
+ <td><?=$personne['_deces_']?></td>
+ <td><?=$personne['_deces_date_']?></td>
+ <td><?=$personne['cp_deces_lieu']?></td>
+ </tr>
+ <?php endforeach; ?>
+ </tbody>
+ </table>
+ <?php else : ?>
+ <p>Aucune</p>
+ <?php endif; ?>
+ </div>
+
+ <div id="col-col-publication">
+ <h2>Publications</h2>
+ <h3>Publication(s) de la collection</h3>
+ <?php if (count($publications) > 0) : ?>
+ <?=$publicationsFrag;?>
+ <table>
+ <thead>
+ <tr>
+ <th>Auteurs</th>
+ <th>Titre</th>
+ <th>Nom de la revue / collection</th>
+ <th>Éditeur</th>
+ <th>Année</th>
+ <th>Série / Tome</th>
+ <th>Fascicule</th>
+ <th>Page(s)</th>
+ <th>Source</th>
+ </tr>
+ </thead>
+ <tbody>
+ <?php foreach ($publications as $publication) : ?>
+ <tr>
+ <td><?=$publication['cpu_fmt_auteur']?></td>
+ <td><?=$publication['cpu_titre']?></td>
+ <td><?=$publication['cpu_collection']?></td>
+ <td><?=$publication['_editeur_']?></td>
+ <td><?=$publication['_date_parution_']?></td>
+ <td><?=$publication['cpu_indication_nvt']?></td>
+ <td><?=$publication['cpu_fascicule']?></td>
+ <td><?=$publication['cpu_truk_pages']?></td>
+ <td><?=$publication['ccapu_source']?></td>
+ </tr>
+ <?php endforeach; ?>
+ </tbody>
+ </table>
+ <?php else : ?>
+ <p>Aucune</p>
+ <?php endif; ?>
+ </div>
+
+ <div id="col-col-description">
+ <h2>Description</h2>
+ <h3>Description et état de la collection</h3>
+ <dl class="label-grand">
+ <dt>Type d'herbier</dt> <dd><?=$info['_type_']?></dd>
+ <dt>Nombre de cartons ou liasses échantillonnés</dt> <dd><?=$info['ccb_nbre_echantillon']?></dd>
+ </dl>
+
+ <h3>Types d'unité de rangement de la collection botanique</h3>
+ <dl class="label-grand">
+ <dt>État général</dt> <dd><?=$info['_unite_rangement_etat_']?>&nbsp;</dd>
+ <dt>Cartons</dt> <dd><?=$info['_cartons_']?>&nbsp;</dd>
+ <dt>Liasses</dt> <dd><?=$info['_liasses_']?>&nbsp;</dd>
+ <dt>Autres unités de rangement</dt> <dd><?=$info['_autres_rangements_']?>&nbsp;</dd>
+ </dl>
+ <hr class="nettoyeur"/>
+
+
+ <h3>Types d'unité de base de la collection si différent de l'unité de rangement</h3>
+ <dl class="label-grand">
+ <dt>Planches d'herbier</dt> <dd><?=$info['_nb_planches_herbier_']?>&nbsp;</dd>
+ <dt>Nombre d'espèces</dt> <dd><?=$info['_nb_especes_']?>&nbsp;</dd>
+ </dl>
+ <hr class="nettoyeur"/>
+
+ <h3>Conservation</h3>
+ <dl>
+ <dt>Type de papier</dt> <dd><?=$info['_conservation_papier_type_']?></dd>
+ <dt>Méthode</dt> <dd><?=$info['_conservation_methode_']?></dd>
+ </dl>
+
+ <h3>Étiquettes</h3>
+ <dl class="label-grand">
+ <dt>% de spécimen fixés</dt> <dd><?=$info['ccb_specimen_fixation_pourcent']?>%</dd>
+ <dt>% d'étiquettes fixées</dt> <dd><?=$info['ccb_etiquette_fixation_pourcent']?>%</dd>
+ <dt>Méthode de fixation du spécimen</dt> <dd><?=$info['_specimen_fixation_methode_']?></dd>
+ <dt>Méthode de fixation des étiquettes au support</dt> <dd><?=$info['_etiquette_fixation_support_']?></dd>
+ <dt>Méthode de fixation des étiquettes au spécimen</dt> <dd><?=$info['_etiquette_fixation_specimen_']?></dd>
+ <dt>Type d'écriture des étiquettes</dt> <dd><?=$info['_etiquette_ecriture_']?></dd>
+ </dl>
+
+ <h3>Traitements</h3>
+ <dl>
+ <dt>Traitement</dt> <dd><?=$info['_traitement_']?></dd>
+ <dt>Empoisonnement</dt> <dd><?=$info['_traitement_poison_']?></dd>
+ <dt>Pesticide</dt> <dd><?=$info['_traitement_insecte_']?></dd>
+ </dl>
+
+ <h3>État général et dégradation</h3>
+ <dl class="label-grand">
+ <dt>État général</dt> <dd><?=$info['_etat_general_']?></dd>
+ <dt>Causes de dégradation des spécimens</dt> <dd><?=$info['_degradation_specimen_']?></dd>
+ <dt>Causes de dégradation de la présentation</dt> <dd><?=$info['_degradation_presentation_']?></dd>
+ <dt>Détermination des échantillons</dt> <dd><?=$info['_determination_']?></dd>
+ </dl>
+ <hr class="nettoyeur"/>
+ </div>
+
+ <div id="col-col-contenu">
+ <h2>Contenu</h2>
+ <h3>Nature</h3>
+ <dl>
+ <dt>Nature de la collection</dt> <dd><?=$info['_nature_']?></dd>
+ <dt>Collection spécialisée</dt> <dd><?=$info['ccb_specialite']?></dd>
+ </dl>
+
+ <h3>Classement</h3>
+ <dl>
+ <dt>État du classement</dt> <dd><?=$info['_classement_etat_']?></dd>
+ <dt>Principe de classement</dt> <dd><?=$info['ccb_annotation_classement']?></dd>
+ </dl>
+
+ <h3>Étiquette</h3>
+ <dl>
+ <dt>Renseignements</dt> <dd><?=$info['_etiquette_renseignement_']?></dd>
+ <dt>Localités précises</dt> <dd><?=$info['_precision_localite_']?></dd>
+ <dt>Dates précises</dt> <dd><?=$info['_precision_date_']?></dd>
+ <dt>Annotations</dt> <dd><?=$info['ccb_annotation_diverse']?></dd>
+ </dl>
+
+ <h3>Collections intégrées</h3>
+ <dl class="label-grand">
+ <dt>Intégration de collection antérieures</dt> <dd><?=$info['_collection_integre_']?></dd>
+ <dt>Nom de la collection sur les étiquettes</dt> <dd><?=$info['_collection_integre_info_']?></dd>
+ </dl>
+ <hr class="nettoyeur"/>
+ </div>
+
+ <div id="col-col-inventaire">
+ <h2>Inventaire</h2>
+ <h3>Inventaire (autre que celui de l'auteur)</h3>
+ <dl>
+ <dt>Existence inventaire</dt> <dd><?=$info['_inventaire_']?></dd>
+ <dt>Participation de l'auteur</dt> <dd><?=$info['_inventaire_auteur_']?></dd>
+ <dt>Forme de l'inventaire</dt> <dd><?=$info['_inventaire_forme_']?></dd>
+ <dt>Informations disponibles</dt> <dd><?=$info['ccb_inventaire_info']?></dd>
+ <dt>Logiciel utilisé</dt> <dd><?=$info['_inventaire_digital_']?></dd>
+ <dt>% en base de données</dt> <dd><?=$info['ccb_inventaire_digital_pourcent']?>%</dd>
+ <dt>État inventaire</dt> <dd><?=$info['_inventaire_etat_']?></dd>
+ </dl>
+ <hr class="nettoyeur"/>
+ </div>
+
+ <div id="col-col-note">
+ <h2>Notes</h2>
+ <h3>Notes liées à la collection</h3>
+ <?php if (count($commentaires) > 0) : ?>
+ <?=$commentairesFrag;?>
+ <table>
+ <thead>
+ <tr>
+ <th>Type</th>
+ <th>Titre</th>
+ <th>Importance</th>
+ </tr>
+ </thead>
+ <tbody>
+ <?php foreach ($commentaires as $commentaire) : ?>
+ <tr>
+ <td><?=$commentaire['_type_']?></td>
+ <td><?=$commentaire['ccm_titre']?></td>
+ <td><?=$commentaire['ccm_ponderation']?></td>
+ </tr>
+ <tr>
+ <td colspan="3"><?=$commentaire['ccm_texte']?></td>
+ </tr>
+ <?php endforeach; ?>
+ </tbody>
+ </table>
+ <?php else : ?>
+ <p>Aucune note n'a été ajoutée.</p>
+ <?php endif; ?>
+ </div>
+
+ <div id="col-col-meta">
+ <?=$metadonnees?>
+ </div>
+
+ </div>
+</div>
+<!-- COL - FIN FICHE COLLECTION -->
\ No newline at end of file
/tags/v1.13-la-grande-rue/squelettes/fiche_collection.tpl.html
Property changes:
Added: svnkit:entry:sha1-checksum
## -0,0 +1 ##
+7c0da508baaba47fb548973e4deb1c63887fc9ff
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/img/carte.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Index: tags/v1.13-la-grande-rue/squelettes/img/carte.png
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/img/carte.png (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/img/carte.png (revision 280)
/tags/v1.13-la-grande-rue/squelettes/img/carte.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/js/jquery-1.4.2.min.js
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/js/jquery-1.4.2.min.js (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/js/jquery-1.4.2.min.js (revision 280)
@@ -0,0 +1,154 @@
+/*!
+ * jQuery JavaScript Library v1.4.2
+ * http://jquery.com/
+ *
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2010, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Sat Feb 13 22:33:48 2010 -0500
+ */
+(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
+e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
+j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
+"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
+true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
+Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
+(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
+a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
+"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
+function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
+c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
+L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
+"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
+a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
+d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
+a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
+!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
+true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
+var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
+parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
+false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
+s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
+applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
+else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
+a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
+w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
+cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
+i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
+" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
+this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
+e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
+c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
+a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
+function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
+k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
+C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
+null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
+e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
+f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
+if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
+d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
+"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
+a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
+isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
+{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
+if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
+e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
+"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
+d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
+!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
+toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
+u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
+function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
+if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
+e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
+t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
+g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
+for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
+1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
+CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
+relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
+l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
+h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
+CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
+g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
+text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
+setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
+h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
+m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
+"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
+h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
+!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
+h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
+q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
+if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
+(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
+function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
+gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
+c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
+{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
+"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
+d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
+a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
+1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
+a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
+c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
+wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
+prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
+this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
+return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
+""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
+this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
+u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
+1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
+return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
+""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
+c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
+c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
+function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
+Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
+"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
+a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
+a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
+"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
+serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
+function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
+global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
+e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
+"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
+false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
+false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
+c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
+d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
+g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
+1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
+"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
+if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
+this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
+"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
+animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
+j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
+this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
+"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
+c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
+this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
+this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
+e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
+c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
+function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
+this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
+k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
+f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
+a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
+c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
+d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
+f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
+"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
+e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
/tags/v1.13-la-grande-rue/squelettes/js/jquery-1.4.2.min.js
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/js/jquery.cookie.js
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/js/jquery.cookie.js (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/js/jquery.cookie.js (revision 280)
@@ -0,0 +1,96 @@
+/**
+ * Cookie plugin
+ *
+ * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ */
+
+/**
+ * Create a cookie with the given name and value and other optional parameters.
+ *
+ * @example $.cookie('the_cookie', 'the_value');
+ * @desc Set the value of a cookie.
+ * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
+ * @desc Create a cookie with all available options.
+ * @example $.cookie('the_cookie', 'the_value');
+ * @desc Create a session cookie.
+ * @example $.cookie('the_cookie', null);
+ * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
+ * used when the cookie was set.
+ *
+ * @param String name The name of the cookie.
+ * @param String value The value of the cookie.
+ * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
+ * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
+ * If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
+ * If set to null or omitted, the cookie will be a session cookie and will not be retained
+ * when the the browser exits.
+ * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
+ * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
+ * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
+ * require a secure protocol (like HTTPS).
+ * @type undefined
+ *
+ * @name $.cookie
+ * @cat Plugins/Cookie
+ * @author Klaus Hartl/klaus.hartl@stilbuero.de
+ */
+
+/**
+ * Get the value of a cookie with the given name.
+ *
+ * @example $.cookie('the_cookie');
+ * @desc Get the value of a cookie.
+ *
+ * @param String name The name of the cookie.
+ * @return The value of the cookie.
+ * @type String
+ *
+ * @name $.cookie
+ * @cat Plugins/Cookie
+ * @author Klaus Hartl/klaus.hartl@stilbuero.de
+ */
+jQuery.cookie = function(name, value, options) {
+ if (typeof value != 'undefined') { // name and value given, set cookie
+ options = options || {};
+ if (value === null) {
+ value = '';
+ options.expires = -1;
+ }
+ var expires = '';
+ if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
+ var date;
+ if (typeof options.expires == 'number') {
+ date = new Date();
+ date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
+ } else {
+ date = options.expires;
+ }
+ expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
+ }
+ // CAUTION: Needed to parenthesize options.path and options.domain
+ // in the following expressions, otherwise they evaluate to undefined
+ // in the packed version for some reason...
+ var path = options.path ? '; path=' + (options.path) : '';
+ var domain = options.domain ? '; domain=' + (options.domain) : '';
+ var secure = options.secure ? '; secure' : '';
+ document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
+ } else { // only name given, get cookie
+ var cookieValue = null;
+ if (document.cookie && document.cookie != '') {
+ var cookies = document.cookie.split(';');
+ for (var i = 0; i < cookies.length; i++) {
+ var cookie = jQuery.trim(cookies[i]);
+ // Does this cookie string begin with the name we want?
+ if (cookie.substring(0, name.length + 1) == (name + '=')) {
+ cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
+ break;
+ }
+ }
+ }
+ return cookieValue;
+ }
+};
\ No newline at end of file
Index: tags/v1.13-la-grande-rue/squelettes/js/jquery-collection.js
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/js/jquery-collection.js (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/js/jquery-collection.js (revision 280)
@@ -0,0 +1,15 @@
+/*Courriel() est basé sur les sources suivantes :
+ http://www.html-advisor.com/javascript/hide-email-with-javascript-jquery/
+ http://plugins.jquery.com/files/jquery.mailme.js.txt
+*/
+jQuery.fn.courriel = function() {
+ var at = / \[arrobase\] /;
+ var dot = / \[point\] /g;
+ this.each( function() {
+ var addr = jQuery(this).text().replace(at,"@").replace(dot,".");
+ var title = jQuery(this).attr('title')
+ jq(this)
+ .after('<a href="mailto:'+addr+'" title="'+title+'">'+ addr +'<\/a>')
+ .remove();
+ });
+};
\ No newline at end of file
Index: tags/v1.13-la-grande-rue/squelettes/js/jquery-ui-1.8.custom.min.js
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/js/jquery-ui-1.8.custom.min.js (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/js/jquery-ui-1.8.custom.min.js (revision 280)
@@ -0,0 +1,14 @@
+/*!
+ * jQuery UI 1.8
+ *
+ * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI
+ */ +jQuery.ui||(function(a){a.ui={version:"1.8",plugin:{add:function(c,d,f){var e=a.ui[c].prototype;for(var b in f){e.plugins[b]=e.plugins[b]||[];e.plugins[b].push([d,f[b]])}},call:function(b,d,c){var f=b.plugins[d];if(!f||!b.element[0].parentNode){return}for(var e=0;e<f.length;e++){if(b.options[f[e][0]]){f[e][1].apply(b.element,c)}}}},contains:function(d,c){return document.compareDocumentPosition?d.compareDocumentPosition(c)&16:d!==c&&d.contains(c)},hasScroll:function(e,c){if(a(e).css("overflow")=="hidden"){return false}var b=(c&&c=="left")?"scrollLeft":"scrollTop",d=false;if(e[b]>0){return true}e[b]=1;d=(e[b]>0);e[b]=0;return d},isOverAxis:function(c,b,d){return(c>b)&&(c<(b+d))},isOver:function(g,c,f,e,b,d){return a.ui.isOverAxis(g,f,b)&&a.ui.isOverAxis(c,e,d)},keyCode:{BACKSPACE:8,CAPS_LOCK:20,COMMA:188,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38}};a.fn.extend({_focus:a.fn.focus,focus:function(b,c){return typeof b==="number"?this.each(function(){var d=this;setTimeout(function(){a(d).focus();(c&&c.call(d))},b)}):this._focus.apply(this,arguments)},enableSelection:function(){return this.attr("unselectable","off").css("MozUserSelect","").unbind("selectstart.ui")},disableSelection:function(){return this.attr("unselectable","on").css("MozUserSelect","none").bind("selectstart.ui",function(){return false})},scrollParent:function(){var b;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){b=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{b=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!b.length?a(document):b},zIndex:function(e){if(e!==undefined){return this.css("zIndex",e)}if(this.length){var c=a(this[0]),b,d;while(c.length&&c[0]!==document){b=c.css("position");if(b=="absolute"||b=="relative"||b=="fixed"){d=parseInt(c.css("zIndex"));if(!isNaN(d)&&d!=0){return d}}c=c.parent()}}return 0}});a.extend(a.expr[":"],{data:function(d,c,b){return !!a.data(d,b[3])},focusable:function(c){var d=c.nodeName.toLowerCase(),b=a.attr(c,"tabindex");return(/input|select|textarea|button|object/.test(d)?!c.disabled:"a"==d||"area"==d?c.href||!isNaN(b):!isNaN(b))&&!a(c)["area"==d?"parents":"closest"](":hidden").length},tabbable:function(c){var b=a.attr(c,"tabindex");return(isNaN(b)||b>=0)&&a(c).is(":focusable")}})})(jQuery);;
+(function(b){var a=b.fn.remove;b.fn.remove=function(c,d){return this.each(function(){if(!d){if(!c||b.filter(c,[this]).length){b("*",this).add(this).each(function(){b(this).triggerHandler("remove")})}}return a.call(b(this),c,d)})};b.widget=function(d,f,c){var e=d.split(".")[0],h;d=d.split(".")[1];h=e+"-"+d;if(!c){c=f;f=b.Widget}b.expr[":"][h]=function(i){return !!b.data(i,d)};b[e]=b[e]||{};b[e][d]=function(i,j){if(arguments.length){this._createWidget(i,j)}};var g=new f();g.options=b.extend({},g.options);b[e][d].prototype=b.extend(true,g,{namespace:e,widgetName:d,widgetEventPrefix:b[e][d].prototype.widgetEventPrefix||d,widgetBaseClass:h},c);b.widget.bridge(d,b[e][d])};b.widget.bridge=function(d,c){b.fn[d]=function(g){var e=typeof g==="string",f=Array.prototype.slice.call(arguments,1),h=this;g=!e&&f.length?b.extend.apply(null,[true,g].concat(f)):g;if(e&&g.substring(0,1)==="_"){return h}if(e){this.each(function(){var i=b.data(this,d),j=i&&b.isFunction(i[g])?i[g].apply(i,f):i;if(j!==i&&j!==undefined){h=j;return false}})}else{this.each(function(){var i=b.data(this,d);if(i){if(g){i.option(g)}i._init()}else{b.data(this,d,new c(g,this))}})}return h}};b.Widget=function(c,d){if(arguments.length){this._createWidget(c,d)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(d,e){this.element=b(e).data(this.widgetName,this);this.options=b.extend(true,{},this.options,b.metadata&&b.metadata.get(e)[this.widgetName],d);var c=this;this.element.bind("remove."+this.widgetName,function(){c.destroy()});this._create();this._init()},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled")},widget:function(){return this.element},option:function(e,f){var d=e,c=this;if(arguments.length===0){return b.extend({},c.options)}if(typeof e==="string"){if(f===undefined){return this.options[e]}d={};d[e]=f}b.each(d,function(g,h){c._setOption(g,h)});return c},_setOption:function(c,d){this.options[c]=d;if(c==="disabled"){this.widget()[d?"addClass":"removeClass"](this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").attr("aria-disabled",d)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(d,e,f){var h=this.options[d];e=b.Event(e);e.type=(d===this.widgetEventPrefix?d:this.widgetEventPrefix+d).toLowerCase();f=f||{};if(e.originalEvent){for(var c=b.event.props.length,g;c;){g=b.event.props[--c];e[g]=e.originalEvent[g]}}this.element.trigger(e,f);return !(b.isFunction(h)&&h.call(this.element[0],e,f)===false||e.isDefaultPrevented())}}})(jQuery);;
+(function(a){a.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var b=this;this.element.bind("mousedown."+this.widgetName,function(c){return b._mouseDown(c)}).bind("click."+this.widgetName,function(c){if(b._preventClickEvent){b._preventClickEvent=false;c.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(d){d.originalEvent=d.originalEvent||{};if(d.originalEvent.mouseHandled){return}(this._mouseStarted&&this._mouseUp(d));this._mouseDownEvent=d;var c=this,e=(d.which==1),b=(typeof this.options.cancel=="string"?a(d.target).parents().add(d.target).filter(this.options.cancel).length:false);if(!e||b||!this._mouseCapture(d)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){c.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(d)!==false);if(!this._mouseStarted){d.preventDefault();return true}}this._mouseMoveDelegate=function(f){return c._mouseMove(f)};this._mouseUpDelegate=function(f){return c._mouseUp(f)};a(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);(a.browser.safari||d.preventDefault());d.originalEvent.mouseHandled=true;return true},_mouseMove:function(b){if(a.browser.msie&&!b.button){return this._mouseUp(b)}if(this._mouseStarted){this._mouseDrag(b);return b.preventDefault()}if(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,b)!==false);(this._mouseStarted?this._mouseDrag(b):this._mouseUp(b))}return !this._mouseStarted},_mouseUp:function(b){a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=(b.target==this._mouseDownEvent.target);this._mouseStop(b)}return false},_mouseDistanceMet:function(b){return(Math.max(Math.abs(this._mouseDownEvent.pageX-b.pageX),Math.abs(this._mouseDownEvent.pageY-b.pageY))>=this.options.distance)},_mouseDelayMet:function(b){return this.mouseDelayMet},_mouseStart:function(b){},_mouseDrag:function(b){},_mouseStop:function(b){},_mouseCapture:function(b){return true}})})(jQuery);; +(function(f){f.ui=f.ui||{};var c=/left|center|right/,e="center",d=/top|center|bottom/,g="center",a=f.fn.position,b=f.fn.offset;f.fn.position=function(i){if(!i||!i.of){return a.apply(this,arguments)}i=f.extend({},i);var l=f(i.of),n=(i.collision||"flip").split(" "),m=i.offset?i.offset.split(" "):[0,0],k,h,j;if(i.of.nodeType===9){k=l.width();h=l.height();j={top:0,left:0}}else{if(i.of.scrollTo&&i.of.document){k=l.width();h=l.height();j={top:l.scrollTop(),left:l.scrollLeft()}}else{if(i.of.preventDefault){i.at="left top";k=h=0;j={top:i.of.pageY,left:i.of.pageX}}else{k=l.outerWidth();h=l.outerHeight();j=l.offset()}}}f.each(["my","at"],function(){var o=(i[this]||"").split(" ");if(o.length===1){o=c.test(o[0])?o.concat([g]):d.test(o[0])?[e].concat(o):[e,g]}o[0]=c.test(o[0])?o[0]:e;o[1]=d.test(o[1])?o[1]:g;i[this]=o});if(n.length===1){n[1]=n[0]}m[0]=parseInt(m[0],10)||0;if(m.length===1){m[1]=m[0]}m[1]=parseInt(m[1],10)||0;if(i.at[0]==="right"){j.left+=k}else{if(i.at[0]===e){j.left+=k/2}}if(i.at[1]==="bottom"){j.top+=h}else{if(i.at[1]===g){j.top+=h/2}}j.left+=m[0];j.top+=m[1];return this.each(function(){var r=f(this),q=r.outerWidth(),p=r.outerHeight(),o=f.extend({},j);if(i.my[0]==="right"){o.left-=q}else{if(i.my[0]===e){o.left-=q/2}}if(i.my[1]==="bottom"){o.top-=p}else{if(i.my[1]===g){o.top-=p/2}}f.each(["left","top"],function(t,s){if(f.ui.position[n[t]]){f.ui.position[n[t]][s](o,{targetWidth:k,targetHeight:h,elemWidth:q,elemHeight:p,offset:m,my:i.my,at:i.at})}});if(f.fn.bgiframe){r.bgiframe()}r.offset(f.extend(o,{using:i.using}))})};f.ui.position={fit:{left:function(h,i){var k=f(window),j=h.left+i.elemWidth-k.width()-k.scrollLeft();h.left=j>0?h.left-j:Math.max(0,h.left)},top:function(h,i){var k=f(window),j=h.top+i.elemHeight-k.height()-k.scrollTop();h.top=j>0?h.top-j:Math.max(0,h.top)}},flip:{left:function(i,j){if(j.at[0]==="center"){return}var l=f(window),k=i.left+j.elemWidth-l.width()-l.scrollLeft(),h=j.my[0]==="left"?-j.elemWidth:j.my[0]==="right"?j.elemWidth:0,m=-2*j.offset[0];i.left+=i.left<0?h+j.targetWidth+m:k>0?h-j.targetWidth+m:0},top:function(i,k){if(k.at[1]==="center"){return}var m=f(window),l=i.top+k.elemHeight-m.height()-m.scrollTop(),h=k.my[1]==="top"?-k.elemHeight:k.my[1]==="bottom"?k.elemHeight:0,j=k.at[1]==="top"?k.targetHeight:-k.targetHeight,n=-2*k.offset[1];i.top+=i.top<0?h+k.targetHeight+n:l>0?h+j+n:0}}};if(!f.offset.setOffset){f.offset.setOffset=function(l,i){if(/static/.test(f.curCSS(l,"position"))){l.style.position="relative"}var k=f(l),n=k.offset(),h=parseInt(f.curCSS(l,"top",true),10)||0,m=parseInt(f.curCSS(l,"left",true),10)||0,j={top:(i.top-n.top)+h,left:(i.left-n.left)+m};if("using" in i){i.using.call(l,j)}else{k.css(j)}};f.fn.offset=function(h){var i=this[0];if(!i||!i.ownerDocument){return null}if(h){return this.each(function(){f.offset.setOffset(this,h)})}return b.call(this)}}}(jQuery));; +(function(c){var b=0,a=0;c.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:false,cookie:null,collapsible:false,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"<div></div>",remove:null,select:null,show:null,spinner:"<em>Loading&#8230;</em>",tabTemplate:'<li><a href="#{href}"><span>#{label}</span></a></li>'},_create:function(){this._tabify(true)},_setOption:function(d,e){if(d=="selected"){if(this.options.collapsible&&e==this.options.selected){return}this.select(e)}else{this.options[d]=e;this._tabify()}},_tabId:function(d){return d.title&&d.title.replace(/\s/g,"_").replace(/[^A-Za-z0-9\-_:\.]/g,"")||this.options.idPrefix+(++b)},_sanitizeSelector:function(d){return d.replace(/:/g,"\\:")},_cookie:function(){var d=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+(++a));return c.cookie.apply(null,[d].concat(c.makeArray(arguments)))},_ui:function(e,d){return{tab:e,panel:d,index:this.anchors.index(e)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var d=c(this);d.html(d.data("label.tabs")).removeData("label.tabs")})},_tabify:function(q){this.list=this.element.find("ol,ul").eq(0);this.lis=c("li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return c("a",this)[0]});this.panels=c([]);var r=this,f=this.options;var e=/^#.+/;this.anchors.each(function(u,o){var s=c(o).attr("href");var v=s.split("#")[0],w;if(v&&(v===location.toString().split("#")[0]||(w=c("base")[0])&&v===w.href)){s=o.hash;o.href=s}if(e.test(s)){r.panels=r.panels.add(r._sanitizeSelector(s))}else{if(s!="#"){c.data(o,"href.tabs",s);c.data(o,"load.tabs",s.replace(/#.*$/,""));var y=r._tabId(o);o.href="#"+y;var x=c("#"+y);if(!x.length){x=c(f.panelTemplate).attr("id",y).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(r.panels[u-1]||r.list);x.data("destroy.tabs",true)}r.panels=r.panels.add(x)}else{f.disabled.push(u)}}});if(q){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all");this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(f.selected===undefined){if(location.hash){this.anchors.each(function(s,o){if(o.hash==location.hash){f.selected=s;return false}})}if(typeof f.selected!="number"&&f.cookie){f.selected=parseInt(r._cookie(),10)}if(typeof f.selected!="number"&&this.lis.filter(".ui-tabs-selected").length){f.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"))}f.selected=f.selected||(this.lis.length?0:-1)}else{if(f.selected===null){f.selected=-1}}f.selected=((f.selected>=0&&this.anchors[f.selected])||f.selected<0)?f.selected:0;f.disabled=c.unique(f.disabled.concat(c.map(this.lis.filter(".ui-state-disabled"),function(s,o){return r.lis.index(s)}))).sort();if(c.inArray(f.selected,f.disabled)!=-1){f.disabled.splice(c.inArray(f.selected,f.disabled),1)}this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active");if(f.selected>=0&&this.anchors.length){this.panels.eq(f.selected).removeClass("ui-tabs-hide");this.lis.eq(f.selected).addClass("ui-tabs-selected ui-state-active");r.element.queue("tabs",function(){r._trigger("show",null,r._ui(r.anchors[f.selected],r.panels[f.selected]))});this.load(f.selected)}c(window).bind("unload",function(){r.lis.add(r.anchors).unbind(".tabs");r.lis=r.anchors=r.panels=null})}else{f.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"))}this.element[f.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");if(f.cookie){this._cookie(f.selected,f.cookie)}for(var j=0,p;(p=this.lis[j]);j++){c(p)[c.inArray(j,f.disabled)!=-1&&!c(p).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled")}if(f.cache===false){this.anchors.removeData("cache.tabs")}this.lis.add(this.anchors).unbind(".tabs");if(f.event!="mouseover"){var h=function(o,i){if(i.is(":not(.ui-state-disabled)")){i.addClass("ui-state-"+o)}};var l=function(o,i){i.removeClass("ui-state-"+o)};this.lis.bind("mouseover.tabs",function(){h("hover",c(this))});this.lis.bind("mouseout.tabs",function(){l("hover",c(this))});this.anchors.bind("focus.tabs",function(){h("focus",c(this).closest("li"))});this.anchors.bind("blur.tabs",function(){l("focus",c(this).closest("li"))})}var d,k;if(f.fx){if(c.isArray(f.fx)){d=f.fx[0];k=f.fx[1]}else{d=k=f.fx}}function g(i,o){i.css({display:""});if(!c.support.opacity&&o.opacity){i[0].style.removeAttribute("filter")}}var m=k?function(i,o){c(i).closest("li").addClass("ui-tabs-selected ui-state-active");o.hide().removeClass("ui-tabs-hide").animate(k,k.duration||"normal",function(){g(o,k);r._trigger("show",null,r._ui(i,o[0]))})}:function(i,o){c(i).closest("li").addClass("ui-tabs-selected ui-state-active");o.removeClass("ui-tabs-hide");r._trigger("show",null,r._ui(i,o[0]))};var n=d?function(o,i){i.animate(d,d.duration||"normal",function(){r.lis.removeClass("ui-tabs-selected ui-state-active");i.addClass("ui-tabs-hide");g(i,d);r.element.dequeue("tabs")})}:function(o,i,s){r.lis.removeClass("ui-tabs-selected ui-state-active");i.addClass("ui-tabs-hide");r.element.dequeue("tabs")};this.anchors.bind(f.event+".tabs",function(){var o=this,u=c(this).closest("li"),i=r.panels.filter(":not(.ui-tabs-hide)"),s=c(r._sanitizeSelector(this.hash));if((u.hasClass("ui-tabs-selected")&&!f.collapsible)||u.hasClass("ui-state-disabled")||u.hasClass("ui-state-processing")||r._trigger("select",null,r._ui(this,s[0]))===false){this.blur();return false}f.selected=r.anchors.index(this);r.abort();if(f.collapsible){if(u.hasClass("ui-tabs-selected")){f.selected=-1;if(f.cookie){r._cookie(f.selected,f.cookie)}r.element.queue("tabs",function(){n(o,i)}).dequeue("tabs");this.blur();return false}else{if(!i.length){if(f.cookie){r._cookie(f.selected,f.cookie)}r.element.queue("tabs",function(){m(o,s)});r.load(r.anchors.index(this));this.blur();return false}}}if(f.cookie){r._cookie(f.selected,f.cookie)}if(s.length){if(i.length){r.element.queue("tabs",function(){n(o,i)})}r.element.queue("tabs",function(){m(o,s)});r.load(r.anchors.index(this))}else{throw"jQuery UI Tabs: Mismatching fragment identifier."}if(c.browser.msie){this.blur()}});this.anchors.bind("click.tabs",function(){return false})},destroy:function(){var d=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e=c.data(this,"href.tabs");if(e){this.href=e}var f=c(this).unbind(".tabs");c.each(["href","load","cache"],function(g,h){f.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){if(c.data(this,"destroy.tabs")){c(this).remove()}else{c(this).removeClass(["ui-state-default","ui-corner-top","ui-tabs-selected","ui-state-active","ui-state-hover","ui-state-focus","ui-state-disabled","ui-tabs-panel","ui-widget-content","ui-corner-bottom","ui-tabs-hide"].join(" "))}});if(d.cookie){this._cookie(null,d.cookie)}return this},add:function(g,f,e){if(e===undefined){e=this.anchors.length}var d=this,i=this.options,k=c(i.tabTemplate.replace(/#\{href\}/g,g).replace(/#\{label\}/g,f)),j=!g.indexOf("#")?g.replace("#",""):this._tabId(c("a",k)[0]);k.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var h=c("#"+j);if(!h.length){h=c(i.panelTemplate).attr("id",j).data("destroy.tabs",true)}h.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(e>=this.lis.length){k.appendTo(this.list);h.appendTo(this.list[0].parentNode)}else{k.insertBefore(this.lis[e]);h.insertBefore(this.panels[e])}i.disabled=c.map(i.disabled,function(m,l){return m>=e?++m:m});this._tabify();if(this.anchors.length==1){i.selected=0;k.addClass("ui-tabs-selected ui-state-active");h.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){d._trigger("show",null,d._ui(d.anchors[0],d.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[e],this.panels[e]));return this},remove:function(d){var f=this.options,g=this.lis.eq(d).remove(),e=this.panels.eq(d).remove();if(g.hasClass("ui-tabs-selected")&&this.anchors.length>1){this.select(d+(d+1<this.anchors.length?1:-1))}f.disabled=c.map(c.grep(f.disabled,function(j,h){return j!=d}),function(j,h){return j>=d?--j:j});this._tabify();this._trigger("remove",null,this._ui(g.find("a")[0],e[0]));return this},enable:function(d){var e=this.options;if(c.inArray(d,e.disabled)==-1){return}this.lis.eq(d).removeClass("ui-state-disabled");e.disabled=c.grep(e.disabled,function(g,f){return g!=d});this._trigger("enable",null,this._ui(this.anchors[d],this.panels[d]));return this},disable:function(e){var d=this,f=this.options;if(e!=f.selected){this.lis.eq(e).addClass("ui-state-disabled");f.disabled.push(e);f.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[e],this.panels[e]))}return this},select:function(d){if(typeof d=="string"){d=this.anchors.index(this.anchors.filter("[href$="+d+"]"))}else{if(d===null){d=-1}}if(d==-1&&this.options.collapsible){d=this.options.selected}this.anchors.eq(d).trigger(this.options.event+".tabs");return this},load:function(g){var e=this,i=this.options,d=this.anchors.eq(g)[0],f=c.data(d,"load.tabs");this.abort();if(!f||this.element.queue("tabs").length!==0&&c.data(d,"cache.tabs")){this.element.dequeue("tabs");return}this.lis.eq(g).addClass("ui-state-processing");if(i.spinner){var h=c("span",d);h.data("label.tabs",h.html()).html(i.spinner)}this.xhr=c.ajax(c.extend({},i.ajaxOptions,{url:f,success:function(k,j){c(e._sanitizeSelector(d.hash)).html(k);e._cleanup();if(i.cache){c.data(d,"cache.tabs",true)}e._trigger("load",null,e._ui(e.anchors[g],e.panels[g]));try{i.ajaxOptions.success(k,j)}catch(l){}},error:function(l,j,k){e._cleanup();e._trigger("load",null,e._ui(e.anchors[g],e.panels[g]));try{i.ajaxOptions.error(l,j,g,d)}catch(k){}}}));e.element.dequeue("tabs");return this},abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this},url:function(e,d){this.anchors.eq(e).removeData("cache.tabs").data("load.tabs",d);return this},length:function(){return this.anchors.length}});c.extend(c.ui.tabs,{version:"1.8"});c.extend(c.ui.tabs.prototype,{rotation:null,rotate:function(f,h){var d=this,i=this.options;var e=d._rotate||(d._rotate=function(j){clearTimeout(d.rotation);d.rotation=setTimeout(function(){var k=i.selected;d.select(++k<d.anchors.length?k:0)},f);if(j){j.stopPropagation()}});var g=d._unrotate||(d._unrotate=!h?function(j){if(j.clientX){d.rotate(null)}}:function(j){t=i.selected;e()});if(f){this.element.bind("tabsshow",e);this.anchors.bind(i.event+".tabs",g);e()}else{clearTimeout(d.rotation);this.element.unbind("tabsshow",e);this.anchors.unbind(i.event+".tabs",g);delete this._rotate;delete this._unrotate}return this}})})(jQuery);;
\ No newline at end of file
/tags/v1.13-la-grande-rue/squelettes/js/jquery-ui-1.8.custom.min.js
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/squelettes/js/jquery.cookie.min.js
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/js/jquery.cookie.min.js (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/js/jquery.cookie.min.js (revision 280)
@@ -0,0 +1,11 @@
+/**
+ * Cookie plugin : http://plugins.jquery.com/project/cookie
+ *
+ * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ * @author Klaus Hartl/klaus.hartl@stilbuero.de
+ *
+ */
+jQuery.cookie=function(name,value,options){if(typeof value!="undefined"){options=options||{};if(value===null){value="";options.expires=-1}var expires="";if(options.expires&&(typeof options.expires=="number"||options.expires.toUTCString)){var date;if(typeof options.expires=="number"){date=new Date;date.setTime(date.getTime()+options.expires*24*60*60*1E3)}else date=options.expires;expires="; expires="+date.toUTCString()}var path=options.path?"; path="+options.path:"";var domain=options.domain?"; domain="+ options.domain:"";var secure=options.secure?"; secure":"";document.cookie=[name,"=",encodeURIComponent(value),expires,path,domain,secure].join("")}else{var cookieValue=null;if(document.cookie&&document.cookie!=""){var cookies=document.cookie.split(";");for(var i=0;i<cookies.length;i++){var cookie=jQuery.trim(cookies[i]);if(cookie.substring(0,name.length+1)==name+"="){cookieValue=decodeURIComponent(cookie.substring(name.length+1));break}}}return cookieValue}};
\ No newline at end of file
Index: tags/v1.13-la-grande-rue/squelettes/moteur.tpl.html
===================================================================
--- tags/v1.13-la-grande-rue/squelettes/moteur.tpl.html (revision 0)
+++ tags/v1.13-la-grande-rue/squelettes/moteur.tpl.html (revision 280)
@@ -0,0 +1,201 @@
+<!-- COL - DEBUT MOTEUR RECHERCHE -->
+<script type="text/javascript">
+ var jq = jQuery.noConflict();
+ // Function pour cacher / afficher les options de recherche
+ jq(document).ready(function() {
+ jq("#col-rech-opt-toggle").html("Afficher les options de recherche");
+ jq("#col-rech-opt").hide();
+ jq("#col-rech-opt-toggle").toggle(
+ function() {
+ jq("#col-rech-opt-toggle").html("Cacher les options de recherche");
+ jq("#col-rech-opt").slideDown("fast");
+ },
+ function() {
+ jq("#col-rech-opt-toggle").html("Afficher les options de recherche");
+ jq("#col-rech-opt").slideUp("fast");
+ }
+ );
+ // Le rôle de la personne ne peut être défini que si une personne est mentionnée
+ function statutChampRole() {
+ var contenu = jq('input#nom-personne').val();
+ if (contenu == '') {
+ jq('select#role-personne').attr('disabled', 'disabled');
+ } else {
+ jq('select#role-personne').removeAttr('disabled');
+ }
+ }
+ jq('input#nom-personne').change(function() {
+ statutChampRole();
+ });
+ statutChampRole();
+ // Rechargement des options sélectionnées dans les select
+ jq('#col-form select').each(function() {
+ var optionSelectionnee = jq(this).attr('data-option-selectionnee');
+ jq(this).find('option[value="' + optionSelectionnee + '"]').attr('selected', 'selected');
+ });
+ });
+</script>
+
+<div class="coel-consultation">
+
+ <h2 id="rechercher-parmi-collections" class="titre-moteur-recherche">Rechercher une collection</h2>
+
+ <form id="col-form" name="col-form" action="<?=$url_form;?>" method="get">
+
+ <input name="module" type="hidden" value="<?=$url_module;?>" />
+ <input name="action" type="hidden" value="<?=$url_action;?>" />
+ <?php if (isset($url_contexte)) : ?>
+ <input name="contexte" type="hidden" value="<?=$url_contexte;?>" />
+ <?php endif; ?>
+
+ <input name="masque[cible]" type="hidden" value="collections" />
+
+ <div id="col-rech-masque">
+ <div class="champ-masque" title="Lieu de stockage">
+ <label class="label-gauche">Localité institution</label>
+ <input name="masque[lieu-stockage]" type="text" value="<?= htmlspecialchars($masque['lieu-stockage']) ?>" />
+ </div>
+ <div class="champ-masque">
+ <label class="label-droite">Groupe taxonomique</label>
+ <select name="masque[veg]" data-option-selectionnee="<?= $masque['veg'] ?>">
+ <option value=""></option>
+ <option value="PH">Phanérogames</option>
+ <option value="GY">Gymnospermes</option>
+ <option value="AN">Angiospermes</option>
+ <option value="CR">Cryptogames</option>
+ <option value="AL">Algues</option>
+ <option value="CH">Champignons</option>
+ <option value="LI">Lichens</option>
+ <option value="BR">Bryophytes</option>
+ <option value="PT">Ptéridophytes</option>
+ </select>
+ </div>
+ <div class="champ-masque">
+ <label class="label-gauche">Lieu de récolte</label>
+ <input name="masque[zg]" type="text" value="<?= htmlspecialchars($masque['zg']) ?>" />
+ </div>
+ <div class="champ-masque">
+ <label class="label-droite">Type de collection</label>
+ <select name="masque[bot]" data-option-selectionnee="<?= $masque['bot'] ?>">
+ <option value=""></option>
+ <option value="HE">Herbier</option>
+ <option value="CE">Centurie</option>
+ <option value="DR">Droguier</option>
+ <option value="CA">Carpothèque</option>
+ <option value="AL">Collection en alcool</option>
+ <option value="XY">Xylothèque</option>
+ <option value="PM">Préparations microscopiques</option>
+ </select>
+ </div>
+ <div class="champ-masque" title="Contributeur, auteur, collecteur, déterminateur ou hébergeur">
+ <label class="label-gauche">Personne</label>
+ <input id="nom-personne" name="masque[p]" type="text" value="<?= htmlspecialchars($masque['p']) ?>" />
+ </div>
+ <!-- <div class="champ-masque">
+ <label class="label-droite">&gt;&gt; ayant le rôle</label>
+ <select id="role-personne" name="masque[pr]" data-option-selectionnee="<?= $masque['pr'] ?>">
+ <option value=""></option>
+ <option value="CT">Contributeur</option>
+ <option value="AU">Auteur</option>
+ <option value="CO">Collecteur</option>
+ <option value="DE">Déterminateur</option>
+ <option value="HE">Hébergeur</option>
+ </select>
+ </div> -->
+ </div>
+
+ <input class="button" id="col-rech-ok" type="submit" value="OK" />
+
+ </form>
+ <br/>
+
+ <h2 id="rechercher-parmi-personnes" class="titre-moteur-recherche">Rechercher une personne</h2>
+
+ <form id="pers-form" name="col-form" action="<?=$url_form;?>" method="get">
+
+ <input name="module" type="hidden" value="<?=$url_module;?>" />
+ <input name="action" type="hidden" value="<?=$url_action;?>" />
+ <?php if (isset($url_contexte)) : ?>
+ <input name="contexte" type="hidden" value="<?=$url_contexte;?>" />
+ <?php endif; ?>
+
+ <input name="masque[cible]" type="hidden" value="personnes" />
+
+ <div id="pers-rech-masque">
+ <div class="champ-masque">
+ <label class="label-gauche">Nom de famille</label>
+ <input name="masque[nom-famille]" type="text" value="<?= htmlspecialchars($masque['nom-famille']) ?>" />
+ </div>
+ <div class="champ-masque" title="Date comprise entre la date de naissance et la date de décès">
+ <label class="label-droite">Date de collecte</label>
+ <input name="masque[date-vivant]" type="text" class="input-droite" value="<?= $masque['date-vivant'] ?>" />
+ </div>
+ <div class="champ-masque">
+ </div>
+ <div class="champ-masque" title="Adresse courante ou lieu de naissance ou lieu de décès">
+ <label class="label-droite">Localité</label>
+ <input name="masque[adresse]" type="text" class="input-droite" value="<?= htmlspecialchars($masque['adresse']) ?>" />
+ </div>
+ </div>
+
+ <input class="button" id="pers-rech-ok" type="submit" value="OK" />
+
+ </form>
+
+ <br/>
+ <a id="col-rech-opt-toggle" href="#col-rech-opt-txt" title="Précisions sur les options de recherche"></a>
+
+ <div id="col-rech-opt">
+ <h2 id="col-rech-opt-titre">Options de recherche</h2>
+ <div id="col-rech-opt-txt">
+ <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>Pour les opérateurs dont la valeur est un <em>texte libre</em> ou une <em>liste</em>,
+ il est possible d'utiliser des jokers.
+ Ces "jokers" permettent de modifier la recherche.
+ </p>
+ <table>
+ <thead>
+ <tr>
+ <th>Joker</th>
+ <th>Applicable sur</th>
+ <th>Explication</th>
+ <!-- <th>Exemples</th> -->
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>""</td>
+ <td>Texte libre</td>
+ <td>Permet de rechercher sur une expression exacte.</td>
+ <!-- <td><a href="<?=Recherche::getUrlExemple('"Archives de l\'herbier Granger"')?>">
+ "Archives de l'herbier Granger"</a></td> -->
+ </tr>
+ <tr>
+ <td>%</td>
+ <td>Texte libre</td>
+ <td>Remplace n'importe quel nombre de caractères, y compris aucun.</td>
+ <!-- <td><a href="<?=Recherche::getUrlExemple('"herbier %Abbé% Carondelet"')?>">
+ "herbier %Abbé% Carondelet"</a></td> -->
+ </tr>
+ <tr>
+ <td>_</td>
+ <td>Texte libre</td>
+ <td>Remplace exactement un caractère</td>
+ <!-- <td><a href="<?=Recherche::getUrlExemple('p:"Jo_l"')?>">p:"Jo_l"</a></td> -->
+ </tr>
+ <tr>
+ <td>,</td>
+ <td>Liste</td>
+ <td>Permet d'indiquer plusieurs valeurs</td>
+ <!-- <td><a href="<?=Recherche::getUrlExemple('veg:br,ph')?>">veg:br,ph</a></td> -->
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+</div>
+<!-- COeL - FIN MOTEUR RECHERCHE -->
\ No newline at end of file
/tags/v1.13-la-grande-rue/squelettes/moteur.tpl.html
Property changes:
Added: svnkit:entry:sha1-checksum
## -0,0 +1 ##
+4441c5155299b5e4fda41517002ff5e3f0c41442
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/lr-mpu.php
===================================================================
--- tags/v1.13-la-grande-rue/lr-mpu.php (revision 0)
+++ tags/v1.13-la-grande-rue/lr-mpu.php (revision 280)
@@ -0,0 +1,65 @@
+<?php
+// declare(encoding='UTF-8');
+// Nous forçons le parametre "contexte" avec la valeur "lr" et nous pré-remplission le moteur de recherche avec 'MPU'
+$_GET['contexte'] = 'lr-mpu';
+$_GET['recherche'] = 'MPU';
+
+/** Inclusion du fichier principal de l'application*/
+require_once 'collection.php';
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <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 AppControleur::getMetaTitre(); ?></title>
+ <meta name="description" content="<?php echo AppControleur::getMetaDescription();?>" />
+ <meta name="keywords" content="<?php echo AppControleur::getMetaTags();?>" />
+
+ <meta name="revisit-after" content="15 days" />
+ <meta name="robots" content="index,follow" />
+ <meta name="author" content="Tela Botanica" />
+
+ <link rel="stylesheet" type="text/css" media="screen" href="squelettes/css/collection/generale.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" />
+ <link rel="stylesheet" type="text/css" media="screen" href="squelettes/css/collection/debogage.css" />
+ <link rel="stylesheet" type="text/css" media="print" href="https://www.tela-botanica.org/sites/commun/fr/styles/impression.css" />
+
+ <script type="text/javascript" src="squelettes/js/jquery-1.4.2.min.js"></script>
+ <script type="text/javascript" src="squelettes/js/jquery.cookie.min.js"></script>
+ <script type="text/javascript" src="squelettes/js/jquery-ui-1.8.custom.min.js"></script>
+ <script type="text/javascript" src="squelettes/js/jquery-collection.js"></script>
+ </head>
+ <body>
+ <div id="zone-centrale">
+ <div id="zone-corps">
+ <div id="zone-navigation">
+ <?php echo AppControleur::getContenuNavigation(); ?>
+ </div>
+ <div id="zone-corps-contenu">
+ <div id="entete">
+ <?php echo AppControleur::getContenuTete(); ?>
+ </div>
+ <div id="texte">
+ <?php echo AppControleur::getContenuCorps(); ?>
+ </div>
+ <div id="pied_texte">
+ <?php echo AppControleur::getContenuPied(); ?>
+ </div>
+ </div>
+ <div>
+ <?php echo AppControleur::getChrono(); ?>
+ <?php echo AppControleur::getExceptions(); ?>
+ </div>
+ <div id="zone-pied">
+ <p> &copy;<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>
+ </body>
+</html>
Index: tags/v1.13-la-grande-rue/lr.php
===================================================================
--- tags/v1.13-la-grande-rue/lr.php (revision 0)
+++ tags/v1.13-la-grande-rue/lr.php (revision 280)
@@ -0,0 +1,64 @@
+<?php
+// declare(encoding='UTF-8');
+// Nous forçons le parametre "contexte" avec la valeur "lr"
+$_GET['contexte'] = 'lr';
+
+/** Inclusion du fichier principal de l'application*/
+require_once 'collection.php';
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <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 AppControleur::getMetaTitre(); ?></title>
+ <meta name="description" content="<?php echo AppControleur::getMetaDescription();?>" />
+ <meta name="keywords" content="<?php echo AppControleur::getMetaTags();?>" />
+
+ <meta name="revisit-after" content="15 days" />
+ <meta name="robots" content="index,follow" />
+ <meta name="author" content="Tela Botanica" />
+
+ <link rel="stylesheet" type="text/css" media="screen" href="squelettes/css/collection/generale.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" />
+ <link rel="stylesheet" type="text/css" media="screen" href="squelettes/css/collection/debogage.css" />
+ <link rel="stylesheet" type="text/css" media="print" href="https://www.tela-botanica.org/sites/commun/fr/styles/impression.css" />
+
+ <script type="text/javascript" src="squelettes/js/jquery-1.4.2.min.js"></script>
+ <script type="text/javascript" src="squelettes/js/jquery.cookie.min.js"></script>
+ <script type="text/javascript" src="squelettes/js/jquery-ui-1.8.custom.min.js"></script>
+ <script type="text/javascript" src="squelettes/js/jquery-collection.js"></script>
+ </head>
+ <body>
+ <div id="zone-centrale">
+ <div id="zone-corps">
+ <div id="zone-navigation">
+ <?php echo AppControleur::getContenuNavigation(); ?>
+ </div>
+ <div id="zone-corps-contenu">
+ <div id="entete">
+ <?php echo AppControleur::getContenuTete(); ?>
+ </div>
+ <div id="texte">
+ <?php echo AppControleur::getContenuCorps(); ?>
+ </div>
+ <div id="pied_texte">
+ <?php echo AppControleur::getContenuPied(); ?>
+ </div>
+ </div>
+ <div>
+ <?php echo AppControleur::getChrono(); ?>
+ <?php echo AppControleur::getExceptions(); ?>
+ </div>
+ <div id="zone-pied">
+ <p> &copy;<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>
+ </body>
+</html>
Index: tags/v1.13-la-grande-rue/LICENCES.txt
===================================================================
--- tags/v1.13-la-grande-rue/LICENCES.txt (revision 0)
+++ tags/v1.13-la-grande-rue/LICENCES.txt (revision 280)
@@ -0,0 +1,7 @@
+L'application de consultation des Collections (col) est sous double licence
+GPL v3 (http://www.opensource.org/licenses/gpl-3.0.html) et
+CECILL (http://www.cecill.info/) sauf mention contraire dans les fichiers.
+------------------------------------------------------------------------------------------------------------------------
+Sources et licences des images :
+ - carte.png (Yusuke Kamiyamane <http://p.yusukekamiyamane.com/>,
+ Creative Commons (Attribution 3.0 Unported) <http://creativecommons.org/licenses/by/3.0/>)
/tags/v1.13-la-grande-rue/LICENCES.txt
Property changes:
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/collection_papyrus.php
===================================================================
--- tags/v1.13-la-grande-rue/collection_papyrus.php (revision 0)
+++ tags/v1.13-la-grande-rue/collection_papyrus.php (revision 280)
@@ -0,0 +1,74 @@
+<?php
+// declare(encoding='UTF-8');
+/**
+ * Application de consultation des Collections.
+ * Fichier contenant les fonctions nécessaire pour l'insertion de l'application dans Papyrus.
+ *
+ * @category PHP5
+ * @package Collection
+ * @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
+ * @copyright 2010 Tela-Botanica
+ * @license GPL-v3 et CECILL-v2
+ * @version SVN:<svn_id>
+ */
+
+// Gestion des paramêtres définis dans Papyrus
+if (isset($GLOBALS['_GEN_commun']['info_application']->module) && !isset($_GET['module'])) {
+ $_GET['module'] = $GLOBALS['_GEN_commun']['info_application']->module;
+}
+
+/** Inclusion du fichier principal de l'application*/
+require_once dirname(__FILE__).DIRECTORY_SEPARATOR.'collection.php';
+
+// Définition des feuilles de style de l'application pour Papyrus
+$chemin = str_replace(PAP_CHEMIN_RACINE, '', Config::get('chemin_squelettes'));
+GEN_stockerStyleExterne('collection', $chemin.'css'.DS.'collection'.DS.'collection.css');
+GEN_stockerStyleExterne('jquery-ui-1.8', $chemin.'css'.DS.'humanity'.DS.'jquery-ui-1.8.custom.min.css');
+
+// Définition des fichiers JS de l'application pour Papyrus
+//GEN_stockerFichierScript('jquery-1.4.2', 'commun'.DS.'jquery'.DS.'1.4.2'.DS.'jquery-1.4.2.min.js');
+GEN_stockerFichierScript('jquery-cookie', 'commun'.DS.'jquery'.DS.'cookie'.DS.'1.0'.DS.'jquery.cookie.min.js');
+GEN_stockerFichierScript('jquery-ui-1.8.custom', $chemin.'js'.DS.'jquery-ui-1.8.custom.min.js');
+GEN_stockerFichierScript('jquery-collection', $chemin.'js'.DS.'jquery-collection.js');
+
+// +--------------------------------------------------------------------------------------------------+
+// Remplacement de méta tags fournit par Papyrus par ceux créés dans l'appli
+if (AppControleur::getMetaTitre() != '') {
+ $GLOBALS['_PAPYRUS_']['rendu']['TITRE_PAGE'] = AppControleur::getMetaTitre();
+}
+if (AppControleur::getMetaDescription() != '') {
+ GEN_modifierMetaName('description', AppControleur::getMetaDescription());
+}
+if (AppControleur::getMetaTags() != '') {
+ GEN_modifierMetaName('keywords', AppControleur::getMetaTags());
+}
+
+// meta OpenGraph pour les réseaux socialo
+GEN_modifierMetaProperty('og:title', 'CoEL - consultation des collections');
+GEN_modifierMetaProperty('og:description', 'Moteur de recherche sur les collections recens&eacute;es dans Collections en Ligne ');
+
+// +--------------------------------------------------------------------------------------------------+
+// Fonctions d'affichage dans Papyrus
+/**
+ * Fonction d'affichage de Papyrus, pour le corps de page.
+ */
+function afficherContenuCorps() {
+ return AppControleur::getContenuCorps();
+}
+
+function afficherContenuTete() {
+ return AppControleur::getContenuTete();
+}
+
+function afficherContenuPied() {
+ return AppControleur::getContenuPied();
+}
+
+function afficherContenuNavigation() {
+ return AppControleur::getContenuNavigation();
+}
+
+function afficherContenuMenu() {
+ return '';
+}
+?>
\ No newline at end of file
/tags/v1.13-la-grande-rue/collection_papyrus.php
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/index_iso-8859-15.php
===================================================================
--- tags/v1.13-la-grande-rue/index_iso-8859-15.php (revision 0)
+++ tags/v1.13-la-grande-rue/index_iso-8859-15.php (revision 280)
@@ -0,0 +1,96 @@
+<?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 AppControleur::getMetaTitre(); ?></title>
+ <meta name="description" content="<?php echo AppControleur::getMetaDescription();?>" />
+ <meta name="keywords" content="<?php echo AppControleur::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="https://resources.tela-botanica.org/tb/img/16x16/favicon.ico" />
+ <link rel="icon" type="image/png" href="https://resources.tela-botanica.org/tb/img/16x16/favicon.png" />
+
+ <link rel="stylesheet" type="text/css" media="screen" href="squelettes/css/collection/generale.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" />
+ <link rel="stylesheet" type="text/css" media="print" href="https://www.tela-botanica.org/sites/commun/fr/styles/impression.css" />
+
+ <script type="text/javascript" src="squelettes/js/jquery-1.4.2.min.js"></script>
+ <script type="text/javascript" src="squelettes/js/jquery.cookie.min.js"></script>
+ <script type="text/javascript" src="squelettes/js/jquery-ui-1.8.custom.min.js"></script>
+ <script type="text/javascript" src="squelettes/js/jquery-collection.js"></script>
+ <script>
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+ })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+ ga('create', 'UA-57885-3', 'auto');
+ ga('require', 'displayfeatures');
+ ga('send', 'pageview');
+
+ </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="https://resources.tela-botanica.org/tb/img/135x102/logo_carre_officiel.png" 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 AppControleur::getContenuNavigation(); ?>
+ </div>
+ <div id="contenu">
+ <div id="entete">
+ <?php echo AppControleur::getContenuTete(); ?>
+ </div>
+ <div id="texte">
+ <?php echo AppControleur::getContenuCorps(); ?>
+ </div>
+ <div id="pied_texte">
+ <?php echo AppControleur::getContenuPied(); ?>
+ </div>
+ </div>
+ <div>
+ <?php echo AppControleur::getExceptions(); ?>
+ </div>
+ <div id="pied">
+ <p> &copy;<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>
\ No newline at end of file
Index: tags/v1.13-la-grande-rue/AUTEURS.txt
===================================================================
--- tags/v1.13-la-grande-rue/AUTEURS.txt (revision 0)
+++ tags/v1.13-la-grande-rue/AUTEURS.txt (revision 280)
@@ -0,0 +1 @@
+Jean-Pascal MILCENT <jpm@tela-botanica.org>.
/tags/v1.13-la-grande-rue/AUTEURS.txt
Property changes:
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/A_LIRE.txt
===================================================================
--- tags/v1.13-la-grande-rue/A_LIRE.txt (revision 0)
+++ tags/v1.13-la-grande-rue/A_LIRE.txt (revision 280)
@@ -0,0 +1,4 @@
+Cette application nécessite le framework de Tela Botanica pour fonctionner.
+Il est disponible ici : http://svn.tela-botanica.net/websvn/listing.php?repname=Applications.framework
+
+L'ensemble des fichiers de l'application sont dans l'encodage UTF-8.
\ No newline at end of file
/tags/v1.13-la-grande-rue/A_LIRE.txt
Property changes:
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/.htaccess
===================================================================
--- tags/v1.13-la-grande-rue/.htaccess (revision 0)
+++ tags/v1.13-la-grande-rue/.htaccess (revision 280)
@@ -0,0 +1,13 @@
+#AddHandler x-httpd-php5 .php
+#AddDefaultCharset UTF-8
+
+# Activation de la réecriture d'url
+RewriteEngine on
+
+# si le fichier ou le dossier existe dans le système de fichier on l'utilise directement
+RewriteCond %{REQUEST_FILENAME} !-d
+RewriteCond %{REQUEST_FILENAME} !-f
+
+RewriteRule ^urn:lsid:tela-botanica.org:coel:str([0-9]+)$ index.php?module=FicheStructure&id=$1 [L]
+RewriteRule ^urn:lsid:tela-botanica.org:coel:col([0-9]+)$ index.php?module=FicheCollection&id=$1 [L]
+RewriteRule ^urn:lsid:tela-botanica.org:coel:per([0-9]+)$ index.php?module=FichePersonne&id=$1 [L]
\ No newline at end of file
Index: tags/v1.13-la-grande-rue/bibliotheque/dao/CollectionDao.php
===================================================================
--- tags/v1.13-la-grande-rue/bibliotheque/dao/CollectionDao.php (revision 0)
+++ tags/v1.13-la-grande-rue/bibliotheque/dao/CollectionDao.php (revision 280)
@@ -0,0 +1,176 @@
+<?php
+// declare(encoding='UTF-8');
+/**
+ * DAO des Collections pour le module Collections.
+ *
+ * @package Collection
+ * @category php 5.2
+ * @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
+ * @copyright 2010 Tela-Botanica
+ * @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
+ * @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
+ * @version SVN: $Id$
+ *
+ */
+class CollectionDao extends Dao {
+ const SERVICE_COLLECTION = 'CoelCollection';
+ const SERVICE_COLLECTION_A_PERSONNE = 'CoelCollectionAPersonne';
+ const SERVICE_COLLECTION_A_PUBLICATION = 'CoelCollectionAPublication';
+ const SERVICE_COLLECTION_A_COMMENTAIRE = 'CoelCollectionACommentaire';
+ const ROLE_EXPERT = '30763';
+ const ROLE_CONTRIBUTEUR = '2134';
+
+ /**
+ * Retourne l'ensemble des information sur une collection.
+ *
+ * @param integer l'id de la collection.
+ * @return array un tableau contenant les informations sur la collection.
+ */
+ public function getCollection($id) {
+ $url = $this->url_jrest.self::SERVICE_COLLECTION."/$id/*";
+ $json = $this->envoyerRequeteConsultation($url);
+ $donnees = json_decode($json, true);
+ return $donnees['collections'];
+ }
+
+ /**
+ * Retourne le nombre de collections correspondant à un id strucutre précis.
+ *
+ * @param integer l'id d'une structure.
+ * @return array un tableau contenant les collections correspondant à l'id structure.
+ */
+ public function getNbreParIdStructure($id_structure) {
+ $url = $this->url_jrest.self::SERVICE_COLLECTION."/NbreParIdStructure/$id_structure";
+ $json = $this->envoyerRequeteConsultation($url);
+ $donnees = json_decode($json, true);
+ return $donnees;
+ }
+
+ /**
+ * Retourne les collection correspondant à un id strucutre précis.
+ *
+ * @param integer l'id d'une structure.
+ * @return array un tableau contenant les collections correspondant à l'id structure.
+ */
+ public function getParIdStructure($id_structure) {
+ $url = $this->url_jrest.self::SERVICE_COLLECTION."/ParIdStructure/$id_structure";
+ $json = $this->envoyerRequeteConsultation($url);
+ $donnees = json_decode($json, true);
+ return $donnees;
+ }
+
+ /**
+ * Retourne l'ensemble des personnes liées à une collection.
+ *
+ * @param integer l'id de la collection.
+ * @return array un tableau contenant les informations sur les personnes liées à la collection.
+ */
+ public function getPersonnesLiees($id_collection) {
+ $this->addOrdre('cp_nom');
+ $donnees = $this->getCollectionAPersonne($id_collection);
+ return $donnees['collectionsAPersonne'];
+ }
+
+ public function getPersonnesLieesExpertes($id_collection) {
+ $this->addOrdre('cp_nom');
+ $donnees = $this->getCollectionAPersonne($id_collection, self::ROLE_EXPERT);
+ return $donnees['collectionsAPersonne'];
+ }
+
+ public function getPersonnesLieesContributrices($id_collection) {
+ $this->addOrdre('cp_nom');
+ $donnees = $this->getCollectionAPersonne($id_collection, self::ROLE_CONTRIBUTEUR);
+ return $donnees['collectionsAPersonne'];
+ }
+
+ /**
+ * Retourne le nombre de personnes liées à une collection.
+ *
+ * @param integer l'id de la collection.
+ * @return integer le nombre de personnes liées à la collection.
+ */
+ public function getNbrePersonnesLiees($id_collection) {
+ $donnees = $this->getCollectionAPersonne($id_collection);
+ return $donnees['nbElements'];
+ }
+
+ private function getCollectionAPersonne($id_collection, $role = null) {
+ $url = $this->url_jrest.self::SERVICE_COLLECTION_A_PERSONNE."/$id_collection";
+ $url .= ($role != null) ? '/'.$role : '';
+ $json = $this->envoyerRequeteConsultation($url);
+ $donnees = json_decode($json, true);
+ return $donnees;
+ }
+
+ /**
+ * Retourne l'ensemble des publications liées à une collection.
+ *
+ * @param integer l'id de la collection.
+ * @return array un tableau contenant les informations sur les publications liées à la collection.
+ */
+ public function getPublicationsLiees($id_collection) {
+ $donnees = $this->getCollectionAPublication($id_collection);
+ return $donnees['collectionsAPublication'];
+ }
+
+ /**
+ * Retourne l'ensemble des publications liées à une collection.
+ *
+ * @param integer l'id de la collection.
+ * @return array un tableau contenant les informations sur les publications liées à la collection.
+ */
+ public function getPublicationsSourcesLiees($id_collection) {
+ $donnees = $this->getCollectionAPublication($id_collection, "1");
+ return $donnees['collectionsAPublication'];
+ }
+
+ /**
+ * Retourne le nombre de publications liées à une collection.
+ *
+ * @param integer l'id de la collection.
+ * @return integer le nombre de publications liées à la collection.
+ */
+ public function getNbrePublicationsLiees($id_collection) {
+ $donnees = $this->getCollectionAPublication($id_collection);
+ return $donnees['nbElements'];
+ }
+
+ private function getCollectionAPublication($id_collection, $source = null) {
+ $url = $this->url_jrest.self::SERVICE_COLLECTION_A_PUBLICATION."/$id_collection";
+ $url .= ($source != null) ? '/'.$source : '';
+ $json = $this->envoyerRequeteConsultation($url);
+ $donnees = json_decode($json, true);
+ return $donnees;
+ }
+
+ /**
+ * Retourne l'ensemble des commentaires publics liés à une collection.
+ *
+ * @param integer l'id de la collection.
+ * @return array un tableau contenant les informations sur les publications liées à la collection.
+ */
+ public function getCommentairesLies($id_collection) {
+ $donnees = $this->getCollectionACommentaire($id_collection);
+ return $donnees['collectionsACommentaire'];
+ }
+
+ /**
+ * Retourne le nombre de commentaires publics liés à une collection.
+ *
+ * @param integer l'id de la collection.
+ * @return integer le nombre de commentaires publics liés à la collection.
+ */
+ public function getNbreCommentairesLies($id_collection) {
+ $donnees = $this->getCollectionACommentaire($id_collection);
+ return $donnees['nbElements'];
+ }
+
+ private function getCollectionACommentaire($id_collection) {
+ $commentaire_public = '1';
+ $url = $this->url_jrest.self::SERVICE_COLLECTION_A_COMMENTAIRE."/$id_collection/$commentaire_public";
+ $json = $this->envoyerRequeteConsultation($url);
+ $donnees = json_decode($json, true);
+ return $donnees;
+ }
+}
+?>
\ No newline at end of file
/tags/v1.13-la-grande-rue/bibliotheque/dao/CollectionDao.php
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/bibliotheque/dao/Ontologie.php
===================================================================
--- tags/v1.13-la-grande-rue/bibliotheque/dao/Ontologie.php (revision 0)
+++ tags/v1.13-la-grande-rue/bibliotheque/dao/Ontologie.php (revision 280)
@@ -0,0 +1,133 @@
+<?php
+// declare(encoding='UTF-8');
+/**
+ * Classe contenant les données de l'ontologie des Collections en Ligne.
+ * Elle contient un cache de l'ontologie.
+ * C'est un Singleton.
+ *
+ * @package Collection
+ * @category php 5.2
+ * @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
+ * @copyright 2010 Tela-Botanica
+ * @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
+ * @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
+ * @version SVN: $Id$
+ *
+ */
+class Ontologie {
+ public static $ontologie_liste = array();
+ public static $ontologie_valeur = array();
+
+ public static function chargerListe($id_liste) {
+ $retour = false;
+ if (!isset(self::$ontologie_liste[$id_liste])) {
+ $metadonnees = new MetadonneeDao();
+ $donnees = $metadonnees->getOntologie($id_liste);
+ $traitementValeursOk = self::traiterValeurs($donnees['valeurs']);
+ if ($traitementValeursOk) {
+ self::$ontologie_liste[$id_liste] = $donnees['valeurs'];
+ $retour = true;
+ }
+ } else {
+ $retour = true;
+ }
+ return $retour;
+ }
+
+ public static function getListe($id_liste) {
+ $retour = false;
+ $chargementOk = self::chargerListe($id_liste);
+ if ($chargementOk) {
+ $retour = self::$ontologie_liste[$id_liste];
+ }
+ return $retour;
+ }
+
+ public static function getListeFormatee($id_liste) {
+ $retour = false;
+ $liste = self::getListe($id_liste);
+ if ($liste !== false) {
+ foreach ($liste as $cle => $valeur) {
+ $liste[$cle] = self::formaterTableauValeur($valeur);
+ }
+ $retour = $liste;
+ }
+ return $retour;
+ }
+
+ public static function getListeTrieeParAbreviation($id_liste) {
+ $retour = false;
+ $liste = self::getListe($id_liste);
+ if ($liste !== false) {
+ $liste_par_abr = array();
+ foreach ($liste as $cle => $valeur) {
+ $valeur_fromatee = self::formaterTableauValeur($valeur);
+ $abreviation = $valeur_fromatee['abreviation'];
+ $liste_par_abr[$abreviation] = $valeur_fromatee;
+ }
+ $retour = $liste_par_abr;
+ }
+ return $retour;
+ }
+
+ public static function chargerValeur($id_valeur) {
+ $retour = true;
+ if (empty($id_valeur)) {
+ $retour = false;
+ } else if (!isset(self::$ontologie_valeur[$id_valeur])) {
+ $metadonnees = new MetadonneeDao();
+ $donnees = $metadonnees->getOntologieValeur($id_valeur);
+ $retour = self::traiterValeurs($donnees['valeurs']);
+ }
+ return $retour;
+ }
+
+ public static function getValeur($id_valeur) {
+ $retour = false;
+ $chargementOk = self::chargerValeur($id_valeur);
+ if ($chargementOk) {
+ $retour = self::$ontologie_valeur[$id_valeur];
+ }
+ return $retour;
+ }
+
+ public static function getValeurNom($id_valeur) {
+ $retour = false;
+ $valeur = self::getValeur($id_valeur);
+ if ($valeur !== false) {
+ $retour = $valeur['nom'];
+ }
+ return $retour;
+ }
+
+ private static function traiterValeurs($valeurs) {
+ $retour = true;
+ if (is_null($valeurs)) {
+ $retour = false;
+ } else {
+ if (count($valeurs) == 0) {
+ $retour = false;
+ } else {
+ foreach ($valeurs as $valeur) {
+ self::$ontologie_valeur[$valeur['cmlv_id_valeur']] = self::formaterTableauValeur($valeur);
+ }
+ }
+ }
+ return $retour;
+ }
+
+ private static function formaterTableauValeur($valeur) {
+ $valeur_formatee = array();
+ if (is_array($valeur) && count($valeur) > 0) {
+ $valeur_formatee = array(
+ 'id' => $valeur['cmlv_id_valeur'],
+ 'parent' => $valeur['cmlv_ce_parent'],
+ 'nom' => $valeur['cmlv_nom'],
+ 'abreviation' => $valeur['cmlv_abreviation'],
+ 'description' => $valeur['cmlv_description'],
+ 'meta' => $valeur['cmlv_ce_meta']);
+ }
+ return $valeur_formatee;
+ }
+}
+?>
\ No newline at end of file
/tags/v1.13-la-grande-rue/bibliotheque/dao/Ontologie.php
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/bibliotheque/dao/Dao.php
===================================================================
--- tags/v1.13-la-grande-rue/bibliotheque/dao/Dao.php (revision 0)
+++ tags/v1.13-la-grande-rue/bibliotheque/dao/Dao.php (revision 280)
@@ -0,0 +1,217 @@
+<?php
+// declare(encoding='UTF-8');
+/**
+* Classe modèle spécifique à l'application, donc d'accés au données, elle ne devrait pas être appelée de l'extérieur.
+* Elle est abstraite donc doit obligatoirement être étendue.
+*
+* @category Php5
+* @package Referentiel
+* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
+* @copyright 2010 Tela-Botanica
+* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
+* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
+* @version SVN: $Id$
+*/
+abstract class Dao {
+ const ORDRE_ASCENDANT = 'ASC';
+ const ORDRE_DESCENDANT = 'DESC';
+ const HTTP_REQUETE_SEPARATEUR = '&';
+ protected $distinction = '0';
+ protected $limite_debut = null;
+ protected $limite_nbre = null;
+ protected $ordre = null;
+ protected $url_jrest = null;
+
+ public function __construct() {
+ $this->url_jrest = Config::get('url_jrest');
+ }
+
+ //+----------------------------------------------------------------------------------------------------------------+
+ // ACCESSEURS
+
+ public function setDistinction($distinct) {
+ $this->distinction = $distinct;
+ }
+ public function getDistinction() {
+ return $this->distinction;
+ }
+ public function viderDistinction() {
+ $this->distinction = null;
+ }
+
+ public function avoirLimitation() {
+ $limitation = false;
+ if (!is_null($this->limite_debut) && !is_null($this->limite_nbre)) {
+ $limitation = true;
+ }
+ return $limitation;
+ }
+ public function setLimitation($limite_debut, $limite_nbre) {
+ $this->limite_debut = $limite_debut;
+ $this->limite_nbre = $limite_nbre;
+ }
+ public function getLimiteDebut() {
+ return $this->limite_debut;
+ }
+ public function getLimiteNbre() {
+ return $this->limite_nbre;
+ }
+ public function viderLimite() {
+ $this->limite_debut = null;
+ $this->limite_nbre = null;
+ }
+
+ public function addOrdre($champ, $trie = self::ORDRE_ASCENDANT) {
+ if (!isset($this->ordre[$champ])) {
+ if (self::ORDRE_ASCENDANT == $trie || self::ORDRE_DESCENDANT == $trie) {
+ $this->ordre[$champ] = $trie;
+ } else {
+ $e = "La valeur pour le trie doit être : {self::ORDRE_ASCENDANT} ou {self::ORDRE_DESCENDANT}.";
+ trigger_error($e, E_USER_WARNING);
+ }
+ } else {
+ $e = "Le champ $champ existe déjà dans le tableau des ordres.";
+ trigger_error($e, E_USER_WARNING);
+ }
+ }
+ public function getOrdre() {
+ $champs = array();
+ foreach ($this->ordre as $champ => $trie) {
+ $champs[] = "$champ $trie";
+ }
+ return implode(', ', $champs);
+ }
+ public function viderOrdre() {
+ $this->ordre = null;
+ }
+
+ //+----------------------------------------------------------------------------------------------------------------+
+ // MÉTHODES
+
+ protected function envoyerRequeteConsultation($url) {
+ $url = $this->traiterUrlParametres($url);
+ $retour = $this->envoyerRequete($url, 'GET');
+ return $retour;
+ }
+
+ protected function envoyerRequeteAjout($url, Array $donnees) {
+ $retour = $this->envoyerRequete($url, 'PUT', $donnees);
+ return $retour;
+ }
+
+ protected function envoyerRequeteModif($url, Array $donnees) {
+ $retour = $this->envoyerRequete($url, 'POST', $donnees);
+ return $retour;
+ }
+
+ protected function envoyerRequeteSuppression($url) {
+ $retour = $this->envoyerRequete($url, 'DELETE');
+ return $retour;
+ }
+
+ private function envoyerRequete($url, $mode, Array $donnees = array()) {
+ $contenu = false;
+ if ($mode != 'GET' && $mode != 'PUT' && $mode != 'POST' && $mode != 'DELETE') {
+ $e = "Le mode de requête '$mode' n'est pas accepté!";
+ trigger_error($e, E_USER_WARNING);
+ } else {
+ $contexte = stream_context_create(array(
+ 'http' => array(
+ 'method' => $mode,
+ 'header' => "Content-type: application/x-www-form-urlencoded\r\n",
+ 'content' => http_build_query($donnees, null, self::HTTP_REQUETE_SEPARATEUR))));
+ $flux = @fopen($url, 'r', false, $contexte);
+ if (!$flux) {
+ $this->traiterEntete($http_response_header, $url);
+ $e = "L'ouverture de l'url '$url' par la méthode HTTP '$mode' a échoué!";
+ trigger_error($e, E_USER_WARNING);
+ } else {
+ // Informations sur les en-têtes et métadonnées du flux
+ $entetes = stream_get_meta_data($flux);
+ $this->traiterEntete($entetes, $url);
+
+ // Contenu actuel de $url
+ $contenu = stream_get_contents($flux);
+
+ fclose($flux);
+ }
+ }
+ $this->reinitialiser();
+ return $contenu;
+ }
+
+ private function traiterUrlParametres($url) {
+ $parametres = array();
+ if (! is_null($this->getLimiteDebut())) {
+ $parametres[] = 'start='.$this->getLimiteDebut();
+ }
+ if (! is_null($this->getLimiteNbre())) {
+ $parametres[] = 'limit='.$this->getLimiteNbre();
+ }
+ if (! is_null($this->ordre)) {
+ $parametres[] = 'orderby='.urlencode($this->getOrdre());
+ }
+ if ($this->getDistinction() != 0) {
+ $parametres[] = 'distinct='.$this->getDistinction();
+ }
+ if (count($parametres) > 0) {
+ $url_parametres = implode('&', $parametres);
+ $url = $url.'?'.$url_parametres;
+ }
+ return $url;
+ }
+
+ private function traiterEntete($entetes, $uri) {
+ $infos = $this->analyserEntete($entetes, $uri);
+ $this->traiterEnteteDebug($infos);
+ $this->traiterEnteteMessage($infos);
+ }
+
+ private function analyserEntete($entetes, $uri) {
+ $infos = array('date' => null, 'uri' => $uri, 'debugs' => null, 'messages' => null);
+
+ if (isset($entetes['wrapper_data'])) {
+ $entetes = $entetes['wrapper_data'];
+ }
+ foreach ($entetes as $entete) {
+ if (preg_match('/^X-DebugJrest-Data: (.+)$/', $entete, $match)) {
+ $infos['debugs'] = json_decode($match[1]);
+ }
+ if (preg_match('/^X-MessageJrest-Data: (.+)$/', $entete, $match)) {
+ $infos['messages'] = json_decode($match[1]);
+ }
+ if (preg_match('/^Date: .+ ([012][0-9]:[012345][0-9]:[012345][0-9]) .*$/', $entete, $match)) {
+ $infos['date'] = $match[1];
+ }
+ }
+ return $infos;
+ }
+
+ private function traiterEnteteDebug($entetes) {
+ if (isset($entetes['debugs'])) {
+ $date = $entetes['date'];
+ $uri = $entetes['uri'];
+ $debugs = $entetes['debugs'];
+ foreach ($debugs as $debug) {
+ Debug::printr("DEBUG : $date - $uri :\n$debug");
+ }
+ }
+ }
+
+ private function traiterEnteteMessage($entetes) {
+ if (isset($entetes['messages'])) {
+ $date = $entetes['date'];
+ $uri = $entetes['uri'];
+ $messages = $entetes['messages'];
+ foreach ($messages as $message) {
+ Debug::printr("MESSAGE : $date - $uri :\n$message");
+ }
+ }
+ }
+
+ private function reinitialiser() {
+ $this->viderDistinction();
+ $this->viderLimite();
+ $this->viderOrdre();
+ }
+}
\ No newline at end of file
Index: tags/v1.13-la-grande-rue/bibliotheque/dao/MetadonneeDao.php
===================================================================
--- tags/v1.13-la-grande-rue/bibliotheque/dao/MetadonneeDao.php (revision 0)
+++ tags/v1.13-la-grande-rue/bibliotheque/dao/MetadonneeDao.php (revision 280)
@@ -0,0 +1,47 @@
+<?php
+// declare(encoding='UTF-8');
+/**
+ * Modèle d'accès à la base de données des Collections pour le module Métadonnées.
+ *
+ * @package Collection
+ * @category php 5.2
+ * @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
+ * @copyright 2010 Tela-Botanica
+ * @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
+ * @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
+ * @version SVN: $Id$
+ *
+ */
+class MetadonneeDao extends Dao {
+ const SERVICE_ONTOLOGIE = 'CoelValeurListe';
+
+ /**
+ * Retourne l'ensemble des information d'une liste de valeurs.
+ *
+ * @param integer l'id de la liste.
+ * @return array un tableau contenant les valeurs de la liste.
+ */
+ public function getOntologie($id) {
+ $url = $this->url_jrest.self::SERVICE_ONTOLOGIE."/id/$id?limit=500";
+ $json = $this->envoyerRequeteConsultation($url);
+ $donnees = json_decode($json, true);
+ return $donnees;
+ }
+
+ /**
+ * Retourne l'ensemble des information d'une liste de valeurs.
+ *
+ * @param integer l'id d'une valeur ou un ensemble d'id de valeurs séparés par des virgules.
+ * @return array un tableau contenant les valeurs.
+ */
+ public function getOntologieValeur($id_valeurs) {
+ $donnees = array();
+ if (!empty($id_valeurs)) {
+ $url = $this->url_jrest.self::SERVICE_ONTOLOGIE."/idv/$id_valeurs";
+ $json = $this->envoyerRequeteConsultation($url);
+ $donnees = json_decode($json, true);
+ }
+ return $donnees;
+ }
+}
+?>
\ No newline at end of file
/tags/v1.13-la-grande-rue/bibliotheque/dao/MetadonneeDao.php
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/bibliotheque/dao/StructureDao.php
===================================================================
--- tags/v1.13-la-grande-rue/bibliotheque/dao/StructureDao.php (revision 0)
+++ tags/v1.13-la-grande-rue/bibliotheque/dao/StructureDao.php (revision 280)
@@ -0,0 +1,88 @@
+<?php
+// declare(encoding='UTF-8');
+/**
+ * Modèle d'accès à la base de données des Collections pour le module Structure.
+ *
+ * @package Collection
+ * @category php 5.2
+ * @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
+ * @copyright 2010 Tela-Botanica
+ * @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
+ * @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
+ * @version SVN: $Id$
+ *
+ */
+class StructureDao extends Dao {
+ const ROLE_EQUIPE = 2027;
+ const SERVICE_STRUCTURE = 'CoelStructure';
+ const SERVICE_STRUCTURE_A_PERSONNE = 'CoelStructureAPersonne';
+
+ /**
+ * Retourne l'ensemble des information sur une structure.
+ *
+ * @param integer l'id de la structure.
+ * @return array un tableau contenant les informations sur la structure.
+ */
+ public function getStructure($id_structure) {
+ $url = $this->url_jrest.self::SERVICE_STRUCTURE."/$id_structure/*";
+ $json = $this->envoyerRequeteConsultation($url);
+ $donnees = json_decode($json, true);
+ return $donnees['structures'];
+ }
+
+ /**
+ * Retourne le nombre de structure par zone géographique.
+ *
+ * @param integer le type de recherche à effectuée.
+ * @return array un tableau contenant les informations sur le nombre de structures par zone.
+ */
+ public function getStructureParZoneGeo($type_recherche) {
+ $url = $this->url_jrest.self::SERVICE_STRUCTURE."/ParZoneGeo/$type_recherche";
+ $json = $this->envoyerRequeteConsultation($url);
+ $donnees = json_decode($json, true);
+ return $donnees;
+ }
+
+ /**
+ * Retourne l'ensemble des informations du personnel d'une structure.
+ *
+ * @param integer l'id de la structure.
+ * @return array un tableau contenant les informations sur le personnel de la structure.
+ */
+ public function getPersonnel($id_structure) {
+ $donnees = $this->getStructureAPersonne($id_structure);
+ $personnel = $this->filtrerRoleEquipe($donnees['structuresAPersonne']);
+ return $personnel;
+ }
+
+ /**
+ * Retourne le nombre de personnel d'une structure.
+ *
+ * @param integer l'id de la structure.
+ * @return integer le nombre de personnel de la structure.
+ */
+ public function getNbrePersonnel($id_structure) {
+ $donnees = $this->getStructureAPersonne($id_structure);
+ $personnel = $this->filtrerRoleEquipe($donnees['structuresAPersonne']);
+ $nbre_personnel = count($personnel);
+ return $nbre_personnel;
+ }
+
+ private function getStructureAPersonne($id_structure) {
+ $url = $this->url_jrest.self::SERVICE_STRUCTURE_A_PERSONNE."/$id_structure";
+ $json = $this->envoyerRequeteConsultation($url);
+ $donnees = json_decode($json, true);
+ return $donnees;
+ }
+
+ private function filtrerRoleEquipe($personnes) {
+ $personnel = array();
+ foreach ($personnes as $personne) {
+ if ($personne['csap_id_role'] == self::ROLE_EQUIPE) {
+ $personnel[] = $personne;
+ }
+ }
+ return $personnel;
+ }
+}
+?>
\ No newline at end of file
/tags/v1.13-la-grande-rue/bibliotheque/dao/StructureDao.php
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/bibliotheque/dao/SyndicationDao.php
===================================================================
--- tags/v1.13-la-grande-rue/bibliotheque/dao/SyndicationDao.php (revision 0)
+++ tags/v1.13-la-grande-rue/bibliotheque/dao/SyndicationDao.php (revision 280)
@@ -0,0 +1,30 @@
+<?php
+// declare(encoding='UTF-8');
+/**
+ * Modèle d'accès à la base de données des Collections pour les flux de Syndication.
+ *
+ * @package Collection
+ * @category php 5.2
+ * @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
+ * @copyright 2010 Tela-Botanica
+ * @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
+ * @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
+ * @version SVN: $Id$
+ *
+ */
+class SyndicationDao extends Dao {
+ const SERVICE = 'CoelSyndication';
+
+ /**
+ * Retourne l'ensemble des information sur les flux de syndication disponibles.
+ *
+ * @return array un tableau contenant les informations.
+ */
+ public function getListeDesFlux() {
+ $url = $this->url_jrest.self::SERVICE.'/liste_des_flux';
+ $json = $this->envoyerRequeteConsultation($url);
+ $donnees = json_decode($json, true);
+ return $donnees;
+ }
+}
+?>
\ No newline at end of file
Index: tags/v1.13-la-grande-rue/bibliotheque/dao/RechercheDao.php
===================================================================
--- tags/v1.13-la-grande-rue/bibliotheque/dao/RechercheDao.php (revision 0)
+++ tags/v1.13-la-grande-rue/bibliotheque/dao/RechercheDao.php (revision 280)
@@ -0,0 +1,132 @@
+<?php
+// declare(encoding='UTF-8');
+/**
+ * Modèle d'accès à la base de données des Collections pour la Recherche
+ *
+ * @package Collection
+ * @category php5
+ * @author aurelien <aurelien@tela-botanica.org>
+ * @author mathias <mathias@tela-botanica.org>
+ * @copyright 2010 Tela-Botanica
+ * @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
+ * @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
+ * @version SVN: $Id$
+ *
+ */
+class RechercheDao extends Dao {
+ const SERVICE = 'CoelRecherche';
+
+ /** @deprecated retro-compatibilité */
+ public function chercherStructureNbre($parametres) {
+ return $this->chercherCollectionsNbre($parametres);
+ }
+ /** @deprecated retro-compatibilité */
+ public function chercher($parametres) {
+ return $this->chercherCollections($parametres);
+ }
+
+ // recherche du nombre de collections : nouveau
+ public function chercherCollectionsNbre($parametres) {
+ $url = $this->construireUrlRechercheCollections('NombreCollections', $parametres, false);
+ $json = $this->envoyerRequeteConsultation($url);
+ $donnees = json_decode($json, true);
+
+ return $donnees;
+ }
+
+ // recherche du nombre de personnes : nouveau
+ public function chercherPersonnesNbre($parametres) {
+ $url = $this->construireUrlRecherchePersonnes('NombrePersonnes', $parametres, false);
+ $json = $this->envoyerRequeteConsultation($url);
+ $donnees = json_decode($json, true);
+
+ return $donnees;
+ }
+
+ // recherche du nombre de publications : nouveau
+ public function chercherPublicationsNbre($parametres) {
+ $url = $this->construireUrlRecherchePublications('NombrePublications', $parametres, false);
+ $json = $this->envoyerRequeteConsultation($url);
+ $donnees = json_decode($json, true);
+
+ return $donnees;
+ }
+
+ // recherche de collections : nouveau
+ public function chercherCollections($parametres) {
+ $url = $this->construireUrlRechercheCollections('Collections', $parametres);
+ $json = $this->envoyerRequeteConsultation($url);
+ $donnees = json_decode($json, true);
+
+ return $donnees;
+ }
+
+ // recherche de personnes : nouveau
+ public function chercherPersonnes($parametres) {
+ $url = $this->construireUrlRecherchePersonnes('Personnes', $parametres);
+ $json = $this->envoyerRequeteConsultation($url);
+ $donnees = json_decode($json, true);
+
+ return $donnees;
+ }
+
+ // recherche de publications : nouveau
+ public function chercherPublications($parametres) {
+ $url = $this->construireUrlRecherchePublications('Publications', $parametres);
+ $json = $this->envoyerRequeteConsultation($url);
+ $donnees = json_decode($json, true);
+
+ return $donnees;
+ }
+
+ // construit l'URL du service CoelRecherche pour obtenir des collections
+ // Attention au nombre et à l'ordre des paramètres !
+ private function construireUrlRechercheCollections($type, $parametres, $limitation = true) {
+ return $this->construireUrlRecherche(
+ $type,
+ $parametres,
+ $limitation,
+ array('mots', 'sci', 'bot', 'lieu-stockage', 'zg', 'p', 'pr', 'str-d', 'veg')
+ );
+ }
+
+ // construit l'URL du service CoelRecherche pour obtenir des personnes
+ // Attention au nombre et à l'ordre des paramètres !
+ private function construireUrlRecherchePersonnes($type, $parametres, $limitation = true) {
+ return $this->construireUrlRecherche(
+ $type,
+ $parametres,
+ $limitation,
+ array('nom-famille', 'adresse', 'date-vivant')
+ );
+ }
+
+ // construit l'URL du service CoelRecherche pour obtenir des publications
+ // Attention au nombre et à l'ordre des paramètres !
+ private function construireUrlRecherchePublications($type, $parametres, $limitation = true) {
+ return $this->construireUrlRecherche(
+ $type,
+ $parametres,
+ $limitation,
+ array('libre', 'titre', 'auteur', 'mot-cle', 'ouvrage', 'date')
+ );
+ }
+
+ // fabrique une URL pour le service CoelRecherche en collant les paramètres fournis (sinon "*")
+ // dans l'ordre attendu par le service demandé ($type)
+ private function construireUrlRecherche($type, $parametres, $limitation, $paramsAPasser) {
+
+ $url = $this->url_jrest . self::SERVICE . '/' . $type;
+
+ foreach ($paramsAPasser as $param_cle) {
+ if (isset($parametres[$param_cle]) && $parametres[$param_cle] != '') {
+ $valeur = rawurlencode(trim($parametres[$param_cle]));
+ $url .= '/'.$valeur;
+ } else {
+ $url .= '/*';
+ }
+ }
+ return $url;
+ }
+}
+?>
\ No newline at end of file
/tags/v1.13-la-grande-rue/bibliotheque/dao/RechercheDao.php
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/bibliotheque/dao/PersonneDao.php
===================================================================
--- tags/v1.13-la-grande-rue/bibliotheque/dao/PersonneDao.php (revision 0)
+++ tags/v1.13-la-grande-rue/bibliotheque/dao/PersonneDao.php (revision 280)
@@ -0,0 +1,183 @@
+<?php
+// declare(encoding='UTF-8');
+/**
+ * Modèle d'accès à la base de données des Collections pour le module Personnes.
+ *
+ * @package Collection
+ * @category php 5.2
+ * @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
+ * @copyright 2010 Tela-Botanica
+ * @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
+ * @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
+ * @version SVN: $Id$
+ *
+ */
+class PersonneDao extends Dao {
+ const SERVICE_PERSONNE = 'CoelPersonne';
+ const SERVICE_PERSONNE_A_PUBLICATION = 'CoelPublicationAPersonne';
+ const SERVICE_PERSONNE_A_COLLECTION = 'CoelCollectionAPersonne';
+ const SERVICE_PERSONNE_A_STRUCTURE = 'CoelStructureAPersonne';
+
+ private $cache = array();
+
+ /**
+ * Retourne l'ensemble des information d'une personne.
+ *
+ * @param integer l'id de la personne.
+ * @return array un tableau contenant les informations sur la personne.
+ */
+ public function getPersonne($id) {
+ $donnees = array();
+ if (is_numeric($id)) {
+ $url = $this->url_jrest.self::SERVICE_PERSONNE."/$id";
+ $json = $this->envoyerRequeteConsultation($url);
+ $donnees = json_decode($json, true);
+ if ($donnees['nbElements'] == 1) {
+ $donnees = $donnees['personnes'][0];
+ }
+ }
+ return $donnees;
+ }
+
+ /**
+ * Retourne l'ensemble des publications liées à une personne.
+ *
+ * @param integer l'id de la personne.
+ * @return array un tableau contenant les informations sur les publications liées à la personne.
+ */
+ public function getPublicationsLiees($id_personne) {
+ $donnees = $this->getPersonneAPublication($id_personne);
+ return $donnees['publicationsAPersonne'];
+ }
+
+ /**
+ * Retourne le nombre des publications liées à une personne.
+ *
+ * @param integer l'id de la personne.
+ * @return integer le nombre de publications liées à la personne.
+ */
+ public function getNbrePublicationsLiees($id_personne) {
+ $donnees = $this->getPersonneAPublication($id_personne);
+ return $donnees['nbElements'];
+ }
+
+ private function getPersonneAPublication($id_personne) {
+ $cache =& $this->cache['PersonneAPublication'];
+ if (isset($cache[$id_personne])) {
+ $donnees = $cache[$id_personne];
+ } else {
+ $url = $this->url_jrest.self::SERVICE_PERSONNE_A_PUBLICATION."/*/$id_personne/";
+ $json = $this->envoyerRequeteConsultation($url);
+ $donnees = json_decode($json, true);
+ $cache[$id_personne] = $donnees;
+ }
+ return $donnees;
+ }
+
+ /**
+ * Retourne l'ensemble des collections liées à une personne.
+ *
+ * @param integer l'id de la personne.
+ * @return array un tableau contenant les informations sur les collections liées à la personne.
+ */
+ public function getCollectionsLiees($id_personne) {
+ $donnees = $this->getPersonneACollection($id_personne);
+ return $donnees['collectionsAPersonne'];
+ }
+
+ /**
+ * Retourne le nombre de collections liées à une personne.
+ *
+ * @param integer l'id de la personne.
+ * @return integer le nombre de collections liées à la personne.
+ */
+ public function getNbreCollectionsLiees($id_personne) {
+ $donnees = $this->getPersonneACollection($id_personne);
+ return $donnees['nbElements'];
+ }
+
+ private function getPersonneACollection($id_personne) {
+ $cache =& $this->cache['PersonneACollection'];
+ if (isset($cache[$id_personne])) {
+ $donnees = $cache[$id_personne];
+ } else {
+ $url = $this->url_jrest.self::SERVICE_PERSONNE_A_COLLECTION."/*/*/$id_personne";
+ $this->addOrdre('cc_nom', self::ORDRE_ASCENDANT);
+ $json = $this->envoyerRequeteConsultation($url);
+ $donnees = json_decode($json, true);
+ $cache[$id_personne] = $donnees;
+ }
+ return $donnees;
+ }
+
+ /**
+ * Retourne l'ensemble des structures liées à une personne.
+ *
+ * @param integer l'id de la personne.
+ * @return array un tableau contenant les informations sur les structures liées à la personne.
+ */
+ public function getStructuresLiees($id_personne) {
+ $donnees = $this->getPersonneAStructure($id_personne);
+ return $donnees['structuresAPersonne'];
+ }
+
+ /**
+ * Retourne le nombre de structures liées à une personne.
+ *
+ * @param integer l'id de la personne.
+ * @return integer le nombre de structures liées à la personne.
+ */
+ public function getNbreStructuresLiees($id_personne) {
+ $donnees = $this->getPersonneAStructure($id_personne);
+ return $donnees['nbElements'];
+ }
+
+ private function getPersonneAStructure($id_personne) {
+ $cache =& $this->cache['PersonneAStructure'];
+ if (isset($cache[$id_personne])) {
+ $donnees = $cache[$id_personne];
+ } else {
+ $url = $this->url_jrest.self::SERVICE_PERSONNE_A_STRUCTURE."/*/*/$id_personne";
+ $this->addOrdre('cp_nom', self::ORDRE_ASCENDANT);
+ $json = $this->envoyerRequeteConsultation($url);
+ $donnees = json_decode($json, true);
+ $cache[$id_personne] = $donnees;
+ }
+ return $donnees;
+ }
+
+ /**
+ * Retourne le nom complet d'une personne.
+ *
+ * @param integer l'id de la personne.
+ * @return string le nom complet de la personne.
+ */
+ public function getPersonneNomComplet($id) {
+ $nom_complet = '';
+ $donnees = $this->getPersonne($id);
+ if (isset($donnees['nbElements']) && $donnees['nbElements'] >= 1) {
+ $nom_complet = $donnees['personnes'][0]['cp_fmt_nom_complet'];
+ } else if (isset($donnees['cp_fmt_nom_complet'])) {
+ $nom_complet = $donnees['cp_fmt_nom_complet'];
+ }
+ return $nom_complet;
+ }
+
+ /**
+ * Retourne la chaine "truk" des courriels d'une personne.
+ *
+ * @param integer l'id de la personne.
+ * @return string la chaine "truk" des courriels de la personne.
+ */
+ public function getPersonneCourriels($id) {
+ $courriels = '';
+ $donnees = $this->getPersonne($id);
+ if (isset($donnees['nbElements']) && $donnees['nbElements'] >= 1) {
+ $courriels = $donnees['personnes'][0]['cp_truk_courriel'];
+ } else if (isset($donnees['cp_truk_courriel'])) {
+ $courriels = $donnees['cp_truk_courriel'];
+ }
+ return $courriels;
+ }
+}
+?>
\ No newline at end of file
/tags/v1.13-la-grande-rue/bibliotheque/dao/PersonneDao.php
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/bibliotheque/pear/PEAR.php
===================================================================
--- tags/v1.13-la-grande-rue/bibliotheque/pear/PEAR.php (revision 0)
+++ tags/v1.13-la-grande-rue/bibliotheque/pear/PEAR.php (revision 280)
@@ -0,0 +1,1108 @@
+<?php
+/**
+ * PEAR, the PHP Extension and Application Repository
+ *
+ * PEAR class and PEAR_Error class
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt. If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @category pear
+ * @package PEAR
+ * @author Sterling Hughes <sterling@php.net>
+ * @author Stig Bakken <ssb@php.net>
+ * @author Tomas V.V.Cox <cox@idecnet.com>
+ * @author Greg Beaver <cellog@php.net>
+ * @copyright 1997-2006 The PHP Group
+ * @license http://www.php.net/license/3_0.txt PHP License 3.0
+ * @version CVS: $Id$
+ * @link http://pear.php.net/package/PEAR
+ * @since File available since Release 0.1
+ */
+
+/**#@+
+ * ERROR constants
+ */
+define('PEAR_ERROR_RETURN', 1);
+define('PEAR_ERROR_PRINT', 2);
+define('PEAR_ERROR_TRIGGER', 4);
+define('PEAR_ERROR_DIE', 8);
+define('PEAR_ERROR_CALLBACK', 16);
+/**
+ * WARNING: obsolete
+ * @deprecated
+ */
+define('PEAR_ERROR_EXCEPTION', 32);
+/**#@-*/
+define('PEAR_ZE2', (function_exists('version_compare') &&
+ version_compare(zend_version(), "2-dev", "ge")));
+
+if (substr(PHP_OS, 0, 3) == 'WIN') {
+ define('OS_WINDOWS', true);
+ define('OS_UNIX', false);
+ define('PEAR_OS', 'Windows');
+} else {
+ define('OS_WINDOWS', false);
+ define('OS_UNIX', true);
+ define('PEAR_OS', 'Unix'); // blatant assumption
+}
+
+// instant backwards compatibility
+if (!defined('PATH_SEPARATOR')) {
+ if (OS_WINDOWS) {
+ define('PATH_SEPARATOR', ';');
+ } else {
+ define('PATH_SEPARATOR', ':');
+ }
+}
+
+$GLOBALS['_PEAR_default_error_mode'] = PEAR_ERROR_RETURN;
+$GLOBALS['_PEAR_default_error_options'] = E_USER_NOTICE;
+$GLOBALS['_PEAR_destructor_object_list'] = array();
+$GLOBALS['_PEAR_shutdown_funcs'] = array();
+$GLOBALS['_PEAR_error_handler_stack'] = array();
+
+@ini_set('track_errors', true);
+
+/**
+ * Base class for other PEAR classes. Provides rudimentary
+ * emulation of destructors.
+ *
+ * If you want a destructor in your class, inherit PEAR and make a
+ * destructor method called _yourclassname (same name as the
+ * constructor, but with a "_" prefix). Also, in your constructor you
+ * have to call the PEAR constructor: $this->PEAR();.
+ * The destructor method will be called without parameters. Note that
+ * at in some SAPI implementations (such as Apache), any output during
+ * the request shutdown (in which destructors are called) seems to be
+ * discarded. If you need to get any debug information from your
+ * destructor, use error_log(), syslog() or something similar.
+ *
+ * IMPORTANT! To use the emulated destructors you need to create the
+ * objects by reference: $obj =& new PEAR_child;
+ *
+ * @category pear
+ * @package PEAR
+ * @author Stig Bakken <ssb@php.net>
+ * @author Tomas V.V. Cox <cox@idecnet.com>
+ * @author Greg Beaver <cellog@php.net>
+ * @copyright 1997-2006 The PHP Group
+ * @license http://www.php.net/license/3_0.txt PHP License 3.0
+ * @version Release: 1.6.1
+ * @link http://pear.php.net/package/PEAR
+ * @see PEAR_Error
+ * @since Class available since PHP 4.0.2
+ * @link http://pear.php.net/manual/en/core.pear.php#core.pear.pear
+ */
+class PEAR
+{
+ // {{{ properties
+
+ /**
+ * Whether to enable internal debug messages.
+ *
+ * @var bool
+ * @access private
+ */
+ var $_debug = false;
+
+ /**
+ * Default error mode for this object.
+ *
+ * @var int
+ * @access private
+ */
+ var $_default_error_mode = null;
+
+ /**
+ * Default error options used for this object when error mode
+ * is PEAR_ERROR_TRIGGER.
+ *
+ * @var int
+ * @access private
+ */
+ var $_default_error_options = null;
+
+ /**
+ * Default error handler (callback) for this object, if error mode is
+ * PEAR_ERROR_CALLBACK.
+ *
+ * @var string
+ * @access private
+ */
+ var $_default_error_handler = '';
+
+ /**
+ * Which class to use for error objects.
+ *
+ * @var string
+ * @access private
+ */
+ var $_error_class = 'PEAR_Error';
+
+ /**
+ * An array of expected errors.
+ *
+ * @var array
+ * @access private
+ */
+ var $_expected_errors = array();
+
+ // }}}
+
+ // {{{ constructor
+
+ /**
+ * Constructor. Registers this object in
+ * $_PEAR_destructor_object_list for destructor emulation if a
+ * destructor object exists.
+ *
+ * @param string $error_class (optional) which class to use for
+ * error objects, defaults to PEAR_Error.
+ * @access public
+ * @return void
+ */
+ function PEAR($error_class = null)
+ {
+ $classname = strtolower(get_class($this));
+ if ($this->_debug) {
+ print "PEAR constructor called, class=$classname\n";
+ }
+ if ($error_class !== null) {
+ $this->_error_class = $error_class;
+ }
+ while ($classname && strcasecmp($classname, "pear")) {
+ $destructor = "_$classname";
+ if (method_exists($this, $destructor)) {
+ global $_PEAR_destructor_object_list;
+ $_PEAR_destructor_object_list[] = &$this;
+ if (!isset($GLOBALS['_PEAR_SHUTDOWN_REGISTERED'])) {
+ register_shutdown_function("_PEAR_call_destructors");
+ $GLOBALS['_PEAR_SHUTDOWN_REGISTERED'] = true;
+ }
+ break;
+ } else {
+ $classname = get_parent_class($classname);
+ }
+ }
+ }
+
+ // }}}
+ // {{{ destructor
+
+ /**
+ * Destructor (the emulated type of...). Does nothing right now,
+ * but is included for forward compatibility, so subclass
+ * destructors should always call it.
+ *
+ * See the note in the class desciption about output from
+ * destructors.
+ *
+ * @access public
+ * @return void
+ */
+ function _PEAR() {
+ if ($this->_debug) {
+ printf("PEAR destructor called, class=%s\n", strtolower(get_class($this)));
+ }
+ }
+
+ // }}}
+ // {{{ getStaticProperty()
+
+ /**
+ * If you have a class that's mostly/entirely static, and you need static
+ * properties, you can use this method to simulate them. Eg. in your method(s)
+ * do this: $myVar = &PEAR::getStaticProperty('myclass', 'myVar');
+ * You MUST use a reference, or they will not persist!
+ *
+ * @access public
+ * @param string $class The calling classname, to prevent clashes
+ * @param string $var The variable to retrieve.
+ * @return mixed A reference to the variable. If not set it will be
+ * auto initialised to NULL.
+ */
+ function &getStaticProperty($class, $var)
+ {
+ static $properties;
+ if (!isset($properties[$class])) {
+ $properties[$class] = array();
+ }
+ if (!array_key_exists($var, $properties[$class])) {
+ $properties[$class][$var] = null;
+ }
+ return $properties[$class][$var];
+ }
+
+ // }}}
+ // {{{ registerShutdownFunc()
+
+ /**
+ * Use this function to register a shutdown method for static
+ * classes.
+ *
+ * @access public
+ * @param mixed $func The function name (or array of class/method) to call
+ * @param mixed $args The arguments to pass to the function
+ * @return void
+ */
+ function registerShutdownFunc($func, $args = array())
+ {
+ // if we are called statically, there is a potential
+ // that no shutdown func is registered. Bug #6445
+ if (!isset($GLOBALS['_PEAR_SHUTDOWN_REGISTERED'])) {
+ register_shutdown_function("_PEAR_call_destructors");
+ $GLOBALS['_PEAR_SHUTDOWN_REGISTERED'] = true;
+ }
+ $GLOBALS['_PEAR_shutdown_funcs'][] = array($func, $args);
+ }
+
+ // }}}
+ // {{{ isError()
+
+ /**
+ * Tell whether a value is a PEAR error.
+ *
+ * @param mixed $data the value to test
+ * @param int $code if $data is an error object, return true
+ * only if $code is a string and
+ * $obj->getMessage() == $code or
+ * $code is an integer and $obj->getCode() == $code
+ * @access public
+ * @return bool true if parameter is an error
+ */
+ function isError($data, $code = null)
+ {
+ if (is_a($data, 'PEAR_Error')) {
+ if (is_null($code)) {
+ return true;
+ } elseif (is_string($code)) {
+ return $data->getMessage() == $code;
+ } else {
+ return $data->getCode() == $code;
+ }
+ }
+ return false;
+ }
+
+ // }}}
+ // {{{ setErrorHandling()
+
+ /**
+ * Sets how errors generated by this object should be handled.
+ * Can be invoked both in objects and statically. If called
+ * statically, setErrorHandling sets the default behaviour for all
+ * PEAR objects. If called in an object, setErrorHandling sets
+ * the default behaviour for that object.
+ *
+ * @param int $mode
+ * One of PEAR_ERROR_RETURN, PEAR_ERROR_PRINT,
+ * PEAR_ERROR_TRIGGER, PEAR_ERROR_DIE,
+ * PEAR_ERROR_CALLBACK or PEAR_ERROR_EXCEPTION.
+ *
+ * @param mixed $options
+ * When $mode is PEAR_ERROR_TRIGGER, this is the error level (one
+ * of E_USER_NOTICE, E_USER_WARNING or E_USER_ERROR).
+ *
+ * When $mode is PEAR_ERROR_CALLBACK, this parameter is expected
+ * to be the callback function or method. A callback
+ * function is a string with the name of the function, a
+ * callback method is an array of two elements: the element
+ * at index 0 is the object, and the element at index 1 is
+ * the name of the method to call in the object.
+ *
+ * When $mode is PEAR_ERROR_PRINT or PEAR_ERROR_DIE, this is
+ * a printf format string used when printing the error
+ * message.
+ *
+ * @access public
+ * @return void
+ * @see PEAR_ERROR_RETURN
+ * @see PEAR_ERROR_PRINT
+ * @see PEAR_ERROR_TRIGGER
+ * @see PEAR_ERROR_DIE
+ * @see PEAR_ERROR_CALLBACK
+ * @see PEAR_ERROR_EXCEPTION
+ *
+ * @since PHP 4.0.5
+ */
+
+ function setErrorHandling($mode = null, $options = null)
+ {
+ if (isset($this) && is_a($this, 'PEAR')) {
+ $setmode = &$this->_default_error_mode;
+ $setoptions = &$this->_default_error_options;
+ } else {
+ $setmode = &$GLOBALS['_PEAR_default_error_mode'];
+ $setoptions = &$GLOBALS['_PEAR_default_error_options'];
+ }
+
+ switch ($mode) {
+ case PEAR_ERROR_EXCEPTION:
+ case PEAR_ERROR_RETURN:
+ case PEAR_ERROR_PRINT:
+ case PEAR_ERROR_TRIGGER:
+ case PEAR_ERROR_DIE:
+ case null:
+ $setmode = $mode;
+ $setoptions = $options;
+ break;
+
+ case PEAR_ERROR_CALLBACK:
+ $setmode = $mode;
+ // class/object method callback
+ if (is_callable($options)) {
+ $setoptions = $options;
+ } else {
+ trigger_error("invalid error callback", E_USER_WARNING);
+ }
+ break;
+
+ default:
+ trigger_error("invalid error mode", E_USER_WARNING);
+ break;
+ }
+ }
+
+ // }}}
+ // {{{ expectError()
+
+ /**
+ * This method is used to tell which errors you expect to get.
+ * Expected errors are always returned with error mode
+ * PEAR_ERROR_RETURN. Expected error codes are stored in a stack,
+ * and this method pushes a new element onto it. The list of
+ * expected errors are in effect until they are popped off the
+ * stack with the popExpect() method.
+ *
+ * Note that this method can not be called statically
+ *
+ * @param mixed $code a single error code or an array of error codes to expect
+ *
+ * @return int the new depth of the "expected errors" stack
+ * @access public
+ */
+ function expectError($code = '*')
+ {
+ if (is_array($code)) {
+ array_push($this->_expected_errors, $code);
+ } else {
+ array_push($this->_expected_errors, array($code));
+ }
+ return sizeof($this->_expected_errors);
+ }
+
+ // }}}
+ // {{{ popExpect()
+
+ /**
+ * This method pops one element off the expected error codes
+ * stack.
+ *
+ * @return array the list of error codes that were popped
+ */
+ function popExpect()
+ {
+ return array_pop($this->_expected_errors);
+ }
+
+ // }}}
+ // {{{ _checkDelExpect()
+
+ /**
+ * This method checks unsets an error code if available
+ *
+ * @param mixed error code
+ * @return bool true if the error code was unset, false otherwise
+ * @access private
+ * @since PHP 4.3.0
+ */
+ function _checkDelExpect($error_code)
+ {
+ $deleted = false;
+
+ foreach ($this->_expected_errors AS $key => $error_array) {
+ if (in_array($error_code, $error_array)) {
+ unset($this->_expected_errors[$key][array_search($error_code, $error_array)]);
+ $deleted = true;
+ }
+
+ // clean up empty arrays
+ if (0 == count($this->_expected_errors[$key])) {
+ unset($this->_expected_errors[$key]);
+ }
+ }
+ return $deleted;
+ }
+
+ // }}}
+ // {{{ delExpect()
+
+ /**
+ * This method deletes all occurences of the specified element from
+ * the expected error codes stack.
+ *
+ * @param mixed $error_code error code that should be deleted
+ * @return mixed list of error codes that were deleted or error
+ * @access public
+ * @since PHP 4.3.0
+ */
+ function delExpect($error_code)
+ {
+ $deleted = false;
+
+ if ((is_array($error_code) && (0 != count($error_code)))) {
+ // $error_code is a non-empty array here;
+ // we walk through it trying to unset all
+ // values
+ foreach($error_code as $key => $error) {
+ if ($this->_checkDelExpect($error)) {
+ $deleted = true;
+ } else {
+ $deleted = false;
+ }
+ }
+ return $deleted ? true : PEAR::raiseError("The expected error you submitted does not exist"); // IMPROVE ME
+ } elseif (!empty($error_code)) {
+ // $error_code comes alone, trying to unset it
+ if ($this->_checkDelExpect($error_code)) {
+ return true;
+ } else {
+ return PEAR::raiseError("The expected error you submitted does not exist"); // IMPROVE ME
+ }
+ } else {
+ // $error_code is empty
+ return PEAR::raiseError("The expected error you submitted is empty"); // IMPROVE ME
+ }
+ }
+
+ // }}}
+ // {{{ raiseError()
+
+ /**
+ * This method is a wrapper that returns an instance of the
+ * configured error class with this object's default error
+ * handling applied. If the $mode and $options parameters are not
+ * specified, the object's defaults are used.
+ *
+ * @param mixed $message a text error message or a PEAR error object
+ *
+ * @param int $code a numeric error code (it is up to your class
+ * to define these if you want to use codes)
+ *
+ * @param int $mode One of PEAR_ERROR_RETURN, PEAR_ERROR_PRINT,
+ * PEAR_ERROR_TRIGGER, PEAR_ERROR_DIE,
+ * PEAR_ERROR_CALLBACK, PEAR_ERROR_EXCEPTION.
+ *
+ * @param mixed $options If $mode is PEAR_ERROR_TRIGGER, this parameter
+ * specifies the PHP-internal error level (one of
+ * E_USER_NOTICE, E_USER_WARNING or E_USER_ERROR).
+ * If $mode is PEAR_ERROR_CALLBACK, this
+ * parameter specifies the callback function or
+ * method. In other error modes this parameter
+ * is ignored.
+ *
+ * @param string $userinfo If you need to pass along for example debug
+ * information, this parameter is meant for that.
+ *
+ * @param string $error_class The returned error object will be
+ * instantiated from this class, if specified.
+ *
+ * @param bool $skipmsg If true, raiseError will only pass error codes,
+ * the error message parameter will be dropped.
+ *
+ * @access public
+ * @return object a PEAR error object
+ * @see PEAR::setErrorHandling
+ * @since PHP 4.0.5
+ */
+ function &raiseError($message = null,
+ $code = null,
+ $mode = null,
+ $options = null,
+ $userinfo = null,
+ $error_class = null,
+ $skipmsg = false)
+ {
+ // The error is yet a PEAR error object
+ if (is_object($message)) {
+ $code = $message->getCode();
+ $userinfo = $message->getUserInfo();
+ $error_class = $message->getType();
+ $message->error_message_prefix = '';
+ $message = $message->getMessage();
+ }
+
+ if (isset($this) && isset($this->_expected_errors) && sizeof($this->_expected_errors) > 0 && sizeof($exp = end($this->_expected_errors))) {
+ if ($exp[0] == "*" ||
+ (is_int(reset($exp)) && in_array($code, $exp)) ||
+ (is_string(reset($exp)) && in_array($message, $exp))) {
+ $mode = PEAR_ERROR_RETURN;
+ }
+ }
+ // No mode given, try global ones
+ if ($mode === null) {
+ // Class error handler
+ if (isset($this) && isset($this->_default_error_mode)) {
+ $mode = $this->_default_error_mode;
+ $options = $this->_default_error_options;
+ // Global error handler
+ } elseif (isset($GLOBALS['_PEAR_default_error_mode'])) {
+ $mode = $GLOBALS['_PEAR_default_error_mode'];
+ $options = $GLOBALS['_PEAR_default_error_options'];
+ }
+ }
+
+ if ($error_class !== null) {
+ $ec = $error_class;
+ } elseif (isset($this) && isset($this->_error_class)) {
+ $ec = $this->_error_class;
+ } else {
+ $ec = 'PEAR_Error';
+ }
+ if ($skipmsg) {
+ $a = &new $ec($code, $mode, $options, $userinfo);
+ return $a;
+ } else {
+ $a = &new $ec($message, $code, $mode, $options, $userinfo);
+ return $a;
+ }
+ }
+
+ // }}}
+ // {{{ throwError()
+
+ /**
+ * Simpler form of raiseError with fewer options. In most cases
+ * message, code and userinfo are enough.
+ *
+ * @param string $message
+ *
+ */
+ function &throwError($message = null,
+ $code = null,
+ $userinfo = null)
+ {
+ if (isset($this) && is_a($this, 'PEAR')) {
+ $a = &$this->raiseError($message, $code, null, null, $userinfo);
+ return $a;
+ } else {
+ $a = &PEAR::raiseError($message, $code, null, null, $userinfo);
+ return $a;
+ }
+ }
+
+ // }}}
+ function staticPushErrorHandling($mode, $options = null)
+ {
+ $stack = &$GLOBALS['_PEAR_error_handler_stack'];
+ $def_mode = &$GLOBALS['_PEAR_default_error_mode'];
+ $def_options = &$GLOBALS['_PEAR_default_error_options'];
+ $stack[] = array($def_mode, $def_options);
+ switch ($mode) {
+ case PEAR_ERROR_EXCEPTION:
+ case PEAR_ERROR_RETURN:
+ case PEAR_ERROR_PRINT:
+ case PEAR_ERROR_TRIGGER:
+ case PEAR_ERROR_DIE:
+ case null:
+ $def_mode = $mode;
+ $def_options = $options;
+ break;
+
+ case PEAR_ERROR_CALLBACK:
+ $def_mode = $mode;
+ // class/object method callback
+ if (is_callable($options)) {
+ $def_options = $options;
+ } else {
+ trigger_error("invalid error callback", E_USER_WARNING);
+ }
+ break;
+
+ default:
+ trigger_error("invalid error mode", E_USER_WARNING);
+ break;
+ }
+ $stack[] = array($mode, $options);
+ return true;
+ }
+
+ function staticPopErrorHandling()
+ {
+ $stack = &$GLOBALS['_PEAR_error_handler_stack'];
+ $setmode = &$GLOBALS['_PEAR_default_error_mode'];
+ $setoptions = &$GLOBALS['_PEAR_default_error_options'];
+ array_pop($stack);
+ list($mode, $options) = $stack[sizeof($stack) - 1];
+ array_pop($stack);
+ switch ($mode) {
+ case PEAR_ERROR_EXCEPTION:
+ case PEAR_ERROR_RETURN:
+ case PEAR_ERROR_PRINT:
+ case PEAR_ERROR_TRIGGER:
+ case PEAR_ERROR_DIE:
+ case null:
+ $setmode = $mode;
+ $setoptions = $options;
+ break;
+
+ case PEAR_ERROR_CALLBACK:
+ $setmode = $mode;
+ // class/object method callback
+ if (is_callable($options)) {
+ $setoptions = $options;
+ } else {
+ trigger_error("invalid error callback", E_USER_WARNING);
+ }
+ break;
+
+ default:
+ trigger_error("invalid error mode", E_USER_WARNING);
+ break;
+ }
+ return true;
+ }
+
+ // {{{ pushErrorHandling()
+
+ /**
+ * Push a new error handler on top of the error handler options stack. With this
+ * you can easily override the actual error handler for some code and restore
+ * it later with popErrorHandling.
+ *
+ * @param mixed $mode (same as setErrorHandling)
+ * @param mixed $options (same as setErrorHandling)
+ *
+ * @return bool Always true
+ *
+ * @see PEAR::setErrorHandling
+ */
+ function pushErrorHandling($mode, $options = null)
+ {
+ $stack = &$GLOBALS['_PEAR_error_handler_stack'];
+ if (isset($this) && is_a($this, 'PEAR')) {
+ $def_mode = &$this->_default_error_mode;
+ $def_options = &$this->_default_error_options;
+ } else {
+ $def_mode = &$GLOBALS['_PEAR_default_error_mode'];
+ $def_options = &$GLOBALS['_PEAR_default_error_options'];
+ }
+ $stack[] = array($def_mode, $def_options);
+
+ if (isset($this) && is_a($this, 'PEAR')) {
+ $this->setErrorHandling($mode, $options);
+ } else {
+ PEAR::setErrorHandling($mode, $options);
+ }
+ $stack[] = array($mode, $options);
+ return true;
+ }
+
+ // }}}
+ // {{{ popErrorHandling()
+
+ /**
+ * Pop the last error handler used
+ *
+ * @return bool Always true
+ *
+ * @see PEAR::pushErrorHandling
+ */
+ function popErrorHandling()
+ {
+ $stack = &$GLOBALS['_PEAR_error_handler_stack'];
+ array_pop($stack);
+ list($mode, $options) = $stack[sizeof($stack) - 1];
+ array_pop($stack);
+ if (isset($this) && is_a($this, 'PEAR')) {
+ $this->setErrorHandling($mode, $options);
+ } else {
+ PEAR::setErrorHandling($mode, $options);
+ }
+ return true;
+ }
+
+ // }}}
+ // {{{ loadExtension()
+
+ /**
+ * OS independant PHP extension load. Remember to take care
+ * on the correct extension name for case sensitive OSes.
+ *
+ * @param string $ext The extension name
+ * @return bool Success or not on the dl() call
+ */
+ function loadExtension($ext)
+ {
+ if (!extension_loaded($ext)) {
+ // if either returns true dl() will produce a FATAL error, stop that
+ if ((ini_get('enable_dl') != 1) || (ini_get('safe_mode') == 1)) {
+ return false;
+ }
+ if (OS_WINDOWS) {
+ $suffix = '.dll';
+ } elseif (PHP_OS == 'HP-UX') {
+ $suffix = '.sl';
+ } elseif (PHP_OS == 'AIX') {
+ $suffix = '.a';
+ } elseif (PHP_OS == 'OSX') {
+ $suffix = '.bundle';
+ } else {
+ $suffix = '.so';
+ }
+ return @dl('php_'.$ext.$suffix) || @dl($ext.$suffix);
+ }
+ return true;
+ }
+
+ // }}}
+}
+
+// {{{ _PEAR_call_destructors()
+
+function _PEAR_call_destructors()
+{
+ global $_PEAR_destructor_object_list;
+ if (is_array($_PEAR_destructor_object_list) &&
+ sizeof($_PEAR_destructor_object_list))
+ {
+ reset($_PEAR_destructor_object_list);
+ if (PEAR::getStaticProperty('PEAR', 'destructlifo')) {
+ $_PEAR_destructor_object_list = array_reverse($_PEAR_destructor_object_list);
+ }
+ while (list($k, $objref) = each($_PEAR_destructor_object_list)) {
+ $classname = get_class($objref);
+ while ($classname) {
+ $destructor = "_$classname";
+ if (method_exists($objref, $destructor)) {
+ $objref->$destructor();
+ break;
+ } else {
+ $classname = get_parent_class($classname);
+ }
+ }
+ }
+ // Empty the object list to ensure that destructors are
+ // not called more than once.
+ $_PEAR_destructor_object_list = array();
+ }
+
+ // Now call the shutdown functions
+ if (is_array($GLOBALS['_PEAR_shutdown_funcs']) AND !empty($GLOBALS['_PEAR_shutdown_funcs'])) {
+ foreach ($GLOBALS['_PEAR_shutdown_funcs'] as $value) {
+ call_user_func_array($value[0], $value[1]);
+ }
+ }
+}
+
+// }}}
+/**
+ * Standard PEAR error class for PHP 4
+ *
+ * This class is supserseded by {@link PEAR_Exception} in PHP 5
+ *
+ * @category pear
+ * @package PEAR
+ * @author Stig Bakken <ssb@php.net>
+ * @author Tomas V.V. Cox <cox@idecnet.com>
+ * @author Gregory Beaver <cellog@php.net>
+ * @copyright 1997-2006 The PHP Group
+ * @license http://www.php.net/license/3_0.txt PHP License 3.0
+ * @version Release: 1.6.1
+ * @link http://pear.php.net/manual/en/core.pear.pear-error.php
+ * @see PEAR::raiseError(), PEAR::throwError()
+ * @since Class available since PHP 4.0.2
+ */
+class PEAR_Error
+{
+ // {{{ properties
+
+ var $error_message_prefix = '';
+ var $mode = PEAR_ERROR_RETURN;
+ var $level = E_USER_NOTICE;
+ var $code = -1;
+ var $message = '';
+ var $userinfo = '';
+ var $backtrace = null;
+
+ // }}}
+ // {{{ constructor
+
+ /**
+ * PEAR_Error constructor
+ *
+ * @param string $message message
+ *
+ * @param int $code (optional) error code
+ *
+ * @param int $mode (optional) error mode, one of: PEAR_ERROR_RETURN,
+ * PEAR_ERROR_PRINT, PEAR_ERROR_DIE, PEAR_ERROR_TRIGGER,
+ * PEAR_ERROR_CALLBACK or PEAR_ERROR_EXCEPTION
+ *
+ * @param mixed $options (optional) error level, _OR_ in the case of
+ * PEAR_ERROR_CALLBACK, the callback function or object/method
+ * tuple.
+ *
+ * @param string $userinfo (optional) additional user/debug info
+ *
+ * @access public
+ *
+ */
+ function PEAR_Error($message = 'unknown error', $code = null,
+ $mode = null, $options = null, $userinfo = null)
+ {
+ if ($mode === null) {
+ $mode = PEAR_ERROR_RETURN;
+ }
+ $this->message = $message;
+ $this->code = $code;
+ $this->mode = $mode;
+ $this->userinfo = $userinfo;
+ if (!PEAR::getStaticProperty('PEAR_Error', 'skiptrace')) {
+ $this->backtrace = debug_backtrace();
+ if (isset($this->backtrace[0]) && isset($this->backtrace[0]['object'])) {
+ unset($this->backtrace[0]['object']);
+ }
+ }
+ if ($mode & PEAR_ERROR_CALLBACK) {
+ $this->level = E_USER_NOTICE;
+ $this->callback = $options;
+ } else {
+ if ($options === null) {
+ $options = E_USER_NOTICE;
+ }
+ $this->level = $options;
+ $this->callback = null;
+ }
+ if ($this->mode & PEAR_ERROR_PRINT) {
+ if (is_null($options) || is_int($options)) {
+ $format = "%s";
+ } else {
+ $format = $options;
+ }
+ printf($format, $this->getMessage());
+ }
+ if ($this->mode & PEAR_ERROR_TRIGGER) {
+ trigger_error($this->getMessage(), $this->level);
+ }
+ if ($this->mode & PEAR_ERROR_DIE) {
+ $msg = $this->getMessage();
+ if (is_null($options) || is_int($options)) {
+ $format = "%s";
+ if (substr($msg, -1) != "\n") {
+ $msg .= "\n";
+ }
+ } else {
+ $format = $options;
+ }
+ die(sprintf($format, $msg));
+ }
+ if ($this->mode & PEAR_ERROR_CALLBACK) {
+ if (is_callable($this->callback)) {
+ call_user_func($this->callback, $this);
+ }
+ }
+ if ($this->mode & PEAR_ERROR_EXCEPTION) {
+ trigger_error("PEAR_ERROR_EXCEPTION is obsolete, use class PEAR_Exception for exceptions", E_USER_WARNING);
+ eval('$e = new Exception($this->message, $this->code);throw($e);');
+ }
+ }
+
+ // }}}
+ // {{{ getMode()
+
+ /**
+ * Get the error mode from an error object.
+ *
+ * @return int error mode
+ * @access public
+ */
+ function getMode() {
+ return $this->mode;
+ }
+
+ // }}}
+ // {{{ getCallback()
+
+ /**
+ * Get the callback function/method from an error object.
+ *
+ * @return mixed callback function or object/method array
+ * @access public
+ */
+ function getCallback() {
+ return $this->callback;
+ }
+
+ // }}}
+ // {{{ getMessage()
+
+
+ /**
+ * Get the error message from an error object.
+ *
+ * @return string full error message
+ * @access public
+ */
+ function getMessage()
+ {
+ return ($this->error_message_prefix . $this->message);
+ }
+
+
+ // }}}
+ // {{{ getCode()
+
+ /**
+ * Get error code from an error object
+ *
+ * @return int error code
+ * @access public
+ */
+ function getCode()
+ {
+ return $this->code;
+ }
+
+ // }}}
+ // {{{ getType()
+
+ /**
+ * Get the name of this error/exception.
+ *
+ * @return string error/exception name (type)
+ * @access public
+ */
+ function getType()
+ {
+ return get_class($this);
+ }
+
+ // }}}
+ // {{{ getUserInfo()
+
+ /**
+ * Get additional user-supplied information.
+ *
+ * @return string user-supplied information
+ * @access public
+ */
+ function getUserInfo()
+ {
+ return $this->userinfo;
+ }
+
+ // }}}
+ // {{{ getDebugInfo()
+
+ /**
+ * Get additional debug information supplied by the application.
+ *
+ * @return string debug information
+ * @access public
+ */
+ function getDebugInfo()
+ {
+ return $this->getUserInfo();
+ }
+
+ // }}}
+ // {{{ getBacktrace()
+
+ /**
+ * Get the call backtrace from where the error was generated.
+ * Supported with PHP 4.3.0 or newer.
+ *
+ * @param int $frame (optional) what frame to fetch
+ * @return array Backtrace, or NULL if not available.
+ * @access public
+ */
+ function getBacktrace($frame = null)
+ {
+ if (defined('PEAR_IGNORE_BACKTRACE')) {
+ return null;
+ }
+ if ($frame === null) {
+ return $this->backtrace;
+ }
+ return $this->backtrace[$frame];
+ }
+
+ // }}}
+ // {{{ addUserInfo()
+
+ function addUserInfo($info)
+ {
+ if (empty($this->userinfo)) {
+ $this->userinfo = $info;
+ } else {
+ $this->userinfo .= " ** $info";
+ }
+ }
+
+ // }}}
+ // {{{ toString()
+
+ /**
+ * Make a string representation of this object.
+ *
+ * @return string a string with an object summary
+ * @access public
+ */
+ function toString() {
+ $modes = array();
+ $levels = array(E_USER_NOTICE => 'notice',
+ E_USER_WARNING => 'warning',
+ E_USER_ERROR => 'error');
+ if ($this->mode & PEAR_ERROR_CALLBACK) {
+ if (is_array($this->callback)) {
+ $callback = (is_object($this->callback[0]) ?
+ strtolower(get_class($this->callback[0])) :
+ $this->callback[0]) . '::' .
+ $this->callback[1];
+ } else {
+ $callback = $this->callback;
+ }
+ return sprintf('[%s: message="%s" code=%d mode=callback '.
+ 'callback=%s prefix="%s" info="%s"]',
+ strtolower(get_class($this)), $this->message, $this->code,
+ $callback, $this->error_message_prefix,
+ $this->userinfo);
+ }
+ if ($this->mode & PEAR_ERROR_PRINT) {
+ $modes[] = 'print';
+ }
+ if ($this->mode & PEAR_ERROR_TRIGGER) {
+ $modes[] = 'trigger';
+ }
+ if ($this->mode & PEAR_ERROR_DIE) {
+ $modes[] = 'die';
+ }
+ if ($this->mode & PEAR_ERROR_RETURN) {
+ $modes[] = 'return';
+ }
+ return sprintf('[%s: message="%s" code=%d mode=%s level=%s '.
+ 'prefix="%s" info="%s"]',
+ strtolower(get_class($this)), $this->message, $this->code,
+ implode("|", $modes), $levels[$this->level],
+ $this->error_message_prefix,
+ $this->userinfo);
+ }
+
+ // }}}
+}
+
+/*
+ * Local Variables:
+ * mode: php
+ * tab-width: 4
+ * c-basic-offset: 4
+ * End:
+ */
+?>
/tags/v1.13-la-grande-rue/bibliotheque/pear/PEAR.php
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/bibliotheque/pear/Pager/Common.php
===================================================================
--- tags/v1.13-la-grande-rue/bibliotheque/pear/Pager/Common.php (revision 0)
+++ tags/v1.13-la-grande-rue/bibliotheque/pear/Pager/Common.php (revision 280)
@@ -0,0 +1,1539 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+
+/**
+ * Contains the Pager_Common class
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE FREEBSD PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category HTML
+ * @package Pager
+ * @author Lorenzo Alberton <l dot alberton at quipo dot it>
+ * @author Richard Heyes <richard@phpguru.org>
+ * @copyright 2003-2006 Lorenzo Alberton, Richard Heyes
+ * @license http://www.debian.org/misc/bsd.license BSD License (3 Clause)
+ * @version CVS: $Id$
+ * @link http://pear.php.net/package/Pager
+ */
+
+/**
+ * Two constants used to guess the path- and file-name of the page
+ * when the user doesn't set any other value
+ */
+if (substr($_SERVER['PHP_SELF'], -1) == '/') {
+ $http = !empty($_SERVER['HTTPS']) ? 'https://' : 'http://';
+ define('CURRENT_FILENAME', '');
+ define('CURRENT_PATHNAME', $http.$_SERVER['HTTP_HOST'].str_replace('\\', '/', $_SERVER['PHP_SELF']));
+} else {
+ define('CURRENT_FILENAME', preg_replace('/(.*)\?.*/', '\\1', basename($_SERVER['PHP_SELF'])));
+ define('CURRENT_PATHNAME', str_replace('\\', '/', dirname($_SERVER['PHP_SELF'])));
+}
+/**
+ * Error codes
+ */
+define('PAGER_OK', 0);
+define('ERROR_PAGER', -1);
+define('ERROR_PAGER_INVALID', -2);
+define('ERROR_PAGER_INVALID_PLACEHOLDER', -3);
+define('ERROR_PAGER_INVALID_USAGE', -4);
+define('ERROR_PAGER_NOT_IMPLEMENTED', -5);
+
+/**
+ * Pager_Common - Common base class for [Sliding|Jumping] Window Pager
+ * Extend this class to write a custom paging class
+ *
+ * @category HTML
+ * @package Pager
+ * @author Lorenzo Alberton <l dot alberton at quipo dot it>
+ * @author Richard Heyes <richard@phpguru.org>
+ * @copyright 2003-2005 Lorenzo Alberton, Richard Heyes
+ * @license http://www.php.net/license/3_0.txt PHP License 3.0
+ * @link http://pear.php.net/package/Pager
+ */
+class Pager_Common
+{
+ // {{{ class vars
+
+ /**
+ * @var integer number of items
+ * @access private
+ */
+ var $_totalItems;
+
+ /**
+ * @var integer number of items per page
+ * @access private
+ */
+ var $_perPage = 10;
+
+ /**
+ * @var integer number of page links for each window
+ * @access private
+ */
+ var $_delta = 10;
+
+ /**
+ * @var integer current page number
+ * @access private
+ */
+ var $_currentPage = 1;
+
+ /**
+ * @var integer total pages number
+ * @access private
+ */
+ var $_totalPages = 1;
+
+ /**
+ * @var string CSS class for links
+ * @access private
+ */
+ var $_linkClass = '';
+
+ /**
+ * @var string wrapper for CSS class name
+ * @access private
+ */
+ var $_classString = '';
+
+ /**
+ * @var string path name
+ * @access private
+ */
+ var $_path = CURRENT_PATHNAME;
+
+ /**
+ * @var string file name
+ * @access private
+ */
+ var $_fileName = CURRENT_FILENAME;
+
+ /**
+ * @var boolean If false, don't override the fileName option. Use at your own risk.
+ * @access private
+ */
+ var $_fixFileName = true;
+
+ /**
+ * @var boolean you have to use FALSE with mod_rewrite
+ * @access private
+ */
+ var $_append = true;
+
+ /**
+ * @var string specifies which HTTP method to use
+ * @access private
+ */
+ var $_httpMethod = 'GET';
+
+ /**
+ * @var string specifies which HTML form to use
+ * @access private
+ */
+ var $_formID = '';
+
+ /**
+ * @var boolean whether or not to import submitted data
+ * @access private
+ */
+ var $_importQuery = true;
+
+ /**
+ * @var string name of the querystring var for pageID
+ * @access private
+ */
+ var $_urlVar = 'pageID';
+
+ /**
+ * @var array data to pass through the link
+ * @access private
+ */
+ var $_linkData = array();
+
+ /**
+ * @var array additional URL vars
+ * @access private
+ */
+ var $_extraVars = array();
+
+ /**
+ * @var array URL vars to ignore
+ * @access private
+ */
+ var $_excludeVars = array();
+
+ /**
+ * @var boolean TRUE => expanded mode (for Pager_Sliding)
+ * @access private
+ */
+ var $_expanded = true;
+
+ /**
+ * @var boolean TRUE => show accesskey attribute on <a> tags
+ * @access private
+ */
+ var $_accesskey = false;
+
+ /**
+ * @var string extra attributes for the <a> tag
+ * @access private
+ */
+ var $_attributes = '';
+
+ /**
+ * @var string onclick
+ * @access private
+ */
+ var $_onclick = '';
+
+ /**
+ * @var string alt text for "first page" (use "%d" placeholder for page number)
+ * @access private
+ */
+ var $_altFirst = 'first page';
+
+ /**
+ * @var string alt text for "previous page"
+ * @access private
+ */
+ var $_altPrev = 'previous page';
+
+ /**
+ * @var string alt text for "next page"
+ * @access private
+ */
+ var $_altNext = 'next page';
+
+ /**
+ * @var string alt text for "last page" (use "%d" placeholder for page number)
+ * @access private
+ */
+ var $_altLast = 'last page';
+
+ /**
+ * @var string alt text for "page"
+ * @access private
+ */
+ var $_altPage = 'page';
+
+ /**
+ * @var string image/text to use as "prev" link
+ * @access private
+ */
+ var $_prevImg = '&lt;&lt; Back';
+
+ /**
+ * @var string image/text to use as "next" link
+ * @access private
+ */
+ var $_nextImg = 'Next &gt;&gt;';
+
+ /**
+ * @var string link separator
+ * @access private
+ */
+ var $_separator = '';
+
+ /**
+ * @var integer number of spaces before separator
+ * @access private
+ */
+ var $_spacesBeforeSeparator = 0;
+
+ /**
+ * @var integer number of spaces after separator
+ * @access private
+ */
+ var $_spacesAfterSeparator = 1;
+
+ /**
+ * @var string CSS class name for current page link
+ * @access private
+ */
+ var $_curPageLinkClassName = '';
+
+ /**
+ * @var string Text before current page link
+ * @access private
+ */
+ var $_curPageSpanPre = '';
+
+ /**
+ * @var string Text after current page link
+ * @access private
+ */
+ var $_curPageSpanPost = '';
+
+ /**
+ * @var string Text before first page link
+ * @access private
+ */
+ var $_firstPagePre = '[';
+
+ /**
+ * @var string Text to be used for first page link
+ * @access private
+ */
+ var $_firstPageText = '';
+
+ /**
+ * @var string Text after first page link
+ * @access private
+ */
+ var $_firstPagePost = ']';
+
+ /**
+ * @var string Text before last page link
+ * @access private
+ */
+ var $_lastPagePre = '[';
+
+ /**
+ * @var string Text to be used for last page link
+ * @access private
+ */
+ var $_lastPageText = '';
+
+ /**
+ * @var string Text after last page link
+ * @access private
+ */
+ var $_lastPagePost = ']';
+
+ /**
+ * @var string Will contain the HTML code for the spaces
+ * @access private
+ */
+ var $_spacesBefore = '';
+
+ /**
+ * @var string Will contain the HTML code for the spaces
+ * @access private
+ */
+ var $_spacesAfter = '';
+
+ /**
+ * @var string $_firstLinkTitle
+ * @access private
+ */
+ var $_firstLinkTitle = 'first page';
+
+ /**
+ * @var string $_nextLinkTitle
+ * @access private
+ */
+ var $_nextLinkTitle = 'next page';
+
+ /**
+ * @var string $_prevLinkTitle
+ * @access private
+ */
+ var $_prevLinkTitle = 'previous page';
+
+ /**
+ * @var string $_lastLinkTitle
+ * @access private
+ */
+ var $_lastLinkTitle = 'last page';
+
+ /**
+ * @var string Text to be used for the 'show all' option in the select box
+ * @access private
+ */
+ var $_showAllText = '';
+
+ /**
+ * @var array data to be paged
+ * @access private
+ */
+ var $_itemData = null;
+
+ /**
+ * @var boolean If TRUE and there's only one page, links aren't shown
+ * @access private
+ */
+ var $_clearIfVoid = true;
+
+ /**
+ * @var boolean Use session for storing the number of items per page
+ * @access private
+ */
+ var $_useSessions = false;
+
+ /**
+ * @var boolean Close the session when finished reading/writing data
+ * @access private
+ */
+ var $_closeSession = false;
+
+ /**
+ * @var string name of the session var for number of items per page
+ * @access private
+ */
+ var $_sessionVar = 'setPerPage';
+
+ /**
+ * Pear error mode (when raiseError is called)
+ * (see PEAR doc)
+ *
+ * @var int $_pearErrorMode
+ * @access private
+ */
+ var $_pearErrorMode = null;
+
+ // }}}
+ // {{{ public vars
+
+ /**
+ * @var string Complete set of links
+ * @access public
+ */
+ var $links = '';
+
+ /**
+ * @var string Complete set of link tags
+ * @access public
+ */
+ var $linkTags = '';
+
+ /**
+ * @var array Array with a key => value pair representing
+ * page# => bool value (true if key==currentPageNumber).
+ * can be used for extreme customization.
+ * @access public
+ */
+ var $range = array();
+
+ /**
+ * @var array list of available options (safety check)
+ * @access private
+ */
+ var $_allowed_options = array(
+ 'totalItems',
+ 'perPage',
+ 'delta',
+ 'linkClass',
+ 'path',
+ 'fileName',
+ 'fixFileName',
+ 'append',
+ 'httpMethod',
+ 'formID',
+ 'importQuery',
+ 'urlVar',
+ 'altFirst',
+ 'altPrev',
+ 'altNext',
+ 'altLast',
+ 'altPage',
+ 'prevImg',
+ 'nextImg',
+ 'expanded',
+ 'accesskey',
+ 'attributes',
+ 'onclick',
+ 'separator',
+ 'spacesBeforeSeparator',
+ 'spacesAfterSeparator',
+ 'curPageLinkClassName',
+ 'curPageSpanPre',
+ 'curPageSpanPost',
+ 'firstPagePre',
+ 'firstPageText',
+ 'firstPagePost',
+ 'lastPagePre',
+ 'lastPageText',
+ 'lastPagePost',
+ 'firstLinkTitle',
+ 'nextLinkTitle',
+ 'prevLinkTitle',
+ 'lastLinkTitle',
+ 'showAllText',
+ 'itemData',
+ 'clearIfVoid',
+ 'useSessions',
+ 'closeSession',
+ 'sessionVar',
+ 'pearErrorMode',
+ 'extraVars',
+ 'excludeVars',
+ 'currentPage',
+ );
+
+ // }}}
+ // {{{ build()
+
+ /**
+ * Generate or refresh the links and paged data after a call to setOptions()
+ *
+ * @access public
+ */
+ function build()
+ {
+ //reset
+ $this->_pageData = array();
+ $this->links = '';
+
+ $this->_generatePageData();
+ $this->_setFirstLastText();
+
+ if ($this->_totalPages > (2 * $this->_delta + 1)) {
+ $this->links .= $this->_printFirstPage();
+ }
+
+ $this->links .= $this->_getBackLink();
+ $this->links .= $this->_getPageLinks();
+ $this->links .= $this->_getNextLink();
+
+ $this->linkTags .= $this->_getFirstLinkTag();
+ $this->linkTags .= $this->_getPrevLinkTag();
+ $this->linkTags .= $this->_getNextLinkTag();
+ $this->linkTags .= $this->_getLastLinkTag();
+
+ if ($this->_totalPages > (2 * $this->_delta + 1)) {
+ $this->links .= $this->_printLastPage();
+ }
+ }
+
+ // }}}
+ // {{{ getPageData()
+
+ /**
+ * Returns an array of current pages data
+ *
+ * @param $pageID Desired page ID (optional)
+ * @return array Page data
+ * @access public
+ */
+ function getPageData($pageID = null)
+ {
+ $pageID = empty($pageID) ? $this->_currentPage : $pageID;
+
+ if (!isset($this->_pageData)) {
+ $this->_generatePageData();
+ }
+ if (!empty($this->_pageData[$pageID])) {
+ return $this->_pageData[$pageID];
+ }
+ return array();
+ }
+
+ // }}}
+ // {{{ getPageIdByOffset()
+
+ /**
+ * Returns pageID for given offset
+ *
+ * @param $index Offset to get pageID for
+ * @return int PageID for given offset
+ */
+ function getPageIdByOffset($index)
+ {
+ $msg = '<b>PEAR::Pager Error:</b>'
+ .' function "getPageIdByOffset()" not implemented.';
+ return $this->raiseError($msg, ERROR_PAGER_NOT_IMPLEMENTED);
+ }
+
+ // }}}
+ // {{{ getOffsetByPageId()
+
+ /**
+ * Returns offsets for given pageID. Eg, if you
+ * pass it pageID one and your perPage limit is 10
+ * it will return (1, 10). PageID of 2 would
+ * give you (11, 20).
+ *
+ * @param integer PageID to get offsets for
+ * @return array First and last offsets
+ * @access public
+ */
+ function getOffsetByPageId($pageid = null)
+ {
+ $pageid = isset($pageid) ? $pageid : $this->_currentPage;
+ if (!isset($this->_pageData)) {
+ $this->_generatePageData();
+ }
+
+ if (isset($this->_pageData[$pageid]) || is_null($this->_itemData)) {
+ return array(
+ max(($this->_perPage * ($pageid - 1)) + 1, 1),
+ min($this->_totalItems, $this->_perPage * $pageid)
+ );
+ } else {
+ return array(0, 0);
+ }
+ }
+
+ // }}}
+ // {{{ getPageRangeByPageId()
+
+ /**
+ * @param integer PageID to get offsets for
+ * @return array First and last offsets
+ */
+ function getPageRangeByPageId($pageID)
+ {
+ $msg = '<b>PEAR::Pager Error:</b>'
+ .' function "getPageRangeByPageId()" not implemented.';
+ return $this->raiseError($msg, ERROR_PAGER_NOT_IMPLEMENTED);
+ }
+
+ // }}}
+ // {{{ getLinks()
+
+ /**
+ * Returns back/next/first/last and page links,
+ * both as ordered and associative array.
+ *
+ * NB: in original PEAR::Pager this method accepted two parameters,
+ * $back_html and $next_html. Now the only parameter accepted is
+ * an integer ($pageID), since the html text for prev/next links can
+ * be set in the factory. If a second parameter is provided, then
+ * the method act as it previously did. This hack was done to mantain
+ * backward compatibility only.
+ *
+ * @param integer $pageID Optional pageID. If specified, links
+ * for that page are provided instead of current one. [ADDED IN NEW PAGER VERSION]
+ * @param string $next_html HTML to put inside the next link [deprecated: use the factory instead]
+ * @return array back/next/first/last and page links
+ */
+ function getLinks($pageID=null, $next_html='')
+ {
+ $msg = '<b>PEAR::Pager Error:</b>'
+ .' function "getLinks()" not implemented.';
+ return $this->raiseError($msg, ERROR_PAGER_NOT_IMPLEMENTED);
+ }
+
+ // }}}
+ // {{{ getCurrentPageID()
+
+ /**
+ * Returns ID of current page
+ *
+ * @return integer ID of current page
+ */
+ function getCurrentPageID()
+ {
+ return $this->_currentPage;
+ }
+
+ // }}}
+ // {{{ getNextPageID()
+
+ /**
+ * Returns next page ID. If current page is last page
+ * this function returns FALSE
+ *
+ * @return mixed Next page ID
+ */
+ function getNextPageID()
+ {
+ return ($this->getCurrentPageID() == $this->numPages() ? false : $this->getCurrentPageID() + 1);
+ }
+
+ // }}}
+ // {{{ getPreviousPageID()
+
+ /**
+ * Returns previous page ID. If current page is first page
+ * this function returns FALSE
+ *
+ * @return mixed Previous pages' ID
+ */
+ function getPreviousPageID()
+ {
+ return $this->isFirstPage() ? false : $this->getCurrentPageID() - 1;
+ }
+
+ // }}}
+ // {{{ numItems()
+
+ /**
+ * Returns number of items
+ *
+ * @return int Number of items
+ */
+ function numItems()
+ {
+ return $this->_totalItems;
+ }
+
+ // }}}
+ // {{{ numPages()
+
+ /**
+ * Returns number of pages
+ *
+ * @return int Number of pages
+ */
+ function numPages()
+ {
+ return (int)$this->_totalPages;
+ }
+
+ // }}}
+ // {{{ isFirstPage()
+
+ /**
+ * Returns whether current page is first page
+ *
+ * @return bool First page or not
+ */
+ function isFirstPage()
+ {
+ return ($this->_currentPage < 2);
+ }
+
+ // }}}
+ // {{{ isLastPage()
+
+ /**
+ * Returns whether current page is last page
+ *
+ * @return bool Last page or not
+ */
+ function isLastPage()
+ {
+ return ($this->_currentPage == $this->_totalPages);
+ }
+
+ // }}}
+ // {{{ isLastPageComplete()
+
+ /**
+ * Returns whether last page is complete
+ *
+ * @return bool Last age complete or not
+ */
+ function isLastPageComplete()
+ {
+ return !($this->_totalItems % $this->_perPage);
+ }
+
+ // }}}
+ // {{{ _generatePageData()
+
+ /**
+ * Calculates all page data
+ * @access private
+ */
+ function _generatePageData()
+ {
+ // Been supplied an array of data?
+ if (!is_null($this->_itemData)) {
+ $this->_totalItems = count($this->_itemData);
+ }
+ $this->_totalPages = ceil((float)$this->_totalItems / (float)$this->_perPage);
+ $i = 1;
+ if (!empty($this->_itemData)) {
+ foreach ($this->_itemData as $key => $value) {
+ $this->_pageData[$i][$key] = $value;
+ if (count($this->_pageData[$i]) >= $this->_perPage) {
+ $i++;
+ }
+ }
+ } else {
+ $this->_pageData = array();
+ }
+
+ //prevent URL modification
+ $this->_currentPage = min($this->_currentPage, $this->_totalPages);
+ }
+
+ // }}}
+ // {{{ _renderLink()
+
+ /**
+ * Renders a link using the appropriate method
+ *
+ * @param altText Alternative text for this link (title property)
+ * @param linkText Text contained by this link
+ * @return string The link in string form
+ * @access private
+ */
+ function _renderLink($altText, $linkText)
+ {
+ if ($this->_httpMethod == 'GET') {
+ if ($this->_append) {
+ $href = '?' . $this->_http_build_query_wrapper($this->_linkData);
+ } else {
+ $href = str_replace('%d', $this->_linkData[$this->_urlVar], $this->_fileName);
+ }
+ $onclick = '';
+ if (array_key_exists($this->_urlVar, $this->_linkData)) {
+ $onclick = str_replace('%d', $this->_linkData[$this->_urlVar], $this->_onclick);
+ }
+ return sprintf('<a href="%s"%s%s%s%s title="%s">%s</a>',
+ htmlentities($this->_url . $href),
+ empty($this->_classString) ? '' : ' '.$this->_classString,
+ empty($this->_attributes) ? '' : ' '.$this->_attributes,
+ empty($this->_accesskey) ? '' : ' accesskey="'.$this->_linkData[$this->_urlVar].'"',
+ empty($onclick) ? '' : ' onclick="'.$onclick.'"',
+ $altText,
+ $linkText
+ );
+ } elseif ($this->_httpMethod == 'POST') {
+ return sprintf("<a href='javascript:void(0)' onclick='%s'%s%s%s title='%s'>%s</a>",
+ $this->_generateFormOnClick($this->_url, $this->_linkData),
+ empty($this->_classString) ? '' : ' '.$this->_classString,
+ empty($this->_attributes) ? '' : ' '.$this->_attributes,
+ empty($this->_accesskey) ? '' : ' accesskey=\''.$this->_linkData[$this->_urlVar].'\'',
+ $altText,
+ $linkText
+ );
+ }
+ return '';
+ }
+
+ // }}}
+ // {{{ _generateFormOnClick()
+
+ /**
+ * Mimics http_build_query() behavior in the way the data
+ * in $data will appear when it makes it back to the server.
+ * For example:
+ * $arr = array('array' => array(array('hello', 'world'),
+ * 'things' => array('stuff', 'junk'));
+ * http_build_query($arr)
+ * and _generateFormOnClick('foo.php', $arr)
+ * will yield
+ * $_REQUEST['array'][0][0] === 'hello'
+ * $_REQUEST['array'][0][1] === 'world'
+ * $_REQUEST['array']['things'][0] === 'stuff'
+ * $_REQUEST['array']['things'][1] === 'junk'
+ *
+ * However, instead of generating a query string, it generates
+ * Javascript to create and submit a form.
+ *
+ * @param string $formAction where the form should be submitted
+ * @param array $data the associative array of names and values
+ * @return string A string of javascript that generates a form and submits it
+ * @access private
+ */
+ function _generateFormOnClick($formAction, $data)
+ {
+ // Check we have an array to work with
+ if (!is_array($data)) {
+ trigger_error(
+ '_generateForm() Parameter 1 expected to be Array or Object. Incorrect value given.',
+ E_USER_WARNING
+ );
+ return false;
+ }
+
+ if (!empty($this->_formID)) {
+ $str = 'var form = document.getElementById("'.$this->_formID.'"); var input = ""; ';
+ } else {
+ $str = 'var form = document.createElement("form"); var input = ""; ';
+ }
+
+ // We /shouldn't/ need to escape the URL ...
+ $str .= sprintf('form.action = "%s"; ', htmlentities($formAction));
+ $str .= sprintf('form.method = "%s"; ', $this->_httpMethod);
+ foreach ($data as $key => $val) {
+ $str .= $this->_generateFormOnClickHelper($val, $key);
+ }
+
+ if (empty($this->_formID)) {
+ $str .= 'document.getElementsByTagName("body")[0].appendChild(form);';
+ }
+
+ $str .= 'form.submit(); return false;';
+ return $str;
+ }
+
+ // }}}
+ // {{{ _generateFormOnClickHelper
+
+ /**
+ * This is used by _generateFormOnClick().
+ * Recursively processes the arrays, objects, and literal values.
+ *
+ * @param data Data that should be rendered
+ * @param prev The name so far
+ * @return string A string of Javascript that creates form inputs
+ * representing the data
+ * @access private
+ */
+ function _generateFormOnClickHelper($data, $prev = '')
+ {
+ $str = '';
+ if (is_array($data) || is_object($data)) {
+ // foreach key/visible member
+ foreach ((array)$data as $key => $val) {
+ // append [$key] to prev
+ $tempKey = sprintf('%s[%s]', $prev, $key);
+ $str .= $this->_generateFormOnClickHelper($val, $tempKey);
+ }
+ } else { // must be a literal value
+ // escape newlines and carriage returns
+ $search = array("\n", "\r");
+ $replace = array('\n', '\n');
+ $escapedData = str_replace($search, $replace, $data);
+ // am I forgetting any dangerous whitespace?
+ // would a regex be faster?
+ // if it's already encoded, don't encode it again
+ if (!$this->_isEncoded($escapedData)) {
+ $escapedData = urlencode($escapedData);
+ }
+ $escapedData = htmlentities($escapedData, ENT_QUOTES, 'UTF-8');
+
+ $str .= 'input = document.createElement("input"); ';
+ $str .= 'input.type = "hidden"; ';
+ $str .= sprintf('input.name = "%s"; ', $prev);
+ $str .= sprintf('input.value = "%s"; ', $escapedData);
+ $str .= 'form.appendChild(input); ';
+ }
+ return $str;
+ }
+
+ // }}}
+ // {{{ _getLinksData()
+
+ /**
+ * Returns the correct link for the back/pages/next links
+ *
+ * @return array Data
+ * @access private
+ */
+ function _getLinksData()
+ {
+ $qs = array();
+ if ($this->_importQuery) {
+ if ($this->_httpMethod == 'POST') {
+ $qs = $_POST;
+ } elseif ($this->_httpMethod == 'GET') {
+ $qs = $_GET;
+ }
+ }
+ foreach ($this->_excludeVars as $exclude) {
+ if (array_key_exists($exclude, $qs)) {
+ unset($qs[$exclude]);
+ }
+ }
+ if (count($this->_extraVars)){
+ $this->_recursive_urldecode($this->_extraVars);
+ $qs = array_merge($qs, $this->_extraVars);
+ }
+ if (count($qs) && get_magic_quotes_gpc()){
+ $this->_recursive_stripslashes($qs);
+ }
+ return $qs;
+ }
+
+ // }}}
+ // {{{ _recursive_stripslashes()
+
+ /**
+ * Helper method
+ * @param mixed $var
+ * @access private
+ */
+ function _recursive_stripslashes(&$var)
+ {
+ if (is_array($var)) {
+ foreach (array_keys($var) as $k) {
+ $this->_recursive_stripslashes($var[$k]);
+ }
+ } else {
+ $var = stripslashes($var);
+ }
+ }
+
+ // }}}
+ // {{{ _recursive_urldecode()
+
+ /**
+ * Helper method
+ * @param mixed $var
+ * @access private
+ */
+ function _recursive_urldecode(&$var)
+ {
+ if (is_array($var)) {
+ foreach (array_keys($var) as $k) {
+ $this->_recursive_urldecode($var[$k]);
+ }
+ } else {
+ $trans_tbl = array_flip(get_html_translation_table(HTML_ENTITIES));
+ $var = strtr($var, $trans_tbl);
+ }
+ }
+
+ // }}}
+ // {{{ _getBackLink()
+
+ /**
+ * Returns back link
+ *
+ * @param $url URL to use in the link [deprecated: use the factory instead]
+ * @param $link HTML to use as the link [deprecated: use the factory instead]
+ * @return string The link
+ * @access private
+ */
+ function _getBackLink($url='', $link='')
+ {
+ //legacy settings... the preferred way to set an option
+ //now is passing it to the factory
+ if (!empty($url)) {
+ $this->_path = $url;
+ }
+ if (!empty($link)) {
+ $this->_prevImg = $link;
+ }
+ $back = '';
+ if ($this->_currentPage > 1) {
+ $this->_linkData[$this->_urlVar] = $this->getPreviousPageID();
+ $back = $this->_renderLink($this->_altPrev, $this->_prevImg)
+ . $this->_spacesBefore . $this->_spacesAfter;
+ }
+ return $back;
+ }
+
+ // }}}
+ // {{{ _getPageLinks()
+
+ /**
+ * Returns pages link
+ *
+ * @param $url URL to use in the link [deprecated: use the factory instead]
+ * @return string Links
+ * @access private
+ */
+ function _getPageLinks($url='')
+ {
+ $msg = '<b>PEAR::Pager Error:</b>'
+ .' function "_getPageLinks()" not implemented.';
+ return $this->raiseError($msg, ERROR_PAGER_NOT_IMPLEMENTED);
+ }
+
+ // }}}
+ // {{{ _getNextLink()
+
+ /**
+ * Returns next link
+ *
+ * @param $url URL to use in the link [deprecated: use the factory instead]
+ * @param $link HTML to use as the link [deprecated: use the factory instead]
+ * @return string The link
+ * @access private
+ */
+ function _getNextLink($url='', $link='')
+ {
+ //legacy settings... the preferred way to set an option
+ //now is passing it to the factory
+ if (!empty($url)) {
+ $this->_path = $url;
+ }
+ if (!empty($link)) {
+ $this->_nextImg = $link;
+ }
+ $next = '';
+ if ($this->_currentPage < $this->_totalPages) {
+ $this->_linkData[$this->_urlVar] = $this->getNextPageID();
+ $next = $this->_spacesAfter
+ . $this->_renderLink($this->_altNext, $this->_nextImg)
+ . $this->_spacesBefore . $this->_spacesAfter;
+ }
+ return $next;
+ }
+
+ // }}}
+ // {{{ _getFirstLinkTag()
+
+ /**
+ * @return string
+ * @access private
+ */
+ function _getFirstLinkTag()
+ {
+ if ($this->isFirstPage() || ($this->_httpMethod != 'GET')) {
+ return '';
+ }
+ return sprintf('<link rel="first" href="%s" title="%s" />'."\n",
+ $this->_getLinkTagUrl(1),
+ $this->_firstLinkTitle
+ );
+ }
+
+ // }}}
+ // {{{ _getPrevLinkTag()
+
+ /**
+ * Returns previous link tag
+ *
+ * @return string the link tag
+ * @access private
+ */
+ function _getPrevLinkTag()
+ {
+ if ($this->isFirstPage() || ($this->_httpMethod != 'GET')) {
+ return '';
+ }
+ return sprintf('<link rel="previous" href="%s" title="%s" />'."\n",
+ $this->_getLinkTagUrl($this->getPreviousPageID()),
+ $this->_prevLinkTitle
+ );
+ }
+
+ // }}}
+ // {{{ _getNextLinkTag()
+
+ /**
+ * Returns next link tag
+ *
+ * @return string the link tag
+ * @access private
+ */
+ function _getNextLinkTag()
+ {
+ if ($this->isLastPage() || ($this->_httpMethod != 'GET')) {
+ return '';
+ }
+ return sprintf('<link rel="next" href="%s" title="%s" />'."\n",
+ $this->_getLinkTagUrl($this->getNextPageID()),
+ $this->_nextLinkTitle
+ );
+ }
+
+ // }}}
+ // {{{ _getLastLinkTag()
+
+ /**
+ * @return string the link tag
+ * @access private
+ */
+ function _getLastLinkTag()
+ {
+ if ($this->isLastPage() || ($this->_httpMethod != 'GET')) {
+ return '';
+ }
+ return sprintf('<link rel="last" href="%s" title="%s" />'."\n",
+ $this->_getLinkTagUrl($this->_totalPages),
+ $this->_lastLinkTitle
+ );
+ }
+
+ // }}}
+ // {{{ _getLinkTagUrl()
+
+ /**
+ * Helper method
+ * @return string the link tag url
+ * @access private
+ */
+ function _getLinkTagUrl($pageID)
+ {
+ $this->_linkData[$this->_urlVar] = $pageID;
+ if ($this->_append) {
+ $href = '?' . $this->_http_build_query_wrapper($this->_linkData);
+ } else {
+ $href = str_replace('%d', $this->_linkData[$this->_urlVar], $this->_fileName);
+ }
+ return htmlentities($this->_url . $href);
+ }
+
+ // }}}
+ // {{{ getPerPageSelectBox()
+
+ /**
+ * Returns a string with a XHTML SELECT menu,
+ * useful for letting the user choose how many items per page should be
+ * displayed. If parameter useSessions is TRUE, this value is stored in
+ * a session var. The string isn't echoed right now so you can use it
+ * with template engines.
+ *
+ * @param integer $start
+ * @param integer $end
+ * @param integer $step
+ * @param boolean $showAllData If true, perPage is set equal to totalItems.
+ * @param array (or string $optionText for BC reasons)
+ * - 'optionText': text to show in each option.
+ * Use '%d' where you want to see the number of pages selected.
+ * - 'attributes': (html attributes) Tag attributes or
+ * HTML attributes (id="foo" pairs), will be inserted in the
+ * <select> tag
+ * @return string xhtml select box
+ * @access public
+ */
+ function getPerPageSelectBox($start=5, $end=30, $step=5, $showAllData=false, $extraParams=array())
+ {
+ require_once 'Pager/HtmlWidgets.php';
+ $widget = new Pager_HtmlWidgets($this);
+ return $widget->getPerPageSelectBox($start, $end, $step, $showAllData, $extraParams);
+ }
+
+ // }}}
+ // {{{ getPageSelectBox()
+
+ /**
+ * Returns a string with a XHTML SELECT menu with the page numbers,
+ * useful as an alternative to the links
+ *
+ * @param array - 'optionText': text to show in each option.
+ * Use '%d' where you want to see the number of pages selected.
+ * - 'autoSubmit': if TRUE, add some js code to submit the
+ * form on the onChange event
+ * @param string $extraAttributes (html attributes) Tag attributes or
+ * HTML attributes (id="foo" pairs), will be inserted in the
+ * <select> tag
+ * @return string xhtml select box
+ * @access public
+ */
+ function getPageSelectBox($params = array(), $extraAttributes = '')
+ {
+ require_once 'Pager/HtmlWidgets.php';
+ $widget = new Pager_HtmlWidgets($this);
+ return $widget->getPageSelectBox($params, $extraAttributes);
+ }
+
+ // }}}
+ // {{{ _printFirstPage()
+
+ /**
+ * Print [1]
+ *
+ * @return string String with link to 1st page,
+ * or empty string if this is the 1st page.
+ * @access private
+ */
+ function _printFirstPage()
+ {
+ if ($this->isFirstPage()) {
+ return '';
+ }
+ $this->_linkData[$this->_urlVar] = 1;
+ return $this->_renderLink(
+ str_replace('%d', 1, $this->_altFirst),
+ $this->_firstPagePre . $this->_firstPageText . $this->_firstPagePost
+ ) . $this->_spacesBefore . $this->_spacesAfter;
+ }
+
+ // }}}
+ // {{{ _printLastPage()
+
+ /**
+ * Print [numPages()]
+ *
+ * @return string String with link to last page,
+ * or empty string if this is the 1st page.
+ * @access private
+ */
+ function _printLastPage()
+ {
+ if ($this->isLastPage()) {
+ return '';
+ }
+ $this->_linkData[$this->_urlVar] = $this->_totalPages;
+ return $this->_renderLink(
+ str_replace('%d', $this->_totalPages, $this->_altLast),
+ $this->_lastPagePre . $this->_lastPageText . $this->_lastPagePost
+ );
+ }
+
+ // }}}
+ // {{{ _setFirstLastText()
+
+ /**
+ * sets the private _firstPageText, _lastPageText variables
+ * based on whether they were set in the options
+ *
+ * @access private
+ */
+ function _setFirstLastText()
+ {
+ if ($this->_firstPageText == '') {
+ $this->_firstPageText = '1';
+ }
+ if ($this->_lastPageText == '') {
+ $this->_lastPageText = $this->_totalPages;
+ }
+ }
+
+ // }}}
+ // {{{ _http_build_query_wrapper()
+
+ /**
+ * This is a slightly modified version of the http_build_query() function;
+ * it heavily borrows code from PHP_Compat's http_build_query().
+ * The main change is the usage of htmlentities instead of urlencode,
+ * since it's too aggressive
+ *
+ * @author Stephan Schmidt <schst@php.net>
+ * @author Aidan Lister <aidan@php.net>
+ * @author Lorenzo Alberton <l dot alberton at quipo dot it>
+ * @param array $data
+ * @return string
+ * @access private
+ */
+ function _http_build_query_wrapper($data)
+ {
+ $data = (array)$data;
+ if (empty($data)) {
+ return '';
+ }
+ $separator = ini_get('arg_separator.output');
+ if ($separator == '&amp;') {
+ $separator = '&'; //the string is escaped by htmlentities anyway...
+ }
+ $tmp = array ();
+ foreach ($data as $key => $val) {
+ if (is_scalar($val)) {
+ //array_push($tmp, $key.'='.$val);
+ $val = urlencode($val);
+ array_push($tmp, $key .'='. str_replace('%2F', '/', $val));
+ continue;
+ }
+ // If the value is an array, recursively parse it
+ if (is_array($val)) {
+ array_push($tmp, $this->__http_build_query($val, htmlentities($key)));
+ continue;
+ }
+ }
+ return implode($separator, $tmp);
+ }
+
+ // }}}
+ // {{{ __http_build_query()
+
+ /**
+ * Helper function
+ * @author Stephan Schmidt <schst@php.net>
+ * @author Aidan Lister <aidan@php.net>
+ * @access private
+ */
+ function __http_build_query($array, $name)
+ {
+ $tmp = array ();
+ $separator = ini_get('arg_separator.output');
+ if ($separator == '&amp;') {
+ $separator = '&'; //the string is escaped by htmlentities anyway...
+ }
+ foreach ($array as $key => $value) {
+ if (is_array($value)) {
+ //array_push($tmp, $this->__http_build_query($value, sprintf('%s[%s]', $name, $key)));
+ array_push($tmp, $this->__http_build_query($value, $name.'%5B'.$key.'%5D'));
+ } elseif (is_scalar($value)) {
+ //array_push($tmp, sprintf('%s[%s]=%s', $name, htmlentities($key), htmlentities($value)));
+ array_push($tmp, $name.'%5B'.htmlentities($key).'%5D='.htmlentities($value));
+ } elseif (is_object($value)) {
+ //array_push($tmp, $this->__http_build_query(get_object_vars($value), sprintf('%s[%s]', $name, $key)));
+ array_push($tmp, $this->__http_build_query(get_object_vars($value), $name.'%5B'.$key.'%5D'));
+ }
+ }
+ return implode($separator, $tmp);
+ }
+
+ // }}}
+ // {{{ _isEncoded()
+
+ /**
+ * Helper function
+ * Check if a string is an encoded multibyte string
+ * @param string $string
+ * @return boolean
+ * @access private
+ */
+
+ function _isEncoded($string)
+ {
+ $hexchar = '&#[\dA-Fx]{2,};';
+ return preg_match("/^(\s|($hexchar))*$/Uims", $string) ? true : false;
+ }
+
+ // }}}
+ // {{{ raiseError()
+
+ /**
+ * conditionally includes PEAR base class and raise an error
+ *
+ * @param string $msg Error message
+ * @param int $code Error code
+ * @access private
+ */
+ function raiseError($msg, $code)
+ {
+ include_once 'PEAR.php';
+ if (empty($this->_pearErrorMode)) {
+ $this->_pearErrorMode = PEAR_ERROR_RETURN;
+ }
+ return PEAR::raiseError($msg, $code, $this->_pearErrorMode);
+ }
+
+ // }}}
+ // {{{ setOptions()
+
+ /**
+ * Set and sanitize options
+ *
+ * @param mixed $options An associative array of option names and
+ * their values.
+ * @return integer error code (PAGER_OK on success)
+ * @access public
+ */
+ function setOptions($options)
+ {
+ foreach ($options as $key => $value) {
+ if (in_array($key, $this->_allowed_options) && (!is_null($value))) {
+ $this->{'_' . $key} = $value;
+ }
+ }
+
+ //autodetect http method
+ if (!isset($options['httpMethod'])
+ && !isset($_GET[$this->_urlVar])
+ && isset($_POST[$this->_urlVar])
+ ) {
+ $this->_httpMethod = 'POST';
+ } else {
+ $this->_httpMethod = strtoupper($this->_httpMethod);
+ }
+
+ $this->_fileName = ltrim($this->_fileName, '/'); //strip leading slash
+ $this->_path = rtrim($this->_path, '/'); //strip trailing slash
+
+ if ($this->_append) {
+ if ($this->_fixFileName) {
+ $this->_fileName = CURRENT_FILENAME; //avoid possible user error;
+ }
+ $this->_url = $this->_path.'/'.$this->_fileName;
+ } else {
+ $this->_url = $this->_path;
+ if (strncasecmp($this->_fileName, 'javascript', 10) != 0) {
+ $this->_url .= '/';
+ }
+ if (strpos($this->_fileName, '%d') === false) {
+ trigger_error($this->errorMessage(ERROR_PAGER_INVALID_USAGE), E_USER_WARNING);
+ }
+ }
+
+ $this->_classString = '';
+ if (strlen($this->_linkClass)) {
+ $this->_classString = 'class="'.$this->_linkClass.'"';
+ }
+
+ if (strlen($this->_curPageLinkClassName)) {
+ $this->_curPageSpanPre = '<span class="'.$this->_curPageLinkClassName.'">';
+ $this->_curPageSpanPost = '</span>';
+ }
+
+ $this->_perPage = max($this->_perPage, 1); //avoid possible user errors
+
+ if ($this->_useSessions && !isset($_SESSION)) {
+ session_start();
+ }
+ if (!empty($_REQUEST[$this->_sessionVar])) {
+ $this->_perPage = max(1, (int)$_REQUEST[$this->_sessionVar]);
+ if ($this->_useSessions) {
+ $_SESSION[$this->_sessionVar] = $this->_perPage;
+ }
+ }
+
+ if (!empty($_SESSION[$this->_sessionVar])) {
+ $this->_perPage = $_SESSION[$this->_sessionVar];
+ }
+
+ if ($this->_closeSession) {
+ session_write_close();
+ }
+
+ $this->_spacesBefore = str_repeat('&nbsp;', $this->_spacesBeforeSeparator);
+ $this->_spacesAfter = str_repeat('&nbsp;', $this->_spacesAfterSeparator);
+
+ if (isset($_REQUEST[$this->_urlVar]) && empty($options['currentPage'])) {
+ $this->_currentPage = (int)$_REQUEST[$this->_urlVar];
+ }
+ $this->_currentPage = max($this->_currentPage, 1);
+ $this->_linkData = $this->_getLinksData();
+
+ return PAGER_OK;
+ }
+
+ // }}}
+ // {{{ getOption()
+
+ /**
+ * Return the current value of a given option
+ *
+ * @param string option name
+ * @return mixed option value
+ */
+ function getOption($name)
+ {
+ if (!in_array($name, $this->_allowed_options)) {
+ $msg = '<b>PEAR::Pager Error:</b>'
+ .' invalid option: '.$name;
+ return $this->raiseError($msg, ERROR_PAGER_INVALID);
+ }
+ return $this->{'_' . $name};
+ }
+
+ // }}}
+ // {{{ getOptions()
+
+ /**
+ * Return an array with all the current pager options
+ *
+ * @return array list of all the pager options
+ */
+ function getOptions()
+ {
+ $options = array();
+ foreach ($this->_allowed_options as $option) {
+ $options[$option] = $this->{'_' . $option};
+ }
+ return $options;
+ }
+
+ // }}}
+ // {{{ errorMessage()
+
+ /**
+ * Return a textual error message for a PAGER error code
+ *
+ * @param int $code error code
+ * @return string error message
+ * @access public
+ */
+ function errorMessage($code)
+ {
+ static $errorMessages;
+ if (!isset($errorMessages)) {
+ $errorMessages = array(
+ ERROR_PAGER => 'unknown error',
+ ERROR_PAGER_INVALID => 'invalid',
+ ERROR_PAGER_INVALID_PLACEHOLDER => 'invalid format - use "%d" as placeholder.',
+ ERROR_PAGER_INVALID_USAGE => 'if $options[\'append\'] is set to false, '
+ .' $options[\'fileName\'] MUST contain the "%d" placeholder.',
+ ERROR_PAGER_NOT_IMPLEMENTED => 'not implemented'
+ );
+ }
+
+ return '<b>PEAR::Pager error:</b> '. (isset($errorMessages[$code]) ?
+ $errorMessages[$code] : $errorMessages[ERROR_PAGER]);
+ }
+
+ // }}}
+}
+?>
\ No newline at end of file
/tags/v1.13-la-grande-rue/bibliotheque/pear/Pager/Common.php
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/bibliotheque/pear/Pager/Jumping.php
===================================================================
--- tags/v1.13-la-grande-rue/bibliotheque/pear/Pager/Jumping.php (revision 0)
+++ tags/v1.13-la-grande-rue/bibliotheque/pear/Pager/Jumping.php (revision 280)
@@ -0,0 +1,254 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+
+/**
+ * Contains the Pager_Jumping class
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE FREEBSD PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category HTML
+ * @package Pager
+ * @author Lorenzo Alberton <l dot alberton at quipo dot it>
+ * @author Richard Heyes <richard@phpguru.org>,
+ * @copyright 2003-2006 Lorenzo Alberton, Richard Heyes
+ * @license http://www.debian.org/misc/bsd.license BSD License (3 Clause)
+ * @version CVS: $Id$
+ * @link http://pear.php.net/package/Pager
+ */
+
+/**
+ * require PEAR::Pager_Common base class
+ */
+require_once 'Pager/Common.php';
+
+/**
+ * Pager_Jumping - Generic data paging class ("jumping window" style)
+ * Handles paging a set of data. For usage see the example.php provided.
+ *
+ * @category HTML
+ * @package Pager
+ * @author Lorenzo Alberton <l dot alberton at quipo dot it>
+ * @author Richard Heyes <richard@phpguru.org>,
+ * @copyright 2003-2005 Lorenzo Alberton, Richard Heyes
+ * @license http://www.php.net/license/3_0.txt PHP License 3.0
+ * @link http://pear.php.net/package/Pager
+ */
+class Pager_Jumping extends Pager_Common
+{
+ // {{{ Pager_Jumping()
+
+ /**
+ * Constructor
+ *
+ * @param array $options An associative array of option names
+ * and their values
+ * @access public
+ */
+ function Pager_Jumping($options = array())
+ {
+ $err = $this->setOptions($options);
+ if ($err !== PAGER_OK) {
+ return $this->raiseError($this->errorMessage($err), $err);
+ }
+ $this->build();
+ }
+
+ // }}}
+ // {{{ getPageIdByOffset()
+
+ /**
+ * Returns pageID for given offset
+ *
+ * @param $index Offset to get pageID for
+ * @return int PageID for given offset
+ */
+ function getPageIdByOffset($index)
+ {
+ if (!isset($this->_pageData)) {
+ $this->_generatePageData();
+ }
+
+ if (($index % $this->_perPage) > 0) {
+ $pageID = ceil((float)$index / (float)$this->_perPage);
+ } else {
+ $pageID = $index / $this->_perPage;
+ }
+ return $pageID;
+ }
+
+ // }}}
+ // {{{ getPageRangeByPageId()
+
+ /**
+ * Given a PageId, it returns the limits of the range of pages displayed.
+ * While getOffsetByPageId() returns the offset of the data within the
+ * current page, this method returns the offsets of the page numbers interval.
+ * E.g., if you have pageId=3 and delta=10, it will return (1, 10).
+ * PageID of 8 would give you (1, 10) as well, because 1 <= 8 <= 10.
+ * PageID of 11 would give you (11, 20).
+ * If the method is called without parameter, pageID is set to currentPage#.
+ *
+ * @param integer PageID to get offsets for
+ * @return array First and last offsets
+ * @access public
+ */
+ function getPageRangeByPageId($pageid = null)
+ {
+ $pageid = isset($pageid) ? (int)$pageid : $this->_currentPage;
+ if (isset($this->_pageData[$pageid]) || is_null($this->_itemData)) {
+ // I'm sure I'm missing something here, but this formula works
+ // so I'm using it until I find something simpler.
+ $start = ((($pageid + (($this->_delta - ($pageid % $this->_delta))) % $this->_delta) / $this->_delta) - 1) * $this->_delta +1;
+ return array(
+ max($start, 1),
+ min($start+$this->_delta-1, $this->_totalPages)
+ );
+ } else {
+ return array(0, 0);
+ }
+ }
+
+ // }}}
+ // {{{ getLinks()
+
+ /**
+ * Returns back/next/first/last and page links,
+ * both as ordered and associative array.
+ *
+ * NB: in original PEAR::Pager this method accepted two parameters,
+ * $back_html and $next_html. Now the only parameter accepted is
+ * an integer ($pageID), since the html text for prev/next links can
+ * be set in the constructor. If a second parameter is provided, then
+ * the method act as it previously did. This hack's only purpose is to
+ * mantain backward compatibility.
+ *
+ * @param integer $pageID Optional pageID. If specified, links
+ * for that page are provided instead of current one.
+ * [ADDED IN NEW PAGER VERSION]
+ * @param string $next_html HTML to put inside the next link
+ * [deprecated: use the constructor instead]
+ * @return array Back/pages/next links
+ */
+ function getLinks($pageID=null, $next_html='')
+ {
+ //BC hack
+ if (!empty($next_html)) {
+ $back_html = $pageID;
+ $pageID = null;
+ } else {
+ $back_html = '';
+ }
+
+ if (!is_null($pageID)) {
+ $this->links = '';
+ if ($this->_totalPages > $this->_delta) {
+ $this->links .= $this->_printFirstPage();
+ }
+
+ $_sav = $this->_currentPage;
+ $this->_currentPage = $pageID;
+
+ $this->links .= $this->_getBackLink('', $back_html);
+ $this->links .= $this->_getPageLinks();
+ $this->links .= $this->_getNextLink('', $next_html);
+ if ($this->_totalPages > $this->_delta) {
+ $this->links .= $this->_printLastPage();
+ }
+ }
+
+ $back = str_replace('&nbsp;', '', $this->_getBackLink());
+ $next = str_replace('&nbsp;', '', $this->_getNextLink());
+ $pages = $this->_getPageLinks();
+ $first = $this->_printFirstPage();
+ $last = $this->_printLastPage();
+ $all = $this->links;
+ $linkTags = $this->linkTags;
+
+ if (!is_null($pageID)) {
+ $this->_currentPage = $_sav;
+ }
+
+ return array(
+ $back,
+ $pages,
+ trim($next),
+ $first,
+ $last,
+ $all,
+ $linkTags,
+ 'back' => $back,
+ 'pages' => $pages,
+ 'next' => $next,
+ 'first' => $first,
+ 'last' => $last,
+ 'all' => $all,
+ 'linktags' => $linkTags
+ );
+ }
+
+ // }}}
+ // {{{ _getPageLinks()
+
+ /**
+ * Returns pages link
+ *
+ * @param $url URL to use in the link
+ * [deprecated: use the constructor instead]
+ * @return string Links
+ * @access private
+ */
+ function _getPageLinks($url = '')
+ {
+ //legacy setting... the preferred way to set an option now
+ //is adding it to the constuctor
+ if (!empty($url)) {
+ $this->_path = $url;
+ }
+
+ //If there's only one page, don't display links
+ if ($this->_clearIfVoid && ($this->_totalPages < 2)) {
+ return '';
+ }
+
+ $links = '';
+ $limits = $this->getPageRangeByPageId($this->_currentPage);
+
+ for ($i=$limits[0]; $i<=min($limits[1], $this->_totalPages); $i++) {
+ if ($i != $this->_currentPage) {
+ $this->range[$i] = false;
+ $this->_linkData[$this->_urlVar] = $i;
+ $links .= $this->_renderLink($this->_altPage.' '.$i, $i);
+ } else {
+ $this->range[$i] = true;
+ $links .= $this->_curPageSpanPre . $i . $this->_curPageSpanPost;
+ }
+ $links .= $this->_spacesBefore
+ . (($i != $this->_totalPages) ? $this->_separator.$this->_spacesAfter : '');
+ }
+ return $links;
+ }
+
+ // }}}
+}
+?>
\ No newline at end of file
/tags/v1.13-la-grande-rue/bibliotheque/pear/Pager/Jumping.php
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/bibliotheque/pear/Pager/Sliding.php
===================================================================
--- tags/v1.13-la-grande-rue/bibliotheque/pear/Pager/Sliding.php (revision 0)
+++ tags/v1.13-la-grande-rue/bibliotheque/pear/Pager/Sliding.php (revision 280)
@@ -0,0 +1,289 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+
+/**
+ * Contains the Pager_Sliding class
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE FREEBSD PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category HTML
+ * @package Pager
+ * @author Lorenzo Alberton <l dot alberton at quipo dot it>
+ * @copyright 2003-2006 Lorenzo Alberton
+ * @license http://www.debian.org/misc/bsd.license BSD License (3 Clause)
+ * @version CVS: $Id$
+ * @link http://pear.php.net/package/Pager
+ */
+
+/**
+ * require PEAR::Pager_Common base class
+ */
+require_once dirname(__FILE__).'/Common.php';
+
+/**
+ * Pager_Sliding - Generic data paging class ("sliding window" style)
+ * Usage examples can be found in the PEAR manual
+ *
+ * @category HTML
+ * @package Pager
+ * @author Lorenzo Alberton <l dot alberton at quipo dot it>
+ * @copyright 2003-2005 Lorenzo Alberton
+ * @license http://www.php.net/license/3_0.txt PHP License 3.0
+ * @link http://pear.php.net/package/Pager
+ */
+class Pager_Sliding extends Pager_Common
+{
+ // {{{ Pager_Sliding()
+
+ /**
+ * Constructor
+ *
+ * @param array $options An associative array of option names
+ * and their values
+ * @access public
+ */
+ function __construct($options = array())
+ {
+ //set default Pager_Sliding options
+ $this->_delta = 2;
+ $this->_prevImg = '&laquo;';
+ $this->_nextImg = '&raquo;';
+ $this->_separator = '|';
+ $this->_spacesBeforeSeparator = 3;
+ $this->_spacesAfterSeparator = 3;
+ $this->_curPageSpanPre = '<b><u>';
+ $this->_curPageSpanPost = '</u></b>';
+
+ //set custom options
+ $err = $this->setOptions($options);
+ if ($err !== PAGER_OK) {
+ return $this->raiseError($this->errorMessage($err), $err);
+ }
+ $this->build();
+ }
+
+ // }}}
+ // {{{ getPageIdByOffset()
+
+ /**
+ * "Overload" PEAR::Pager method. VOID. Not needed here...
+ * @param integer $index Offset to get pageID for
+ * @deprecated
+ * @access public
+ */
+ function getPageIdByOffset($index=null) { }
+
+ // }}}
+ // {{{ getPageRangeByPageId()
+
+ /**
+ * Given a PageId, it returns the limits of the range of pages displayed.
+ * While getOffsetByPageId() returns the offset of the data within the
+ * current page, this method returns the offsets of the page numbers interval.
+ * E.g., if you have pageId=5 and delta=2, it will return (3, 7).
+ * PageID of 9 would give you (4, 8).
+ * If the method is called without parameter, pageID is set to currentPage#.
+ *
+ * @param integer PageID to get offsets for
+ * @return array First and last offsets
+ * @access public
+ */
+ function getPageRangeByPageId($pageid = null)
+ {
+ $pageid = isset($pageid) ? (int)$pageid : $this->_currentPage;
+ if (!isset($this->_pageData)) {
+ $this->_generatePageData();
+ }
+ if (isset($this->_pageData[$pageid]) || is_null($this->_itemData)) {
+ if ($this->_expanded) {
+ $min_surplus = ($pageid <= $this->_delta) ? ($this->_delta - $pageid + 1) : 0;
+ $max_surplus = ($pageid >= ($this->_totalPages - $this->_delta)) ?
+ ($pageid - ($this->_totalPages - $this->_delta)) : 0;
+ } else {
+ $min_surplus = $max_surplus = 0;
+ }
+ return array(
+ max($pageid - $this->_delta - $max_surplus, 1),
+ min($pageid + $this->_delta + $min_surplus, $this->_totalPages)
+ );
+ }
+ return array(0, 0);
+ }
+
+ // }}}
+ // {{{ getLinks()
+
+ /**
+ * Returns back/next/first/last and page links,
+ * both as ordered and associative array.
+ *
+ * @param integer $pageID Optional pageID. If specified, links
+ * for that page are provided instead of current one.
+ * @return array back/pages/next/first/last/all links
+ * @access public
+ */
+ function getLinks($pageID = null, $next_html = '')
+ {
+ if ($pageID != null) {
+ $_sav = $this->_currentPage;
+ $this->_currentPage = $pageID;
+
+ $this->links = '';
+ if ($this->_totalPages > (2 * $this->_delta + 1)) {
+ $this->links .= $this->_printFirstPage();
+ }
+ $this->links .= $this->_getBackLink();
+ $this->links .= $this->_getPageLinks();
+ $this->links .= $this->_getNextLink();
+ if ($this->_totalPages > (2 * $this->_delta + 1)) {
+ $this->links .= $this->_printLastPage();
+ }
+ }
+
+ $back = str_replace('&nbsp;', '', $this->_getBackLink());
+ $next = str_replace('&nbsp;', '', $this->_getNextLink());
+ $pages = $this->_getPageLinks();
+ $first = $this->_printFirstPage();
+ $last = $this->_printLastPage();
+ $all = $this->links;
+ $linkTags = $this->linkTags;
+
+ if ($pageID != null) {
+ $this->_currentPage = $_sav;
+ }
+
+ return array(
+ $back,
+ $pages,
+ trim($next),
+ $first,
+ $last,
+ $all,
+ $linkTags,
+ 'back' => $back,
+ 'pages' => $pages,
+ 'next' => $next,
+ 'first' => $first,
+ 'last' => $last,
+ 'all' => $all,
+ 'linktags' => $linkTags
+ );
+ }
+
+ // }}}
+ // {{{ _getPageLinks()
+
+ /**
+ * Returns pages link
+ *
+ * @return string Links
+ * @access private
+ */
+ function _getPageLinks($url = '')
+ {
+ //legacy setting... the preferred way to set an option now
+ //is adding it to the constuctor
+ if (!empty($url)) {
+ $this->_path = $url;
+ }
+
+ //If there's only one page, don't display links
+ if ($this->_clearIfVoid && ($this->_totalPages < 2)) {
+ return '';
+ }
+
+ $links = '';
+ if ($this->_totalPages > (2 * $this->_delta + 1)) {
+ if ($this->_expanded) {
+ if (($this->_totalPages - $this->_delta) <= $this->_currentPage) {
+ $expansion_before = $this->_currentPage - ($this->_totalPages - $this->_delta);
+ } else {
+ $expansion_before = 0;
+ }
+ for ($i = $this->_currentPage - $this->_delta - $expansion_before; $expansion_before; $expansion_before--, $i++) {
+ $print_separator_flag = ($i != $this->_currentPage + $this->_delta); // && ($i != $this->_totalPages - 1)
+
+ $this->range[$i] = false;
+ $this->_linkData[$this->_urlVar] = $i;
+ $links .= $this->_renderLink($this->_altPage.' '.$i, $i)
+ . $this->_spacesBefore
+ . ($print_separator_flag ? $this->_separator.$this->_spacesAfter : '');
+ }
+ }
+
+ $expansion_after = 0;
+ for ($i = $this->_currentPage - $this->_delta; ($i <= $this->_currentPage + $this->_delta) && ($i <= $this->_totalPages); $i++) {
+ if ($i < 1) {
+ ++$expansion_after;
+ continue;
+ }
+
+ // check when to print separator
+ $print_separator_flag = (($i != $this->_currentPage + $this->_delta) && ($i != $this->_totalPages));
+
+ if ($i == $this->_currentPage) {
+ $this->range[$i] = true;
+ $links .= $this->_curPageSpanPre . $i . $this->_curPageSpanPost;
+ } else {
+ $this->range[$i] = false;
+ $this->_linkData[$this->_urlVar] = $i;
+ $links .= $this->_renderLink($this->_altPage.' '.$i, $i);
+ }
+ $links .= $this->_spacesBefore
+ . ($print_separator_flag ? $this->_separator.$this->_spacesAfter : '');
+ }
+
+ if ($this->_expanded && $expansion_after) {
+ $links .= $this->_separator . $this->_spacesAfter;
+ for ($i = $this->_currentPage + $this->_delta +1; $expansion_after; $expansion_after--, $i++) {
+ $print_separator_flag = ($expansion_after != 1);
+ $this->range[$i] = false;
+ $this->_linkData[$this->_urlVar] = $i;
+ $links .= $this->_renderLink($this->_altPage.' '.$i, $i)
+ . $this->_spacesBefore
+ . ($print_separator_flag ? $this->_separator.$this->_spacesAfter : '');
+ }
+ }
+
+ } else {
+ //if $this->_totalPages <= (2*Delta+1) show them all
+ for ($i=1; $i<=$this->_totalPages; $i++) {
+ if ($i != $this->_currentPage) {
+ $this->range[$i] = false;
+ $this->_linkData[$this->_urlVar] = $i;
+ $links .= $this->_renderLink($this->_altPage.' '.$i, $i);
+ } else {
+ $this->range[$i] = true;
+ $links .= $this->_curPageSpanPre . $i . $this->_curPageSpanPost;
+ }
+ $links .= $this->_spacesBefore
+ . (($i != $this->_totalPages) ? $this->_separator.$this->_spacesAfter : '');
+ }
+ }
+ return $links;
+ }
+
+ // }}}
+}
+?>
\ No newline at end of file
/tags/v1.13-la-grande-rue/bibliotheque/pear/Pager/Sliding.php
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/bibliotheque/pear/Pager/HtmlWidgets.php
===================================================================
--- tags/v1.13-la-grande-rue/bibliotheque/pear/Pager/HtmlWidgets.php (revision 0)
+++ tags/v1.13-la-grande-rue/bibliotheque/pear/Pager/HtmlWidgets.php (revision 280)
@@ -0,0 +1,229 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+
+/**
+ * Contains the Pager_HtmlWidgets class
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE FREEBSD PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category HTML
+ * @package Pager
+ * @author Lorenzo Alberton <l dot alberton at quipo dot it>
+ * @copyright 2003-2006 Lorenzo Alberton
+ * @license http://www.debian.org/misc/bsd.license BSD License (3 Clause)
+ * @version CVS: $Id$
+ * @link http://pear.php.net/package/Pager
+ */
+
+/**
+ * Two constants used to guess the path- and file-name of the page
+ * when the user doesn't set any other value
+ */
+class Pager_HtmlWidgets
+{
+ var $pager = null;
+
+ // {{{ constructor
+
+ function Pager_HtmlWidgets(&$pager)
+ {
+ $this->pager =& $pager;
+ }
+
+ // }}}
+ // {{{ getPerPageSelectBox()
+
+ /**
+ * Returns a string with a XHTML SELECT menu,
+ * useful for letting the user choose how many items per page should be
+ * displayed. If parameter useSessions is TRUE, this value is stored in
+ * a session var. The string isn't echoed right now so you can use it
+ * with template engines.
+ *
+ * @param integer $start
+ * @param integer $end
+ * @param integer $step
+ * @param boolean $showAllData If true, perPage is set equal to totalItems.
+ * @param array (or string $optionText for BC reasons)
+ * - 'optionText': text to show in each option.
+ * Use '%d' where you want to see the number of pages selected.
+ * - 'attributes': (html attributes) Tag attributes or
+ * HTML attributes (id="foo" pairs), will be inserted in the
+ * <select> tag
+ * - 'checkMaxLimit': if true, Pager checks if $end is bigger
+ * than $totalItems, and doesn't show the extra select options
+ * @return string xhtml select box
+ * @access public
+ */
+ function getPerPageSelectBox($start=5, $end=30, $step=5, $showAllData=false, $extraParams=array())
+ {
+ // FIXME: needs POST support
+ $optionText = '%d';
+ $attributes = '';
+ $checkMaxLimit = false;
+ if (is_string($extraParams)) {
+ //old behavior, BC maintained
+ $optionText = $extraParams;
+ } else {
+ if (array_key_exists('optionText', $extraParams)) {
+ $optionText = $extraParams['optionText'];
+ }
+ if (array_key_exists('attributes', $extraParams)) {
+ $attributes = $extraParams['attributes'];
+ }
+ if (array_key_exists('checkMaxLimit', $extraParams)) {
+ $checkMaxLimit = $extraParams['checkMaxLimit'];
+ }
+ }
+
+ if (!strstr($optionText, '%d')) {
+ return $this->pager->raiseError(
+ $this->pager->errorMessage(ERROR_PAGER_INVALID_PLACEHOLDER),
+ ERROR_PAGER_INVALID_PLACEHOLDER
+ );
+ }
+ $start = (int)$start;
+ $end = (int)$end;
+ $step = (int)$step;
+ if (!empty($_SESSION[$this->pager->_sessionVar])) {
+ $selected = (int)$_SESSION[$this->pager->_sessionVar];
+ } else {
+ $selected = $this->pager->_perPage;
+ }
+
+ if ($checkMaxLimit && $this->pager->_totalItems > 0 && $this->pager->_totalItems < $end) {
+ $end = $this->pager->_totalItems;
+ }
+
+ $tmp = '<select name="'.$this->pager->_sessionVar.'"';
+ if (!empty($attributes)) {
+ $tmp .= ' '.$attributes;
+ }
+ $tmp .= '>';
+ $last = $start;
+ for ($i=$start; $i<=$end; $i+=$step) {
+ $last = $i;
+ $tmp .= '<option value="'.$i.'"';
+ if ($i == $selected) {
+ $tmp .= ' selected="selected"';
+ }
+ $tmp .= '>'.sprintf($optionText, $i).'</option>';
+ }
+ if ($showAllData && $last != $this->pager->_totalItems) {
+ $tmp .= '<option value="'.$this->pager->_totalItems.'"';
+ if ($this->pager->_totalItems == $selected) {
+ $tmp .= ' selected="selected"';
+ }
+ $tmp .= '>';
+ if (empty($this->pager->_showAllText)) {
+ $tmp .= str_replace('%d', $this->pager->_totalItems, $optionText);
+ } else {
+ $tmp .= $this->pager->_showAllText;
+ }
+ $tmp .= '</option>';
+ }
+ $tmp .= '</select>';
+ return $tmp;
+ }
+
+ // }}}
+ // {{{ getPageSelectBox()
+
+ /**
+ * Returns a string with a XHTML SELECT menu with the page numbers,
+ * useful as an alternative to the links
+ *
+ * @param array - 'optionText': text to show in each option.
+ * Use '%d' where you want to see the number of pages selected.
+ * - 'autoSubmit': if TRUE, add some js code to submit the
+ * form on the onChange event
+ * @param string $extraAttributes (html attributes) Tag attributes or
+ * HTML attributes (id="foo" pairs), will be inserted in the
+ * <select> tag
+ * @return string xhtml select box
+ * @access public
+ */
+ function getPageSelectBox($params = array(), $extraAttributes = '')
+ {
+ $optionText = '%d';
+ if (array_key_exists('optionText', $params)) {
+ $optionText = $params['optionText'];
+ }
+
+ if (!strstr($optionText, '%d')) {
+ return $this->pager->raiseError(
+ $this->pager->errorMessage(ERROR_PAGER_INVALID_PLACEHOLDER),
+ ERROR_PAGER_INVALID_PLACEHOLDER
+ );
+ }
+
+ $tmp = '<select name="'.$this->pager->_urlVar.'"';
+ if (!empty($extraAttributes)) {
+ $tmp .= ' '.$extraAttributes;
+ }
+ if (!empty($params['autoSubmit'])) {
+ if ($this->pager->_httpMethod == 'GET') {
+ $selector = '\' + '.'this.options[this.selectedIndex].value + \'';
+ if ($this->pager->_append) {
+ $href = '?' . $this->pager->_http_build_query_wrapper($this->pager->_linkData);
+ $href = htmlentities($this->pager->_url). preg_replace(
+ '/(&|&amp;|\?)('.$this->pager->_urlVar.'=)(\d+)/',
+ '\\1\\2'.$selector,
+ htmlentities($href)
+ );
+ } else {
+ $href = htmlentities($this->pager->_url . str_replace('%d', $selector, $this->pager->_fileName));
+ }
+ $tmp .= ' onchange="document.location.href=\''
+ . $href .'\''
+ . '"';
+ } elseif ($this->pager->_httpMethod == 'POST') {
+ $tmp .= " onchange='"
+ . $this->pager->_generateFormOnClick($this->pager->_url, $this->pager->_linkData)
+ . "'";
+ $tmp = preg_replace(
+ '/(input\.name = \"'.$this->pager->_urlVar.'\"; input\.value =) \"(\d+)\";/',
+ '\\1 this.options[this.selectedIndex].value;',
+ $tmp
+ );
+ }
+ }
+ $tmp .= '>';
+ $start = 1;
+ $end = $this->pager->numPages();
+ $selected = $this->pager->getCurrentPageID();
+ for ($i=$start; $i<=$end; $i++) {
+ $tmp .= '<option value="'.$i.'"';
+ if ($i == $selected) {
+ $tmp .= ' selected="selected"';
+ }
+ $tmp .= '>'.sprintf($optionText, $i).'</option>';
+ }
+ $tmp .= '</select>';
+ return $tmp;
+ }
+
+ // }}}
+}
+?>
\ No newline at end of file
/tags/v1.13-la-grande-rue/bibliotheque/pear/Pager/HtmlWidgets.php
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/bibliotheque/pear/Pager/Pager_savebc.php
===================================================================
--- tags/v1.13-la-grande-rue/bibliotheque/pear/Pager/Pager_savebc.php (revision 0)
+++ tags/v1.13-la-grande-rue/bibliotheque/pear/Pager/Pager_savebc.php (revision 280)
@@ -0,0 +1,3 @@
+<?php
+require_once 'Pager.php';
+?>
\ No newline at end of file
/tags/v1.13-la-grande-rue/bibliotheque/pear/Pager/Pager_savebc.php
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/bibliotheque/pear/Pager.php
===================================================================
--- tags/v1.13-la-grande-rue/bibliotheque/pear/Pager.php (revision 0)
+++ tags/v1.13-la-grande-rue/bibliotheque/pear/Pager.php (revision 280)
@@ -0,0 +1,193 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+
+/**
+ * Contains the Pager class
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE FREEBSD PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category HTML
+ * @package Pager
+ * @author Lorenzo Alberton <l dot alberton at quipo dot it>
+ * @author Richard Heyes <richard@phpguru.org>
+ * @copyright 2003-2006 Lorenzo Alberton, Richard Heyes
+ * @license http://www.debian.org/misc/bsd.license BSD License (3 Clause)
+ * @version CVS: $Id$
+ * @link http://pear.php.net/package/Pager
+ */
+
+/**
+ * Pager - Wrapper class for [Sliding|Jumping]-window Pager
+ * Usage examples can be found in the PEAR manual
+ *
+ * @category HTML
+ * @package Pager
+ * @author Lorenzo Alberton <l dot alberton at quipo dot it>
+ * @author Richard Heyes <richard@phpguru.org>,
+ * @copyright 2003-2005 Lorenzo Alberton, Richard Heyes
+ * @license http://www.php.net/license/3_0.txt PHP License 3.0
+ * @link http://pear.php.net/package/Pager
+ */
+class Pager
+{
+ // {{{ Pager()
+
+ /**
+ * Constructor
+ *
+ * -------------------------------------------------------------------------
+ * VALID options are (default values are set some lines before):
+ * - mode (string): "Jumping" or "Sliding" -window - It determines
+ * pager behaviour. See the manual for more details
+ * - totalItems (int): # of items to page.
+ * - perPage (int): # of items per page.
+ * - delta (int): # of page #s to show before and after the current
+ * one
+ * - linkClass (string): name of CSS class used for link styling.
+ * - append (bool): if true pageID is appended as GET value to the
+ * URL - if false it is embedded in the URL
+ * according to "fileName" specs
+ * - httpMethod (string): Specifies the HTTP method to use. Valid values
+ * are 'GET' or 'POST'
+ * according to "fileName" specs
+ * - importQuery (bool): if true (default behaviour), variables and
+ * values are imported from the submitted data
+ * (query string) and used in the generated links
+ * otherwise they're ignored completely
+ * - path (string): complete path to the page (without the page name)
+ * - fileName (string): name of the page, with a %d if append=true
+ * - urlVar (string): name of pageNumber URL var, for example "pageID"
+ * - altPrev (string): alt text to display for prev page, on prev link.
+ * - altNext (string): alt text to display for next page, on next link.
+ * - altPage (string): alt text to display before the page number.
+ * - prevImg (string): sth (it can be text such as "<< PREV" or an
+ * <img/> as well...) to display instead of "<<".
+ * - nextImg (string): same as prevImg, used for NEXT link, instead of
+ * the default value, which is ">>".
+ * - separator (string): what to use to separate numbers (can be an
+ * <img/>, a comma, an hyphen, or whatever.
+ * - spacesBeforeSeparator
+ * (int): number of spaces before the separator.
+ * - firstPagePre (string):
+ * string used before first page number (can be an
+ * <img/>, a "{", an empty string, or whatever.
+ * - firstPageText (string):
+ * string used in place of first page number
+ * - firstPagePost (string):
+ * string used after first page number (can be an
+ * <img/>, a "}", an empty string, or whatever.
+ * - lastPagePre (string):
+ * similar to firstPagePre.
+ * - lastPageText (string):
+ * similar to firstPageText.
+ * - lastPagePost (string):
+ * similar to firstPagePost.
+ * - spacesAfterSeparator
+ * (int): number of spaces after the separator.
+ * - firstLinkTitle (string):
+ * string used as title in <link rel="first"> tag
+ * - lastLinkTitle (string):
+ * string used as title in <link rel="last"> tag
+ * - prevLinkTitle (string):
+ * string used as title in <link rel="prev"> tag
+ * - nextLinkTitle (string):
+ * string used as title in <link rel="next"> tag
+ * - curPageLinkClassName
+ * (string): name of CSS class used for current page link.
+ * - clearIfVoid(bool): if there's only one page, don't display pager.
+ * - extraVars (array): additional URL vars to be added to the querystring
+ * - excludeVars (array): URL vars to be excluded in the querystring
+ * - itemData (array): array of items to page.
+ * - useSessions (bool): if true, number of items to display per page is
+ * stored in the $_SESSION[$_sessionVar] var.
+ * - closeSession (bool): if true, the session is closed just after R/W.
+ * - sessionVar (string): name of the session var for perPage value.
+ * A value != from default can be useful when
+ * using more than one Pager istance in the page.
+ * - pearErrorMode (constant):
+ * PEAR_ERROR mode for raiseError().
+ * Default is PEAR_ERROR_RETURN.
+ * -------------------------------------------------------------------------
+ * REQUIRED options are:
+ * - fileName IF append==false (default is true)
+ * - itemData OR totalItems (if itemData is set, totalItems is overwritten)
+ * -------------------------------------------------------------------------
+ *
+ * @param mixed $options An associative array of option names and
+ * their values.
+ * @access public
+ */
+ function Pager($options = array())
+ {
+ //this check evaluates to true on 5.0.0RC-dev,
+ //so i'm using another one, for now...
+ //if (version_compare(phpversion(), '5.0.0') == -1) {
+ if (get_class($this) == 'pager') { //php4 lowers class names
+ // assign factoried method to this for PHP 4
+ eval('$this = Pager::factory($options);');
+ } else { //php5 is case sensitive
+ $msg = 'Pager constructor is deprecated.'
+ .' You must use the "Pager::factory($params)" method'
+ .' instead of "new Pager($params)"';
+ trigger_error($msg, E_USER_ERROR);
+ }
+ }
+
+ // }}}
+ // {{{ factory()
+
+ /**
+ * Return a pager based on $mode and $options
+ *
+ * @param array $options Optional parameters for the storage class
+ * @return object Object Storage object
+ * @static
+ * @access public
+ */
+ static function &factory($options = array())
+ {
+ $mode = (isset($options['mode']) ? ucfirst($options['mode']) : 'Jumping');
+ $classname = 'Pager_' . $mode;
+ $classfile = 'Pager' . DIRECTORY_SEPARATOR . $mode . '.php';
+
+ // Attempt to include a custom version of the named class, but don't treat
+ // a failure as fatal. The caller may have already included their own
+ // version of the named class.
+ if (!class_exists($classname)) {
+ include_once $classfile;
+ }
+
+ // If the class exists, return a new instance of it.
+ if (class_exists($classname)) {
+ $pager = new $classname($options);
+ return $pager;
+ }
+
+ $null = null;
+ return $null;
+ }
+
+ // }}}
+}
+?>
\ No newline at end of file
/tags/v1.13-la-grande-rue/bibliotheque/pear/Pager.php
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/bibliotheque/pear/A_LIRE.txt
===================================================================
--- tags/v1.13-la-grande-rue/bibliotheque/pear/A_LIRE.txt (revision 0)
+++ tags/v1.13-la-grande-rue/bibliotheque/pear/A_LIRE.txt (revision 280)
@@ -0,0 +1,4 @@
+Paquetages PEAR :
+PEAR -> 1.6.2
+Pager -> 2.4.4
+Auth -> 1.5.4
\ No newline at end of file
/tags/v1.13-la-grande-rue/bibliotheque/pear/A_LIRE.txt
Property changes:
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/i18n/fr.ini
===================================================================
--- tags/v1.13-la-grande-rue/i18n/fr.ini (revision 0)
+++ tags/v1.13-la-grande-rue/i18n/fr.ini (revision 280)
@@ -0,0 +1,3 @@
+[carte]
+titre = Carte des structures hébergeant des collections
+titre.avertissement = Avertissement et déni de responsabilité :
\ No newline at end of file
Index: tags/v1.13-la-grande-rue/i18n/en.ini
===================================================================
--- tags/v1.13-la-grande-rue/i18n/en.ini (revision 0)
+++ tags/v1.13-la-grande-rue/i18n/en.ini (revision 280)
@@ -0,0 +1,3 @@
+carte.titre.avertissement = Disclaimer :
+[carte]
+titre.principal = Map of the structures hosting collections
\ No newline at end of file
Index: tags/v1.13-la-grande-rue/controleurs/Syndication.php
===================================================================
--- tags/v1.13-la-grande-rue/controleurs/Syndication.php (revision 0)
+++ tags/v1.13-la-grande-rue/controleurs/Syndication.php (revision 280)
@@ -0,0 +1,46 @@
+<?php
+// declare(encoding='UTF-8');
+/**
+ * classe Controleur du module Syndication.
+ *
+ * @package Collection
+ * @category Php5
+ * @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
+ * @copyright 2010 Tela-Botanica
+ * @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
+ * @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
+ * @version SVN: $Id$
+ */
+class Syndication extends aControleur {
+
+ //+----------------------------------------------------------------------------------------------------------------+
+ // Méthodes
+ /**
+ * Fonction d'affichage par défaut
+ */
+ public function executerActionParDefaut() {
+ return $this->afficher();
+ }
+
+ /**
+ * Cartographier les collections.
+ * @return string la vue correspondante
+ */
+ public function afficher() {
+ // Initialisation de variable
+ $donnees = array();
+
+ // Récupération des infos sur les flux disponibles
+ $syndicationDao = new SyndicationDao();
+ $donnees['syndications'] = $syndicationDao->getListeDesFlux();
+
+ // Limitation des entrées des flux
+ $donnees['limite'] = Config::get('flux_limite');
+
+ // Traitement du squelette et retour
+ $resultat = $this->getVue('syndication', $donnees);
+ $this->setSortie(self::RENDU_CORPS, $resultat);
+ $this->chargerPiedDePage();
+ }
+}
+?>
\ No newline at end of file
Index: tags/v1.13-la-grande-rue/controleurs/RecherchePublications.php
===================================================================
--- tags/v1.13-la-grande-rue/controleurs/RecherchePublications.php (revision 0)
+++ tags/v1.13-la-grande-rue/controleurs/RecherchePublications.php (revision 280)
@@ -0,0 +1,118 @@
+<?php
+/**
+ * classe Controleur du module RecherchePublications
+ *
+ * @package Collection
+ * @category Php5
+ * @author Satanas et Diabolo <wtf@tela-botanica.org>
+ * @copyright 2010 Tela-Botanica
+ * @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
+ * @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
+ */
+class RecherchePublications extends Recherche {
+
+ protected $masque = null;
+ protected static $url_exemple = null;
+
+ /**
+ * Charge le moteur de recherche et l'envoie à la vue.
+ */
+ public function chargerMoteurRecherche() {
+ $donnees = array();
+
+ // masque multi-critères
+ $donnees['masque'] = $this->obtenirMasqueRecherche();
+
+ // Gestion des urls
+ $donnees['url_form'] = $this->obtenirUrlRecherche();
+ $donnees['url_module'] = 'RecherchePublications';
+ $donnees['url_action'] = 'rechercher';
+ $donnees['url_contexte'] = $this->registre->get('contexte');
+ self::$url_exemple = $this->obtenirUrlRecherche('%s');
+
+ // remplissage de cases de tableaux vides pour éviter des warnings
+ $donnees['masque'] = $this->initialiserMasquesVides($donnees['masque']);
+ //echo '<pre>'.print_r($donnees['masque'],true).'</pre>';exit;
+
+ // Gestion du squelette et de la sortie
+ $this->setSortie(self::RENDU_TETE, $this->getVue('moteur_publications', $donnees));
+ }
+
+ // recherche des publications
+ public function rechercher() {
+ $masque = $this->obtenirMasqueRecherche();
+ $masque['cible'] = "publications";
+
+ $donnees = array();
+ $donnees['masque'] = $masque;
+ $rechercheDao = new RechercheDao();
+
+ // Récupération des paramètres depuis le masque
+ $parametres = $masque;
+ $this->remplacerAbreviationParId($parametres);
+ //echo "PARAM 2: <pre>" . print_r($parametres, true) . "</pre><br/>";
+
+ // Gestion du nombre de résultats
+ $donnees_total = $rechercheDao->chercherPublicationsNbre($parametres);
+
+ // Gestion du fragmenteur
+ $options = array(
+ 'url' => $this->url,
+ 'url_var' => Config::get('parametre_url_page'),
+ 'donnees_total' => $donnees_total,
+ 'donnees_par_page' => Config::get('resultat_par_page_defaut'),
+ 'donnees_par_page_choix' => Config::get('resultat_par_page_choix'),
+ );
+ $fragmenteur = Composant::fabrique('fragmenteur', $options);
+ $donnees['fragmenteur'] = $fragmenteur->executer();
+ list($de, $a) = $fragmenteur->getDeplacementParPageId();
+ $this->url->unsetVariablesRequete(array('recherche', 'page'));
+
+ // Gestion de l'accès aux données
+ $rechercheDao->setLimitation(($de - 1), $fragmenteur->getDonneesParPage());
+ $rechercheDao->setDistinction(1);
+
+ // Récupération des résultats
+ $resultats = $rechercheDao->chercherPublications($parametres);
+
+ // Affichage de la liste de résultats
+ foreach ($resultats as $resultat) {
+ if (!empty($resultat['cpu_id_publication'])) {
+ $editeur = $resultat['cpu_ce_truk_editeur'];
+ $pdd = strpos($editeur, "##");
+ if ($pdd !== false) {
+ $editeur = substr($editeur, $pdd + 2);
+ }
+ $publication = array(
+ 'nomcomplet' => $resultat['cpu_fmt_nom_complet'],
+ 'date' => $resultat['cpu_date_parution'],
+ 'titre' => $resultat['cpu_titre'],
+ 'auteur' => $resultat['cpu_fmt_auteur'],
+ 'editeur' => $editeur,
+ 'nb_pages' => $resultat['cpu_truk_pages'],
+ //'url' => $this->obtenirUrlFichePersonne($resultat['cp_id_personne'])
+ );
+ $donnees['infos']['publications'][] = $publication;
+ }
+ }
+
+ // Post-traitement des résultats pour l'affichage
+ $this->postraiterDonnees($donnees['infos']);
+
+ // Gestion des squelettes
+ $this->chargerMoteurRecherche();
+ $resultat = $this->getVue('resultat', $donnees);
+ $this->setSortie(self::RENDU_CORPS, $resultat);
+ $this->chargerPiedDePage();
+ }
+
+ protected function initialiserMasquesVides($masque) {
+ $masques_possibles = array('titre', 'auteur', 'date', 'ouvrage', 'libre');
+ foreach($masques_possibles as $masque_possible) {
+ if(!isset($masque[$masque_possible])) {
+ $masque[$masque_possible] = '';
+ }
+ }
+ return $masque;
+ }
+}
\ No newline at end of file
Index: tags/v1.13-la-grande-rue/controleurs/FichePersonne.php
===================================================================
--- tags/v1.13-la-grande-rue/controleurs/FichePersonne.php (revision 0)
+++ tags/v1.13-la-grande-rue/controleurs/FichePersonne.php (revision 280)
@@ -0,0 +1,216 @@
+<?php
+// declare(encoding='UTF-8');
+/**
+ * Classe Controleur du module Fiche Personne.
+ *
+ * @category Php 5.2
+ * @package Collection
+ * @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
+ * @copyright 2010 Tela-Botanica
+ * @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
+ * @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
+ * @version SVN: $Id: Fiche.php 96 2010-06-21 16:46:31Z jpm $
+ */
+class FichePersonne extends Fiche {
+
+ private $donnees = array();
+ //+----------------------------------------------------------------------------------------------------------------+
+ // Méthodes
+ /**
+ * Fonction d'affichage par défaut
+ */
+ public function executerActionParDefaut() {
+ return $this->afficherPersonne();
+ }
+
+ // +---------------------------------------------------------------------------------------------------------------+
+ // FICHE PERSONNE
+
+ public function afficherPersonne() {
+ // Gestion des actions par défaut
+ $this->executerAction('Recherche', 'chargerMoteurRecherche');
+
+ // Gestion des données de la requête
+ if (!isset($_GET['id'])) {
+
+ } else {
+ // Récupération des données
+ $this->donnees['id'] = $_GET['id'];
+ $this->donnees['info'] = $this->personneDao->getPersonne($this->donnees['id']);
+
+ // Création des paginations
+ $this->creerPaginationPublications($this->donnees['id']);
+ $this->creerPaginationCollections($this->donnees['id']);
+ $this->creerPaginationStructures($this->donnees['id']);
+
+ // Traitement des données
+ $this->traiterDonneesPersonne($this->donnees['info']);
+ $this->traiterDonneesPersonneAPublication($this->donnees['publications']);
+ $this->traiterDonneesPersonneACollection($this->donnees['collections']);
+ $this->traiterDonneesPersonneAStructure($this->donnees['structures']);
+ $this->postraiterDonnees($this->donnees);
+ $this->donnees['metadonnees'] = $this->traiterMetaDonnees($this->donnees['info']);
+
+ // Création des méta-données de la page
+ $this->definirMetadonneesPageWeb();
+
+ // Envoie à la sortie
+ //Debug::printr($donnees);
+ $this->setSortie(self::RENDU_CORPS, $this->getVue('fiche_personne', $this->donnees));
+ $this->chargerPiedDePage();
+ }
+ }
+
+ private function creerPaginationPublications($id_personne) {
+ // Gestion du nombre de résultats
+ $donnees_total = $this->personneDao->getNbrePublicationsLiees($id_personne);
+
+ // Gestion du fragmenteur
+ $urlFiche = $this->obtenirObjetUrlFichePersonne($id_personne);
+ $options = array(
+ 'url' => $urlFiche,
+ 'url_var' => Config::get('parametre_url_page'),
+ 'donnees_total' => $donnees_total,
+ 'donnees_par_page' => Config::get('resultat_par_page_defaut'),
+ 'donnees_par_page_choix' => Config::get('resultat_par_page_choix'),
+ );
+ $fragmenteur = Composant::fabrique('fragmenteur', $options);
+ $this->donnees['publicationsFrag'] = $fragmenteur->executer();
+ list($de, $a) = $fragmenteur->getDeplacementParPageId();
+ $this->url->unsetVariablesRequete(array('page'));
+
+ // Gestion de l'accès aux données
+ $this->personneDao->setLimitation(($de - 1), $fragmenteur->getDonneesParPage());
+ $this->personneDao->setDistinction(1);
+ $this->donnees['publications'] = $this->personneDao->getPublicationsLiees($id_personne);
+ }
+
+ private function creerPaginationCollections($id_personne) {
+ // Gestion du nombre de résultats
+ $donnees_total = $this->personneDao->getNbreCollectionsLiees($id_personne);
+
+ // Gestion du fragmenteur
+ $urlFiche = $this->obtenirObjetUrlFichePersonne($id_personne);
+ $options = array(
+ 'url' => $urlFiche,
+ 'url_var' => Config::get('parametre_url_page'),
+ 'donnees_total' => $donnees_total,
+ 'donnees_par_page' => Config::get('resultat_par_page_defaut'),
+ 'donnees_par_page_choix' => Config::get('resultat_par_page_choix'),
+ );
+ $fragmenteur = Composant::fabrique('fragmenteur', $options);
+ $this->donnees['collectionsFrag'] = $fragmenteur->executer();
+ list($de, $a) = $fragmenteur->getDeplacementParPageId();
+ $this->url->unsetVariablesRequete(array('page'));
+
+ // Gestion de l'accès aux données
+ $this->personneDao->setLimitation(($de - 1), $fragmenteur->getDonneesParPage());
+ $this->personneDao->setDistinction(1);
+ $this->donnees['collections'] = $this->personneDao->getCollectionsLiees($id_personne);
+ }
+
+ private function creerPaginationStructures($id_personne) {
+ // Gestion du nombre de résultats
+ $donnees_total = $this->personneDao->getNbreStructuresLiees($id_personne);
+
+ // Gestion du fragmenteur
+ $urlFiche = $this->obtenirObjetUrlFichePersonne($id_personne);
+ $options = array(
+ 'url' => $urlFiche,
+ 'url_var' => Config::get('parametre_url_page'),
+ 'donnees_total' => $donnees_total,
+ 'donnees_par_page' => Config::get('resultat_par_page_defaut'),
+ 'donnees_par_page_choix' => Config::get('resultat_par_page_choix'),
+ );
+ $fragmenteur = Composant::fabrique('fragmenteur', $options);
+ $this->donnees['structuresFrag'] = $fragmenteur->executer();
+ list($de, $a) = $fragmenteur->getDeplacementParPageId();
+ $this->url->unsetVariablesRequete(array('page'));
+
+ // Gestion de l'accès aux données
+ $this->personneDao->setLimitation(($de - 1), $fragmenteur->getDonneesParPage());
+ $this->personneDao->setDistinction(1);
+ $this->donnees['structures'] = $this->personneDao->getStructuresLiees($id_personne);
+ }
+
+ private function traiterDonneesPersonne(&$donnees) {
+ // Liste des préfixes
+ Ontologie::chargerListe(1004);
+ // Liste des suffixes
+ Ontologie::chargerListe(1005);
+ // Liste tel:
+ Ontologie::chargerListe(1007);
+ // Liste sexe:
+ Ontologie::chargerListe(1067);
+ // liste 77 : Liste indéterminé/oui/non
+ Ontologie::chargerListe(1080);
+ // Liste des types de publication vis à vis d'une personne
+ //relationPersonnePublication:1065,
+
+ $guid_id_valeur = Config::get('guid_id_personne').$donnees['cp_id_personne'];
+ $donnees['_guid_'] = sprintf(Config::get('guid'), $guid_id_valeur);
+ $donnees['_sexe_'] = $this->construireTxtListeOntologie($donnees['cp_ce_sexe']);
+ $donnees['_prefixe_'] = $this->construireTxtListeOntologie($donnees['cp_ce_truk_prefix']);
+ $donnees['_suffixe_'] = $this->construireTxtListeOntologie($donnees['cp_ce_truk_suffix']);
+ $donnees['_autre_noms_'] = $this->construireTxtTruck($donnees['cp_truk_nom_autre']);
+ $donnees['_autre_abreviations_'] = $this->construireTxtTruck($donnees['cp_truk_abreviation_autre']);
+ $donnees['_deces_'] = $this->construireTxtListeOntologie($donnees['cp_ce_deces']);
+ $donnees['_naissance_date_'] = $this->formaterDate($donnees['cp_naissance_date'], aControleur::FMT_DATE);
+ $donnees['_deces_date_'] = $this->formaterDate($donnees['cp_deces_date'], aControleur::FMT_DATE, '');
+ $donnees['_telephones_'] = $this->construireTxtListeOntologie($donnees['cp_truk_telephone']);
+ $donnees['_courriels_'] = $this->traiterTxtTruck($donnees['cp_truk_courriel']);
+ $donnees['_courriels_'] = $this->formaterCourriels($donnees['_courriels_']);
+ $donnees['_sites_web_'] = $this->getTableauTruck($donnees['cp_truk_url']);
+ $donnees['_image_principale_url_'] = $this->getTxtTruckParPosition($donnees['cp_truk_logo'], 1);
+
+ $donnees['_pays_'] = $this->construireTxtListeOntologie($donnees['cp_ce_truk_pays']);
+
+ $donnees['_specialites_'] = $this->construireTxtListeOntologie($donnees['cp_ce_truk_specialite']);
+ $donnees['_recoltes_'] = $this->construireTxtListeOntologie($donnees['cp_truk_recolte']);
+
+ $donnees['_logos_'] = $this->getTableauTruck($donnees['cp_truk_logo']);
+ }
+
+ private function traiterDonneesPersonneAPublication(&$publications) {
+ $this->traiterDonneesElementAPublication($publications);
+ // liste 62 : Liste des types de publication vis à vis d'une personne
+ Ontologie::chargerListe(1065);
+ foreach ($publications as &$publication) {
+ $publication['_role_'] = $this->construireTxtListeOntologie($publication['cpuap_id_role']);
+ }
+ }
+
+ private function traiterDonneesPersonneACollection(&$collections) {
+ // liste 27 : Liste des relations entre une collection et une personne
+ Ontologie::chargerListe(1030);
+
+ foreach ($collections as &$collection) {
+ $collection['_role_'] = $this->construireTxtListeOntologie($collection['ccap_id_role']);
+ $collection['_url_'] = $this->obtenirUrlFicheCollection($collection['ccap_id_collection']);
+ }
+ }
+
+ private function traiterDonneesPersonneAStructure(&$structures) {
+ // liste 09 : Liste des fonctions d'une personne au sein d'une structure
+ Ontologie::chargerListe(1012);
+ // liste 10 : Liste des statuts d'une personne au sein d'une structure
+ Ontologie::chargerListe(1013);
+
+ foreach ($structures as &$structure) {
+ $structure['_fonction_'] = $this->construireTxtListeOntologie($structure['csap_ce_truk_fonction']);
+ $structure['_statut_'] = $this->construireTxtListeOntologie($structure['csap_ce_truk_statut']);
+ $structure['_url_'] = $this->obtenirUrlFicheStructure($structure['csap_id_structure']);
+ }
+ }
+
+ private function definirMetadonneesPageWeb() {
+ $titre = $this->donnees['info']['cp_fmt_nom_complet'];
+ $description = $this->donnees['info']['cp_description'];
+ $tags = "Botaniste, naturaliste, personne, id:{$this->donnees['id']}, {$this->donnees['info']['_guid_']}";
+
+ // Envoie à la sortie
+ $this->setSortie(self::META_TITRE, $titre);
+ $this->setSortie(self::META_DESCRIPTION, $description);
+ $this->setSortie(self::META_TAGS, $tags);
+ }
+}
\ No newline at end of file
Index: tags/v1.13-la-grande-rue/controleurs/Recherche.php
===================================================================
--- tags/v1.13-la-grande-rue/controleurs/Recherche.php (revision 0)
+++ tags/v1.13-la-grande-rue/controleurs/Recherche.php (revision 280)
@@ -0,0 +1,238 @@
+<?php
+// declare(encoding='UTF-8');
+/**
+ * classe Controleur du module Recherche.
+ *
+ * @package Collection
+ * @category Php5
+ * @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
+ * @copyright 2010 Tela-Botanica
+ * @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
+ * @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
+ * @version SVN: $Id$
+ */
+class Recherche extends aControleur {
+
+ //protected $chaine_recherche = null;
+ protected $masque = null;
+ protected static $url_exemple = null;
+
+ //+----------------------------------------------------------------------------------------------------------------+
+ // Méthodes
+ /**
+ * Fonction d'affichage par défaut, elle appelle la liste des administrateurs
+ */
+ public function executerActionParDefaut() {
+ return $this->rechercher();
+ }
+
+ /**
+ * Charge le moteur de recherche et l'envoie à la vue.
+ */
+ public function chargerMoteurRecherche() {
+ $donnees = array();
+
+ // Gestion des données de la requête
+ //$donnees['recherche'] = htmlspecialchars($this->obtenirChaineRecherche());
+ // masque multi-critères
+ $donnees['masque'] = $this->obtenirMasqueRecherche();
+
+ // Gestion des urls
+ $donnees['url_form'] = $this->obtenirUrlRecherche();
+ $donnees['url_module'] = 'Recherche';
+ $donnees['url_action'] = 'rechercher';
+ $donnees['url_contexte'] = $this->registre->get('contexte');
+ self::$url_exemple = $this->obtenirUrlRecherche('%s');
+
+ // remplissage de case de tableaux vides pour éviter des warnings
+ $donnees['masque'] = $this->initialiserMasquesVides($donnees['masque']);
+ //echo '<pre>'.print_r($donnees['masque'],true).'</pre>';exit;
+
+ // Gestion du squelette et de la sortie
+ $this->setSortie(self::RENDU_TETE, $this->getVue('moteur', $donnees));
+ }
+
+ protected function obtenirMasqueRecherche() {
+ $masque = array();
+ if (!is_null($this->masque)) {
+ $masque = $this->masque;
+ } else if (isset($_GET['masque'])) {
+ $masque = $_GET['masque'];
+ $_SESSION['col']['masque'] = $masque;
+ } else if (isset($_SESSION['col']['masque'])) {
+ $masque = $_SESSION['col']['masque'];
+ }
+ $this->masque = $masque;
+ return $masque;
+ }
+
+ 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 ou des personnes, dépendemment de la cible
+ public function rechercher() {
+ // un seul pour les collections ou les personnes, on ne cherche pas 2 choses à la fois !
+ $masque = $this->obtenirMasqueRecherche();
+
+ $donnees = array();
+ $donnees['masque'] = $masque;
+ $rechercheDao = new RechercheDao();
+ $parametres = array('mots' => '*');
+
+ // Récupération des paramètres depuis le masque
+ $parametres = $masque;
+
+ $this->remplacerAbreviationParId($parametres);
+ //echo "PARAM 2: <pre>" . print_r($parametres, true) . "</pre><br/>";
+
+ // Gestion du nombre de résultats
+ $donnees_total = null;
+ if (isset($masque['cible'])) {
+ switch ($masque['cible']) {
+ case 'collections':
+ $donnees_total = $rechercheDao->chercherCollectionsNbre($parametres);
+ break;
+ case 'personnes':
+ $donnees_total = $rechercheDao->chercherPersonnesNbre($parametres);
+ break;
+ default:
+ // @TODO qu'est-ce qui se passe ?
+ }
+ }
+
+ // Gestion du fragmenteur
+ $options = array(
+ 'url' => $this->url,
+ 'url_var' => Config::get('parametre_url_page'),
+ 'donnees_total' => $donnees_total,
+ 'donnees_par_page' => Config::get('resultat_par_page_defaut'),
+ 'donnees_par_page_choix' => Config::get('resultat_par_page_choix'),
+ );
+ $fragmenteur = Composant::fabrique('fragmenteur', $options);
+ $donnees['fragmenteur'] = $fragmenteur->executer();
+ list($de, $a) = $fragmenteur->getDeplacementParPageId();
+ $this->url->unsetVariablesRequete(array('recherche', 'page'));
+
+ // Gestion de l'accès aux données
+ $rechercheDao->setLimitation(($de - 1), $fragmenteur->getDonneesParPage());
+ $rechercheDao->setDistinction(1);
+
+ // Récupération des résultats
+ if (isset($masque['cible'])) {
+ switch ($masque['cible']) {
+ case 'collections':
+ $resultats = $rechercheDao->chercherCollections($parametres);
+ break;
+ case 'personnes':
+ $resultats = $rechercheDao->chercherPersonnes($parametres);
+ break;
+ default:
+ }
+ }
+
+ // Affichage de la liste de résultats
+ if (isset($masque['cible'])) {
+ switch ($masque['cible']) {
+ case 'collections':
+ if (! empty($resultats)) {
+ foreach ($resultats as $resultat) {
+ // Ajout des données concernant la structure si ce n'est pas déjà fait
+ $structure_id = $resultat['cs_id_structure'];
+ if (!isset($donnees['infos'][$structure_id])) {
+ $structure = array(
+ 'nom' => $resultat['cs_nom'],
+ 'ville' => $resultat['cs_ville'],
+ 'url' => $this->obtenirUrlFicheStructure($resultat['cs_id_structure'])
+ );
+ $donnees['infos'][$structure_id]['structure'] = $structure;
+ }
+
+ // Si la structure possède des collections
+ if (!empty($resultat['cc_id_collection'])) {
+ $collection = array(
+ 'nom' => $resultat['cc_nom'],
+ 'url' => $this->obtenirUrlFicheCollection($resultat['cc_id_collection'])
+ );
+ $donnees['infos'][$structure_id]['collections'][] = $collection;
+ }
+ }
+ }
+ break;
+
+ case 'personnes':
+ if (! empty($resultats)) {
+ foreach ($resultats as $resultat) {
+ //echo "<pre>".print_r($resultat,true)."</pre>";
+ if (!empty($resultat['cp_id_personne'])) {
+ $personne = array(
+ 'nomcomplet' => $resultat['cp_fmt_nom_complet'],
+ 'nom' => $resultat['cp_nom'],
+ 'prenom' => $resultat['cp_prenom'],
+ 'url' => $this->obtenirUrlFichePersonne($resultat['cp_id_personne'])
+ );
+ $donnees['infos']['personnes'][] = $personne;
+ }
+ }
+ }
+ break;
+
+ default:
+ }
+ }
+
+ // Post-traitement des résultats pour l'affichage
+ $this->postraiterDonnees($donnees['infos']);
+
+ // Gestion des squelettes
+ $this->chargerMoteurRecherche();
+ $resultat = $this->getVue('resultat', $donnees);
+ $this->setSortie(self::RENDU_CORPS, $resultat);
+ $this->chargerPiedDePage();
+ }
+
+ protected function initialiserMasquesVides($masque) {
+ $masques_possibles = array('lieu-stockage',
+ 'veg','zg','bot','p','pr','nom-famille','date-vivant','date-deces','adresse');
+ foreach($masques_possibles as $masque_possible) {
+ if(!isset($masque[$masque_possible])) {
+ $masque[$masque_possible] = '';
+ }
+ }
+ return $masque;
+ }
+
+ protected function remplacerAbreviationParId(&$parametres) {
+ // liste 27 : Liste des relations entre une collection et une personne (id:1030)
+ // liste 80 : Liste des types de collection botanique (id:1083)
+ $params_a_remplacer = array('veg' => 1043, 'bot' => 1083, 'pr' => 1030);
+ foreach ($params_a_remplacer as $param => $id_liste) {
+ if (isset($parametres[$param])) {
+ // Si plusieurs valeurs séparées par des virgules
+ $valeurs = explode(',', $parametres[$param]);
+ $valeurs_nbre = count($valeurs);
+ $liste = Ontologie::getListeTrieeParAbreviation($id_liste);
+ foreach ($valeurs as $valeur) {
+ $cle = strtoupper($valeur);
+ if (isset($liste[$cle])) {
+ if ($valeurs_nbre == 1) {
+ $parametres[$param] = $liste[$cle]['id'];
+ } else if ($valeurs_nbre > 1) {
+ $valeur = preg_quote($valeur, '/');
+ $parametres[$param] = preg_replace("/$valeur/", $liste[$cle]['id'], $parametres[$param]);
+ }
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
/tags/v1.13-la-grande-rue/controleurs/Recherche.php
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/controleurs/FicheCollection.php
===================================================================
--- tags/v1.13-la-grande-rue/controleurs/FicheCollection.php (revision 0)
+++ tags/v1.13-la-grande-rue/controleurs/FicheCollection.php (revision 280)
@@ -0,0 +1,475 @@
+<?php
+// declare(encoding='UTF-8');
+/**
+ * Classe Controleur du module Fiche Collection.
+ *
+ * @category Php 5.2
+ * @package Collection
+ * @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
+ * @copyright 2010 Tela-Botanica
+ * @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
+ * @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
+ * @version SVN: $Id: Fiche.php 96 2010-06-21 16:46:31Z jpm $
+ */
+class FicheCollection extends Fiche {
+
+ private $donnees = array();
+ protected $collectionDao = null;
+
+ //+----------------------------------------------------------------------------------------------------------------+
+ // Méthodes
+ /**
+ * Fonction d'affichage par défaut
+ */
+ public function executerActionParDefaut() {
+ return $this->afficherCollection();
+ }
+
+ // +---------------------------------------------------------------------------------------------------------------+
+ // FICHE COLLECTION
+ public function afficherCollection() {
+ // Gestion des actions par défaut
+ $this->executerAction('Recherche', 'chargerMoteurRecherche');
+
+ // Gestion des données de la requête
+ if (!isset($_GET['id'])) {
+
+ } else {
+ // Récupération des données
+ $this->donnees['id'] = $_GET['id'];
+ $this->donnees['info'] = $this->collectionDao->getCollection($this->donnees['id']);
+ $this->creerPaginationPersonnes($this->donnees['id']);
+ $this->creerPaginationPublications($this->donnees['id']);
+ $this->creerPaginationCommentaires($this->donnees['id']);
+
+ // Traitements des données
+ $this->traiterDonneesCollection($this->donnees['info']);
+ $this->traiterDonneesCollectionAPersonne($this->donnees['personnes']);
+ $this->traiterDonneesElementAPublication($this->donnees['publications']);
+ $this->traiterDonneesCollectionDescription($this->donnees['info']);
+ $this->traiterDonneesCollectionContenu($this->donnees['info']);
+ $this->traiterDonneesCollectionInventaire($this->donnees['info']);
+ $this->traiterDonneesCollectionACommentaire($this->donnees['commentaires']);
+ $this->postraiterDonnees($this->donnees);
+
+ $this->donnees['info'] = $this->formaterMetaDonneesSpecifiques($this->donnees['info']);
+ $this->donnees['metadonnees'] = $this->traiterMetaDonnees($this->donnees['info']);
+
+ // Création des méta-données de la page
+ $titre = $this->donnees['info']['cc_nom'];
+ $description = $this->donnees['info']['cc_description'];
+ $tags = "Collection, id:{$this->donnees['id']}, {$this->donnees['info']['_guid_']}";
+
+ // Envoie à la sortie
+ //Debug::printr($this->donnees);
+ $this->setSortie(self::META_TITRE, $titre);
+ $this->setSortie(self::META_DESCRIPTION, $description);
+ $this->setSortie(self::META_TAGS, $tags);
+ $this->setSortie(self::RENDU_CORPS, $this->getVue('fiche_collection', $this->donnees));
+ $this->chargerPiedDePage();
+ }
+ }
+
+ private function formaterMetaDonneesSpecifiques($donnees_info) {
+ // TODO: ceci cause trois appels de web services supplémentaires
+ // l'idéal serait d'avoir un service qui renvoie tout ça une fois
+ // (après l'appel n'est pas très couteux en temps et performance)
+ $sources = $this->collectionDao->getPublicationsSourcesLiees($this->donnees['id']);
+ $experts = $this->collectionDao->getPersonnesLieesExpertes($this->donnees['id']);
+ $contributeurs = $this->collectionDao->getPersonnesLieesContributrices($this->donnees['id']);
+
+ $donnees_info['contributeur'] = $this->formaterTableauMetadonnees($contributeurs, 'cp_fmt_nom_complet');
+ $donnees_info['expert'] = $this->formaterTableauMetadonnees($experts, 'cp_fmt_nom_complet');
+ $donnees_info['cmhl_source'] = $this->formaterTableauMetadonnees($sources, 'cpu_fmt_nom_complet', "<br />");
+
+ return $donnees_info;
+ }
+
+ private function formaterTableauMetadonnees(&$donnees, $champ_a_extraire, $separateur = ", ") {
+ $donnees_fmt = array();
+ foreach($donnees as &$donnee) {
+ $donnees_fmt[] = $donnee[$champ_a_extraire];
+ }
+ return implode($separateur, $donnees_fmt);
+ }
+
+ private function creerPaginationPersonnes($id_collection) {
+ // Gestion du nombre de résultats
+ $donnees_total = $this->collectionDao->getNbrePersonnesLiees($id_collection);
+
+ // Gestion du fragmenteur
+ $urlFiche = $this->obtenirObjetUrlFicheCollection($id_collection);
+ $options = array(
+ 'url' => $urlFiche,
+ 'url_var' => Config::get('parametre_url_page'),
+ 'donnees_total' => $donnees_total,
+ 'donnees_par_page' => Config::get('resultat_par_page_defaut'),
+ 'donnees_par_page_choix' => Config::get('resultat_par_page_choix'),
+ );
+ $fragmenteur = Composant::fabrique('fragmenteur', $options);
+ $this->donnees['personnesFrag'] = $fragmenteur->executer();
+ list($de, $a) = $fragmenteur->getDeplacementParPageId();
+ $this->url->unsetVariablesRequete(array('page'));
+
+ // Gestion de l'accès aux données
+ $this->collectionDao->setLimitation(($de - 1), $fragmenteur->getDonneesParPage());
+ $this->collectionDao->setDistinction(1);
+ $this->donnees['personnes'] = $this->collectionDao->getPersonnesLiees($id_collection);
+ }
+
+ private function creerPaginationPublications($id_collection) {
+ // Gestion du nombre de résultats
+ $donnees_total = $this->collectionDao->getNbrePublicationsLiees($id_collection);
+
+ // Gestion du fragmenteur
+ $urlFiche = $this->obtenirObjetUrlFicheCollection($id_collection);
+ $options = array(
+ 'url' => $urlFiche,
+ 'url_var' => Config::get('parametre_url_page'),
+ 'donnees_total' => $donnees_total,
+ 'donnees_par_page' => Config::get('resultat_par_page_defaut'),
+ 'donnees_par_page_choix' => Config::get('resultat_par_page_choix'),
+ );
+ $fragmenteur = Composant::fabrique('fragmenteur', $options);
+ $this->donnees['publicationsFrag'] = $fragmenteur->executer();
+ list($de, $a) = $fragmenteur->getDeplacementParPageId();
+ $this->url->unsetVariablesRequete(array('page'));
+
+ // Gestion de l'accès aux données
+ $this->collectionDao->setLimitation(($de - 1), $fragmenteur->getDonneesParPage());
+ $this->collectionDao->setDistinction(1);
+ $this->donnees['publications'] = $this->collectionDao->getPublicationsLiees($id_collection);
+ }
+
+ private function creerPaginationCommentaires($id_collection) {
+ // Gestion du nombre de résultats
+ $donnees_total = $this->collectionDao->getNbreCommentairesLies($id_collection);
+
+ // Gestion du fragmenteur
+ $urlFiche = $this->obtenirObjetUrlFicheCollection($id_collection);
+ $options = array(
+ 'url' => $urlFiche,
+ 'url_var' => Config::get('parametre_url_page'),
+ 'donnees_total' => $donnees_total,
+ 'donnees_par_page' => Config::get('resultat_par_page_defaut'),
+ 'donnees_par_page_choix' => Config::get('resultat_par_page_choix'),
+ );
+ $fragmenteur = Composant::fabrique('fragmenteur', $options);
+ $this->donnees['commentairesFrag'] = $fragmenteur->executer();
+ list($de, $a) = $fragmenteur->getDeplacementParPageId();
+ $this->url->unsetVariablesRequete(array('page'));
+
+ // Gestion de l'accès aux données
+ $this->collectionDao->setLimitation(($de - 1), $fragmenteur->getDonneesParPage());
+ $this->collectionDao->setDistinction(1);
+ $this->donnees['commentaires'] = $this->collectionDao->getCommentairesLies($id_collection);
+ }
+
+ private function traiterDonneesCollection(&$donnees) {
+ // liste 29 : Liste des types de collection dans le standard NCD
+ Ontologie::chargerListe(1032);
+ // liste 30 : Liste des types de dépôt de collection
+ Ontologie::chargerListe(1033);
+ // liste 31 : Liste des principes de groupement d'une collection dans le standard NCD
+ Ontologie::chargerListe(1034);
+ // liste 32 : Liste des buts de réalisation d'une collection dans le standard NCD
+ Ontologie::chargerListe(1035);
+ // liste 38 : Liste indéterminé/peut-être/oui/non
+ Ontologie::chargerListe(1041);
+ // liste 39 : Liste des types de classement des spécimens types dans une collection
+ Ontologie::chargerListe(1042);
+ // liste 79 : Liste exact/approximatif
+ Ontologie::chargerListe(1082);
+
+ $guid_id_valeur = Config::get('guid_id_collection').$donnees['cc_id_collection'];
+ $donnees['_guid_'] = sprintf(Config::get('guid'), $guid_id_valeur);
+ $donnees['_structure_url_'] = $this->obtenirUrlFicheStructure($donnees['cc_ce_structure']);
+ $donnees['_nom_alternatif_'] = $this->construireTxtTruck($donnees['cc_truk_nom_alternatif']);
+ $donnees['_type_ncd_'] = $this->construireTxtListeOntologie($donnees['cc_ce_type']);
+ $donnees['_type_depot_'] = $this->construireTxtListeOntologie($donnees['cc_ce_type_depot']);
+ $donnees['_code_'] = $this->construireTxtTruckSansMajuscule($donnees['cc_truk_code']);
+ $donnees['_url_'] = $this->construireTxtTruckSansMajuscule($donnees['cc_truk_url']);
+
+ $donnees['_specimen_type_'] = $this->construireTxtListeOntologie($donnees['cc_ce_specimen_type']);
+ $donnees['_specimen_type_nbre_'] = ($donnees['cc_specimen_type_nbre'] == 0) ? '' : $donnees['cc_specimen_type_nbre'];
+ $donnees['_specimen_type_nbre_precision_'] = $this->construireTxtListeOntologie($donnees['cc_ce_specimen_type_nbre_precision']);
+ $donnees['_specimen_type_nbre_precision_'] = $this->formaterParenthese($donnees['_specimen_type_nbre_precision_']);
+ $donnees['_specimen_type_classement_'] = $this->construireTxtListeOntologie($donnees['cc_ce_specimen_type_classement']);
+
+ $donnees['_couverture_lieu_'] = $this->construireTxtTruck($donnees['cc_truk_couverture_lieu']);
+ $donnees['_couverture_periode_'] = $donnees["cc_periode_constitution_debut"];
+ $donnees['_couverture_periode_'] .= ($donnees["cc_periode_constitution_fin"] != "") ? " - ".$donnees["cc_periode_constitution_fin"] : "";
+ }
+
+ private function traiterDonneesCollectionAPersonne(&$personnes) {
+ // liste 27 : Liste des relations entre une collection et une personne
+ Ontologie::chargerListe(1030);
+ // liste 77 : Liste indéterminé/oui/non
+ Ontologie::chargerListe(1080);
+
+ foreach ($personnes as &$personne) {
+ $personne['_role_'] = $this->construireTxtListeOntologie($personne['ccap_id_role']);
+ $personne['_deces_'] = $this->construireTxtListeOntologie($personne['cp_ce_deces']);
+ $personne['_naissance_date_'] = $this->formaterDate($personne['cp_naissance_date'], aControleur::FMT_DATE);
+ $personne['_deces_date_'] = $this->formaterDate($personne['cp_deces_date'], aControleur::FMT_DATE, '');
+ $personne['_url_'] = $this->obtenirUrlFichePersonne($personne['ccap_id_personne']);
+ }
+ }
+
+ private function traiterDonneesCollectionDescription(&$donnees) {
+ // liste 22 : Liste de traitement anti-insecte pour les collections botaniques
+ Ontologie::chargerListe(1025);
+ // liste 23 : Liste des poisons utilisés pour les collections botaniques
+ Ontologie::chargerListe(1026);
+ // liste 38 : Liste indéterminé/peut-être/oui/non
+ Ontologie::chargerListe(1041);
+ // liste 41 : Liste des types d'unité de rangement pour les collections botaniques
+ Ontologie::chargerListe(1044);
+ // liste 42 : Liste des états
+ Ontologie::chargerListe(1045);
+ // liste 43 : Liste des types de support pour les spécimens des collections botaniques
+ Ontologie::chargerListe(1046);
+ // liste 44 : Liste des types de papier de support pour les spécimens des collections botaniques
+ Ontologie::chargerListe(1047);
+ // liste 45 : Liste des méthodes de rangement des supports pour les spécimens des collections botaniques
+ Ontologie::chargerListe(1048);
+ // liste 46 : Liste des méthodes de fixation sur le support pour les collections botaniques
+ Ontologie::chargerListe(1049);
+ // liste 47 : Liste des méthodes de fixation des étiquettes sur les spécimens pour les collections botaniques
+ Ontologie::chargerListe(1050);
+ // liste 48 : Liste des types d'écriture d'étiquette
+ Ontologie::chargerListe(1051);
+ // liste 49 : Liste des origines des dégradations des spécimens de collections botaniques
+ Ontologie::chargerListe(1052);
+ // liste 50 : Liste des origines des dégradations des supports de collections botaniques
+ Ontologie::chargerListe(1053);
+ // liste 51 : Liste des niveaux de détermination des spécimens de collections botaniques
+ Ontologie::chargerListe(1054);
+
+ $donnees['_type_'] = $this->construireTxtListeOntologie($donnees['ccb_ce_truk_type']);
+ $etats = array("1" => "Très mauvais", "2" => "Mauvais", 3 => "Moyen", "4" => "Bon", 5 => "Très bon");
+ $donnees['_unite_rangement_etat_'] = isset($etats[$donnees['ccb_ce_unite_rangement_etat']]) ? $etats[$donnees['ccb_ce_unite_rangement_etat']] : "";
+ $donnees['_cartons_'] = ($donnees['ccb_format_cartons_herbier'] === "") ? $donnees['ccb_nb_cartons_herbier'] : $donnees['ccb_nb_cartons_herbier']." ".$donnees['ccb_format_cartons_herbier'];
+ $donnees['_liasses_'] = ($donnees['ccb_format_liasses'] === "") ? $donnees['ccb_nb_liasses'] : $donnees['ccb_nb_liasses']." ".$donnees['ccb_format_liasses'];
+ $donnees['_autres_rangements_'] = $donnees["ccb_autres_unites_rangement"];
+ $donnees['_nb_planches_herbier_'] = $donnees["ccb_nb_planches_herbiers"];
+ $donnees['_nb_especes_'] = $donnees["ccb_nb_especes"];
+ $donnees['_conservation_papier_type_'] = $this->construireTxtListeOntologie($donnees['ccb_truk_conservation_papier_type']);
+ $donnees['_conservation_methode_'] = $this->construireTxtListeOntologie($donnees['ccb_truk_conservation_methode']);
+ $donnees['_specimen_fixation_methode_'] = $this->construireTxtListeOntologie($donnees['ccb_truk_specimen_fixation_methode']);
+ $donnees['_etiquette_fixation_support_'] = $this->construireTxtListeOntologie($donnees['ccb_truk_etiquette_fixation_support']);
+ $donnees['_etiquette_fixation_specimen_'] = $this->construireTxtListeOntologie($donnees['ccb_truk_etiquette_fixation_specimen']);
+ $donnees['_etiquette_ecriture_'] = $this->construireTxtListeOntologie($donnees['ccb_truk_etiquette_ecriture']);
+ $donnees['_traitement_'] = $this->construireTxtListeOntologie($donnees['ccb_ce_traitement']);
+ $donnees['_traitement_poison_'] = $this->construireTxtListeOntologie($donnees['ccb_truk_traitement_poison']);
+ $donnees['_traitement_insecte_'] = $this->construireTxtListeOntologie($donnees['ccb_truk_traitement_insecte']);
+ $donnees['_etat_general_'] = isset($etats[$donnees['ccb_ce_etat_general']]) ? $etats[$donnees['ccb_ce_etat_general']] : "";
+ $valeurEstOntologie = false;
+ $typeEstOntologie = true;
+ $donneeEstOntologie = true;
+ $donnees['_degradation_specimen_'] = $this->construireTxtListeOntologie($donnees['ccb_truk_degradation_specimen'], $valeurEstOntologie, $typeEstOntologie, $donneeEstOntologie);
+ $donnees['_degradation_presentation_'] = $this->construireTxtListeOntologie($donnees['ccb_truk_degradation_presentation'], $valeurEstOntologie, $typeEstOntologie, $donneeEstOntologie);
+ $donnees['_determination_'] = $this->construireTxtListeOntologie($donnees['ccb_ce_determination']);
+
+ }
+
+ private function traiterDonneesCollectionContenu(&$donnees) {
+ // liste 20 : Liste oui/non/en partie
+ Ontologie::chargerListe(1023);
+ // liste 37 : Liste des siècles pour les collections naturalistes
+ Ontologie::chargerListe(1040);
+ // liste 38 : Liste indéterminé/peut-être/oui/non
+ Ontologie::chargerListe(1041);
+ // liste 42 : Liste des états
+ Ontologie::chargerListe(1045);
+ // liste 52 : Liste des types de date de début
+ Ontologie::chargerListe(1055);
+ // liste 53 : Liste des types de date de fin
+ Ontologie::chargerListe(1056);
+ // liste 80 : Liste des types de collection botanique
+ Ontologie::chargerListe(1083);
+
+ $donnees['_nature_'] = $this->construireTxtListeOntologie($donnees['ccb_truk_nature']);
+ $donnees['_periode_constitution_'] = $this->construireTxtListeOntologie($donnees['cc_truk_periode_constitution']);
+ $donnees['_classement_etat_'] = $this->construireTxtListeOntologie($donnees['ccb_ce_classement_etat']);
+ $donnees['_etiquette_renseignement_'] = $this->construireTxtEtiquetteRenseignement($donnees['ccb_truk_etiquette_renseignement']);
+ $donnees['_precision_localite_'] = $this->construireTxtListeOntologie($donnees['ccb_ce_precision_localite']);
+ $donnees['_precision_date_'] = $this->construireTxtListeOntologie($donnees['ccb_ce_precision_date']);
+ $donnees['_collection_integre_'] = $this->construireTxtListeOntologie($donnees['ccb_ce_collection_integre']);
+ $donnees['_collection_integre_info_'] = $this->construireTxtListeOntologie($donnees['ccb_ce_collection_integre_info']);
+ }
+
+ private function traiterDonneesCollectionInventaire(&$donnees) {
+ // liste 38 : Liste indéterminé/peut-être/oui/non
+ Ontologie::chargerListe(1041);
+ // liste 57 : Liste indéterminé/parfois/oui/non
+ Ontologie::chargerListe(1060);
+ // liste 58 : Liste des formes d'inventaire
+ Ontologie::chargerListe(1061);
+ // liste 59 : Liste des types de logiciel pour les inventaires informatiques
+ Ontologie::chargerListe(1062);
+ // liste 60 : Liste des états d'inventaire
+ Ontologie::chargerListe(1063);
+
+ $donnees['_inventaire_'] = $this->construireTxtListeOntologie($donnees['ccb_ce_inventaire']);
+ $donnees['_inventaire_auteur_'] = $this->construireTxtListeOntologie($donnees['ccb_ce_inventaire_auteur']);
+ $donnees['_inventaire_forme_'] = $this->construireTxtListeOntologie($donnees['ccb_ce_inventaire_forme']);
+ $donnees['_inventaire_digital_'] = $this->construireTxtListeOntologie($donnees['ccb_ce_truk_inventaire_digital']);
+ $donnees['_inventaire_etat_'] = $this->construireTxtListeOntologie($donnees['ccb_ce_inventaire_etat']);
+ }
+
+ private function traiterDonneesCollectionACommentaire(&$commentaires) {
+ // liste 65 : Liste des types de commentaires associés à une collection
+ Ontologie::chargerListe(1068);
+
+ foreach ($commentaires as &$commentaire) {
+ $commentaire['_type_'] = $this->construireTxtListeOntologie($commentaire['ccac_truk_type']);
+ }
+ }
+
+ private function construireTxtEtiquetteRenseignement($valeur) {
+ $etiquetteRenseignements = '';
+ $infos = $this->parserEtiquetteRenseignement($valeur);
+ if (count($infos) > 0) {
+ foreach ($infos as $cle => $info) {
+ if ($cle == 'AT') {
+ $etiquetteRenseignements .= 'auteur de la collection';
+ } else if ($cle == 'F') {
+ $etiquetteRenseignements .= 'famille';
+ } else if ($cle == 'G') {
+ $etiquetteRenseignements .= 'genre';
+ } else if ($cle == 'SP') {
+ $etiquetteRenseignements .= 'espèce';
+ } else if ($cle == 'ASP') {
+ $etiquetteRenseignements .= "auteur de l'espèce";
+ } else if ($cle == 'L') {
+ $etiquetteRenseignements .= 'localité';
+ } else if ($cle == 'D') {
+ $etiquetteRenseignements .= 'date de récolte';
+ } else {
+ $etiquetteRenseignements .= 'Inconnue';
+ }
+ $etiquetteRenseignements .= ': '.$info.'%, ';
+ }
+ $etiquetteRenseignements = rtrim($etiquetteRenseignements, ', ').'.';
+ }
+ return $etiquetteRenseignements;
+ }
+
+ private function parserEtiquetteRenseignement($valeurTruk) {
+ $infos = array();
+ if ($valeurTruk != '') {
+ $pourcentages = explode(self::SEPARATEUR_VALEURS, $valeurTruk);
+ foreach ($pourcentages as $pourcentage) {
+ $pourcentageIdValeur = explode(self::SEPARATEUR_TYPE_VALEUR, $pourcentage);
+ $id = $pourcentageIdValeur[0];
+ $valeur = $pourcentageIdValeur[1];
+ $infos[$id] = $valeur;
+ }
+ }
+ return $infos;
+ }
+
+ private function parserValeurUniteBase($valeurTruk) {
+ $unitesEnregistrees = array();
+ if ($valeurTruk != '') {
+ $unites = explode(self::SEPARATEUR_VALEURS, $valeurTruk);
+ $unites_nbre = count($unites);
+
+ for ($i = 0; $i < $unites_nbre; $i++) {
+ $uniteTypeIdDonnees = explode(self::SEPARATEUR_TYPE_VALEUR, $unites[$i]);
+ $uniteChaineDonnees = $uniteTypeIdDonnees[1];
+ $uniteDonnees = explode(self::SEPARATEUR_DONNEES, $uniteChaineDonnees);
+ $uniteDonneesNbre = count($uniteDonnees);
+
+ $uniteBase = array();
+ if ($uniteDonneesNbre > 0) {
+ $uniteBase['nbre'] = $uniteDonnees[0];
+ }
+
+ if ($uniteDonnees[0] > 0 || $uniteDonnees[2] != '' || $uniteDonnees[3] > 0 || $uniteDonnees[5] > 0) {
+ if ($uniteDonneesNbre > 1) {
+ $uniteBase['precision'] = self::getPrecisionNom($uniteDonnees[1]);
+ }
+ if ($uniteDonneesNbre > 2) {
+ $uniteBase['format'] = $uniteDonnees[2];
+ }
+ if ($uniteDonneesNbre > 3) {
+ $uniteBase['part_nbre'] = $uniteDonnees[3];
+ }
+ if ($uniteDonneesNbre > 4) {
+ $uniteBase['part_precision'] = self::getPrecisionNom($uniteDonnees[4]);
+ }
+ if ($uniteDonneesNbre > 5) {
+ $uniteBase['sp_nbre'] = $uniteDonnees[5];
+ }
+ if ($uniteDonneesNbre > 6) {
+ $uniteBase['sp_precision'] = self::getPrecisionNom($uniteDonnees[6]);
+ }
+
+ if (preg_match('/^[0-9]+$/', $uniteTypeIdDonnees[0])) {
+ $uniteBase['id'] = $uniteTypeIdDonnees[0];
+ $uniteBase['type'] = Ontologie::getValeurNom($uniteTypeIdDonnees[0]);
+ } else {
+ $uniteBase['type'] = $uniteTypeIdDonnees[0];
+ }
+
+ $unitesEnregistrees[] = $uniteBase;
+ }
+ }
+ }
+ return $unitesEnregistrees;
+ }
+
+ private function parserValeurUniteRangement($valeurTruk) {
+ $unitesEnregistrees = array();
+ if ($valeurTruk != '') {
+ $unites = explode(self::SEPARATEUR_VALEURS, $valeurTruk);
+ $unites_nbre = count($unites);
+ for ($i = 0; $i < $unites_nbre; $i++) {
+ $uniteTypeIdDonnees = explode(self::SEPARATEUR_TYPE_VALEUR, $unites[$i]);
+ $uniteChaineDonnees = $uniteTypeIdDonnees[1];
+ $uniteDonnees = explode(self::SEPARATEUR_DONNEES, $uniteChaineDonnees);
+ $uniteDonneesNbre = count($uniteDonnees);
+
+ $uniteRangement = array();
+ if ($uniteDonneesNbre > 0) {
+ $uniteRangement['nbre'] = $uniteDonnees[0];
+ }
+
+ if ($uniteRangement['nbre'] > 0) {
+ if ($uniteDonneesNbre > 1) {
+ $uniteRangement['precision'] = self::getPrecisionNom($uniteDonnees[1]);
+ }
+ if ($uniteDonneesNbre > 2) {
+ $uniteRangement['format'] = $uniteDonnees[2];
+ }
+
+ if (preg_match('/^[0-9]+$/', $uniteTypeIdDonnees[0])) {
+ $uniteRangement['id'] = $uniteTypeIdDonnees[0];
+ $uniteRangement['type'] = Ontologie::getValeurNom($uniteTypeIdDonnees[0]);
+ } else {
+ $uniteRangement['type'] = $uniteTypeIdDonnees[0];
+ }
+ $unitesEnregistrees[] = $uniteRangement;
+ }
+ }
+ }
+ return $unitesEnregistrees;
+ }
+
+ private static function getPrecisionNom($precisionAbr) {
+ $precision_nom = '';
+ if ($precisionAbr != 'NULL') {
+ // liste 79 : Liste exact/approximatif
+ $precisions = Ontologie::getListeFormatee(1082);
+ foreach ($precisions as $precision) {
+ if ($precision['abreviation'] == $precisionAbr) {
+ $precision_nom = $precision['nom'];
+ break;
+ }
+ }
+ }
+ return $precision_nom;
+ }
+}
\ No newline at end of file
Index: tags/v1.13-la-grande-rue/controleurs/AppControleur.php
===================================================================
--- tags/v1.13-la-grande-rue/controleurs/AppControleur.php (revision 0)
+++ tags/v1.13-la-grande-rue/controleurs/AppControleur.php (revision 280)
@@ -0,0 +1,213 @@
+<?php
+// declare(encoding='UTF-8');
+/**
+ * Collection est le controlleur principal de l'application.
+ * Elle repartie les demandes utilisateurs dans les différents modules, executent les actions et redistribue le code
+ * html dans les différentes fonctions d'affichage.
+ * C'est une Singleton.
+ *
+ * @category PHP 5.2
+ * @package Collection
+ * @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
+ * @copyright 2010 Tela-Botanica
+ * @license GPL-v3 et CECILL-v2
+ * @version $Id$
+ */
+
+class AppControleur extends Controleur {
+
+ /**
+ * Instance de la classe pointant sur elle même (pour le pattern singleton)
+ */
+ private static $instance = null;
+
+ /**
+ * Paramètres pour les collections
+ */
+ private static $parametres = array();
+
+ /**
+ * Constructeur vide
+ */
+ public function __construct() {
+ $sortie = array('titre' => '', 'description' => '', 'tags' => '',
+ 'corps' => '', 'tete' => '', 'pied' => '', 'navigation' => '');
+ $url = new Url(Config::get('url_base_index'));
+ self::$parametres = array( 'module' => 'Recherche',
+ 'action' => 'executerActionParDefaut',
+ 'sortie' => $sortie,
+ 'url' => $url);
+ parent::__construct();
+ }
+
+ /**
+ * Initialisation du controleur principal en fonction des paramêtres de l'url.
+ */
+ public static function initialiser() {
+ self::verifierCreationInstance();
+ self::gererSession();
+
+ if (isset($_GET['module'])) {
+ self::$parametres['module'] = $_GET['module'];
+ }
+ self::$parametres['url']->setVariableRequete('module', self::$parametres['module']);
+ if (isset($_GET['action'])) {
+ self::$parametres['action'] = $_GET['action'];
+ }
+ self::$parametres['url']->setVariableRequete('action', self::$parametres['action']);
+
+ self::initialiserRegistre();
+
+ $ClasseModule = self::$parametres['module'];
+ $action = self::$parametres['action'];
+ $module = new $ClasseModule();
+ $module->$action();
+ self::fusionnerSortie($module->getSortie());
+ }
+
+ private static function initialiserRegistre() {
+ $registre = Registre::getInstance();
+ // Ajout des paramètres au registre
+ $registre->set('parametres', self::$parametres);
+
+ // Ajout du contexte au registre
+ if (isset($_GET['contexte'])) {
+ $registre->set('contexte', $_GET['contexte']);
+ }
+ }
+
+ private static function gererSession() {
+ if (Config::get('session_demarrage')) {
+ // Attribution d'un nom à la session
+ session_name(Config::get('session_nom'));
+ // Démarrage de la session
+ session_start();
+ }
+ }
+
+ /**
+ * Fusionne un tableau de sortie par défaut avec le tableau renvoyé par l'action du module.
+ * @param array le tableau à fusionner
+ */
+ private static function fusionnerSortie($sortie) {
+ self::$parametres['sortie'] = array_merge(self::$parametres['sortie'], $sortie);
+ }
+
+
+ /**
+ * Vérifie si l'instance de classe à été crée, si non la crée.
+ */
+ private static function verifierCreationInstance() {
+ if (empty(self::$instance)) {
+ self::$instance = new AppControleur();
+ }
+ }
+
+ /**
+ * Retourne le titre du contenu de l'application.
+ */
+ public static function getMetaTitre() {
+ $sortie = self::$parametres['sortie']['titre'];
+ if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
+ $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage'));
+ }
+ return $sortie;
+ }
+
+ /**
+ * Retourne la description du contenu de l'application.
+ */
+ public static function getMetaDescription() {
+ $sortie = self::$parametres['sortie']['description'];
+ if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
+ $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage'));
+ }
+ return $sortie;
+ }
+
+ /**
+ * Retourne les mots-clés (tags) du contenu de l'application.
+ */
+ public static function getMetaTags() {
+ $sortie = self::$parametres['sortie']['tags'];
+ if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
+ $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage'));
+ }
+ return $sortie;
+ }
+
+ /**
+ * Retourne le contenu du corps de l'application.
+ */
+ public static function getContenuCorps() {
+ $sortie = self::$parametres['sortie']['corps'];
+ if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
+ $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage'));
+ }
+ return $sortie;
+ }
+
+ /**
+ * Retourne le contenu de la tête de l'application.
+ */
+ public static function getContenuTete() {
+ $sortie = self::$parametres['sortie']['tete'];
+ if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
+ $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage'));
+ }
+ return $sortie;
+ }
+
+ /**
+ * Retourne le contenu du pied de l'application.
+ */
+ public static function getContenuPied() {
+ $sortie = self::$parametres['sortie']['pied'];
+ if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
+ $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage'));
+ }
+ return $sortie;
+ }
+
+ /**
+ * Retourne les éléments de navigation de l'application.
+ */
+ public static function getContenuNavigation() {
+ $sortie = self::$parametres['sortie']['navigation'];
+ if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
+ $sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage'));
+ }
+ return $sortie;
+ }
+
+ /**
+ * Retourne le nom du module en cours (défini par GET ou par la config),
+ * pour l'intégration Wordpress notamment
+ */
+ public static function getModule() {
+ return self::$parametres['module'];
+ }
+
+ /**
+ * Retourne les chronos pris dans l'appli
+ */
+ public static function getChrono() {
+ $sortie = '';
+ if (Config::get('chronometrage')) {
+ $chrono = Chronometre::afficherChrono();
+ $sortie = mb_convert_encoding($chrono, Config::get('sortie_encodage'), Config::get('appli_encodage'));
+ }
+ return $sortie;
+ }
+
+ /**
+ * Retourne les messages d'exceptions et d'erreurs.
+ */
+ public static function getExceptions() {
+ $sortie = (Config::get('fw_debogage')) ? 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;
+ }
+}
\ No newline at end of file
/tags/v1.13-la-grande-rue/controleurs/AppControleur.php
Property changes:
Added: svn:keywords
## -0,0 +1 ##
+Id Author Date Revision HeadURL
\ No newline at end of property
Index: tags/v1.13-la-grande-rue/controleurs/aControleur.php
===================================================================
--- tags/v1.13-la-grande-rue/controleurs/aControleur.php (revision 0)
+++ tags/v1.13-la-grande-rue/controleurs/aControleur.php (revision 280)
@@ -0,0 +1,469 @@
+<?php
+// declare(encoding='UTF-8');
+/**
+ * Classe Controleur générale de l'application Collection.
+ *
+ * @category php5.2
+ * @package Collection
+ * @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
+ * @copyright 2010 Tela-Botanica
+ * @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
+ * @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
+ * @version SVN: $Id$
+ */
+abstract class aControleur extends Controleur {
+
+ const FMT_DATE = '%d/%m/%Y';// Supporte les formats de dates non valides (1989-00-00)
+ const FMT_DATE_TXT = '%A %d %B %Y';
+ const FMT_DATE_HEURE = '%d/%m/%Y %H:%i:%s';// Supporte les formats de dates non valides (1989-00-00 00:00:00)
+ const FMT_DATE_HEURE_TXT = '%A %d %B %Y à %H:%M';
+
+ const META_TITRE = 'titre';
+ const META_DESCRIPTION = 'description';
+ const META_TAGS = 'tags';
+ const RENDU_TETE = 'tete';
+ const RENDU_CORPS = 'corps';
+ const RENDU_PIED = 'pied';
+
+ const TYPE_AUTRE = 'AUTRE';
+ const TYPE_TOTAL = 'TOTAL';
+ const SEPARATEUR_TYPE_VALEUR = '##';
+ const SEPARATEUR_VALEURS = ';;';
+ const SEPARATEUR_DONNEES = '||';
+ const VALEUR_NULL = 'NC';
+
+ private $sortie = array();
+ private $parametres = array();
+ // FIXME : voir s'il est plus intéressant d'utiliser une méthode dans les classes filles
+ protected $url = null;
+ protected $registre = array();
+
+ public function __construct() {
+ $this->registre = Registre::getInstance();
+ $this->parametres = $this->registre->get('parametres');
+ $this->url = $this->parametres['url'];
+ parent::__construct();
+ }
+
+ /**
+ * Attribue une position de sortie à un contenu.
+ */
+ protected function setSortie($position, $contenu, $fusionner = false) {
+ if ($this->verifierExistenceTypeSortie($position)) {
+ if ($fusionner) {
+ $this->sortie[$position] .= $contenu;
+ } else {
+ $this->sortie[$position] = $contenu;
+ }
+ }
+ }
+
+ /**
+ * Vérifie l'existence du type de sortie indiqué pour son utilisation dans le tableau de sortie.
+ * @param string le type de sortie à tester.
+ * @return bool true si le type de sortie est valide, sinon false.
+ */
+ private function verifierExistenceTypeSortie($type) {
+ $existe = true;
+ if ($type != self::RENDU_TETE &&
+ $type != self::RENDU_CORPS &&
+ $type != self::RENDU_PIED &&
+ $type != self::META_TITRE &&
+ $type != self::META_DESCRIPTION &&
+ $type != self::META_TAGS) {
+ trigger_error("Le type de sortie '$type' n'est pas une valeur prédéfinie.", E_USER_WARNING);
+ $existe = false;
+ }
+ return $existe;
+ }
+
+ /**
+ * Retourne le tableau de sortie à utiliser dans le controleur principal de l'application.
+ */
+ public function getSortie() {
+ return $this->sortie;
+ }
+
+ /**
+ * Execute l'action d'un module donnée et fusionne le résultat avec le tableau de sortie.
+ */
+ protected function executerAction($ClasseModule, $action) {
+ $module = new $ClasseModule();
+ $module->$action();
+ $this->fusionnerSortie($module->getSortie());
+
+ }
+
+ /**
+ * Fusionne un tableau de sortie par défaut avec le tableau passé en paramêtre.
+ * @param array le tableau à fusionner
+ */
+ private function fusionnerSortie($sortie) {
+ $this->sortie = array_merge($this->sortie, $sortie);
+ }
+
+ protected function construireTxtTruckSimple($chaine_a_analyser) {
+ return $this->construireTxtTruck($chaine_a_analyser, false, false);
+ }
+
+ protected function construireTxtTruckSansMajuscule($chaine_a_analyser) {
+ return $this->construireTxtTruck($chaine_a_analyser, false, true);
+ }
+
+ protected function construireTxtTruckSansPointFinal($chaine_a_analyser) {
+ return $this->construireTxtTruck($chaine_a_analyser, true, false);
+ }
+
+ protected function construireTxtTruck($chaine_a_analyser, $majuscule = true, $point_final = true) {
+ $termes = $this->traiterTxtTruck($chaine_a_analyser);
+ $chaine_a_retourner = $this->formaterTableauDeTxt($termes, $majuscule, $point_final);
+ return $chaine_a_retourner;
+ }
+
+ protected function traiterTxtTruck($chaine_a_analyser) {
+ $termes = array();
+ if ((!is_null($chaine_a_analyser)) && (trim($chaine_a_analyser) != '')) {
+ $valeurs = explode(self::SEPARATEUR_VALEURS, $chaine_a_analyser);
+ $nbre_valeurs = count($valeurs);
+ if ($nbre_valeurs > 0) {
+ for ($i = 0; $i < $nbre_valeurs; $i++) {
+ $valeur = trim($valeurs[$i]);
+ if ($valeur != '') {
+ $valeur_formatee = $this->formaterValeurTruck($valeur);
+ $termes[] = $valeur_formatee;
+ }
+ }
+ }
+ }
+ return $termes;
+ }
+
+ protected function getTxtTruckParPosition($chaine_a_analyser, $position = 1) {
+ $retour = '';
+ if ((!is_null($chaine_a_analyser)) && (trim($chaine_a_analyser) != '')) {
+ $valeurs = explode(self::SEPARATEUR_VALEURS, $chaine_a_analyser);