Subversion Repositories eFlore/Applications.eflore-consultation

Compare Revisions

No changes between revisions

Regard whitespace Rev 1394 → Rev 1427

/tags/v5.10-vilmorin/popup.php
New file
0,0 → 1,59
<?php
// declare(encoding='UTF-8');
/** Inclusion du fichier principal de l'application*/
require_once 'eflore.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" 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" />
 
<!-- Favicones -->
<link rel="icon" type="image/png" href="http://resources.tela-botanica.org/tb/img/16x16/favicon.png" />
<link rel="shortcut icon" type="image/x-icon" href="http://resources.tela-botanica.org/tb/img/16x16/favicon.ico" />
 
<!-- CSS -->
<link href="http://www.tela-botanica.org/sites/commun/generique/styles/commun.css" rel="stylesheet" type="text/css" />
<link href="http://www.tela-botanica.org/sites/botanique/generique/styles/botanique.css" rel="stylesheet" type="text/css" />
<link href="http://www.tela-botanica.org/commun/bootstrap/2.0.2/css/bootstrap.css" rel="stylesheet" type="text/css" />
<link href="presentations/styles/eflore.css" rel="stylesheet" type="text/css" />
<link href="presentations/styles/popup.css" rel="stylesheet" type="text/css" />
 
<!-- JavaScript -->
<script type="text/javascript" src="http://www.tela-botanica.org/commun/jquery/1.7.1/jquery-1.7.1.js"></script>
<script type="text/Javascript" src="http://www.tela-botanica.org/commun/jquery/cookie/1.0/jquery.cookie.min.js"></script>
<!-- @FIXME WTF?? si ajax.aspnetcdn.com tombe en rideau, on s'assied sur nos popups?? :-/ -->
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js"></script>
<script type="text/Javascript" src="presentations/scripts/eflore.js"></script>
 
<!-- JavaScript et CSS spécifiques au module -->
<?php echo AppControleur::getEntete(); ?>
</head>
<body>
<div id="zone-conteneur">
<div id="zone-tete">
<?php echo AppControleur::getContenuTete(); ?>
</div>
 
<div id="zone-corps">
<?php echo AppControleur::getContenuCorps(); ?>
</div>
 
<div id="zone-pied">
<div id="zone-debug">
</div>
</div>
</div>
</body>
</html>
/tags/v5.10-vilmorin/configurations/bdtfx.ini
New file
0,0 → 1,24
; Mettre ici les paramètres de config qui doivent être redéfinis par ce référentiel
couleur_alphabet_fin = "204,255,51"
 
; Mettre ici les paramètres spécifiques au référentiel
[bdtfx]
nom = "Base de données des Trachéophytes de France Métropolitaine"
referentielVerna = "nvjfl"
referentielVernaGrec = "nvps"
baseImages = "cel"
baseImagesSupp = "photoflora"
baseDessins = "coste"
baseRepartition = "chorodep"
baseMoissonnage = "eflore"
baseFloresRef = "bdtfx"
baseFloreProbable = "sophy"
 
baseDescription = "coste,baseflor"
baseEcologie = "baseflor"
basePhytosocio = "baseveg"
baseStatuts = "sptb"
baseListeRouge = "liste-rouge"
 
; à voir si l'on crée un fichier spécifique pour l'i18n de chaque référentiel
champsPresence = "statut de présence en France (hors Corse):prga|statut de présence en Corse:prco"
/tags/v5.10-vilmorin/configurations/config_papyrus.ini
New file
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'indication du fichier de départ
url_base_index = "{ref:url_base}"
; URL de base où se situe le .htaccess réalisant la réécriture d'URL pour les permaliens de l'application
url_base_permalien = "http://www.tela-botanica.org/"
/tags/v5.10-vilmorin/configurations/config.defaut.ini
New file
0,0 → 1,295
; +------------------------------------------------------------------------------------------------------+
; Général
; Séparateur de dossier
ds = DIRECTORY_SEPARATOR
 
; +------------------------------------------------------------------------------------------------------+
; Infos sur l'application
; Le nom de votre application.
info.nom = "eFlore - consultation"
; Le code ou l'abréviation de votre application.
info.abr = "EFC"
; Code numérique de la version de l'application
info.version.code.num = "1.0"
; Code alphabétique de la version de l'application
info.version.code.alpha = "cosson"
; Nom de la version de l'application
info.version.nom = "Cosson"
 
; +------------------------------------------------------------------------------------------------------+
; Encodage de l'application.(Voir la liste des noms des jeux de caractères :http://fr2.php.net/manual/fr/mbstring.supported-encodings.php)
appli_encodage = "UTF-8"
; Encodage de sortie de l'application.(Voir la liste des noms des jeux de caractères :http://fr2.php.net/manual/fr/mbstring.supported-encodings.php)
sortie_encodage = "UTF-8"
 
; +------------------------------------------------------------------------------------------------------+
; Chemin et dossier contenant les classes de l'application
dossier_modeles = metier
chemin_appli = "php:Framework::getCheminAppli()"
chemin_modeles = "{ref:chemin_appli}{ref:dossier_modeles}{ref:ds}"
 
; +------------------------------------------------------------------------------------------------------+
; Chemin et dossier contenant les modules ( pour l'export pdf )
dossier_modules = modules
chemin_appli = "php:Framework::getCheminAppli()"
chemin_modules = "{ref:chemin_appli}{ref:dossier_modules}{ref:ds}"
 
; +------------------------------------------------------------------------------------------------------+
; Chemin et dossier contenant les images
dossier_images = presentations/images
chemin_appli = "php:Framework::getCheminAppli()"
chemin_images = "{ref:chemin_appli}{ref:dossier_images}{ref:ds}"
 
; +------------------------------------------------------------------------------------------------------+
; Nom de domaine pour l'URL de base de l'application :
domaine = "www.tela-botanica.org"
; URL de base de l'application. Si vide : fonctionnement en Stand-alone
; Peut utiliser un objet Net_URL comme ceci : "php:$mon_objet_net_url->getUrl()"
base_url_application = "http://{ref:domaine}/eflore/consultation/"
; URL del
base_url_del = "http://{ref:domaine}/appli:del"
; URL de base de l'application avec l'indication du fichier de départ
;base_url_application_index = "php:'http://{ref:domaine}'.$_SERVER['SCRIPT_NAME']"
; La syntaxe suivante pose problème avec l'utiliation du chargement Ajax des onglets :"php:'http://{ref:domaine}'.$_SERVER['SCRIPT_NAME']"
; A laisser vide lors de l'intégration dans papyrus
base_url_application_index = "{ref:base_url_application}index.php"
; URL de base de l'application avec l'indication du fichier pop-up
base_url_application_popup = "{ref:base_url_application}popup.php"
; URL de base de l'application avec l'indication du fichier pop-up
base_url_application_service = "{ref:base_url_application}service.php"
; URL de base de l'application avec l'indication du fichier pop-up
base_url_application_onglets = "{ref:base_url_application}service.php"
; URL de base où se situe le .htaccess réalisant la réécriture d'URL pour les permaliens de l'application
base_url_application_permalien = "{ref:base_url_application}"
; URL de base pour les fiches mobiles
base_url_mobile = "http://{ref:domaine}/mobile:{referentiel}-nn-{num_nom}"
 
; URL widget du cel
base_url_widget = "http://{ref:domaine}/widget:cel:"
base_url_widget_saisie = "{ref:base_url_widget}saisie"
base_url_widget_carto = "{ref:base_url_widget}cartoPoint"
base_url_pictoflora = "http://{ref:domaine}/appli:pictoflora"
; URL du widget de remarques
url_widget_remarques = "http://{ref:domaine}/widget:reseau:remarques";
 
; +------------------------------------------------------------------------------------------------------+
; URL CSS commun du site
url_css_commun = "http://www.tela-botanica.org/sites/commun/generique/styles/commun.css"
; URL CSS spécialisé du site
url_css_site = "http://www.tela-botanica.org/sites/botanique/generique/styles/botanique.css"
; URL CSS eflore
url_css_appli = "{ref:base_url_application}presentations/styles/eflore.css"
; URL CSS pdf
url_css_pdf = "{ref:base_url_application}presentations/styles/pdf.css"
; URL CSS images
url_css_images = "{ref:base_url_application}presentations/images/"
 
; +------------------------------------------------------------------------------------------------------+
; Paramètrage de la session et de l'identification
; 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 = "eflore"
; Mettre à true si l'application nécessite de s'identifier.
identification = false
 
; +------------------------------------------------------------------------------------------------------+
; Débogage
; Indique si oui ou non on veut afficher le débogage.
debogage = false
; Indique sous quelle forme les messages de débogage doivent s'afficher :
; - Debug::MODE_ECHO : le message est affiché en utilisant echo
; - Debug::MODE_NOTICE : le message est affiché en utilisant une erreur de type notice
debogage_mode = "php:Debug::MODE_NOTICE"
 
; +------------------------------------------------------------------------------------------------------+
; Benchmark
; benchmark_chrono : Indique si oui ou nom on veut afficher le tableau de chronométrage de l'application. (BENCHMARK)
benchmark_chrono = false
 
; +------------------------------------------------------------------------------------------------------+
; Cookies
cookies.duree = "php:3600*24*365"
cookies.utilisateur="pap-annuaire_tela-utilisateur"
cookies.utilisateurPersistant="pap-annuaire_tela-memo"
cookies.niveau="eflore.niveau"
 
; +------------------------------------------------------------------------------------------------------+
; Paramètres spécifiques à l'application
; Nom du module par défaut de l'application
module_defaut = "recherche";
; Nom de la méthode par défaut à executer dans un module
action_defaut = "action-par-defaut"
; Tableau des onglets résultats en fonction du niveau et du type de nom
affich_resultats="
1_nom_vernaculaire=determination,
1_nom_scientifique=determination,
2_nom_vernaculaire=determination,
2_nom_scientifique=determination,
3_nom_vernaculaire=determination,
3_nom_scientifique=decompo"
; Tableau des blocs de la fiche en fonction du niveau
blocs_fiche_defaut="
1=Description|Illustrations|Ethnobotanique|Répartition|Ecologie,
2=Illustrations|Description|Répartition|Ethnobotanique|Nomenclature|Classification|Bibliographie|Protection|Ecologie,
3=Illustrations|Description|Répartition|Ethnobotanique|Nomenclature|Classification|Bibliographie|Protection|Ecologie"
 
; +------------------------------------------------------------------------------------------------------+
; Paramètres spécifiques à eFlore
; Indique le référentiel par défaut à utiliser pour la recherche de nom latin
referentiel_defaut = "bdtfx"; Pour l'affichage multi-projets mettre : *
; Indique le niveau (débutant, expert) par défaut à utiliser
niveau_defaut = "2"; 1 : débutant, 2 : intermediaire, 3 : expert
; URL pour récupérer un fichier Javascript
url_js = "{ref:base_url_application}/presentations/scripts/"
; courriel de contact en cas de problème sur l'application
courriel_contact = "eflore_remarques@tela-botanica.org"
; Coloration de l'alphabet : début la plus claire, fin la plus foncé
couleur_alphabet_debut = "255,255,255"
couleur_alphabet_fin = "208,171,225"
 
; +------------------------------------------------------------------------------------------------------+
; Autres urls
urlApiChart = "http://chart.apis.google.com/chart"
urlQrCodeTpl = "http://www.tela-botanica.org/tmp/eflore_v5_cache/qrcode/%s"
baseUrlServicesAnnuaireTpl = "http://www.tela-botanica.org/service:annuaire:%s"
baseUrlProfilAnnuaireTpl = "http://www.tela-botanica.org/profil:%s"
baseUrlServicesCelTpl = "http://www.tela-botanica.org/service:cel:%s"
urlMauvaiseIdentificationTpl = "http://www.tela-botanica.org/appli:identiplante#obs~%s"
baseUrlImageCelTpl = "http://api.tela-botanica.org/img:%s"
 
; +------------------------------------------------------------------------------------------------------+
; Paramètres spécifiques à l'API 0.1 d'eFlore
baseUrlApiEflore = "http://{ref:domaine}/service:eflore:0.1/{projet}"
 
nomsTpl = "{ref:baseUrlApiEflore}/noms"
nomTpl = "{ref:nomsTpl}/{id}"
nomsStatsInitialesRangTpl = "{ref:nomsTpl}/stats/initiales?masque.rg={rang}"
nomsListeInitialesRangTpl = "{ref:nomsTpl}?masque={initiale}&recherche=etendue&masque.rg={rang}&navigation.limite=500"
nomsRechercheTpl = "{ref:nomsTpl}?masque={valeur}&recherche={type}&ns.format=txt&navigation.limite=3000&retour.champs=rang"
nomsRechercheRetenuTpl = "{ref:nomsTpl}?masque={valeur}&recherche={type}&ns.format=txt&ns.structure=au&navigation.limite=3000&retour.champs=rang"
nomsRechercheAlphabTpl = "{ref:nomsTpl}?masque={valeur}&recherche={type}&ns.format=txt&ns.structure=au&navigation.limite=3000&retour.champs=rang"
nomsRechercheSynonymeTpl = "{ref:nomsTpl}?masque={valeur}&recherche={type}&ns.format=txt&navigation.limite=3000&retour.champs=rang"
nomsRechercheDeterminationTpl = "{ref:nomsTpl}?masque={valeur}&recherche={type}&ns.format=txt&retour.champs=nom_retenu,nom_retenu.*,num_taxonomique,rang,nom_retenu_complet&ns.structure=au&navigation.limite=3000"
nomsRechercheDecompoTpl = "{ref:nomsTpl}?masque={valeur}&recherche={type}&ns.format=txt&retour.champs=auteur,annee,biblio_origine,rang,nom_addendum&navigation.limite=3000"
nomsSynonymesTpl = "{ref:nomsTpl}/{id}/relations/synonymie?ns.format=htm"
nomsRechercheAvanceeTpl = "{ref:nomsTpl}?ns.format=txt&navigation.limite=3000&recherche={type}&retour.champs=num_taxonomique,nom_retenu,nom_retenu.*,auteur,biblio_origine,annee,rang,nom_addendum"
nomsFloresTpl = "{ref:nomsTpl}/{id}/relations/flores"
 
nomsVernaTpl = "{ref:baseUrlApiEflore}/noms-vernaculaires"
nomsVernaRechercheTpl = "{ref:nomsVernaTpl}?masque.nv={valeur}&recherche={type}"
nomsVernaRechercheLimiteeTpl = "{ref:nomsVernaTpl}/attributions?masque.nt={valeur}"
nomsVernaRechercheCompleteTpl = "{ref:nomsVernaTpl}/attributions?masque.nt={valeur}&retour.format=max&retour.champs=conseil_emploi,genre,taxon"
nomsVernaRechercheDeterminationTpl = "{ref:nomsVernaTpl}/attributions?masque.nv={valeur}&recherche={type}&navigation.limite=3000"
nomsVernaRechercheAlphabTpl = "{ref:nomsVernaTpl}/attributions?masque.nv={valeur}&recherche={type}&navigation.limite=3000"
 
cartesTpl = "{ref:baseUrlApiEflore}/cartes"
carteTpl = "{ref:cartesTpl}/{id}?retour.format={largeur}&retour={mime-type}"
legendeIdCarteTpl = "{ref:cartesTpl}/{id}/legende"
legendeCarteTpl = "{ref:cartesTpl}/legende"
efloreCarteTpl = "{ref:cartesTpl}?masque.nn={num_nom}&masque.nt={num_tax}&masque.ns={nom_sci}&masque.au={auteur}&retour.format={largeur}&retour={mime_type}"
carteMoissonnageTpl = "{ref:cartesTpl}?referentiel={referentiel}&num_taxon={num_taxon}&format={largeur}&retour={mime_type}&methode={methode}"
carteFloreProbableTpl = "{ref:cartesTpl}/flore-probable/{id}?retour.format={mime_type}"
 
metaDonneesTpl = "{ref:baseUrlApiEflore}/meta-donnees?{verproj}={version}"
 
taxonsTpl = "{ref:baseUrlApiEflore}/taxons"
taxonTpl = "{ref:taxonsTpl}/{id}"
taxonsStatsInitialesRangTpl = "{ref:taxonsTpl}/stats/initiales?masque.rg={rang}"
taxonsListeInitialesRangTpl = "{ref:taxonsTpl}?masque={initiale}&recherche=etendue&masque.rg={rang}"
taxonsRechercheTpl = "{ref:taxonsTpl}?masque={valeur}&recherche={type}"
taxonSupTpl = "{ref:taxonsTpl}/{id}/relations/superieurs"
taxonInfTpl = "{ref:taxonsTpl}/{id}/relations/inferieurs"
 
imagesTpl = "{ref:baseUrlApiEflore}/images?navigation.depart={depart}&navigation.limite={limite}&referentiel={referentiel}"
imagesResultatsDeterminationTpl = "{ref:baseUrlApiEflore}/images?masque.nn={idsNoms}&referentiel={referentiel}&retour.format=CRS&navigation.limite={limite}"
imagesFicheBlocTpl = "{ref:baseUrlApiEflore}/images?masque.nn={idsNoms}&referentiel={referentiel}&retour.format=CS&retour.tri=date"
imagesPremiereTpl = "{ref:baseUrlApiEflore}/images?masque.nn={idsNoms}&referentiel={referentiel}&retour.format=CS&retour.tri=date&navigation.limite=1"
imagesPopupTpl = "{ref:baseUrlApiEflore}/images/{id}?referentiel={referentiel}"
imagesTaxonsTpl = "{ref:baseUrlApiEflore}/images?masque.nt={nntaxon}&referentiel={referentiel}"
 
nbTrancheImagesResultatsDeterminationAffichees = 12
 
textesTpl = "{ref:baseUrlApiEflore}/textes"
texteTpl = "{ref:textesTpl}/{id}?txt.format={txtFormat}"
texteTitreSectionTpl = "{ref:textesTpl}/{id}?txt.format={txtFormat}&txt.section.titre={sectionTitre}"
 
referencesBiblioBota = "{ref:baseUrlApiEflore}/publications/?masque.taxon={nom_saisi}"
 
pageWikiTpl = "http://www.tela-botanica.org/eflore:wiki:{pageTag}"
texteWikiTpl = "http://www.tela-botanica.org/wikini/eFloreRedaction/api/rest/0.5/pages/{pageTag}"
editionSectionWikiTpl = "{ref:texteWikiTpl}?txt.format=text/plain&txt.template=PageTaxon&txt.section.titre={sectionTitre}"
texteBrutWikiTpl = "{ref:texteWikiTpl}?txt.format=text/plain"
texteBrutSectionWikiTpl = "{ref:texteBrutWikiTpl}&txt.section.titre={sectionTitre}"
texteFormateWikiTpl = "{ref:texteWikiTpl}?txt.format=text/html"
texteFormateSectionWikiTpl = "{ref:texteFormateWikiTpl}&txt.section.titre={sectionTitre}"
 
smartFloreWikiTpl = "http://www.tela-botanica.org/wikini/eFloreRedactionTest/api/rest/0.5/pages/SmartFlore"
 
wikipediaLienPageTpl = "http://{langue}.wikipedia.org/wiki/{id}"
 
informationsTpl = "{ref:baseUrlApiEflore}/informations"
informationTpl = "{ref:informationsTpl}/{bdnt}.nn:{num_nom}"
informationsRelationCatminat = "{ref:informationTpl}/relations/catminat?navigation.limite={limite}&navigation.depart={depart}"
informationsCatminat = "{ref:informationsTpl}?masque.cat={catminat}&navigation.limite={limite}&navigation.depart={depart}"
 
graphiqueTpl = "{ref:baseUrlApiEflore}/graphiques/{type_graph}/{bdnt}.nn:{num_nom}"
legendeGraphiqueTpl = "{ref:baseUrlApiEflore}/ontologies/{params}"
 
syntaxonsTpl = "{ref:baseUrlApiEflore}/syntaxons";
syntaxonsSuperieurs = "{ref:syntaxonsTpl}/{code}/relations/niveaux-sup?retour.champs=physio_biotype,repartition_france,ref_der_biblio&masque.retenu=true";
syntaxonsSynonymes = "{ref:syntaxonsTpl}/{code}/relations/synonymie";
syntaxonsCatminat = "{ref:syntaxonsTpl}/{code}";
 
statutsTpl = "{ref:baseUrlApiEflore}/statuts/?masque.nn={id}"
statutsZoneGeoTpl = "{ref:baseUrlApiEflore}/statuts/?masque.nn={id}&retour.format=zone_geo"
 
listeRougeTpl = "{ref:baseUrlApiEflore}/categorie/?masque.nn={id}"
 
; +------------------------------------------------------------------------------------------------------+
; Paramètres spécifiques à l'API 0.1 de DEL
baseUrlApiDel = "http://{ref:domaine}/service:del:0.1/"
delImagesTpl = "{ref:baseUrlApiDel}images?navigation.depart={depart}&navigation.limite={limite}&masque.referentiel={referentiel}&format=CRS";
delImagesResultatsDeterminationTpl = "{ref:baseUrlApiDel}images?masque.nn={idsNoms}&referentiel={referentiel}&tri=votes&ordre=desc&protocole=3&navigation.limite=801&format=CRS"
delImagesPremiereTpl = "{ref:baseUrlApiDel}images?navigation.limite=1&masque.referentiel={referentiel}&masque.nn={idsNoms}&format=CS&tri=date_observation&ordre=asc"
delImagesPopupTpl = "{ref:baseUrlApiDel}images/{id}?masque.referentiel={referentiel}&format=M"
delImagesTaxonsTpl = "{ref:baseUrlApiDel}images?masque.referentiel={referentiel}&masque.nt={nntaxon}&navigation.limite=100"
delGalerieMobileTpl = "{ref:baseUrlApiDel}images?navigation.depart=0&navigation.limite=4&masque.referentiel={referentiel}&masque.nn={nn}&tri=votes&ordre=desc&protocole=3&format=CRS";
delMeilleuresImagesParTagTpl = "{ref:baseUrlApiDel}images?masque.referentiel={referentiel}&masque.tag={tag}&masque.nn={nn}&navigation.limite={limite}&tri=votes&ordre=desc&protocole={protocole}&format={format}";
 
; +------------------------------------------------------------------------------------------------------+
; Chemin vers outil de conversion pdf
WKHTMLTOPDF = "wkhtmltopdf"
 
; +------------------------------------------------------------------------------------------------------+
;permaliens
permalienNumNomTpl = "http://{ref:domaine}/{ref_tax}-nn-{id}";
permalienTaxonTpl = "http://{ref:domaine}/{ref_tax}/{ref_version}-nt-{id}";
 
; +------------------------------------------------------------------------------------------------------+
; Gestion du cache et des dossiers de stockage
; Active (true) ou désactive (false) le cache
cache = true
; chemin du cache
chemincache = "/home/telabotap/www/tmp/eflore_v5_cache/"
; durée du cache
dureecache = "php:60*60*24*365"
 
; chemin de stockage temporaire pour les Html & les PDF
dossier_pdf = "{ref:chemincache}pdf/"
; chemin de stockage temporaire pour les QrCode
dossierQrCode = "{ref:chemincache}qrcode/"
 
; +------------------------------------------------------------------------------------------------------+
; Fiche Mobile
; Nombre d'image max par projet pour le slider de la fiche mobile
pictures.number.max = 3
; Lien vers le formulaire d'édition Smart'Flore
smartFloreEditionFormulaireUrlTpl = "http://localhost/smart-form/?action=editer-fiche&referentiel=%s&num_tax=%s"
 
; +------------------------------------------------------------------------------------------------------+
; Utilisation du dictionnaire (pour activer différement par niveau)
utiliserDictionnaire = 1
utiliserDictionnaireNiveau1 = 0
utiliserDictionnaireNiveau2 = 1
utiliserDictionnaireNiveau3 = 0
/tags/v5.10-vilmorin/configurations/test-conf.sed
New file
0,0 → 1,9
/^(debogage|benchmark_chrono)\>/s|= .*|= true|
/^base_url_application/s|/eflore/|/eflore-test/|
/^base_url_widget/s|/widget:cel:saisie|/widget-test:cel:saisie|
/^base_url_mobile/s|/mobile|/mobile-test|
/^cache/s|= .*|= false|
/^chemincache/s|= .*|= /home/telabotap/www/tmp/eflore-test_v5_cache/|
/^texteWikiTpl/s|/eFloreRedaction/|/eFloreRedactionTest/|
/^pageWikiTpl/s|/eflore:wiki:|/eflore-test:wiki:|
/^baseUrlApiEflore/s|/service:eflore:|/service-test:eflore:|
/tags/v5.10-vilmorin/configurations/Makefile
New file
0,0 → 1,18
# installation de l'espace de test
# syntax: make <cible>
cache_owner = telabotap
cache_group = users
 
test:
@test '!' -e config.ini || { echo "config.ini exists"; exit 1; }
@cp config.defaut.ini config.ini
@sed -r -i -f test-conf.sed config.ini
 
prod:
@echo "note: le fichier de configuration distribué est déjà adapté pour la -prod"
@test '!' -e config.ini || { echo "config.ini exists"; exit 1; }
@cp config.defaut.ini config.ini
 
cache:
@cache=$(shell sed -n '/chemincache/s/.*= *//p' config.ini)
@test -n "$(cache)" && install -d -o $(cache_owner) -g $(cache_group) $(cache) || true
Property changes:
Added: svn:eol-style
+native
\ No newline at end of property
/tags/v5.10-vilmorin/configurations/isfan.ini
New file
0,0 → 1,15
; Mettre ici les paramètres de config qui doivent être redéfinis par ce référentiel
couleur_alphabet_fin = "204,255,51"
 
; Mettre ici les paramètres spécifiques au référentiel
[isfan]
nom = "Base de données des Trachéophytes des Antilles"
referentielVerna = ""
baseImages = "cel"
baseStatuts = ""
baseRepartition = ""
 
; à voir si l'on crée un fichier spécifique pour l'i18n de chaque référentiel
champsPresence = ""
/tags/v5.10-vilmorin/configurations/RechercheOpenSearch/OpenSearchBdtfx.xml
New file
0,0 → 1,13
<?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:ie="http://schemas.microsoft.com/Search/2008/">
<ShortName>eFlore BDTFX : noms scientifiques</ShortName>
<Description>flore électronique en ligne</Description>
<Image height="16" width="16" type="image/ico"> http://resources.tela-botanica.org/tb/img/16x16/favicon.ico </Image>
<Url type="text/html" method="GET" template="http://www.tela-botanica.org/page:eflore_bdtfx?type_nom=nom_scientifique&amp;referentiel=bdtfx&amp;niveau=2&amp;module=recherche&amp;action=rechercheSimple&amp;submit=OK&amp;nom={searchTerms}"/>
<Language>fr</Language>
<developer>Tela Botanica</developer>
<InputEncoding>ISO-8859-1</InputEncoding>
<Url type="application/opensearchdescription+xml" rel="self" template="http://www.tela-botanica.org/eflore/consultation/configurations/OpenSearchBdtfx"/>
<Url type="application/x-suggestions+json" rel="self" template="http://api.tela-botanica.org/service:eflore:0.1/bdtfx/noms?masque={searchTerms}&amp;recherche=etendue&amp;retour.format=oss&amp;navigation.limite=50"/>
</OpenSearchDescription>
<!-- configuration du moteur de recherche intégré au navigateur -->
/tags/v5.10-vilmorin/configurations/RechercheOpenSearch/RechercheOpenSearch.xml
New file
0,0 → 1,13
<?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:ie="http://schemas.microsoft.com/Search/2008/">
<ShortName>eFlore BDTFX : noms scientifiques</ShortName>
<Description>flore électronique en ligne</Description>
<Image height="16" width="16" type="image/ico"> http://resources.tela-botanica.org/tb/img/16x16/favicon.ico </Image>
<Url type="text/html" method="GET" template="http://www.tela-botanica.org/eflore-consultation/index.php?type_nom=nom_scientifique&amp;referentiel=bdtfx&amp;niveau=2&amp;module=recherche&amp;action=rechercheSimple&amp;submit=OK&amp;nom={searchTerms}"/>
<Language>fr</Language>
<developer>Tela Botanica</developer>
<InputEncoding>UTF-8</InputEncoding>
<Url type="application/opensearchdescription+xml" rel="self" template="http://www.tela-botanica.org/eflore-consultation/configurations/RechercheOpenSearch.xml"/>
<Url type="application/x-suggestions+json" rel="self" template="http://www.tela-botanica.org/test-service:eflore:0.1/bdtfx/noms?masque={searchTerms}&amp;recherche=etendue&amp;retour.format=oss&amp;navigation.limite=50"/>
</OpenSearchDescription>
<!-- configuration du moteur de recherche intégré au navigateur -->
/tags/v5.10-vilmorin/configurations/RechercheOpenSearch/OpenSearchNomSci.php
New file
0,0 → 1,31
<?php
/**
* @author mathias
* Marche pas car l'exécution de ce bout de PHP est renvoyée par le serveur comme du HTML, ça rajoute des balises etc.
* Soit faut le passer en Webservice, soit faut... je sais pas :)
*/
$page = 'eflore_bdtfx';
if (isset($_GET['page'])) {
$page = $_GET['page'];
}
$referentiel = 'bdtfx';
if (isset($_GET['referentiel'])) {
$referentiel = $_GET['referentiel'];
}
 
echo '
<?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:ie="http://schemas.microsoft.com/Search/2008/">
<ShortName>eFlore ' . strtoupper($referentiel) . ' : noms scientifiques</ShortName>
<Description>flore électronique en ligne</Description>
<Image height="16" width="16" type="image/ico"> http://resources.tela-botanica.org/tb/img/16x16/favicon.ico </Image>
<Url type="text/html" method="GET" template="http://www.tela-botanica.org/page:' . $page . '?type_nom=nom_scientifique&amp;referentiel=' . $referentiel . '&amp;niveau=2&amp;module=recherche&amp;action=rechercheSimple&amp;submit=OK&amp;nom={searchTerms}"/>
<Language>fr</Language>
<developer>Tela Botanica</developer>
<InputEncoding>UTF-8</InputEncoding>
<Url type="application/opensearchdescription+xml" rel="self" template="http://www.tela-botanica.org/eflore/consultation/configurations/OpenSearchParReferentiel.php?page=' . $page . '&amp;referentiel=' . $referentiel . '"/>
<Url type="application/x-suggestions+json" rel="self" template="http://api.tela-botanica.org/service:eflore:0.1/' . $referentiel . '/noms?masque={searchTerms}&amp;recherche=etendue&amp;retour.format=oss&amp;navigation.limite=50"/>
</OpenSearchDescription>
<!-- configuration du moteur de recherche intégré au navigateur -->
';
?>
/tags/v5.10-vilmorin/configurations/RechercheOpenSearch/OpenSearchIsfan.xml
New file
0,0 → 1,13
<?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:ie="http://schemas.microsoft.com/Search/2008/">
<ShortName>eFlore ISFAN : noms scientifiques</ShortName>
<Description>flore électronique en ligne</Description>
<Image height="16" width="16" type="image/ico"> http://resources.tela-botanica.org/tb/img/16x16/favicon.ico </Image>
<Url type="text/html" method="GET" template="http://www.tela-botanica.org/page:isfan?type_nom=nom_scientifique&amp;referentiel=isfan&amp;niveau=2&amp;module=recherche&amp;action=rechercheSimple&amp;submit=OK&amp;nom={searchTerms}"/>
<Language>fr</Language>
<developer>Tela Botanica</developer>
<InputEncoding>ISO-8859-1</InputEncoding>
<Url type="application/opensearchdescription+xml" rel="self" template="http://www.tela-botanica.org/eflore/consultation/configurations/OpenSearchIsfan"/>
<Url type="application/x-suggestions+json" rel="self" template="http://api.tela-botanica.org/service:eflore:0.1/isfan/noms?masque={searchTerms}&amp;recherche=etendue&amp;retour.format=oss&amp;navigation.limite=50"/>
</OpenSearchDescription>
<!-- configuration du moteur de recherche intégré au navigateur -->
/tags/v5.10-vilmorin/configurations/RechercheOpenSearch/OpenSearchBdtxa.xml
New file
0,0 → 1,13
<?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:ie="http://schemas.microsoft.com/Search/2008/">
<ShortName>eFlore BDTXA : noms scientifiques</ShortName>
<Description>flore électronique en ligne</Description>
<Image height="16" width="16" type="image/ico"> http://resources.tela-botanica.org/tb/img/16x16/favicon.ico </Image>
<Url type="text/html" method="GET" template="http://www.tela-botanica.org/page:bdtxa?type_nom=nom_scientifique&amp;referentiel=bdtxa&amp;niveau=2&amp;module=recherche&amp;action=rechercheSimple&amp;submit=OK&amp;nom={searchTerms}"/>
<Language>fr</Language>
<developer>Tela Botanica</developer>
<InputEncoding>ISO-8859-1</InputEncoding>
<Url type="application/opensearchdescription+xml" rel="self" template="http://www.tela-botanica.org/eflore/consultation/configurations/OpenSearchBdtxa"/>
<Url type="application/x-suggestions+json" rel="self" template="http://api.tela-botanica.org/service:eflore:0.1/bdtxa/noms?masque={searchTerms}&amp;recherche=etendue&amp;retour.format=oss&amp;navigation.limite=50"/>
</OpenSearchDescription>
<!-- configuration du moteur de recherche intégré au navigateur -->
/tags/v5.10-vilmorin/configurations/bdtxa.ini
New file
0,0 → 1,21
; Mettre ici les paramètres de config qui doivent être redéfinis par ce référentiel
couleur_alphabet_fin = "204,255,51"
 
; Mettre ici les paramètres spécifiques au référentiel
[bdtxa]
nom = "Base de données des Trachéophytes des Antilles"
referentielVerna = "nva"
baseImages = "cel"
baseStatuts = "sptba"
baseRepartition = "bdtxa"
 
; à voir si l'on crée un fichier spécifique pour l'i18n de chaque référentiel
champsPresence = "statut de présence en Guadeloupe:prgua|
statut de présence en Martinique:prmar|
statut de présence à Saint-Martin:prstm|
statut de présence à La désirade:prdes|
statut de présence à Saint-Barthélémy:prstb|
statut de présence à Marie-Galante:prmga|
statut de présence aux Saintes:prsai"
/tags/v5.10-vilmorin/configurations/apd.ini
New file
0,0 → 1,13
; Mettre ici les paramètres de config qui doivent être redéfinis par ce référentiel
couleur_alphabet_fin = "204,255,51"
 
; Mettre ici les paramètres spécifiques au référentiel
[apd]
nom = "Base de données des Trachéophytes des Antilles"
referentielVerna = ""
baseImages = "cel"
baseStatuts = ""
baseRepartition = ""
 
; à voir si l'on crée un fichier spécifique pour l'i18n de chaque référentiel
champsPresence = ""
/tags/v5.10-vilmorin/configurations
New file
Property changes:
Added: svn:ignore
+config.ini
/tags/v5.10-vilmorin/framework.defaut.php
New file
0,0 → 1,6
<?php
// Inclusion du Framework
// Renommer ce fichier en "framework.php"
// Indiquer ci-dessous le chemin absolu vers le fichier Framework.php de la version souhaitée du Framework
require_once dirname(__FILE__).DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'framework'.DIRECTORY_SEPARATOR.'framework'.DIRECTORY_SEPARATOR.'Framework.php';
?>
/tags/v5.10-vilmorin/index.php
New file
0,0 → 1,282
<?php
// declare(encoding='UTF-8');
/** Inclusion du fichier principal de l'application*/
require_once 'eflore.php';
$url_css_commun = Config::get('url_css_commun');
 
// pour OpenSearch
$referentiel = 'bdtfx';
if (isset($_GET['referentiel'])) $referentiel = $_GET['referentiel'];
 
?>
<!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" 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="eFlore" />
<meta property="og:site_name" content="Tela Botanica" />
<meta property="og:description" content="eFlore, la flore électronique collaborative en ligne" />
<meta property="og:image" content="http://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" />
 
<!-- moteur de recherche dans le navigateur chemin xml -->
<link rel="search" type="application/opensearchdescription+xml" title="eFlore <?php echo strtoupper($referentiel); ?> : noms scientifiques" href="configurations/RechercheOpenSearch/OpenSearch<?php echo ucfirst($referentiel); ?>.xml" />
<!-- Favicones -->
<link rel="icon" type="image/png" href="http://resources.tela-botanica.org/tb/img/16x16/favicon.png" />
<link rel="shortcut icon" type="image/x-icon" href="http://resources.tela-botanica.org/tb/img/16x16/favicon.ico" />
 
<!-- CSS -->
<link href="<?= $url_css_commun ?>" rel="stylesheet" type="text/css" />
<link href="http://www.tela-botanica.org/sites/botanique/generique/styles/botanique.css" rel="stylesheet" type="text/css" />
<link href="http://www.tela-botanica.org/commun/jquery/jquery-ui/1.10.2/css/ui-lightness/jquery-ui-1.10.2.custom.css" rel="stylesheet" type="text/css" />
<link href="http://www.tela-botanica.org/commun/jquery/fancybox/1.3.4/jquery.fancybox-1.3.4.css" rel="stylesheet" type="text/css" />
 
<link href="presentations/styles/eflore.css" rel="stylesheet" type="text/css" />
 
<!-- JavaScript -->
<script type="text/javascript" src="http://www.tela-botanica.org/commun/jquery/1.7.1/jquery-1.7.1.js"></script>
<script type="text/Javascript" src="http://www.tela-botanica.org/commun/jquery/cookie/1.0/jquery.cookie.min.js"></script>
<script type="text/javascript" src="http://www.tela-botanica.org/commun/jquery/jquery-ui/1.10.2/js/jquery-ui-1.10.2.custom.min.js"></script>
<script type="text/Javascript" src="http://www.tela-botanica.org/commun/jquery/fancybox/1.3.4/jquery.fancybox-1.3.4.pack.js"></script>
 
<script type="text/Javascript" src="http://www.tela-botanica.org/sites/commun/generique/scripts/commun.js"></script>
 
<script type="text/Javascript" src="presentations/scripts/eflore.js"></script>
<script type="text/Javascript" src="presentations/scripts/recherche.js"></script>
<script type="text/Javascript" src="presentations/scripts/fiche-synthese.js"></script>
 
<!-- JavaScript et CSS spécifiques au module -->
<?php echo AppControleur::getEntete(); ?>
</head>
<body id="botanique">
 
<div id="zone-principale">
<div id="zone-botanique" class="zone-haut">
<h1 id="zone-logo-tela">
<a href="http://www.tela-botanica.org/site:accueil" title="Retour à l'accueil">
<img src="http://resources.tela-botanica.org/tb/img/135x102/logo_carre_officiel.png" alt="Tela Botanica"/>
</a>
</h1>
<h2>Le réseau de la botanique francophone</h2>
 
<div class="motsclefs">
<h3>Botanique</h3>
<h4>
<span class="mot1">se former</span><span class="cacher">, </span>
<span class="mot2">identifier</span><span class="cacher">, </span>
<span class="mot3">plantes sauvages</span>
 
</h4>
</div>
</div>
 
<div id="zone-menu-navigation">
<ul>
<li id="menuAccueil" >
<span ><a href="http://www.tela-botanica.org/site:accueil">Accueil</a></span>
</li>
<li id="menuBotanique" >
<span class="menuHautActif"><a href="http://www.tela-botanica.org/site:botanique">Botanique</a></span>
</li>
<li id="menuActualites" >
<span ><a href="http://www.tela-botanica.org/site:actu">Actualit&eacute;s</a></span>
</li>
<li id="menuReseau" >
<span ><a href="http://www.tela-botanica.org/site:reseau">R&eacute;seau</a></span>
</li>
<li id="menuProjets" >
<span ><a href="http://www.tela-botanica.org/site:projets">Projets</a></span>
</li>
</ul>
</div>
 
<div id="zone-gauche">
<div id="zone-menu-gauche">
<h1>Botanique</h1>
<?php echo AppControleur::getContenuMenu(); ?>
</div>
<div id="zone-menu-connexion">
<form id="form_connexion" class="form_identification" action="http://www.tela-botanica.org/page:accueil_botanique#form_connexion" method="post">
<fieldset>
<h3>Identifiez vous</h3>
<label for="username">Courriel : </label>
<input type="text" id="username" name="username" maxlength="80" tabindex="1" value="courriel" />
 
<label for="password">Mot de passe : </label>
<input type="password" id="password" name="password" maxlength="80" tabindex="2" value="mot de passe" />
 
<input type="submit" id="connexion" name="connexion" tabindex="4" value="ok" />
<p class="connectvertpetit"><input type="checkbox" id="persistant" name="persistant" tabindex="3" value="o" />
<label id="persistant_label" for="persistant">Se souvenir de moi</label></p>
<div id="colonneDroite"><br />
<a href="/page:inscription">S'inscrire... </a>
<p class="connectgris">Devenez telabotaniste et partagez votre passion pour le végétal !</p>
<p> <a id="lien_inscription" href="http://www.tela-botanica.org/page:inscription?m=f_oubli_mdp">Mot de passe perdu ? </a></p>
</div>
</fieldset>
</form>
</div>
</div>
 
<div id="zone-droite">
<div id="main">
<div id="zone_contenu_tete">
<?php echo AppControleur::getContenuTete(); ?>
</div>
 
<div id="zone_contenu_corps">
<?php echo AppControleur::getContenuCorps(); ?>
</div>
 
<div id="zone_contenu_pied">
<?php echo AppControleur::getContenuPied(); ?>
<div>
<?php echo AppControleur::getChrono(); ?>
<?php echo AppControleur::getExceptions(); ?>
</div>
</div>
</div>
</div>
 
<div id="bandeauProjets">
<ul>
<li><img height="80" width="58" src="http://www.tela-botanica.org/sites/commun/generique/images/projets_defilants/floraBellissima.jpeg" alt="Illustration DVD Flora Bellissima" />
<h3><a href="http://www.tela-botanica.org/page:flora_bellissima"> Flora Bellissima</a></h3>
Premier outil d'aide à la reconnaissance des plantes, ce logiciel vous permet d'identifier plus de 1500 plantes de France. <br />
<a href="http://www.tela-botanica.org/page:flora_bellissima">Plus d'infos</a></li>
 
<li><img src="http://www.tela-botanica.org/sites/commun/generique/images/projets_defilants/partage_80.jpg" alt="illustration quiz bota" />
<h3><a href="http://www.tela-botanica.org/actu/article4536.html">Quiz botanique</a></h3>
Pour tester vos connaissances en botanique... <br />
<a href="http://www.tela-botanica.org/actu/article4536.html">Plus d'infos</a></li>
 
<li><img style="width: 109px; height: 81px;" src="http://www.tela-botanica.org/sites/commun/generique/hetre_120.JPG" alt="Illustration hêtre tortillard" />
<h3><a href="http://www.tela-botanica.org/actu/article4467.html">À la recherche des hêtres tortillards</a></h3>
Participer au projet de recensement des hêtres tortillards. <a href="http://www.tela-botanica.org/page:liste_projets?id_projet=94">Plus d'infos</a></li>
 
<li><img height="58" width="80" src="http://www.tela-botanica.org/sites/commun/generique/images/projets_defilants/euphorbe_80.jpg" alt="Illustration cours de botanique à Montpellier" />
<h3><a href="http://www.tela-botanica.org/page:evenements?vue=1&amp;action=8&amp;id_fiche=2531">Cours de botanique à Montpellier</a></h3>
Partez à la découverte de la flore sauvage à partir de septembre 2011. <br />
<a href="http://www.tela-botanica.org/page:evenements?vue=1&amp;action=8&amp;id_fiche=2531">Plus d'infos</a></li>
 
 
 
<li><img src="http://www.tela-botanica.org/sites/commun/generique/images/projets_defilants/phyto_80.JPG" alt="Illustration identifier plante" />
<h3><a href="http://www.tela-botanica.org/page:identification_plantes">Identifier une plante</a></h3>
Vous observez des plantes mais ne réussissez pas toujours à les nommer. Retours sur les ressources en ligne. <a href="http://www.tela-botanica.org/page:identification_plantes">Plus d'infos</a></li>
<li><img height="80" width="58" src="http://www.tela-botanica.org/sites/commun/generique/images/projets_defilants/partage_80.jpg" alt="Illustration capitalisation images plantes" />
<h3><a href="http://www.tela-botanica.org/actu/article4377.html"> Contribuez à l’identification des plantes par l’image</a></h3>
Participez à un projet de recherche en collectant les feuilles, troncs, fleurs d'une vingtaine d'espèces d'arbres. <a href="http://www.tela-botanica.org/actu/article4377.html">Plus d'infos</a></li>
<li><img src="http://www.tela-botanica.org/sites/commun/generique/images/projets_defilants/widget_80.jpeg" alt="Illustration widget carto" />
<h3><a href="http://www.tela-botanica.org/actu/article4086.html">Créer votre carte des observations </a></h3>
Des widgets permettent d’afficher sur votre site les observations des membres du réseau. <a href="http://www.tela-botanica.org/actu/article4086.html">Plus d'infos</a></li>
<li><img height="80" width="81" alt="Logo projet ODS" src="http://www.tela-botanica.org/sites/commun/generique/images/projets_defilants/Logo-ODS.jpg" />
<h3><a href="http://www.obs-saisons.fr">Observez les saisons</a></h3>
Participez à ce programme scientifique ! Les premières observations de printemps ne vont pas tarder...<br />
<a href="http://www.obs-saisons.fr">Voir le nouveau site</a></li>
<li><img src="http://www.tela-botanica.org/sites/commun/generique/images/projets_defilants/vigie_flore_80.jpg" alt="Illustration vigie flore" />
<h3><a href="http://www.vigie-flore.fr">Participez à Vigie-flore</a></h3>
Suivez les changements d'abondance des espèces végétales les plus communes en France. <a href="http://www.vigie-flore.fr"><br />
Plus d'infos</a></li>
<li><img src="http://www.tela-botanica.org/sites/commun/generique/images/projets_defilants/widget_80.jpeg" alt="Illustration observatoire 2.0" />
<h3><a href="http://www.tela-botanica.org/actu/article4268.html">Monter un projet d'inventaire de la flore</a></h3>
Tour d'horizon de tous les outils web du réseau qui pourront vous aider dans ce projet... <a href="http://www.tela-botanica.org/actu/article4268.html"><br />
Plus d'infos</a></li>
<li><img src="http://www.tela-botanica.org/sites/commun/generique/images/projets_defilants/partage_80.jpg" alt="Illustration Gérer ses images" />
<h3><a href="http://www.tela-botanica.org/actu/article4241.html">Gérer et rechercher des images de plantes</a></h3>
Rechercher les photos de plantes transmises par les membres du réseau devient simple... <a href="http://www.tela-botanica.org/actu/article4241.html">Plus d'infos</a></li>
<li><img src="http://www.tela-botanica.org/sites/commun/generique/images/projets_defilants/generique_logo_80.jpg" alt="Illustration FP géoréférencement photos" />
<h3><a href="http://www.tela-botanica.org/actu/article3261.html">Comment géoréférencer ses photos ?</a></h3>
Une fiche pratique qui donne des conseils utiles sur le géoréférencement. <a href="http://www.tela-botanica.org/actu/article3261.html"><br />
Plus d'infos</a></li>
<li><img src="http://www.tela-botanica.org/sites/commun/generique/images/projets_defilants/Logo-livret.jpg" alt="Illustration livret" />
<h3><a href="http://www.tela-botanica.org/wikini/colloquescb/wakka.php?wiki=LeLivret">Sciences citoyennes</a></h3>
Découvrez tous les programmes de sciences citoyenne, autant de moyens d'agir pour la nature.<br />
<a href="http://www.tela-botanica.org/wikini/colloquescb/wakka.php?wiki=LeLivret">Plus d'infos</a></li>
<li><img height="80" width="57" alt="Illustration mode d'emploi" src="http://www.tela-botanica.org/sites/commun/generique/images/projets_defilants/modeemploi_80.jpg" />
<h3><a href="http://www.tela-botanica.org/actu/article3814.html">Tela : mode d'emploi</a></h3>
Annoncer un événement, échanger sur les forums, partager vos relevés... les outils de Tela n'auront plus de secrets pour vous.<br />
<a href="http://www.tela-botanica.org/actu/article3814.html">Plus d'infos</a></li>
</ul>
</div>
 
<div id="zone-bas-page">
<div>
<ul>
<li id="accueil"><a id="menu_lien_Array_759" href="http://www.tela-botanica.org/page:accueil?langue=fr" title="Accueil du site de Tela Botanica." >Accueil</a></li>
<li id="faq"><a id="menu_lien_Array_386" href="http://www.tela-botanica.org/page:faq?langue=fr" title="Foire aux Questions, aide en ligne" >Aide</a></li>
<li id="contact"><a id="menu_lien_Array_105" href="http://www.tela-botanica.org/page:contact?langue=fr" accesskey="9" >Contacts</a></li>
<li id="plan"><a id="menu_lien_Array_9" href="http://www.tela-botanica.org/page:plan_du_site?langue=fr" accesskey="5" >Plan du site</a></li>
<li id="rss"><a id="menu_lien_Array_630" href="http://www.tela-botanica.org/page:fluxRSS?langue=fr" title="Flux Rss du site Tela Botanica" >Flux RSS</a></li>
<li id="telechargement"><a id="menu_lien_Array_273" href="http://www.tela-botanica.org/page:telechargement?langue=fr" title="[Raccourci : Alt+6 ] T&eacute;l&eacute;chargement de l'ensemble des fichiers des projets." accesskey="6" >T&eacute;l&eacute;chargement</a></li>
<li id="visite"><a id="menu_lien_Array_25" href="http://www.tela-botanica.org/page:comment_marche_le_reseau?langue=fr" >Pr&eacute;sentation du r&eacute;seau</a></li>
<li id="mentions"><a id="menu_lien_Array_104" href="http://www.tela-botanica.org/page:licence?langue=fr" title="Droits de reproduction" >Mentions l&eacute;gales</a></li>
</ul>
</div>
<address id="coordonees">
<span>Association TELA BOTANICA</span>
<span>Institut de Botanique </span>
<span>163, Rue Auguste Broussonnet</span>
<span>34090 Montpellier</span>
<span>Tél. +334 67 52 41 22</span>
 
<span>accueil[at]tela-botanica.org</span>
<br /><br />
</address>
</div>
 
<div id="zone-menu-haut">
<div id="zone-visiteur">
<ul>
<li id="connectes">En ligne : <span class="gris"></span></li>
 
<li id="inscrits">Inscrits : <span class="gris"></span></li>
</ul>
</div>
<div id="zone-acces-rapide">
<ul>
<li id="don"> <a href="http://www.tela-botanica.org/page:soutien">Faites un don</a></li>
<li id="lettre"> <a href="http://www.tela-botanica.org/page:mon_inscription_au_reseau">Lettre d'actualit&eacute;s</a></li>
<li id="recherche">
<form action="http://www.tela-botanica.org/page:accueil_botanique" method="post" id="form_more_recherche">
<fieldset>
<legend>Moteur de recherche</legend>
<label for="more_motif">Rechercher : </label>
<input id="more_motif" name="more_motif" tabindex="100" maxlength="100" accesskey="4" type="text" value="Rechercher" onfocus="nettoyerChamp(this.id, 'Rechercher');" onblur="nettoyerChamp(this, 'Rechercher'); " title="Mettre les termes entre guillemets pour rechercher sur la phrase exacte."/>
<input id="more_ok" name="more_ok" tabindex="101" value="ok" type="submit" />
</fieldset>
</form>
</li>
<li class="drapeau">
<a href="?langue=fr">
<img src="http://www.tela-botanica.org/sites/commun/generique/images/graphisme/drapeau_fr.png" alt="Français" title="Tela Botanica en Français" />
</a>
</li>
<li class="drapeau">
<a href="?langue=en">
<img src="http://www.tela-botanica.org/sites/commun/generique/images/graphisme/drapeau_gb.png" alt="Anglais" title="Tela Botanica in english" />
</a>
</li>
</ul>
</div>
</div>
</div>
</body>
</html>
/tags/v5.10-vilmorin/presentations/squelettes/pied_page.tpl.html
New file
0,0 → 1,7
<p id="eflore_pied_page">
<?=$i18n['info-a'];?>,
<a href="<?=$url_widget_remarques; ?>?service=eflore&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;">
<?=$i18n['info-b'];?></a>
</p>
/tags/v5.10-vilmorin/presentations/squelettes/entete_page.tpl.html
--- v5.10-vilmorin/presentations/squelettes/menu.tpl.html (revision 0)
+++ v5.10-vilmorin/presentations/squelettes/menu.tpl.html (revision 1427)
@@ -0,0 +1,12 @@
+<ul>
+ <li>
+ <a href="<?= Config::get('base_url_application'); ?>index.php?referentiel=bdtfx">Accueil</a>
+ <ul>
+ <li><a href="<?= Config::get('base_url_application'); ?>index.php?referentiel=bdtfx&amp;module=liste&amp;rang=F">Liste Famille</a></li>
+ <li><a href="<?= Config::get('base_url_application'); ?>index.php?referentiel=bdtfx&amp;module=liste&amp;rang=G">Liste Genre</a></li>
+ <li><a href="<?= Config::get('base_url_application'); ?>index.php?referentiel=bdtxa">eFlore Antilles</a></li>
+ <li><a href="<?= Config::get('base_url_application'); ?>index.php?referentiel=isfan">eFlore Afrique du Nord</a></li>
+ <li><a href="<?= Config::get('base_url_application'); ?>index.php?referentiel=apd">eFlore Afrique de l'Ouest et du Centre</a></li>
+ </ul>
+ </li>
+</ul>
\ No newline at end of file
/tags/v5.10-vilmorin/presentations/styles/popup.css
New file
0,0 → 1,72
@CHARSET "UTF-8";
/*----------------------------------------------------------------------------------------------------------*/
/* Disposition */
#zone-pied{
text-align:center;
}
#eflore_pied_page{
text-align:center;
}
#zone-debug{
background-color:grey;
color:white;
}
/*----------------------------------------------------------------------------------------------------------*/
/* Spécifiques popup : CONTACT */
input,textarea{
max-width:100%;
height:auto;
width: 100%;
box-sizing:border-box; -moz-box-sizing:border-box; -webkit-box-sizing: border-box;
}
/*----------------------------------------------------------------------------------------------------------*/
/* Spécifiques popup : ILLUSTRATION */
#info-img .img-cadre {
text-align:center;
}
#info-img img {
display:inline;
vertical-align:middle;
margin:0;
border:0;
border: 1px solid lightgrey;
padding:2px;
}
 
/*----------------------------------------------------------------------------------------------------------*/
/* Spécifiques popup : GALERIE */
#info-img-galerie .conteneur-precedent {
float:left;
width:10%;
height:300px;
}
 
#info-img-galerie .conteneur-suivant {
height:300px;
position:relative;
width:10%;
float:right;
}
 
#info-img-galerie .conteneur-precedent #precedent, #info-img-galerie .conteneur-suivant #suivant {
position:relative;
top:50%;
font-size:1.3em;
border:none;
}
 
#info-img-galerie .conteneur-suivant #suivant {
float:right;
text-align:right;
}
 
#info-img-galerie .img-cadre {
float:left;
width:80%;
height:300px;
cursor: pointer;
}
 
#info-img-galerie #lien-voir-meta {
text-align: center;
}
/tags/v5.10-vilmorin/presentations/styles/pdf.css
New file
0,0 → 1,280
@CHARSET "UTF-8";
/* tout le css pour la mise en page du pdf d'exportation de fiches. */
/* GÉNÉRAL */
table{
border-collapse: collapse;
width:100%;
margin:5px 0;
/*page-break-inside : avoid;*/
font-size:10px;
}
td,th{
border:1px solid #36560B;
padding:7px 5px;
}
th{
background-color:#EEE;
}
h2 {
font-weight: bold;
letter-spacing: 0;
margin: 20px 0 12px 0;
font-size: 15px;
color: #FD8C13;
}
body {
font-family: Arial, Helvetica, Verdana, sans-serif;
font-size: 0.75em;
background-color: #fff;
}
.centrer {
display : block;
margin-left:auto;
margin-right:auto;
}
.titre {
color:#36560B;
left:2px;
position:relative;
padding-right:5px;
}
.categorie {
background-color: #F6AF3A;
display: block;
padding: 2mm;
padding-left: 5mm;
padding-right: 5mm;
color: #fff;
border-radius: 10px 10px 0 0;
font-weight: bold;
}
.bloc {
padding-left: 2mm;
padding-bottom: 5mm;
}
.no-break {
page-break-inside : avoid;
}
.allow-break {
page-break-inside : auto;
}
 
.italique {
font-style: italic;
}
.gras {
font-weight: bold;
}
hr.nettoyage{
clear: both;
width: 0;
}
.citation {
font-size: 9px;
}
.deux-colonnes {
width:48%;
float:left;
text-align: center;
}
.italique {
font-style:italic;
}
.version {
float:right;
}
 
/* DESCRIPTION spécifique */
.desc td {
width: 50%;
vertical-align: top;
border: 1px dasharray #36560B;
padding: 7px 5px;
}
 
/* BIBLIOGRAPHIE spécifique */
li.item_biblio_flore {
background: none;
list-style: square;
padding-left: 15px;
color : #FC8912;
}
/* ECOLOGIE spécifique*/
.graphique {
width:500px;
margin-left:auto;
margin-right:auto;
text-align:center;
}
 
.fond_graphique {
background-color:#F8F8F8;
padding-top: 10px;
padding-bottom: 10px;
}
.legende_graphique td, .legende_graphique tbody, .legende_graphique table {
font-size: 8px;
background:none;
border:none;
}
.svg_clim, .svg_sol {
width: 500px;
height: 200px;
}
.svg_sol {
width: 500px;
height: 250px;
}
.legende_formes {
width : 348px;
height : 30px;
display: block;
margin-right : auto;
margin-left: auto;
padding : 5px;
}
/* REPARTITION spécifique*/
.bloc_legende_repartition {
float:left;
margin-right:5px;
margin-bottom:3px;
width:15px;
height:15px;
border:1px solid black;
}
.texte_legende_repartition {
float:left;
font-size :10px;
width: 160px;
text-align:left;
}
.legende_r {
width: 190px;
margin-right: auto;
margin-left: auto;
}
.repartition_observations {
width: 250px;
margin-bottom: 5px;
margin-right: auto;
margin-left: auto;
text-align: center;
}
.repartition_observations object {
display: block;
padding: 0px;
height:200px;
margin-right: auto;
margin-left: auto;
}
 
/* NOMENCLATURE spécifique*/
.legende_nom_retenu {
background-color: #E6FFA2;
}
 
.surlignage {
background-color: #E6FFA2;
}
.couleur_legende {
display: inline-block;
height: 12px;
width: 30px;
margin-right: 5px;
margin-top: 2px;
border: 1px dashed black;
}
.legende {
border:dashed 1px #AAA;
padding:5px 10px;
}
.onglet_marge_gauche {
margin-top: 7px;
padding-left: 30px;
}
li.item_nomenclature {
background: none;
list-style: square;
padding-left: 15px;
color : #FC8912;
}
 
 
.nom {
vertical-align: top;
color: black;
}
 
.retenu, .synonyme{
font-size:0.8em;
}
.retenu{
font-weight:bold;
}
.basionyme_complet {
margin-left:20px;
display:block;
}
 
/* ILLUSTRATION spécifique*/
#illustrations {
width:196px;
height:196px;
margin-right: auto;
margin-left: auto;
text-align:center;
border:0.5px dotted black;
 
}
 
.liste-illustrations{
list-style-type:none;
padding:0;
}
.liste-illustrations li {
list-style-image:none !important;
background:none;
text-align:center;
font-size:11px;
float: left;
width:210px;
height:285px;
}
 
#illustrations .liste-illustrations li{
height: 215px;
}
 
.liste-illustrations li p{
margin:2px 2px 5px 2px;
width:206px;
font-size:11px;
}
.liste-illustrations strong{
font-weight:bold;
text-align: center;
 
}
.liste-illustrations img{
display:block;
border:1px solid white;
text-align: center;
padding:2px;
max-height:196px;
max-width:196px;
margin-right: auto;
margin-left: auto;
}
 
.liste-illustrations a:hover img{
border:1px dotted #FD8C13;
}
 
/* WIKI spécifique*/
 
.wiki { font-size : 10px;
}
/tags/v5.10-vilmorin/presentations/styles/eflore.css
New file
0,0 → 1,1663
@CHARSET "UTF-8";
/*----------------------------------------------------------------------------------------------------------*/
/* Générique */
body {
font-family:Arial, Helvetica, Verdana, sans-serif;
font-size:0.85em;
background-color:#fff;
margin:2px;
}
h1, h2, h3, h4 {
font-weight:bold;
letter-spacing:0;
}
h1 {
padding:0 0 0 25px;
margin:20px 0 10px 0;
font-size:15px;
text-transform:uppercase;
color:#fd8c13;
}
h2 {
margin:20px 0 12px 0;
font-size:15px;
color:#FD8C13;
}
h3 {
margin:20px 0 12px;
font-size:14px;
color:#454341;
}
h4 {
margin:2px 2px 2px 0;
font-size:11px;
font-weight:normal;
color:#AAAAAA;
}
h1 a, h2 a, h3 a, h4 a {
color:inherit;
border-bottom: dotted 1px;
}
h3 a {
border-color:#CCCCCC;
}
a {
color:#598000;
border-bottom:1px dotted #95ae5d;
}
a:hover {
color:#FD8C13;
border-bottom:1px dotted #95ae5d;
}
hr{
color:#62210F;
}
table{
border-collapse: collapse;
width:100%;
margin:5px 0;
}
td,th{
border:1px solid #36560B;
padding:7px 5px;
}
th{
background-color:#EEE;
}
th[title]:after {
content: " " url("../images/aide.png") !important;
}
caption{
border:1px solid #36560B;
background-color:#EEE;
font-weight:bold;
padding:2px;
}
img{
border:0;
}
img a{
display:block;
}
legend{
color:#AD5A40;
}
dl {
width:100%;
}
dt {
float:left;
font-weight:bold;
text-align:top left;
margin-right:0.3em;
}
dd {
width:auto;
margin:0.5em 0;
}
.acceder-outil {
font-size:0.85em;
}
 
/* @TODO mettre dans commun.css mais line-height déconne */
.acceder-outil-vert {
display:inline-block;
line-height: 25px;
padding-left: 30px;
padding-right: 10px;
background:url("/sites/commun/generique/images/graphisme/icone_erable_blanc_vert.png") no-repeat scroll -1px -1px transparent;
border-radius: 14px; -moz-border-radius:14px; -webkit-border-radius:14px;
color:#6C6865;
font-family:helveticaneue;
font-size:12px;
border: solid #d0d0d0 1px;
}
 
#zone-contenu.acceder-outil.img {
margin-top:-2px;
margin-bottom:-2px;
}
/*----------------------------------------------------------------------------------------------------------*/
/* Disposition */
#zone-centrale {
text-align:center;
}
#zone-logo{
left:18px;
margin:1px 10px;
position:absolute;
top:2px;
z-index:1;
}
#zone-entete{
height:121px;
margin:0;
}
#zone-titre{
height:38px;
margin:0;
text-align:right;
}
#zone-titre h1{
margin:0 20px 0 0;
padding:0;
background-color:transparent;
font-size:28px;
font-weight:bold;
}
#zone-corps{
margin:0;
text-align:left;
}
#zone-menu{
position:relative;
float:left;
height:21px;
width:100%;
margin:0;
padding:0;
text-align:left;
font-weight:bold;
border-bottom:1px solid #62210F;
}
#zone-contenu{
clear:both;
min-height:300px;
padding:0 2px;
text-align:justify;
border-top:medium none !important;
border:1px solid #62210F;
}
#zone-pied{
clear:both;
text-align:center;
}
 
.ui-tabs { padding:0; position: relative; }
/*----------------------------------------------------------------------------------------------------------*/
/* Logo */
#zone-logo img{
border:0;
}
#zone-logo a{
position:absolute;
top:0;
left:0;
}
#zone-logo a:hover{
border:1px dotted;
}
#zone-logo a:hover:after{
content:" Retour à l'accueil ";
}
/*----------------------------------------------------------------------------------------------------------*/
/* Navigation : onglets */
.onglets {
display:inline-block;
padding:0;
margin:0;
}
 
#zone_onglets > ul > li > a {
width: auto;
}
 
.onglets a {
border:none
}
.onglets li a, .onglets li{
list-style-image:none;
padding:5px 3px 5px 3px;
margin-top:2px;
background-color:#C2C0AD;
text-align: center;
}
 
.onglets li.verna{
width: 220px;
}
 
.onglets li.sci{
width: 120px;
}
 
.onglets li{
cursor:pointer;
float:left;
list-style:none;
margin-right:5px;
font-size:13px;
text-transform:uppercase;
letter-spacing:0;
padding:5px 2px 5px 5px;
margin:0 1px 0 0;
background:none no-repeat 5px 9px #C2C0AD;
color:#fd8c13;
border:1px solid #c2c0ad;
border-bottom:0px solid #c2c0ad;
text-decoration:none;
border-radius:10px 10px 0 0;-moz-border-radius:10px 10px 0 0;-webkit-border-radius:10px 10px 0 0;
}
.onglets .menu_actif a{
background:none;
color:#FD8C13;
font-weight:bold;
}
.onglets .menu_actif{
background:none;
border:1px solid #C2C0AD;
border-bottom:0 solid #c2c0ad;
text-decoration:none;
border-radius:10px 10px 0 0;-moz-border-radius:10px 10px 0 0;-webkit-border-radius:10px 10px 0 0;
}
.onglets .menu_inactif a, .onglets h1{
color:#6C6865;
}
.onglets .menu_actif h1{
color:#FD8C13;
}
.onglets li:hover, #zone_contenu_corps .onglets li:hover * {
background:white;
border-bottom:0;
}
 
.onglets li:hover > a{
color:#FD8C13;
}
/*----------------------------------------------------------------------------------------------------------*/
/* Général */
.centrer{
text-align:center;
}
.discretion{
color:#A9A9A9;
font-size:10px;
font-weight:normal;
}
.attention{
background-color:#ffffcc;
background-image:url("../images/attention.png");
}
.information{
background-color:#e7ebfd;
background-image:url("../images/information.png");
}
.attention, .information{
display:inline-block;
background-repeat:no-repeat;
background-position:5px 50%;
padding:10px 5px 5px 40px;
background-size:24px 24px; -webkit-background-size:24px 24px; -o-background-size:24px 24px; -moz-background-size:24px 24px;
max-width:600px;
min-height:20px;
}
.msg{
max-width:100%;
height:auto;
width: 100%;
box-sizing:border-box; -moz-box-sizing:border-box; -webkit-box-sizing: border-box;
border-radius: 10px 10px 10px 10px;
box-shadow: 2px 2px 5px #AAAAAA;
}
hr.nettoyage{
clear:both;
width:0;
}
.debogage, .debogage pre{
white-space:pre-wrap; white-space:-moz-pre-wrap; white-space:-pre-wrap; white-space:-o-pre-wrap;
word-wrap:break-word; /* IE 5.5+ */
overflow:auto;/* IE 6 */
}
/*----------------------------------------------------------------------------------------------------------*/
/* Largeurs à utiliser pour fixer les tailles des éléments (tableau, paragraphe...) */
.largeur-01{
width:60px;}
.largeur-02{
width:120px;}
.largeur-03{
width:180px;}
.largeur-04{
width:240px;}
.largeur-05{
width:300px;}
.largeur-06{
width:360px;}
.largeur-07{
width:420px;}
.largeur-08{
width:480px;}
.largeur-09{
width:540px;}
.largeur-10{
width:600px;}
.largeur-11{
width:660px;}
.largeur-12{
width:720px;}
.largeur-13{
width:780px;}
.largeur-14{
width:840px;}
.largeur-15{
width:900px;}
.largeur-16{
width:960px;}
/*----------------------------------------------------------------------------------------------------------*/
/* Formulaire de Recherche Simple */
#bloc-recherche fieldset {
border:none;
padding:0;
width:100%;
}
.choixNiveau {
position:absolute;
margin-top: -30px;
padding: 0;
width: 300px;
margin-left:430px;
}
 
.choixNiveau a {
float:left;
border-style:solid;
padding:0.4em 0.8em;
border-color:#C2C0AD;
color:#9AC343;
font-weight:bold;
cursor:pointer;
background:#f9f9f9;
border:1px solid #CCCCCC;
}
 
.choixNiveau .niveau1 {
border-radius:4px 0 0 0;
}
 
.choixNiveau .niveau3 {
border-radius:0 4px 0 0;
}
 
.choixNiveau .actif {
color:#EB8F00;
border-color:#EB8F00;
background:white;
}
 
/* couleur des boutons non sélectionnés*/
.ef-form-niveau .ui-buttonset {
margin-right: 25px;
}
 
.ef-form-niveau .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
background-color:#C2C0AD;
color: #9AC343;
font-weight: bold;
}
#ef-form-niveau .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active {
background-color: #FFFFFF;
color: #EB8F00;
font-weight: bold;
}
 
#ef-form-niveau .ui-button-text-only .ui-button-text {
padding: 0.2em 0.5em;
}
 
#bloc-recherche h1, #contenu h1 {
background: none;
padding: 0 0 0 20px;
}
 
#bloc-recherche {
padding-bottom: 0;
}
 
#ef-form-nomenclature table {
width:100%;
}
#ef-form-nomenclature h1 {
margin:0 0 3px 16px;
}
#ef-form-nomenclature .champ {
padding:3px;
font-size:12px;
}
#ef-form-nomenclature .zone-choix-type-nom {
float:left;
padding:0 10px
}
#ef-form-nomenclature .titre-choix-nom {
padding:12px;
font-weight:bold
}
#ef-form-nomenclature #zone-liens-recherche {
padding:5px;
}
#eflore_nomenclature_fiche {
background:url(../images/lien.png) no-repeat 0 -1px;
padding:0 0 0 17px;
color:#598000;
border:1px dotted #95AE5D;
border-width:0 0 1px 0;
cursor:pointer;
margin:0 0 0 19px;
font-size:12px
}
#ef-form-nomenclature input.ok {
color:rgba(0,0,0,0);
font-size:12px;
font-weight:bold;
padding:3px 10px 3px 10px;
background:url("../images/loupe.png") no-repeat scroll 11px 3px white;
}
#ef-form-nomenclature input.ok:hover {
background:url("../images/loupe.png") no-repeat scroll 11px 3px #DDD;
cursor:pointer;
}
#ef-form-nomenclature label {
font-size:12px
}
 
/*----------------------------------------------------------------------------------------------------------*/
/* Formulaire d'autocompletion */
.ui-autocomplete a {
text-decoration:none;
border-bottom:none;
}
.ui-menu {
list-style:none;
padding: 2px;
margin: 0;
display:block;
float: left;
font-size: 11px;
font-family: arial;
}
 
.ui-menu .ui-menu-item a {
text-decoration:none;
display:block;
padding:.2em .4em;
line-height:0.8;
zoom:1;
}
 
#nom.valeur-defaut-recherche {
color:#848484;
font-style:italic;
font-weight:0.9em;
}
/*----------------------------------------------------------------------------------------------------------*/
/* Résultats */
.zone-resultat {
width:96%;
min-height:101px;
padding:10px;
margin-bottom:10px;
background:#f8f9ec;
border:solid 1px #f1f3de;
-moz-border-radius:10px;
-webkit-border-radius:10px;
border-radius:10px;
font-size:13px;
-moz-box-shadow:3px 3px 3px #DDD;
}
.zone-resultat .nom-sci{
display:inline-block;
width:310px;
 
}
.zone-resultat img {
border:solid 2px #DDD;
float:right;
height: 100px;
width: 100px;
}
.surlignage {
background-color: #E6FFA2;
}
#ef-resultats-decomposition #col-ns{
width:33%;
}
#ef-resultats-decomposition .retenu, #ef-resultats-decomposition .synonyme{
font-size:0.8em;
}
.retenu{
font-weight:bold;
}
#ef-resultats-determination .synonymes li {
background: none;
line-height: 18px;
list-style: none outside none;
padding-left: 15px;
}
.absent {
display:block;
float:right;
background-color:transparent;
background-image:url("../images/pasdephoto.png");
background-repeat:no-repeat;
background-position:50% 20%;
border: 2px solid #DDDDDD;
margin: 0 5px;
height: 100px;
width: 100px;
font-weight: bold;
text-align: center;
}
.vide {
display:block;
background-color:transparent;
margin: 0 5px;
height: 100px;
width: 100px;
text-align: center;
}
 
.absent .contribuer {
display: block;
padding-top: 66px;
}
 
#ef-resultats-nv-determination {
padding: 0;
}
 
#ef-resultats-nv-determination table, #ef-resultats-nv-determination table tbody, #ef-resultats-nv-determination table td {
border: none;
background: none;
}
 
#ef-resultats-nv-determination .nom {
width: 30%;
vertical-align: top;
margin-top: 5px;
}
#ef-resultats-nv-determination .nom ul, #ef-resultats-nv-determination li{
margin: 0;
margin-bottom: 5px;
list-style-image: none;
list-style-type: none;
padding: 0;
}
 
#ef-resultats-determination {
padding-left: 0px;
}
 
 
/*----------------------------------------------------------------------------------------------------------*/
/* Fiche */
#bloc-fiche {
margin-top: 0;
}
#bloc-fiche h1 {
background: none repeat scroll 0 0 transparent;
padding: 0;
margin-bottom : 4px;
}
 
.synthese {
background-color: #EEEEEE;
border: medium none;
clear: left;
margin-left: -17px;
margin-top: -12px;
min-height: 300px;
padding-top: 0.4em;
width: 676px;
}
 
.ui-widget-content {
background:white;
}
.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { /* onglets + blocs */
border-bottom-right-radius: 0;
}
.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { /* onglets + blocs */
border-bottom-left-radius: 0;
}
.colonne {
float:left;
padding-bottom:10px;
width:33%;
margin: 0 1px;
}
 
.deuxtiers{
width:66%;
}
 
.pasDeCurseur {
cursor:default;
}
/* bloc */
.module {
margin: 0 1em 0.5em 0;
width: 99%;
}
.module .titre{
cursor: move;
font-size: 12px;
padding-bottom: 1px;
padding-left: 1.2em;
margin-left:-2px;
margin-right:1px;
}
 
.module .titre .ui-icon {
float: right;
}
.imagetteMoins, .imagettePlus { /* +/- du titre */
cursor:pointer
}
.module .contenu {
padding: 10px;
}
 
.ui-sortable-placeholder { /* déplacement bloc */
border: 1px dotted black;
visibility: visible !important;
height: 50px !important;
}
.ui-sortable-placeholder * {
visibility: hidden;
}
 
.module .contenu.attention {
padding: 10px 5px 5px 40px;
background-position: 5px 12px;
width: 174px;
}
 
.pas_de_protection {
display: block;
margin-bottom: 5px;
margin-left: 35px;
}
 
.completer_statut {
display: block;
float: right;
margin-bottom: 10px;
margin-right: 10px;
padding-top: 5px;
width: 60px;
}
 
#statut .aucune_info {
padding: 10px;
}
 
.infos_liste_rouge {
font-weight: bold;
}
 
#alignement-droite {
float:right;
margin-right: -5px;
}
 
.lien-onglet.lien-statique.lien_retour_synthese {
background-attachment: scroll;
background-clip: border-box;
background-color: transparent;
background-image: url("../images/fleche_gauche.png");
background-origin: padding-box;
background-position: 0 2px;
background-repeat: no-repeat;
background-size: auto auto;
padding-left: 20px;
}
 
.invisible {
visibility:hidden;
}
 
/* Onglets */
#zone_onglets {
margin-top: 0.1em;
border-width:0;
border-radius:0;
width:676px;
font-size:12px;
margin-left:-7px;
}
#zone_onglets .ui-tabs { /* taille de la barre d'onglets */'
padding:0;
position: relative;
}
.ui-tabs .ui-tabs-nav li a.ui-tabs-anchor {
float: left;
padding: 4px 4px 3px 3px;
text-decoration: none;
}
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { /* couleur des onglets */
color: #9AC343;
text-decoration: none;
}
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
color: #EB8F00;
text-decoration: none;
margin-bottom: 1px;
}
#onglets {
height:22px
}
#onglets li {
list-style:none;
line-height:12px;
}
 
#onglets li.ui-tabs-selected {
line-height: 13px;
}
 
#onglets li {
float:left;
}
#zone_onglets li .ui-icon-close {
float: left;
cursor: pointer;
}
#zone_onglets li a.lien-onglet {
overflow: hidden;
text-decoration: none;
border-bottom: none;
}
#zone_onglets li a.lien-onglet hover {
overflow: hidden;
text-decoration: none;
border-bottom: none;
}
/* Menu et + */
#zone_onglets #ongletEtPlus {
cursor: pointer;
display: none;
float: right;
font-size: 20px;
height: 20px;
padding-bottom: 0;
padding-right: 5px;
position: relative;
top: 1px;
width: 25px;
z-index: 500;
}
#zone_onglets #ongletEtPlus a {
border-bottom: none;
}
#lienOngletEtPlus { /* icone */
width:6px;
padding-left: 9px;
padding-top: 0px;
display:block;
margin-top:5px;
}
 
.lien-onglet-synthese, .lien-onglet-synthese:hover {
border-bottom: none;
}
 
.menuModules { /* liste */
left: 465px;
width: 187px;
position: absolute;
border: 1px solid #DCD1CC;
margin: 0px;
padding: 0px;
top: 30px;
z-index:499;
background-color: #F9F9F9;
color: #9AC343;
font-weight: bold;
}
.elementMenuModules { /* element de la liste */
display:block;
border: 1px solid white;
width: 150px;
padding: 10px 10px 10px 25px;
margin:0px;
cursor: pointer;
}
.elementMenuModules:hover {
background-color: #FEBF01;
}
.elementMenuModulesSelectionne {
background-color: #F6AF39;
color: white;
}
 
#dialog label, #dialog input { display:block; }
#dialog label { margin-top: 0.5em; }
#dialog input, #dialog textarea { width: 95%; }
 
.conteneur_repartition_observations {
width:620px;
height:620px;
}
 
.chargement_repartition {
background: url("../images/chargement.gif") no-repeat scroll 50% 50%, url("../images/fond_carte_metropole.png") no-repeat scroll 8px 8px rgba(0, 0, 0, 0);
}
 
.bloc_legende_repartition {
float:left;
margin-right:5px;
margin-bottom:3px;
width:15px;
height:15px;
border:solid 1px black;
}
 
.texte_legende_repartition {
float:left;
text-transform:capitalize;
}
 
.conteneur_lien_metadonnees {
padding: 15px;
}
.lien_metadonnees {
float:right;
}
 
.sous-liste-metadonnees {
margin: 0px;
}
 
.intitule_metadonnee {
font-weight: bold;
color : #6C6865;
}
 
.lien_metadonnees_affiche {
color:#FD8C13;
}
 
.metadonnees_resume_description {
font-family: Arial,Helvetica,Verdana,sans-serif;
font-size: 14px;
}
 
#nomenclature > ul > li.item_nomenclature {
line-height: 18px;
width:100%;
}
 
.tab-chargement {
background: url("../images/chargement.gif") no-repeat scroll 10px 13px transparent;
background-color: #FFFFFF;
border: medium none;
cursor: pointer;
display: inline-block;
font-size: 14px;
padding: 20px 20px 20px 50px;
width: 555px;
}
 
.conteneur_illustrations_cel {
width: 250px;
}
 
.conteneur_metadonnees_cel {
width: 250px;
padding-top : 20px;
}
 
.onglet_marge_gauche {
margin-top: 7px;
padding-left: 30px;
}
 
.references_bibliographiques .texte_inactif {
display:none;
}
 
#repartition_observations {
height: 590px;
width: 100%;
overflow: hidden;
}
 
.legende_nom_retenu {
background-color: #E6FFA2;
}
 
.couleur_legende {
display: inline-block;
height: 12px;
width: 30px;
margin-right: 5px;
margin-top: 2px;
border: 1px dotted black;
}
 
.lienToggle {
cursor: pointer;
}
 
/*----------------------------------------------------------------------------------------------------------*/
/* Nomenclature */
.nomenclature {
text-transform: none;
}
.famille {
text-transform: uppercase;
}
.ns-retenu {
font-weight:bold;
}
.supra-gen, .gen, .sp, .infra-sp, .infra-gen {
font-style: italic;
text-transform: none;
}
.hyb, .chimere, .abbr, .formule-hyb, .gp, .cultivar, .commercial,
.auteur, .annee, .biblio, .addendum, .type_epithete {
font-style: normal;
text-transform: none;
}
.vernaculaire {
font-size: 17px;
/*color: #A89D80;*/
color: #555;
text-transform: none;
float: right;
}
h2.vernaculaire {
font-size: 17px;
color: #555555;
font-weight: normal;
}
h2.vernaculaire:before {
content: none !important;
}
.redirige_depuis {
display: table-row;
color: #808080;
font-size: 14px;
font-weight: normal;
text-transform: none;
}
 
.label_redirige_depuis {
display: table-cell;
width: 91px;
padding-right: 5px;
font-size: 12px;
line-height: 22px;
}
.valeur_redirige_depuis {
display: table-cell;
margin-left: 100px;
}
 
.lien_biblio_ext {
border-bottom: none;
}
 
/*----------------------------------------------------------------------------------------------------------*/
/* Wikinis */
.editable_sur_clic {
min-height: 50px;
}
 
.aide_wikini {
font-size: 0.8em;
}
 
.contenu_editable {
background-color: #F8FBF2;
border: dashed 1px #AAAAAA;
padding: 5px;
padding-top: 2px;
border-radius: 3px;
}
 
.champ_edition_wiki {
width: 100%;
height: 350px;
overflow: auto;
}
 
.imagettePlus {
width:9px;
height:9px;
background:url('../images/ouvrir.png') no-repeat;
display:inline-block;
margin-right:3px;
}
 
.imagetteMoins {
width:9px;
height:9px;
background:url('../images/fermer.png') no-repeat;
margin-right:3px;
display:inline-block;
}
 
.basionyme_complet {
margin-left:20px;
display:block;
}
 
.legende {
border:dashed 1px #AAA;
padding:5px 10px;
}
 
.legende b {
color:#AAA; margin-bottom:10px
}
 
.wp {
background:url('../images/sites/wikipedia.png') no-repeat;
margin-left: 15px;
margin-top: 5px;
padding-left: 20px;
}
 
.conteneur_flore_probable {
text-align: center;
}
 
/*----Description+Ecologie-----------------------------------------------------------------------------------*/
 
.citation {
font-size:9px;
}
.fond_graphique {
background-color:#F8F8F8;
padding-top: 10px;
padding-bottom: 10px;
 
}
.graphique {
margin-right: auto;
margin-left: auto;
width:100%;
}
 
.graphique > * {
width:100%;
}
 
.titre {
color:#36560B;
left:2px;
position:relative;
padding-right:5px;
}
.desc {
margin-right:3px;
margin-left:3px;
}
.desc td {
width: 50%;
vertical-align: top;
border: 1px dasharray #36560B;
padding: 7px 5px;
}
.italique { font-style: italic;
}
.gras { font-weight: bold;
}
 
/* boutons spécifiques légende graphiques (masquer/afficher) */
.legende_formes {
background-image:url('../images/legende_formes.png');
background-position: 2px 5px;
background-repeat: no-repeat ;
width : 428px;
height : 30px;
margin-right : auto;
margin-left: auto;
border: 1px dotted grey;
padding : 5px;
text-align:center;
}
.legende_graphique {
display:none;
font-size:11px;
padding: 5px;
}
.legende_graphique td, .legende_graphique tbody, .legende_graphique table {
background:none;
border:none;
}
 
.cacher, .voir {
float:right;
}
 
.cacher {
display:none;
}
 
.fond_graphique button {
background: none;
border: none;
}
 
.fond_graphique button:hover {
cursor: pointer;
text-decoration: underline;
}
 
/* Illustrations */
#illustrations-coste img {
display:inline;
vertical-align:middle;
margin:0px;
padding:0px;
}
 
#illustrations {
margin-left:-5px;
margin-right:-4px;
}
.liste-illustrations .attention {
border:0;
background:none;
text-align:left;
padding:0;
}
.liste-illustrations {
list-style-type:none;
padding:0;
}
.liste-illustrations li {
list-style-image:none !important;
background:none;
text-align:center;
font-size:11px;
float: left;
width:210px;
height:285px;
margin:0px;
padding:0px;
}
 
#galerie-organes {
width: 648px;
margin-top: 10px;
margin-bottom: 10px;
background-color: #f0f0f0;
border-radius: 10px;
}
 
#grande-image-legende-id-destinataire .icone_action_ill, #grande-image-legende-id-image .icone_action_ill {
height: 10px;
}
 
.liste_actions_ill {
margin-top: -5px;
}
 
.separator {
display: inline-block;
width: 10px;
}
 
.liste-illustrations li.organe-moyen {
height: 230px;
font-size: 13px;
}
 
.liste-illustrations li.caractere-moyen {
height: 210px;
}
 
.ajouter-participer-choix {
padding-top: 30px;
}
 
.liste-illustrations li p.absent-organes {
height: 193px;
width: 196px;
margin: 2px 5px 5px;
background-position: 50% 50%;
}
.liste-illustrations li p.absent-organes a.contribuer {
height: 30px;
padding-top: 146px;
}
 
.liste-illustrations li.icone-organe {
width: 108px;
height: auto;
padding-top: 5px;
padding-bottom: 5px;
background-color: #ffffff;
}
.liste-illustrations li.icone-organe:first-of-type {
border-radius: 10px 0 0 0;
}
.liste-illustrations li.icone-organe:last-of-type {
border-radius: 0 10px 0 0;
}
.liste-illustrations li.icone-organe.active {
background-color: #f0f0f0;
}
.liste-illustrations li.miniature-organe {
width: 105px;
height: auto;
}
#zone_contenu_corps img.icone-organe {
height: 30px;
margin: auto;
border: none;
}
#zone_contenu_corps img.miniature-organe {
margin: auto;
}
 
div.onglet-organe {
margin: auto;
margin-bottom: 25px;
width: 632px;
}
div.onglet-organe ul.liste-illustrations {
margin-top: 8px;
height: 75px;
}
 
.liste-illustrations li p.absent-mini {
width: 60px;
height: 60px;
margin-right: 22px;
font-size: .8em;
background-image: url("../images/pasdephoto_petit.png");
}
.liste-illustrations li p.absent-mini .contribuer {
padding-top: 25px;
}
 
#grande-image-organe {
margin-bottom: 15px;
text-align: center;
}
#grande-image-legende {
width: 600px;
margin: auto;
padding-bottom: 5px;
}
 
.lien_grand_format img {
height: 300px;
}
 
.miniature-organe {
height: 63px;
width: 63px;
overflow: hidden;
}
 
a.lien-images-organes.non-fourni {
opacity: 0.2;
text-decoration: none;
}
a.lien-images-organes.non-fourni:hover {
text-decoration: none;
color: inherit;
}
a.lien-images-organes.fourni {
cursor: pointer;
}
a.lien-images-organes.fourni:hover {
}
a.lien-grande-image-organe {
cursor: pointer;
}
 
#illustrations-coste .liste-illustrations li {
height: 196px;
}
 
.liste-illustrations li p {
margin:2px 2px 5px 2px;
width:206px;
font-size:11px;
}
.liste-illustrations strong {
font-weight:bold;
}
.liste-illustrations img {
display:block;
border:1px solid white;
margin:0 auto;
padding:2px;
max-height:196px;
max-width:196px;
}
.liste-illustrations a:hover img{
border:1px dotted #FD8C13;
}
a.img-cadre{
display:block;
border: 1px solid white;
background:transparent;
width:204px;
height:204px;
margin-right:2px;
}
a.img-cadre:hover{
border:1px dotted #FD8C13;
}
.img-cadre-fond{
background:white;
width:200px;
height:200px;
line-height:200px;
text-align:center;
margin:2px;
}
#illustrations-photoflora img{
display:inline;
vertical-align:middle;
margin:0;
padding:0;
border:0;
}
 
.importance4 {
font-size:0.8em;
padding:5px;
box-shadow:none;
}
 
h1 .nomenclature {
color:#555;
font-size:19px;
}
 
h1 .famille {
font-size:13px;
margin-top:5px;
}
 
#zone_contenu_corps .nomenclature a.lien_recherche_hier {
color:#555;
}
 
table tbody {
background-color: #F8F8DB;
border: 1px solid #9AC342;
}
 
/* relatif aux liens pour l'export pdf --- bloc du bas ---*/
#bloc_export_choix {
width: 100%;
}
 
.avertissement_telechargement {
padding-top:1px;
font-style:italic;
color: grey;
font-weight: 0.9em;
}
 
#export_pdf input[type="submit"] {
text-align: center;
width :120px;
display:block;
/*margin-right: auto;*/
margin-left: 25px;
}
#export_pdf fieldset label{
width :120px;
display:inline-block;
text-align:right;
}
 
#export_pdf fieldset {
border: none;
margin-left: auto;
margin-right: auto;
}
 
.infos_liens_permanents {
width: 60%;
}
 
.telechargements_pdf {
width: 40%;
}
 
.conteneur_telechargements > * {
padding-left:20px;
padding-top: 10px;
padding-bottom: 10px;
}
 
.lien_telechargement_qr_code {
padding: 0;
margin-left:20px;
}
 
.conteneur_permalien_mobile {
margin-left:20px;
margin-top: 10px;
}
 
.lien_export_pdf {
background:url('../images/pdf.png') no-repeat;
padding-left: 20px;
font-size:12px;
padding-bottom: 3px;
}
 
.avertissement_telechargement {
margin-top: 2px;
}
 
.conteneur_permalien {
padding-left: 5px;
padding-bottom: 5px;
padding-top: 5px;
width: 100%;
}
 
.conteneur_permalien > input {
background-color: #EAEDCD;
color: #598000;
border: none;
}
 
.wp.conteneur_permalien {
padding-left: 0px;
padding-top: 0px;
}
 
.titre_lien_permanent {
padding-left: 0px;
}
 
.liste_actions_ill a {
border: none;
text-decoration: none;
}
 
img.icone_action_ill {
display: inline;
height: 16px;
}
 
/**----------------------- recherche--avancee--formulaire---------------------------------------------**/
::-webkit-input-placeholder { color:#777777; }
::-moz-placeholder { color:#777777; } /* firefox 19+ */
:-ms-input-placeholder { color:#777777; } /* ie */
input:-moz-placeholder { color:#777777; }
 
#recherche_av {
position:relative;
float:right;
right:17px;
 
}
#bloc-recherche {
padding-bottom: 3px;
box-shadow: 3px 3px 6px #555555;
margin-bottom: 10px;
}
div #recherche_av_form {
width:97%;
margin-right:auto;
margin-left:auto;
padding : 3px;
 
}
#bloc_recherche_av {
border: 1px solid white;
padding : 5px;
padding-top : 15px;
}
 
#recherche_av_form label {
display:block;
text-align:left;
padding-left:7px;
}
 
#recherche_av_form .rech {
margin-top:20px;
position:relative;
left: 228px;
width:200px;
padding: 2px;
cursor:pointer;
background-color:#FFFFFF;
font-weight: bold;
}
#recherche_av_form .rech:hover {
background-color:#DDDDDD;
}
#recherche_av_form label, #recherche_av_form input, #recherche_av_form select {
float:left;
}
#recherche_av_form .valeur-defaut-recherche {
color: #848484;
font-style: italic;
}
/* fieldset classification */
fieldset.classification_form label{
width: 95px;
}
fieldset.classification_form input, fieldset.classification_form select{
width: 100px;
}
/* fieldset statuts presence */
fieldset.statuts_form label, fieldset.presence_form label{
width: 220px;
}
fieldset.statuts_form select, fieldset.presence_form select{
width: 200px;
}
/* fieldset publication */
fieldset.publication_form label {
width: 60px;
}
/* fieldset numero */
fieldset.numero_form label {
width: 135px;
}
 
.description-referentiel {
text-align: justify;
color: #222222;
font-family: arial;
font-size: 12px;
font-weight: normal;
}
 
/**----------------------- Correction de hauteur pour les graphiques ---------------------------------------------**/
.chorodep_svg {
height: 590px;
width: 100%;
}
 
.ecologie_svg {
width: 500px;
}
 
.chargement {
background:url('../images/chargement-transparent.gif');
background-repeat:no-repeat;
background-position:center;
min-height: 150px;
}
 
/**----------------------- Autocompletion des noms ---------------------------------------------**/
li.autocompletion_nom, .autocompletion_nom:hover {
background: url("../images/fleche_droite.png") no-repeat scroll 100% 0 white;
margin: 0 0 5px;
}
 
/**----------------------- Illustration des résultats ---------------------------------------------**/
 
.illustration_resultat_cel, .illustration_resultat_choro, .illustration_resultat_coste, #synthese_repartition img, #synthese_illustrations img {
cursor: pointer;
}
 
.nomenclature_synonyme {
padding-left: 13px;
}
 
.liste_synonymes_basionyme {
margin-top: 3px;
}
 
.nomenclature_basionyme {
font-size: 0.9em;
}
 
 
/**----------------------- Styles pour la pagination ---------------------------------------------**/
.page_courante {
font-size: 1.5em;
}
 
.page_courante a {
color: black;
}
 
.nb_resultats {
float:right;
margin-top: 10px;
}
 
/**---------------------- Styles pour le dictionnaire --------------------------------------------**/
#conteneur_activation_definition {
height: 18px;
width: 16px;
left: 17px;
top: 15px;
position: relative;
display: none;
}
 
#conteneur_activation_definition a {
height: 18px;
width: 16px;
display: inline-block;
}
 
#conteneur_activation_definition.definitions_actives a {
background: url("../images/dictionnaire.png") no-repeat scroll 0 0 rgba(0, 0, 0, 0);
}
 
#conteneur_activation_definition.definitions_inactives a {
background: url("../images/dictionnaire_inactif.png") no-repeat scroll 0 0 rgba(0, 0, 0, 0);
}
/tags/v5.10-vilmorin/presentations/images/legende_formes.svg
New file
0,0 → 1,950
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="451.119px" height="29.162px" viewBox="0 0 451.119 29.162" enable-background="new 0 0 451.119 29.162"
xml:space="preserve">
<pattern x="-153.85" y="236.477" width="69" height="69" patternUnits="userSpaceOnUse" id="Unnamed_Pattern" viewBox="2.125 -70.896 69 69" overflow="visible">
<g>
<polygon fill="none" points="71.125,-1.896 2.125,-1.896 2.125,-70.896 71.125,-70.896 "/>
<polygon fill="#F7C158" points="71.125,-1.896 2.125,-1.896 2.125,-70.896 71.125,-70.896 "/>
<g>
<path fill="#FFFFFF" d="M61.772-71.653c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M54.105-71.653c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M46.439-71.653c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M38.772-71.653c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M31.105-71.653c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M23.439-71.653c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M15.772-71.653c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M8.105-71.653c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M0.439-71.653c0.018,0.072,0.008,0.127-0.026,0.19C0.361-71.362,0.3-71.4,0.248-71.335
c-0.051,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.07,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.038-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.051-0.12-0.064-0.187c-0.021-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.215,0.124-0.215,0.224c0.002,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
</g>
<g>
<path fill="#FFFFFF" d="M69.439-71.653c0.018,0.072,0.008,0.127-0.026,0.19c-0.052,0.101-0.113,0.063-0.165,0.128
c-0.051,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.07,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.038-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.051-0.12-0.064-0.187c-0.021-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.215,0.124-0.215,0.224c0.002,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
</g>
<path fill="#FFFFFF" d="M0.495-71.653c0.018,0.072,0.008,0.127-0.026,0.19c-0.052,0.101-0.113,0.063-0.165,0.128
c-0.051,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.07,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.038-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.051-0.12-0.064-0.187c-0.021-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.215,0.124-0.215,0.224C0.5-71.68,0.503-71.744,0.51-71.626
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<g>
<g>
<path fill="#FFFFFF" d="M69.439-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M61.778-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M54.118-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M46.458-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M38.797-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M31.137-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M23.477-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M15.816-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M8.156-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M0.495-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143C2-61.45,2.217-61.397,2.391-61.46c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
</g>
<g>
<path fill="#FFFFFF" d="M69.439-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M61.778-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M54.118-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M46.458-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M38.797-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M31.137-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M23.477-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M15.816-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M8.156-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M0.495-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224C0.5-56.374,0.503-56.438,0.51-56.32
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
</g>
<g>
<path fill="#FFFFFF" d="M69.439-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M61.778-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M54.118-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M46.458-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M38.797-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M31.137-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M23.477-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M15.816-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M8.156-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M0.495-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
</g>
<g>
<path fill="#FFFFFF" d="M69.439-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M61.778-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M54.118-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M46.458-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M38.797-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M31.137-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M23.477-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M15.816-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M8.156-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
C8.15-41.004,8.149-41.02,8.14-41.04"/>
<path fill="#FFFFFF" d="M0.495-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
</g>
<g>
<path fill="#FFFFFF" d="M69.439-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M61.778-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M54.118-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M46.458-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M38.797-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M31.137-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M23.477-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M15.816-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M8.156-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M0.495-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224C0.5-33.416,0.503-33.48,0.51-33.362
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
</g>
<g>
<path fill="#FFFFFF" d="M69.439-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M61.778-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M54.118-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M46.458-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M38.797-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M31.137-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M23.477-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M15.816-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M8.156-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M0.495-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
</g>
<g>
<path fill="#FFFFFF" d="M69.439-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M61.778-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M54.118-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M46.458-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M38.797-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M31.137-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M23.477-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M15.816-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M8.156-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M0.495-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224C0.5-18.11,0.503-18.175,0.51-18.057
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
</g>
<g>
<path fill="#FFFFFF" d="M69.439-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362C69-9.692,69.159-9.523,69.154-9.4c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M61.778-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M54.118-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M46.458-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M38.797-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M31.137-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M23.477-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M15.816-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053C17.933-7.969,17.839-8.227,18-8.34
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M8.156-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
C7.915-10.05,7.866-9.836,7.886-9.75C7.717-9.692,7.876-9.523,7.871-9.4C7.868-9.351,7.83-9.295,7.826-9.239
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
C9.114-7.652,9.321-7.799,9.48-7.837c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M0.495-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
C0.254-10.05,0.205-9.836,0.225-9.75C0.056-9.692,0.215-9.523,0.21-9.4c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37C0.33-8.671,0.501-8.456,0.668-8.325c0.19,0.148,0.365,0.572,0.608,0.631
C1.454-7.652,1.66-7.799,1.819-7.837C2-7.88,2.217-7.827,2.391-7.89c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46C3.477-8.933,3.471-8.995,3.5-9.071
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
</g>
</g>
<g>
<path fill="#FFFFFF" d="M69.439-2.778c0.018,0.072,0.008,0.127-0.026,0.19C69.361-2.487,69.3-2.525,69.248-2.46
c-0.051,0.063-0.099,0.276-0.079,0.362C69-2.04,69.159-1.871,69.154-1.748c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
C70.397,0,70.604-0.146,70.763-0.185c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.07,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.038-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.051-0.12-0.064-0.187c-0.021-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.215,0.124-0.215,0.224c0.002,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M61.778-2.778c0.018,0.072,0.007,0.127-0.026,0.19C61.7-2.487,61.64-2.525,61.587-2.46
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
C62.737,0,62.943-0.146,63.103-0.185c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224C61.915-3.117,61.78-3.02,61.781-2.92c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M54.118-2.778c0.018,0.072,0.007,0.127-0.026,0.19C54.04-2.487,53.98-2.525,53.927-2.46
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
C55.077,0,55.283-0.146,55.442-0.185c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224C54.255-3.117,54.12-3.02,54.121-2.92c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M46.458-2.778c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
C47.416,0,47.623-0.146,47.782-0.185c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224C46.594-3.117,46.459-3.02,46.46-2.92c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M38.797-2.778c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
C39.756,0,39.962-0.146,40.122-0.185c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224C38.934-3.117,38.799-3.02,38.8-2.92c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M31.137-2.778c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
C32.095,0,32.302-0.146,32.461-0.185c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224C31.273-3.117,31.139-3.02,31.14-2.92c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M23.477-2.778c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
C24.435,0,24.642-0.146,24.801-0.185c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
c-0.021,0.011-0.021-0.005-0.03-0.025"/>
<path fill="#FFFFFF" d="M15.816-2.778c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
C16.774,0,16.981-0.146,17.14-0.185c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207
c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169
C15.81-2.74,15.809-2.756,15.8-2.776"/>
<path fill="#FFFFFF" d="M8.156-2.778c0.018,0.072,0.007,0.127-0.026,0.19C8.077-2.487,8.018-2.525,7.965-2.46
c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35C7.868-1.698,7.83-1.643,7.826-1.587
c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631
C9.114,0,9.321-0.146,9.48-0.185c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221
c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789C8.954-3.54,8.847-3.448,8.692-3.367
c-0.17,0.088-0.139,0.166-0.318,0.224C8.292-3.117,8.158-3.02,8.159-2.92C8.16-2.805,8.164-2.869,8.17-2.751
C8.15-2.74,8.149-2.756,8.14-2.776"/>
<path fill="#FFFFFF" d="M0.495-2.778c0.018,0.072,0.008,0.127-0.026,0.19C0.417-2.487,0.356-2.525,0.304-2.46
C0.253-2.397,0.205-2.184,0.225-2.098C0.056-2.04,0.215-1.871,0.21-1.748c-0.002,0.05-0.041,0.105-0.045,0.161
c-0.01,0.119,0.017,0.266,0.068,0.37C0.33-1.019,0.501-0.804,0.668-0.673c0.19,0.148,0.365,0.572,0.608,0.631
C1.454,0,1.66-0.146,1.819-0.185C2-0.228,2.217-0.175,2.391-0.237c0.222-0.079,0.127-0.337,0.288-0.45
c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.07,0.339-0.263,0.376-0.46C3.477-1.28,3.471-1.343,3.5-1.419
c0.038-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.051-0.12-0.064-0.187c-0.021-0.114,0.002-0.224,0-0.337
c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789C1.293-3.54,1.187-3.448,1.031-3.367
c-0.17,0.088-0.139,0.166-0.318,0.224C0.632-3.117,0.498-3.02,0.498-2.92C0.5-2.805,0.503-2.869,0.51-2.751
C0.489-2.74,0.488-2.756,0.479-2.776"/>
</g>
</g>
</pattern>
<rect id="trois_ve_humidite_atmos" y="23.316" fill="#EA6626" width="23.292" height="3.537"/>
<circle id="ve_lumiere" fill="#EA6727" stroke="#FFFFFF" stroke-width="3" cx="8.686" cy="8.35" r="6.85"/>
<text transform="matrix(1 0 0 1 30.4502 9.2402)" font-family="'ArialMT'" font-size="9">valence optimale du taxon</text>
<text transform="matrix(1 0 0 1 30.4502 26.2402)" font-family="'ArialMT'" font-size="9">zone optimale du taxon calculée à partir des optimums pour les taxons inférieurs</text>
</svg>
/tags/v5.10-vilmorin/presentations/images/flecheDroite.jpg
Cannot display: file marked as a binary type.
svn:mime-type = image/jpeg
/tags/v5.10-vilmorin/presentations/images/flecheDroite.jpg
New file
Property changes:
Added: svn:mime-type
+image/jpeg
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/fond_carte_metropole.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/tags/v5.10-vilmorin/presentations/images/fond_carte_metropole.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/contact.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/contact.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/bib_en_ligne.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/bib_en_ligne.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/fleche_droite.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/fleche_droite.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/chargement-transparent.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/tags/v5.10-vilmorin/presentations/images/chargement-transparent.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/chargement.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/tags/v5.10-vilmorin/presentations/images/chargement.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/flecheGauche.jpg
Cannot display: file marked as a binary type.
svn:mime-type = image/jpeg
/tags/v5.10-vilmorin/presentations/images/flecheGauche.jpg
New file
Property changes:
Added: svn:mime-type
+image/jpeg
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/aide.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/aide.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/fleche_gauche.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/fleche_gauche.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/sites/smf.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/sites/smf.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/sites/seinet.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/sites/seinet.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/sites/sfo.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/sites/sfo.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/sites/cjb.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/sites/cjb.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/sites/ipni.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/sites/ipni.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/sites/nybg.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/sites/nybg.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/sites/tpl.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/sites/tpl.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/sites/mnhn.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/sites/mnhn.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/sites/jstor.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/sites/jstor.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/sites/tropicos.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/sites/tropicos.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/sites/lichen.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/sites/lichen.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/sites/inpn.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/tags/v5.10-vilmorin/presentations/images/sites/inpn.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/sites/wikipedia.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/sites/wikipedia.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/sites/anbg.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/sites/anbg.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/sites/antilles.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/sites/antilles.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/sites/si.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/sites/si.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/sites/vha.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/sites/vha.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/sites/cbnm.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/sites/cbnm.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/sauver.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/sauver.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/attention.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/attention.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/dictionnaire_inactif.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/dictionnaire_inactif.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/pasdephoto.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/pasdephoto.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/dictionnaire.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/dictionnaire.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/pdf.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/pdf.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/icones_tags/ecorce.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/tags/v5.10-vilmorin/presentations/images/icones_tags/ecorce.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/icones_tags/port.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/tags/v5.10-vilmorin/presentations/images/icones_tags/port.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/icones_tags/feuille.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/tags/v5.10-vilmorin/presentations/images/icones_tags/feuille.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/icones_tags/fruit.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/tags/v5.10-vilmorin/presentations/images/icones_tags/fruit.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/icones_tags/rameau.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/tags/v5.10-vilmorin/presentations/images/icones_tags/rameau.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/icones_tags/fleur.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/tags/v5.10-vilmorin/presentations/images/icones_tags/fleur.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/pasdephoto_petit.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/tags/v5.10-vilmorin/presentations/images/pasdephoto_petit.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/legende_formes.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/legende_formes.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/fermer.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/fermer.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/infos_image.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/infos_image.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/interdit.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/interdit.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/loupe.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/loupe.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/zoom.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/zoom.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/information.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/information.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/mauvaise_id.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/mauvaise_id.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/ouvrir.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/ouvrir.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/images/lien.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/presentations/images/lien.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/scripts/recherche.js
New file
0,0 → 1,397
/**-------------------------- Objets globaux -----------------------------------*/
/*
* Les variables suivantes sont ajoutée automatiquement dans le squelette du moteur de
* recherche par php, elles sont commentées ici pour qu'elles n'aient pas l'air
* de sortir de la cuisse de Jupiter
*
* var AUTOCOMPLETION_ELEMENTS_NBRE : indique le nombre d'éléments à afficher dans la liste d'autocomplétion.
*
* var URL_SERVICE_AUTOCOMPLETION_NOM_SCI : url de base du service de complétion de noms scientifiques
* pour le projet en cours de consultation.
* Exemple : http://localhost/service:eflore:0.1/bdtfx/noms?recherche=etendue&retour.format=min&masque=Ace%mo
*
* var URL_SERVICE_AUTOCOMPLETION_NOM_VERNA : url de base du service de complétion de noms vernaculaires
* pour le projet en cours de consultation.
* Exemple : http://localhost/service:eflore:0.1/nvjfl/noms-vernaculaires?recherche=etendue&retour.format=oss&masque=aca&masque.lg=fra
*
* var VALEUR_DEFAUT_NOM_SCI : Contient la valeur par défaut affichée dans le formulaire en mode sci
* Exemple: Rechercher un nom scientifique
*
* var VALEUR_DEFAUT_NOM_VERNA : Contient la valeur par défaut affichée dans le formulaire en mode verna
* Exemple: Recherche un nom commun
*
* var URL_BASE_POPUP : url de base pour les popup contenant du code un peu complexe
*/
 
var champs_ts = ["#au","#and","#anf","#nom","#bib"];
var autocompletionFicheOuverte = false;
var elementAutocompletionSelectionne = null;
var nomRechercheEnCours = null;
 
$(document).ready(function() {
initialiserMoteur();
});
 
function initialiserMoteur() {
ajouterAutocompletion();
gererAffichageValeursParDefaut();
gererAccesFicheFlecheDroite();
gererClicIllustrationsResultats();
gererAccesFicheBouton();
}
 
/**------------------- Fonctions de gestion de l'autocompletion ---------------------------------*/
function ajouterAutocompletion(){
ajouterAutocompletionNoms();
$('.champ_autocomplete').each(function(index) {
ajouterAutocompletionAvancee($(this));
});
}
 
function ajouterAutocompletionAvancee(champs){
champs.autocomplete({
source: function(requete, add){
// la variable de requête doit être vidée car sinon le parametre "term" est ajouté
requete = "";
var id = champs.attr('id');
var url = encodeURI(getUrlAutocompletionAvancee(id));
$.getJSON(url, requete, function(data) {
var suggestions = [];
suggestions = traiterRetourAvance(data,champs);
add(suggestions);
});
},
html: true
});
}
 
function ajouterAutocompletionNoms() {
$('#nom').autocomplete({
source: function(requete, add){
// la variable de requête doit être vidée car sinon le parametre "term" est ajouté
requete = "";
var url = encodeURI(getUrlAppelCompletion());
$.getJSON(url, requete, function(data) {
var suggestions = [];
if (nomVernaculaireEstDemande()) {
suggestions = traiterRetourNomsVerna(data);
} else if (nomSciEstDemande()) {
suggestions = traiterRetourNomsSci(data);
}
add(suggestions);
});
},
search: function(event, ui) {
nomRechercheEnCours = 'nom_sci';
},
focus: function(event, ui) {
elementAutocompletionSelectionne = ui.item;
},
open: function(event, ui) {
autocompletionFicheOuverte = true;
var parent = $('.autocompletion_nom.ui-menu-item').parent();
parent.width(parent.width() + 10);
},
close: function(event, ui) {
autocompletionFicheFermee = false;
nomRechercheEnCours = null;
},
html: true
});
$("#nom").bind("autocompleteselect", function(event, ui) {
if (ui.item.retenu == true) {
$("#nom").addClass('ns-retenu');
} else {
$("#nom").removeClass('ns-retenu');
}
});
}
 
// gére l'acces direct à une fiche par l'appui sur droite
// dans la liste d'autocompletion des noms scientifiques
function gererAccesFicheFlecheDroite() {
$(document).keypress(function(event) {
// flèche droite
if(event.keyCode == 39) {
if(autocompletionFicheOuverte && elementAutocompletionSelectionne != null && nomSciEstDemande()) {
$('#nom').val(elementAutocompletionSelectionne.value);
if(elementAutocompletionSelectionne.nn != undefined && elementAutocompletionSelectionne.nn != null) {
var url_fiche_taxon = URL_BASE_FICHE_TAXON.replace('{num_taxon}',elementAutocompletionSelectionne.nn);
window.location.href = url_fiche_taxon;
}
$('#nom').autocomplete( "disable" );
//TODO : ajout d'un message de chargement ?
}
}
if(event.keyCode == 13) {
if(autocompletionFicheOuverte && elementAutocompletionSelectionne == null && $('#nom').is(":focus")) {
$('#eflore_nomenclature_submit').click();
}
}
});
}
 
function gererAccesFicheBouton() {
$('#eflore_nomenclature_fiche').click(function(event) {
if(elementAutocompletionSelectionne != null && nomSciEstDemande()) {
$('#nom').val(elementAutocompletionSelectionne.value);
if(elementAutocompletionSelectionne.nn != undefined && elementAutocompletionSelectionne.nn != null) {
var url_fiche_taxon = URL_BASE_FICHE_TAXON.replace('{num_taxon}',elementAutocompletionSelectionne.nn);
window.location.href = url_fiche_taxon;
}
event.preventDefault();
}
});
}
 
function traiterRetourNomsSci(data) {
var suggestions = [];
if (data.resultat != undefined) {
$.each(data.resultat, function(i, val) {
val.nn = i;
var nom = {label : '', value : '', retenu : false};
if (suggestions.length >= AUTOCOMPLETION_ELEMENTS_NBRE) {
nom.label = "...";
nom.value = $('#nom').val();
suggestions.push(nom);
return false;
} else {
nom.label = val.nom_sci_complet;
nom.value = val.nom_sci;
nom.nn = val.nn;
if(val.retenu != "absent") {
nom.retenu = (val.retenu == 'true') ? true : false;
suggestions.push(nom);
}
}
});
}
return suggestions;
}
 
 
function traiterRetourAvance(data, champs) {
var suggestions = [];
if (jQuery.type(data) == "array") {
$.each(data[1], function(i, val) {
var ch = {label : '', value : ''};
if (suggestions.length >= AUTOCOMPLETION_ELEMENTS_NBRE) {
ch.label = "...";
ch.value = champs.val();
suggestions.push(ch);
return false;
} else {
ch.label = val;
ch.value = val;
suggestions.push(ch);
}
});
}
return suggestions;
}
 
function traiterRetourNomsVerna(data) {
var suggestions = [];
if (jQuery.type(data) == "array") {
$.each(data[1], function(i, val){
var nom = {label : '', value : ''};
if (suggestions.length >= AUTOCOMPLETION_ELEMENTS_NBRE) {
nom.label = "...";
nom.value = $('#nom').val();
suggestions.push(nom);
return false;
} else {
nom.label = val;
nom.value = val;
suggestions.push(val);
}
});
}
return suggestions;
}
 
 
/**------------ Fonctions de gestion des urls d'autocompletion et des fiches ------------------*/
 
function getUrlAutocompletionAvancee(parametre) {
var valeur = getValeurMasque(parametre);
var ns_str = getValeurNsStructure(parametre);
var url = URL_SERVICE_AUTOCOMPLETION_NOM_SCI+"?recherche=etendue&"+
"navigation.limite="+AUTOCOMPLETION_ELEMENTS_NBRE +'&masque.'+parametre+'='+valeur+
'&retour.format=oss&distinct=1&ns.structure='+ns_str;
return url;
}
 
function getValeurMasque(parametre) {
var valeur = $('#'+parametre).val();
if (parametre == 'au' ){
valeur = valeur +',(' + valeur + ')';
} else if (parametre == 'bib' ){
valeur = valeur +', %; ' + valeur ;
}
return valeur;
}
 
function getValeurNsStructure(parametre) {
var ns = '';
if (parametre == 'au' || parametre == 'bib'){
ns = parametre +'_ss';
} else {
ns = parametre;
}
return ns;
}
 
 
function getUrlAppelCompletion() {
var url = '';
var mots = $('#nom').val();
if (nomSciEstDemande()) {
url = getUrlAutocompletionNomsSci(mots);
} else if (nomVernaculaireEstDemande()) {
mots = mots.replace(' ',' ');
mots = mots.replace(' ','_');
url = getUrlAutocompletionNomsVerna(mots);
}
return url;
}
 
function getUrlAutocompletionNomsSci(requete) {
var url = getUrlAutocompletion(URL_SERVICE_AUTOCOMPLETION_NOM_SCI, requete, 'min')+
"&ns.structure=au,an"+
// tri "à la mode du CeL"
"&retour.tri=alpharet";
return url;
}
 
function getUrlAutocompletionNomsVerna(requete) {
var url = getUrlAutocompletion(URL_SERVICE_AUTOCOMPLETION_NOM_VERNA, requete, 'oss');
return url;
}
 
function getUrlAutocompletion(baseUrl, requete, format) {
var url = baseUrl+"?"+
"masque="+requete+"&"+
"recherche=etendue&"+
"retour.format="+format+"&"+
"navigation.limite="+AUTOCOMPLETION_ELEMENTS_NBRE;
return url;
}
 
/**------------ Fonctions de détection de l'état du formulaire ------------------*/
function nomSciEstDemande() {
var boutonRadioNomSci = $('#type_nom_scientifique');
return (($('#type_nom_vernaculaire').length <= 0) || (boutonRadioNomSci != null && boutonRadioNomSci.attr("checked") != "undefined" && boutonRadioNomSci.attr("checked") == "checked"));
}
 
function nomVernaculaireEstDemande() {
var boutonRadioNomSci = $('#type_nom_vernaculaire');
return (boutonRadioNomSci.length > 0 && boutonRadioNomSci.attr("checked") != "undefined" && boutonRadioNomSci.attr("checked") == "checked");
}
 
/**------------ Fonctions de gestion de l'affichage des valeurs par defaut ----------------------*/
function gererAffichageValeursParDefaut() {
$('input[name="type_nom"]').click(function() {
changerPlaceHolderNom();
});
changerPlaceHolderNom();
$('input').click(function() {
$(this).attr('placeholder', '');
});
}
 
function changerPlaceHolderNom() {
if(nomSciEstDemande()) {
$('#nom').attr('placeholder',VALEUR_DEFAUT_NOM_SCI);
} else {
$('#nom').attr('placeholder',VALEUR_DEFAUT_NOM_VERNA);
}
}
 
/**------------ Fonctions de gestion du zoom sur les images affichées dans les résultats de recherche ----------------------*/
function gererClicIllustrationsResultats() {
$('.illustration_resultat_cel').click(function() {
var url = $(this).attr('src');
var titre = trouverNomTaxon($(this));
var url = URL_BASE_POPUP+"?module=popup-galerie&action=fiche&num_nom="+$(this).attr('data-num-nom')+"&titre="+titre+"&referentiel="+REFERENTIEL;
window.open(url, '', 'directories=no,titlebar=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no, width='+(700)+', height='+(650));
});
$('.illustration_resultat_choro').click(function() {
var url = $(this).attr('src').replace('108x101','432x404');
var titre = 'Chorologie du taxon '+trouverNomTaxon($(this));
ouvrirFenetreIllustrationResultat(url, titre, 432, 404);
});
$('.illustration_resultat_coste').click(function() {
var url = $(this).attr('src');
var titre = 'Illustration de Coste du taxon '+trouverNomTaxon($(this));
ouvrirFenetreIllustrationResultat(url, titre, 400, 400);
});
}
 
function trouverNomTaxon(objet) {
nom = "";
if(nomVernaculaireEstDemande()) {
nom = objet.parent().parent().find('a.lien_fiche_eflore').text();
} else {
nom = objet.parent().find('.nom-sci a.lien_fiche_eflore').text();
}
return nom;
}
 
function ouvrirFenetreIllustrationResultat(url, titre, hauteur, largeur) {
var fenetre = window.open('_blank', '','directories=no,titlebar=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no, width='+(largeur+17)+', height='+(hauteur+17));
var tmp = fenetre.document;
tmp.write('<html><head><title>'+titre+'</title>');
tmp.write('</head><body>');
tmp.write('<p style="height='+hauteur+'px;text-align:center;line-height='+hauteur+'px;"><img id="image_agrandie" height="'+hauteur+'" width="'+largeur+'" style="vertical-align:middle;" src="'+url+'" /></p>');
tmp.write('</body></html>');
tmp.close();
}
 
/*
* jQuery UI Autocomplete HTML Extension
*
* Copyright 2010, Scott González (http://scottgonzalez.com)
* Dual licensed under the MIT or GPL Version 2 licenses.
*
* http://github.com/scottgonzalez/jquery-ui-extensions
*
* Adaptation par Aurélien Peronnet pour la mise en gras des noms de taxons valides
*/
(function( $ ) {
var proto = $.ui.autocomplete.prototype,
initSource = proto._initSource;
function filter( array, term ) {
var matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" );
return $.grep( array, function(value) {
return matcher.test( $( "<div>" ).html( value.label || value.value || value ).text() );
});
}
$.extend( proto, {
_initSource: function() {
if (this.options.html && $.isArray(this.options.source) ) {
this.source = function( request, response ) {
response( filter( this.options.source, request.term ) );
};
} else {
initSource.call( this );
}
},
_renderItem: function( ul, item) {
if (item.retenu == true) {
item.label = "<strong>"+item.label+"</strong>";
}
var classe = (nomRechercheEnCours == 'nom_sci' && nomSciEstDemande()) ? 'class="autocompletion_nom"' : '';
return $("<li "+classe+"></li>")
.data("item.autocomplete", item)
.append( $("<a></a>")[ this.options.html ? "html" : "text" ](item.label))
.appendTo(ul);
}
});
})( jQuery );
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/tags/v5.10-vilmorin/presentations/scripts/eflore.js
New file
0,0 → 1,20
/**
* Contient les fonction JS communes à l'ensemble des parties d'eflore (popup.php, index.php).
*
*/
 
$(document).ready(function() {
$('body').on('click', 'a.lien-externe, a.lien_externe', ouvrirFenetreExterne);
$('body').on('click', 'a.mailto', ouvrirPopUpContact);
});
 
function ouvrirFenetreExterne(event) {
event.preventDefault();
top.open($(this).attr('href'));
}
 
function ouvrirPopUpContact(event) {
event.preventDefault();
window.open($(this).attr('href'), "Contact",
'height=500, width=500, top=100, left=100, toolbar=no, menubar=no, location=no, resizable=yes, scrollbars=yes, status=no');
}
/tags/v5.10-vilmorin/presentations/scripts/fiche-synthese.js
New file
0,0 → 1,822
//+----------------------------------------------------------------------------------------------------------+
// Onglets et Portlets
/**
* Les variables suivantes ont été ajoutée par php
*
* var urlTexteBrutSectionWikiTpl : url pour obtenir le texte brut d'une section de wiki
* var urlEditionSectionWikiTpl : url pour éditer une section du wiki
* var urlTexteFormateSectionWikiTpl : url pour obtenir le texte formaté en html d'une section de wiki
* var pageWikiTaxon : url pour obtenir le texte formaté en html d'une section de wiki
* var urlPopup = url de base pour les popup contenant du code un peu complexe
*
*/
 
/**
* Variables globales du script
*/
var modules = Array();
var tableauOnglets = Array();
var nbOngletsInvisibles = 0;
var ongletSyntheseCharge = true;
var ongletIllustrationsCharge = false;
 
/** Classe Module
* Définit un module de type portlet
**/
function Module(id, module, onglet, statique) {
 
// Variables de classe : identifiant, titre, et le HTML du résumé à afficher dans le contenu
this.id = id;
this.titre;
this.htmlResume;
this.statique = statique;
 
// Les objets Portlet et Onglet que l'ont garde en mémoire pour pouvoir y accéder facilement
this.portlet = module;
this.onglet;
 
// creerPortlet
// Créer l'objet Portlet HTML à afficher et le stocker dans les variables de classe
this.creerPortlet = function() {
var objet = this;
 
var titre = $(module).children('.titre');
titre.className = 'titre ui-widget-header ui-corner-all';
titre.id = 'titre-' + this.id;
var lienTitre = $(module).children('.titre').children('a');
lienTitre.attr('href','#'+this.id);
lienTitre.click(function() {
$('#zone_onglets').tabs( "option", "active", (objet.id -1));
return false;
});
lienTitre.hover(function() {
if (!objet.ongletEstAffiche()) {
$(this).css({"color":"white"});
} else {
$(this).css({"color":"#E78F08"});
}
});
lienTitre.mouseout(function() {
$(this).css({"color":"white"});
});
 
var contenu = $(module).children('.contenu');
contenu.id = 'contenu-' + this.id;
contenu.className ='contenu';
 
var lienToggle = document.createElement('span');
lienToggle.className = 'lienToggle ui-icon ui-icon-minusthick';
$(titre).append(lienToggle);
$(lienToggle).click(function() {
objet.afficherCacherModule();
});
 
this.portlet = module;
return module;
}
this.ongletEstAffiche = function() {
return $(this.onglet.selector).is(':visible');
}
 
// Crée l'objet Onglet HTML
this.creerOnglet = function() {
var objet = this;
this.onglet = onglet;
}
// Initialisation de l'objet
this.creerPortlet();
this.creerOnglet();
// Accesseurs de la classe
this.getOnglet = function() {
return this.onglet;
}
this.getPortlet = function() {
return this.portlet;
}
// fonctions d'affichage et cachage (je sais pas si on dit ça comme ça) des onglets
this.afficherCacherModule = function() {
$(this.portlet).find(".lienToggle").toggleClass("ui-icon-plusthick");
$(this.portlet).find(".lienToggle").toggleClass("ui-icon-minusthick");
$(this.portlet).find(".titreOnglet").toggleClass("pasDeCurseur");
$(this.portlet).find(".contenu").toggle();
}
}
 
function getUrlVars() {
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
 
function afficherOngletsPourNiveau() {
/* affiche les onglets par default selon niveau*/
for (indice in tableauOnglets) {
var ongletEnCours = tableauOnglets[indice];
titre_onglet = ongletEnCours.titre;
titre_onglet = $.trim(titre_onglet);
if (!Array.indexOf) {
Array.prototype.indexOf = function (obj, start) {
for (var i = (start || 0); i < this.length; i++) {
if (this[i] == obj) {
return i;
}
}
return -1;
}
}
if (ongletsDefaut.indexOf(titre_onglet) == -1) {
ongletEnCours.afficherCacherModule();
nbOngletsInvisibles++;
}
}
}
 
function obtenirOngletCookiePourPage() {
var urlVars = getUrlVars();
var id_cookie = 'onglet_eflore';
if (urlVars['num_nom']) {
id_cookie += '_'+urlVars['num_nom'];
}
return $.cookie(id_cookie) ? $.cookie(id_cookie) : null;
}
 
function enregistrerOngletCookiePourPage(valeur) {
var urlVars = getUrlVars();
var id_cookie = 'onglet_eflore';
if(urlVars['num_nom'] && urlVars['num_nom'] != undefined) {
id_cookie += '_'+urlVars['num_nom'];
}
$.cookie(id_cookie, valeur);
}
 
function lierModulesEtOnglets() {
var i = 1;
//Parcourir la totalité des modules générés et les lier grâce à la classe Module
$(".module").each(function () {
i++;
identifiantOnglet = "#zone_onglets>ul>li:nth-child(" + i +")";
var module = new Module(i, this, $(identifiantOnglet));
var titre = $(this).children('h3').text();
module.titre = titre;
tableauOnglets[identifiantOnglet] = module;
});
}
 
// remplace des liens directs vers les onglets par des liens permettant de ne charger
// que le contenu de l'onglet (pour le plugin tab)
function remplacerUrlsOnglets() {
$(".lien-onglet").each(function() {
var urlOnglet = $(this).attr('href');
var urlVars = urlOnglet.slice(urlOnglet.indexOf('?') + 1);
urlBase = base_url_application_onglets+"?"+urlVars;
urlOnglet = urlBase.replace('action=fiche','action=onglet');
$(this).attr('href', urlOnglet);
});
}
 
ongletsInitialises = false;
numOngletEnCours = null;
nePasEmpilerUrl = false;
popStateOriginal = true;
function initialiserOnglets() {
// replacement du chargement de toute la page par un lien vers uniquement le contenu de l'onglet
// pour le module tab qui charge les url désignée dans les liens des tabs
remplacerUrlsOnglets();
// analyse de l'onglet désigné comme selectionné par défaut
// (on peut accéder directement à un onglet précis à travers un param url)
var tabSelectionneDefaut = $('#onglets li.ui-state-active');
var indexTabSelectionneDefaut = $("#onglets li").index($(tabSelectionneDefaut));
 
$('#zone_onglets').tabs({
create: function( event, ui ) {
// par défaut, le contenu déjà chargé est dans une autre zone
// on le déplace donc comme s'il avait été chargé par le plugin tab
var contenuZoneFiche = $("#zone_contenu_fiche > div").detach();
contenuZoneFiche.appendTo('#ui-tabs-'+(indexTabSelectionneDefaut+1));
$("#zone_contenu_fiche").hide();
$('#ui-tabs-'+(indexTabSelectionneDefaut+1)).show();
ongletNomCode = $('#ui-tabs-'+(indexTabSelectionneDefaut+1)).children(".onglet_contenu").attr("id");
$(".lien_retour_synthese").toggle((ongletNomCode != "synthese"));
},
active: indexTabSelectionneDefaut ,
beforeLoad: function( event, ui ) {
// il est inutile de recharger un onglet déjà chargé (les onglets déjà chargé sont l'onglet par défaut
// et (lors du chargement de la fiche), l'onglet déjà chargé par php
// +1 car les tabs sont zéros indexées
var idPanelCharge = ui.tab.index()+1;
var panelCharge = $('#ui-tabs-'+idPanelCharge);
numOngletEnCours = idPanelCharge;
 
if(!panelCharge.is(':empty') || indexTabSelectionneDefaut+1 == idPanelCharge) {
// si le panneau est déjà chargé on peut mettre à jour l'url immédiatement
var ongletNomCode = panelCharge.children(".onglet_contenu").attr("id");
if(!nePasEmpilerUrl) {
mettreAJourUrl(permalienNumNom+"-"+ongletNomCode, ongletNomCode);
nePasEmpilerUrl = false;
}
 
$(".lien_retour_synthese").toggle((ongletNomCode != "synthese"));
panelCharge.show();
return false;
} else {
// si l'onglet n'est pas chargé alors on affiche le message de chargement
// pendant que le plugin s'occupe du reste
fancyboxinitialise = false;
var panel = $('#ui-tabs-'+idPanelCharge);
panel.append("<div class='tab-chargement'>Chargement des informations...</div>");
return true;
}
},
load: function(event, ui) {
// sur les panneaux qui ne sont pas encore chargés, on doit attendre la fin
// du chargement pour mettre à jour l'url (à cause de la récupération de l'id sur les enfants)
var ongletNomCode = ui.panel.children(".onglet_contenu").attr("id");
$(".lien_retour_synthese").toggle((ongletNomCode != "synthese"));
mettreAJourUrl(permalienNumNom+"-"+ongletNomCode, ongletNomCode);
$(document).trigger('dictionnaireRechercherDefinitions', '#'+ongletNomCode);
}
});
$(window).bind('popstate', function(event) {
if(!!event.originalEvent.state) {
nePasEmpilerUrl = true;
$("#onglets > li > a[rel='"+event.originalEvent.state+"']").click();
} else {
// chrome fait un popstate au chargement de la page, ce qui la fait recharger
// indéfiniment, ce comportement étant compréhensible, il vaut mieux s'en prévenir
if(!popStateOriginal) {
window.location = window.location.href;
}
popStateOriginal = false;
}
});
}
 
//+----------------------------------------------------------------------------------------------------------+
// Wikini Flora
var htmlWikiOriginal = '';
var objetContenuWiki = null;
 
function getTemplateFormulaireEditionWiki(page, section, texte) {
var urlWebServiceWiki = getUrlEditionPourPageEtSection(page, section);
var formulaire =
'<form method="post" id="formulaire_edition_wiki" name="formulaire_edition_wiki" action="'+urlWebServiceWiki+'">'+
'<div>'+
'<textarea id="pageContenu" name="pageContenu" class="champ_edition_wiki">'+texte+'</textarea>'+
'</div>'+
'<input type="hidden" name="pageSectionTitre" id="pageSectionTitre" value="'+section+'" />'+
'<input type="submit" text="sauver" />'+
'<input class="bouton_annuler_edition" type="button" value="annuler" />';
'</form>';
return formulaire;
}
 
function getSection() {
return objetContenuWiki.attr("title");
}
 
function getPageWikiTaxon() {
return pageWikiTaxon;
}
 
function getUrlEditionPourPageEtSection(page, section) {
var url = urlEditionSectionWikiTpl.replace('{pageTag}', page).replace('{sectionTitre}', section);
return url;
}
 
function getUrlTextePourPageSectionBrute(page, section) {
return urlTexteBrutSectionWikiTpl.replace('{pageTag}', page).replace('{sectionTitre}', section);
}
 
function getUrlTextePourPageSectionFormatee(page, section) {
return urlTexteFormateSectionWikiTpl.replace('{pageTag}', page).replace('{sectionTitre}', section);
}
 
function remplacerContenuWikiParFormulaireEdition(objet_contenu) {
objetContenuWiki = objet_contenu;
var adresse = getUrlEditionPourPageEtSection(getPageWikiTaxon(), getSection());
htmlWikiOriginal = objet_contenu.html();
$.getJSON(adresse, function(data) {
$(objetContenuWiki).removeClass('editable_sur_clic').html(getTemplateFormulaireEditionWiki(getPageWikiTaxon(), getSection(), data.texte));
});
}
 
function gererEvenementsWiki() {
//TODO: ajout automatique d'un lien ouvrant une page d'aide (un popup) au formatage des pages wikini
$('.editable_sur_clic').live('dblclick',function(event) {
remplacerContenuWikiParFormulaireEdition($(this));
});
$('#formulaire_edition_wiki').live('submit',function(event) {
event.preventDefault();
var valeurs = $(this).serialize();
$.post($(this).attr('action'), valeurs, function(data) {
var adresse = getUrlTextePourPageSectionFormatee(getPageWikiTaxon(), getSection());
$.getJSON(adresse, function(data) {
$(objetContenuWiki).addClass('editable_sur_clic').html(data.texte);
});
});
});
$('.bouton_annuler_edition').live('click', function(event) {
event.preventDefault();
$(objetContenuWiki).addClass('editable_sur_clic').html(htmlWikiOriginal);
});
rendreLienAffichableDansNouvelleFenetre('.contenu_editable');
}
 
//+----------------------------------------------------------------------------------------------------------+
//Affichage dans une nouvelle fenetre
function rendreLienAffichableDansNouvelleFenetre(selecteur) {
$(selecteur).find('a').live('click', function(event) {
window.open($(this).attr('href'));
event.preventDefault();
return false;
});
}
 
//+----------------------------------------------------------------------------------------------------------+
// Plier / déplier
function plierTout() {
$('.nom').children('.imagetteMoins').removeClass('imagetteMoins').addClass('imagettePlus');
$('.plus').css('display', 'none');
}
 
function deplierTout() {
$('.nom').children('.imagettePlus').removeClass('imagettePlus').addClass('imagetteMoins');
$('.plus').css('display', 'inline');
}
 
function gestionBiblio(parent) {
$('.nom').each(function () {
if ($(this).children('.plus').length == 0) {
html = $(this).html();
// La partie biblio commence au premier crochet ouvrant
// ou bien au span de la biblio à exclure
posCrochetGauche = html.indexOf('[');
posbiblioAExclure = html.indexOf('<span class="bib_excl">');
if(posCrochetGauche < 0 || (posbiblioAExclure > 0 && posbiblioAExclure < posCrochetGauche)) {
posCrochetGauche = posbiblioAExclure;
}
console.log(posCrochetGauche+" "+posbiblioAExclure);
if (posCrochetGauche > 0) {
nom = html.substr(0, posCrochetGauche);
biblio = html.substr(posCrochetGauche, html.length);
$(this).html(nom);
imagettePlus = document.createElement('div');
$(imagettePlus).addClass('imagettePlus');
$(this).prepend($(imagettePlus));
plus = document.createElement('span');
$(plus).addClass('plus');
$(plus).html(biblio);
$(plus).hide();
$(this).click(function(e) {
// test pour ne réagir que sur le clic sur le + ou -
// TODO: fusionner ce bout de code en doublon avec synthese.js
if($(e.target).hasClass("imagettePlus") || $(e.target).hasClass("imagetteMoins")) {
if (!$(this).children('.plus').is(':visible')) {
$(this).children('.imagettePlus').removeClass('imagettePlus').addClass('imagetteMoins');
$(this).children('.plus').css('display', 'inline');
} else {
$(this).children('.imagetteMoins').removeClass('imagetteMoins').addClass('imagettePlus');
$(this).children('.plus').css('display', 'none');
}
}
});
$(this).append($(plus));
}
}
});
}
 
function gererEvenementsPliage() {
$('.lien_tout_deplier').live('click', function() {
deplierTout();
});
$('.lien_tout_plier').live('click', function() {
plierTout();
});
gestionBiblio(document);
}
 
//+----------------------------------------------------------------------------------------------------------+
//Pop Up images
function ouvrirPopUpImg(event) {
event.preventDefault();
window.open($(this).attr('href'),"Photo_"+$(this).children("img").attr("data-num-image"),
'"'+'height='+event.data.h+',width='+event.data.w+',top='+event.data.t+',left='+event.data.l
+',toolbar='+event.data.toolbar+',menubar='+event.data.menubar +',location='
+event.data.location+',resizable='+event.data.resizable+',scrollbars='+event.data.scrollbars
+',status='+event.data.status+'"');
}
 
//+----------------------------------------------------------------------------------------------------------+
// Message de chargement pour les graphique écologie
function gererChargementGraphiqueEcologie() {
$('.ecologie_svg').addClass('chargement');
}
 
function gererAffichageLegendeEcologie() {
$('.voir').live('click', function() {
$(this).siblings('.legende_graphique').show();
$(this).siblings('.cacher').show();
$(this).hide();
});
$('.cacher').live('click', function() {
$(this).siblings('.legende_graphique').hide();
$(this).siblings('.voir').show();
$(this).hide();
});
}
 
 
//+----------------------------------------------------------------------------------------------------------+
// Initialisation
var fancyboxinitialise = false;
var param_popup_Coste = {h: 650, w: 550, t: 100, l: 100,
toolbar: 'no', menubar: 'no', location: 'no', resizable: 'yes', scrollbars: 'yes', status: 'no'};
 
var param_popup_Cel = {h: 750, w: 630, t: 100, l: 100,
toolbar: 'no', menubar: 'no', location: 'no', resizable: 'yes', scrollbars: 'yes', status: 'no'};
 
//Initialisation (uniquement sur la présence de la div bloc-fiche, qui contient la fiche eflore)
$(document).one('ficheSyntheseChargee', function() {
initialiserOnglets();
 
// TODO : devrait être .on() à la place de live()
$('.lien_popup').live('click',function(event) {
event.preventDefault();
$.fancybox(this,{
autoDimensions:false,
width:580
});
});
// TODO : devrait être .on() à la place de live()
$('.lien_popup.lien_metadonnees').live('click',function(event) {
event.preventDefault();
$.fancybox(this,{
autoDimensions:true
});
});
$('.lien-image-cel').live('click', param_popup_Cel , ouvrirPopUpImg);
$('.lien-image-coste').live('click', param_popup_Coste , ouvrirPopUpImg);
afficherOngletsPourNiveau();
 
gererEvenementsWiki();
gererEvenementsPliage();
$('a.lien_retour_synthese').click(function(event) {
$('#onglet_synthese a').click();
event.preventDefault();
});
$(window).resize(function() {
redimensionnerOnglets();
});
redimensionnerOnglets();
if($("#bloc-fiche").length > 0) {
// initialisation de l'url avec l'onglet par défaut ou bien
// celui qui a été explicitement demandé
mettreAJourUrl(permalienNumNom+"-"+onglet, onglet);
}
gererInteractionsPermaliens();
});
 
function ajouterEvenement(elementHtml, nomEvenement, functionCallBack) {
if(!!elementHtml && elementHtml != null) {
if(elementHtml.attachEvent) {// Internet Explorer
elementHtml.attachEvent("on" + nomEvenement, function() {functionCallBack.call(elementHtml);});
} else if(elementHtml.addEventListener) { // Firefox & autres
elementHtml.addEventListener(nomEvenement, functionCallBack, false);
}
}
}
 
$(document).one('ongletRepartitionCharge', function() {
var contRepObs = $(".conteneur_repartition_observations");
contRepObs.addClass("chargement_repartition");
// utilisation d'une fonction native car jQuery refuse d'ajouter un évènement load
// sur autre chose qu'une image
$('#repartition_observations').ready(function() {
ajouterEvenement(document.getElementById("repartition_observations"), "load", function() {
contRepObs.removeClass("chargement_repartition");
});
});
// lien "recalculer la carte de moissonnage"
$('#lien_recalculer_carte').click(function() {
var carteMoissonnageSvg = $('#repartition_observations'); // c'est plutôt "moissonnage" que "répartition" => squelette pourave power
var urlCarte = carteMoissonnageSvg.attr("data");
urlCarte += '&recalculer=1';
contRepObs.addClass("chargement_repartition");
carteMoissonnageSvg.attr("data", urlCarte);ajouterEvenement(document.getElementById("repartition_observations"), "load", function() {
contRepObs.removeClass("chargement_repartition");
});
return false;
});
});
 
$(document).one('ongletSyntheseCharge', function() {
lierModulesEtOnglets();
/* mouvement des blocs */
$(".colonne").sortable({
connectWith: ".colonne",
handle: $(".module").children('h3') // mouvement seulement sur les titres
});
$('.lien_ouverture_onglet_parent').live('click', function(event) {
event.preventDefault();
$(this).parents(".module").find("a.titreOnglet").click();
});
gererClicIllustrationsFiche();
gererEvenementsPliage();
});
 
// À la fin du chargement de l'onglet Illustrations
$(document).one('ongletIllustrationsCharge', function() {
$('a.lien-images-organes.fourni').live('click', afficherOngletOrgane);
$('a.lien-grande-image-organe').live('click', afficherGrandeImageOrgane);
// pour que la galerie soit ouverte par défaut sur le premier organe non vide
var premier = $('a.lien-images-organes.fourni').first().data('tag');
afficherOngletOrgane(null, premier);
$('a.lien_telechargement_image').live('click',function(e) {
if($(e.target).data('oneclicked')!='yes')
{
$(e.target).data('oneclicked','yes');
$(this).fancybox({
"type" : "iframe",
"autoDimensions" : false,
"width" : 800,
"height" : 405,
"titleShow" : false
}).click();
}
 
e.preventDefault();
return false;
});
});
 
// Affiche les n images ayant le plus de votes, pour l'organe $tag
function afficherOngletOrgane(e, tag) {
var onglets = $('div.onglet-organe'),
contenu = $('#galerie-organes-contenu'),
organeOnglet;
 
if (tag === undefined) {
tag = $(this).data('tag')
}
if ($(this).parent().hasClass('active')) { // replier
$(this).parent().removeClass('active')
contenu.hide();
return false;
}
 
onglets.each(function() {
organeOnglet = $(this).data('tag');
var li = $('a.lien-images-organes[data-tag="' + organeOnglet + '"]').parent();
if (organeOnglet == tag) {
$(this).show();
li.addClass('active');
} else {
$(this).hide();
li.removeClass('active');
}
});
 
contenu.show();
 
var premierLienGrandeImage = $('div.onglet-organe:visible').find('a.lien-grande-image-organe').first(),
grandeImage = $('#grande-image-organe').find('img');
premierLienGrandeImage.trigger('click');
grandeImage.show('fast');
 
return false;
}
 
// Affiche en grand sous les miniatures l'image d'organe sur laquelle on a cliqué
function afficherGrandeImageOrgane() {
var grandeImage = $('#grande-image-organe').find('img'),
source = $(this).find('img').attr('src');
source = obtenirUrlMoyenFormatIdImage($(this).data('id-image'));
// chargement image et lien popup
grandeImage.attr('src', source);
// important pour Pinterest et cie.
grandeImage.attr('alt', $(this).data('auteur') + ' - ' + $(this).data('titre'));
grandeImage.parent().attr('href',obtenirUrlGrandFormatIdImage($(this).data('id-image')));
// métadonnées
var metadonnees = ['id-image', 'titre', 'description', 'localisation', 'auteur'],
clef;
for (var i = 0; i < metadonnees.length; i++) {
clef = metadonnees[i];
var contenu = $(this).data(clef);
if(clef == 'id-image') {
contenu +=
'<a title="T\xE9l\xE9charger cette image" class="lien_telechargement_image" href="'+urlBaseWidget+'telechargement?id_image='+$(this).data(clef)+'">'+
'<img class="icone_action_ill" src="'+urlCssImages+'sauver.png" />'+
'</a>'+
'<a title="Voir plus d\'informations sur cette image (s\'ouvre dans un popup)" class="lien-image-cel" href="'+urlPopup+'?module=popup-illustrations&action=fiche&referentiel=bdtfx&id=' + $(this).data('id-image')+'">'+
'<img class="icone_action_ill" src="'+urlCssImages+'infos_image.png" />'+
'</a>'+
'<a title="Signaler une mauvaise identification ou en proposer une autre via l\'outil identiplante" class="signaler-mauvaise-identification" href="' + $(this).data('url-mauvaise-ident') + '" target="_blank">' +
'<img class="icone_action_ill" src="'+urlCssImages+'mauvaise_id.png">' +
'</a>';
}
$('#grande-image-legende-' + clef).html(contenu);
 
}
// valeurs génériques
$('#grande-image-legende-' + clef).html($(this).data(clef));
$('#grande-image-legende-date').html(formaterDateVersFrancais($(this).data('date')));
$('#grande-image-legende-id-destinataire').attr('href', urlPopup+'?module=popup-contact&action=form&referentiel='+REFERENTIEL+'&id_destinataire=' +
$(this).data('id-destinataire') + '&id_img=' + $(this).data('id-image'));
$('#grande-image-legende-id-destinataire').attr('title', "Envoyer un message \xE0 l'auteur \xE0 propos de cette image (n\xE9cessite d'\xEAtre identifi\xE9)");
$('#grande-image-legende-auteur').attr('href', 'http://tela-botanica.org/profil:' + $(this).data('id-destinataire'));
$('#grande-image-legende-auteur').attr('target', '_blank');
$('#grande-image-legende-auteur').attr('title', "Voir le profil de cet utilisateur (n\xE9cessite d'\xEAtre identifi\xE9)");
 
 
$('#grande-image-legende-id-image a.lien_telechargement_image').unbind('click.fb').fancybox({
"type" : "iframe",
"autoDimensions" : false,
"width" : 800,
"height" : 405,
"titleShow" : false
});
}
 
function obtenirUrlMoyenFormatIdImage(idImage) {
idImage = remplirChaineDebut(idImage, "0", 9);
return urlImagesOrganesMoyenFormatTpl.replace('{id_image}', idImage);
}
 
function obtenirUrlGrandFormatIdImage(idImage) {
idImage = remplirChaineDebut(idImage, "0", 9);
return urlImagesOrganesGrandFormatTpl.replace('{id_image}', idImage);
}
 
function remplirChaineDebut(chaine, remplissage, longueur) {
while(chaine.toString().length < longueur) {
chaine = remplissage.toString()+chaine.toString();
}
return chaine;
}
 
// transforme une date du type "2012-04-06" en "06 avril 2012"
function formaterDateVersFrancais(date) {
var mois = ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'],
amj_hms = date.split(' '),
amj = amj_hms[0].split('-');
return amj[2] + ' ' + mois[parseInt(amj[1]) - 1] + ' ' + amj[0];
}
 
function redimensionnerOnglets() {
var largeurTotale = $('#zone_onglets').width();
var largeurOnglets = 0;
var largeurDernierOnglet = 0;
$('#onglets li').each(function() {
largeurDernierOnglet = $(this).outerWidth();
largeurOnglets += $(this).outerWidth();
});
var espaceRestant = largeurTotale - largeurOnglets;
if(espaceRestant < largeurDernierOnglet) {
var pxALiberer = (largeurDernierOnglet - espaceRestant)/ $('#onglets li').size();
$('#onglets li').each(function() {
$(this).width($(this).width() - (pxALiberer - 4));
$(this).css("font-size", "0.9em");
});
} else {
$('#onglets li').each(function() {
$(this).css("width", "auto");
$(this).css("font-size", "1em");
});
}
}
 
// ouvre le popup de galerie lors d'un clic sur l'illustration dans la fiche synthèse
function gererClicIllustrationsFiche() {
$('.illustration_cel').live('click', function() {
var url_image = $(this).attr('src');
var titre = $('.nomenclature').first().text();
var url = urlPopup+"?module=popup-galerie&action=fiche&num_nom="+$(this).attr('data-num-nom')+"&titre="+encodeURIComponent(titre)+"&url_image="+encodeURIComponent(url_image)+"&referentiel="+REFERENTIEL;
//var url = urlPopup+"?module=popup-galerie-organes&action=fiche&num_nom="+$(this).attr('data-num-nom')+"&titre="+encodeURIComponent(titre)+"&url_image="+encodeURIComponent(url_image)+"&referentiel="+REFERENTIEL;
//alert(url);
//return false;
window.open(url, $(this).attr('data-num-nom'), 'directories=no,titlebar=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no, width='+(400)+', height='+(375));
});
$('#synthese_repartition img').click(function(event) {
// Ouverture de l'onglet répartition
event.preventDefault();
$(this).parents(".module").find("a.titreOnglet").click();
});
}
 
function ouvrirFenetreIllustrationFiche(url, titre, hauteur, largeur) {
var fenetre = window.open('_blank', '','directories=no,titlebar=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no, width='+(largeur+17)+', height='+(hauteur+17));
var tmp = fenetre.document;
tmp.write('<html><head><title>'+titre+'</title>');
tmp.write('</head><body>');
tmp.write('<p style="height='+hauteur+'px;text-align:center;line-height='+hauteur+'px;"><img id="image_agrandie" height="'+hauteur+'" width="'+largeur+'" style="vertical-align:middle;" src="'+url+'" /></p>');
tmp.write('</body></html>');
tmp.close();
}
 
 
// met à jour l'url dans la barre du navigateur ainsi que dans le permalien en bas
// de la fiche
function mettreAJourUrl(nouvelleUrl, etat) {
$('#permalien_num_nom').val(nouvelleUrl);
if (!!(window.history && window.history.pushState)) {
var currentState = window.history.state;
if (currentState != nouvelleUrl && !!etat) {
window.history.pushState(etat, "", nouvelleUrl);
}
}
}
 
function gererInteractionsPermaliens() {
$(".conteneur_permalien > a").each(function() {
var txt = '<input type="text" id="'+$(this).attr('id')+'" readonly="readonly" class="lien_externe" value="'+$(this).attr('href')+'">';
$(this).replaceWith(txt);
});
$(".conteneur_permalien > input").each(function() {
$(this).attr('size', $(this).val().length - 7);
});
$(".conteneur_permalien > input").hover(
function() {
$(this).select();
}, function() {
// rien à faire sur le mouseout
}
);
}
 
function gererTemplatesChargementALaDemande() {
$('.lien-ajax-tpl a.lien-ajax-tpl-chargement').live('click', function(e) {
if($(this).attr('data-loading') != "true") {
$(this).attr('data-loading', "true");
e.preventDefault();
urlTpl = $(this).attr('href');
$(this).hide();
thisElementParent = $(this).parent();
thisElementParent.append("<div class='tab-chargement'>Chargement des informations...</div>");
$.get(urlTpl, function( data ) {
thisElementParent.replaceWith( data );
});
return false;
}
});
}
 
$(document).ajaxStop(function() {
gererChargementGraphiqueEcologie();
gererAffichageLegendeEcologie();
gererTemplatesChargementALaDemande();
if (document.implementation.hasFeature('http://www.w3.org/TR/SVG11/feature#BasicStructure', '1.1') == false) {
$('.svg').each(function() {
alt = $(this).attr('alt');
img = document.createElement('img');
img.src = alt;
$(this).replaceWith(img);
});
}
});
 
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/tags/v5.10-vilmorin/tests/metier/EfloreTest.php
New file
0,0 → 1,20
<?php
require_once dirname(__FILE__).'/../ConsultationEflorePhpUnit.php';
 
class EfloreTest extends ConsultationEflorePhpUnit {
public function testFormulerUrl() {
$ressources = array('bdtfx', 'noms');
$parametres = array('masque' => 'acer', 'recherche' => 'stricte', 'ns.format' => 'htm');
$url = $this->creerUrl($ressources, $parametres);
$eflore = $this->getMock('Eflore');
$formaterUrl = self::getMethodeProtegee($eflore, 'formaterUrl');
$tpl = ConsultationEflorePhpUnit::URL_API . '/{projet}/noms?masque={valeur}&recherche={type}&ns.format=htm';
$param = array('projet' => 'bdtfx' ,'valeur' => 'acer', 'type' => 'stricte');
$urlf = $formaterUrl->invoke($eflore, $tpl, $param);
$this->assertEquals($url, $urlf);
}
}
?>
/tags/v5.10-vilmorin/tests/metier/NomsTest.php
New file
0,0 → 1,60
<?php
require_once dirname(__FILE__).'/../ConsultationEflorePhpUnit.php';
 
class NomsTest extends ConsultationEflorePhpUnit {
public function testRechercheEtendue() {
Registre::set('parametres.referentiel', 'bdtfx');
Config::charger(CONFIG_DIR . '/config.ini');
$noms = new Noms();
$resultats = $noms->getRechercheEtendue('aceras');
$this->assertNotEmpty($resultats);
$this->assertEquals('15', $resultats['entete']['total']);
$this->assertNotEmpty($resultats['resultat']['243']);
$this->assertEquals('Aceras hircinum', $resultats['resultat']['243']['nom_sci']);
$this->assertArrayNotHasKey('nom_retenu.id', $resultats['resultat']['243']);
$this->assertArrayNotHasKey('auteur', $resultats['resultat']['243']);
$this->assertArrayNotHasKey('annee', $resultats['resultat']['243']);
$this->assertArrayNotHasKey('biblio_origine', $resultats['resultat']['243']);
}
public function testRechercheEtendueDetermination() {
Registre::set('parametres.referentiel', 'bdtfx');
Config::charger(CONFIG_DIR . '/config.ini');
$noms = new Noms();
$resultats = $noms->getRechercheEtendue('aceras', 'determination');
$this->assertNotEmpty($resultats);
$this->assertEquals('15', $resultats['entete']['total']);
$this->assertNotEmpty($resultats['resultat']['243']);
$this->assertEquals('Aceras hircinum', $resultats['resultat']['243']['nom_sci']);
$this->assertEquals('75170', $resultats['resultat']['243']['nom_retenu.id']);
$this->assertArrayNotHasKey('auteur', $resultats['resultat']['243']);
$this->assertArrayNotHasKey('annee', $resultats['resultat']['243']);
$this->assertArrayNotHasKey('biblio_origine', $resultats['resultat']['243']);
}
public function testRechercheEtendueDecompo() {
Registre::set('parametres.referentiel', 'bdtfx');
Config::charger(CONFIG_DIR . '/config.ini');
$noms = new Noms();
$resultats = $noms->getRechercheEtendue('aceras', 'decompo');
$this->assertNotEmpty($resultats);
$this->assertEquals('15', $resultats['entete']['total']);
$this->assertNotEmpty($resultats['resultat']['243']);
$this->assertEquals('Aceras hircinum', $resultats['resultat']['243']['nom_sci']);
$this->assertArrayNotHasKey('nom_retenu.id', $resultats['resultat']['243']);
$this->assertArrayHasKey('auteur', $resultats['resultat']['243']);
$this->assertArrayHasKey('annee', $resultats['resultat']['243']);
$this->assertArrayHasKey('biblio_origine', $resultats['resultat']['243']);
}
public function testRechercheFloue() {
Registre::set('parametres.referentiel', 'bdtfx');
Config::charger(CONFIG_DIR . '/config.ini');
$noms = new Noms();
$resultats = $noms->getRechercheFloue('aceras');
$this->assertNotEmpty($resultats);
$this->assertEquals('27', $resultats['entete']['total']);
}
}
?>
/tags/v5.10-vilmorin/tests/metier/TaxonsTest.php
New file
0,0 → 1,68
<?php
require_once dirname(__FILE__).'/../ConsultationEflorePhpUnit.php';
 
class TaxonsTest extends ConsultationEflorePhpUnit {
public function testStatsInitialesFamille() {
Registre::set('parametres.referentiel', 'bdtfx');
Config::charger(CONFIG_DIR . '/config.ini');
$noms = new Taxons();
$resultats = $noms->getStatsInitialesFamille();
$this->assertNotEmpty($resultats);
// bdtfx v2
$this->assertEquals('25', $resultats['A']);
}
public function testStatsInitialesGenre() {
Registre::set('parametres.referentiel', 'bdtfx');
Config::charger(CONFIG_DIR . '/config.ini');
$noms = new Taxons();
$resultats = $noms->getStatsInitialesGenre();
$this->assertNotEmpty($resultats);
$this->assertEquals('9', $resultats['U']);
}
public function testListeFamilleParInitiale() {
Registre::set('parametres.referentiel', 'bdtfx');
Config::charger(CONFIG_DIR . '/config.ini');
$noms = new Taxons();
$resultats = $noms->getListeFamilleParInitiale('U');
$this->assertNotEmpty($resultats);
$this->assertCount(2, $resultats);
}
public function testListeGenreParInitiale() {
Registre::set('parametres.referentiel', 'bdtfx');
Config::charger(CONFIG_DIR . '/config.ini');
$noms = new Taxons();
$resultats = $noms->getListeGenreParInitiale('U');
$this->assertNotEmpty($resultats);
$this->assertNotEmpty($resultats[84640]);
$this->assertCount(9, $resultats);
}
public function testRechercheEtendue() {
Registre::set('parametres.referentiel', 'bdtfx');
Config::charger(CONFIG_DIR . '/config.ini');
$noms = new Taxons();
$resultats = $noms->getRechercheEtendue('acer');
$this->assertNotEmpty($resultats);
$this->assertEquals('49', $resultats['entete']['total']);
}
 
/*
équivalent de:
SELECT count(num_nom) FROM bdtfx_v1_01 WHERE num_nom = num_nom_retenu AND (( SOUNDEX(nom_sci) = SOUNDEX('aceras')) OR ( SOUNDEX(REVERSE(nom_sci)) = SOUNDEX(REVERSE('aceras')))) LIMIT 0, 100;
~/projets/services/modules/0.1/bdtfx/Taxons.php:275
*/
public function testRechercheFloue() {
Registre::set('parametres.referentiel', 'bdtfx');
Config::charger(CONFIG_DIR . '/config.ini');
$noms = new Taxons();
$resultats = $noms->getRechercheFloue('aceras');
$this->assertNotEmpty($resultats);
$this->assertEquals('15', $resultats['entete']['total']);
}
}
?>
/tags/v5.10-vilmorin/tests/metier/NomsVernaculairesTest.php
New file
0,0 → 1,33
<?php
require_once dirname(__FILE__).'/../ConsultationEflorePhpUnit.php';
 
class NomsVernaculairesTest extends ConsultationEflorePhpUnit {
public function testRechercheEtendue() {
Registre::set('parametres.referentiel', 'nvjfl');
Config::charger(CONFIG_DIR . '/config.ini');
$noms = new NomsVernaculaires();
$resultats = $noms->getRechercheEtendue('abricotier');
$this->assertNotEmpty($resultats);
$this->assertEquals('3', $resultats['entete']['total']);
}
public function testRechercheEtendueDetermination() {
Registre::set('parametres.referentiel', 'nvjfl');
Config::charger(CONFIG_DIR . '/config.ini');
$noms = new NomsVernaculaires();
$resultats = $noms->getRechercheEtendue('abricotier', 'determination');
$this->assertNotEmpty($resultats);
$this->assertEquals('3', $resultats['entete']['total']);
}
public function testRechercheFloue() {
Registre::set('parametres.referentiel', 'nvjfl');
Config::charger(CONFIG_DIR . '/config.ini');
$noms = new NomsVernaculaires();
$resultats = $noms->getRechercheFloue('abricotier');
$this->assertNotEmpty($resultats);
$this->assertEquals('1', $resultats['entete']['total']);
}
}
?>
/tags/v5.10-vilmorin/tests/modules/resultat/resultats.json
New file
0,0 → 1,130
{"eritrichium":{
"entete":
{"masque":"nom_sci=%eritrichium%","depart":0,"limite":"3000","total":"8"},
"resultat":{
"86402":
{"nom_sci":"Eritrichium Gaudin [1828]",
"href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/86402",
"retenu":"true",
"nom_retenu":"Eritrichium Gaudin [1828]",
"nom_retenu.id":"86402",
"nom_retenu.href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/86402",
"auteur":"Gaudin",
"annee":"1828",
"biblio_origine":null,"nom_addendum":null},
"75113":{
"nom_sci":"Eritrichium nanum (L.) Schrad. ex Gaudin [1828]",
"href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/75113",
"retenu":"true",
"nom_retenu":"Eritrichium nanum (L.) Schrad. ex Gaudin [1828]",
"nom_retenu.id":"75113",
"nom_retenu.href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/75113",
"auteur":"(L.) Schrad. ex Gaudin",
"annee":"1828",
"biblio_origine":"Fl. Helv., 2 : 57",
"nom_addendum":null},
"25025":{
"nom_sci":"Eritrichium mandonii Ball [1885]",
"href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/25025",
"retenu":"false",
"nom_retenu":"Amsinckia micrantha Suksd. [1900]",
"nom_retenu.id":"4208",
"nom_retenu.href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/4208",
"auteur":"Ball",
"annee":"1885",
"biblio_origine":"J. Linn. Soc., Bot., 22 : 51",
"nom_addendum":null},
"25024":{
"nom_sci":"Eritrichium hacquetii W.D.J.Koch [1838]",
"href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/25024",
"retenu":"false",
"nom_retenu":"Eritrichium nanum subsp. nanum",
"nom_retenu.id":"25026",
"nom_retenu.href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/25026",
"auteur":"W.D.J.Koch",
"annee":"1838",
"biblio_origine":"Syn. Fl. Germ. Helv., \u00e9d. 1 : 507",
"nom_addendum":null},
"25028":{
"nom_sci":"Eritrichium tergloviense (Hacq.) Putt. & Endl. [1843]",
"href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/25028",
"retenu":"false",
"nom_retenu":"Eritrichium nanum subsp. nanum",
"nom_retenu.id":"25026",
"nom_retenu.href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/25026",
"auteur":"(Hacq.) Putt. & Endl.",
"annee":"1843",
"biblio_origine":"in T.Nees ; Gen. Pl. Fl. Germ., tab. 429 fig. 27, 32",
"nom_addendum":null},
"25026":{
"nom_sci":"Eritrichium nanum subsp. nanum",
"href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/25026",
"retenu":"true",
"nom_retenu":"Eritrichium nanum subsp. nanum",
"nom_retenu.id":"25026",
"nom_retenu.href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/25026",
"auteur":null,"annee":null,"biblio_origine":null,"nom_addendum":null},
"103076":{
"nom_sci":"Eritrichium nanum subsp. jankae (Simonk.) J\u00e1v. [1887]",
"href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/103076",
"retenu":"true",
"nom_retenu":"Eritrichium nanum subsp. jankae (Simonk.) J\u00e1v. [1887]",
"nom_retenu.id":"103076",
"nom_retenu.href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/103076",
"auteur":"(Simonk.) J\u00e1v.",
"annee":"1887",
"biblio_origine":"Enum. Fl. Transsilv., 408",
"nom_addendum":null},
"25027":{
"nom_sci":"Eritrichium nanum var. leiospermum Rouy [1908]",
"href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/25027",
"retenu":"false",
"nom_retenu":"Eritrichium nanum subsp. nanum",
"nom_retenu.id":"25026",
"nom_retenu.href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/25026",
"auteur":"Rouy",
"annee":"1908",
"biblio_origine":"Fl. Fr., 10 : 582",
"nom_addendum":null}
}
},
"viola his":{
"entete":
{"masque":"nom_sci=%viola% his%","depart":0,"limite":"3000","total":"5"},
"resultat":{
"72291":{
"nom_sci":"Viola hispida Lapeyr. [1813]",
"href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/72291",
"retenu":"false",
"nom_retenu":"Viola bubanii Timb.-Lagr. [1852]",
"nom_retenu.id":"72117",
"nom_retenu.href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/72117"},
"72288":{
"nom_sci":"Viola hispida Lam. [1779]",
"href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/72288",
"retenu":"true",
"nom_retenu":"Viola hispida Lam. [1779]",
"nom_retenu.id":"72288",
"nom_retenu.href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/72288"},
"72341":{
"nom_sci":"Viola lutea var. hispida Nyman [1878]",
"href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/72341",
"retenu":"false",
"nom_retenu":"Viola bubanii Timb.-Lagr. [1852]",
"nom_retenu.id":"72117",
"nom_retenu.href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/72117"},
"72289":{"nom_sci":"Viola hispida subsp. cryana (Gillot) P.Fourn. [1928]",
"href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/72289",
"retenu":"false",
"nom_retenu":"Viola cryana Gillot [1878]",
"nom_retenu.id":"72201",
"nom_retenu.href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/72201"},
"72290":{"nom_sci":"Viola hispida subsp. rothomagensis P.Fourn. [1928]",
"href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/72290",
"retenu":"false",
"nom_retenu":"Viola hispida Lam. [1779]",
"nom_retenu.id":"72288",
"nom_retenu.href":"http:\/\/localhost\/service:eflore:0.1\/bdtfx\/noms\/72288"}
}
}
}
/tags/v5.10-vilmorin/tests/modules/resultat/ResultatFormateurInitialisation.php
New file
0,0 → 1,65
<?php
 
class ResultatFormateurInitialisation extends PHPUnit_Framework_TestCase {
 
public static function setUpBeforeClass() {
error_reporting(E_ALL);
 
// Enregistrement en première position des autoload de la méthode gérant les classes des services
spl_autoload_register(array(get_class(), 'chargerClasseAuto'));
}
 
public static function chargerClasseAuto($classe) {
$cheminBase = dirname(__FILE__).'/../../../';
$cheminBiblio = $cheminBase.'bibliotheque/';
$cheminModule = $cheminBase.'modules/resultat/';
$cheminModuleFormateurs = $cheminModule.'formateurs/';
$cheminModuleFormateursNs = $cheminModuleFormateurs.'nom_scientifique/';
$cheminModuleFormateursNv = $cheminModuleFormateurs.'nom_vernaculaire/';
$chemins = array($cheminBiblio, $cheminModule, $cheminModuleFormateurs,
$cheminModuleFormateursNs, $cheminModuleFormateursNv);
foreach ($chemins as $chemin) {
$chemin = $chemin.$classe.'.php';
if (file_exists($chemin)) {
require_once $chemin;
}
}
}
 
protected function getParametres($type, $masque) {
$parametres = new ParametresResultats();
$parametres->type = $type;
$parametres->masqueRecherche = $masque;
return $parametres;
}
 
protected function getResultatsPourMasque($masque) {
$resultatsJson = file_get_contents(dirname(__FILE__).'/resultats.json');
$resultats = json_decode($resultatsJson, true);
return $resultats[$masque];
}
 
protected function getSurligneur() {
return new Surligneur();
}
 
protected function getTrieur() {
return new Trieur();
}
 
protected function getAppUrls() {
$AppUrls = $this->getMock('AppUrls', array('obtenirUrlFiche', 'obtenirUrlBaseDossier'), array(), '', false);
$AppUrls->expects($this->any())
->method('obtenirUrlFiche')
->will($this->returnCallback(array($this, 'genererUrlFiche')));
$AppUrls->expects($this->any())
->method('obtenirUrlBaseDossier')
->will($this->returnValue(ConsultationEflorePhpUnit::TPL_URL_BASE_DOSSIER));
return $AppUrls;
}
 
public function genererUrlFiche($id) {
return sprintf(ConsultationEflorePhpUnit::TPL_URL_FICHE, $id);
}
}
?>
/tags/v5.10-vilmorin/tests/modules/resultat/formateurs/DeterminationFormateurTest.php
New file
0,0 → 1,107
<?php
include_once dirname(__FILE__).'/../ResultatFormateurInitialisation.php';
 
class DeterminationFormateurTest extends ResultatFormateurInitialisation {
 
public function testerFormater() {
$Formateur = $this->initialiserDeterminationFormateur();
 
$Formateur->formater();
$infos = $Formateur->getTplInfos();
 
$this->assertArrayHasKey('noms', $infos, print_r($infos, true));
foreach ($infos['noms'] as $id => $nom) {
$this->assertTrue(is_int($id), "L'id '$id' doit être un nombre entier.");
$this->assertCount(2, $nom, "Le nom doit avoir 2 paramètres : nomSciRetenu et UrlFiche");
$this->assertArrayHasKey('nomSciRetenu', $infos['noms'][$id], print_r($infos, true));
$this->assertArrayHasKey('urlFiche', $infos['noms'][$id], print_r($infos, true));
$urlFicheAttendue = sprintf(ConsultationEflorePhpUnit::TPL_URL_FICHE, $id);
$this->assertEquals($urlFicheAttendue, $infos['noms'][$id]['urlFiche'], print_r($infos, true));
}
$this->assertArrayHasKey('synonymes', $infos, print_r($infos, true));
foreach ($infos['synonymes'] as $idNomRetenu => $synonymes) {
foreach ($synonymes as $idSynonyme => $synonyme) {
$this->assertCount(3, $synonyme, print_r($infos, true));
$this->assertArrayHasKey('nn', $synonyme, print_r($infos, true));
$this->assertTrue(is_int($synonyme['nn']), "La valeur nn (num_nom) '{$synonyme['nn']}' doit être un nombre entier.");
$this->assertArrayHasKey('nomSci', $synonyme, print_r($infos, true));
$this->assertArrayHasKey('urlFiche', $synonyme, print_r($infos, true));
$urlSynoAttendue = sprintf(ConsultationEflorePhpUnit::TPL_URL_FICHE, $synonyme['nn']);
$this->assertEquals($urlSynoAttendue, $synonyme['urlFiche'], print_r($infos, true));
}
}
 
$this->assertArrayHasKey('nomsSansCorrespondance', $infos, print_r($infos, true));
$this->assertEmpty($infos['nomsSansCorrespondance']);
 
$this->assertArrayHasKey('imagesUrls', $infos, print_r($infos, true));
$this->assertTrue(is_array($infos['imagesUrls']), "'imagesUrls' doit être un tableau");
$this->assertArrayHasKey('72117', $infos['imagesUrls'], print_r($infos, true));
$this->assertArrayHasKey('72288', $infos['imagesUrls'], print_r($infos, true));
foreach ($infos['imagesUrls'] as $imgUrl) {
$this->assertTrue(is_array($imgUrl), "Chaque taxon doit avoir un tableau d'url d'images");
foreach ($imgUrl as $url) {
$this->assertRegExp('/^http:\/\/www\.tela-botanica\.org\/appli:cel-img:[0-9]{9}CS\.jpg$/', $url);
}
}
}
 
public function testerTrier() {
$Formateur = $this->initialiserDeterminationFormateur();
 
$Formateur->formater();
$Formateur->trier();
$infos = $Formateur->getTplInfos();
 
$this->assertArrayHasKey('noms', $infos, print_r($infos, true));
$ordreClesAttendu = array(72288, 72201, 72117);
$ordreClesTriees = array_keys($infos['noms']);
$this->assertEquals($ordreClesAttendu, $ordreClesTriees, print_r($ordreClesTriees, true));
}
 
public function testerSurligner() {
$Formateur = $this->initialiserDeterminationFormateur();
 
$Formateur->formater();
$Formateur->surligner();
$infos = $Formateur->getTplInfos();
 
$this->assertArrayHasKey('noms', $infos, print_r($infos, true));
foreach ($infos['noms'] as $id => $nom) {
$this->assertArrayHasKey($id, $infos['noms'], print_r($infos, true));
$this->assertArrayHasKey('nomSciRetenu', $infos['noms'][$id], print_r($infos, true));
$this->assertContains('<span class="surlignage">Viola</span>', $infos['noms'][$id]['nomSciRetenu'], print_r($infos, true));
 
}
}
 
private function initialiserDeterminationFormateur($masque = 'viola his') {
$parametres = $this->getParametres('determination', $masque);
$resultats = $this->getResultatsPourMasque($masque);
$surligneur = $this->getSurligneur();
$trieur = $this->getTrieur();
$appsUrls = $this->getAppUrls();
$images = $this->getImagesService();
return new DeterminationFormateur($parametres, $resultats, $surligneur, $trieur, $appsUrls, null, $images);
}
 
private function getImagesService() {
$retour = array(
'bdtfx.72117' => array(
'http://www.tela-botanica.org/appli:cel-img:000025491CS.jpg',
'http://www.tela-botanica.org/appli:cel-img:000025514CS.jpg',
'http://www.tela-botanica.org/appli:cel-img:000025520CS.jpg'),
'bdtfx.72288' => array(
'http://www.tela-botanica.org/appli:cel-img:000032710CS.jpg',
'http://www.tela-botanica.org/appli:cel-img:000032711CS.jpg',
'http://www.tela-botanica.org/appli:cel-img:000032712CS.jpg'));
 
$Images = $this->getMock('Images', array('getUrlsImagesParIdsNoms'), array(), '', false);
$Images->expects($this->any())
->method('getUrlsImagesParIdsNoms')
->will($this->returnValue($retour));
return $Images;
}
}
?>
/tags/v5.10-vilmorin/tests/modules/resultat/formateurs/RetenuFormateurTest.php
New file
0,0 → 1,63
<?php
include_once dirname(__FILE__).'/../ResultatFormateurInitialisation.php';
 
class RetenuFormateurTest extends ResultatFormateurInitialisation {
 
public function testerFormater() {
$RetenuFormateur = $this->initialiserRetenuFormateur();
$RetenuFormateur->formater();
$infos = $RetenuFormateur->getTplInfos();
 
$this->assertArrayHasKey('noms', $infos, $infos);
foreach ($infos['noms'] as $id => $nom) {
$this->assertTrue(is_int($id), "L'id '$id' doit être un nombre entier.");
$this->assertCount(3, $nom);
$this->assertArrayHasKey('nomSci', $infos['noms'][$id], $infos);
$this->assertArrayHasKey('retenu', $infos['noms'][$id], $infos);
$this->assertArrayHasKey('urlFiche', $infos['noms'][$id], $infos);
$this->assertEquals( sprintf(ConsultationEflorePhpUnit::TPL_URL_FICHE, $id), $infos['noms'][$id]['urlFiche'], $infos );
}
}
 
public function testerTrier() {
$RetenuFormateur = $this->initialiserRetenuFormateur();
$RetenuFormateur->formater();
$RetenuFormateur->trier();
$infos = $RetenuFormateur->getTplInfos();
 
$this->assertArrayHasKey('noms', $infos, $infos);
$ordreClesAttendu = array(72288, 72291, 72289, 72290, 72341);
$ordreClesTriees = array_keys($infos['noms']);
$this->assertEquals($ordreClesAttendu, $ordreClesTriees, $infos);
}
 
public function testerSurligner() {
$RetenuFormateur = $this->initialiserRetenuFormateur();
$RetenuFormateur->formater();
$RetenuFormateur->surligner();
$infos = $RetenuFormateur->getTplInfos();
 
$this->assertArrayHasKey('noms', $infos, $infos);
foreach ($infos['noms'] as $id => $nom) {
$this->assertArrayHasKey($id, $infos['noms'], $infos);
$this->assertArrayHasKey('nomSci', $infos['noms'][$id], $infos);
// fails because:
// svndiff -c 872 modules/resultat/formateurs/nom_scientifique/RetenuFormateur.php
// 'nom_sci' => 'nom_sci_complet'
// c'est à dire que les résultats passés au new RetenuFormateur() ci-dessous [= le fichier json],
// doivent disposer du nom_sci_complet afin d'être formattés
$this->assertContains('<span class="surlignage">Viola</span>', $infos['noms'][$id]['nomSci'], $infos);
$this->assertContains('<span class="surlignage">his</span>', $infos['noms'][$id]['nomSci'], $infos);
}
}
 
private function initialiserRetenuFormateur($masque = 'viola his') {
$parametres = $this->getParametres('retenu', $masque);
$resultats = $this->getResultatsPourMasque($masque);
$surligneur = $this->getSurligneur();
$trieur = $this->getTrieur();
$appsUrls = $this->getAppUrls();
return new RetenuFormateur($parametres, $resultats, $surligneur, $trieur, $appsUrls);
}
}
?>
/tags/v5.10-vilmorin/tests/modules/resultat/formateurs/DecompoFormateurTest.php
New file
0,0 → 1,68
<?php
include_once dirname(__FILE__).'/../ResultatFormateurInitialisation.php';
 
class DecompoFormateurTest extends ResultatFormateurInitialisation {
 
public function testerFormater() {
$formateur = $this->initialiserDecompoFormateur();
 
$formateur->formater();
$infos = $formateur->getTplInfos();
 
$this->assertArrayHasKey('noms', $infos, print_r($infos, true));
foreach ($infos['noms'] as $id => $nom) {
$this->assertTrue(is_int($id), "L'id '$id' doit être un nombre entier.");
$this->assertCount(8, $nom);
$this->assertArrayHasKey('nomSci', $nom, print_r($infos, true));
$this->assertFalse(empty($nom['nomSci']), print_r($infos, true));
$this->assertArrayHasKey('retenu', $nom, print_r($infos, true));
$this->assertArrayHasKey('auteur', $nom, print_r($infos, true));
$this->assertArrayHasKey('annee', $nom, print_r($infos, true));
$this->assertArrayHasKey('biblio', $nom, print_r($infos, true));
$this->assertArrayHasKey('addendum', $nom, print_r($infos, true));
$this->assertArrayHasKey('nn', $nom, print_r($infos, true));
$this->assertTrue(is_int($nom['nn']), "nn '{$nom['nn']}' doit être un nombre entier.");
$this->assertArrayHasKey('urlFiche', $nom, print_r($infos, true));
$urlFicheAttendue = sprintf(ConsultationEflorePhpUnit::TPL_URL_FICHE, $id);
$this->assertEquals($urlFicheAttendue, $nom['urlFiche'], print_r($infos, true));
}
}
 
public function testerTrier() {
$formateur = $this->initialiserDecompoFormateur();
 
$formateur->formater();
$formateur->trier();
$infos = $formateur->getTplInfos();
 
$this->assertArrayHasKey('noms', $infos, print_r($infos, true));
$ordreClesAttendu = array(86402, 25024, 25025, 75113, 103076, 25026, 25027, 25028);
$ordreClesTriees = array_keys($infos['noms']);
$this->assertEquals($ordreClesAttendu, $ordreClesTriees, print_r($ordreClesTriees, true));
}
 
public function testerSurligner() {
$formateur = $this->initialiserDecompoFormateur();
 
$formateur->formater();
$formateur->surligner();
$infos = $formateur->getTplInfos();
 
$this->assertArrayHasKey('noms', $infos, print_r($infos, true));
foreach ($infos['noms'] as $id => $nom) {
$this->assertArrayHasKey($id, $infos['noms'], print_r($infos, true));
$this->assertArrayHasKey('nomSci', $infos['noms'][$id], print_r($infos, true));
$this->assertContains('<span class="surlignage">Eritrichium</span>', $infos['noms'][$id]['nomSci'], print_r($infos, true));
}
}
 
private function initialiserDecompoFormateur($masque = 'eritrichium') {
$parametres = $this->getParametres('decompo', $masque);
$resultats = $this->getResultatsPourMasque($masque);
$surligneur = $this->getSurligneur();
$trieur = $this->getTrieur();
$appsUrls = $this->getAppUrls();
return new DecompoFormateur($parametres, $resultats, $surligneur, $trieur, $appsUrls);
}
}
?>
/tags/v5.10-vilmorin/tests/modules/resultat/formateurs/AlphabFormateurTest.php
New file
0,0 → 1,62
<?php
include_once dirname(__FILE__).'/../ResultatFormateurInitialisation.php';
 
class AlphabFormateurTest extends ResultatFormateurInitialisation {
 
public function testerFormater() {
$AlphabFormateur = $this->initialiserAlphabFormateur();
 
$AlphabFormateur->formater();
$infos = $AlphabFormateur->getTplInfos();
 
$this->assertArrayHasKey('noms', $infos, print_r($infos, true));
foreach ($infos['noms'] as $id => $nom) {
$this->assertTrue(is_int($id), "L'id '$id' doit être un nombre entier.");
$this->assertCount(3, $nom);
$this->assertArrayHasKey('nomSci', $infos['noms'][$id], print_r($infos, true));
$this->assertArrayHasKey('retenu', $infos['noms'][$id], print_r($infos, true));
$this->assertArrayHasKey('urlFiche', $infos['noms'][$id], print_r($infos, true));
$urlFicheAttendue = sprintf(ConsultationEflorePhpUnit::TPL_URL_FICHE, $id);
$this->assertEquals($urlFicheAttendue, $infos['noms'][$id]['urlFiche'], print_r($infos, true));
}
}
 
public function testerTrier() {
$AlphabFormateur = $this->initialiserAlphabFormateur();
 
$AlphabFormateur->formater();
$AlphabFormateur->trier();
$infos = $AlphabFormateur->getTplInfos();
 
$this->assertArrayHasKey('noms', $infos, print_r($infos, true));
$ordreClesAttendu = array(72288, 72291, 72289, 72290, 72341);
$ordreClesTriees = array_keys($infos['noms']);
$this->assertEquals($ordreClesAttendu, $ordreClesTriees, print_r($ordreClesTriees, true));
}
 
public function testerSurligner() {
$AlphabFormateur = $this->initialiserAlphabFormateur();
 
$AlphabFormateur->formater();
$AlphabFormateur->surligner();
$infos = $AlphabFormateur->getTplInfos();
 
$this->assertArrayHasKey('noms', $infos, print_r($infos, true));
foreach ($infos['noms'] as $id => $nom) {
$this->assertArrayHasKey($id, $infos['noms'], print_r($infos, true));
$this->assertArrayHasKey('nomSci', $infos['noms'][$id], print_r($infos, true));
$this->assertContains('<span class="surlignage">Viola</span>', $infos['noms'][$id]['nomSci'], print_r($infos, true));
$this->assertContains('<span class="surlignage">his</span>', $infos['noms'][$id]['nomSci'], print_r($infos, true));
}
}
 
private function initialiserAlphabFormateur($masque = 'viola his') {
$parametres = $this->getParametres('alphab', $masque);
$resultats = $this->getResultatsPourMasque($masque);
$surligneur = $this->getSurligneur();
$trieur = $this->getTrieur();
$appsUrls = $this->getAppUrls();
return new AlphabFormateur($parametres, $resultats, $surligneur, $trieur, $appsUrls);
}
}
?>
/tags/v5.10-vilmorin/tests/modules/resultat/formateurs/DeterminationVernaFormateurTest.php
New file
0,0 → 1,132
<?php
include_once dirname(__FILE__).'/../ResultatFormateurInitialisation.php';
 
class DeterminationVernaFormateurTest extends ResultatFormateurInitialisation {
 
public function testerFormater() {
$Formateur = $this->initialiserDeterminationVernaFormateur();
 
$Formateur->formater();
$infos = $Formateur->getTplInfos();
 
$this->assertArrayHasKey('noms', $infos, print_r($infos, true));
foreach ($infos['noms'] as $id => $nom) {
$this->assertTrue(is_int($id), "L'id '$id' doit être un nombre entier.");
$this->assertCount(3, $nom);
$this->assertArrayHasKey('nomSci', $infos['noms'][$id], print_r($infos, true));
$this->assertArrayHasKey('urlFiche', $infos['noms'][$id], print_r($infos, true));
$urlFicheAttendue = sprintf(ConsultationEflorePhpUnit::TPL_URL_FICHE, $id);
$this->assertEquals($urlFicheAttendue, $infos['noms'][$id]['urlFiche'], print_r($infos, true));
if (array_key_exists('nomVerna', $infos['noms'][$id])) {
$nomsVernas = $infos['noms'][$id]['nomVerna'];
$this->assertTrue(is_array($nomsVernas));
foreach ($nomsVernas as $nomVerna) {
$this->assertCount(2, $nomVerna, print_r($nomVerna, true));
$this->assertArrayHasKey('nn', $nomVerna, print_r($nomVerna, true));
$this->assertTrue(is_int($nomVerna['nn']), "La valeur nn (num_nom) '{$nomVerna['nn']}' doit être un nombre entier.");
$this->assertArrayHasKey('nom_vernaculaire', $nomVerna, print_r($nomVerna, true));
}
}
}
 
$this->assertArrayHasKey('imagesUrls', $infos, print_r($infos, true));
$this->assertTrue(is_array($infos['imagesUrls']), "'imagesUrls' doit être un tableau");
$this->assertArrayHasKey('51299', $infos['imagesUrls'], print_r($infos['imagesUrls'], true));
$this->assertArrayHasKey('18669', $infos['imagesUrls'], print_r($infos['imagesUrls'], true));
foreach ($infos['imagesUrls'] as $imgUrl) {
$this->assertTrue(is_array($imgUrl), "Chaque taxon doit avoir un tableau d'url d'images");
foreach ($imgUrl as $url) {
$this->assertRegExp('/^http:\/\/www\.tela-botanica\.org\/appli:cel-img:[0-9]{9}CS\.jpg$/', $url);
}
}
}
public function testerSurligner() {
$Formateur = $this->initialiserDeterminationVernaFormateur();
 
$Formateur->formater();
$Formateur->surligner();
$infos = $Formateur->getTplInfos();
 
$this->assertArrayHasKey('noms', $infos, print_r($infos, true));
foreach ($infos['noms'] as $nom) {
foreach ($nom['nomVerna'] as $id => $nomVerna) {
$this->assertArrayHasKey('nom_vernaculaire', $nomVerna, print_r($nomVerna, true));
$this->assertContains('<span class="surlignage">Muguet</span>', $nomVerna['nom_vernaculaire'], print_r($infos, true));
}
}
}
 
private function initialiserDeterminationVernaFormateur($masque = 'Muguet') {
$parametres = $this->getParametres('determination', $masque);
$resultats = $this->getResultatsPourMasque($masque);
$surligneur = $this->getSurligneur();
$trieur = $this->getTrieur();
$appsUrls = $this->getAppUrls();
$images = $this->getImagesService();
return new DeterminationVernaFormateur($parametres, $resultats, $surligneur, $trieur, $appsUrls, null, $images);
}
protected function getResultatsPourMasque($masque) {
$resultatsJson = file_get_contents(dirname(__FILE__).'/../resultats_verna.json');
$resultats = json_decode($resultatsJson, true);
return $resultats[$masque];
}
 
private function getImagesService() {
$retour = Array (
'bdtfx.51299' => Array (
'0' => 'http://www.tela-botanica.org/appli:cel-img:000007275CS.jpg',
'1' => 'http://www.tela-botanica.org/appli:cel-img:000007276CS.jpg',
'2' => 'http://www.tela-botanica.org/appli:cel-img:000007277CS.jpg',
'3' => 'http://www.tela-botanica.org/appli:cel-img:000007278CS.jpg',
'4' => 'http://www.tela-botanica.org/appli:cel-img:000007279CS.jpg',
'5' => 'http://www.tela-botanica.org/appli:cel-img:000021076CS.jpg' ),
'bdtfx.18669' => Array (
'0' => 'http://www.tela-botanica.org/appli:cel-img:000009085CS.jpg',
'1' => 'http://www.tela-botanica.org/appli:cel-img:000009086CS.jpg',
'2' => 'http://www.tela-botanica.org/appli:cel-img:000018652CS.jpg',
'3' => 'http://www.tela-botanica.org/appli:cel-img:000018757CS.jpg',
'4' => 'http://www.tela-botanica.org/appli:cel-img:000018862CS.jpg',
'5' => 'http://www.tela-botanica.org/appli:cel-img:000018865CS.jpg',
'6' => 'http://www.tela-botanica.org/appli:cel-img:000032690CS.jpg' ),
'bdtfx.29125' => Array (
'0' => 'http://www.tela-botanica.org/appli:cel-img:000010721CS.jpg',
'1' => 'http://www.tela-botanica.org/appli:cel-img:000010722CS.jpg',
'2' => 'http://www.tela-botanica.org/appli:cel-img:000013077CS.jpg',
'3' => 'http://www.tela-botanica.org/appli:cel-img:000024697CS.jpg',
'4' => 'http://www.tela-botanica.org/appli:cel-img:000024719CS.jpg',
'5' => 'http://www.tela-botanica.org/appli:cel-img:000024729CS.jpg' ),
'bdtfx.7310' => Array (
'0' => 'http://www.tela-botanica.org/appli:cel-img:000013740CS.jpg',
'1' => 'http://www.tela-botanica.org/appli:cel-img:000013741CS.jpg' ),
'bdtfx.18716' => Array (
'0' => 'http://www.tela-botanica.org/appli:cel-img:000021069CS.jpg',
'1' => 'http://www.tela-botanica.org/appli:cel-img:000021071CS.jpg',
'2' => 'http://www.tela-botanica.org/appli:cel-img:000033834CS.jpg',
'3' => 'http://www.tela-botanica.org/appli:cel-img:000033835CS.jpg' ),
'bdtfx.51311' => Array (
'0' => 'http://www.tela-botanica.org/appli:cel-img:000021070CS.jpg',
'1' => 'http://www.tela-botanica.org/appli:cel-img:000021078CS.jpg' ),
'bdtfx.51306' => Array (
'0' => 'http://www.tela-botanica.org/appli:cel-img:000021072CS.jpg',
'1' => 'http://www.tela-botanica.org/appli:cel-img:000021075CS.jpg',
'2' => 'http://www.tela-botanica.org/appli:cel-img:000021080CS.jpg' ),
'bdtfx.40679' => Array (
'0' => 'http://www.tela-botanica.org/appli:cel-img:000021073CS.jpg',
'1' => 'http://www.tela-botanica.org/appli:cel-img:000021074CS.jpg',
'2' => 'http://www.tela-botanica.org/appli:cel-img:000021077CS.jpg',
'3' => 'http://www.tela-botanica.org/appli:cel-img:000021079CS.jpg' ),
'bdtfx.60062' => Array (
'0' => 'http://www.tela-botanica.org/appli:cel-img:000025283CS.jpg',
'1' => 'http://www.tela-botanica.org/appli:cel-img:000025308CS.jpg',
'2' => 'http://www.tela-botanica.org/appli:cel-img:000025309CS.jpg' ) );
 
$Images = $this->getMock('Images', array('getUrlsImagesParIdsNoms'), array(), '', false);
$Images->expects($this->any())
->method('getUrlsImagesParIdsNoms')
->will($this->returnValue($retour));
return $Images;
}
}
?>
/tags/v5.10-vilmorin/tests/modules/resultat/resultats_verna.json
New file
0,0 → 1,102
{"Muguet":{
"entete":
{"masque":"nom_sci=%viola% his%","depart":0,"limite":"3000","total":"5"},
"resultat":{
"-1917563017":{
"id":20687,
"nom_vernaculaire":"Grand Muguet",
"langue.code":"fra",
"taxon.code":"bdtfx.nt:6365",
"taxon":"Polygonatum odoratum", "nom_retenu.code":"bdtfx.nn:51306",
"href":"http://localhost/service:eflore:0.1/nvjfl/noms-vernaculaires/20687" },
"1229943434":{
"id":30439,
"nom_vernaculaire":"Muguet",
"langue.code":"fra",
"taxon.code":"bdtfx.nt:6297",
"taxon":"Convallaria majalis",
"nom_retenu.code":"bdtfx.nn:18716",
"href":"http://localhost/service:eflore:0.1/nvjfl/noms-vernaculaires/30439"},
"-1660626391": {
"id":30440,
"nom_vernaculaire":"Muguet bleu",
"langue.code":"fra",
"taxon.code":"bdtfx.nt:6328",
"taxon":"Hyacinthus orientalis",
"nom_retenu.code":"bdtfx.nn:35025",
"href":"http://localhost/service:eflore:0.1/nvjfl/noms-vernaculaires/30440" },
"1931161398": {
"id":30441,
"nom_vernaculaire":"Muguet de mai",
"langue.code":"fra",
"taxon.code":"bdtfx.nt:6297",
"taxon":"Convallaria majalis",
"nom_retenu.code":"bdtfx.nn:18716",
"href":"http://localhost/service:eflore:0.1/nvjfl/noms-vernaculaires/30441" },
"-407777153": {
"id":30442,
"nom_vernaculaire":"Muguet de serpent",
"langue.code":"fra",
"taxon.code":"bdtfx.nt:6364",
"taxon":"Polygonatum multiflorum",
"nom_retenu.code":"bdtfx.nn:51299",
"href":"http://localhost/service:eflore:0.1/nvjfl/noms-vernaculaires/30442" },
"1616101460": {
"id":30443,
"nom_vernaculaire":"Muguet des pampas",
"langue.code":"fra",
"taxon.code":"bdtfx.nt:5565",
"taxon":"Salpichroa origanifolia",
"nom_retenu.code":"bdtfx.nn:60062",
"href":"http://localhost/service:eflore:0.1/nvjfl/noms-vernaculaires/30443"},
"1431513208": {
"id":30444,
"nom_vernaculaire":"Muguet du Japon",
"langue.code":"fra",
"taxon.code":"bdtfx.nt:12833",
"taxon":"Ophiopogon japonicum",
"nom_retenu.code":"bdtfx.nn:45037",
"href":"http://localhost/service:eflore:0.1/nvjfl/noms-vernaculaires/30444" },
"-1635498299": {
"id":30445,
"nom_vernaculaire":"Muguet verticillé",
"langue.code":"fra",
"taxon.code":"bdtfx.nt:6366",
"taxon":"Polygonatum verticillatum",
"nom_retenu.code":"bdtfx.nn:51311",
"href":"http://localhost/service:eflore:0.1/nvjfl/noms-vernaculaires/30445" },
"1293250210": {
"id":30446,
"nom_vernaculaire":"Muguette",
"langue.code":"fra",
"taxon.code":"bdtfx.nt:145",
"taxon":"Conopodium majus",
"nom_retenu.code":"bdtfx.nn:18669",
"href":"http://localhost/service:eflore:0.1/nvjfl/noms-vernaculaires/30446" },
"-2120091757": {
"id":33933,
"nom_vernaculaire":"Petit Muguet",
"langue.code":"fra",
"taxon.code":"bdtfx.nt:5062",
"taxon":"Galium odoratum",
"nom_retenu.code":"bdtfx.nn:29125",
"href":"http://localhost/service:eflore:0.1/nvjfl/noms-vernaculaires/33933" },
"-1817798952": {
"id":33933,
"nom_vernaculaire":"Petit Muguet",
"langue.code":"fra",
"taxon.code":"bdtfx.nt:6337",
"taxon":"Maianthemum bifolium",
"nom_retenu.code":"bdtfx.nn:40679",
"href":"http://localhost/service:eflore:0.1/nvjfl/noms-vernaculaires/33933" },
"500077561": {
"id":33934,
"nom_vernaculaire":"Petit Muguet à deux feuilles",
"langue.code":"fra",
"taxon.code":"bdtfx.nt:6337",
"taxon":"Maianthemum bifolium",
"nom_retenu.code":"bdtfx.nn:40679",
"href":"http://localhost/service:eflore:0.1/nvjfl/noms-vernaculaires/33934" }
}
}
}
/tags/v5.10-vilmorin/tests/modules/RechercheSimpleTest.php
New file
0,0 → 1,41
<?php
require_once dirname(__FILE__).'/../ConsultationEflorePhpUnit.php';
 
class RechercheSimpleTest extends ConsultationEflorePhpUnit {
public function testMoteurRechercheSimple() {
Config::charger(CONFIG_DIR . '/bdtfx.ini');
Registre::set('eFlore.urlBase', new Url(Config::get('base_url_application_index')));
Registre::set('parametres.referentiel', 'bdtfx');
 
$recherche = new RechercheSimple();
$sortie = $recherche->executerFormulaireNom();
 
$this->assertNotEmpty($sortie, print_r($sortie, true));
$this->assertContains('<input id="type-nom-scientifique" name="type_nom" type="hidden" value="nom_scientifique" />', $sortie, print_r($sortie,true));
$this->assertContains('<input id="eflore_nomenclature_referentiel" name="referentiel" type="hidden" value="bdtfx" />', $sortie);
$this->assertContains('<input id="eflore_nomenclature_action" name="action" type="hidden" value="rechercheSimple" />', $sortie);
$this->assertNotContains('<input id="type_nom_vernaculaire" name="type_nom" value="nom_vernaculaire" type="radio" checked="checked" />', $sortie);
}
 
public function testMoteurRechercheSimpleForm() {
Config::charger(CONFIG_DIR . '/bdtfx.ini');
Registre::set('eFlore.urlBase', new Url(Config::get('base_url_application_index')));
Registre::set('parametres.referentiel', 'bdtfx');
$donnees['type_nom'] = 'nom_vernaculaire';
$donnees['nom'] = 'acer';
$donnees['nom_verna'] = 'true';
 
$recherche = new RechercheSimple();
$sortie = $recherche->executerFormulaireNom($donnees);
 
$this->assertNotEmpty($sortie, print_r($sortie, true));
$this->assertNotContains('<input id="type-nom-scientifique" name="type_nom" type="hidden" value="nom_scientifique" />', $sortie);
$this->assertContains('<input id="eflore_nomenclature_referentiel" name="referentiel" type="hidden" value="bdtfx" />', $sortie);
$this->assertContains('<input id="eflore_nomenclature_action" name="action" type="hidden" value="rechercheSimple" />', $sortie);
$this->assertContains('<input id="type_nom_vernaculaire" name="type_nom" value="nom_vernaculaire" type="radio" checked="checked" />', $sortie);
$this->assertContains('<input id="nom" name="nom" class="champ" size="30" maxlength="255" type="text" value="acer" />', $sortie);
 
}
}
?>
/tags/v5.10-vilmorin/tests/modules/NiveauTest.php
New file
0,0 → 1,33
<?php
require_once dirname(__FILE__).'/../ConsultationEflorePhpUnit.php';
 
class NiveauTest extends ConsultationEflorePhpUnit {
 
public function testAfficherNiveau() {
$_GET['referentiel'] = 'bdtfx';
$_GET['module'] = 'recherche';
$_GET['action'] = 'rechercheSimple';
$_GET['type_nom'] = 'nom_scientifique';
$_GET['nom'] = 'acer+mons';
Registre::set('parametres.niveau', '2');
$niveau = new Niveau($this->getAppUrls());
$sortie = $niveau->afficherNiveau();
 
$this->assertNotEmpty($sortie, $sortie);
$this->assertNotContains(' <input id="niveau_2" name="niveau" value="2" type="radio" checked="checked" />', $sortie);
$this->assertContains('<input id="eflore_niveau_type_nom" name="type_nom" type="hidden" value="nom_scientifique" />', $sortie, print_r($sortie,true));
$this->assertContains('<input id="eflore_niveau_referentiel" name="referentiel" type="hidden" value="bdtfx" />', $sortie);
$this->assertContains('<input id="eflore_niveau_action" name="action" type="hidden" value="rechercheSimple" />', $sortie);
$this->assertContains('<input id="eflore_niveau_nom" name="nom" type="hidden" value="acer+mons" />', $sortie);
}
protected function getAppUrls() {
$AppUrls = $this->getMock('AppUrls', array('obtenirUrlBase'), array(), '', false);
$AppUrls->expects($this->any())
->method('obtenirUrlBase')
->will($this->returnValue(ConsultationEflorePhpUnit::TPL_URL_BASE));
return $AppUrls;
}
}
?>
/tags/v5.10-vilmorin/tests/modules/RechercheTest.php
New file
0,0 → 1,118
<?php
require_once __DIR__ . '/../ConsultationEflorePhpUnit.php';
 
class RechercheTest extends ConsultationEflorePhpUnit {
 
/**
* @backupGlobals # avoid $_REQUEST leaks
*/
public function testExecuterRechercheSimple() {
$_REQUEST['type_nom'] = 'nom_scientifique';
$_REQUEST['nom'] = 'acer mons';
 
Registre::set('parametres.niveau', '1');
$cheminRacine = realpath(__DIR__ . '/../../configurations/').'/';
Config::charger($cheminRacine.'bdtfx.ini');
Registre::set('eFlore.urlBase', new Url(Config::get('base_url_application_index')));
Registre::set('parametres.referentiel', 'bdtfx');
 
$recherche = new Recherche();
$recherche->initialiser();
$recherche->executerRechercheSimple();
 
$resultat = Registre::get('resultats');
 
$sortie = implode('', $recherche->getSortie());
$this->assertNotEmpty($resultat);
$this->assertEquals('6', $resultat['entete']['total']);
$this->assertEquals('6', count($resultat['resultat']));
$this->assertArrayNotHasKey('auteur', $resultat['resultat']['182'], print_r($resultat, true));
$this->assertNotEmpty($sortie);
$this->assertContains('<input id="nom" name="nom" class="champ" size="30" maxlength="255" type="text" value="acer mons" />', $sortie);
$this->assertContains('<strong class="nom-sci-retenu"><span class="surlignage">Acer</span> <span class="surlignage">mons</span>pessulanum</strong>', $sortie);
}
 
/**
* @backupGlobals # avoid $_REQUEST leaks
*/
public function testExecuterRechercheSimpleAlphab() {
$_REQUEST['type_nom'] = 'nom_scientifique';
$_REQUEST['nom'] = 'acer mons';
$_REQUEST['resultat'] = 'alphab';
 
$cheminRacine = realpath(__DIR__ . '/../../configurations/') . '/';
Config::charger($cheminRacine.'bdtfx.ini');
Registre::set('eFlore.urlBase', new Url(Config::get('base_url_application_index')));
Registre::set('parametres.referentiel', 'bdtfx');
 
// initialise les valeurs par défaut (notamment de "niveau")
AppControleur::verifierCreationInstance();
// initialise le registre à partir des valeurs par défaut
AppControleur::initialiserRegistre();
// à partir de là, par exemple Registre::get('parametres.niveau') doit retourner un entier
// (alternative à Registre::set('niveau', 'X'))
 
// et la recherche ne risque plus de manquer des paramètres nécessaires
$recherche = new Recherche();
$recherche->initialiser();
$recherche->executerRechercheSimple();
$resultat = Registre::get('resultats');
$sortie = implode('', $recherche->getSortie());
$this->assertNotEmpty($resultat, $resultat);
$this->assertEquals('6', $resultat['entete']['total']);
$this->assertEquals('6', count($resultat['resultat']));
}
/**
* @backupGlobals # avoid $_REQUEST leaks
*/
public function testExecuterRechercheSimpleRetenu() {
$_REQUEST['type_nom'] = 'nom_scientifique';
$_REQUEST['nom'] = 'acer mons';
$_REQUEST['resultat'] = 'retenu';
$_REQUEST['niveau'] = 2;
 
Registre::set('parametres.niveau', '2');
$cheminRacine = realpath(__DIR__ . '/../../configurations/').'/';
Config::charger($cheminRacine.'bdtfx.ini');
Registre::set('eFlore.urlBase', new Url(Config::get('base_url_application_index')));
Registre::set('parametres.referentiel', 'bdtfx');
 
$recherche = new Recherche();
$recherche->initialiser();
$recherche->executerRechercheSimple();
$resultat = Registre::get('resultats');
$sortie = implode('', $recherche->getSortie());
$this->assertNotEmpty($resultat);
$this->assertEquals('6', $resultat['entete']['total']);
$this->assertEquals('6', count($resultat['resultat']));
}
 
/**
* @backupGlobals # avoid $_REQUEST leaks
*/
public function testExecuterRechercheSimpleSynonyme() {
$_REQUEST['type_nom'] = 'nom_scientifique';
$_REQUEST['nom'] = 'acer mons';
$_REQUEST['resultat'] = 'retenu';
 
Registre::set('parametres.niveau', '2');
$cheminRacine = realpath(__DIR__ . '/../../configurations/').'/';
Config::charger($cheminRacine.'bdtfx.ini');
Registre::set('eFlore.urlBase', new Url(Config::get('base_url_application_index')));
Registre::set('parametres.referentiel', 'bdtfx');
$recherche = new Recherche();
$recherche->initialiser();
$recherche->executerRechercheSimple();
$resultat = Registre::get('resultats');
$sortie = implode('', $recherche->getSortie());
$this->assertNotEmpty($resultat);
$this->assertEquals('6', $resultat['entete']['total']);
$this->assertEquals('6', count($resultat['resultat']));
}
}
?>
/tags/v5.10-vilmorin/tests/modules/fiche/FicheTest.php
New file
0,0 → 1,33
<?php
require_once dirname(__FILE__).'/../../ConsultationEflorePhpUnit.php';
 
class FicheTest extends ConsultationEflorePhpUnit {
 
/**
* @outputBuffering enabled # not working ?
* (AppControleur::initialiser, prérequis de new Fiche())
*/
public function testExecuterFichee() {
$_GET['type_nom'] = 'nom_scientifique';
$_GET['nom'] = 'acer mons';
$_GET['referentiel'] = 'bdtfx';
$_GET['num_nom'] = '182';
$_GET['niveau'] = '1';
// Registre::set('parametres.niveau', '1');
 
Config::charger(CONFIG_DIR . '/bdtfx.ini');
Registre::set('eFlore.urlBase', new Url(Config::get('base_url_application_index')));
Registre::set('parametres.referentiel', 'bdtfx');
 
// @AppControleur::initialiser(); ...
$fiche = new Fiche();
$fiche->initialiser();
$fiche->executerFiche();
$sortie = $fiche->getSortie();
 
$this->assertNotEmpty($sortie, print_r($sortie['corps'], true));
$this->assertContains('<input id="eflore_niveau_nom" name="nom" type="hidden" value="acer mons" />', $sortie['corps']);
$this->assertContains('<div id="zone_onglets" ', $sortie['corps']);
}
}
?>
/tags/v5.10-vilmorin/tests/modules/fiche_metadonnees/FicheMetadonneesTest.php
New file
0,0 → 1,21
<?php
require_once dirname(__FILE__).'/../../ConsultationEflorePhpUnit.php';
 
class FicheMetadonneesTest extends ConsultationEflorePhpUnit {
 
public function testAffichageFicheMetadonnees() {
$_GET['module'] = 'fiche-metadonnees';
$_GET['action'] = 'affichagemetadonnees';
$_GET['projet'] = 'chorodep';
 
Registre::set('niveau', '1');
$cheminRacine = realpath(dirname(__FILE__).'/../configurations/').'/';
 
$fiche = new FicheMetadonnees();
$sortie = $fiche->chargerMetadonneesHtml();
 
$this->assertNotEmpty($sortie, print_r($sortie));
$this->assertContains('<div id="metadonnees">', $sortie);
}
}
?>
/tags/v5.10-vilmorin/tests/bibliotheque/SurligneurTest.php
New file
0,0 → 1,53
<?php
require dirname(__FILE__).'/../../bibliotheque/Surligneur.php';
 
class SurligneurTest extends PHPUnit_Framework_TestCase {
 
/**
* @expectedException InvalidArgumentException
* @expectedExceptionMessage Surligneur::surlignerMots() n'accepte que les tableaux de mots en argument
*/
public function testerSurlignerMotsAvecChaineRetourneInvalidArgumentException() {
$surligneur = new Surligneur();
$surligneur->surlignerMots('test');
}
 
/**
* @expectedException LengthException
* @expectedExceptionMessage Surligneur::surlignerMots() n'accepte que des tableaux contenant au moins un mot
*/
public function testerSurlignerMotsAvecTableauVideRetourneLengthException() {
$surligneur = new Surligneur();
$surligneur->surlignerMots(array());
}
 
public function testerSurlignerMotsRetournePremiereOccurenceMotSurlignee() {
$surligneur = new Surligneur();
$surligneur->setTexte('Viola alba subsp. alba');
$txtSurligne = $surligneur->surlignerMots(array('viola', 'al'));
 
$txtSurligneAttendu = '<span class="surlignage">Viola</span> <span class="surlignage">al</span>ba subsp. alba';
$this->assertEquals($txtSurligneAttendu, $txtSurligne);
}
 
public function testerSurlignerMotsRetourneDeuxPremieresOccurencesMotSurlignees() {
$surligneur = new Surligneur();
$surligneur->setNbreMaxSurlignageParMot(2);
$surligneur->setTexte('Viola alba subsp. alba');
 
$txtSurligne = $surligneur->surlignerMots(array('viola', 'al'));
 
$txtSurligneAttendu = '<span class="surlignage">Viola</span> <span class="surlignage">al</span>ba subsp. <span class="surlignage">al</span>ba';
$this->assertEquals($txtSurligneAttendu, $txtSurligne);
}
 
public function testerSurlignerMotsParConstructeurRetourneDeuxPremieresOccurencesMotSurlignees() {
$surligneur = new Surligneur('Viola alba subsp. alba', 2);
 
$txtSurligne = $surligneur->surlignerMots(array('viola', 'al'));
 
$txtSurligneAttendu = '<span class="surlignage">Viola</span> <span class="surlignage">al</span>ba subsp. <span class="surlignage">al</span>ba';
$this->assertEquals($txtSurligneAttendu, $txtSurligne);
}
}
?>
/tags/v5.10-vilmorin/tests/ConsultationEflorePhpUnit.php
New file
0,0 → 1,161
<?php
/**
* Classe contenant des méthodes :
* - d'intialisation des tests,
* - refactorisant le code des tests,
* - facilitant les tests.
*
* @category php 5.3
* @package Tests/Services
* @author Raphaël Droz <raphael@tela-botanica.org>
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright Copyright (c) 2011, 2013 Tela Botanica (accueil@tela-botanica.org)
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
*/
 
define('CONFIG_DIR', __DIR__ . '/../configurations');
require_once __DIR__ . '/../framework.php';
abstract class ConsultationEflorePhpUnit extends PHPUnit_Framework_TestCase {
const URL_API = 'http://localhost/service:eflore:0.1';
const TPL_URL_BASE = 'http://localhost/consultation/index_botanique.php?referentiel=bdtfx';
const TPL_URL_BASE_DOSSIER = 'http://localhost/consultation/';
const TPL_URL_FICHE = 'http://localhost/consultation/index_botanique.php?referentiel=bdtfx&module=fiche&action=fiche&nn=%s';
 
//+------------------------------------------------------------------------------------------------------+
// Intialisation
 
/* absolument nécessaire pour que Registre::$statics et Config::$statics soient réinitialisés lors
de multiples tests successifs (notamment pour le moteur de recherche).
*Et* l'annotation de setUpBeforeClass()
*et* l'attribut $backupStaticAttributes
*et* l'accès fictif @Registre::get(NULL);
sont tous trois nécessaires */
protected $backupStaticAttributes = true;
 
/**
* @backupStaticAttributes enabled
*/
public static function setUpBeforeClass() {
error_reporting(E_ALL);
if(!Framework::getCheminAppli()) {
Framework::setCheminAppli(__DIR__ . '/../');
// Enregistrement en première position des autoload de la méthode gérant les classes des services
spl_autoload_register(array(get_class(), 'chargerClasseAuto'));
}
Registre::get(NULL);
}
 
public static function chargerClasseAuto($classe) {
//echo $classe."\n";
if (class_exists($classe)) {
return null;
}
$cheminsTests = __DIR__.'/';
// $cheminBibliotheque = realpath(__DIR__.'/../bibliotheque/').'/';
$cheminMetier = realpath(__DIR__.'/../metier/api_0.1').'/';
$cheminModule = realpath(__DIR__.'/../modules/').'/';
$cheminFormateurs = realpath(__DIR__.'/../modules/fiche/formateurs/').'/'; // pour FicheTest::testExecuterFiche()
$chemins = array(/* $cheminBibliotheque, */ $cheminMetier, $cheminModule, $cheminsTests, $cheminFormateurs);
foreach ($chemins as $chemin) {
$cheminCourt = $chemin.$classe.'.php';
$module = strtolower(preg_replace('/([A-Z])/', '_\\1', lcfirst($classe)));
$cheminLong = $chemin.$module.'/'.$classe.'.php';
//echo $cheminCourt."\n".$cheminLong."\n";
if (file_exists($cheminCourt)) {
require_once $cheminCourt;
} elseif (file_exists($cheminLong)) {
require_once $cheminLong;
}
}
}
 
//+------------------------------------------------------------------------------------------------------+
// Refactorisation
protected function consulterJson($ressources, $parametres) {
$retourJson = $this->consulterBrut($ressources, $parametres);
$retour = json_decode($retourJson, true);
$this->assertEquals(JSON_ERROR_NONE, json_last_error(), "Le json contient des erreurs qui bloquent le décodage. Voir : $url");
return $retour;
}
 
protected function consulterBrut($ressources, $parametres) {
array_unshift($ressources, $this->service);
array_unshift($ressources, $this->projet);
$projets = new Projets();
$retourJson = $projets->consulter($ressources, $parametres);
return $retourJson;
}
 
protected function creerUrl($ressources, $parametres) {
$version = '';
$ressourcesUrl = array();
foreach ($ressources as $ressource) {
$ressourcesUrl[] = $ressource;
}
$ressourcesUrl = count($ressourcesUrl) > 0 ? '/'.implode('/', $ressourcesUrl) : '';
 
$parametresUrl = '';
if (count($parametres) > 0) {
foreach ($parametres as $cle => $valeur) {
$parametresUrl[] = $cle.'='.rawurlencode($valeur);
}
$parametresUrl = '?'.implode('&', $parametresUrl);
}
 
return self::URL_API.$ressourcesUrl.$parametresUrl;
}
 
//+------------------------------------------------------------------------------------------------------+
// Méthodes facilitant les tests
/**
* Récupère un bouchon de classe abstraite.
* Comment l'utiliser :
* $classeAstraite = $this->getClasseAbstraite('MaClasse', array('param1', 'param2'));
* $foo = $classeAstraite->methodeConcretePublique();
*
* @param String $classeNom Le nom de la classe
* @param Array $parametres Les paramètres à passer au constructeur.
* @return Object Le bouchon de la classe abstraite
*/
public function getClasseAbstraite($classeNom, Array $parametres) {
return $this->getMockForAbstractClass($classeNom, $parametres);
}
 
/**
* Récupère une méthode privée d'une classe pour tester/documenter.
* Comment l'utiliser :
* MyClass->foo():
* $cls = new MyClass();
* $foo = self::getPrivateMethode($cls, 'foo');
* $foo->invoke($cls, $...);
*
* @param object $objet Une instance de votre classe
* @param string $methode Le nom de la méthode private
* @return ReflectionMethod La méthode demandée
*/
public static function getMethodePrivee($objet, $nomMethode) {
$classe = new ReflectionClass($objet);
$methode = $classe->getMethod($nomMethode);
$methode->setAccessible(true);
return $methode;
}
 
/**
* Récupère une méthode protégée d'une classe pour tester/documenter.
* Comment l'utiliser :
* MyClass->foo():
* $cls = new MyClass();
* $foo = self::getProtectedMethode($cls, 'foo');
* $foo->invoke($cls, $...);
* @param object $objet Une instance de votre classe
* @param string $methode Le nom de la méthode protected
* @return ReflectionMethod La méthode demandée
*/
public static function getMethodeProtegee($objet, $nomMethode) {
return self::getMethodePrivee($objet, $nomMethode);
}
}
?>
/tags/v5.10-vilmorin/eflore.php
New file
0,0 → 1,61
<?php
function __autoload($nom_classe) {
// Tableau des chemins à inclure pour trouver une classe relatif à ce fichier
$chemins = array(
'..'.DS.'bibliotheque'.DS.'dao',
'..'.DS.'bibliotheque'.DS.'utilitaires',
'bibliotheque'.DS.'pear',
'composants');
foreach ($chemins as $chemin) {
$fichier_a_inclure = dirname(__FILE__).DS.$chemin.DS.$nom_classe.'.php';
if (file_exists($fichier_a_inclure)) {
include_once $fichier_a_inclure;
return null;
}
}
}
 
// ATTENTION: aucune autre langue que le français n'est supportée pour eflore
// pour le moment on supprime le paramètre à la main car la présence des fichiers d'i18n n'est pas testée
if(isset($_GET['langue'])) {
unset($_GET['langue']);
}
 
// Le fichier Framework.php du Framework de Tela Botanica doit être appelé avant tout autre chose dans l'application.
// Sinon, rien ne sera chargé.
// L'emplacement du Framework peut varier en fonction de l'environnement (test, prod...). Afin de faciliter la configuration
// de l'emplacement du Framework, un fichier framework.defaut.php doit être renommé en framework.php et configuré pour chaque installation de
// l'application.
// Chemin du fichier chargeant le framework requis
$framework = dirname(__FILE__).'/framework.php';
if (!file_exists($framework)) {
$e = "Veuillez paramêtrer l'emplacement et la version du Framework dans le fichier $framework";
trigger_error($e, E_USER_ERROR);
} else {
// Inclusion du Framework
require_once $framework;
// Ajout d'information concernant cette application
Framework::setCheminAppli(__FILE__);// Obligatoire
Framework::setInfoAppli(Config::get('info'));// Optionnel
 
// Vous pouvez ci-dessous commencer le développement de votre application
if (Config::get('debogage')) {
Debug::tailleMemoireScript('Taille mémoire du script :');
}
if (Config::get('benchmark_chrono')) {
Chronometre::chrono("Lancement d'eFlore");
}
 
// Initialisation du controleur principal de l'application
try {
AppControleur::initialiser();
} catch (Exception $e) {
$message = $e->getMessage()."\nLigne : ".$e->getLine()."\nFichier : ".$e->getFile();
Debug::printr($message);
}
 
if (Config::get('benchmark_chrono')) {
Chronometre::chrono("Arrêt d'eFlore");
}
}
?>
/tags/v5.10-vilmorin/livraison/livraison.sh
New file
0,0 → 1,29
#!/bin/bash
##############################################################################################################
# But : Script permettant d'initialiser en une seule commande l'ensemble de la base de données eFlore.
# Auteur : Jean-Pascal Milcent <jpm@tela-botanica.org> (translate bat file to shell script)
# License : GPL v3
# Création : 07 decembre 2011
# Version: 0.1
# 2011-12-07 - Création
# $Id$
##############################################################################################################
 
 
# compresser les fichiers en excluant les fichiers svn et les fichiers de config et framework
tar cvzf consultation.tar.gz ../ \
--exclude="livraison" \
--exclude=".svn" \
--exclude="configurations/config.ini" \
--exclude="configurations/config_papyrus.ini" \
--exclude="framework.php" \
--exclude="*.sh" \
--exclude=".settings" \
--exclude=".buildpath" \
--exclude=".project"
# envoyer sur tela
scp consultation.tar.gz root@tela-botanica.org:/home/telabotap/www/eflore-test/.
 
# se connecter sur tela botanica en ssh et effectuer le déploiement
ssh root@tela-botanica.org "cd /home/telabotap/www/eflore-test/; cd consultation; tar cvzf ../backup/consultation.tar.gz .; cd ../; rm -Rf consultation; mkdir consultation; cd consultation/; tar xvzf ../consultation.tar.gz; cp ../configurations/consultation/* . -R; cp ../configurations/consultation/.htaccess . ; chown telabotap:users /home/telabotap/www/eflore-test/consultation -R; chmod 755 /home/telabotap/www/eflore-test/consultation -R; exit";
echo "Done !"
Property changes:
Added: svn:executable
+*
\ No newline at end of property
Added: svn:eol-style
+native
\ No newline at end of property
/tags/v5.10-vilmorin/livraison
New file
Property changes:
Added: svn:ignore
+consultation.tar.gz
/tags/v5.10-vilmorin/modules/resultat/squelettes/onglets.tpl.html
New file
0,0 → 1,15
<ul class="onglets">
<?php if ($typeNom == 'nom_scientifique') : ?>
<?php foreach ($ongletsNs as $onglet) : ?>
<li <?=($typeResultat == $onglet ? 'class="menu_actif sci"': 'class="sci"')?> >
<a href="<?=$urls[$onglet]?>"><?=$i18n['ns'][$onglet]?></a>
</li>
<?php endforeach; ?>
<?php elseif ($typeNom == 'nom_vernaculaire') : ?>
<?php foreach ($ongletsNv as $onglet) : ?>
<li <?=($typeResultat == $onglet ? 'class="menu_actif verna"': 'class="verna"')?> >
<a href="<?=$urls[$onglet]?>"><?=$i18n['nv'][$onglet]?></a>
</li>
<?php endforeach; ?>
<?php endif; ?>
</ul>
/tags/v5.10-vilmorin/modules/resultat/squelettes/decomposition.tpl.html
New file
0,0 → 1,67
<!-- onglet "Tableau" -->
<p>
Rechercher sur
<a href="http://www.theplantlist.org/tpl/search?q=<?=htmlentities($masqueRecherche)?>">
<img src="<?=$baseUrlIco?>presentations/images/sites/tpl.png" alt="The Plant List"
title="Rechercher dans The Plant List"/>
</a>
<a href="http://www.ipni.org/ipni/simplePlantNameSearch.do?find_wholeName=<?=htmlentities($masqueRecherche)?>&amp;output_format=normal&amp;query_type=by_query&amp;back_page=query_ipni.html">
<img src="<?=$baseUrlIco?>presentations/images/sites/ipni.png" alt="IPNI" title="Rechercher dans IPNI"/>
</a>
<a href="http://plants.jstor.org/search?plantName=%22<?=htmlentities($masqueRecherche)?>%22&amp;syn=1">
<img src="<?=$baseUrlIco?>presentations/images/sites/jstor.png" alt="JSTOR Plant Science" title="Rechercher dans JSTOR Plant Science" />
</a>
<a href="http://coldb.mnhn.fr/Consultation?filtre=motif&amp;motif=<?=htmlentities($masqueRecherche)?>">
<img src="<?=$baseUrlIco?>presentations/images/sites/mnhn.png" alt="Muséum national d'Histoire naturelle" title="Rechercher dans Muséum national d'Histoire naturelle" />
</a>
<a href="http://www.anbg.gov.au/cgi-bin/apni?TAXON_NAME=<?=htmlentities($masqueRecherche)?>">
<img src="<?=$baseUrlIco?>presentations/images/sites/anbg.png" alt="Australian Plant Name Index" title="Rechercher dans Australian Plant Name Index" />
</a>
<a href="http://sweetgum.nybg.org/vh/specimen_list.php?QueryName=BasicQuery&amp;QueryPage=http%3A%2F%2Fsciweb.nybg.org%2Fscience2%2Fvii2.asp&amp;Restriction=NybRecordType+%3D+%27Specimen%27&amp;StartAt=1&amp;any=SummaryData%7CAdmWebMetadata&amp;QueryOption=any&amp;Submit=Search&amp;QueryTerms=<?=htmlentities($masqueRecherche)?>">
<img src="<?=$baseUrlIco?>presentations/images/sites/nybg.png" alt="NYBG Virtual Herbarium" title="Rechercher dans NYBG Virtual Herbarium" />
</a>
<a href="http://collections.mnh.si.edu/search/botany/?qt=<?=htmlentities($masqueRecherche)?>">
<img src="<?=$baseUrlIco?>presentations/images/sites/si.png" alt="Type Specimen Register of the U.S. National Herbarium" title="Rechercher dans Type Specimen Register of the U.S. National Herbarium" />
</a>
<a href="http://herbarium.univie.ac.at/database/search.php?taxon=<?=htmlentities($masqueRecherche)?>&amp;search=1">
<img src="<?=$baseUrlIco?>presentations/images/sites/vha.png" alt="Virtual Herbaria Austria" title="Rechercher dans Virtual Herbaria Austria" />
</a>
<a href="http://swbiodiversity.org/seinet/taxa/index.php?taxon=<?=htmlentities($masqueRecherche)?>">
<img src="<?=$baseUrlIco?>presentations/images/sites/seinet.png" alt="SEINet" title="Rechercher dans SEINet" />
</a>
<a href="http://www.ville-ge.ch/musinfo/bd/cjb/africa/resultat.php?efFamille=&amp;projet%5B%5D=FSA&amp;projet%5B%5D=FTA&amp;projet%5B%5D=FNA&amp;projet%5B%5D=BDM&amp;langue=en&amp;pbRecherche=Rechercher&amp;efNom=<?=htmlentities($masqueRecherche)?>">
<img src="<?=$baseUrlIco?>presentations/images/sites/cjb.png" alt="African Plants Database" title="Rechercher dans African Plants Database du Jardin Botanique de Genève" />
</a>
</p>
<table id="ef-resultats-decomposition">
<thead>
<tr>
<th id="col-ns">Nom scientifique</th>
<th>Auteur</th>
<th>Année</th>
<th>Référence bibliographique</th>
<th title="Commentaires nomenclaturaux ou taxonomiques concernant le nom scientifique">Nom addendum</th>
<th title="Identifiant numérique du nom scientifique">N° nom</th>
</tr>
</thead>
<tbody>
<? $i = 1 ?>
<? foreach ($noms as $nom) : ?>
<tr
class="<?=$nom['retenu'] === 'true' ? 'retenu' : 'synonyme' ?>"
title="Ligne #<?=$i++?>">
<td>
<? if ($nom['retenu'] !== 'absent') : ?>
<a href="<?=$nom['urlFiche']?>"><?=$nom['nomSci']?></a>
<? else : ?><?=$nom['nomSci']?>
<? endif; ?>
</td>
<td><?=$nom['auteur']?></td>
<td><?=$nom['annee']?></td>
<td><?=$nom['biblio']?></td>
<td><?=$nom['addendum']?></td>
<td><?=$nom['nn']?></td>
</tr>
<? endforeach; ?>
</tbody>
</table>
/tags/v5.10-vilmorin/modules/resultat/squelettes/liste_noms.tpl.html
New file
0,0 → 1,18
<!-- onglet "Liste" -->
<ol>
<? foreach ($noms as $id => $nom) : ?>
<li>
<?php if ($nom['retenu'] == 'absent') : ?>
<?=$nom['nomSci']?>
<?php else : ?>
<a href="<?=$nom['urlFiche']?>">
<?php if ($nom['retenu'] == 'true') : ?>
<strong class="nom-sci-retenu"><?=$nom['nomSci']?></strong>
<?php else : ?>
<?=$nom['nomSci']?>
<?php endif; ?>
</a>
<?php endif; ?>
</li>
<? endforeach; ?>
</ol>
/tags/v5.10-vilmorin/modules/resultat/squelettes/determination_verna.tpl.html
New file
0,0 → 1,88
<!-- onglet "Vignettes noms français" -->
<?php if ($noms) : ?>
<ul id="ef-resultats-nv-determination">
<? foreach ($noms as $nnTaxon => $nom) : ?>
<li class="zone-resultat">
<table >
<tbody >
<tr><td class="nom">
<?php if (isset($nom['nomVerna'])) : ?>
<?php $nbrNomVerna = count($nom['nomVerna']) ?>
<ul class="synonymes" style="width:100%;">
<?php for ($i = 0; ($i < 3); $i++) : ?>
<?php if (isset($nom['nomVerna'][$i])) : ?>
<li><?=$nom['nomVerna'][$i]['nom_vernaculaire']?></li>
<?php endif; ?>
<? endfor; ?>
<?php if ($nbrNomVerna === 4) : ?>
<?php if (isset($nom['nomVerna'][3])) : ?>
<li><?=$nom['nomVerna'][3]['nom_vernaculaire']?></li>
<?php endif; ?>
<?php endif; ?>
<?php if ($nbrNomVerna > 3 && $nbrNomVerna != 4) : ?>
<li class="synonymes-autres">
<ul>
<?php for ($i = 3; $i < $nbrNomVerna; $i++) : ?>
<li><?=$nom['nomVerna'][$i]['nom_vernaculaire']?></li>
<? endfor; ?>
</ul>
</li>
<?php endif; ?>
</ul>
<?php endif; ?>
</td><td class="nom">
<a class="lien_fiche_eflore" href="<?=$nom['urlFiche']?>" ><?=$nom['nomSci']?></a>
</td>
<td>
<?php if (isset($imagesCoste[$taxons[$nom['nomSci']]][0])) : ?>
<img class="illustration_resultat_coste" src="<?=htmlentities($imagesCoste[$taxons[$nom['nomSci']]][0])?>" alt="illustration de Coste" />
<?php else : ?>
<div class="vide"></div>
<?php endif; ?>
</td>
<td>
<?php if (isset($imagesUrls[$nnTaxon])) : ?>
<img class="illustration_resultat_cel" src="<?=htmlentities($imagesUrls[$nnTaxon][0])?>" data-num-nom="<?= $nnTaxon; ?>" title="<?= $nnTaxon; ?>" alt="Images issues du CEL" style="width:100px;height:100px;display:block;float:right;"/>
<?php else : ?>
<p class="absent">
Pas de photo<br />
<a href="<?=$urlWidget.'&num_nom='.$nnTaxon?>"
title="Ajouter une photographie au moyen du Carnet en Ligne"
onclick="window.open(this.href); return false;" class="contribuer">
Contribuer
</a>
</p>
<?php endif; ?>
</td>
<td >
<?php if (isset($repartition['urls'][$nnTaxon])) : ?>
<img src="<?=htmlentities($repartition['urls'][$nnTaxon])?>" alt="Carte de répartition" class="repartition_vignette illustration_resultat_choro"/>
<?php else : ?>
<div class="absent">Pas de carte</div>
<?php endif; ?>
</td></tr>
</tbody>
</table>
</li>
<? endforeach; ?>
</ul>
<?php endif; ?>
<script type="text/javascript">
//<![CDATA[
$(document).ready(function() {
ajouterToggleSynonymesAutres();
});
function ajouterToggleSynonymesAutres() {
$("ul#ef-resultats-nv-determination li").each(function(index) {
$(this).find('.synonymes-autres').prepend('<a id="bascule-'+index+'" href="#">et plus...</a>');
$(this).find('.synonymes-autres ul').css('display', 'none');
$(this).find('.synonymes-autres ul').attr('id', 'sa-'+index);
$('#bascule-'+index).on('click', function() {
$('#sa-'+index).toggle('blind', {}, 500);
return false;
});
});
}
//]]>
</script>
/tags/v5.10-vilmorin/modules/resultat/squelettes/determination.tpl.html
New file
0,0 → 1,94
<!-- onglet "Vignettes" -->
<ul id="ef-resultats-determination">
<?php if ($noms) : ?>
 
<? foreach ($noms as $nnTaxon => $nom) : ?>
<li class="zone-resultat">
<div class="nom-sci">
<a class="lien_fiche_eflore" href="<?=$nom['urlFiche']?>" >
<strong class="nom-sci-retenu"><?=$nom['nomSciRetenuSurligne']?></strong>
</a>
</div>
<?php if (isset($repartition)) : ?>
<?php if (isset($repartition['urls'][$nnTaxon]) ) : ?>
<img class="illustration_resultat_choro" src="<?=htmlentities($repartition['urls'][$nnTaxon])?>" alt="<?= $nom['nomSciRetenu'] ?> - Carte de répartition" />
<?php else : ?>
<div class="absent">Pas de carte</div>
<?php endif;endif; ?>
<?php if ($nom['rang'] != 'Famille' && $nom['rang'] != 'Genre' && $nom['rang'] != 'Ordre') : ?>
<?php if (isset($imagesUrls[$nnTaxon])) : ?>
<img class="illustration_resultat_cel" src="<?=htmlentities($imagesUrls[$nnTaxon][0])?>" data-num-nom="<?= $nnTaxon; ?>" title="<?= $nnTaxon; ?>" alt="<?= $nom['nomSciRetenu'] ?> (image CeL)" style="width:100px;height:100px;display:block;float:right;"/>
<?php else : ?>
<p class="absent">Pas de photo<br />
<a href="<?=$urlWidget.'&num_nom='.$nnTaxon?>"
title="Ajouter une photographie au moyen du Carnet en Ligne"
onclick="window.open(this.href); return false;" class="contribuer">
Contribuer
</a>
</p>
<?php endif; ?>
<?php if (isset($dessins) && isset($dessins[$taxons[$nnTaxon]][0])) : ?>
<img class="illustration_resultat_coste" src="<?=htmlentities($dessins[$taxons[$nnTaxon]][0])?>" alt="<?= $nom['nomSciRetenu'] ?> (illustration de Coste)" />
<?php endif; ?>
<?php endif; ?>
<?php if (isset($synonymes[$nnTaxon])) : ?>
<?php $nbrSynonymes = count($synonymes[$nnTaxon]) ?>
<ul class="synonymes" style="width:100%;">
<?php for ($i = 0; ($i < 3); $i++) : ?>
<?php if (isset($synonymes[$nnTaxon][$i])) : ?>
<li><b>syn.</b> <?=$synonymes[$nnTaxon][$i]['nomSci']?></li>
<?php endif; ?>
<? endfor; ?>
<?php if ($nbrSynonymes === 4) : ?>
<?php if (isset($synonymes[$nnTaxon][3])) : ?>
<li><b>syn.</b> <?=$synonymes[$nnTaxon][3]['nomSci']?></li>
<?php endif; ?>
<?php endif; ?>
<?php if ($nbrSynonymes > 3 && $nbrSynonymes != 4) : ?>
<li class="synonymes-autres">
<ul>
<?php for ($i = 3; $i < $nbrSynonymes; $i++) : ?>
<li><b>syn.</b> <?=$synonymes[$nnTaxon][$i]['nomSci']?></li>
<? endfor; ?>
</ul>
</li>
<?php endif; ?>
</ul>
<?php endif; ?>
</li>
<? endforeach; ?>
<?php endif; ?>
<?php if ($nomsSansCorrespondance) : ?>
<li class="zone-resultat" title="Aucun nom retenu n'a été trouvé pour ces noms scientifiques">
<strong>Noms sans correspondance</strong>
<ul class="noms-ss-correspondance">
<?php foreach ($nomsSansCorrespondance as $nomSC) : ?>
<li><?=$nomSC?></li>
<?php endforeach; ?>
</ul>
</li>
<?php endif; ?>
</ul>
<script type="text/javascript">
//<![CDATA[
$(document).ready(function() {
ajouterToggleSynonymesAutres();
});
function ajouterToggleSynonymesAutres() {
$("ul#ef-resultats-determination li").each(function(index) {
$(this).find('.synonymes-autres').prepend('<a id="bascule-'+index+'" href="#">et plus...</a>');
$(this).find('.synonymes-autres ul').css('display', 'none');
$(this).find('.synonymes-autres ul').attr('id', 'sa-'+index);
$('#bascule-'+index).on('click', function() {
$('#sa-'+index).toggle('blind', {}, 500);
return false;
});
});
}
//]]>
</script>
/tags/v5.10-vilmorin/modules/resultat/squelettes/resultat.tpl.html
New file
0,0 → 1,22
<?php if($typeNom == "nom_scientifique"): ?>
<?php if ($rang == null): ?>
Cet affichage montre tous les résultats.
<a href="<?php echo $urlInverse; ?>">Cliquez ici pour afficher seulement les espèces</a>
<?php else: ?>
<!-- Cet affichage ne montre que le rang "<?php echo $rang; ?>".-->
Cet affichage ne montre que les espèces.
<a href="<?php echo $urlInverse; ?>">Cliquez ici pour afficher tous les taxons</a>
<?php endif; ?>
<br/><br/>
<?php endif; ?>
 
<?=$ongletsHtml?>
 
<p style="float:right;">
<?php if($typeNom == "nom_scientifique"): ?>
<?= $nombreTaxonsAffiches ?> nom<?php echo $nombreTaxonsAffiches > 1 ? 's' : ''; ?> affiché<?php echo $nombreTaxonsAffiches > 1 ? 's' : ''; ?> /
<?php endif; ?>
<?=$nbreTaxons?> nom<?php echo $nbreTaxons > 1 ? 's' : ''; ?> trouvé<?php echo $nbreTaxons > 1 ? 's' : ''; ?>.
</p>
 
<?=$nomsHtml?>
/tags/v5.10-vilmorin/modules/resultat/squelettes/liste_noms_verna.tpl.html
New file
0,0 → 1,19
<!-- onglet "Tableau multilingue" -->
<? if ($noms) : ?>
<table>
<tr>
<th>n°</th>
<th>langue</th>
<th>nom commun</th>
<th>nom latin</th>
</tr>
<? $i = 1; foreach ($noms as $id => $valeurs) : ?>
<tr>
<td><?=$i++?></td>
<td><?= $valeurs['langue']?></td>
<td><?= $valeurs['nomVerna']?></td>
<td><a href="<?= $valeurs['urlFiche']?>"><?= $valeurs['nomSci']?></a></td>
</tr>
<? endforeach; ?>
</table>
<? endif; ?>
/tags/v5.10-vilmorin/modules/resultat/ParametresResultats.php
New file
0,0 → 1,11
<?php
class ParametresResultats {
public $typeResultat = 'determination';
public $typeNom = '';
public $masqueRecherche = '';
public $reftaxCourant = 'bdtfx';
public $projetImg = 'cel';
/** Si "null", montre tous les résultats. Sinon, ne montre que le rang spécifié, par défaut les espèces (290). */
public $rang = null;
}
?>
/tags/v5.10-vilmorin/modules/resultat/formateurs/nom_vernaculaire/DeterminationVernaFormateur.php
New file
0,0 → 1,229
<?php
class DeterminationVernaFormateur implements Formateur {
 
const TPL_VUE = 'determination_verna';
 
private $parametres = null;
private $surligneur = null;
private $trieur = null;
private $urls = null;
private $fusioneur = null;
private $manipulateurDeChaine = null;
private $imagesService = null;
 
private $motsASurligner = array();
private $noms = array();
private $infosPourTpl = array();
private $conteneur = null;
private $apiCartes = null;
 
public function __construct(ParametresResultats $parametres, Array $resultats,
Surligneur $surligneur = null, Trieur $trieur = null, AppUrls $urls = null,
ChaineManipulateur $manipulateurDeChaine = null, Images $imagesService = null) {
 
$this->parametres = $parametres;
$this->noms = $resultats['resultat'];
$this->surligneur = (is_null($surligneur)) ? new Surligneur() : $surligneur;
$this->trieur = (is_null($trieur)) ? new Trieur() : $trieur;
$this->urls = (is_null($urls)) ? new AppUrls() : $urls;
$this->manipulateurDeChaine = is_null($manipulateurDeChaine) ? new ChaineManipulateur() : $manipulateurDeChaine;
$this->imagesService = is_null($imagesService) ? new Images($this->parametres->projetImg) : $imagesService;
$this->conteneur = new Conteneur();
$this->apiCartes = $this->conteneur->getApiCartes();
}
 
public function getTplInfos() {
return $this->infosPourTpl;
}
 
public function getTplNom() {
return self::TPL_VUE;
}
 
public function formater() {
$this->obtenirUrlsDessins();
$this->obtenirUrlsPhotos();
$this->chargerRepartition();
$this->extraireInfosNomsPourTplDetermination();
$this->infosPourTpl['urlWidget'] = Config::get('base_url_widget_saisie')."?referentiel=".Registre::get('parametres.referentiel');
}
private function obtenirUrlsDessins() {
if (Config::get(Registre::get('parametres.referentiel').'.baseDessins') != "") {
$this->extraireInfosTaxons();
$this->imagesService->setProjet(Config::get(Registre::get('parametres.referentiel').'.baseDessins'));
$tax = implode(',', $this->infosPourTpl['taxons']);
$this->imagesService->setNnTaxon($tax);
$costeImg = $this->imagesService->setApi(Eflore::API_EFLORE)->getInfosImagesTaxons();
if (!empty($costeImg)) {
foreach ($costeImg as $infos) {
$num_taxon = $infos['num_taxonomique'];
$images[$num_taxon][] = $infos['binaire.href'];
$this->infosPourTpl['imagesCoste'] = $images;
}
}
}
}
private function extraireInfosTaxons() {
foreach ($this->noms as $id => $nom ) {
if (array_key_exists('num_taxon', $nom)
&& array_key_exists('taxon', $nom)) {
$this->infosPourTpl['taxons'][$nom['taxon']] = $nom['num_taxon'];
}
}
}
 
private function obtenirUrlsPhotos() {
if (Config::get(Registre::get('parametres.referentiel').'.baseImages') != "") {
$this->imagesService->setProjet(Config::get(Registre::get('parametres.referentiel').'.baseImages'));
$nns = $this->extraireNnDesNoms();
$urls = $this->imagesService->setApi(Eflore::API_EFLORE)->getUrlsImagesParIdsNoms($nns);
$this->infosPourTpl['imagesUrls'] = $this->supprimerCodeReferentielDesUrls($urls);
}
}
 
private function extraireNnDesNoms() {
$nns = array();
foreach ($this->noms as $id => $nom) {
if (array_key_exists('nom_retenu.code', $nom)) {
if (in_array($nom['nom_retenu.code'], $nns) == false) {
$idAAjouter = $this->supprimerCodeReferentielAvecNn($nom['nom_retenu.code']);
if (is_numeric($idAAjouter)) {
$nns[] = $idAAjouter;
}
}
}
}
return $nns;
}
 
private function supprimerCodeReferentielDesUrls($urls) {
$urlsNettoyees = array();
foreach ($urls as $id => $url) {
$id = $this->supprimerCodeReferentiel($id);
$urlsNettoyees[$id] = $url;
}
return $urlsNettoyees;
}
 
private function supprimerCodeReferentiel($chaine) {
$codeReferentiel = $this->parametres->referentielCourant.'.';
$chaine = str_replace($codeReferentiel, '', $chaine);
return $chaine;
}
private function chargerRepartition() {
// $numsNomsASynonymes = $this->extraireNumerosNomSynonymes();
if (Config::get(Registre::get('parametres.referentiel').'.baseRepartition') == "") {
return;
}
 
$this->apiCartes->setProjet(Config::get(Registre::get('parametres.referentiel').'.baseRepartition'));
$this->apiCartes->setLargeur('108x101');
$urls = array();
foreach ($this->noms as $nom) {
if (array_key_exists('nom_retenu.code', $nom)) {
$id = $this->supprimerCodeReferentielAvecNn($nom['nom_retenu.code']);
$this->apiCartes->setId("nn:" . $id); // . ',' . implode(',', array_keys($numsNomsASynonymes[$id])));
if (array_key_exists($id, $urls) == false) {
$urls[$id] = $this->apiCartes->getUrlPng();
}
}
}
$this->infosPourTpl['repartition']['urls'] = $urls;
}
private function extraireNumerosNomSynonymes() {
$numNomsASynonyme = array();
foreach ($this->noms as $id => $nom) {
$num_nom_retenu = $this->supprimerCodeReferentielAvecNn($nom['nom_retenu.code']);
// faux
$numNomsASynonyme[$num_nom_retenu][$id] = TRUE;
}
return $numNomsASynonyme;
}
private function extraireInfosNomsPourTplDetermination() {
$taxons = array();
foreach ($this->noms as $idNomCourant => $nom) {
$nn = intval($this->supprimerCodeReferentielAvecNn($nom['nom_retenu.code']));
$nomV = iconv('UTF-8', 'ASCII//TRANSLIT', strtolower($nom['nom_vernaculaire']));
if (preg_match('/^'.strtolower($this->parametres->masqueRecherche).'(?: |$)/', $nomV)) {
// au moins un debute par la requête
if (isset($taxons) && array_key_exists($nn, $taxons[0]) == false) {
$taxons[0][$nn] = $this->renvoyerInfosTaxon($nom['taxon'], $nn);
}
$taxons[0][$nn]['nomVerna'][] = $this->renvoyerInfosNomVerna($nom);
} else {
// contient
if (isset($taxons) && (!isset($taxons[1]) || array_key_exists($nn, $taxons[1]) == false)) {
$taxons[1][$nn] = $this->renvoyerInfosTaxon($nom['taxon'], $nn);
}
$taxons[1][$nn]['nomVerna'][] = $this->renvoyerInfosNomVerna($nom);
}
}
$this->infosPourTpl['noms'] = isset($taxons) ? $taxons : false;
}
private function renvoyerInfosNomVerna($valeurs) {
$nom_verna = array();
$nom_verna['nn'] = $valeurs['id'];
$nom_verna['nom_vernaculaire'] = $valeurs['nom_vernaculaire'];
return $nom_verna;
}
private function renvoyerInfosTaxon($nomSci, $nn) {
$taxon = array();
$taxon['nomSci'] = $nomSci;
$taxon['urlFiche'] = $this->urls->obtenirUrlFiche($nn, $this->parametres->typeNom, $this->parametres->masqueRecherche);
$this->chargerRepartition($nn);
$taxon['repartition_vignette'] = $this->infosPourTpl['repartition']['urls'];
return $taxon;
}
 
private function supprimerCodeReferentielAvecNn($nn) {
return str_replace($this->parametres->referentielCourant.'.nn:', '', $nn);
}
 
//tri alphabétique des noms scientifiques par catégorie (débute par , contient )
public function trier() {
$verna = array();
foreach ($this->infosPourTpl['noms'] as $categorie => $valeurs) {
$verna += $this->classerAlphabetiquement('nomSci', $valeurs);
}
$this->infosPourTpl['noms'] = $verna;
}
private function classerAlphabetiquement($champs, $valeurs) {
$this->trieur->setTableau($valeurs);
$this->trieur->setChampsEtOrdres(array($champs => 'nat'));
return $this->trieur->trier();
}
 
public function surligner() {
$this->definirMotsASurligner();
foreach ($this->infosPourTpl['noms'] as $idNom => $nom) {
foreach ($nom['nomVerna'] as $idVerna => $nomVerna) {
$nom['nomVerna'][$idVerna]['nom_vernaculaire'] = $this->surlignerMotsMasqueRecherche($nomVerna['nom_vernaculaire']);
}
$this->infosPourTpl['noms'][$idNom] = $nom;
}
}
 
private function definirMotsASurligner() {
$this->motsASurligner = explode(' ', $this->parametres->masqueRecherche);
 
}
private function surlignerMotsMasqueRecherche($nom) {
$this->surligneur->setTexte($nom);
$nom = $this->surligneur->surlignerMots($this->motsASurligner);
return $nom;
}
}
?>
/tags/v5.10-vilmorin/modules/resultat/formateurs/nom_vernaculaire/AlphabVernaFormateur.php
New file
0,0 → 1,113
<?php
class AlphabVernaFormateur implements Formateur {
 
const TPL_VUE = 'liste_noms_verna';
 
private $parametres = null;
private $surligneur = null;
private $trieur = null;
private $urls = null;
private $fusioneur = null;
private $manipulateurDeChaine = null;
private $imagesService = null;
 
private $motsASurligner = array();
private $noms = array();
private $infosPourTpl = array();
 
public function __construct(ParametresResultats $parametres, Array $resultats,
Surligneur $surligneur = null, Trieur $trieur = null, AppUrls $urls = null,
ChaineManipulateur $manipulateurDeChaine = null, Images $imagesService = null) {
 
$this->parametres = $parametres;
$this->noms = $resultats['resultat'];
$this->surligneur = (is_null($surligneur)) ? new Surligneur() : $surligneur;
$this->trieur = (is_null($trieur)) ? new Trieur() : $trieur;
$this->urls = (is_null($urls)) ? new AppUrls() : $urls;
$this->manipulateurDeChaine = is_null($manipulateurDeChaine) ? new ChaineManipulateur() : $manipulateurDeChaine;
$this->imagesService = is_null($imagesService) ? new Images($this->parametres->projetImg) : $imagesService;
}
 
public function getTplInfos() {
return $this->infosPourTpl;
}
 
public function getTplNom() {
return self::TPL_VUE;
}
private function supprimerCodeReftaxAvecNn($nn) {
$codeReftax = Registre::get('parametres.referentiel').'.nn:';
return str_replace($codeReftax, '', $nn);
}
private function renvoyerInfoVerna($nn, $valeurs) {
$infosDuNom = array();
$infosDuNom['nomSci'] = $valeurs['taxon'];
$infosDuNom['nomVerna'] = $valeurs['nom_vernaculaire'];
$infosDuNom['langue'] = $valeurs['code_langue'];
$infosDuNom['urlFiche'] = $this->urls->obtenirUrlFiche($nn, $this->parametres->typeNom, $this->parametres->masqueRecherche);
return $infosDuNom ;
}
 
function supprimerAccents($chaine){
return strtr($chaine,array('à' => 'a','á' => 'a','â' => 'a','ã' => 'a','ä' => 'a',
'ç' => 'c',
'è' => 'e','é' => 'e','ê' => 'e','ë' => 'e',
'ì' => 'i','í' => 'i','î' => 'i','ï' => 'i',
'ñ' => 'n',
'ò' => 'o', 'ó' => 'o' , 'ô' => 'o', 'õ' => 'o', 'ö' => 'o',
'ù' => 'u', 'ú' => 'u', 'û' => 'u', 'ü' => 'u',
'ý' => 'y', 'ÿ' => 'y'));
}
public function formater() {
$nomVerna = array();
foreach ($this->noms as $id => $nom) {
$nn = $this->supprimerCodeReftaxAvecNn($nom['nom_retenu.code']);
$nom_min = strtolower($nom['nom_vernaculaire']);
$nom_ss_accent = $this->supprimerAccents($nom_min);
if (preg_match('/^'.strtolower($this->parametres->masqueRecherche).' |^'.strtolower($this->parametres->masqueRecherche).'$/', $nom_ss_accent)) {
$nomVerna[0][$id] = $this->renvoyerInfoVerna($nn, $nom);
} else {
$nomVerna[1][$id] = $this->renvoyerInfoVerna($nn, $nom);
}
}
ksort($nomVerna);
$this->infosPourTpl['noms'] = isset($nomVerna) ? $nomVerna : false;
}
 
public function trier() {
$verna = array();
foreach ($this->infosPourTpl['noms'] as $categorie => $valeurs) {
$verna += $this->classerAlphabetiquement('nomVerna', $valeurs);
}
$this->infosPourTpl['noms'] = $verna;
}
private function classerAlphabetiquement($champs, $valeurs) {
$this->trieur->setTableau($valeurs);
$this->trieur->setChampsEtOrdres(array($champs => 'nat'));
return $this->trieur->trier();
}
 
public function surligner() {
$this->definirMotsASurligner();
foreach ($this->infosPourTpl['noms'] as $idNom => $nom) {
$this->infosPourTpl['noms'][$idNom]['nomVerna'] = $this->surlignerMotsMasqueRecherche($nom['nomVerna']);
}
}
 
private function definirMotsASurligner() {
$this->motsASurligner = explode(' ', $this->parametres->masqueRecherche);
 
}
 
private function surlignerMotsMasqueRecherche($nom) {
$this->surligneur->setTexte($nom);
$nom = $this->surligneur->surlignerMots($this->motsASurligner);
return $nom;
}
}
?>
/tags/v5.10-vilmorin/modules/resultat/formateurs/Formateur.php
New file
0,0 → 1,10
<?php
interface Formateur {
public function __construct(ParametresResultats $parametres, Array $resultats, Surligneur $surligneur = null, Trieur $trieur = null, AppUrls $urls = null);
public function getTplInfos();
public function getTplNom();
public function formater();
public function trier();
public function surligner();
}
?>
/tags/v5.10-vilmorin/modules/resultat/formateurs/ResultatFormateurFabrique.php
New file
0,0 → 1,16
<?php
class ResultatFormateurFabrique {
 
public static function creer(ParametresResultats $parametres, Array $resultats){
$typeResultat = ucwords($parametres->typeResultat);
$typeNom = ($parametres->typeNom == 'nom_vernaculaire') ? 'Verna' : '';
$Classe = $typeResultat.$typeNom.'Formateur';
$ResultatFormateur = null;
if (class_exists($Classe)) {
return new $Classe($parametres, $resultats);
} else {
throw new Exception("La classe '$Classe' est introuvable.");
}
}
}
?>
/tags/v5.10-vilmorin/modules/resultat/formateurs/nom_scientifique/DeterminationFormateur.php
New file
0,0 → 1,258
<?php
class DeterminationFormateur implements Formateur {
 
const TPL_VUE = 'determination';
 
private $parametres = null;
private $surligneur = null;
private $trieur = null;
private $urls = null;
private $fusioneur = null;
private $manipulateurDeChaine = null;
private $imagesService = null;
 
private $motsASurligner = array();
private $noms = array();
private $infosPourTpl = array();
 
public function __construct(ParametresResultats $parametres, Array $resultats,
Surligneur $surligneur = null, Trieur $trieur = null, AppUrls $urls = null,
ChaineManipulateur $manipulateurDeChaine = null, Images $imagesService = null) {
 
$this->parametres = $parametres;
$this->noms = $resultats['resultat'];
$this->surligneur = (is_null($surligneur)) ? new Surligneur() : $surligneur;
$this->trieur = (is_null($trieur)) ? new Trieur() : $trieur;
$this->urls = (is_null($urls)) ? new AppUrls() : $urls;
$this->manipulateurDeChaine = is_null($manipulateurDeChaine) ? new ChaineManipulateur() : $manipulateurDeChaine;
$this->imagesService = is_null($imagesService) ? new Images($this->parametres->projetImg) : $imagesService;
}
 
public function getTplInfos() {
return $this->infosPourTpl;
}
 
public function getTplNom() {
return self::TPL_VUE;
}
 
public function formater() {
$this->extraireInfosTaxons();
 
$this->obtenirUrlsDessins();
$this->obtenirUrlsPhotos();
$this->chargerRepartition();
 
$this->extraireInfosNomsPourTplDetermination();
$this->infosPourTpl['urlWidget'] = Config::get('base_url_widget_saisie')."?referentiel=".Registre::get('parametres.referentiel');
}
 
private function obtenirUrlsDessins() {
if (Config::get(Registre::get('parametres.referentiel').'.baseDessins') != "") {
$this->imagesService->setProjet(Config::get(Registre::get('parametres.referentiel').'.baseDessins'));
$tax = implode(',', $this->infosPourTpl['taxons']);
$this->imagesService->setNnTaxon($tax);
$costeImg = $this->imagesService->setApi(Eflore::API_EFLORE)->getInfosImagesTaxons();
if (!empty($costeImg)) {
foreach ($costeImg as $infos) {
$num_taxon = $infos['num_taxonomique'];
$images[$num_taxon][] = $infos['binaire.href'];
$this->infosPourTpl['dessins'] = $images;
}
}
}
}
 
private function extraireInfosTaxons() {
foreach ($this->noms as $id => $nom ) {
if (array_key_exists('num_taxonomique', $nom)) {
$this->infosPourTpl['taxons'][$id] = $nom['num_taxonomique'];
}
}
}
 
private function obtenirUrlsPhotos() {
if (Config::get(Registre::get('parametres.referentiel').'.baseImages') != "") {
$this->imagesService->setProjet(Config::get(Registre::get('parametres.referentiel').'.baseImages'));
$ids = $this->extraireIdDesNoms();
$urls = $this->imagesService->setApi(Eflore::API_EFLORE)->getUrlsImagesParIdsNoms($ids);
$this->infosPourTpl['imagesUrls'] = $this->supprimerCodeReferentielDesIds($urls);
}
}
 
private function extraireIdDesNoms() {
$ids = array();
foreach ($this->noms as $id => $nom) {
$idAAjouter = $id;
if (is_numeric($idAAjouter)) {
$ids[] = $idAAjouter;
}
if (array_key_exists('nom_retenu.id', $nom)) {
if (in_array($nom['nom_retenu.id'], $ids) == false) {
$idAAjouter = $nom['nom_retenu.id'];
if (is_numeric($idAAjouter)) {
$ids[] = $idAAjouter;
}
}
}
}
return $ids;
}
 
private function supprimerCodeReferentielDesIds($urls) {
$urlsNettoyees = array();
foreach ($urls as $id => $url) {
$id = $this->supprimerCodeReferentiel($id);
$urlsNettoyees[$id] = $url;
}
return $urlsNettoyees;
}
 
private function supprimerCodeReferentiel($chaine) {
$codeReferentiel = Registre::get('parametres.referentiel').'.';
$chaine = str_replace($codeReferentiel, '', $chaine);
return $chaine;
}
 
// TODO : utiliser le conteneur pour charger tous les objets de cette classe
private function chargerRepartition() {
$referentiel = Registre::get('parametres.referentiel');
if (Config::get("$referentiel.baseRepartition") != '') {
$conteneur = new Conteneur();
$cartesWs = $conteneur->getApiCartes();
$cartesWs->setProjet(Config::get(Registre::get('parametres.referentiel').'.baseRepartition'));
$cartesWs->setLargeur('108x101');
$urls = array();
foreach ($this->noms as $id => $nom) {
if (array_key_exists('num_taxonomique', $nom)) {
$nt = $nom['num_taxonomique'];
$cartesWs->setId("$referentiel.nt:$nt");
if (array_key_exists($id, $urls) == false) {
$urls[$id] = $cartesWs->getUrlPng();
}
}
}
$this->infosPourTpl['repartition']['urls'] = $urls;
}
}
 
private function extraireInfosNomsPourTplDetermination() {
$tri = $this->diviserResultats();
$this->infosPourTpl['nomsSansCorrespondance'] = isset($tri['sansCorres']) ? $tri['sansCorres'] : false;
$this->infosPourTpl['noms'] = isset($tri['retenus']) ? $tri['retenus'] : false;
$this->infosPourTpl['synonymes'] = isset($tri['synonymes'] ) ? $tri['synonymes'] : false;
}
 
/**
* division ordonnée par
* 1 - noms retenus qui commencent par la requete
* 2 - requete contenue dans un synonyme dont le nom retenu ne contient pas la requete
* 3 - requete contenue dans un hybride retenu
* 4 - requete contenue dans un nom retenu mais pas au début
* 5 - requete contenue dans un nom sans correspondance
*
*/
private function diviserResultats() {
$tri = array();
$sansCorres = array();
$synonymes = array();
$retenus = array();
foreach ($this->noms as $cle => $valeurs) {
if ($valeurs['nom_retenu.libelle'] == null) {//sans correspondances
$sansCorres[$cle] = $valeurs['nom_sci_complet'];
} elseif ($valeurs['retenu'] == 'true') { // retenus
if (preg_match('/ x |^x /',$valeurs['nom_sci'] ) ) {
//hybrides
$retenus[2][$cle] = $this->retournerInfosNomRetenu($cle,$valeurs['nom_sci_complet'], $valeurs['rang.libelle']);
} elseif (strripos($valeurs['nom_sci_complet'], $this->parametres->masqueRecherche) === 0) {//preg_match('/^'.strtolower($this->parametres->masqueRecherche).' |^'.strtolower($this->parametres->masqueRecherche).'$/', strtolower($valeurs['nom_sci']) ) ) {
//commence par
$retenus[0][$cle] = $this->retournerInfosNomRetenu($cle,$valeurs['nom_sci_complet'], $valeurs['rang.libelle']);
} else {
//contient
$retenus[3][$cle] = $this->retournerInfosNomRetenu($cle,$valeurs['nom_sci_complet'], $valeurs['rang.libelle']);
}
} else {//synonymes
$idNomRetenu = $valeurs['nom_retenu.id'];
if (in_array($valeurs['nom_retenu.id'], array_keys($this->noms)) == false) {
//synonymes dont le nom retenu n'est pas un résultat de recherche
$retenus[1][$idNomRetenu] = $this->retournerInfosNomRetenu($idNomRetenu,$valeurs['nom_retenu.libelle'], $valeurs['rang.libelle']);
$this->infosPourTpl['taxons'][$idNomRetenu] = $valeurs['num_taxonomique']; //num taxon pour images coste
}
$synonymes[$idNomRetenu][] = $this->retournerInfosSynonyme($cle, $valeurs);
}
}
ksort($retenus);
$tri['retenus'] = $retenus;
$tri['synonymes'] = $synonymes;
$tri['sansCorres'] = $sansCorres;
return $tri;
}
 
private function retournerInfosNomRetenu($cle, $nom_sci, $rang) {
$infos = array();
$infos['nomSciRetenu'] = $nom_sci;
$infos['urlFiche'] = $this->urls->obtenirUrlFiche($cle, $this->parametres->typeNom, strtolower($this->parametres->masqueRecherche), $nom_sci);
$infos['rang'] = $rang;
return $infos;
}
 
private function retournerInfosSynonyme($cle, $valeurs) {
$infos = array();
$infos['nn'] = $cle;
$infos['nomSci'] = $valeurs['nom_sci_complet'];
$infos['urlFiche'] = $this->urls->obtenirUrlFiche($cle, $this->parametres->typeNom, $this->parametres->masqueRecherche, $valeurs['nom_retenu.libelle']);
return $infos;
}
 
public function trier() {
$nomsRetenus = array();
foreach ($this->infosPourTpl['noms'] as $categorie => $valeurs ) { //classement alpha par groupes
$nomsRetenus += $this->classerAlphabetiquement('nomSciRetenu', $valeurs);
}
$this->infosPourTpl['noms'] = $nomsRetenus;
$this->infosPourTpl['nomsSansCorrespondance'] =
$this->classerAlphabetiquement('nomSciRetenu', $this->infosPourTpl['nomsSansCorrespondance'] );
}
 
private function ajouterAuxNomsScoreSimilariteAvec($masque) {
$nom_demande_ss = strtolower($this->manipulateurDeChaine->supprimerAccents($masque));
foreach ($this->infosPourTpl['noms'] as $id => $nom) {
$nom_flou_ss = strtolower($this->manipulateurDeChaine->supprimerAccents($nom['nomSciRetenu']));
$stat = array();
// Prime pour la ressemblance globale :
$score = 500 - levenshtein($nom_flou_ss, $nom_demande_ss);
// On affine
$score = $score + (similar_text($nom_demande_ss, $nom_flou_ss) * 3);
$nom['score'] = $score;
$this->infosPourTpl['noms'][$id] = $nom;
}
}
 
private function classerAlphabetiquement($champs, $valeurs) {
$this->trieur->setTableau($valeurs);
$this->trieur->setChampsEtOrdres(array($champs => 'nat'));
return $this->trieur->trier();
}
 
public function surligner() {
$this->definirMotsASurligner();
foreach ($this->infosPourTpl['noms'] as $idNom => $nom) {
$this->infosPourTpl['noms'][$idNom]['nomSciRetenuSurligne'] = $this->surlignerMotsMasqueRecherche($nom['nomSciRetenu']);
if (isset($this->infosPourTpl['synonymes'][$idNom])) {
foreach ($this->infosPourTpl['synonymes'][$idNom] as $idSyn => $synonyme) {
$this->infosPourTpl['synonymes'][$idNom][$idSyn]['nomSci'] = $this->surlignerMotsMasqueRecherche($synonyme['nomSci']);
}
}
}
}
 
private function definirMotsASurligner() {
$this->motsASurligner = explode(' ', $this->parametres->masqueRecherche);
}
private function surlignerMotsMasqueRecherche($nom) {
$this->surligneur->setTexte($nom);
$nom = $this->surligneur->surlignerMots($this->motsASurligner);
return $nom;
}
}
?>
Property changes:
Added: svnkit:entry:sha1-checksum
+b308b575b63824443e3ba51a065e27a97843a2d9
\ No newline at end of property
/tags/v5.10-vilmorin/modules/resultat/formateurs/nom_scientifique/RetenuFormateur.php
New file
0,0 → 1,88
<?php
class RetenuFormateur implements Formateur {
 
const TPL_VUE = 'liste_noms';
 
private $parametres = null;
private $surligneur = null;
private $trieur = null;
private $urls = null;
private $fusioneur = null;
 
private $motsASurligner = array();
private $noms = array();
private $infosPourTpl = array();
 
public function __construct(ParametresResultats $parametres, Array $resultats, Surligneur $surligneur = null,
Trieur $trieur = null, AppUrls $urls = null, TableauManipulateur $tableau = null) {
$this->parametres = $parametres;
$this->noms = $resultats['resultat'];
$this->surligneur = (is_null($surligneur)) ? new Surligneur() : $surligneur;
$this->trieur = (is_null($trieur)) ? new Trieur() : $trieur;
$this->urls = (is_null($urls)) ? new AppUrls() : $urls;
$this->fusioneur = (is_null($tableau)) ? new TableauManipulateur() : $tableau;
}
 
public function getTplInfos() {
return $this->infosPourTpl;
}
 
public function getTplNom() {
return self::TPL_VUE;
}
 
public function formater() {
foreach ($this->noms as $id => $nom) {
$infosDuNom = array();
$infosDuNom['nomSci'] = $nom['nom_sci_complet'];
$infosDuNom['retenu'] = $nom['retenu'];
$nom_retenu = $nom['retenu'] == 'true' ? $nom['nom_sci'] : '';
$infosDuNom['urlFiche'] = $this->urls->obtenirUrlFiche($id, $this->parametres->typeNom, $this->parametres->masqueRecherche);
 
$this->infosPourTpl['noms'][$id] = $infosDuNom;
}
}
 
public function trier() {
$nomsRetenus = array();
$nomsSynonymes = array();
 
foreach ($this->infosPourTpl['noms'] as $id => $nom) {
if ($nom['retenu'] == 'true') {
$nomsRetenus[$id] = $nom;
} else {
$nomsSynonymes[$id] = $nom;
}
}
 
$this->trieur->setTableau($nomsRetenus);
$this->trieur->setChampsEtOrdres(array('nomSci' => SORT_ASC));
$nomsRetenus = $this->trieur->trier();
 
$this->trieur->setTableau($nomsSynonymes);
$this->trieur->setChampsEtOrdres(array('nomSci' => SORT_ASC));
$nomsSynonymes = $this->trieur->trier();
 
$this->fusioneur->setTableau($nomsRetenus);
$this->fusioneur->etendreAvec($nomsSynonymes);
$this->infosPourTpl['noms'] = $this->fusioneur->getTableau();
}
 
public function surligner() {
$this->definirMotsASurligner();
foreach ($this->infosPourTpl['noms'] as $id => $nom) {
$this->infosPourTpl['noms'][$id]['nomSci'] = $this->surlignerMotsMasqueRecherche($nom['nomSci']);
}
}
 
private function definirMotsASurligner() {
$this->motsASurligner = explode(' ', $this->parametres->masqueRecherche);
}
 
private function surlignerMotsMasqueRecherche($nom) {
$this->surligneur->setTexte($nom);
$nom = $this->surligneur->surlignerMots($this->motsASurligner);
return $nom;
}
}
?>
/tags/v5.10-vilmorin/modules/resultat/formateurs/nom_scientifique/DecompoFormateur.php
New file
0,0 → 1,72
<?php
class DecompoFormateur implements Formateur {
 
const TPL_VUE = 'decomposition';
 
private $parametres = null;
private $surligneur = null;
private $trieur = null;
private $urls = null;
private $motsASurligner = array();
private $noms = array();
private $infosPourTpl = array();
 
public function __construct(ParametresResultats $parametres, Array $resultats, Surligneur $surligneur = null, Trieur $trieur = null, AppUrls $urls = null) {
$this->parametres = $parametres;
$this->noms = $resultats['resultat'];
$this->surligneur = (is_null($surligneur)) ? new Surligneur() : $surligneur;
$this->trieur = (is_null($trieur)) ? new Trieur() : $trieur;
$this->urls = (is_null($urls)) ? new AppUrls() : $urls;
}
 
public function getTplInfos() {
return $this->infosPourTpl;
}
 
public function getTplNom() {
return self::TPL_VUE;
}
 
public function formater() {
$this->infosPourTpl['masqueRecherche'] = rawurlencode($this->parametres->masqueRecherche);
$this->infosPourTpl['baseUrlIco'] = $this->urls->obtenirUrlBaseDossier();
foreach ($this->noms as $id => $nom) {
$infosDuNom = array();
$infosDuNom['nomSci'] = $nom['nom_sci'];
$infosDuNom['retenu'] = $nom['retenu'];
$infosDuNom['auteur'] = is_null($nom['auteur']) ? '' : $nom['auteur'];
$infosDuNom['annee'] = is_null($nom['annee']) ? '' : $nom['annee'];
$infosDuNom['biblio'] = is_null($nom['biblio_origine']) ? '' : $nom['biblio_origine'];
$infosDuNom['addendum'] = is_null($nom['nom_addendum']) ? '' : $nom['nom_addendum'];
$infosDuNom['nn'] = $id;
$nom_retenu = $nom['retenu'] == 'true' ? $nom['nom_sci'] : '';
$infosDuNom['urlFiche'] = $this->urls->obtenirUrlFiche($id, $this->parametres->typeNom, $this->parametres->masqueRecherche);
 
$this->infosPourTpl['noms'][$id] = $infosDuNom;
}
}
 
public function trier() {
$this->trieur->setTableau($this->infosPourTpl['noms']);
$this->trieur->setChampsEtOrdres(array('nomSci' => SORT_ASC));
$this->infosPourTpl['noms'] = $this->trieur->trier();
}
 
public function surligner() {
$this->definirMotsASurligner();
foreach ($this->infosPourTpl['noms'] as $id => $nom) {
$this->infosPourTpl['noms'][$id]['nomSci'] = $this->surlignerMotsMasqueRecherche($nom['nomSci']);
}
}
 
private function definirMotsASurligner() {
$this->motsASurligner = explode(' ', $this->parametres->masqueRecherche);
}
 
private function surlignerMotsMasqueRecherche($nom) {
$this->surligneur->setTexte($nom);
$nom = $this->surligneur->surlignerMots($this->motsASurligner);
return $nom;
}
}
?>
/tags/v5.10-vilmorin/modules/resultat/formateurs/nom_scientifique/AlphabFormateur.php
New file
0,0 → 1,65
<?php
class AlphabFormateur implements Formateur {
 
const TPL_VUE = 'liste_noms';
 
private $parametres = null;
private $surligneur = null;
private $trieur = null;
private $urls = null;
private $motsASurligner = array();
private $noms = array();
private $infosPourTpl = array();
 
public function __construct(ParametresResultats $parametres, Array $resultats, Surligneur $surligneur = null, Trieur $trieur = null, AppUrls $urls = null) {
$this->parametres = $parametres;
$this->noms = $resultats['resultat'];
$this->surligneur = (is_null($surligneur)) ? new Surligneur() : $surligneur;
$this->trieur = (is_null($trieur)) ? new Trieur() : $trieur;
$this->urls = (is_null($urls)) ? new AppUrls() : $urls;
}
 
public function getTplInfos() {
return $this->infosPourTpl;
}
 
public function getTplNom() {
return self::TPL_VUE;
}
 
public function formater() {
foreach ($this->noms as $id => $nom) {
$infosDuNom = array();
$infosDuNom['nomSci'] = $nom['nom_sci_complet'];
$infosDuNom['retenu'] = $nom['retenu'];
$nom_retenu = $nom['retenu'] == 'true' ? $nom['nom_sci'] : '';
$infosDuNom['urlFiche'] = $this->urls->obtenirUrlFiche($id, $this->parametres->typeNom, $this->parametres->masqueRecherche);
 
$this->infosPourTpl['noms'][$id] = $infosDuNom;
}
}
 
public function trier() {
$this->trieur->setTableau($this->infosPourTpl['noms']);
$this->trieur->setChampsEtOrdres(array('nomSci' => SORT_ASC));
$this->infosPourTpl['noms'] = $this->trieur->trier();
}
 
public function surligner() {
$this->definirMotsASurligner();
foreach ($this->infosPourTpl['noms'] as $id => $nom) {
$this->infosPourTpl['noms'][$id]['nomSci'] = $this->surlignerMotsMasqueRecherche($nom['nomSci']);
}
}
 
private function definirMotsASurligner() {
$this->motsASurligner = explode(' ', $this->parametres->masqueRecherche);
}
 
private function surlignerMotsMasqueRecherche($nom) {
$this->surligneur->setTexte($nom);
$nom = $this->surligneur->surlignerMots($this->motsASurligner);
return $nom;
}
}
?>
/tags/v5.10-vilmorin/modules/resultat/Resultat.php
New file
0,0 → 1,264
<?php
// declare(encoding='UTF-8');
/**
* Classe mère du module Liste.
*
* @category PHP 5.2
* @package eflore-consultation
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
* @copyright 2011 Tela-Botanica
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
class Resultat extends aControleur {
 
private $parametres = null;
private $resultats = null;
private $donneesTpl = array();
private $i18n = array();
private $parametresAvancesGeneriques = array('gen','fam','nn','nt','sp','ssp','type','sto','sti','stc');
 
public function initialiser() {
spl_autoload_register(array($this, 'chargerClassesResultat'));
$this->parametres = new ParametresResultats();
$this->capturerParametres();
$this->capturerParametresAvances();
$this->parametres->referentielCourant = Registre::get('parametres.referentiel');
$this->parametres->projetImg = Config::get($this->parametres->referentielCourant.'.baseImages');
$this->resultats = Registre::get('resultats');
$this->i18n = I18n::get('Recherche-form-avancee');
}
 
private function chargerClassesResultat($classe) {
$base = dirname(__FILE__).DS;
$cheminFormateurs = $base.'formateurs'.DS;
$cheminFormateursNs = $cheminFormateurs.'nom_scientifique'.DS;
$cheminFormateursNv = $cheminFormateurs.'nom_vernaculaire'.DS;
$dossiers = array($base, $cheminFormateurs, $cheminFormateursNs, $cheminFormateursNv);
foreach ($dossiers as $chemin) {
$fichierATester = $chemin.$classe.'.php';
if (file_exists($fichierATester)) {
include_once $fichierATester;
return null;
}
}
}
 
private function capturerParametres() {
$this->parametres->masqueRecherche = "";
if (isset($_GET['resultat'])) {
$this->parametres->typeResultat = $_GET['resultat'];
}
if (isset($_GET['nom'])) {
$this->parametres->masqueRecherche = trim($_GET['nom']);
}
//recherche avancee type
if (isset($_GET['fam'])) {
$this->parametres->masqueRecherche .= trim($_GET['fam']);
}
if (isset($_GET['gen'])) {
$this->parametres->masqueRecherche .= trim($_GET['gen']);
}
if (isset($_GET['sp'])) {
$this->parametres->masqueRecherche .= trim($_GET['sp']);
}
if (isset($_GET['ssp'])) {
$this->parametres->masqueRecherche .= trim($_GET['ssp']);
}
if (isset($_GET['and'])) {
$this->parametres->masqueRecherche .= trim($_GET['and']);
}
if (isset($_GET['anf'])) {
$this->parametres->masqueRecherche .= trim($_GET['anf']);
}
if (isset($_GET['au'])) {
$this->parametres->masqueRecherche .= trim($_GET['au']);
}
if (isset($_GET['bib'])) {
$this->parametres->masqueRecherche .= trim($_GET['bib']);
}
 
// Si spécifié, seuls les résultats du niveau spécifié sont affichés.
// Passer "*" pour annuler le filtre par rang (le paramètre est mis à "null").
// Par défaut, seules les espèces sont affichées (paramètre par défaut).
if (isset($_GET['rang'])) {
$this->parametres->rang = ($_GET['rang'] == '*' ? null : $_GET['rang']);
}
 
if (isset($_GET['type_nom'])) {
$this->parametres->typeNom = $_GET['type_nom'];
}
if (isset($_GET['niveau'])) {
Registre::set('parametres.niveau', $_GET['niveau']);
}
}
private function capturerParametresAvances() {
$this->capturerParametresAvancesGeneriques();
$this->capturerParametresAvancesDependantsLangage();
$this->capturerParametresAvancesPresenceSpecifiques();
$this->capturerParametresAvancesRang();
}
 
private function capturerParametresAvancesRang() {
// rang à afficher
$this->param['rang'] = $this->parametres->rang;
if ($this->param['rang'] === null) {
$this->param['rang'] = '*';
}
}
 
private function capturerParametresAvancesGeneriques() {
foreach($this->parametresAvancesGeneriques as $param) {
if (isset($_GET[$param]) && $_GET[$param] != '') {
$this->param[$param] = urldecode($_GET[$param]);
}
}
}
private function capturerParametresAvancesDependantsLangage() {
if (isset($_GET['au']) && $_GET['au'] != ''
&& $_GET['au'] != urlencode($this->i18n['valeur-form-auteur'])) {
$this->param['au'] = urldecode($_GET['au']);
}
if (isset($_GET['bib']) && $_GET['bib'] != ''
&& $_GET['bib'] != urlencode($this->i18n['valeur-form-bib'])) {
$this->param['bib'] = urldecode($_GET['bib']);
}
if (isset($_GET['and']) && $_GET['and'] != ''
&& $_GET['and'] != urlencode($this->i18n['valeur-form-date'])) {
$this->param['and'] = urldecode($_GET['and']);
}
if (isset($_GET['anf']) && $_GET['anf'] != ''
&& $_GET['anf'] != urlencode($this->i18n['valeur-form-date'])) {
$this->param['anf'] = urldecode($_GET['anf']);
}
}
private function capturerParametresAvancesPresenceSpecifiques() {
$champs_presence = $this->obtenirChampsPresence();
foreach($champs_presence as $champ) {
$param = $champ['param'];
if (isset($_GET[$param]) && $_GET[$param] != '') {
$this->param[$param] = urldecode($_GET[$param]);
}
}
}
private function obtenirChampsPresence() {
$tableau_champs_presence = array();
$referentiel = Registre::get('parametres.referentiel');
$champs_presence = Config::get($referentiel.'.champsPresence');
$champs_presence_spl = explode('|', $champs_presence);
foreach($champs_presence_spl as $champ) {
$label_param_champ = explode(':', $champ);
if(count($label_param_champ) >= 2) {
$tableau_champs_presence[] = array('param' => $label_param_champ[1],
'label' => $label_param_champ[0]);
}
}
return $tableau_champs_presence;
}
 
public function executerActionParDefaut() {
$this->executerResultat();
}
 
public function executerResultat() {
$this->chargerOnglets();
$this->chargerNbreDeTaxons();
$this->chargerNomsFormates();
$this->setSortie(self::RENDU_CORPS, $this->getVue('resultat', $this->donneesTpl));
}
 
private function chargerOnglets() {
$donnees = array();
$donnees['typeResultat'] = $this->parametres->typeResultat;
$donnees['typeNom'] = $this->parametres->typeNom;
$donnees['ongletsNs'] = array('determination', 'retenu', 'decompo');
$donnees['ongletsNv'] = array('determination', 'alphab');
if (@$_GET['action'] == 'rechercheAvancee') {
$donnees['urls']['alphab'] = $this->urls->obtenirUrlResultatAvanceOnglets('alphab', $this->param);
$donnees['urls']['retenu'] = $this->urls->obtenirUrlResultatAvanceOnglets('retenu', $this->param);
$donnees['urls']['determination'] = $this->urls->obtenirUrlResultatAvanceOnglets('determination',$this->param);
$donnees['urls']['decompo'] = $this->urls->obtenirUrlResultatAvanceOnglets('decompo',$this->param);
} else {
$donnees['urls']['alphab'] = $this->urls->obtenirUrlResultat('alphab', $this->param);
$donnees['urls']['retenu'] = $this->urls->obtenirUrlResultat('retenu', $this->param);
$donnees['urls']['determination'] = $this->urls->obtenirUrlResultat('determination', $this->param);
$donnees['urls']['decompo'] = $this->urls->obtenirUrlResultat('decompo', $this->param);
}
// Inversion du critère de filtrage de rang : espèces seulement VS tout (pas d'autre choix pour l'instant)
//echo "PARAMS: <pre>" . print_r($this->param, true) . "</pre><br/>";
$paramsAvecRangInverse = $this->param;
if (array_key_exists('rang', $paramsAvecRangInverse)) {
if ($paramsAvecRangInverse['rang'] == '*') {
$paramsAvecRangInverse['rang'] = 290;
} else {
unset ($paramsAvecRangInverse['rang']);
}
}
//echo "PARAMS INV: <pre>" . print_r($paramsAvecRangInverse, true) . "</pre><br/>";
$this->donneesTpl['urlInverse'] = $this->urls->obtenirUrlResultat($donnees['typeResultat'], $paramsAvecRangInverse);
//echo "URL INV: " . $this->donneesTpl['urlInverse'] . "<br/>";
 
$donnees['i18n']['nv'] = I18n::get('Resultat-onglets-nv');
$donnees['i18n']['ns'] = I18n::get('Resultat-onglets-ns');
$this->donneesTpl['ongletsHtml'] = $this->getVue('onglets', $donnees);
}
 
private function chargerNbreDeTaxons() {
$this->donneesTpl['nbreTaxons'] = $this->resultats['entete']['total'];
}
 
// Filtre selon le rang à afficher (espèce, genre... tout)
// et renvoie le nombre de taxons réellement affichés
private function filtrer() {
$nbTaxAff = 0;
if ($this->parametres->rang != null) {
foreach ($this->resultats['resultat'] as $c => $v) {
$numRang = substr($v['rang.code'], strrpos($v['rang.code'], ':') +1);
if ($numRang != $this->parametres->rang) {
unset($this->resultats['resultat'][$c]);
} else {
$nbTaxAff++;
}
}
} else {
$nbTaxAff = $this->resultats['entete']['total'];
}
return $nbTaxAff;
}
 
private function chargerNomsFormates() {
if (Config::get('benchmark_chrono')) Chronometre::chrono("Avt mise en forme des noms");
 
// Filtre selon $this->parametres['rang'] pour afficher seulement un rang, ou bien tous
// Valable uniquement pour la recherche par nom scientifique
//echo "<pre>".print_r($this->parametres, true)."</pre>";
if ($this->parametres->typeNom == 'nom_scientifique') {
$this->donneesTpl['nombreTaxonsAffiches'] = $this->filtrer();
$this->donneesTpl['rang'] = $this->parametres->rang;
} else {
$this->donneesTpl['nombreTaxonsAffiches'] = $this->donneesTpl['nbreTaxons'];
}
$this->donneesTpl['typeNom'] = $this->parametres->typeNom;
 
$formateur = ResultatFormateurFabrique::creer($this->parametres, $this->resultats);
if (Config::get('benchmark_chrono')) Chronometre::chrono("Avt formatage des noms");
$formateur->formater();
if (Config::get('benchmark_chrono')) Chronometre::chrono("Avt triage des noms");
$formateur->trier();
if (Config::get('benchmark_chrono')) Chronometre::chrono("Avt surlignage des noms");
$formateur->surligner();
if (Config::get('benchmark_chrono')) Chronometre::chrono("Avt création de la vue");
$this->donneesTpl['nomsHtml'] = $this->getVue($formateur->getTplNom(), $formateur->getTplInfos());
if (Config::get('benchmark_chrono')) Chronometre::chrono("Après mise en forme des noms");
}
}
?>
/tags/v5.10-vilmorin/modules/mobile/Mobile.php
New file
0,0 → 1,100
<?php
// declare(encoding='UTF-8');
/**
* Classe mère du module Mobile.
*
* @category PHP 5.2
* @package eflore-consultation
* @author Isabelle NEMBROT
* @author Aurélien PERONNET <aurelien@tela-botanica.org>
* @copyright 2015 Tela-Botanica
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
class Mobile extends aControleur {
 
private $parametres = array();
private $conteneur = null;
private $num_nom = 0;
private $nom_courant = null;
private $nom_retenu = '';
private $url;
 
public function initialiser() {
$this->capturerParametres();
$this->conteneur = new Conteneur($this->parametres);
$this->url = $this->conteneur->getAppUrls();
$this->nomCourant = $this->conteneur->getNomCourant();
$this->nom_retenu = $this->conteneur->getNomCourant()->getNomRetenu();
spl_autoload_register(array($this, 'chargerClassesSources'));
}
 
private function chargerClassesSources($classe) {
$base = dirname(__FILE__).DS;
$cheminSources = $base.'sources'.DS;
$dossiers = array($base, $cheminSources);
foreach ($dossiers as $chemin) {
$fichierATester = $chemin.$classe.'.php';
if (file_exists($fichierATester)) {
include_once $fichierATester;
return null;
}
}
}
 
private function capturerParametres() {
$this->parametres['num_nom'] = isset($_GET['num_nom']) ? $_GET['num_nom'] : '';
$this->parametres['nom'] = isset($_GET['nom']) ? $_GET['nom'] : '';
$this->parametres['type_nom'] = isset($_GET['type_nom']) ? $_GET['type_nom'] : 'nom_scientifique';
 
$referentiel = isset($_GET['referentiel']) ? $_GET['referentiel'] : '';
Registre::set('parametres.referentiel', $referentiel);
$this->parametres['referentiel'] = $referentiel;
 
$niveau = isset($_GET['niveau']) ? $_GET['niveau'] : '1';
Registre::set('parametres.niveau', $niveau);
}
 
public function executerActionParDefaut() {
$this->executerFiche();
}
 
public function executerFiche(){
$donnees = $this->parametres;
$donnees['nom_retenu'] = $this->nom_retenu->get('nom_sci').' '.$this->nom_retenu->get('auteur');
$donnees['famille'] = $this->nom_retenu->getTaxonSupRang('180');
$donnees = array_merge($this->obtenirDonnees(), $donnees);
$donnees['url_absolue'] = "http://".$_SERVER['SERVER_NAME'].'/'.$_SERVER['REQUEST_URI'];
$donnees['url_logos'] = "modules/mobile/presentations/logos/";
$donnees['lien'] = $this->url->obtenirUrlMobile($this->parametres['num_nom']);
$donnees['lien_fiche'] = $this->url->obtenirUrlFiche($this->parametres['num_nom']);
$tpl_edition = Config::get('smartFloreEditionFormulaireUrlTpl');
$url_edition = sprintf($tpl_edition, strtoupper($this->parametres['referentiel']), $this->nom_retenu->get('num_taxonomique'));
$donnees['lien_edition'] = $url_edition;
 
$this->setSortie(self::RENDU_CORPS, $this->getVue('smartflore', $donnees), true);
}
 
public function obtenirDonnees() {
$donnees = array();
$num_nom = $this->nomCourant->getNns();
$referentiel = $this->conteneur->getParametre('referentiel');
 
$taxons = new Taxons($this->conteneur);
$donnees['permalien_num_nom'] = $taxons->getUrlPermalienNumNom($referentiel, 1, $num_nom);
 
$sources = array('illustrations', 'texte', 'nomsCommuns');
foreach ($sources as $source) {
$nom_classe = ucfirst($source);
$classe = new $nom_classe($this->conteneur);
$donnees[$source] = $classe->getDonnees();
}
 
return $donnees;
}
}
?>
/tags/v5.10-vilmorin/modules/mobile/presentations/logos/logo-msjs.jpg
Cannot display: file marked as a binary type.
svn:mime-type = image/jpeg
/tags/v5.10-vilmorin/modules/mobile/presentations/logos/logo-msjs.jpg
New file
Property changes:
Added: svn:mime-type
+image/jpeg
\ No newline at end of property
/tags/v5.10-vilmorin/modules/mobile/presentations/logos/tela_transparent.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/modules/mobile/presentations/logos/tela_transparent.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/modules/mobile/presentations/logos/logo-fondation-nd.jpg
Cannot display: file marked as a binary type.
svn:mime-type = image/jpeg
/tags/v5.10-vilmorin/modules/mobile/presentations/logos/logo-fondation-nd.jpg
New file
Property changes:
Added: svn:mime-type
+image/jpeg
\ No newline at end of property
/tags/v5.10-vilmorin/modules/mobile/presentations/logos/tela.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/modules/mobile/presentations/logos/tela.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/modules/mobile/presentations/less/gentiana.less
New file
0,0 → 1,155
@import "functions.less";
 
.couleur1-bg { background: @orange; }
.couleur2-bg { background: @vert-moyen; }
.bordered { border: 1px solid @vert-fonce; }
 
.accordion {
h4 {
margin-left: -1em;
}
}
.accordion-group {
margin: 0pt;
}
.accordion-heading {
padding-left: 1em;
}
.btn-large {
padding: 10px;
font-size: 17px;
}
 
body {
color: black;
background: white;
}
 
header {
.couleur2-bg;
color: white;
#tela {
background: url("../logos/tela_transparent.png") no-repeat 2px 6px;
}
.titre {
font-style: italic;
font-size: 130%;
font-weight: bold;
.shadow(@orange);
}
}
.gradient-bas {
@top: left top;
@bottom: left bottom;
.gradient(@vert-moyen, @top, white, @bottom);
}
 
footer {
display: none;
}
 
 
.sci {
font-style: italic;
}
 
#principal {
margin-bottom: -1em;
padding-left: 0.5em;
a:hover {
text-decoration: none;
}
h4 {
font-size: 17px;
color: @orange;
.shadow(white, 2px, 1px, 1px);
}
}
 
#canvas_fleur, #canvas_fruit {
width: 100%;
}
#floraison_value, #fructification_value {
display: none;
}
 
 
.wrapper {
@square: 120px;
width: @square;
height: @square;
.margin-center;
overflow: hidden;
img {
height: @square;
width: auto;
}
ul {
margin: 0pt;
}
}
 
.wrapper_carte {
.margin-center;
ul {
margin: 0pt;
}
 
#galerie_carte {
img {
.bordered;
}
}
}
 
.wrapper_demi {
height: 59px;
}
 
#galerie_carte {
list-style-type: none;
}
.bas-de-page {
margin-top: 1em;
margin-bottom: 1em;
}
.en-savoir-plus {
margin-left: 0.2em;
float: left;
.couleur2-bg;
color: white;
text-shadow: 0pt 0pt 0pt black;
}
.en-savoir-plus:hover, .en-savoir-plus:visited {
text-decoration: none;
}
 
 
.haut-de-page {
margin-right: 0.2em;
float: right;
background: black;
color: white;
}
.haut-de-page:hover, .haut-de-page:visited {
text-decoration: none;
}
 
 
/tags/v5.10-vilmorin/modules/mobile/presentations/less/README
New file
0,0 → 1,6
1./ Installer les paquets de LESS (sous Mageia: ruby-less)
Dans la description, il doit y avoir une mention du mot "CSS".
 
2./ En ligne de commande, se déplacer dans le dossier contenant les fichiers LESS.
Pour convertir le fichier "fichier.less" en "fichier.css", la commande est :
lessc fichier.less > fichier.css
/tags/v5.10-vilmorin/modules/mobile/presentations/less/functions.less
New file
0,0 → 1,45
@gris: #6B7071;
@orange: #ED7826;
@orange-moyen: #F3B88F;
@rouge: rgb(225, 96, 57);
@vert-fonce: #256226;
@vert-moyen: #88AB1C;
@violet: rgb(176, 77, 255);
 
.align-center { text-align: center; }
.margin-center {
margin-left: auto;
margin-right: auto;
}
.margin-bottom-05em { margin-bottom: 0.5em; }
.margin-right-05em { margin-right: 0.5em; }
.margin-top-05em { margin-top: 0.5em; }
 
.padding-05em { padding: 0.5em; }
.padding-left-1em { padding-left: 1em; }
.padding-left-01em { padding-left: 0.1em; }
 
.small-caps { font-variant:small-caps; }
 
.gradient(@color_start:'', @position_start:'', @color_end:'', @position_end:'') {
background-image: linear-gradient(top, @color_start 0%, @color_end 100%);
background-image: -o-linear-gradient(top, @color_start 0%, @color_end 100%);
background-image: -moz-linear-gradient(top, @color_start 0%, @color_end 100%);
background-image: -webkit-linear-gradient(top, @color_start 0%, @color_end 100%);
background-image: -ms-linear-gradient(top, @color_start 0%, @color_end 100%);
 
background-image: -webkit-gradient(linear, @position_start, @position_end, color-stop(0, @color_start), color-stop(1, @color_end));
 
height: 16px;
display: block;
}
 
.shadow(@color:'', @decalage-x: 0pt, @decalage-y: 1px, @fondu: 1px) {
text-shadow: @decalage-x @decalage-y @fondu @color;
}
 
.border-radius(@radius: 2em) {
border-radius: @radius;
-moz-border-radius: @radius;
-webkit-border-radius: @radius;
}
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/tags/v5.10-vilmorin/modules/mobile/presentations/less/pyracantha_blanc.less
New file
0,0 → 1,94
@import "pyracantha.less";
 
.couleur1-bg { background: white; }
.couleur2-bg { background: white; }
 
 
body {
background: white;
}
 
 
header {
background: @vert-moyen;
}
 
 
.tela {
img {
@width: 60px;
width: @width;
max-width: @width;
}
}
 
 
.titre {
color: white;
.shadow(@orange);
}
 
 
.infos {
 
.bg {
padding: 0.2em;
border-radius: 0pt 0pt 1em 1em;
}
.btn {
padding: 0pt;
border-radius: 1em 1em 0pt 0pt;
}
.collapse {
width: 100%;
}
h4 {
color: @orange;
}
.textes {
padding: 0.5em 1em;
.border-radius(2em);
-webkit-overflow-scrolling: touch;
h4 {
color: @vert-fonce;
.shadow(@vert-moyen, 2px, 1px, 1px);
}
}
}
 
 
.resume {
color: black;
}
 
 
.gradient-bas {
@top: left top;
@bottom: left bottom;
@color_start: @vert-moyen;
@color_end: white;
background-image: linear-gradient(top, @color_start 0%, @color_end 100%);
background-image: -o-linear-gradient(top, @color_start 0%, @color_end 100%);
background-image: -moz-linear-gradient(top, @color_start 0%, @color_end 100%);
background-image: -webkit-linear-gradient(top, @color_start 0%, @color_end 100%);
background-image: -ms-linear-gradient(top, @color_start 0%, @color_end 100%);
background-image: -webkit-gradient(linear, @top, @bottom, color-stop(0, @color_start), color-stop(1, @color_end));
}
 
.en-savoir-plus {
color: white;
background: @vert-moyen;
}
 
.haut-de-page {
color: white;
background: black;
}
/tags/v5.10-vilmorin/modules/mobile/presentations/less/pyracantha.less
New file
0,0 → 1,166
@import "functions.less";
 
.gradient-bas {
height: 16px;
display: block;
}
 
footer {
height: 60px;
width: 100%;
left: 0;
right: 0;
bottom: 0;
position: fixed;
z-index: 1000;
color: white;
background: black;
a, a:visited {
color: white;
}
}
 
.tela {
margin-right: 0.5em;
}
 
.titre {
font-style: italic;
font-size: 130%;
font-weight: bold;
margin-top: 0.5em;
margin-bottom: 0.5em;
}
 
.sci {
font-style: italic;
}
 
#div-infos-latin, #div-infos-famille {
.margin-center;
.btn {
width: 99%;
padding-left: 0pt;
padding-right: 0pt;
box-shadow: 0pt 2px 3px black;
}
a {
font-size: 16px;
}
}
 
#div-infos-famille {
margin-top: -1em;
}
#div-illustrations {
.border-radius(2em);
background: white;
margin-top: -1em;
padding-top: 20px;
padding-bottom: 20px;
}
 
 
#galerie_carte {
list-style-type: none;
}
 
@height: 260px;
#slider-pictures {
max-width: 320px;
.margin-center;
.carousel {
margin-bottom: 0pt;
}
.carousel-control {
background: none;
}
 
 
.carousel-inner > .item > img {
width: 320px;
max-height: 310px;
}
.carousel-indicators {
li {
background: @vert-fonce;
}
.active {
background: @orange;
}
}
.carousel-caption {
padding: 10px;
position: static;
h4 {
font-size: 100%;
}
p {
font-size: 90%;
}
}
 
img {
.margin-center;
}
}
 
 
#gstn-img {
max-height: 120px;
margin: 0.5em 0pt 1em 0pt;
display: inline-block;
img {
border: #EAEAEA 2px solid;
width: 100px;
}
 
 
.zoom {
margin-top: 40px;
width: 20px;
border: none;
}
}
 
 
.resume {
.align-center;
margin-top: 1em;
margin-bottom: 1em;
font-size: 16px;
}
 
 
.bas-de-page {
margin-top: 1em;
margin-bottom: 1em;
}
 
.en-savoir-plus {
float: left;
text-shadow: 0pt 0pt 0pt black;
}
 
.haut-de-page {
float: right;
}
/tags/v5.10-vilmorin/modules/mobile/presentations/less/pyracantha_vert.less
New file
0,0 → 1,92
@import "pyracantha.less";
 
.couleur1-bg { background: #9ac342; }
.couleur2-bg { background: #88ab1c; }
 
 
body {
background: white;
}
 
 
header {
background: @vert-moyen;
}
 
 
.tela {
img {
@width: 60px;
width: @width;
max-width: @width;
}
}
 
 
.titre {
color: white;
.shadow(@orange);
}
 
 
.infos {
 
.bg {
padding: 0.2em;
border-radius: 0pt 0pt 1em 1em;
}
.btn {
padding: 0pt;
border-radius: 1em 1em 0pt 0pt;
}
.collapse {
width: 100%;
}
.textes {
padding: 0.5em 1em;
.border-radius(2em);
background: white;
-webkit-overflow-scrolling: touch;
h4 {
color: @vert-fonce;
.shadow(@vert-moyen, 2px, 1px, 1px);
}
}
}
 
 
.resume {
color: black;
}
 
 
.gradient-bas {
@top: left top;
@bottom: left bottom;
@color_start: @vert-moyen;
@color_end: white;
background-image: linear-gradient(top, @color_start 0%, @color_end 100%);
background-image: -o-linear-gradient(top, @color_start 0%, @color_end 100%);
background-image: -moz-linear-gradient(top, @color_start 0%, @color_end 100%);
background-image: -webkit-linear-gradient(top, @color_start 0%, @color_end 100%);
background-image: -ms-linear-gradient(top, @color_start 0%, @color_end 100%);
background-image: -webkit-gradient(linear, @top, @bottom, color-stop(0, @color_start), color-stop(1, @color_end));
}
 
.en-savoir-plus {
color: white;
background: @violet;
}
 
.haut-de-page {
color: white;
background: black;
}
/tags/v5.10-vilmorin/modules/mobile/presentations/less/pyracantha_tela.less
New file
0,0 → 1,97
@import "pyracantha.less";
 
.couleur1-bg { background: @orange; }
.couleur2-bg { background: @vert-moyen; }
 
 
body {
background: @vert-fonce;
}
 
 
header {
background: white;
}
 
 
.tela {
img {
@width: 80px;
width: @width;
max-width: @width;
}
}
 
 
.titre {
color: black;
.shadow(@orange);
}
 
 
.infos {
 
.bg {
padding: 1em;
.border-radius(2em);
}
.btn {
padding: 0pt;
.border-radius(2em);
}
.collapse {
width: 100%;
}
@max-height: 220px;
.textes {
padding: 1em;
.border-radius(2em);
max-height: @max-height;
overflow: auto;
background: @orange-moyen;
-webkit-overflow-scrolling: touch;
h4 {
color: @vert-fonce;
.shadow(@vert-moyen, 2px, 1px, 1px);
}
}
}
 
 
 
.resume {
color: white;
}
 
 
.gradient-bas {
@top: left top;
@bottom: left bottom;
@color_start: white;
@color_end: @vert-fonce;
background-image: linear-gradient(top, @color_start 0%, @color_end 100%);
background-image: -o-linear-gradient(top, @color_start 0%, @color_end 100%);
background-image: -moz-linear-gradient(top, @color_start 0%, @color_end 100%);
background-image: -webkit-linear-gradient(top, @color_start 0%, @color_end 100%);
background-image: -ms-linear-gradient(top, @color_start 0%, @color_end 100%);
background-image: -webkit-gradient(linear, @top, @bottom, color-stop(0, @color_start), color-stop(1, @color_end));
}
 
.en-savoir-plus {
color: white;
background: @violet;
}
 
.haut-de-page {
color: white;
background: black;
}
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/tags/v5.10-vilmorin/modules/mobile/presentations/css/smartflore.css
New file
0,0 → 1,226
#smartflore-fiche #smartflore-entete h1 {
font-size: 3.5em;
margin-top: 10px;
margin-bottom: -10px;
}
 
#smartflore-fiche .smartflore-titre-section {
background-color: #928B71;
color: #FFFFFF;
padding-top: 10px;
padding-bottom: 10px;
margin-bottom: 20px;
}
 
#smartflore-fiche .smartflore-titre-section a {
font-size: 2em;
font-weight: bold;
}
 
#smartflore-fiche .smartflore-titre-section .panel-title {
text-align: center;
}
 
#smartflore-fiche .smartflore-titre-section-icone {
float: left;
}
 
#smartflore-fiche .smartflore-contenu-section {
margin: 20px;
font-size: 1.5em;
text-align: justify;
}
 
#smartflore-fiche #smartflore-entete {
text-align: center;
}
 
#smartflore-fiche .smart-flore-sf {
font-size: 2em;
color: #DE6E40;
}
 
#smartflore-fiche #smart-flore-logo-tela {
bottom: 15px;
height: 80px;
position: relative;
}
 
#smartflore-fiche #smartflore-footer .smartflore-footer-bouton {
text-align: center;
}
 
#smartflore-fiche #smartflore-footer .smartflore-footer-bouton .btn {
font-size: 2em;
background-color: #928B71;
color: #FFFFFF;
}
 
#smartflore-fiche #smartflore-noms h2 {
margin-top: 0px;
font-size: 1.5em;
}
 
#smartflore-illustrations {
background-color: #928B71;
padding-bottom: 10px;
padding-top: 10px;
margin-bottom: 20px;
}
 
#smartflore-illustrations .carousel-inner {
height: 40vh;
max-width: 100%;
}
 
#smartflore-illustrations .carousel-inner .item {
height: 100%;
}
 
#smartflore-illustrations .carousel-inner .item img {
height: 100%;
max-width: 100vw;
}
 
#smartflore-illustrations .carousel-control.right {
background-image : none;
}
 
#smartflore-illustrations .carousel-control.left {
background-image : none;
}
 
#smartflore-fiche #smartflore-noms h3, #smartflore-fiche #smartflore-noms h4 {
font-size: 1.1em;
}
 
#smartflore-fiche #smartflore-noms {
font-size: 2em;
color: #FFFFFF;
text-align: center;
}
 
#smartflore-fiche .smartflore-nom-verna {
margin-bottom: 0px;
}
 
#smartflore-fiche .smartflore-nom-sci, #smartflore-fiche .smartflore-famille {
margin-top: 5px;
display: inline-block;
}
 
#smartflore-fiche .smartflore-nom-sci {
font-style: italic;
}
 
#smartflore-footer #smartflore-sources {
display: none;
}
 
#smartflore-partenaires {
padding-left: 0px;
padding-right: 0px;
margin-top: 15px;
}
 
#smartflore-footer #smartflore-partenaires #smartflore-accordeon-partenaires {
background-color: #EEEEEE;
color: black;
font-size: 2em;
margin-bottom: 0;
text-align: center;
color: #666666;
}
 
#smartflore-footer #collapse-partenaires {
padding-bottom: 5px;
font-size: 0.8em;
}
 
#smartflore-footer #smartflore-partenaires #smartflore-accordeon-partenaires h4 {
font-size: 0.8em;
}
 
#smartflore-footer .smartflore-footer-partenaires-logo {
max-height: 30vh;
max-width: 40vw;
}
 
/**
*
* Media Queries
*
*/
@media screen and (max-width: 384px) {
#smartflore-fiche #smartflore-entete h1 {
font-size: 2.2em;
}
#smartflore-fiche .smartflore-contenu-section {
margin: 20px;
font-size: 1em;
}
#smartflore-fiche #smartflore-noms h2 {
font-size: 1.2em;
}
#smartflore-fiche #smartflore-noms h3, #smartflore-fiche #smartflore-noms h4 {
font-size: 0.6em;
}
#smartflore-fiche #smartflore-footer .smartflore-footer-bouton .btn, #smartflore-footer .smartflore-titre-partenaires {
font-size: 0.9em;
}
#smartflore-fiche .smartflore-titre-section a {
font-size: 1.5em;
}
#smartflore-illustrations-galerie-carousel .carousel-caption {
font-size: 0.83em;
bottom: 0px;
}
#smartflore-illustrations-galerie-carousel .carousel-indicators {
bottom: -10px;
}
}
 
@media all and (orientation:portrait) {
#smartflore-illustrations .carousel-inner {
height: 40vh;
}
#smartflore-fiche #smart-flore-logo-tela {
bottom: 13px;
height: 7vh;
position: relative;
min-height: 50px;
}
#smartflore-fiche #smartflore-entete h1 {
margin-top: -3px;
margin-bottom: -6px;
}
}
 
@media all and (orientation:landscape) {
#smartflore-illustrations .carousel-inner {
height: 90vh;
}
#smartflore-fiche #smartflore-entete h1 {
margin-top: -10px;
margin-bottom: -10px;
}
#smartflore-illustrations-galerie-carousel .carousel-caption {
font-size: 0.9em;
bottom: 2px;
}
#smartflore-illustrations-galerie-carousel .carousel-indicators {
bottom: -10px;
}
}
/tags/v5.10-vilmorin/modules/mobile/presentations/js/mobile.js
New file
0,0 → 1,36
$(document).ready(function() {
// Activation du carousel d'images
$('#smartflore-illustrations-galerie-carousel').carousel();
// Pour que les sources s'affichent dans une nouvelle fenêtre
$('#smartflore-footer-button-sources').click(function() {
voirSources();
});
// Pas sur que window.innerWidth puisse jamais être indéfini mais on ne sait jamais
if(!!window.innerWidth) {
var largeurFenetre = window.innerWidth;
// Tablettes / écran moyens, On met du L
if(largeurFenetre > 500 && largeurFenetre < 1000) {
adapterTailleImages('L');
} else {
// Plus de 1000 px, XL est bien plus agréable
if(largeurFenetre >= 1000) {
adapterTailleImages('XL');
}
}
}
function voirSources() {
var w = window.open();
var html = $("#smartflore-sources").html();
$(w.document.body).html(html);
}
function adapterTailleImages(taille) {
$('#smartflore-illustrations-galerie-carousel img').each(function(index) {
var src = $(this).attr('src');
$(this).attr('src', src.replace('S', taille));
});
}
});
/tags/v5.10-vilmorin/modules/mobile/presentations/icones/altitude.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/modules/mobile/presentations/icones/altitude.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/modules/mobile/presentations/icones/zoom.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.10-vilmorin/modules/mobile/presentations/icones/zoom.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.10-vilmorin/modules/mobile/squelettes/smartflore.tpl.html
New file
0,0 → 1,186
<?php
$icones = array('glyphicon-eye-open', 'glyphicon-grain', 'glyphicon-home');
$index_icones = 0;
?>
<!DOCTYPE html>
<html>
<head>
<title>Smart'Flore</title>
<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" />
<meta http-equiv="cache-control" content="no-cache">
<!-- Favicones -->
<link rel="shortcut icon" type="image/x-icon" href="http://resources.tela-botanica.org/tb/img/16x16/favicon.ico" />
<!-- Viewport -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, minimal-ui">
<!-- CSS -->
<link href="http://www.tela-botanica.org/commun/jquery/photoswipe/3.0.5/photoswipe.css" type="text/css" rel="stylesheet" />
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<link href="<?= $css ?>" rel="stylesheet" type="text/css" id="custom-css" />
<link href="modules/mobile/presentations/css/smartflore.css" rel="stylesheet" type="text/css" id="smart-flore-css" />
 
<!-- Javascript -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="http://www.tela-botanica.org/commun/jquery/photoswipe/3.0.5/klass.min.js"></script>
<script src="http://www.tela-botanica.org/commun/jquery/photoswipe/3.0.5/code.photoswipe.jquery-3.0.5.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
<script src="modules/mobile/presentations/js/mobile.js"></script>
<style>
.btn {border-radius:2em;}
.container-fluid {padding: 0px;}
[class*="span"] {margin-left: 0px;}
.accordion {margin-top: 1em;}
.accordion-heading .accordion-toggle {padding: 0pt 10px;}
</style>
</head>
 
<body>
<div id="smartflore-fiche">
<div id="smartflore-entete">
<h1>
<img id="smart-flore-logo-tela" src="http://resources.tela-botanica.org/tb/img/128x128/logo_carre_officiel.png" /> <span class="smart-flore-sf">S</span>mart'<span class="smart-flore-sf">F</span>lore
</h1>
</div>
<div id="smartflore-illustrations">
<div id="smartflore-noms">
<h2 class="smartflore-nom-verna">
<?= $texte['titre'][0]; ?>
</h2>
<h3 class="smartflore-nom-sci">
<?= $texte['titre'][1]; ?>
</h3>
<h4 class="smartflore-famille">
Famille des <?= $texte['titre'][2]; ?>
</h4>
</div>
<div id="smartflore-illustrations-galerie">
<? if (count($illustrations) != 0) : ?>
<div id="smartflore-illustrations-galerie-carousel" class="carousel slide" data-ride="carousel" data-interval="false">
<!-- Indicators -->
<ol class="carousel-indicators">
<? for($ill = 0; $ill < count($illustrations); $ill++) { ?>
<li data-target="#smartflore-illustrations-galerie-carousel" data-slide-to="<?= $ill; ?>" class="<?= ($ill == 0) ? 'active' : ''; ?>"></li>
<?php } ?>
</ol>
<!-- Wrapper for slides -->
<div class="carousel-inner" role="listbox">
<? for($ill = 0; $ill < count($illustrations); $ill++) { ?>
<div class="item <?= ($ill == 0) ? 'active' : ''; ?>">
<? if (trim($illustrations[$ill]['legende']['texte']) != '&nbsp;') : ?>
<? $alt = $illustrations[$ill]['legende']['titre'].' ('.$illustrations[$ill]['legende']['texte'].')'; ?>
<? else : ?>
<? $alt = $illustrations[$ill]['legende']['titre']; ?>
<? endif; ?>
<img class="img-responsive center-block" src="<?= $illustrations[$ill]['src']; ?>" alt="<?= $alt; ?>">
<div class="carousel-caption">
<?= $alt; ?>
</div>
</div>
<?php } ?>
</div>
<!-- Controls -->
<a class="left carousel-control" href="#smartflore-illustrations-galerie-carousel" role="button" data-slide="prev">
<span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</a>
<a class="right carousel-control" href="#smartflore-illustrations-galerie-carousel" role="button" data-slide="next">
<span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</a>
</div>
<? endif; ?>
</div>
</div>
<div id="smartflore-sections">
<div class="panel-group" id="smartflore-accordeon-sections" role="tablist" aria-multiselectable="true">
<div>
<? foreach($texte['corps'] as $titre_section => $texte_section) : ?>
<div class="panel-heading smartflore-titre-section" role="tab" id="heading<?= md5($titre_section); ?>">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#smartflore-accordeon-sections" href="#collapse<?= md5($titre_section); ?>" aria-expanded="true" aria-controls="collapse<?= md5($titre_section); ?>">
<span class="glyphicon <?= $icones[$index_icones++]; ?> smartflore-titre-section-icone margin-left-1em margin-top-03em"></span>
<?= $titre_section; ?>
</a>
</h4>
</div>
<div id="collapse<?= md5($titre_section); ?>" class="panel-collapse collapse smartflore-contenu-section" role="tabpanel" aria-labelledby="heading<?= md5($titre_section); ?>">
<div class="panel-body">
<?= $texte_section; ?>
</div>
</div>
<? endforeach; ?>
</div>
</div>
</div>
<div id="smartflore-footer">
<div class="col-md-12">
<div class="col-md-4 col-xs-4 smartflore-footer-bouton">
<a href="<?= $lien_fiche; ?>" target="_blank">
<button type="button" class="btn btn-default" aria-label="Left Align">
En savoir plus
</button>
</a>
</div>
<div class="col-md-4 col-xs-4 smartflore-footer-bouton">
<button id="smartflore-footer-button-sources" type="button" class="btn btn-default" aria-label="Left Align">
Sources
</button>
<div id="smartflore-sources">
<?= $texte['sources']; ?>
</div>
</div>
<div class="col-md-4 col-xs-4 smartflore-footer-bouton">
<a href="<?= $lien_edition; ?>" target="_blank">
<button type="button" class="btn btn-default" aria-label="Left Align">
Modifier
</button>
</a>
</div>
</div>
<div class="clearfix"></div>
<div class="col-md-12" id="smartflore-partenaires">
<div class="panel-group" id="smartflore-accordeon-partenaires" role="tablist" aria-multiselectable="true">
<div class="panel-heading smartflore-titre-partenaires" role="tab" id="heading-partenaires">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#smartflore-accordeon-partenaires" href="#collapse-partenaires" aria-expanded="true" aria-controls="collapse-partenaires">
<span class="glyphicon glyphicon-linkglyphicon glyphicon-link smartflore-titre-partenaires-icone margin-left-1em margin-top-03em"></span>
Partenaires
</a>
</h4>
</div>
<div id="collapse-partenaires" class="panel-collapse collapse smartflore-contenu-partenaires" role="tabpanel" aria-labelledby="heading-partenaires">
<div class="panel-body">
<div class="col-md-6 col-xs-6">
<img class="smartflore-footer-partenaires-logo" src="<?= $url_logos; ?>logo-msjs.jpg" />
</div>
<div class="col-md-6 col-xs-6">
<img class="smartflore-footer-partenaires-logo" src="<?= $url_logos; ?>logo-fondation-nd.jpg" />
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
/tags/v5.10-vilmorin/modules/mobile/sources/Texte.php
New file
0,0 → 1,129
<?php
// declare(encoding='UTF-8');
/**
* Classe Mobile Wikini.
*
* @category PHP 5.2
* @package eflore-consultation
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
* @author Isabelle NEMBROT <isabelle.nembrot@tela-botanica.org>
* @copyright 2013 Tela-Botanica
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
class Texte extends aControleur {
 
private $conteneur = null;
private $donnees = array();
private $format = "text/html";
 
public function __construct(Conteneur $conteneur) {
$this->conteneur = $conteneur;
$this->nomCourant = $this->conteneur->getNomCourant();
parent::__construct();
}
public function getDonnees() {
$url_wiki = $this->obtenirUrlWikini();
$obj = json_decode(file_get_contents($url_wiki));
//echo '<pre>'.print_r($obj, true).'</pre>';exit;
$this->donnees['corps'] = $obj->{'texte'};
if (strpos($this->format, "html") != false) {
$this->obtenirCorpsHtml();
} else {
$this->obtenirCorpsPlain();
}
if ($this->donnees['corps'] != "") {
$this->donnees['corps'] = preg_split('/===/', $this->donnees['corps'], -1, PREG_SPLIT_NO_EMPTY);
$this->extraireInfosTableauCorps();
if (strpos($this->format, "html") != false) {
$this->obtenirTitreHtml();
} else {
$this->obtenirTitrePlain();
}
}
return $this->donnees;
}
private function extraireInfosTableauCorps() {
$this->donnees['titre'] = array_shift($this->donnees['corps']);
$this->donnees['sources'] = array_pop($this->donnees['corps']);
// array_pop "gratuit" pour supprimer la case qui ne contient que le terme "sources"
array_pop($this->donnees['corps']);
$corps_fmt = array();
// Le tableau contient un titre de section puis son contenu, puis le titre de la section suivante
// puis son contenu on dépile les éléments deux par deux pour faire un tableau associatif pas trop relou à afficher
for($i = 0; $i < count($this->donnees['corps']); $i = $i+2) {
$corps_fmt[$this->donnees['corps'][$i]] = $this->donnees['corps'][$i + 1];
}
$this->donnees['corps'] = $corps_fmt;
}
//formater pour AppUrls ?
public function obtenirUrlWikini() {
$titre = urlencode("Fiche simplifiée Smart'flore");
$base_url_wiki = Config::get('smartFloreWikiTpl');
$url_wiki = $base_url_wiki
.strtoupper($this->conteneur->getParametre('referentiel'))."nt".$this->nomCourant->getNomSelectionne()->get('num_taxonomique')
."?txt.format=".$this->format."&txt.section.titre=".$titre;
return ($url_wiki);
}
private function obtenirCorpsHtml() {
$a_remplacer = array('<h3>', '</h3>');
$this->donnees['corps'] = str_replace($a_remplacer, "===", $this->donnees['corps']);
}
private function obtenirCorpsPlain() {
$a_enlever = array(Chr(10).'=', '='.Chr(10), Chr(10).''.Chr(10));
$this->donnees['corps'] = str_replace($a_enlever, '', $this->donnees['corps']);
$this->donnees['corps'] = str_replace(Chr(10), '<br />', $this->donnees['corps']);
}
private function obtenirTitreHtml() {
$a_remplacer = array('<b>', '</b>', '(<br />', '<br />)');
$this->donnees['titre'] = str_replace($a_remplacer, '<br />', $this->donnees['titre']);
$a_enlever = array(Chr(10).'<br />', '<br />'.Chr(10), Chr(10).''.Chr(10), '<br />'.Chr(10).'<br />'.Chr(10));
$this->donnees['titre'] = str_replace($a_enlever, '', $this->donnees['titre']);
$this->separer_NomCommun_NomSci();
}
 
private function separer_NomCommun_NomSci() {
$this->donnees['titre'] = str_replace('<br />', '::', $this->donnees['titre']);
$this->donnees['titre'] = preg_split("/::/", $this->donnees['titre'], -1, PREG_SPLIT_NO_EMPTY);
$this->donnees['nom-commun'] = $this->donnees['titre'][0]; // sauf erreur ? parser le wikini serait peut-être plus adapté
}
private function obtenirTitrePlain() {
$this->donnees['titre'] = str_replace('**', '<br />', $this->donnees['titre']);
$a_remplacer = array('(<br />', '<br />)', '<br /><br />');
$this->donnees['titre'] = str_replace($a_remplacer, '<br />', $this->donnees['titre']);
$this->separer_NomCommun_NomSci();
$this->separer_NomSci_NomAuteur();
}
 
private function separer_NomSci_NomAuteur() {
$nom_sci = str_replace('//', '::', $this->donnees['titre'][1]);
$nom_sci = preg_split("/::/", $nom_sci, -1, PREG_SPLIT_NO_EMPTY);
$this->donnees['titre'][1] = "<i>".$nom_sci[0]."</i> ".$nom_sci[1];
}
}
?>
/tags/v5.10-vilmorin/modules/mobile/sources/Floraison.php
New file
0,0 → 1,198
<?php
// declare(encoding='UTF-8');
/**
* Classe mère du module Liste.
*
* @category PHP 5.2
* @package eflore-consultation
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
* @copyright 2011 Tela-Botanica
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
class Floraison extends aControleur {
 
private $conteneur = null;
private $nomCourant = null;
private $textes = null;
private $meta = null;
private $wikini = null;
private $informations = null;
private $mois = array('janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août',
'septembre', 'octobre', 'novembre', 'décembre');
private $CosteFormate;
private $CosteTexte;
private $referentiel = 'bdtfx';
private $donnees = array();
 
public function __construct(Conteneur $conteneur) {
$this->conteneur = $conteneur;
$this->nomCourant = $this->conteneur->getNomCourant();
$this->referentiel = $this->conteneur->getParametre('referentiel');
$this->textes = $this->conteneur->getApiTextes();
$this->wikini = $this->conteneur->getApiWikini();
$this->meta = $this->conteneur->getApiMetaDonnees();
$this->informations = $this->conteneur->getApiInformations();
$this->appUrls = $this->conteneur->getAppUrls();
}
public function getDonnees() {
if ($this->referentiel == 'bdtfx') {
$this->getCoste();
}
if (isset($this->CosteFormate['floraison'])) {
$this->donnees['floraison'] = $this->getIndiceMois($this->CosteFormate['floraison']);
} else {
$this->getFloraisonBaseflor();
}
if (isset($this->CosteFormate['fructification'])) {
$this->donnees['fructification'] = $this->getIndiceMois($this->CosteFormate['fructification']);
} else {
$this->donnees['fructification'] = -1;
}
return $this->donnees;
}
private function getCoste() {
$coste = array();
$this->textes->setProjet('coste');
$this->textes->setId('bdtfx.nn:'.$this->nomCourant->getNnr());
$texte = $this->textes->getTexte();
$texte = array_pop($texte['resultats']);
if ($texte) {
$coste['titre'] = $texte['titre'];
// TODO: réintroduire les modif' effectuées sur modules/fiche/formateurs/Description.php
// -les joies du code copié/collé-
$coste['description'] = $this->mettreEnFormeCoste($texte['texte']);
}
$this->donnees['coste'] = $coste;
}
private function getIndiceMois($elt) {
$mois = array('janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août',
'septembre', 'octobre', 'novembre', 'décembre');
$indice_mois = -1;
$elt = $this->nettoyerTexte($elt);
$arr = preg_split('/-/', $elt, -1, PREG_SPLIT_NO_EMPTY);
if (isset($arr[1])) {
$mois1 = $this->getIndiceMois($arr[0]);
$mois2 = $this->getIndiceMois($arr[1]);
$indice_mois = $mois1.'-'.$mois2;
} else {
for ($i = 0; $i < count($mois); $i++) {
if ($elt == $mois[$i]) {
$indice_mois = $i;
}
}
}
return $indice_mois;
}
private function nettoyerTexte($texte) {
$texte = trim($texte);
$a_effacer = array('.', ' ', 'de');
$texte = str_replace($a_effacer, '', $texte);
 
$texte = strtolower($texte);
return $texte;
}
 
private function getFloraisonBaseflor() {
$baseflor = array();
$this->informations->setProjet('baseflor');
$this->informations->setBdnt($this->conteneur->getParametre('referentiel'));
$this->informations->setNum_nom($this->conteneur->getParametre('num_nom'));
$informations = $this->informations->getInformationsDescription();
if ($informations){
$baseflor['chorologie'] = isset($informations['chorologie']) ? $informations['chorologie'] : '';
$baseflor['inflorescence'] = isset($informations['inflorescence']) ? $informations['inflorescence'] : '';
$baseflor['sexualite'] = isset($informations['sexualite']) ? $informations['sexualite'] : '';
$baseflor['ordre_maturation'] = isset($informations['ordre_maturation']) ? $informations['ordre_maturation'] : '';
$baseflor['pollinisation'] = isset($informations['pollinisation']) ? $informations['pollinisation'] : '';
$baseflor['dissemination'] = isset($informations['dissemination']) ? $informations['dissemination'] : '';
$baseflor['fruit'] = isset($informations['fruit']) ? $informations['fruit'] : '';
$baseflor['couleur_fleur'] = isset($informations['couleur_fleur']) ? $informations['couleur_fleur'] : '';
$baseflor['macule'] = isset($informations['macule']) ? $informations['macule'] : '';
$baseflor['type_bio'] = isset($informations['type_bio']) ? $informations['type_bio'] : '';
$baseflor['form_vegetale'] = isset($informations['form_vegetale']) ? $informations['form_vegetale'] : '';
$baseflor['floraison'] = isset($informations['floraison']) ? $informations['floraison'] : '';
}
$this->donnees['baseflor'] = $baseflor;
$this->donnees['floraison'] = $baseflor['floraison'];
}
 
 
public function mettreEnFormeCoste($texte){
$this->CosteFormate = array();
$this->CosteTexte = $texte;
//decouper elements remarquables avant le texte
$this->separerNomScientifique_a_NomCommun();
$this->CosteTexte = preg_replace('/\//','',$this->CosteTexte);
//decouper elements remarquables après le texte
$this->separerEcologie_a_Usages();
//le morceau qui reste est le gros de la description
$this->CosteTexte = str_replace(';','<br /> -','- '.$this->CosteTexte);
$this->CosteTexte = str_replace('–','',$this->CosteTexte);
$this->CosteFormate['texte'] = htmlspecialchars_decode(htmlentities($this->CosteTexte, ENT_NOQUOTES, 'UTF-8'), ENT_NOQUOTES);
return $this->CosteFormate;
}
 
public function separerNomScientifique_a_NomCommun(){
if ( preg_match('/\*\*(.+)\*\*([^–]*)–/', $this->CosteTexte, $retour)){
/* !! attention on enlève un tiret cadratin – pas un trait d'union - !! */
$a_enlever = array('/–/','/\./' );
$this->CosteFormate['nom_scientifique'] = preg_replace($a_enlever,'',$retour[1]);
if(preg_match('/\((.+)\)/',$retour[2],$synonymes)){
$this->CosteFormate['synonymes'] = $synonymes[1];
} else {
$this->CosteFormate['nom_scientifique'] .= $retour[2];
}
$this->CosteTexte = str_replace($retour[0],'',$this->CosteTexte);
}
/* !! attention il y a un espace avant les // du début !! */
if ( preg_match('/^ \/\/([^\/\/]+)\/\//', $this->CosteTexte, $retour)){
$a_enlever = array('/–/','/\./' );
$this->CosteFormate['nom_commun'] = preg_replace($a_enlever,'',$retour[1]);
$this->CosteTexte = str_replace($retour[0],'',$this->CosteTexte);
}
}
 
public function separerEcologie_a_Usages(){
if ( preg_match('/\.[ ]*([A-ZÉÀÈ].+)$/',$this->CosteTexte, $retour)){
$this->CosteFormate['ecologie'] = $retour[1];
$this->CosteTexte = str_replace($retour[0],'.',$this->CosteTexte);
if (isset($this->CosteFormate['ecologie']) && preg_match('/–(.+)/', $this->CosteFormate['ecologie'] , $retour)){
$this->CosteFormate['repartition'] = $retour[1];
$this->CosteFormate['ecologie'] = str_replace($retour[0],'',$this->CosteFormate['ecologie']);
}
if (isset($this->CosteFormate['repartition']) && preg_match('/=(.+)$/', $this->CosteFormate['repartition'], $retour)){
$this->CosteFormate['floraison'] = $retour[1];
$this->CosteFormate['repartition'] = str_replace($retour[0],'',$this->CosteFormate['repartition']);
}
if (isset($this->CosteFormate['floraison']) && preg_match('/–(.+)$|\n(.+)$/',$this->CosteFormate['floraison'], $retour)){
$this->CosteFormate['usages'] = isset($retour[1]) ? $retour[1] : $retour[2];
$this->CosteFormate['floraison'] = str_replace($retour[0],'.',$this->CosteFormate['floraison']);
}
if (isset($this->CosteFormate['floraison']) && preg_match('/([Ff]l\.) (.+)/',$this->CosteFormate['floraison'], $retour)){
$this->CosteFormate['floraison'] = $retour[2];
$this->CosteFormate['floraison'] = str_replace($retour[1],'',$this->CosteFormate['floraison']);
}
if (isset($this->CosteFormate['floraison']) && preg_match('/([Ff]r\.) (.+)/',$this->CosteFormate['floraison'], $retour)){
$this->CosteFormate['fructification'] = $retour[2];
$this->CosteFormate['floraison'] = str_replace($retour[0],'',$this->CosteFormate['floraison']);
$this->CosteFormate['floraison'] = str_replace(',','',$this->CosteFormate['floraison']);
$this->CosteFormate['fructification'] = str_replace($retour[1],'',$this->CosteFormate['fructification']);
$this->CosteFormate['fructification'] = str_replace('.','',$this->CosteFormate['fructification']);
}
}
}
}
?>
/tags/v5.10-vilmorin/modules/mobile/sources/Illustrations.php
New file
0,0 → 1,115
<?php
// declare(encoding='UTF-8');
/**
* Classe mère du module Liste.
*
* @category PHP 5.2
* @package eflore-consultation
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
* @copyright 2011 Tela-Botanica
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
class Illustrations extends aControleur {
 
private $conteneur = null;
private $nomCourant = null;
private $images = null;
private $appUrls = null;
private $meta = null;
private $referentiel = 'bdtfx';
private $donnees = array();
 
public function __construct(Conteneur $conteneur) {
$this->conteneur = $conteneur;
$this->nomCourant = $this->conteneur->getNomCourant();
$this->referentiel = $this->conteneur->getParametre('referentiel');
$this->images = $this->conteneur->getApiImages();
$this->appUrls = $this->conteneur->getAppUrls();
$this->meta = $this->conteneur->getApiMetaDonnees();
 
$this->images->setApi(Images::API_DEL);
}
 
public function getDonnees() {
$this->donnees = array();
$this->getPhotos();
$dessin = $this->addDessin();
if (!empty($dessin)) {
array_push($this->donnees, $dessin);
}
 
return $this->donnees;
}
 
public function getPhotos() {
$listePhotos = $this->images->getInfosImagesGalerieMobile($this->nomCourant->getNnr());
foreach($listePhotos as $index) {
$this->formaterListePhotos($index);
}
}
 
private function formaterListePhotos($images) {
$infosImg['src'] = $images['binaire.href'];
 
$obs = $images['observation'];
if ($obs['auteur.nom'] != '') {
$infosImg['legende']['titre'] = $obs['auteur.nom'];
if ($obs['auteur.prenom'] != '') {
$infosImg['legende']['titre'] .= ' '.$obs['auteur.prenom'];
}
} else {
$infosImg['legende']['titre'] = "Anonyme";
}
 
if ($obs['date_observation'] != '') {
$infosImg['legende']['titre'] .= ", le ".$this->formaterDateImg($obs['date_observation']);
}
 
if ($obs['zone_geo'] != '') {
$infosImg['legende']['texte'] = $obs['zone_geo'];
if ($obs['lieudit'] != '') {
$infosImg['legende']['texte'] .= ' ('.$obs['lieudit'].')';
}
} else {
$infosImg['legende']['texte'] = "&nbsp;";
}
 
array_push($this->donnees, $infosImg);
}
 
private function formaterDateImg($date) {
$dateFmt = $date;
if ($date == '0000-00-00' || $date == '1970-01-01 01:01:01') {
$dateFmt = 'inconnue';
} else {
$dateFmt = strftime('%e %B %Y', strtotime($date));
}
return $dateFmt;
}
 
public function addDessin() {
$img = array();
$projet = Config::get($this->referentiel.'.baseDessins');
if ($projet != "") {
$dessin = array();
$tax = $this->nomCourant->getNomRetenu()->get('num_taxonomique');
$this->images->setProjet($projet);
$this->images->setNnTaxon($tax);
if ($this->referentiel == 'bdtfx') {
$costeImg = $this->images->setApi(Eflore::API_EFLORE)->getInfosImagesTaxons();
$this->images->setApi(Eflore::API_DEL);
if (count($costeImg) != 0) {
$img['src'] = $costeImg[key($costeImg)]['binaire.href'];
$img['legende']['titre'] = "Illustration de Coste";
$img['legende']['texte'] = "&nbsp;";
}
}
}
 
return $img;
}
}
?>
/tags/v5.10-vilmorin/modules/mobile/sources/NomsCommuns.php
New file
0,0 → 1,40
<?php
// declare(encoding='UTF-8');
/**
* Classe mère du module Liste.
*
* @category PHP 5.2
* @package eflore-consultation
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
* @copyright 2011 Tela-Botanica
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
class NomsCommuns extends aControleur {
 
private $conteneur = null;
private $nomCourant = null;
private $nomsVernaculaires = null;
private $referentiel = 'bdtfx';
private $donnees = array();
 
public function __construct(Conteneur $conteneur) {
$this->conteneur = $conteneur;
$this->nomCourant = $this->conteneur->getNomCourant();
$this->nomsVernaculaires = $this->conteneur->getApiNomsVernaculaires();
$this->referentiel = $this->conteneur->getParametre('referentiel');
}
public function getDonnees() {
$nt = $this->nomCourant->getNomRetenu()->get('num_taxonomique');
$projet = Config::get($this->referentiel.'.referentielVerna');
if ($projet != '') {
$nomsVerna = $this->nomsVernaculaires->getRechercheLimitee($projet, $nt);
$this->donnees = (isset($nomsVerna['resultat']) && is_array($nomsVerna['resultat'])) ? array_slice($nomsVerna['resultat'], 0, 1) : array();
}
return $this->donnees;
}
}
?>
/tags/v5.10-vilmorin/modules/mobile/sources/Repartition.php
New file
0,0 → 1,47
<?php
// declare(encoding='UTF-8');
/**
* Classe mère du module Liste.
*
* @category PHP 5.2
* @package eflore-consultation
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
* @copyright 2011 Tela-Botanica
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
class Repartition extends aControleur {
 
private $conteneur = null;
private $nomCourant = null;
private $donnees = array();
private $referentiel = 'bdtfx';
private $cartes;
 
public function __construct(Conteneur $conteneur) {
$this->conteneur = $conteneur;
$this->nomCourant = $this->conteneur->getNomCourant();
$this->cartes = $this->conteneur->getApiCartes();
$this->referentiel = $this->conteneur->getParametre('referentiel');
}
 
public function getDonnees() {
$donnees['carte'] = $this->getChorodepMiniature();
return $donnees;
}
 
private function getChorodepMiniature() {
$url_carte = null;
if (Config::get($this->referentiel.'.baseRepartition') != null) {
$this->cartes->setProjet(Config::get($this->referentiel.'.baseRepartition'));
$this->cartes->setLargeur('570x534');
$nt = $this->nomCourant->getNt();
$this->cartes->setId("{$this->referentiel}.nt:$nt");
$url_carte = $this->cartes->getUrlDataSvg();
}
return $url_carte;
}
}
?>
Property changes:
Added: svnkit:entry:sha1-checksum
+7e6935a1dae5a65376b5236b5be79756881600b7
\ No newline at end of property
/tags/v5.10-vilmorin/modules/niveau/Niveau.php
New file
0,0 → 1,59
<?php
class Niveau extends aControleur {
public function executerActionParDefaut() {
$this->afficherMoteurNiveau();
}
public function afficherMoteurNiveau() {
$this->setSortie(self::RENDU_CORPS, $this->afficherNiveau());
}
public function afficherNiveau() {
$donnees['parametres'] = $this->capturerParametres();
$donnees['url_form'] = $this->urls->obtenirUrlBase();
$donnees['i18n'] = I18n::get('Niveau');
$donnees['niveau'] = Registre::get('parametres.niveau');
return $this->getVue('niveau', $donnees);
}
private function capturerParametres() {
$parametre['referentiel'] = (isset($_GET['referentiel'])) ? $_GET['referentiel'] : Config::get('referentiel_defaut');
$parametre['module'] = (isset($_GET['module'])) ? $_GET['module'] : Config::get('module_defaut');
$parametre['action'] = (isset($_GET['action'])) ? $_GET['action'] : Config::get('action_defaut');
if (isset($_GET['type_nom'])) {
$parametre['type_nom'] = $_GET['type_nom'];
}
if (isset($_GET['nom'])) {
$parametre['nom'] = $_GET['nom'];
}
if (isset($_GET['num_nom'])) {
$parametre['num_nom'] = $_GET['num_nom'];
}
if (isset($_GET['nom_retenu'])) {
$parametre['nom_retenu'] = $_GET['nom_retenu'];
}
if (isset($_GET['resultat'])) {
$parametre['resultat'] = $_GET['resultat'];
}
$url = "?";
foreach ($parametre as $variable => $valeur) {
$url .= $variable."=".$valeur.'&';
}
$url = rtrim($url, '&');
$parametre['url'] = $this->urls->obtenirUrlBase().$url;
$niveau = '2';
if (isset($_GET['niveau'])) {
$niveau = $_GET['niveau'];
}
Registre::set('parametres.niveau', $niveau);
$parametre['niveau'] = $niveau;
return $parametre;
}
}
?>
/tags/v5.10-vilmorin/modules/niveau/squelettes/niveau.tpl.html
New file
0,0 → 1,26
<!-- DEBUT FORM_NIVEAU -->
<script type="text/javascript">
$(document).ready(function() {
$( "#radio" ).buttonset();
$('#eflore_niveau_submit').hide();
$(".zone-choix-niveau input").click(function() {
$('#eflore_niveau_submit').click();
});
});
</script>
 
<div class="choixNiveau">
<span class="choix-niveau">
<a href="<?=$parametres['url']?>&niveau=1" class="niveau1<?=$parametres['niveau'] == 1? ' actif' : ''?>">Débutant</a>
</span>
<span class="choix-niveau">
<a href="<?=$parametres['url']?>&niveau=2" class="niveau2<?=$parametres['niveau'] == 2? ' actif' : ''?>">Intermédiaire</a>
</span>
<span class="choix-niveau">
<a href="<?=$parametres['url']?>&niveau=3" class="niveau3<?=$parametres['niveau'] == 3? ' actif' : ''?>">Expert</a>
</span>
</div>
 
 
 
<!-- FIN FORM_NOM -->
/tags/v5.10-vilmorin/modules/liste_fancy_box_phytosocio/squelettes/liste-fancy-box-synonymes.tpl.html
New file
0,0 → 1,14
<div>
 
<h3>Liste des synonymes de ce syntaxon :</h3>
<? if (!empty($liste)) : ?>
<?php foreach ($liste as $cle => $element ) : ?>
<ul>
<li><?=$element['syntaxon']?> </li>
</ul>
<?endforeach;?>
<? else : ?>
Pas de données.
<? endif; ?>
</div>
/tags/v5.10-vilmorin/modules/liste_fancy_box_phytosocio/squelettes/liste-fancy-box-ref.tpl.html
New file
0,0 → 1,25
<div>
 
<h3> Références bibliographiques concernant ce syntaxon :</h3>
<span class="italique">Dernière référence : </span><br/>
<ul>
<li>
<?=empty($liste) ? "Pas de données" : $liste['der']?>
</li>
</ul>
<br/>
<?if (!empty($liste['anteriorites'])): ?>
<span class="italique">Références Antérieures: </span><br/>
<?foreach ($liste['anteriorites'] as $ref) : ?>
<ul>
<li>
<?=$ref?>
</li>
</ul>
<?endforeach ; ?>
<?endif ; ?>
 
</div>
/tags/v5.10-vilmorin/modules/liste_fancy_box_phytosocio/squelettes/liste-fancy-box-taxons.tpl.html
New file
0,0 → 1,16
<div>
 
<h3>Liste des taxons ayant le même code catminat. (<?=$catminat?>)</h3>
Ils ont la même écologie que le taxon consulté. On les rencontre souvent ensemble sur le terrain (en fonction de leur répartition respective).
<? if (!empty($liste)) : ?>
<?php foreach ($liste as $cle => $element ) : ?>
<ul>
<a title="cliquez pour accéder à la fiche de ce taxon" href="<?= $urls->obtenirUrlFiche($element['num_nomen'],'nom_scientifique'); ?>">
<li><?=$element['nom_sci']?> </li>
</a>
</ul>
<?endforeach;?>
<? else : ?>
Pas de données.
<? endif; ?>
</div>
/tags/v5.10-vilmorin/modules/liste_fancy_box_phytosocio/ListeFancyBoxPhytosocio.php
New file
0,0 → 1,148
<?php
/**
* Cette classe est le contrôleur pour l'affichage de listes dans des fenêtre fancy box.(fenêtres phytosociologie)
*
* @category PHP 5.2
* @package eflore-consultation
* @author Mathilde Salthun-lassalle <mathilde@tela-botanica.org>
* @copyright 2012 Tela-Botanica
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
 
 
class ListeFancyBoxPhytosocio extends aControleur {
private $type = '';
private $informations;
private $appUrls;
private $conteneur;
private $referentiel;
private $num_nom;
private $catminat;
public function __construct() {
$this->capturerParametres();
$this->conteneur = new Conteneur($this->parametres);
$this->informations = $this->conteneur->getApiInformations();
$this->syntaxons = $this->conteneur->getApiSyntaxons();
$this->appUrls = $this->conteneur->getAppUrls();
}
private function capturerParametres() {
if (isset($_GET['type'])) {
$this->type = $_GET['type'];
}
if (isset($_GET['referentiel'])) {
$this->referentiel = $_GET['referentiel'];
}
if (isset($_GET['num_nom'])) {
$this->num_nom = $_GET['num_nom'];
}
if (isset($_GET['catminat'])) {
$this->catminat= trim(urldecode($_GET['catminat']));
}
}
public function executerActionParDefaut() {
$this->executerLister();
}
public function executerLister($donnees) {
header('Content-type: text/html');
$html = $this->chargerListeHtml();
echo $html;
exit;
}
public function chargerListeHtml() {
$donnees['liste'] = '';
$html = '';
$squelette = dirname(__FILE__).'/squelettes/liste-fancy-box';
if ($this->type == 'catminat_taxons') {
$donnees = $this->getListeCatminatTaxons();
$squelette .= '-taxons';
} elseif ($this->type == 'catminat_synonymes') {
$donnees = $this->getListeCatminatSynonymes();
$squelette .= '-synonymes';
} elseif ($this->type == 'catminat_ref') {
$donnees = $this->getListeCatminatRef();
$squelette .= '-ref';
} elseif ($this->type == 'catminat_taxons_sup') {
$donnees = $this->getListeCatminatTaxonsSup();
$squelette .= '-taxons';
}
if ($donnees['liste'] !== '') {
$donnees['urls'] = $this->appUrls;
$html = $this->getVue($squelette, $donnees);
}
return $html;
}
public function getListeCatminatTaxons() {
$Catminat = array();
$this->informations ->setProjet('baseflor');
$this->informations ->setDepart(0);
$this->informations ->setLimite('500');
$this->informations ->setBdnt($this->referentiel);
$this->informations ->setNum_nom($this->num_nom);
$informations = $this->informations->getInformationsRelationCatminat();
if($informations != ""){
$Catminat['liste'] = $informations['resultat'];
$Catminat['catminat'] = $informations['resultat'][0]['catminat_code'];
}
return $Catminat;
}
public function getListeCatminatTaxonsSup() {
$Catminat = array();
$this->informations ->setProjet('baseflor');
$this->informations ->setDepart(0);
$this->informations ->setLimite('500');
$this->informations ->setCatminat($this->catminat);
$informations = $this->informations->getInformationsMasqueCatminat();
if($informations != ""){
$Catminat['liste'] = $informations['resultats'];
$Catminat['catminat'] = str_replace('-','/',$this->catminat);
}
return $Catminat;
}
public function getListeCatminatSynonymes() {
$Catminat = array();
$this->syntaxons->setProjet('baseveg');
$this->syntaxons->setCatminat($this->catminat);
$syntaxons = $this->syntaxons->getSyntaxonsSynonymes();
if (is_array($syntaxons)) {
$Catminat['liste'] = $syntaxons['resultat'];
$Catminat['catminat'] = $syntaxons['resultat'][0]['code_catminat'];
}
return $Catminat;
}
public function getListeCatminatRef() {
$ref = array();
$this->syntaxons->setProjet('baseveg');
$this->syntaxons->setCatminat($this->catminat);
$syntaxons = $this->syntaxons->getSyntaxonsCatminat();
if (is_array($syntaxons)) {
$ref['liste']['der'] = $syntaxons['resultat'][0]['ref_der_biblio'];
if ($syntaxons['resultat'][0]['ref_anteriorite_deux'] != '') {
$ref['liste']['anteriorites'][0] = $syntaxons['resultat'][0]['ref_anteriorite_deux'];
}
if ($syntaxons['resultat'][0]['ref_anteriorite_trois'] != '') {
$ref['liste']['anteriorites'][1]= $syntaxons['resultat'][0]['ref_anteriorite_trois'];
}
if ($syntaxons['resultat'][0]['ref_anteriorite_quatre'] != '') {
$ref['liste']['anteriorites'][2] = $syntaxons['resultat'][0]['ref_anteriorite_quatre'];
}
}
return $ref;
}
}
?>
/tags/v5.10-vilmorin/modules/recherche/Recherche.php
New file
0,0 → 1,335
<?php
class Recherche extends aControleur {
//+----------------------------------------------------------------------------------------------------------------+
// Méthodes
protected $nom = null;
protected $type_nom = 'nom_scientifique';
protected $type_resultat = '';
protected $submit = '';
protected $acces_fiche = false;
private $recherche_avancee;
private $param;
private $i18n = array();
private $parametresAvancesGeneriques = array('gen','fam','nn','nt','sp','ssp','type','sto','sti','stc');
public function initialiser() {
$this->capturerParametres();
$this->capturerParametresAvances();
$this->i18n = I18n::get('Recherche-form-avancee');
}
/**
* Fonction d'affichage par défaut
*/
public function executerActionParDefaut() {
$this->executerAccueil();
}
public function executerAccueil($donneesMoteur = array()) {
$meta = new MetaDonnees();
$meta->setProjet(Registre::get('parametres.referentiel'));
$metadonnees = $meta->getMetaDonnees();
$donneesMoteur['metadonnees_referentiel'] = $metadonnees[0];
$niveau = new Niveau();
$donnees['form_niveau'] = $niveau->afficherNiveau();
$recherchesimple = new RechercheSimple();
$donnees['form_nom'] = $recherchesimple->executerFormulaireNom($donneesMoteur);
if (Registre::get('parametres.niveau') != 1) {
$recherche_avancee = new RechercheAvancee();
$donnees['form_recherche_av'] = $recherche_avancee->executerFormulaireRechercheAv($donneesMoteur);
}
$donnees['description'] = "";
 
// le descriptif du référentiel est affiché lorsque seul le moteur est affiché (donc ni résultats, ni fiche)
if(Registre::get('parametres.module') == 'recherche' &&
Registre::get('parametres.action') == 'action-par-defaut' &&
!Registre::get('resultats')) {
$referentiel = Registre::get('parametres.referentiel');
$wiki = new Wikini();
$description = $wiki->getDescriptionReferentielFormate($referentiel);
$donnees['description'] = $description;
}
$this->afficherAccueil($donnees);
}
private function afficherAccueil($donnees) {
$donnees['i18n'] = I18n::get('Recherche-accueil');
$this->setSortie(self::RENDU_CORPS, $this->getVue('recherche_accueil', $donnees), true);
}
 
//+---------------------------------------------recherche avancee-------------------------------------+
public function executerRechercheAvancee() {
$this->param = $this->nettoyerParametresDefautRechercheAvancee($this->param);
$donnees['param'] = $this->param;
$presence = $this->rechercherCriteresDemandes();
if (empty($presence) && !empty($this->param)) {
$donnees['message_av']['attention'] = 'info_res_vide';
}
$this->executerAccueil($donnees);
if (Registre::get('resultats')) {
$_GET['resultat'] = $this->type_resultat;
$this->executerAction('Resultat', 'executerResultat');
}
}
 
private function nettoyerParametresDefautRechercheAvancee($params) {
$params_nettoyes = array();
foreach ($params as $cle => $param) {
if(!preg_match("#^\(.*\)$#", $param)) {
$params_nettoyes[$cle] = $param;
}
}
return $params_nettoyes;
}
public function rechercherCriteresDemandes() {
$noms = new Noms(Registre::get('parametres.referentiel'));
$res = $noms->getRechercheAvancee($this->param);
if ($res != false || $res['entete']['total'] != 0) {
if ($res['entete']['total'] == 1 ) {
$ids = array_keys($res['resultat']);
$nom = $res['resultat'][$ids[0]]['nom_sci'];
$url = $this->urls->obtenirUrlFiche($ids[0], 'nom_scientifique', $nom);
$this->redirigerVers($url);
} else {
$res['type'] = $this->type_nom;
Registre::set('resultats', $res);
}
} else {
$res = '';
}
return $res;
}
//+---------------------------------------------recherche simple-------------------------------------+
/*
grep-friendly: ICI->executerRechercheSimple()
En effet, cette méthode n'est jamais invoquée explicitement.
Le processus est le suivant:
* URL = index.php?type_nom=...&referentiel=..&module=recherche&action=rechercheSimple
* AppControleur::initialiser()
* `-> AppControleur::$parametres['action'] = $_GET['action']
* `-> AppControleur::executerModule()
* `-> effecture $module->$action()
* qui nous appelle ici
*/
public function executerRechercheSimple() {
$donnees['type_nom'] = $this->type_nom;
$donnees['nom'] = $this->nom;
if (strlen($donnees['nom']) < 3) {
$donnees['message']['attention'] = 'info_nb_lettres';
} else {
$presence = $this->rechercherNom();
if ($presence == '') { // s'il n'y a pas de nom
$donnees['message']['attention'] = 'info_sp_abs';
} elseif ($presence == 'sans_correspondance') {
$res = Registre::get('resultats');
$id = array_keys($res['resultat']);
$donnees['message']['nom_ss_corresp']['id'] = $id[0];
$nom = array_shift($res['resultat']);
$donnees['message']['nom_ss_corresp']['nom'] = $nom['nom_sci'];
} elseif ($presence != 'ok') { // s'il y a des noms approchés
if (!Registre::get('resultats')) { // s'il n'y a aucun nom exact
$donnees['message']['attention'] = 'info_sp_abs';
}
$donnees['message']['nom_approche'] = $presence;
}
}
 
$this->executerAccueil($donnees);
if (Registre::get('resultats')) {
$_GET['resultat'] = $this->type_resultat;
$this->executerAction('Resultat', 'executerResultat');
}
}
// regarde si il y a des résultats correspondant au nom recherché sinon recherche un nom approché
// $noms classe métier nom ou nom
private function rechercherNom() {
$noms = ($this->type_nom == 'nom_vernaculaire')
? new NomsVernaculaires(Config::get(Registre::get('parametres.referentiel').'.referentielVerna'))
: new Noms(Registre::get('parametres.referentiel'));
$approche = '';
$res = $noms->getRechercheEtendue($this->nom, $this->type_resultat);
$form = I18n::get('Recherche-form-nom');
 
if ($res == false || $res['entete']['total'] === 0) { // recherche nom approché
$approche = $this->rechercherNomApproche($noms);
} elseif ($res['entete']['total'] == 1 || $this->acces_fiche) { // renvoie à la fiche
$approche = $this->traiterAccesFiche($res);
} else { // affiche les résultats
$res['type'] = $this->type_nom;
Registre::set('resultats', $res);
$approche = 'ok';
if ($res['entete']['total'] < 3) { // si moins de 16 noms affiche en plus un nom approché
$approche = $this->rechercherNomApproche($noms);
}
}
// suppression des nomps en doublons + du nom déjà dans le moteur de recherche
// TODO: comprendre d'ou viennent les noms en doublons. Peut-être une histoire de noms similaires avec un nom d'auteur
// différent, qui une fois supprimé se retrouvent à être les même ?
if(is_array($approche)) {
$approche_sans_doublons = array();
foreach($approche as $element) {
if(!in_array($element, $approche_sans_doublons) && $element['nom'] != $this->nom) {
$approche_sans_doublons[] = $element;
}
}
$approche = $approche_sans_doublons;
}
return $approche;
}
private function traiterAccesFiche($res) {
$ids = array_keys($res['resultat']);
if ($this->type_nom == 'nom_vernaculaire') {
$id = explode(':',$res['resultat'][$ids[0]]['nom_retenu.code']);
$id = $id[1];
} else {
if ($res['resultat'][$ids[0]]['retenu'] == 'absent') { // dans le cas d'un nom sans correspondance
$res['type'] = $this->type_nom;
Registre::set('resultats', $res);
$approche = 'sans_correspondance';
return $approche;
} else {
$id = $ids[0];
}
}
$url = $this->urls->obtenirUrlFiche($id, $this->type_nom, $this->nom);
$this->redirigerVers($url);
}
private function rechercherNomApproche($noms) {
$approche = '';
$res = $noms->getRechercheFloue($this->nom);
if (!($res == false || $res['entete']['total'] === 0)) {
for ($i = 0; $i < 3; $i++) {
$nom_proche = array_shift($res['resultat']);
$approche[$i]['nom'] = ($this->type_nom == 'nom_vernaculaire') ? $nom_proche['nom'] : $nom_proche['nom_sci'];
$approche[$i]['url_nom_approche'] = $this->urls->obtenirUrlRechercheSimple($approche[$i]['nom'], $this->type_nom);
}
}
return $approche;
}
//+-----------------------------------------------méthodes utiles---------------------------------+
private function capturerParametres() {
if (isset($_REQUEST['nom'])) {
$this->nom = $this->convertirEncodageEntree(urldecode($_REQUEST['nom']));
}
if (isset($_GET['type_nom'])) {
$this->type_nom = $this->convertirEncodageEntree(urldecode($_GET['type_nom']));
}
if (isset($_GET['submit'])) {
$this->submit = $this->convertirEncodageEntree(urldecode($_GET['submit']));
}
if(isset($_GET['acces_fiche'])) {
$this->acces_fiche = true;
}
if (isset($_GET['niveau'])) {
Registre::set('parametres.niveau', $this->convertirEncodageEntree($_GET['niveau']));
}
if (isset($_GET['resultat'])) {
$this->type_resultat = $this->convertirEncodageEntree(urldecode($_GET['resultat']));
} else {
$onglet_resultat = $this->recupererTableauConfig('affich_resultats');
$this->type_resultat = $onglet_resultat[Registre::get('parametres.niveau').'_'.$this->type_nom];
}
}
private function capturerParametresAvances() {
$this->capturerParametresAvancesGeneriques();
$this->capturerParametresAvancesDependantsLangage();
$this->capturerParametresAvancesPresenceSpecifiques();
}
private function capturerParametresAvancesGeneriques() {
foreach($this->parametresAvancesGeneriques as $param) {
if (isset($_GET[$param]) && $_GET[$param] != '') {
$this->param[$param] = $this->convertirEncodageEntree(urldecode($_GET[$param]));
}
}
}
private function capturerParametresAvancesDependantsLangage() {
if (isset($_GET['au']) && $_GET['au'] != ''
&& $_GET['au'] != $this->convertirEncodageEntree(urlencode($this->i18n['valeur-form-auteur']))) {
$this->param['au'] = $this->convertirEncodageEntree(urldecode($_GET['au']));
}
if (isset($_GET['bib']) && $_GET['bib'] != ''
&& $_GET['bib'] != $this->convertirEncodageEntree(urlencode($this->i18n['valeur-form-bib']))) {
$this->param['bib'] = $this->convertirEncodageEntree(urldecode($_GET['bib']));
}
if (isset($_GET['and']) && $_GET['and'] != ''
&& $_GET['and'] != $this->convertirEncodageEntree(urlencode($this->i18n['valeur-form-date']))) {
$this->param['and'] = $this->convertirEncodageEntree(urldecode($_GET['and']));
}
if (isset($_GET['anf']) && $_GET['anf'] != ''
&& $_GET['anf'] != urlencode($this->i18n['valeur-form-date'])) {
$this->param['anf'] = $this->convertirEncodageEntree(urldecode($_GET['anf']));
}
}
private function capturerParametresAvancesPresenceSpecifiques() {
$champs_presence = $this->obtenirChampsPresence();
foreach($champs_presence as $champ) {
$param = $champ['param'];
if (isset($_GET[$param]) && $_GET[$param] != '') {
$this->param[$param] = $this->convertirEncodageEntree(urldecode($_GET[$param]));
}
}
}
private function obtenirChampsPresence() {
$tableau_champs_presence = array();
$referentiel = Registre::get('parametres.referentiel');
$champs_presence_spl = explode('|', Config::get($referentiel.'.champsPresence'));
foreach($champs_presence_spl as $champ) {
$label_param_champ = explode(':', $champ);
if(count($label_param_champ) >= 2) {
$tableau_champs_presence[] = array('param' => $label_param_champ[1],
'label' => $label_param_champ[0]);
}
}
return $tableau_champs_presence;
}
protected function recupererTableauConfig($param) {
$tableau = array();
$tableauPartiel = explode(',', Config::get($param));
$tableauPartiel = array_map('trim', $tableauPartiel);
foreach ($tableauPartiel as $champ) {
if (strpos($champ, '=') === false) {
$tableau[] = $champ;
} else {
list($cle, $val) = explode('=', $champ);
$tableau[$cle] = $val;
}
}
return $tableau;
}
 
 
/**
* Convertion des valeurs de requête dans l'encodage de l'application (voir fichier config.ini : appli_encodage),
* A cause d'un bug en cours d'investigation, celle ci utilise des paramètres différents de la fonction de conversion
* D'encodage de sortie
* Cette convertion a lieu seulement si les formats sont différents.
*/
private function convertirEncodageEntree($contenu) {
if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
$contenu = mb_convert_encoding($contenu, Config::get('appli_encodage'), Config::get('sortie_encodage'));
}
return $contenu;
}
}
?>
/tags/v5.10-vilmorin/modules/recherche/squelettes/recherche_accueil.tpl.html
New file
0,0 → 1,15
<div id="bloc-recherche" class="importance1">
<h1><?=$i18n['titre-nom'];?></h1>
<?=$form_niveau;?>
<?=$form_nom;?>
<div id="conteneur_activation_definition">
<a href="#">&nbsp;</a>
</div>
<!-- niveau expert : recherche avancée -->
<?= isset($form_recherche_av) ? $form_recherche_av : '' ;?>
</div>
<div class="description-referentiel">
<span class="description-referentiel-texte">
<?=$description;?>
</span>
</div>
/tags/v5.10-vilmorin/modules/pagination/squelettes/pagination.tpl.html
New file
0,0 → 1,40
<?php if($nb_resultats > 0) {?>
 
<?php if($nb_pages > 1) {?>
Pages &nbsp;&nbsp;
<?php } ?>
 
<?php if(($page_en_cours >= $pages_debut_intervalle) && (($page_en_cours != 1)) && ($nb_pages != 1)) { ?>
<a class="premiere_page" href="<?= $url_base_pagination.'0' ?>" title="Première page">[1]</a> ...
<?php } ?>
 
<?php if($page_en_cours > 1) { ?>
<a class="page_prededente" href="<?= $url_base_pagination.(($page_en_cours - 2)*$taille_page) ?>" title="Page précedente">&lt;&lt;</a>&nbsp;&nbsp;
<?php } ?>
 
<?php if($nb_pages > 1) { ?>
<span class="pages">
<?php for($i = $pages_debut_intervalle; ($i < $pages_debut_intervalle+$pages_taille_intervalle) && $i <= $nb_pages ; $i++) : ?>
<?php if($page_en_cours == $i) { ?>
<span class="page_courante">
<?php } else { ?>
<span>
<?php } ?>
<a class="premiere_page" href="<?= $url_base_pagination.(($i - 1)*$taille_page) ?>" title="Page numéro <?= $i ?>"><?= $i ?></a>
</span>&nbsp;&nbsp;
<?php endfor; ?>
</span>
<?php } ?>
 
<?php if($page_en_cours < $nb_pages) { ?>
<a class="page_prededente" href="<?= $url_base_pagination.(($page_en_cours)*$taille_page) ?>" title="Page suivante">&gt;&gt;</a>
<?php } ?>
 
<?php if(($page_en_cours != $nb_pages) && ($nb_pages > $pages_taille_intervalle)) { ?>
... <a class="derniere_page" href="<?= $url_base_pagination.(($nb_pages-1)*$taille_page) ?>" title="Dernière page">[<?= $nb_pages; ?>]</a> &nbsp;
<?php } ?>
 
<span class="nb_resultats"> Résultats <?= $intervalle_min.' - '.$intervalle_max ?> sur <?= $nb_resultats; ?></span>
 
<?php } ?>
<hr style="clear:both;visibility:hidden;" />
/tags/v5.10-vilmorin/modules/pagination/Pagination.php
New file
0,0 → 1,80
<?php
Class Pagination extends aControleur {
private $depart = 0;
private $limite = 30;
private $total = 1;
private $taille_page = 25;
protected $urls = null;
public function Pagination() {
$this->initialiser();
}
 
public function initialiser() {
$this->capturerParametres();
$this->conteneur = new Conteneur();
$this->urls = $this->conteneur->getAppUrls();
}
private function capturerParametres() {
if (isset($_GET['navigation_depart'])) {
$this->depart = $_GET['navigation_depart'];
unset($_GET['navigation_depart']);
}
if (isset($_GET['navigation_limite'])) {
$this->limite = $_GET['navigation_limite'];
unset($_GET['navigation_limite']);
}
$this->total = Registre::get('navigation.total');
if (isset($_GET['navigation_taille_page'])) {
$this->taille_page = $_GET['navigation_taille_page'];
unset($_GET['navigation_taille_page']);
}
}
public function getPagination() {
$donnees = array();
if ($this->depart == 0) {
$page_en_cours = 1;
} else if ($this->total != 0) {
$page_en_cours = floor(($this->depart + 1)/$this->limite + 1);
}
$pages_avant_apres = 7;
$pages_debut_intervalle = 0;
$nb_pages = 0;
if ($page_en_cours < $pages_avant_apres) {
$pages_debut_intervalle = 1;
} else {
$pages_debut_intervalle = $page_en_cours - $pages_avant_apres + 2;
}
$pages_a_afficher = $this->taille_page;
$intervalle_max = (($page_en_cours) * $this->limite);
$donnees['url_base_pagination'] = '?'.http_build_query($_GET).'&navigation.limite='.$this->limite.'&navigation.depart=';
$nb_pages = ceil($this->total/$this->limite);
if ($page_en_cours == $nb_pages) {
$intervalle_max = $this->total;
}
$donnees['pages_taille_intervalle'] = $pages_avant_apres;
$donnees['pages_debut_intervalle'] = $pages_debut_intervalle;
$donnees['page_en_cours'] = $page_en_cours;
$donnees['intervalle_min'] = (($page_en_cours-1) * $this->limite);
$donnees['intervalle_max'] = $intervalle_max;
$donnees['nb_resultats'] = $this->total;
$donnees['nb_pages'] = $nb_pages;
$donnees['taille_page'] = $this->limite;
$vue = $this->getVue('/home/aurelien/web/eflore-consultation/modules/pagination/squelettes/pagination', $donnees);
return $vue;
}
}
?>
/tags/v5.10-vilmorin/modules/pdf_export/squelettes/footer.html
New file
0,0 → 1,36
<!-- ne pas renommer en .tpl.html SINON il ne sera pas ajouté au pied de page pdf-->
<html>
<head>
<script>
function subst() {
var vars={};
var x=document.location.search.substring(1).split('&');
for (var i in x) {var z=x[i].split('=',2);vars[z[0]] = unescape(z[1]);}
var x=['frompage','topage','page','webpage','section','subsection','subsubsection', 'nom'];
for (var i in x) {
var y = document.getElementsByClassName(x[i]);
for (var j=0; j<y.length; ++j) y[j].textContent = vars[x[i]];
}
}
</script>
</head>
<body style="border: 0; margin: 0;" onload="subst()">
<table style="width: 100%; font-size: 10px;">
<!-- les valeurs de page, section, subsection,...(passées en paramètres) peuvent être affichées
grâce aux class, on peut aussi en créer de nouvelles (ex: date) et leur affecter une valeur
grâce à --replace : -->
<tr>
<td style=" border:none; text-align: left; width: 30%;">
www.tela-botanica.org
</td>
<td style="border:none; text-align: center; width: 50%; ">
fiche eFlore de <span style="font-style:italic;" class="nom"></span>
</td>
<td style="border:none; text-align: right; width: 20%; " >
<span class="page"></span>/<span class="topage"></span>
</td>
</tr>
</table>
</body>
</html>
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/tags/v5.10-vilmorin/modules/pdf_export/squelettes/pdf_statuts.tpl.html
New file
0,0 → 1,49
<!-- STATUTS de protection -->
<div class="bloc <? if ($premier == 'statuts') : echo 'allow-break'; else : echo 'no-break'; endif; ?>">
<h2 class= "categorie">Statuts de protection</h2>
<!-- STATUTS -->
<?php if(!empty($statuts['statuts'])) : ?>
<table class="liste_statuts_protection no-break">
<tr>
<th>Zone géographique</th><th>Règle appliquée</th><th>Texte</th>
</tr>
<?php foreach ($statuts['statuts'] as $statut) : ?>
<tr>
<td>
<?= $statut['zone_application']; ?>
</td>
<td>
<?= $statut['regle']; ?>
</td>
<td>
<?= $statut['texte']; ?>
(<?= $statut['statut']; ?>)
</td>
</tr>
<?php endforeach; ?>
</table>
<?php endif; ?>
 
<!-- WIKI -->
<? if(!empty($statuts['wikini']['statuts_de_protection'])) : ?>
<div class="no-break">
<h2>Vos compléments sur les statuts de protection :</h2>
<span>Données collaboratives sur les statuts de protection. </span>
<div class="allow-break wiki" title="statuts de protection">
<?=$statuts['wikini']['statuts_de_protection']?>
</div>
</div>
<? endif;?>
<!-- VIDE DE DONNEES -->
<? if (empty($statuts['wikini']['statuts_de_protection']) && empty($statuts['statuts']) ): ?>
Pas de protection connue.
<? endif;?>
</div>
<br/>
<br/>
 
/tags/v5.10-vilmorin/modules/pdf_export/squelettes/pdf_header.tpl.html
New file
0,0 → 1,26
<!doctype html>
<html>
<!-- ici est le style et l'en-tête de la première page.
pour un en-tête sur chaque page avec wkhtmltopdf utiliser --header.* -->
<head>
<link href="<?=$donnees_pdf['chemin_css'] ?>" rel="stylesheet" type="text/css" />
</head>
<body>
<!-- EN TETE de la première page -->
<table style="width: 100%; background-color:#9AC343;">
<tr>
<td style="border:none; text-align: left; width: 20%; height:20mm; margin-left:10mm; margin-right:10mm; ">
<img style="height:15mm;" src="http://resources.tela-botanica.org/tb/img/135x102/logo_carre_officiel.png" alt="Tela Botanica"/>
</td>
<td style=" border:none; text-align: center; vertical-align: bottom ; padding-bottom:5px;" >
<span style="font-size:20px; color:white;">
<?=$donnees_pdf['nom']?>
</span> <br/><br/>
eFlore, la flore électronique de Tela Botanica.
<span class="version"><?=$donnees_pdf['version']?></span>
</td>
</tr>
</table>
<br/>
<br/>
/tags/v5.10-vilmorin/modules/pdf_export/squelettes/pdf_illustrations.tpl.html
New file
0,0 → 1,51
<!-- ILLUSTRATIONS -->
<div class="bloc no-break">
<div class="categorie">Illustrations</div>
 
<!-- COSTE toutes -->
<?php if (empty($illustrations['coste']['images']) == false) :?>
<div class="deux-colonnes">
<h2>Illustration de la flore de Coste</h2>
<span class="citation"><?= $illustrations['coste']['meta']['citation']?></span><br/>
<div id="illustrations">
<ul class="liste-illustrations allow-break">
<?php foreach($illustrations['coste']['images'] as $url) : ?>
<li>
<img src="<?= $url; ?>" alt="illustration de la flore de coste" />
</li>
<?php endforeach; ?>
</ul>
<hr class="nettoyage" />
</div>
</div>
<?php endif;?>
<!-- CEL la première image -->
<?php if (isset($illustrations['cel']['images'])) : ?>
<div class="deux-colonnes">
<h2>Carnet En Ligne (CEL)</h2>
<span class="citation"><?= $illustrations['cel']['meta']['citation']?></span><br/>
<div id="illustrations">
<ul class="liste-illustrations allow-break">
<li>
<img src="<?= $illustrations['cel']['images']['src']; ?>" />
<p>
à <strong class="localisation"><?= $illustrations['cel']['images']['commune']; ?></strong><br />
observée le <strong class="date-creation"><?= $illustrations['cel']['images']['date']; ?></strong><br/>
par <strong class="auteur"><?= $illustrations['cel']['images']['auteur']; ?></strong>
</p>
</li>
</ul>
<hr class="nettoyage" />
</div>
</div>
<?php endif; ?>
<hr class="nettoyage" />
<!-- VIDE DE DONNEES -->
<?php if (!isset($illustrations['cel']['images']) && empty($illustrations['coste']['images']) ) : ?>
Aucune donnée.
<?php endif; ?>
</div>
<br/>
<br/>
/tags/v5.10-vilmorin/modules/pdf_export/squelettes/pdf_nomenclature.tpl.html
New file
0,0 → 1,148
<!-- NOMENCLATURE -->
<div class="bloc <?if ($premier == 'nomenclature') : echo 'allow-break'; else : echo 'no-break'; endif; ?>">
<div class="categorie"> Nomenclature </div>
<!-- NOM RETENU -->
<?php if(!empty($nomenclature['basionyme_nom_retenu']) || !empty($nomenclature['nom_selectionne'])
|| !empty($nomenclature['nom_retenu']) || !empty($nomenclature['nom_retenu_formate'])) :?>
<div class="no-break">
<h2>Nom retenu</h2>
<span class="citation"><?= $nomenclature['synonymes']['meta']['citation']?></span>
<div style="float:right">
<div class="legende">
<b>Légende</b><br />
<span class="legende_nom_retenu couleur_legende" style="margin:8px 5px 0 0"></span><span>Nom sélectionné</span>
</div>
</div>
<div class="onglet_marge_gauche">
<span class="nom retenu <?= ($nomenclature['nom_selectionne'] == $nomenclature['nom_retenu']) ? 'surlignage' : '' ?>">
<?= $nomenclature['nom_retenu_formate'] ?>
</span>
</div>
<div class="nom onglet_marge_gauche basionyme_complet">
Basionyme :
<?= $nomenclature['basionyme_nom_retenu'] ?>
</div>
 
<?php if($nomenclature['referentiel'] != 'bdtxa'): // cf http://referentiels.tela-botanica.org/referentiel/index.php?ref=bdtxa&module=FicheTaxon&num_nom=14610 ?>
<div class="onglet_marge_gauche"> Dernière date de modification du nom : <?= $nomenclature['date_maj'] ?> </div>
<? endif; ?>
</div>
<hr class="nettoyage" />
<?php endif; ?>
<!-- WIKI -->
<? if (!empty($nomenclature['wikini']['nomenclature'])) :?>
<div class="no-break">
<span> Données collaboratives sur ce nom. </span>
<div title="statuts de protection" class="wiki allow-break">
<?=$nomenclature['wikini']['nomenclature']?>
</div>
</div>
<? endif; ?>
<!-- SYNONYMES -->
<?php if(is_array($nomenclature['synonymes']['noms']) && count($nomenclature['synonymes']['noms']) > 0) { ?>
<div class="no-break">
<h2>Synonymes</h2>
<span class="citation"><?= $nomenclature['synonymes']['meta']['citation']?></span>
<?php foreach ($nomenclature['synonymes']['noms'] as $id => $synonyme) : ?>
<ul class="allow-break">
<li class="item_nomenclature">
<span class="nom <?= ($nomenclature['nom_selectionne'] == $synonyme['nom_sci']) ? 'surlignage' : '' ?>">
<?= $synonyme['nom_sci_complet'] ?>
</span>
<span class="nom basionyme_complet">
<?= ($synonyme['basionyme_html_complet']) ? "Basionyme : ".$synonyme['basionyme_html_complet'] : ''; ?>
</span>
</li>
</ul>
<?php endforeach; ?>
<hr class="nettoyage" />
</div>
<?php } ?>
<div class="no-break">
<?php if (!empty($nomenclature['taxons_sup'])) : ?>
<h2> Place du taxon dans la classification </h2>
<span class="citation"><?= $nomenclature['meta']['citation']?></span>
<table class="allow-break">
<tr>
<th>Rang</th><th>Nom Scientifique</th><th>Num Nom</th>
</tr>
<?php foreach ($nomenclature['taxons_sup'] as $taxon) : ?>
<tr>
<td><?= $taxon['rang.libelle'] ?></td>
<td><?= $taxon['nom_sci'] ?></td>
<td><?= $taxon['num_nom'] ?></td>
</tr>
<?php endforeach; ?>
<tr class="surlignage">
<td><?= $nomenclature['taxon_courant']['rang.libelle'] ?></td>
<td><?= $nomenclature['taxon_courant']['nom_sci'] ?></td>
<td><?= $nomenclature['taxon_courant']['num_nom'] ?></td>
</tr>
<?php if (!empty($nomenclature['taxons_inf'])) : ?>
<?php foreach($nomenclature['taxons_inf'] as $taxon) : ?>
<tr>
<td><?= $taxon['rang.libelle'] ?></td>
<td><?= $taxon['nom_sci'] ?></td>
<td><?= $taxon['num_nom'] ?></td>
</tr>
<?php endforeach; ?>
<?php endif; ?>
</table>
<?php endif; ?>
</div>
<!-- VIDE DE DONNEES -->
<?php if ( empty($nomenclature['taxons_sup']) && empty($nomenclature['taxon_inf'] ) ) : ?>
Aucune donnée.
<?php endif; ?>
<br/>
<!-- FLORES -->
<?php if(is_array($nomenclature['flores_synonymes']) && count($nomenclature['flores_synonymes']) > 0) { ?>
<div class="no-break">
<h2>Flores</h2>
<span class="citation"><?= $nomenclature['synonymes']['meta']['citation']?></span>
<?php foreach ($nomenclature['flores_synonymes'] as $num_nom_syn => $infos_flore) : ?>
<?php foreach ($infos_flore as $code => $flore) : ?>
<ul class="allow-break">
<li class="item_nomenclature">
<div class="nom">
Dans la flore <em><?= $flore['nom_flore'] ?></em>,
ce taxon porte le nom de <em><?= $flore['nom_sci'] ?></em>
et le code <b><?= $flore['id'] ?></b><br />
</div>
</li>
</ul>
<?php endforeach; ?>
<?php endforeach; ?>
</div>
<hr class="nettoyage" />
<?php } ?>
<!-- num type -->
<?php if($nomenclature['num_type'] != null) { ?>
<h3> Autres </h3>
<ul>
<li class="item_nomenclature">
<span class="nom">Numéro du type : <?= $nomenclature['num_type'] ?></span>
</li>
</ul>
<?php } ?>
<!-- VIDE DE DONNEES -->
<?php if ( empty($nomenclature['basionyme_nom_retenu']) && empty($nomenclature['nom_retenu_formate'] )
&& empty($nomenclature['nom_selectionne'] ) && empty($nomenclature['synonymes']['noms'] )
&& empty($nomenclature['nom_retenu']) && empty($nomenclature['flores_synonymes'])
&& empty($nomenclature['num_type'])) : ?>
Aucune donnée.
<?php endif; ?>
</div>
<br/>
<br/>
/tags/v5.10-vilmorin/modules/pdf_export/squelettes/pdf_bibliographie.tpl.html
New file
0,0 → 1,49
<!-- BIBLIOGRAPHIE -->
<div class="bloc <? if ($premier == 'bibliographie') : echo 'allow-break'; else : echo 'no-break'; endif; ?>">
<div class="categorie">Bibliographie</div>
<!-- FLORE -->
<? if(!empty($bibliographie['flores']['liste_flores'])) : ?>
<div class ="no-break">
<h2 > Flores </h2>
<span class='citation'><?= $bibliographie['flores']['meta']['citation']?></span>
<ul class="liste_biblio_flores allow-break">
<?php foreach($bibliographie['flores']['liste_flores'] as $flore) : ?>
<li class="item_biblio_flore"><span class="nom"> <?= $flore ?></span></li>
<?php endforeach; ?>
</ul>
</div>
<? endif; ?>
 
<!-- REFERENCES BIBLIOGRAPĤIQUES-->
<? if(!empty($bibliographie['bibliobota']['references'] )) : ?>
<div class ="no-break allow-break">
<h2> Références bibliographiques </h2>
<ul class="references_bibliographiques">
<?php foreach($bibliographie['bibliobota']['references'] as $reference) : ?>
<li class="item_biblio_flore"><span class="nom"><?=$reference['reference_html']?></span></li>
<?php endforeach; ?>
</ul>
</div>
<? endif; ?>
<!-- WIKI-->
<? if (!empty($bibliographie['wikini']['biblio'])): ?>
<h2> Bibliographie collaborative : </h2>
<span> Rédaction collaborative de cette bibliograpĥie. </span>
<div class="wiki allow-break" title="biblio">
<?=$bibliograhie['wikini']['biblio']?>
</div>
<? endif; ?>
<!-- VIDE DE DONNEES -->
<?php if ( empty($bibliographie['flores']['liste_flores'])
&& empty($bibliographie['bibliobota']['references'] )
&& empty($bibliographie['wikini']['biblio'])) : ?>
Aucune donnée.
<?php endif; ?>
</div>
<br/>
<br/>
/tags/v5.10-vilmorin/modules/pdf_export/squelettes/pdf_repartition.tpl.html
New file
0,0 → 1,56
<!-- REPARTITION -->
<div class="bloc no-break">
<div class="categorie"> Répartition </div>
 
<!-- CHOROLOGIE DEPARTEMENTALE -->
<? if (!empty($repartition['chorodep']['svgUrl']) && !empty($repartition['chorodep']['legende']) ) : ?>
<div class="deux-colonnes">
<h2>Chorologie départementale</h2>
<div class="repartition_observations allow-break">
<!--version svg laisser attribut alt au cas où svg ne marche pas -->
<object style=" height:200px;" type="image/svg+xml" data="<?=$repartition['chorodep']['svgUrl']?>" alt="<?=$repartition['min']['chorodep']?>">
</object>
<!-- version png --><!-- <img src="<?=$repartition['min']['chorodep']?>" />-->
</div>
<div class="legende_r allow-break">
<? foreach ($repartition['chorodep']['legende'] as $id => $details) :?>
<div style="clear:left; ">
<div class="bloc_legende_repartition" style="background:<?=$details['couleur']?>"></div>
<div class="texte_legende_repartition"><b><?=$details['nom']?></b></div>
</div>
<? endforeach; ?>
</div>
</div>
<?php endif; ?>
<!-- OBSERVATIONS -->
<? if (!empty($repartition['eflore']['min']) && !empty($repartition['eflore']['legende'])) : ?>
<div class="deux-colonnes">
<h2>Observations</h2>
<div class="repartition_observations allow-break" >
<img src="<?=$repartition['eflore']['min']?>" />
</div>
<div class="legende_r allow-break">
<? foreach ($repartition['eflore']['legende'] as $id => $details) :?>
<div style="clear:left;">
<div class="bloc_legende_repartition" style="background:<?=$details['couleur']?>"></div>
<div class="texte_legende_repartition" ><b><?=$details['nom']?> : </b><?=$details['description']?></div>
</div>
<? endforeach; ?>
</div>
</div>
<?php endif; ?>
<hr class="nettoyage" />
<!-- VIDE DE DONNEES -->
<?php if (empty($repartition['chorodep']['svgUrl'])
&& empty($repartition['chorodep']['legende'])
&& empty($repartition['eflore']['min'])
&& empty($repartition['eflore']['legende'])) : ?>
Aucune donnée.
<?php endif; ?>
</div>
<br/>
<br/>
/tags/v5.10-vilmorin/modules/pdf_export/squelettes/pdf_description.tpl.html
New file
0,0 → 1,179
<!-- DESCRIPTION -->
<div class="bloc <?if ($premier == 'description') : echo 'allow-break'; else : echo 'no-break' ; endif; ?>">
 
<div class="categorie">Description</div>
<!-- COSTE -->
<? if (!empty($description['coste']['description'])) : ?>
<div class="no-break">
<h2> Description de Coste </h2>
<span class="citation"><?=$description['coste']['meta']['citation']?></span>
<div>
<table class="desc">
<tr>
<td>
<?if ($description['coste']['description']['nom_scientifique'] != '') : ?>
<span class="gras">
<?=$description['coste']['description']['nom_scientifique']; ?>
</span>
<? endif; ?>
<?if ($description['coste']['description']['nom_commun'] != '') : ?>
<span class="italique">
<?=$description['coste']['description']['nom_commun']; ?>
</span>
<? endif; ?>
</td>
</tr>
<?if ($description['coste']['description']['synonymes'] != '') : ?>
<tr>
<td>
<span class="titre">Synonymes </span>
<?=$description['coste']['description']['synonymes']; ?>
</td>
</tr>
<? endif; ?>
<tr>
<td>
<?if ($description['coste']['description']['texte'] != '') : ?>
<?=$description['coste']['description']['texte']; ?>
<? endif; ?>
</td>
</tr>
<?if ($description['coste']['description']['ecologie'] != '') : ?>
<tr>
<td>
<span class="titre">Écologie </span>
<?=$description['coste']['description']['ecologie']; ?>
</td>
</tr>
<? endif; ?>
<?if ($description['coste']['description']['repartition'] != '') : ?>
<tr>
<td>
<span class="titre">Répartition </span>
<?=$description['coste']['description']['repartition']; ?>
</td>
</tr>
<? endif; ?>
<?if ($description['coste']['description']['floraison'] != '') : ?>
<tr>
<td>
<span class="titre">Floraison </span>
<?=$description['coste']['description']['floraison']; ?>
<?if ($description['coste']['description']['fructification'] != '') : ?>
<span class="titre">Fructification </span>
<?=$description['coste']['description']['fructification']; ?>
<? endif; ?>
</td>
</tr>
<? endif; ?>
<?if ($description['coste']['description']['usages'] != '') : ?>
<tr>
<td>
<span class="titre">Usages</span>
<?=$description['coste']['description']['usages']; ?>
</td>
</tr>
<? endif;?>
</table>
</div>
</div>
<br/>
<? endif; ?>
<!-- BASEFLOR -->
<? if (!empty($description['baseflor'])) : ?>
<div class="no-break">
<h2>Description Baseflor </h2>
<span class="citation"><?=$description['baseflor']['meta']['citation']?> </span>
<div>
<table class="desc">
<tr>
<td colspan="2">
<?if ($description['baseflor']['type_bio'] != '') : ?>
<span class="titre">Type Biologique : </span>
<?=$description['baseflor']['type_bio']; ?>
<? endif; ?>
</td>
</tr>
<tr>
<td colspan="2">
<?if ($description['baseflor']['form_vegetale'] != '') :?>
<span class="titre">Formation végétale : </span>
<?=$description['baseflor']['form_vegetale']; ?>
<? endif; ?>
</td>
</tr>
<tr>
<td colspan="2">
<?if ($description['baseflor']['chorologie'] != '') :?>
<span class="titre">Chorologie : </span>
<?=$description['baseflor']['chorologie'] ?>
<? endif; ?>
</td>
</tr>
<tr>
<td >
<?if ($description['baseflor']['inflorescence'] != '') :?>
<span class="titre">Inflorescence :</span>
<?=$description['baseflor']['inflorescence'];?> <br/>
<? endif; ?>
<?if ($description['baseflor']['fruit'] != '') :?>
<span class="titre">Fruit :</span>
<?=$description['baseflor']['fruit']; ?> <br/>
<? endif; ?>
<?if ($description['baseflor']['couleur_fleur'] != '') :?>
<span class="titre">Couleur de la fleur : </span>
<?=$description['baseflor']['couleur_fleur'];?> <br/>
<? endif; ?>
<?if ($description['baseflor']['macule'] != '') :?>
<span class="titre">Macule : </span>
<?=$description['baseflor']['macule']; ?> <br/>
<? endif; ?>
<?if ($description['baseflor']['floraison'] != '') :?>
<span class="titre">Floraison : </span>
<?=$description['baseflor']['floraison']; ?> <br/>
<? endif; ?>
</td>
<td>
<?if ($description['baseflor']['sexualite'] != '') :?>
<span class="titre">sexualité : </span>
<?=$description['baseflor']['sexualite'] ; ?> <br/>
<? endif; ?>
<?if ($description['baseflor']['ordre_maturation'] != '') :?>
<span class="titre">Ordre de maturation : </span>
<?=$description['baseflor']['ordre_maturation']; ?> <br/>
<? endif; ?>
<?if ($description['baseflor']['pollinisation'] != '') :?>
<span class="titre">Pollinisation : </span>
<?=$description['baseflor']['pollinisation'] ; ?> <br/>
<? endif; ?>
<?if ($description['baseflor']['dissemination'] != '') :?>
<span class="titre">Dissémination : </span>
<?=$description['baseflor']['dissemination'] ;?> <br/>
<? endif; ?>
</td>
</tr>
</table>
</div>
</div>
<? endif; ?>
<br/>
<!-- WIKI -->
<? if (!empty($description['wikini']['description'])) : ?>
<div class="no-break">
<h2> Description collaborative </h2>
<div class="wiki allow-break" title="description">
<?=$description['wikini']['description']?>
</div>
</div>
<? endif; ?>
<!-- VIDE DE DONNEES -->
<? if (empty($description['wikini']['description']) && empty($description['coste']['description']) && empty($description['baseflor']) ) : ?>
Aucune Donnée.
<? endif; ?>
</div>
<br/>
<br/>
/tags/v5.10-vilmorin/modules/pdf_export/squelettes/pdf_ethnobotanique.tpl.html
New file
0,0 → 1,91
<!-- ETHNOBOTANIQUE-->
<div class="bloc <? if ($premier == 'ethnobotanique') : echo 'allow-break'; else : echo 'no-break'; endif; ?>">
<div class="categorie">Ethnobotanique</div>
<!-- NOMS COMMUNS -->
<?php if($ethnobotanique['nvjfl']['noms'] != array()) : ?>
<div class="no-break">
<h2>Noms communs</h2>
<span class="citation"><?=$ethnobotanique['nvjfl']['meta']['citation']?></span>
<table class="allow-break">
<tr>
<th>Langue</th><th>Nom</th><th>Genre et Nombre</th><th>Conseil d'emploi</th><th>Notes</th>
</tr>
<?php foreach($ethnobotanique['nvjfl']['noms'] as $nom_verna) : ?>
<tr>
<td><?= $nom_verna['code_langue'] ?></td>
<td><?= $nom_verna['nom_vernaculaire'] ?></td>
<td><?= $nom_verna['genre'] ?></td>
<td><?= $nom_verna['conseil_emploi'] ?></td>
<td><?= $nom_verna['notes'] ?></td>
</tr>
<?php endforeach; ?>
</table>
</div>
<?php endif; ?>
<!-- WIKI -->
<?php if (!empty($ethnobotanique['wikini']['noms_communs'])) : ?>
<div class="no-break">
<span> Noms communs et étymologies proposés par les membres du réseau : </span>
<div title="noms_communs" class="wiki allow-break">
<?=$ethnobotanique['wikini']['noms_communs']?>
</div>
</div>
<?php endif; ?>
<!-- STATUTS -->
<?php if($ethnobotanique['chorologie']['donnees'] != array()) : ?>
<div class="no-break">
<h2>Statuts</h2>
<span class="citation"><?=$ethnobotanique['chorologie']['meta']['citation']?></span>
<table class="liste_statuts allow-break">
<tr>
<th></th>
<? foreach($ethnobotanique['chorologie']['colonnes'] as $colonne) : ?>
<th><?=$colonne ?></th>
<?php endforeach; ?>
</tr>
<? foreach($ethnobotanique['chorologie']['donnees'] as $type => $donnee) : ?>
<tr>
<td><?=$type ?></td>
<? foreach($ethnobotanique['chorologie']['colonnes'] as $colonne) : ?>
<td><?= (isset($donnee[$colonne])) ? $donnee[$colonne] : '' ?></td>
<? endforeach; ?>
</tr>
<? endforeach; ?>
</table>
</div>
<? endif; ?>
<!-- USAGE -->
<? if (!empty($ethnobotanique['wikini']['usage'])) : ?>
<div class="no-break">
<h2> Usage : </h2>
<span> Rédaction collaborative. </span>
<div title="usage" class="wiki allow-break">
<?=$ethnobotanique['wikini']['usage']?>
</div>
</div>
<? endif; ?>
<!-- CULTURE ET ARTS -->
<? if (!empty($ethnobotanique['wikini']['usage'])) : ?>
<div class="no-break">
<h2> Culture et arts : </h2>
<span> Rédaction collaborative. </span>
<div title="culture et arts" class="wiki allow-break">
<?=$ethnobotanique['wikini']['culture_et_arts']?>
</div>
</div>
<? endif; ?>
<!-- VIDE DE DONNEES -->
<? if (empty($ethnobotanique['wikini']) && empty($ethnobotanique['chorologie']) && empty($ethnobotanique['nvjfl']) ) : ?>
Aucune Donnée.
<? endif; ?>
</div>
<br/>
<br/>
/tags/v5.10-vilmorin/modules/pdf_export/squelettes/pdf_ecologie.tpl.html
New file
0,0 → 1,99
<!-- ECOLOGIE -->
<div class="bloc no-break">
<!-- ECOLOGIE -->
<div class="categorie">Ecologie</div>
<? if (!isset($ecologie['baseflor']['aucune'])) : ?>
<div class="no-break">
<h2>Optimum écologique</h2>
<span class="citation"><?=$ecologie['baseflor']['meta']['citation']?></span>
<div class="fond_graphique">
<? if($ecologie['baseflor']['climat_url']) : ?>
<div class="no-break">
<div class="graphique">
<span class="titre">caractéristiques climatiques</span>
<br/>
<!-- laisser attribut alt au cas où svg ne marche pas -->
<object class="svg_clim" type="image/svg+xml" data="<?=$ecologie['baseflor']['climat_url']?>" alt="<?=$ecologie['baseflor']['climat_url_png']?>">
</object>
</div>
</div>
<? endif; ?>
<? if($ecologie['baseflor']['sol_url']) : ?>
<div class="no-break">
<div class="graphique">
<span class="titre centrer">caractéristiques du sol</span>
<br/>
<!-- laisser attribut alt au cas où svg ne marche pas -->
<object type="image/svg+xml" data="<?=$ecologie['baseflor']['sol_url']?>" class="svg_sol" alt="<?=$ecologie['baseflor']['sol_url_png']?>">
</object>
</div>
<br/>
<img src="<?=$ecologie['baseflor']['legende_eco']?>" class="legende_formes"/>
</div>
</div>
<? endif; ?>
</div>
<? endif; ?>
<!-- PHYTOSOCIOLOGIE -->
<div class="no-break">
<? if (isset($ecologie['baseveg']['baseflor']['catminat'])) : ?>
<h2>Phytosociologie</h2>
<span class="citation"><?=$ecologie['baseveg']['meta']['citation']?></span>
<? if (isset($ecologie['baseveg']['syntaxons-sup']) || isset($ecologie['baseveg']['syntaxons-sup'])) : ?>
<br/>
Le code catminat de ce taxon est <span class="gras"> <?=$ecologie['baseveg']['baseflor']['catminat'] ?></span> </br>
Il est caractéristique du syntaxon de niveau <span class="gras"><?=$ecologie['baseveg']['syntaxon-courant'][0]['niveau.libelle']?></span> présenté
dans le tableau ci-dessous avec ses niveaux supérieurs.
<table>
<?php foreach ($ecologie['baseveg']['syntaxons-sup'] as $cle => $valeurs ) : ?>
<tr>
<td>
<span class="gras">
<?=$valeurs['code_catminat']?>
</span></br>
<?=$valeurs['niveau.libelle']?>
</td>
<td>
<span class="gras">
<?=$valeurs['syntaxon']?>
</span> </br>
<span >
<?=$valeurs['physio_biotype']?>
</span> </br>
<?= !empty($valeurs['repartition_france']) ? 'répartition : '.$valeurs['repartition_france'] : '' ?>
</br>
Réf. <?=$valeurs['ref_der_biblio']?>
</td>
</tr>
<? endforeach; ?>
<tr class="surlignage">
<td>
<span class="gras">
<?=$ecologie['baseveg']['syntaxon-courant'][0]['code_catminat']?>
</span></br>
<?=$ecologie['baseveg']['syntaxon-courant'][0]['niveau.libelle']?>
</td>
<td>
<span class="gras">
<?=$ecologie['baseveg']['syntaxon-courant'][0]['syntaxon']?>
</span> </br>
<span >
<?=$ecologie['baseveg']['syntaxon-courant'][0]['physio_biotype']?>
</span> </br>
<?= !empty($ecologie['baseveg']['syntaxon-courant'][0]['repartition_france']) ? 'rép.'.$ecologie['baseveg']['syntaxon-courant'][0]['repartition_france'] : ''?>
</br>
Réf. <?=$ecologie['baseveg']['syntaxon-courant'][0]['ref_der_biblio']?>
</td>
</tr>
</table>
<?endif;?>
<?endif;?>
</div>
 
<!-- VIDE DE DONNEES -->
<? if (isset($ecologie['baseflor']['aucune'])) : ?>
Aucune donnée.
<? endif; ?>
</div>
<br/>
/tags/v5.10-vilmorin/modules/pdf_export/PdfExport.php
New file
0,0 → 1,233
<?php
/**
* Classe PdfExport, réalise des exportations pdf des fiches de taxons.
* Les fonctionnalités proposées sont l'export de toutes les parties de la fiche pdf
* ou bien des parties choisies.
* (voir le squelette fiche_pdf_lien.tpl.html pour le formulaire dans le module fiche.)
*
* manuel wkhtmltopdf : http://madalgo.au.dk/~jakobt/wkhtmltoxdoc/wkhtmltopdf_0.10.0_rc2-doc.html
* pour changer de librairie : changer la fonction transformerHtmlEnPdf()
*
* @category php 5.2
* @package eflore-consultation
* @author Mathilde Salthun-Lassalle <mathilde@tela-botanica.org>
* @copyright 2012 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 $Id$
*/
 
class PdfExport extends aControleur {
 
const DUREE_DE_VIE_PDF = 86400;// 3600 * 24 * 2 = 172 800
const DUREE_DE_VIE_HTML = 60;
 
private $Conteneur;
private $parametres = array();
private $chemin_pdf;
private $html;
private $wkhtml;
private $piedepage;
private $fichier_pdf;
private $blocs = array();
 
private $Desc;
private $Ecolo;
private $Ethno;
private $Illus;
private $Nomen;
private $Reparti;
private $Stat;
private $Biblio;
 
public function initialiser() {
spl_autoload_register(array($this, 'chargerClassesOnglets'));
$this->capturerParametres();
$this->conteneur = new Conteneur($this->parametres);
$this->chemin_pdf = Config::get('dossier_pdf');
$this->wkhtml = Config::get('WKHTMLTOPDF');
$this->Desc = new Description($this->conteneur);
$this->Ecolo = new Ecologie($this->conteneur);
$this->Ethno = new Ethnobotanique($this->conteneur);
$this->Illus = new Illustrations($this->conteneur);
$this->Nomen = new Nomenclature($this->conteneur);
$this->Stat = new Statut($this->conteneur);
$this->Biblio = new Bibliographie($this->conteneur);
$this->Reparti = new Repartition($this->conteneur);
$this->piedepage = Config::get('chemin_modules').'pdf_export/squelettes/footer.html';
}
 
private function chargerClassesOnglets($classe) {
$base = dirname(__FILE__).DS;
$cheminFormateurs = $base.'../fiche/formateurs'.DS;
$dossiers = array($base, $cheminFormateurs);
foreach ($dossiers as $chemin) {
$fichierATester = $chemin.$classe.'.php';
if (file_exists($fichierATester)) {
include_once $fichierATester;
return null;
}
}
}
 
private function getNomRetenu() {
$nom_retenu = $this->conteneur->getNomCourant()->getNomRetenu()->get('nom_sci');
return $nom_retenu;
}
 
private function getNomRetenuHTML() {
$nom_retenu = '<span class="italique">'
.$this->conteneur->getNomCourant()->getNomRetenu()->get('nom_sci')
.'</span> '.$this->conteneur->getNomCourant()->getNomRetenu()->get('auteur');
return $nom_retenu;
}
 
private function getNomFichierValide(){
$nom_retenu = $this->conteneur->getNomCourant()->getNomRetenu()->get('nom_sci');
$nom_retenu = str_replace(' ','_',$nom_retenu );
$nom_retenu = preg_replace('/[\(\)\.\[\]]/','',$nom_retenu );
return $nom_retenu;
}
 
private function capturerParametres() {
if (isset($_GET['num_nom'])) {
$this->parametres['num_nom'] = $_GET['num_nom'];
}
if (isset($_GET['nom'])) {
$this->parametres['nom'] = $_GET['nom'];
}
if (isset($_GET['type_nom'])) {
$this->parametres['type_nom'] = $_GET['type_nom'];
}
if (isset($_GET['referentiel'])) {
$this->parametres['referentiel'] = $_GET['referentiel'];
}
if (isset($_GET['niveau'])) {
Registre::set('parametres.niveau', $_GET['niveau']);
}
if (isset($_GET['onglet'])) {
$this->onglet = $_GET['onglet'];
}
}
 
private function capturerParametresFormulaire() {
$this->blocs = array('description', 'ecologie', 'ethnobotanique', 'statuts', 'illustrations',
'bibliographie', 'repartition', 'nomenclature');
if (!empty($_POST['bloc'])) {
$this->blocs = $_POST['bloc'];
}
}
 
public function executerActionParDefaut() {
$this->executerPdfExport();
}
 
public function executerPdfExport(){
$this->capturerParametresFormulaire();
$hash = crc32($this->parametres['referentiel'].'-'.implode('-', $this->blocs));
$nom_fichier = $this->getNomFichierValide().'-'.$hash;
// le dossier cache existe normalement, mais le sous dossier pdf
// est parfois effacé par erreur lors des suppressions de cache
// il vaut mieux donc le recréer s'il n'existe pas
if(!file_exists($this->chemin_pdf)) {
mkdir($this->chemin_pdf, 0755, true);
}
 
$this->fichier_html = $this->chemin_pdf.''.$nom_fichier.'.html';
$this->fichier_pdf = $this->chemin_pdf.''.$nom_fichier.'.pdf';
 
if (file_exists($this->fichier_pdf) == false) {
$donnees = $this->obtenirDonnees();
$this->construireHtml($donnees);
if ($this->transformerHtmlEnPdf() == false) {
die('Erreur de generation du fichier PDF');
}
}
$this->envoyerPdfAuNavigateur();
$this->nettoyerFichiersTmp();
// ATTENTION : on doit stopper l'exécution de Papyrus sinon du HTML inutile est ajouté à la fin du fichier PDF
exit;
}
 
private function construireHtml($donnees) {
$this->html = $this->getVue('pdf_header', $donnees);
foreach ($this->blocs as $bloc) {
$this->ajouterHtml($bloc, $donnees);
}
$this->html .= '</body></html>';
}
 
private function ajouterHtml($bloc, $donnees) {
if (!empty($donnees[$bloc])) {
$this->html .= $this->getVue('pdf_'.$bloc, $donnees);
}
}
 
//+-------------------------------------récupération des données---------------------------------------------+
private function obtenirDonnees() {
$donnees = array();
$version = $this->Nomen->obtenirVersionDonnees();
$donnees['donnees_pdf'] = array(
'nom' => $this->getNomRetenuHTML(),
'chemin_css' => Config::get('url_css_pdf'),
'version' => $version['version']);
$donnees['description'] = $this->Desc->obtenirDonneesExport();
$donnees['ecologie'] = $this->Ecolo->obtenirDonneesExport();
$donnees['statuts'] = $this->Stat->obtenirDonnees();
$donnees['ethnobotanique'] = $this->Ethno->obtenirDonnees();
$donnees['illustrations'] = $this->Illus->obtenirDonneesExport();
$donnees['nomenclature'] = $this->Nomen->obtenirDonnees();
$donnees['repartition'] = $this->Reparti->obtenirDonneesExport();
$donnees['bibliographie'] = $this->Biblio->obtenirDonnees();
$donnees['premier'] = $this->blocs[0];// pour page-break : éviter 1ere page vide si bloc trop long
return $donnees;
}
 
//+------------------------------------------------export en pdf---------------------------------------------+
private function envoyerPdfAuNavigateur() {
$nom_fichier = $this->getNomFichierValide();
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename='.$nom_fichier.'.pdf');
readfile($this->fichier_pdf);
}
 
private function nettoyerFichiersTmp() {
$dossierStockage = $this->chemin_pdf;
if (is_dir($dossierStockage)) {
$objets = scandir($dossierStockage);
if ($objets !== false) {
foreach ($objets as $objet) {
$chemin = $dossierStockage.$objet;
if (is_file($chemin)) {
$filemtime = @filemtime($chemin);
if ($filemtime !== false) {
if (substr($chemin, -5) == '.html') {
$suppression = (time() - $filemtime >= self::DUREE_DE_VIE_HTML) ? true : false;
} else {
$suppression = (time() - $filemtime >= self::DUREE_DE_VIE_PDF) ? true : false;
}
if ($suppression === true) {
unlink($chemin);
}
}
}
}
}
}
}
 
//version WKHTMLtoPDF en ligne de commande
private function transformerHtmlEnPdf() {
$nom = $this->getNomRetenu();
file_put_contents($this->fichier_html, $this->html);
$commande = "{$this->wkhtml} --replace 'nom' '$nom' --encoding utf-8 --footer-html {$this->piedepage} {$this->fichier_html} {$this->fichier_pdf}";
$ret = -1;
$debug = array();
exec($commande, $debug, $ret);
//print_r( $debug ); echo $ret;
$ok = ($ret == 0 || $ret == 2) ? true : false;
return $ok;
}
}
?>
/tags/v5.10-vilmorin/modules/pdf_export/pdf_export.txt
New file
0,0 → 1,32
A LIRE
 
- pour utiliser wkhtmltopdf en local télécharger la version static binaire linux (avec patch QT) à l'adresse
http://code.google.com/p/wkhtmltopdf/downloads/list
(cette version peut fonctionner sans server x11 et permet plus de fonctionnalités)
décompresser et mettre dans /usr/local/bin/ ou /usr/bin
-dans le fichier de config :
changer les valeurs de :
; chemin vers outil de conversion pdf
WKHTMLTOPDF = ""
(sur le serveur c'est 'wkhtmltopdf' mais en local il faut parfois le chemin complet)
et
; chemin de stockage temporaire pour les Html & les PDF
dossier_pdf = ""
les fichiers html et pdf créés pour une même fiche peuvent être différents d'un utilisateur
à un autre car chacun peut personnaliser sa fiche. Ainsi, les fichiers créés sont détruits
après avoir été envoyés au navigateur.
 
-lors de l'appel de wkhtmltopdf avec exec() :
* mettre le --encoding utf-8 avant toute page html
* si utilisation de --replace : mettre guillemets simples : ex :--replace 'nom_parametre' '$nom'
* ne pas mettre de guillemets pour les chemins vers une page html
-les appels aux méthodes obtenirDonneesExport() pour récupérer les données, servent à sélectionner
uniquement les infos nécéssaires lors de l'export pour augmenter les performances.
 
-pour autoriser les éléments html coupés entre deux pages ou les interdire utiliser le css
(page-break-inside : avoid ou auto)
 
- ne pas renommer footer.html en footer.tpl.html
Property changes:
Added: svn:eol-style
+native
\ No newline at end of property
/tags/v5.10-vilmorin/modules/recherche_avancee/RechercheAvancee.php
New file
0,0 → 1,30
<?php
class RechercheAvancee extends aControleur {
 
public function executerFormulaireRechercheAv($donnees= array()) {
$donnees['lien'] = (isset($donnees['params'])) ? $this->urls->obtenirUrlRechercheAvancee($donnees['params'])
: $this->urls->obtenirUrlRechercheAvancee();
$donnees['i18n'] = I18n::get('Recherche-form-avancee');
$donnees['referentiel'] = Registre::get('parametres.referentiel');
$donnees['url_base_completion_noms_sci'] = str_replace('{projet}', $donnees['referentiel'], Config::get('nomsTpl'));
$donnees['champs_presence'] = $this->obtenirChampsPresence();
$donnees['url_form'] = $this->urls->obtenirUrlBase();
return $this->getVue('form_recherche_av', $donnees);
}
private function obtenirChampsPresence() {
$tableau_champs_presence = array();
$referentiel = Registre::get('parametres.referentiel');
$champs_presence = Config::get($referentiel.'.champsPresence');
$champs_presence_spl = explode('|', $champs_presence);
foreach($champs_presence_spl as $champ) {
$label_param_champ = explode(':', $champ);
if(count($label_param_champ) >= 2) {
$tableau_champs_presence[] = array('param' => $label_param_champ[1],
'label' => $label_param_champ[0]);
}
}
return $tableau_champs_presence;
}
}
?>
/tags/v5.10-vilmorin/modules/recherche_avancee/squelettes/form_recherche_av.tpl.html
New file
0,0 → 1,285
<!-- DEBUT FORM_AVANCE -->
<script>
<!--
var AUTOCOMPLETION_ELEMENTS_NBRE = 50;
var URL_SERVICE_AUTOCOMPLETION_NOM_SCI = "<?=$url_base_completion_noms_sci?>";
var REFERENTIEL = "<?= Registre::get('parametres.referentiel');?>";
$(document).ready(function(){
$('#bloc_recherche_av').hide();
$('#recherche_av').click(function(event) {
$('#bloc_recherche_av').slideToggle();
event.preventDefault();
return false;
});
});
-->
</script>
 
<a href="" id="recherche_av" name="recherche_av"> Recherche avancée dans la base de données <?= strtoupper(Registre::get('parametres.referentiel')); ?> version <?= $metadonnees_referentiel['version'] ?>. </a>
<hr class="nettoyage"/>
<div id="bloc_recherche_av">
<form id="recherche_av_form" method="get" action="<?=$lien?>" >
<fieldset class="numero_form">
<label for="nn">Numéro nomenclatural </label>
<input id="nn" type="text" name="nn" class="largeur-01" value="<?=isset($param['nn'])? $param['nn'] : ''?>"/>
<label for="nt">Numéro taxonomique </label>
<input type="text" id="nt" name="nt" class="largeur-01" value="<?=isset($param['nt'])? $param['nt'] : ''?>"/>
</fieldset>
<fieldset class="classification_form">
<legend> Classification </legend>
<br/>
<label for="fam"> Famille </label>
<input type="text" id="fam" name="fam" class="champ_autocomplete" value="<?=isset($param['fam'])? $param['fam'] : ''?>" />
<label for="gen"> Genre </label>
<input type="text" id="gen" name="gen" class="champ_autocomplete" value="<?=isset($param['gen'])? $param['gen'] : ''?>" />
<label for="sp">Epithète sp.</label>
<input type="text" id="sp" name="sp" class="champ_autocomplete" value="<?=isset($param['sp'])? $param['sp'] : ''?>" />
<br/><br/>
<? $type = ''; if (isset($param['type'])){ $type = $param['type']; } ?>
<label for="type">Type épithète infra </label>
<select name="type">
<option value="" <?=($type == '') ? 'selected="selected"' : '' ?> >
</option>
<option value="subsp." <?=($type == 'subsp.') ? 'selected="selected"' : '' ?> >
sous-espèce
</option>
<option value="infra-sp." <?=($type == 'infra-sp.') ? 'selected="selected"' : '' ?> >
infra-espèce
</option>
<option value="var." <?=($type == 'var.') ? 'selected="selected"' : '' ?> >
variété
</option>
<option value="subvar." <?=($type == 'subvar.') ? 'selected="selected"' : '' ?> >
sous-variété
</option>
<option value="f." <?=($type == 'f.') ? 'selected="selected"' : '' ?> >
forme
</option>
<option value="subf." <?=($type == 'subf.') ? 'selected="selected"' : '' ?> >
sous-forme
</option>
<option value="f. sp." <?=($type == 'f. sp.') ? 'selected="selected"' : '' ?> >
forma species
</option>
<option value="race" <?=($type == 'race') ? 'selected="selected"' : '' ?> >
race
</option>
<option value="proles" <?=($type == 'proles') ? 'selected="selected"' : '' ?> >
proles
</option>
</select>
<label for="ssp">Epithète infra spé.</label>
<input class="champ_autocomplete" type="text" id="ssp" name="ssp" value="<?=isset($param['ssp'])? $param['ssp'] : ''?>" />
</fieldset>
<br/>
<fieldset class="publication_form">
<legend> Publication </legend>
<br/>
<label> décrit entre </label>
<input placeholder="<?=$i18n['valeur-form-date']?>" type="text" name="and" id="and" value="<? if (isset($param['and'])){echo $param['and'] ;}?>" class="largeur-01"/>
<label style="width:20px;"> et </label>
<input placeholder="<?=$i18n['valeur-form-date']?>" type="text" id="anf" name="anf" value="<? if (isset($param['anf'])){echo $param['anf'] ;}?>" class="largeur-01"/>
<label style="width:50px;"> par </label>
<input placeholder="<?=$i18n['valeur-form-auteur']?>" class="champ_autocomplete" style="width:150px;" id="au" type="text" name="au" value="<? if (isset($param['au'])){ echo $param['au']; } ?>"/> <br/><br/>
<label> dans </label>
<input placeholder="<?=$i18n['valeur-form-bib']?>" class="champ_autocomplete largeur-06" id="bib" type="text" name="bib" value="<? if(isset($param['bib'])){echo $param['bib'] ;}?>" "/>
</fieldset>
<? if(count($champs_presence) > 0) { ?>
<fieldset class="presence_form">
<legend> Présence </legend>
<br/>
<? foreach($champs_presence as $presence) : ?>
<? $nom_param_presence = $presence['param'] ?>
<? $param_presence = ''; if (isset($param[$nom_param_presence])){ $param_presence = $param[$nom_param_presence]; }?>
<label for="<?= $nom_param_presence ?>"><?= $presence['label'] ?></label>
<select name="<?= $nom_param_presence ?>">
<option value="" <?=($param_presence == '') ? 'selected="selected"' : '' ?> >
</option>
<option value="0" <?=($param_presence == '0') ? 'selected="selected"' : '' ?> >
pas d'information
</option>
<option value="P" <?=($param_presence == 'P') ? 'selected="selected"' : '' ?> >
présent
</option>
<option value="S" <?=($param_presence == 'S') ? 'selected="selected"' : '' ?> >
supposé présent
</option>
<option value="D" <?=($param_presence == 'D') ? 'selected="selected"' : '' ?>>
présence douteuse
</option>
<option value="E" <?=($param_presence == 'E') ? 'selected="selected"' : '' ?>>
éteint </option>
<option value="F" <?=($param_presence == 'F') ? 'selected="selected"' : '' ?>>
cité par erreur comme présent
</option>
<option value="A" <?=($param_presence == 'A') ? 'selected="selected"' : '' ?>>
absent
</option>
<option value="-" <?=($param_presence == '-') ? 'selected="selected"' : '' ?>>
autre statut de présence
</option>
<option value="E-W" <?=($param_presence == 'E-W') ? 'selected="selected"' : '' ?>>
disparu
</option>
<option value="P-B" <?=($param_presence == 'P-B') ? 'selected="selected"' : '' ?>>
présence accidentelle
</option>
<option value="E-F" <?=($param_presence == 'E-F') ? 'selected="selected"' : '' ?>>
trouvé en fouille
</option>
</select>
<br/> <br/>
<? endforeach; ?>
</fieldset>
<?php } ?>
<fieldset class="statuts_form">
<legend> Statuts </legend>
<br/>
<? $sto = ''; if (isset($param['sto'])){ $sto = $param['sto']; }?>
<label for="sto"> statut d'origine </label>
<select name="sto">
<option value="" <?=($sto == '') ? 'selected="selected"' : '' ?>>
</option>
<option value="0" <?=($sto == '0') ? 'selected="selected"' : '' ?>>
pas d'information
</option>
<option value="N" <?=($sto == 'N') ? 'selected="selected"' : '' ?>>
natif (=indigène)
</option>
<option value="S" <?=($sto == 'S') ? 'selected="selected"' : '' ?>>
supposé natif
</option>
<option value="D" <?=($sto == 'D') ? 'selected="selected"' : '' ?>>
origine douteuse
</option>
<option value="E" <?=($sto == 'E') ? 'selected="selected"' : '' ?>>
anciennement natif (éteint)
</option>
<option value="F" <?=($sto == 'F') ? 'selected="selected"' : '' ?>>
cité par erreur comme natif
</option>
<option value="A" <?=($sto == 'A') ? 'selected="selected"' : '' ?>>
non natif
</option>
<option value="X" <?=($sto == 'X') ? 'selected="selected"' : '' ?>>
inapplicable
</option>
<option value="-" <?=($sto == '-') ? 'selected="selected"' : '' ?>>
autre statut d'origine
</option>
<option value="N-E" <?=($sto == 'N-E') ? 'selected="selected"' : '' ?>>
endémique
</option>
<option value="N-S" <?=($sto == 'N-S') ? 'selected="selected"' : '' ?>>
sub-endémique
</option>
<option value="S-C" <?=($sto == 'S-C') ? 'selected="selected"' : '' ?>>
supposé natif cryptogène
</option>
</select>
<br/> <br/>
<? $sti = ''; if (isset($param['sti'])){ $sti = $param['sti']; }?>
<label for="sti"> statut d'introduction </label>
<select name="sti">
<option value="" <?=($sti == '') ? 'selected="selected"' : '' ?>>
</option>
<option value="0" <?=($sti == '0') ? 'selected="selected"' : '' ?> >
pas d'information
</option>
<option value="I" <?=($sti == 'I') ? 'selected="selected"' : '' ?>>
introduit
</option>
<option value="S" <?=($sti == 'S') ? 'selected="selected"' : '' ?>>
supposé introduit
</option>
<option value="D" <?=($sti == 'D') ? 'selected="selected"' : '' ?>>
introduction douteuse
</option>
<option value="E" <?=($sti == 'E') ? 'selected="selected"' : '' ?>>
anciennement introduit (éteint)
</option>
<option value="F" <?=($sti == 'F') ? 'selected="selected"' : '' ?>>
cité par erreur comme introduit
</option>
<option value="A" <?=($sti == 'A') ? 'selected="selected"' : '' ?>>
non introduit
</option>
<option value="X" <?=($sti == 'X') ? 'selected="selected"' : '' ?>>
inapplicable
</option>
<option value="-" <?=($sti == '-') ? 'selected="selected"' : '' ?>>
autre statut d'introduction
</option>
<option value="I-J" <?=($sti == 'I-J') ? 'selected="selected"' : '' ?>>
introduit envahissant
</option>
<option value="I-M" <?=($sti == 'I-M') ? 'selected="selected"' : '' ?>>
domestique, introduit non-établi
</option>
<option value="S-C" <?=($sti == 'S-C') ? 'selected="selected"' : '' ?>>
supposé introduit cryptogène
</option>
</select>
<br/> <br/>
<label for="stc"> statut de culture </label>
<? $stc = ''; if (isset($param['stc'])){ $stc = $param['stc']; }?>
<select name="stc">
<option value="" <?=($stc == '') ? 'selected="selected"' : '' ?>>
</option>
<option value="0" <?=($stc == '0') ? 'selected="selected"' : '' ?>>
pas d'information
</option>
<option value="C" <?=($stc == 'C') ? 'selected="selected"' : '' ?>>
cultivé en extérieur
</option>
<option value="I" <?=($stc == 'I') ? 'selected="selected"' : '' ?>>
cultivé en intérieur
</option>
<option value="S" <?=($stc == 'S') ? 'selected="selected"' : '' ?>>
supposé cultivé
</option>
<option value="D" <?=($stc == 'D') ? 'selected="selected"' : '' ?>>
culture douteuse
</option>
<option value="E" <?=($stc == 'E') ? 'selected="selected"' : '' ?>>
anciennement cultivé (éteint)
</option>
<option value="F" <?=($stc == 'F') ? 'selected="selected"' : '' ?>>
cité par erreur comme cultivé
</option>
<option value="X" <?=($stc == 'X') ? 'selected="selected"' : '' ?>>
inapplicable
</option>
<option value="-" <?=($stc == '-') ? 'selected="selected"' : '' ?>>
autre statut de culture
</option>
<option value="A" <?=($stc == 'A') ? 'selected="selected"' : '' ?>>
non cultivé
</option>
</select>
</fieldset>
<input id="eflore_nomenclature_referentiel" name="referentiel" type="hidden" value="<?=Registre::get('parametres.referentiel')?>" />
<input id="eflore_nomenclature_niveau" name="niveau" type="hidden" value="<?=Registre::get('parametres.niveau')?>" />
<input id="eflore_nomenclature_module" name="module" type="hidden" value="recherche" />
<input id="eflore_nomenclature_action" name="action" type="hidden" value="rechercheAvancee" />
<input type="hidden" name="type_nom" value="nom_scientifique" />
<input type="submit" class="rech" value="Lancer la recherche avancée"/>
</form>
<hr class="nettoyage"/>
</div>
 
<? if (isset($message_av)) : ?>
<p class="attention">
<?= $i18n[$message_av['attention']] ?>
</p>
<? endif; ?>
 
<!-- FIN FORM_AVANCE -->
/tags/v5.10-vilmorin/modules/popup_galerie/squelettes/popup_galerie_illustrations.tpl.html
New file
0,0 → 1,243
<script type="text/javascript">
<!--
var urls = [<?= '"'.implode($urls, '","').'"'; ?>];
var ids = [<?= '"'.implode($ids, '","').'"'; ?>];
var meta = new Array();
var indexImage = 0;
var urlImage = "<?= $url_image; ?>";
var tailleMaxHauteur = 580;
var tailleMaxlargeur = 680;
var titre = "<?= $titre; ?>";
var urlMeta = "<?= $url_meta; ?>";
var urlContact = "<?= $url_contact; ?>";
var referentiel = "<?= Registre::get('parametres.referentiel'); ?>";
var metadonneesOuvertes = false;
var hauteurSansMeta = null;
function redimensionnerImage(objet) {
objet.removeAttr("width");
objet.removeAttr("height");
var hauteurImage = objet.height();
var largeurImage = objet.width();
var rapport = 1;
if(largeurImage > hauteurImage && largeurImage > tailleMaxlargeur) {
rapport = hauteurImage/largeurImage;
if(screen.width < 800) {
largeurImage = 540;
configurerAffichagePetiteTaille();
}
hauteurImage = largeurImage*rapport;
$('#illustration').attr("height", hauteurImage);
$('#illustration').attr("width", largeurImage);
}
 
if(hauteurImage > largeurImage && hauteurImage > tailleMaxHauteur) {
rapport = largeurImage/hauteurImage;
if(screen.height < 800) {
hauteurImage = 340;
configurerAffichagePetiteTaille();
} else {
hauteurImage = 580;
$("#info-img-galerie").height('100%');
}
largeurImage = hauteurImage*rapport;
$('#illustration').attr("height", hauteurImage);
$('#illustration').attr("width", largeurImage);
}
 
var facteurResize = 90;
if($(window).height() < 800) {
facteurResize = 10;
}
hauteurSansMeta = hauteurImage+facteurResize;
window.resizeTo(largeurImage+260,hauteurImage+facteurResize+90);
}
 
function configurerAffichagePetiteTaille() {
$("#info-img-galerie").height('100%');
$('html').css('height', '100%');
$('body').css('height', '100%');
$("#zone-corps").height('100%');
$("#zone-conteneur").height('100%');
}
function imageSuivante() {
indexImage++;
if(indexImage >= urls.length) {
indexImage = 0;
}
cacherMetadonnees();
$('#illustration').attr('src', urls[indexImage]);
}
function imagePrecedente() {
indexImage--;
if(indexImage <= 0) {
indexImage = urls.length - 1;
}
cacherMetadonnees();
$('#illustration').attr('src', urls[indexImage]);
}
function ouvrirFenetreIllustrationResultat(url, titre) {
var fenetre = window.open('', titre+" - zoom ");
var tmp = fenetre.document;
tmp.write('<html><head><title>'+titre+" - zoom "+'</title>');
tmp.write('</head><body>');
tmp.write('<p style="height="100%";text-align:center;line-height="100%"><img id="image_agrandie" style="vertical-align:middle;" src="'+url+'" /></p>');
tmp.write('</body></html>');
tmp.clos();
}
function obtenirUrlContact(idImage, IdAuteur) {
return urlContact.replace('{id_auteur}',IdAuteur).replace('{id_img}',idImage);
}
function formaterDate(string) {
var date = new Date();
var parts = String(string).split(/[- :]/);
date.setFullYear(parts[0]);
date.setMonth(parts[1] - 1);
date.setDate(parts[2]);
date.setHours(parts[3]);
date.setMinutes(parts[4]);
date.setSeconds(parts[5]);
date.setMilliseconds(0);
return (("0" + date.getDate()).slice(-2))+"/"+(("0"+(date.getMonth()+1)).slice(-2))+"/"+date.getFullYear();
}
function formaterMetadonnees(data) {
data.contact_url = obtenirUrlContact(ids[indexImage], data['auteur.id']);
data.id = ids[indexImage];
data.date = formaterDate(data.date);
return data;
}
function chargerEtAfficherMetadonnees() {
$('#info-obs-meta').remove();
if(meta[ids[indexImage]] == null) {
var urlMetaImage = urlMeta.replace('{projet}','cel').replace('{id}',ids[indexImage]).replace('{referentiel}',referentiel);
$.get(urlMetaImage, function(data) {
data = formaterMetadonnees(data);
afficherMetadonnees(data);
meta[ids[indexImage]] = data;
});
} else {
afficherMetadonnees(meta[ids[indexImage]]);
}
}
function afficherMetadonnees(data) {
$("#tpl-obs-meta").tmpl(data).appendTo('.img-cadre');
//if($(window).height() > 800) {
window.resizeTo($(window).width(),hauteurSansMeta+300);
//}
$("#lien-voir-meta").html('Cacher les informations');
}
function cacherMetadonnees() {
//if($(window).height() > 800) {
window.resizeTo($(window).width(),hauteurSansMeta);
//}
$('#info-obs-meta').remove();
$("#lien-voir-meta").html('Informations sur cette image / Contacter l\'auteur');
metadonneesOuvertes = false;
}
$(document).ready(function() {
$('#precedent').click(function() {
imagePrecedente();
});
$('#suivant').click(function() {
imageSuivante();
});
 
if(!Array.indexOf){
Array.indexOf = function(array, search){
for(var i=0; i<array.length; i++){
if(array[i]==search){
return i;
}
}
return -1;
}
}
if(urlImage != "null" && urlImage != "") {
indexImage = Array.indexOf(urls, urlImage);
$('#illustration').attr('src', urls[indexImage]);
}
$('#illustration').load(function() {
redimensionnerImage($(this));
});
$('#illustration').click(function() {
ouvrirFenetreIllustrationResultat($(this).attr("src").replace("L","X3L"), titre);
});
$("#lien-voir-meta").click(function() {
metadonneesOuvertes = !metadonneesOuvertes;
if(metadonneesOuvertes) {
chargerEtAfficherMetadonnees();
} else {
cacherMetadonnees();
}
});
$("body").keydown(function(e) {
if(e.keyCode == 37) { // gauche
imagePrecedente();
}
else if(e.keyCode == 39) { // droite
imageSuivante();
}
});
$('#zone-pied').hide();
});
// -->
</script>
 
<!-- Squelette du contenu du tableau des observation -->
<script id="tpl-obs-meta" type="text/x-jquery-tmpl">
<div id="info-obs-meta" class="importance1">
<dl>
<dt>Photo n°</dt><dd>${id}</dd>
<dt>Titre</dt><dd>${$data["determination.nom_sci"]}</dd>
<dt>Description</dt><dd>${$data['determination.libelle']}</dd>
<dt>Localisation</dt><dd>${$data['station.commune']}</dd>
<dt>Auteur</dt>
<dd>
${$data['auteur.libelle']}
<a class="mailto" href="${contact_url}">(Contacter ...)</a>
</dd>
<dt>Date d'observation</dt><dd>${date}</dd>
<dt>Licence</dt><dd><a class="lien-externe" href="http://www.tela-botanica.org/page:licence">CC-BY-SA</a></dd>
</dl>
</div>
</script>
 
<div id="info-img-galerie">
<div class="conteneur-precedent">
<a id="precedent" href="#" title="cliquez ici ou utilisez la flèche gauche pour afficher l'image précédente">
<img style="border:none" src="http://www.tela-botanica.org/sites/commun/generique/images/flecheGauche.jpg" alt="&lt;" />
</a>
</div>
<div class="img-cadre">
<img id="illustration" src="<?=$urls[0]?>" alt="" title="cliquez pour voir cette image dans son format original" /><br />
<a id="lien-voir-meta" href="#" title="cliquez ici pour voir les métadonnées de l'image et contacter l'auteur">Informations sur cette image / Contacter l'auteur</a>
</div>
<div class="conteneur-suivant">
<a id="suivant" href="#" title="cliquez ici ou utilisez la flèche droite pour afficher l'image suivante">
<img style="border:none" src="http://www.tela-botanica.org/sites/commun/generique/images/flecheDroite.jpg" alt="&gt;" />
</a>
</div>
<hr class="nettoyage" />
</div>
/tags/v5.10-vilmorin/modules/popup_galerie/PopupGalerie.php
New file
0,0 → 1,92
<?php
// declare(encoding='UTF-8');
/**
* Affiche un pop-up avec une galerie d'illustrations.
*
* @category php 5.2
* @package eFlore-consultation
* @author Aurélien PERONNET <aurelien@tela-botanica.org>
* @copyright Copyright (c) 2012, Tela Botanica (accueil@tela-botanica.org)
* @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 $Id$
*/
 
class PopupGalerie extends aControleur {
private $conteneur = null;
private $urlImage = null;
private $images = null;
private $appUrls = null;
private $titre = '';
private $formats_possibles = array("O","CRX2S","CRS","CXS","CS","XS","S","M","L","XL","X2L","X3L");
private $format_agrandi = 'L';
 
public function initialiser() {
$this->capturerParametres();
$this->conteneur = new Conteneur();
$this->images = $this->conteneur->getApiImages();
$this->appUrls = $this->conteneur->getAppUrls();
}
 
private function capturerParametres() {
if (isset($_GET['num_nom'])) {
$this->num_nom = $_GET['num_nom'];
}
if (isset($_GET['url_image'])) {
$this->urlImage = urldecode($_GET['url_image']);
}
if (isset($_GET['format'])) {
$this->format = $_GET['format'];
}
if (isset($_GET['titre'])) {
$this->titre = $_GET['titre'];
}
}
 
public function executerActionParDefaut() {
$this->executerFiche();
}
 
public function executerFiche(){
$infos = array();
$this->images->setProjet('cel');
$urls = $this->images->getUrlsImagesOrganesParIdsNom($this->num_nom);
$urls = $urls[Registre::get('parametres.referentiel').'.'.$this->num_nom];
$ids = array();
foreach($urls as $index => $url) {
$urls[$index] = str_replace($this->formats_possibles, $this->format_agrandi, $url);
$ids[$index] = $this->extraireIdDeUrl($url);
}
$infos['urls'] = $urls;
$infos['ids'] = $ids;
$infos['num_nom'] = $this->num_nom;
$infos['referentiel'] = Registre::get('parametres.referentiel');
$infos['url_image'] = str_replace($this->formats_possibles, $this->format_agrandi, $this->urlImage);
$infos['titre'] = $this->titre;
$infos['url_meta'] = Config::get('imagesPopupTpl');
$infos['url_contact'] = $this->appUrls->obtenirUrlPopUpContact("{id_auteur}", "{id_img}");
$this->setSortie(self::META_TITRE,$this->titre, true);
$this->setSortie(self::RENDU_CORPS, $this->getVue('popup_galerie_illustrations', $infos));
}
private function extraireIdDeUrl($url) {
$matches = array();
$formats = implode("|", $this->formats_possibles);
//preg_match('#cel-img:([0-9]*)('.$formats.')#', $url, $matches);
preg_match('#img:([0-9]*)('.$formats.')#', $url, $matches); // expèrons que ça va marcher
return ltrim($matches[1],'0');
}
private function formaterDateImg($date) {
$dateFmt = $date;
if ($date == '0000-00-00' || $date == '1970-01-01 01:01:01') {
$dateFmt = 'inconnue';
} else {
$dateFmt = strftime('%e %B %Y', strtotime($date));
}
return $dateFmt;
}
 
}
?>
/tags/v5.10-vilmorin/modules/fiche/Fiche.php
New file
0,0 → 1,278
<?php
// declare(encoding='UTF-8');
/**
* Classe mère du module Liste.
*
* @category PHP 5.2
* @package eflore-consultation
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
* @copyright 2011 Tela-Botanica
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
class Fiche extends aControleur {
 
private $onglet = 'synthese';
private $parametres = array();
private $conteneur = null;
private $num_nom = 0;
private $nom_retenu = '';
private $nom_selectionne = null;
private $nom_appele_html = null; // le nom et l'auteur par lesquels on est arrivés sur la fiche, en cas de synonymie
private $url;
 
 
public function initialiser() {
$this->capturerParametres();
$this->conteneur = new Conteneur($this->parametres);
$nom_courant = $this->conteneur->getNomCourant();
$this->nom_selectionne = $nom_courant->getNomSelectionne();
$this->url = $this->conteneur->getAppUrls();
$this->nom_retenu = $nom_courant->getNomRetenu();
if ($this->nom_retenu->get('id') != $this->nom_selectionne->get('id')) {
$this->nom_appele_html = $this->nom_selectionne->get('nom_sci_html').' '.$this->nom_selectionne->get('auteur');
}
spl_autoload_register(array($this, 'chargerClassesOnglets'));
}
 
private function capturerParametres() {
if (isset($_GET['num_nom'])) {
$this->parametres['num_nom'] = $_GET['num_nom'];
}
if (isset($_GET['nom'])) {
$this->parametres['nom'] = $_GET['nom'];
}
if (isset($_GET['type_nom'])) {
$this->parametres['type_nom'] = $_GET['type_nom'];
}
if (isset($_GET['referentiel'])) {
$this->parametres['referentiel'] = $_GET['referentiel'];
Registre::set('parametres.referentiel', $_GET['referentiel']);
}
if (isset($_GET['niveau'])) {
Registre::set('parametres.niveau', $_GET['niveau']);
}
if (isset($_GET['onglet'])) {
$this->onglet = $_GET['onglet'];
}
}
 
private function chargerClassesOnglets($classe) {
$base = dirname(__FILE__).DS;
$cheminFormateurs = $base.'formateurs'.DS;
$dossiers = array($base, $cheminFormateurs);
foreach ($dossiers as $chemin) {
$fichierATester = $chemin.$classe.'.php';
if (file_exists($fichierATester)) {
include_once $fichierATester;
return null;
}
}
}
 
public function executerActionParDefaut() {
$this->executerFiche();
}
 
public function executerFiche(){
 
$squelette = 'fiche_'.$this->onglet;
 
//Gestion du niveau
$niveau = isset($_GET['niveau']) ? $_GET['niveau'] : 2;
if ($this->onglet == 'synthese' && $niveau != null) {
$squelette .= '_niveau'.$niveau;
}
 
// Récupération parametres et données
$donnees = array_merge($this->obtenirDonnees(), $this->parametres);
$donnees['i18n'] = I18n::get('Fiche');
$verna = isset($donnees['ethnobotanique']['nomsVerna']) && count($donnees['ethnobotanique']['nomsVerna']) ? $donnees['ethnobotanique']['nomsVerna'][0]['nom_vernaculaire'] : "";
 
// titre, description et tag de la page
$this->setSortie('titre', $this->nom_retenu->get('nom_sci'));
// ( <meta name="description" ...> )
$this->setSortie('description', sprintf("Fiche descriptive de %s %s (%s)", $this->nom_retenu->get('nom_sci'), $verna ? ('/ ' . $verna) : '', $donnees['description']['titre']));
 
$this->setSortie('tags', $this->nom_retenu->get('nom_sci').",".$verna.
",botanique,plante,description,ecologie,reconnaitre,fiche espece");
 
$nom_sci_html = $this->nom_retenu->get('nom_sci_html');
// la recherche avancée à partir du clic sur le nom ne fonctionne pas sur les hybrides
$nom_sci_html = strpos($nom_sci_html, 'class="hyb"') === false ?
$this->formaterLiensNomsHtml($nom_sci_html) : $nom_sci_html;
// titre de la fiche
$donnees['nom_retenu_html'] = $nom_sci_html.' '.$this->nom_retenu->get('auteur');
$donnees['nom_retenu'] = $this->nom_retenu->get('nom_sci');
$donnees['num_tax'] = $this->nom_selectionne->get('num_taxonomique');
$donnees['nom_appele_html'] = $this->nom_appele_html;
$famille = $this->nom_retenu->getTaxonSupRang('180');
$donnees['lien_recherche_famille'] = html_entity_decode($this->url->obtenirUrlRechercheAvancee(array("fam" => $famille)));
$donnees['famille'] = $famille;
$donnees['nom_vernaculaire'] = $verna;
 
// moteur de recherche
$this->executerAction('Recherche', 'executerAccueil', $this->parametres);
 
// page synthese
$blocs_niveaux = $this->conteneur->getParametreTableau('blocs_fiche_defaut');
$donnees['blocs'] = '"'.str_replace('|', '","', $blocs_niveaux[Registre::get('parametres.niveau')]).'"';
 
// onglet
$donnees['onglet'] = $this->onglet;
$donnees['niveau'] = $niveau;
$donnees['base_url_onglets'] = Config::get('base_url_application_onglets');
$taxons = new Taxons();
$referentiel = $this->conteneur->getParametre('referentiel');
$donnees['permalien_num_nom'] = $taxons->getUrlPermalienNumNom($referentiel, 1, $this->conteneur->getNomCourant()->getNns());
$donnees['entete'] = $this->getVue('fiche_entete', $donnees);
$donnees['contenu_onglet'] = $this->getVue($squelette, $donnees);
$this->setSortie(self::RENDU_CORPS, $this->getVue('fiche_accueil_niveau'.$niveau, $donnees), true);
$this->ajouterPiedDePage();
}
public function executerTemplateAjax() {
$classe = ucfirst($this->onglet);
$onglet = new $classe($this->conteneur);
$action = 'obtenir'.ucfirst($_GET['sous_action']);
$html_ajax = $onglet->$action();
header('Content-type : text/html');
echo $html_ajax;
exit;
}
private function formaterLiensNomsHtml($nom_sci_html) {
$app_urls = new AppUrls();
$params = array();
$classes_recherche = array("fam" => "fam", "gen" => "gen", "sp" => "sp", "infra-sp" => "ssp");
$doc = new DOMDocument();
$doc->loadHTML($nom_sci_html);
$spans = $doc->getElementsByTagName('span');
$abbrs = $doc->getElementsByTagName('abbr');
$params_subsp = array();
$i18n = I18n::get('Fiche');
//TODO: c'est un peu moche, la fonction est surement factorisable
if ($spans->length > 0) {
foreach($spans as $span) {
$classe = $span->getAttribute('class');
if(in_array($classe, array_keys($classes_recherche))) {
$params[$classes_recherche[$classe]] = $span->nodeValue;
if($classe == "sp") {
$params_subsp = $params;
}
$lien_tpl = html_entity_decode($this->url->obtenirUrlRechercheAvancee($params));
$texte_lien = $span->nodeValue;
$span->nodeValue = "";
$text = $doc->createElement('a', $texte_lien);
$text->setAttribute('href', $lien_tpl);
$text->setAttribute('title', $i18n["lien-recherche-hier-".$classe]);
$text->setAttribute('class', 'lien_recherche_hier');
$span->appendChild($text);
}
}
}
if ($abbrs->length > 0) {
foreach($abbrs as $abbr) {
$classe = $abbr->getAttribute('class');
$params_subsp["type"] = $abbr->nodeValue;
$lien_tpl = html_entity_decode($this->url->obtenirUrlRechercheAvancee($params_subsp));
$texte_lien = $abbr->nodeValue;
$abbr->nodeValue = "";
$text = $doc->createElement('a', $texte_lien);
$text->setAttribute('href', $lien_tpl);
$text->setAttribute('title', $i18n["lien-recherche-hier-ssp"]);
$text->setAttribute('class', 'lien_recherche_hier');
$abbr->appendChild($text);
}
}
return $doc->SaveXml();
}
private function formaterLienRechercheSurPartieNomSci(&$noeud, &$params) {
}
 
public function ajouterLienModuleExport() {
$donnees['lien'] = $this->url->obtenirUrlPdfExport($this->parametres['num_nom']);
$export = $this->getVue('fiche_pdf_lien', $donnees);
return $export;
}
 
public function ajouterPiedDePage() {
$description = new Description($this->conteneur);
$taxons = new Taxons();
$referentiel = $this->conteneur->getParametre('referentiel');
$urlMobile = $this->url->obtenirUrlMobile($this->parametres['num_nom']);
$donnees = array('wikipedia' => $description->getUrlWikipedia(),
'export_pdf' => $this->ajouterLienModuleExport(),
'permalien_num_nom' => $taxons->getUrlPermalienNumNom($referentiel, 1, $this->conteneur->getNomCourant()->getNns()),
'permalien_taxon' => $taxons->getUrlPermalienTaxon($referentiel, 1, $this->conteneur->getNomCourant()->getNt()),
'nn' => $this->conteneur->getNomCourant()->getNns(),
'nt' => $this->conteneur->getNomCourant()->getNt(),
'nnr' => $this->conteneur->getNomCourant()->getNnr(),
'inpn' => $this->conteneur->getNomCourant()->getInpn(),
'wiki' => $description->getLienWikini(),
'nom_retenu' => $this->nom_retenu->get('nom_sci'),
'mobile' => $urlMobile,
'qr_code_png' => $this->obtenirUrlQrCode($urlMobile)
);
$this->setSortie(self::RENDU_CORPS, $this->getVue('fiche_pied_page', $donnees), true);
}
 
private function obtenirUrlQrCode($urlMobile) {
$qr = $this->conteneur->getQrCode();
$qr->setUrl(htmlspecialchars_decode($urlMobile));
$idQrCode = $this->conteneur->getParametre('referentiel') . '-' .$this->conteneur->getNomCourant()->getNns();
$urlQrCode = $qr->dessiner($idQrCode);
return $urlQrCode;
}
 
public function executerOnglet(){
$this->viderSorties();
$donnees = $this->obtenirDonnees();
$squelette_onglet = $this->onglet;
// onglet
$donnees['i18n'] = I18n::get('Fiche');
$donnees['onglet'] = $this->onglet;
$taxons = new Taxons();
$referentiel = $this->conteneur->getParametre('referentiel');
$donnees['permalien_num_nom'] = $taxons->getUrlPermalienNumNom($referentiel, 1, $this->conteneur->getNomCourant()->getNns());
// cas particulier de l'onglet synthese qui possède 3 niveaux
// et dont le nom n'est donc pas directement celui de son squelette
if($this->onglet == "synthese") {
$niveau = isset($_GET['niveau']) ? $_GET['niveau'] : 2;
$squelette_onglet .= '_niveau'.$niveau;
$entete = $this->getVue('fiche_entete', $donnees);
$vue = $entete.$this->getVue('fiche_'.$squelette_onglet, $donnees);
} else {
$vue = $this->getVue('fiche_'.$squelette_onglet, $donnees);
}
header('Content-type: text/html');
$this->setSortie(self::RENDU_CORPS, $vue);
}
 
private function obtenirDonnees() {
$classe = ucfirst($this->onglet);
$onglet = new $classe($this->conteneur); // grep-friendly: new Synthese()
return $onglet->obtenirDonnees();
}
}
?>
/tags/v5.10-vilmorin/modules/fiche/formateurs/Illustrations.php
New file
0,0 → 1,369
<?php
// declare(encoding='UTF-8');
/**
* Classe mère du module Liste.
*
* @category PHP 5.2
* @package eflore-consultation
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
* @copyright 2011 Tela-Botanica
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
class Illustrations extends aControleur {
 
private $conteneur = null;
private $nomCourant = null;
private $images = null;
private $appUrls = null;
private $meta = null;
private $referentiel = 'bdtfx';
private $donnees = array();
 
public function __construct(Conteneur $conteneur) {
$this->conteneur = $conteneur;
$this->nomCourant = $this->conteneur->getNomCourant();
$this->referentiel = $this->conteneur->getParametre('referentiel');
$this->images = $this->conteneur->getApiImages();
$this->appUrls = $this->conteneur->getAppUrls();
$this->meta = $this->conteneur->getApiMetaDonnees();
}
 
public function obtenirDonnees() {
$this->donnees['nt'] = $this->nomCourant->getNt();
$this->donnees['nnr'] = $this->nomCourant->getNnr();
$this->donnees['referentiel'] = $this->referentiel;
$this->donnees['nomSciRetenu'] = $this->nomCourant->getNomRetenu()->get('nom_sci_html');
$infosNomRetenu = $this->nomCourant->getNomRetenu()->getInfos();
$this->donnees['nomComplet'] = $infosNomRetenu['nom_complet'];
$this->getPhotos();
$this->getDessin();
$this->getPhotosCaracteresIdentification();
$pso = $this->getPhotosSixOrganes();
// Le framework n'avait pas prévu l'inclusion de sous squelettes dans les modules
// en attendant, on utilise un chemin complet vers le fichier de squelette
$chemin_sous_squelette = Config::get('chemin_modules').AppControleur::getNomDossierDepuisClasse('Fiche').DS.Config::get('dossier_squelettes').DS;
$params = array('organes' => $pso, 'referentiel' => $this->referentiel,
'nnr' => $this->donnees['nnr'],
'nomComplet' => $this->donnees['nomComplet']);
$this->donnees['illustrationsOrganes'] = $this->getVue($chemin_sous_squelette.'fiche_illustrations_organes.tpl.html',$params);
$this->donnees['organes'] = $pso;
// chemins
$this->donnees['base_url_widget_saisie'] = Config::get('base_url_widget_saisie');
$this->donnees['base_url_pictoflora'] = Config::get('base_url_pictoflora');
return $this->donnees;
}
public function obtenirDonneesExport() {
$this->donnees['nt'] = $this->nomCourant->getNt();
$this->donnees['nomSciRetenu'] = $this->nomCourant->getNomRetenu()->get('nom_sci_html');
$this->donnees['cel'] = $this->getCelExport();
if ($this->referentiel == 'bdtfx') {
$this->donnees['coste'] = $this->getCoste();
}
return $this->donnees;
}
 
public function getBloc() {
$this->donnees = $this->images->getInfosMeilleureImageParPrioriteTags($nnr = $this->nomCourant->getNnr(), array(
'fleur', 'feuille', 'fruit', 'ecorce', 'port', 'rameau'));
if (empty($this->donnees)) {
$this->donnees = $this->getPhoto('cel');
if (empty($this->donnees)) {
$infos_image = $this->getDessin();
if (empty($infos_image) == false ) {
$this->donnees['imageUrl'] = array_shift($infos_image['images']);
}
}
} else {
// extraction de l'url
$this->donnees = array('imageUrl' => $this->donnees['binaire.href']);
}
// Photoflora (alias Copyrightflora alias Egoflora) n'est dispo que pour BDTFX
if (empty($this->donnees) && $this->referentiel == "bdtfx") {
$this->donnees = $this->getPhoto('photoflora');
}
return $this->donnees;
}
public function obtenirPhotoCelTpl() {
$images = $this->initialiserPhotos('cel');
$this->formaterListePhotos('cel', $images);
$this->formaterMetaPhotos('cel');
$chemin_sous_squelette = Config::get('chemin_modules').AppControleur::getNomDossierDepuisClasse('Fiche').DS.Config::get('dossier_squelettes').DS;
$donnees = array('cel' => array('images' => $this->donnees['cel']['images'], 'meta' => $this->donnees['cel']['meta'] ));
$html_tpl = $this->getVue($chemin_sous_squelette.'fiche_illustrations_cel.tpl.html', $donnees);
return $html_tpl;
}
//TODO: factoriser les deux fonctions ci dessous et ci dessus
public function obtenirTranchesCelTpl($projet) {
// On ne prend que la tranche des images (12)
$images = $this->initialiserTranchePhotos($projet);
$this->formaterListePhotos($projet, $images);
$this->formaterMetaPhotos($projet);
$chemin_sous_squelette = Config::get('chemin_modules').AppControleur::getNomDossierDepuisClasse('Fiche').DS.Config::get('dossier_squelettes').DS;
$donnees = array('cel' => array('images' => $this->donnees['cel']['images'], 'meta' => $this->donnees[$projet]['meta'] ));
$html_tpl = $this->getVue($chemin_sous_squelette.'fiche_illustrations_cel.tpl.html', $donnees);
$this->donnees[$projet]['illustrationsCel'] = $html_tpl;
$this->donnees[$projet]['cel_present'] = count($images) > 0;
// Ensuite on fait juste un lien qui permettra de les charger
$this->donnees[$projet]['ajax_url'] = $this->formaterUrlAjaxPhotoCel();
}
public function getPhoto($source) {
$donnees = array();
$this->images->setProjet($source);
$nnr = $this->nomCourant->getNnr();
$infos_image = $this->images->setApi(Eflore::API_EFLORE)->getInfosPremiereImageParIdsNoms(array($nnr));
if ($infos_image != array()) {
$image = array_shift($infos_image);
$donnees['imageUrl'] = $image['binaire.href'];
}
return $donnees;
}
 
public function getCoste() {
$coste = array();
$tax = $this->nomCourant->getNomRetenu()->get('num_taxonomique');
$this->images->setProjet('coste');
$this->images->setNnTaxon($tax);
$costeImg = $this->images->setApi(Eflore::API_EFLORE)->getInfosImagesTaxons();
foreach ($costeImg as $infos) {
$coste['images'][] = $infos['binaire.href'];
}
$this->meta->setProjet('coste');
$meta = $this->meta->getMetaDonnees();
$coste['meta'] = $meta[0];
$coste['meta']['url'] = $this->appUrls->obtenirUrlMetaDonnees('coste');
return $coste;
}
 
public function getDessin() {
$projet = Config::get($this->referentiel.'.baseDessins');
if ($projet != "") {
$dessin = array();
$tax = $this->nomCourant->getNomRetenu()->get('num_taxonomique');
$this->images->setProjet($projet);
$this->images->setNnTaxon($tax);
$costeImg = $this->images->setApi(Eflore::API_EFLORE)->getInfosImagesTaxons();
foreach ($costeImg as $infos) {
$dessin['images'][] = $infos['binaire.href'];
}
$this->meta->setProjet($projet);
$meta = $this->meta->getMetaDonnees();
$dessin['meta'] = $meta[0];
$dessin['meta']['url'] = $this->appUrls->obtenirUrlMetaDonnees($projet);
$this->donnees[$projet] = $dessin;
}
}
public function getPhotos() {
$projets[] = Config::get($this->referentiel.'.baseImages');
$projets[] = Config::get($this->referentiel.'.baseImagesSupp');
foreach ($projets as $projet) {
if ($projet != "") {
if ($projet == "cel") {
// Chargement des 10 premieres images + un lien pour en afficher plus
$this->obtenirTranchesCelTpl($projet);
} else {
$this->images->setApi(Eflore::API_EFLORE);
$images = $this->initialiserPhotos($projet);
$this->formaterListePhotos($projet, $images);
$this->formaterMetaPhotos($projet);
}
}
}
}
private function formaterUrlAjaxPhotoCel() {
$infos = array('referentiel' => $this->referentiel,
'module' => 'fiche',
'action' => 'templateAjax',
'sous_action' => 'photoCelTpl',
'num_nom' => $this->nomCourant->getNnr(),
'onglet' => 'illustrations');
return Config::get('base_url_application_onglets').'?'.http_build_query($infos);
}
public function getPhotosSixOrganes() {
$organes = $this->getOrganes();
$nnr = $this->nomCourant->getNnr();
$infosOrganes = $this->images->getInfosMeilleuresImagesParTag($nnr, array_keys($organes), Eflore::PROTOCOLE_CAPITALISATION, 6, 'CRX2S');
$vide = true;
foreach ($infosOrganes as $tag => $organe) {
foreach ($organe as $id_image => &$image) {
$image['urlMauvaiseIdentification'] = $this->appUrls->obtenirUrlMauvaiseIdentification($image['observation']['id_observation']);
}
$organes[$tag] = $organe;
$nbImages = count($organe);
if ($nbImages != 0) {
$vide = false;
for ($i = 6; $i > $nbImages; $i--) {
$organes[$tag][] = null;
}
}
}
if ($vide) {
$organes = array();
}
return $organes;
}
public function getPhotosOrganes() {
$organes = $this->getOrganes();
$nnr = $this->nomCourant->getNnr();
$infosOrganes = $this->images->getInfosMeilleuresImagesParTag($nnr, array_keys($organes), Eflore::PROTOCOLE_CAPITALISATION, 1);
$vide = true;
foreach ($infosOrganes as $tag => $organe) {
$nbImages = count($organe);
// une image par organe seulement
$organes[$tag] = array_pop($organe);
if ($nbImages != 0) {
$vide = false;
}
}
if ($vide) {
$organes = array();
}
$this->donnees['organes'] = $organes;
}
public function getPhotosCaracteresIdentification() {
$caracteres = array();
$nnr = $this->nomCourant->getNnr();
// pas de tag: on cherche les mieux votées pour ce protocole sans tenir compte des tags
$infosCaracteres = $this->images->getInfosMeilleuresImagesParTag($nnr, '', Eflore::PROTOCOLE_CARACTERES, 3);
if (! empty($infosCaracteres) && ! empty($infosCaracteres[''])) { // le tag est vide, ici
$caracteres = $infosCaracteres[''];
}
foreach($caracteres as $id_image => &$caractere) {
$caractere['urlDetailImg'] = $this->appUrls->obtenirUrlPopUpIllustrations($id_image);
$caractere['urlImgGrandFormat'] = $this->obtenirUrlImageGrandFormatCel($id_image);
$caractere['urlContact'] = $this->appUrls->obtenirUrlPopUpContact($caractere['auteur.id'], $id_image);
$caractere['urlProfil'] = $this->appUrls->obtenirUrlProfilAnnuaire($caractere['auteur.id']);
$caractere['urlMauvaiseIdentification'] = $this->appUrls->obtenirUrlMauvaiseIdentification($caractere['observation']['id_observation']);
}
$this->donnees['caracteres'] = $caracteres;
}
private function getOrganes() {
return array(
'fleur' => array(),
'feuille' => array(),
'fruit' => array(),
'ecorce' => array(),
'port' => array(),
'rameau' => array());
}
 
// XXX: webservice:
// /service:eflore:0.1/cel/images?masque.nn=XXX&referentiel=bdtfx&retour.format=CS&navigation.limite=801
private function initialiserPhotos($projet) {
$this->images->setProjet($projet);
$nnr = $this->nomCourant->getNnr();
$ret = $this->images->getInfosImagesParIdsNoms(array($nnr));
return $ret;
}
private function initialiserTranchePhotos($projet) {
$this->images->setProjet($projet);
$nnr = $this->nomCourant->getNnr();
$ret = $this->images->getInfosTrancheImagesParIdsNoms(array($nnr), Config::get('nbTrancheImagesResultatsDeterminationAffichees'));
return $ret;
}
private function formaterListePhotos($projet, $images) {
foreach ($images as $idImg => $img) {
$infosImg = array();
$infosImg['src'] = $img['binaire.href'];
$infosImg['nomSci'] = $img['determination.nom_sci'];
$infosImg['station'] = $img['station.libelle'];
$infosImg['date'] = $this->formaterDateImg($img['date']);
$infosImg['auteur'] = $img['auteur.libelle'];
$infosImg['auteur.id'] = $img['auteur.id'];
if ($projet == "cel") {
$infosImg['urlDetailImg'] = $this->appUrls->obtenirUrlPopUpIllustrations($idImg);
$infosImg['urlImgGrandFormat'] = $this->obtenirUrlImageGrandFormatCel($idImg);
$infosImg['urlContact'] = $this->appUrls->obtenirUrlPopUpContact($img['auteur.id'], $idImg);
$infosImg['urlProfil'] = $this->appUrls->obtenirUrlProfilAnnuaire($img['auteur.id']);
$infosImg['urlMauvaiseIdentification'] = $this->appUrls->obtenirUrlMauvaiseIdentification($img['observation.id']);
}
$this->donnees[$projet]['images'][$idImg] = $infosImg;
}
}
public static function obtenirUrlImageGrandFormatCel($id, $format = "O") {
$tpl = Config::get('baseUrlImageCelTpl');
return sprintf($tpl, str_pad($id, 9, '0', STR_PAD_LEFT).$format.'.jpg');
}
// XXX: public static pour être injecté dans le squelette d'entete
public static function obtenirTemplateUrlImageGrandFormatOrganes($format = "O") {
return $tpl = sprintf(Config::get('baseUrlImageCelTpl').$format.'.jpg', '{id_image}');
}
private function formaterMetaPhotos($projet) {
$this->meta->setProjet($projet);
$meta = $this->meta->getMetaDonnees();
$titreMeta = $meta[0];
$this->donnees[$projet]['meta'] = $titreMeta;
$this->donnees[$projet]['meta']['url'] = $this->appUrls->obtenirUrlMetaDonnees($projet);
}
public function getCelExport() {
$cel = array();
$this->images->setProjet('cel');
$nnr = $this->nomCourant->getNnr();
$img = $this->images->getUrlPremiereImageParIdsNoms(array($nnr));
if($img) {
$img = array_values($img);
$cel['images']['src'] = $img[0]['binaire.href'];
$cel['images']['nomSci'] = $img[0]['determination.nom_sci'];
$cel['images']['station'] = $img[0]['station.libelle'];
$cel['images']['date'] = $this->formaterDateImg($img[0]['date']);
$cel['images']['auteur'] = $img[0]['auteur.libelle'];
$this->meta->setProjet('cel');
$meta = $this->meta->getMetaDonnees();
$cel['meta'] = $meta[0];
$cel['meta']['url'] = $this->appUrls->obtenirUrlMetaDonnees('cel');
}
return $cel;
}
 
private function formaterDateImg($date) {
$dateFmt = $date;
if ($date == '' || $date == null || strpos($date, '0000-00-00') !== false || $date == '1970-01-01 01:01:01') {
return 'inconnue';
}
$time = strtotime($date);
if(!$time) {
/* TODO: php -r "echo strtotime('1891-00-00 00:00:00');"
TODO: fixer le template pour affiche "en l'année X", plutôt que "le X"
si FALSE pour avant 1901: problème php
On retourne alors simplement l'année.
si correction, ne pas oublier modules/popup_illustrations/PopupIllustrations.php */
$dateFmt = explode('-', $date);
return $dateFmt[0];
}
return strftime('%e %B %Y', strtotime($date));
}
 
private function formaterNomSci($nom) {
$nomFmt = $nom;
if (is_null($nom) || $nom == '') {
$nomFmt = 'inconnu';
}
return $nomFmt;
}
}
?>
/tags/v5.10-vilmorin/modules/fiche/formateurs/Nomenclature.php
New file
0,0 → 1,170
<?php
// declare(encoding='UTF-8');
/**
* Classe mère du module Liste.
*
* @category PHP 5.2
* @package eflore-consultation
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
* @copyright 2011 Tela-Botanica
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
class Nomenclature extends aControleur {
 
private $conteneur = null;
private $nomCourant = null;
private $noms = null;
private $meta = null;
private $referentiel = 'bdtfx';
private $donnees = array();
 
public function __construct(Conteneur $conteneur) {
$this->conteneur = $conteneur;
$this->nomCourant = $this->conteneur->getNomCourant();
$this->referentiel = $this->conteneur->getParametre('referentiel');
$this->taxons = $this->conteneur->getApiTaxons();
$this->noms = $this->conteneur->getApiNoms();
$this->meta = $this->conteneur->getApiMetaDonnees();
$this->appUrls = $this->conteneur->getAppUrls();
$this->wikini = $this->conteneur->getApiWikini();
//print_r($_GET['niveau']);
//Registre::set('parametres.niveau', 2);
}
 
public function obtenirDonnees() {
$this->donnees['baseUrlIco'] = $this->appUrls->obtenirUrlBaseDossier();
$this->donnees['referentiel'] = $this->referentiel;
$this->getFlores();
$this->donnees['synonymes']['noms'] = $this->trierSynonymesParBasionyme($this->getSynonymes());
$this->donnees['date_maj'] = $this->nomCourant->getNomRetenu()->get('maj_modif');
$meta = $this->meta->getMetaDonnees();
$this->donnees['synonymes']['meta'] = $meta[0];
$this->donnees['synonymes']['meta']['url'] = $this->appUrls->obtenirUrlMetaDonnees($this->referentiel);
$this->donnees['num_type'] = $this->nomCourant->getNomSelectionne()->get('num_type');
$this->donnees['urls'] = $this->appUrls;
$this->donnees['nom_retenu_formate'] = $this->nomCourant->getNomRetenu()->get('nom_sci_html_complet');
$this->donnees['nom_retenu_nn'] = $this->nomCourant->getNomRetenu()->get('nom_retenu.id');
$this->donnees['nom_retenu_source'] = $this->nomCourant->getNomRetenu()->get('source_biblio');
$this->donnees['basionyme_nom_retenu'] = $this->nomCourant->getNomRetenu()->get('basionyme_html_complet');
$this->donnees['basionyme_nom_retenu_nn'] = $this->nomCourant->getNomRetenu()->get('basionyme.id');
$this->donnees['nom_selectionne'] = $this->nomCourant->getNomSelectionne()->get('nom_sci_html_complet');
$this->donnees['nom_retenu'] = $this->nomCourant->getNomRetenu()->get('nom_sci');
$this->donnees['wikini'] = $this->getWikini();
$this->donnees['hybride_parent_01'] = $this->nomCourant->getNomRetenu()->get('hybride.parent_01_html_complet');
$this->donnees['hybride_parent_02'] = $this->nomCourant->getNomRetenu()->get('hybride.parent_02_html_complet');
$this->donnees['hybride_parent_01_nn'] = $this->nomCourant->getNomRetenu()->get('hybride.parent_01.id');
$this->donnees['hybride_parent_02_nn'] = $this->nomCourant->getNomRetenu()->get('hybride.parent_02.id');
$this->donnees['taxons_sup'] = $this->nomCourant->taxons_sup;
$this->donnees['taxon_courant']['rang.libelle'] = $this->nomCourant->getNomRetenu()->get('rang.libelle');
$this->donnees['taxon_courant']['nom_sci'] = $this->nomCourant->getNomRetenu()->get('nom_sci');
$this->donnees['taxon_courant']['num_nom'] = $this->nomCourant->getNomRetenu()->get('id');
$this->donnees['taxons_inf'] = $this->getTaxonsInferieurs();
return $this->donnees;
}
private function trierSynonymesParBasionyme($synonymes) {
$synonymes_t = array();
$basionyme_inconnu = array();
foreach($synonymes as $num_nom => $syn) {
if($syn['num_type'] != "") {
$index = $syn['num_type'];
// regroupement sous le 1er basionyme (num_type == num_nom)
if(!isset($synonymes_t[$index]['infos_basionyme'])) {
$synonymes_t[$index]['infos_basionyme'] = $this->extraireInfosBasionymeDuSynonyme($syn);
}
$synonymes_t[$index]['synonymes'][$num_nom] = $syn;
} else {
$basionyme_inconnu['synonymes'][$num_nom] = $syn;
}
}
// mise à la fin du tableau des noms sans basionymes
if(!empty($basionyme_inconnu)) {
$synonymes_t['basionyme_inconnu'] = $basionyme_inconnu;
}
 
return $synonymes_t;
}
private function extraireInfosBasionymeDuSynonyme($synonyme) {
return array(
'basionyme.id' => $synonyme['basionyme.id'],
'basionyme.libelle' => $synonyme['basionyme.libelle'],
'basionyme_html' => $synonyme['basionyme_html'],
'basionyme_complet' => $synonyme['basionyme_complet'],
'basionyme_html_complet' => $synonyme['basionyme_html_complet'],
'basionyme.href' => $synonyme['basionyme.href']
);
}
private function getTaxonsInferieurs() {
$num_nom = $this->nomCourant->getNomRetenu()->get('id');
$resultat = $this->taxons->getTaxonsInf($num_nom);
// TODO: le webservice retourne le taxon demandé comme l'un des taxon inférieurs
// workaround: on le supprime ici car l'on ignore si d'autre app' dépendent de ce comportement
unset($resultat[$num_nom][$num_nom]);
return $resultat[$num_nom];
}
public function obtenirVersionDonnees() {
$meta = $this->meta->getMetaDonnees();
$this->donnees['version'] = $meta[0]['code'].' v.'.$meta[0]['version'];
return $this->donnees;
}
 
public function getBloc() {
$this->donnees['urls'] = $this->appUrls;
$this->donnees['nom_selectionne'] = $this->nomCourant->getNomSelectionne()->get('nom_sci_html_complet');
$this->donnees['nom_retenu_formate'] = $this->nomCourant->getNomRetenu()->get('nom_sci_html_complet');
$this->donnees['basionyme_nom_retenu'] = $this->nomCourant->getNomRetenu()->get('basionyme_html_complet');
$synonymes = $this->getSynonymes();
$this->donnees['synonymes'] = array_slice($synonymes, 0, 3);
$this->donnees['autresSynonymesNbre'] = count($synonymes) - 3;
$this->donnees['taxons_sup'] = $this->nomCourant->taxons_sup;
$this->donnees['taxons_inf'] = $this->getTaxonsInferieurs();
$this->donnees['taxons_sup'] = is_array($this->donnees['taxons_sup']) ? array_slice($this->donnees['taxons_sup'], -3 , 3) : array();
$this->donnees['taxons_inf'] = is_array($this->donnees['taxons_inf']) ? array_slice($this->donnees['taxons_inf'], 0 , 3) : array();
return $this->donnees;
}
 
private function getFlores() {
if (Config::get($this->referentiel.'.baseFloresRef') != "") {
$nnr = $this->nomCourant->getNnr();
$flores = $this->noms->getFlores($nnr);
$this->donnees['flores_synonymes'] = (isset($flores['resultat']) && is_array($flores['resultat'])) ? $flores['resultat'] : array();
}
}
 
private function getSynonymes() {
$nns = $this->nomCourant->getNns();
$synonymesReponse = $this->noms->getSynonymes($nns);
 
$synonymes = array();
if (isset($synonymesReponse['resultat']) && is_array($synonymesReponse['resultat'])) {
$synonymes = $synonymesReponse['resultat'];
if (array_key_exists($this->nomCourant->getNnr(), $synonymes)) {
unset($synonymes[$this->nomCourant->getNnr()]);
}
}
return $synonymes;
}
 
private function getWikini() {
$wikini = array();
$wikini['titre'] = 'Wikini';
$num_tax = $this->nomCourant->getNomSelectionne()->get('num_taxonomique');
$page_wiki = $this->wikini->getPageWikiPourRefEtNumTax($this->referentiel, $num_tax);
$wikini['nomenclature'] = $this->wikini->getTexteFormate($page_wiki, 'nomenclature');
return $wikini;
}
}
?>
/tags/v5.10-vilmorin/modules/fiche/formateurs/Bibliographie.php
New file
0,0 → 1,83
<?php
// declare(encoding='UTF-8');
/**
* Classe mère du module Liste.
*
* @category PHP 5.2
* @package eflore-consultation
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
* @copyright 2011 Tela-Botanica
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
class Bibliographie extends aControleur {
private $apiBiblioBota;
private $conteneur;
private $nomCourant;
private $meta;
private $appUrls;
private $wikini;
private $referentiel = 'bdtfx';
private $donnees = array();
public function __construct(Conteneur $conteneur) {
$this->conteneur = $conteneur;
$this->nomCourant = $this->conteneur->getNomCourant();
$this->referentiel = $this->conteneur->getParametre('referentiel');
$this->wikini = $this->conteneur->getApiWikini();
$this->meta = $this->conteneur->getApiMetaDonnees();
$this->appUrls = $this->conteneur->getAppUrls();
}
public function obtenirDonnees() {
$this->donnees['bibliobota']['references'] = $this->getBiblioBota();
$this->meta->setProjet('bibliobota');
$meta = $this->meta->getMetaDonnees();
$this->donnees['bibliobota']['meta'] = $meta[0];
$this->donnees['bibliobota']['meta']['url'] = $this->appUrls->obtenirUrlMetaDonnees('bibliobota');
$this->donnees['wikini'] = $this->getWikini();
return $this->donnees;
}
public function getBloc() {
$references = $this->getBiblioBota();
$this->donnees['references'] = array_slice($references, 0, 3);
foreach ($this->donnees['references'] as $id=>$reference) {
preg_match('/.*<strong>(.*)<\/strong>.*/', $reference['reference_html'], $titre);
$this->donnees['references'][$id]['reference_html'] = $titre[1];
}
$this->donnees['autresReferences'] = count($references) - 3;
if ($this->donnees['references'] == array()) {
$this->donnees['wikini'] = $this->getWikini();
}
return $this->donnees;
}
//Obtention des données issues de biblio_bota
private function getBiblioBota() {
$this->apiBiblioBota = $this->conteneur->getApiBiblioBota();
$this->apiBiblioBota->setProjet('bibliobota');
$interrogation = $this->nomCourant->getNomSelectionne()->get('nom_sci');
$references = $this->apiBiblioBota->getReferences($interrogation);
return $references['resultats'];
}
private function getWikini() {
$wikini = array();
$wikini['titre'] = 'Wikini';
$referentiel = $this->conteneur->getParametre('referentiel');
$num_tax = $this->nomCourant->getNomSelectionne()->get('num_taxonomique');
$page_wiki = $this->wikini->getPageWikiPourRefEtNumTax($referentiel, $num_tax);
$wikini['biblio'] = $this->wikini->getTexteFormate($page_wiki, 'biblio');
return $wikini;
}
 
 
}
?>
/tags/v5.10-vilmorin/modules/fiche/formateurs/Repartition.php
New file
0,0 → 1,162
<?php
// declare(encoding='UTF-8');
/**
* Classe mère du module Liste.
*
* @category PHP 5.2
* @package eflore-consultation
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
* @copyright 2011 Tela-Botanica
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
class Repartition extends aControleur {
 
private $conteneur = null;
private $nomCourant = null;
private $referentiel = 'bdtfx';
private $donnees = array();
private $cartes;
private $meta;
private $appUrls;
 
public function __construct(Conteneur $conteneur) {
$this->conteneur = $conteneur;
$this->nomCourant = $this->conteneur->getNomCourant();
$this->referentiel = $this->conteneur->getParametre('referentiel');
$this->cartes = $this->conteneur->getApiCartes();
$this->meta = $this->conteneur->getApiMetaDonnees();
$this->appUrls = $this->conteneur->getAppUrls();
}
 
public function obtenirDonnees() {
$this->getRepartition();
$this->getMoissonnage();
$this->getFloreProbable();
$this->donnees['widget']['nt'] = $this->nomCourant->getNt();
$this->donnees['widget']['nn'] = $this->nomCourant->getNnr();
$this->donnees['widget']['referentiel'] = $this->referentiel;
return $this->donnees;
}
 
public function obtenirDonneesExport() {
$this->getRepartition();
$donnees['chorodep'] = $this->donnees['repartition'];
$this->getMoissonnageExport();
// TODO: renommer l'index "eflore" en moissonnage
// et renommer dans pdf_export/squelettes/pdf_repartition.tpl.html
$donnees['eflore'] = $this->donnees['moissonnage'];
return $donnees;
}
 
private function getRepartition() {
$projetRepartition = Config::get("{$this->referentiel}.baseRepartition");
// eg: eflore ou chorodep
// cf: bdtfx.ini, bdtxa.ini
if ($projetRepartition != '') {
$this->cartes->setProjet($projetRepartition);
$this->cartes->setLargeur('630');
$nt = $this->nomCourant->getNt();
$this->cartes->setId("{$this->referentiel}.nt:$nt");
$repartition['svgUrl'] = $this->cartes->getUrlDataSvg();
$repartition['pngUrl'] = $this->cartes->getUrlPng();
$repartition['legende'] = $this->cartes->getLegendeId();
$this->meta->setProjet($projetRepartition);
$meta = $this->meta->getMetaDonnees();
$repartition['meta'] = $meta[0];
$repartition['meta']['url'] = $this->appUrls->obtenirUrlMetaDonnees($projetRepartition);
$this->donnees['repartition'] = $repartition;
}
}
 
private function getMoissonnage() {
$projetMoissonnage = Config::get($this->referentiel.'.baseMoissonnage');
if (! $projetMoissonnage) return;
$this->cartes->setProjet('moissonnage');
$this->cartes->setLargeur('600');
$this->cartes->setInfoNom($this->nomCourant->getNt());
$this->cartes->setInfoReferentiel($this->referentiel);
$eflore['mapUrl'] = $this->cartes->getUrlMapSvg();
$eflore['mapTelechargementUrls'] = array('png' => $this->cartes->getUrlTelechargementMapPng(),
'html' => $this->cartes->getUrlTelechargementMapHtml());
$eflore['legende'] = $this->cartes->getLegende();
$this->donnees['moissonnage'] = $eflore;
}
 
private function getMoissonnageExport() {
$projetMoissonnage = Config::get($this->referentiel.'.baseMoissonnage');
if (! $projetMoissonnage) return;
$this->cartes->setProjet($projetMoissonnage);
$this->cartes->setLargeur('min');
$this->cartes->setInfoNom($this->nomCourant->getNomRetenu());
$eflore['min'] = $this->cartes->getUrlEflorePng();
$eflore['legende'] = $this->cartes->getLegende();
$this->donnees['moissonnage'] = $eflore;
}
 
private function getFloreProbable() {
$projetFloreProbable = Config::get($this->referentiel.'.baseFloreProbable');
if (! $projetFloreProbable) return;
$this->cartes->setProjet($projetFloreProbable);
$this->meta->setProjet($projetFloreProbable);
$this->cartes->setId($this->referentiel.'.nt:'.$this->nomCourant->getNt());
// TODO: url téléchargement de la carte lorsqu'on sera sur que c'est possible
// dans ['carte']['telechargement'] par exemple
$this->donnees['flore_probable'] = array('carte' => array(), 'meta' => array());
$this->meta->setProjet($projetFloreProbable);
$meta = $this->meta->getMetaDonnees();
$this->donnees['flore_probable']['meta'] = $meta[0];
$this->donnees['flore_probable']['meta']['url'] = $this->appUrls->obtenirUrlMetaDonnees($projetFloreProbable);
$this->donnees['flore_probable']['carte']['url'] = $this->cartes->getUrlFloreProbablePng();
}
 
public function getBloc() {
$donnees['chorodep'] = $this->getChorodepMiniature();
$donnees['eflore'] = $this->getMoissonnageMiniature();
 
// TODO: moche, comment gérer le fait que l'onglet "synthèse", en "bdtxa", doive
// afficher la carte chorologie, et non la carte chorodep.
// workaround: écrasement de l'URL dans ['répartition']['chorodep']:
if ($this->referentiel == 'bdtxa') {
$nt = $this->nomCourant->getNt();
$idCarte = "{$this->referentiel}.nt:$nt";
$urlCarte = Config::get("{$this->referentiel}.baseRepartition");
 
$donnees['chorodep'] = Cartes::getCarteUrlPng($urlCarte, $idCarte, '190x178');
}
 
return $donnees;
}
 
private function getChorodepMiniature() {
$projetRepartition = Config::get("{$this->referentiel}.baseRepartition");
$url = null;
if ($projetRepartition != '') {
$this->cartes->setProjet($projetRepartition);
$this->cartes->setProjet('chorodep');
$this->cartes->setLargeur('190x178');
 
$nt = $this->nomCourant->getNt();
$this->cartes->setId("{$this->referentiel}.nt:$nt");
 
$url = $this->cartes->getUrlPng();
}
return $url;
}
 
private function getMoissonnageMiniature() {
$projetMoissonnage = Config::get($this->referentiel.'.baseMoissonnage');
$url = null;
if ($projetMoissonnage != '') {
$this->cartes->setProjet('moissonnage');
$this->cartes->setLargeur('190');
$this->cartes->setInfoReferentiel($this->referentiel);
$this->cartes->setInfoNom($this->nomCourant->getNt());
$url = $this->cartes->getUrlMapPng();
}
return $url;
}
}
?>
Property changes:
Added: svnkit:entry:sha1-checksum
+14e91034608691b894071e3f1724d66014a9373f
\ No newline at end of property
/tags/v5.10-vilmorin/modules/fiche/formateurs/Synthese.php
New file
0,0 → 1,66
<?php
// declare(encoding='UTF-8');
/**
* Classe Onglet Synthese.
*
* @category PHP 5.2
* @package eflore-consultation
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
* @author Grégoire DUCHÉ <gregoire@tela-botanica.org>
* @author Raphaël Droz <raphael@tela-botanica.org>
* @copyright 2011, 2013 Tela-Botanica
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @used by modules/fiche/Fiche.php::obtenirDonnees()
*/
class Synthese /* aControleur inutilisé à ce jour */ {
 
private $conteneur = null;
private $nomCourant = null;
 
public function __construct(Conteneur $conteneur) {
$this->conteneur = $conteneur;
$this->nomCourant = $this->conteneur->getNomCourant();
}
 
public function obtenirDonnees() {
$donnees = array();
$num_nom = $this->nomCourant->getNns();
 
$nom = $this->conteneur->getApiNoms()->getNom($num_nom);
$blocs = array(
'illustrations', // grep-friendly: new Illustrations()
'repartition', // grep-friendly: new Repartition()
'nomenclature', // grep-friendly: new Nomenclature()
'description', // grep-friendly: new Description()
'ethnobotanique', // grep-friendly: new Ethnobotanique()
'bibliographie', // grep-friendly: new Bibliographie()
'statut', // grep-friendly: new Statut()
'ecologie' // grep-friendly: new Ecologie()
);
$cache = array();
$nt = $this->conteneur->getNomCourant()->getNomRetenu()->get('num_taxonomique');
$donnees['infos'] = array('referentiel' => $this->conteneur->getParametre('referentiel'), 'num_tax' => $nt, 'nom_sci' => $nom['nom_complet']);
$referentiel = $this->conteneur->getParametre('referentiel');
foreach ($blocs as $bloc) {
// TODO: unserialize() pourrait aussi légitimement retourner FALSE
$cache_bloc = unserialize($this->conteneur->getCache()->charger($bloc.'/bloc/'.$referentiel.'_'.$num_nom));
if($cache_bloc) {
$donnees[$bloc] = $cache_bloc;
} else {
$nom_classe = ucfirst($bloc);
$classe = new $nom_classe($this->conteneur);
$donnees[$bloc] = $classe->getBloc();
if($donnees[$bloc]) {
$this->conteneur->getCache()->sauver(serialize($donnees[$bloc]),
$bloc.'/bloc/'.$referentiel.'_'.$num_nom);
}
}
}
return $donnees;
}
}
?>
/tags/v5.10-vilmorin/modules/fiche/formateurs/Description.php
New file
0,0 → 1,266
<?php
// declare(encoding='UTF-8');
/**
* Classe mère du module Liste.
*
* @category PHP 5.2
* @package eflore-consultation
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
* @copyright 2011 Tela-Botanica
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
class Description extends aControleur {
 
private $conteneur = null;
private $nomCourant = null;
private $textes = null;
private $meta = null;
private $wikini = null;
private $informations = null;
static $mois = array(
'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet',
'août', 'septembre', 'octobre', 'novembre', 'décembre');
private $CosteFormate;
private $CosteTexte;
 
private $referentiel = 'bdtfx';
private $donnees = array();
 
public function __construct(Conteneur $conteneur) {
$this->conteneur = $conteneur;
$this->nomCourant = $this->conteneur->getNomCourant();
$this->referentiel = $this->conteneur->getParametre('referentiel');
$this->textes = $this->conteneur->getApiTextes();
$this->wikini = $this->conteneur->getApiWikini();
$this->meta = $this->conteneur->getApiMetaDonnees();
$this->informations = $this->conteneur->getApiInformations();
$this->appUrls = $this->conteneur->getAppUrls();
}
 
public function obtenirDonnees() {
$donnees = array();
$this->getWikipedia();
$this->getWikini();
$this->getDescriptionsDependantesReferentiel($this->referentiel);
if ($this->referentiel == 'bdtfx') {
$this->getCoste();
}
return $this->donnees;
}
 
public function obtenirDonneesExport() {
$donnees = array();
$this->getWikini();
$this->getDescriptionsDependantesReferentiel($this->referentiel);
return $this->donnees;
}
 
private function getDescriptionsDependantesReferentiel($ref) {
if(trim(Config::get($ref . '.baseDescription')) != "") {
// eg: [bdtfx]baseDescription = coste,baseflor dans bdtfx.ini
$bases_descriptions = explode(',', Config::get($ref . '.baseDescription'));
foreach ($bases_descriptions as $base) {
$fonction = 'get'.ucfirst($base);
$this->$fonction();
}
}
}
 
public function getBloc() {
// prend la première description disponible dans l'ordre indiqué dans le fichier
// de config, et prend la description wiki sinon
if(Config::get($this->referentiel.'.baseDescription') != "") {
$bases_descriptions = explode(',', Config::get($this->referentiel.'.baseDescription'));
foreach ($bases_descriptions as $base) {
$fonction = 'get'.ucfirst($base);
$this->$fonction();
if(empty($this->donnees[$base]['description'])) {
unset($this->donnees[$base]);
continue;
}
 
$this->donnees['type'] = $base;
$this->donnees['titre'] = "Description de ".ucfirst($base);
$this->donnees['description'] = $this->donnees[$base]['description'];
unset($this->donnees[$base]);
return $this->donnees;
}
}
 
if (empty($this->donnees['description'])) {
$this->getWikini();
$this->donnees['description'] = $this->donnees['wikini']['description'];
$this->donnees['titre'] = "Description collaborative";
$this->donnees['type'] = 'wikini';
unset($this->donnees['wikini']);
}
 
return $this->donnees;
}
 
private function getBaseflor() {
$baseflor = array();
$this->informations ->setProjet('baseflor');
$this->informations ->setBdnt($this->conteneur->getParametre('referentiel'));
$this->informations ->setNum_nom($this->nomCourant->getNnr());
$informations = $this->informations->getInformationsDescription();
if ($informations){
$baseflor['chorologie'] = isset($informations['chorologie']) ? $informations['chorologie'] : '';
$baseflor['inflorescence'] = isset($informations['inflorescence']) ? $informations['inflorescence'] : '';
$baseflor['sexualite'] = isset($informations['sexualite']) ? $informations['sexualite'] : '';
$baseflor['ordre_maturation'] = isset($informations['ordre_maturation']) ? $informations['ordre_maturation'] : '';
$baseflor['pollinisation'] = isset($informations['pollinisation']) ? $informations['pollinisation'] : '';
$baseflor['dissemination'] = isset($informations['dissemination']) ? $informations['dissemination'] : '';
$baseflor['fruit'] = isset($informations['fruit']) ? $informations['fruit'] : '';
$baseflor['couleur_fleur'] = isset($informations['couleur_fleur']) ? $informations['couleur_fleur'] : '';
$baseflor['macule'] = isset($informations['macule']) ? $informations['macule'] : '';
$baseflor['floraison'] = isset($informations['floraison']) ? self::changerFloraisonEnChaine($informations['floraison']) : '';
//récupérer dans ontologies
$baseflor['type_bio'] = isset($informations['type_bio.libelle']) ? $informations['type_bio.libelle'] : '';
$baseflor['form_vegetale'] = isset($informations['form_vegetale']) ? $informations['form_vegetale'] : '';
$baseflor['description']=$baseflor;
$this->meta->setProjet('baseflor');
$meta = $this->meta->getMetaDonnees();
$baseflor['meta'] = $meta[0];
$baseflor['meta']['url'] = $this->appUrls->obtenirUrlMetaDonnees('baseflor');
}
$this->donnees['baseflor'] = $baseflor;
}
 
static function changerFloraisonEnChaine($floraison){
$chaine = "";
if ($floraison != ""){
$mois_fleurs=preg_match('/-/',$floraison) ? preg_split('/-/',$floraison) : $floraison;
if (is_array($mois_fleurs)){
$chaine = "de ".self::$mois[(int)$mois_fleurs[0]]." à ".self::$mois[(int)$mois_fleurs[1]];
 
}else { $chaine = "en ".self::$mois[(int)$mois_fleurs];
}
}
return $chaine;
}
 
public function getUrlWikipedia() {
if(!isset($this->donnees['wp'])) {
$this->getWikipedia();
}
return $this->donnees['wp'];
}
 
public function getWikipedia() {
$wp = array();
$this->textes->setProjet('wikipedia');
$this->textes->setId(self::getIdWp($this->nomCourant->getNomRetenu()->get('nom_sci')));
$wp['titre'] = $donnees['titre'] = "Description de wikipedia";
$wp['lien'] = $this->textes->getPageUrl();
$wp['meta']['url'] = $this->appUrls->obtenirUrlMetaDonnees('wikipedia');
$this->donnees['wp'] = $wp;
}
 
private static function getIdWp($nomSci) {
return urlencode(str_replace(' ', '_', $nomSci));
}
 
private function getWikini() {
$wikini = array();
$wikini['titre'] = 'Wikini';
$referentiel = $this->conteneur->getParametre('referentiel');
$num_tax = $this->nomCourant->getNomSelectionne()->get('num_taxonomique');
$page_wiki = $this->wikini->getPageWikiPourRefEtNumTax($referentiel, $num_tax);
$wikini['description'] = $this->wikini->getTexteFormate($page_wiki, 'description');
$this->donnees['wikini'] = $wikini;
}
 
public function getLienWikini() {
$referentiel = $this->conteneur->getParametre('referentiel');
$num_tax = $this->nomCourant->getNomSelectionne()->get('num_taxonomique');
return $this->wikini->getUrlPageWiki($referentiel, $num_tax);
}
 
private function getCoste() {
$coste = array();
$this->textes->setProjet('coste');
$this->textes->setId('bdtfx.nt:'.$this->nomCourant->getNt());
$texte = $this->textes->getTexte();
$texte = array_pop($texte['resultats']);
if ($texte) {
$coste['titre'] = $texte['titre'];
$coste['description'] = self::mettreEnFormeCoste($texte['texte']);
}
$this->meta->setProjet('coste');
$meta = $this->meta->getMetaDonnees();
$coste['meta'] = $meta[0];
$coste['meta']['url'] = $this->appUrls->obtenirUrlMetaDonnees('coste');
$this->donnees['coste'] = $coste;
}
 
static function mettreEnFormeCoste($texte) {
$txt_fmt = array();
//decouper elements remarquables avant le texte
self::separerNomScientifique_a_NomCommun($texte, $txt_fmt);
$texte = preg_replace('/\//','',$texte);
//decouper elements remarquables après le texte
self::separerEcologie_a_Usages($texte, $txt_fmt);
//le morceau qui reste est le gros de la description
$texte = str_replace(';','</br> -','- '.$texte);
$texte = str_replace('–','',$texte);
$txt_fmt['texte'] = $texte;
return $txt_fmt;
}
 
 
static function separerNomScientifique_a_NomCommun(&$txt, &$txt_fmt){
if ( preg_match('/\*\*(.+)\*\*([^–]*)–/', $txt, $retour)){
/* !! attention on enlève un tiret cadratin – pas un trait d'union - !! */
$a_enlever = array('/–/','/\./' );
$txt_fmt['nom_scientifique'] = preg_replace($a_enlever,'',$retour[1]);
if(preg_match('/\((.+)\)/',$retour[2],$synonymes)){
$txt_fmt['synonymes'] = $synonymes[1];
} else {
$txt_fmt['nom_scientifique'] .= $retour[2];
}
$txt = str_replace($retour[0],'',$txt);
}
/* !! attention il y a un espace avant les // du début !! */
if ( preg_match('/^ \/\/([^\/\/]+)\/\//', $txt, $retour)){
$a_enlever = array('/–/','/\./' );
$txt_fmt['nom_commun'] = preg_replace($a_enlever,'',$retour[1]);
$txt = str_replace($retour[0],'',$txt);
}
}
 
 
static function separerEcologie_a_Usages(&$txt, &$txt_fmt) {
if (preg_match('/\.\s*([A-ZÉÀÈ].+)$/',$txt, $retour)) {
$txt_fmt['ecologie'] = $retour[1];
$txt = str_replace($retour[0],'.',$txt);
if (isset($txt_fmt['ecologie']) && preg_match('/–(.+)/', $txt_fmt['ecologie'] , $retour)){
$txt_fmt['repartition'] = $retour[1];
$txt_fmt['ecologie'] = str_replace($retour[0],'',$txt_fmt['ecologie']);
}
if (isset($txt_fmt['repartition']) && preg_match('/=(.+)$/', $txt_fmt['repartition'], $retour)){
$txt_fmt['floraison'] = $retour[1];
$txt_fmt['repartition'] = str_replace($retour[0],'',$txt_fmt['repartition']);
}
if (isset($txt_fmt['floraison']) && preg_match('/–(.+)$|\n(.+)$/',$txt_fmt['floraison'], $retour)){
$txt_fmt['usages'] = isset($retour[1]) ? $retour[1] : $retour[2];
$txt_fmt['floraison'] = str_replace($retour[0],'.',$txt_fmt['floraison']);
}
if (isset($txt_fmt['floraison']) && preg_match('/([Ff]l\.) (.+)/',$txt_fmt['floraison'], $retour)){
$txt_fmt['floraison'] = $retour[2];
$txt_fmt['floraison'] = str_replace($retour[1],'',$txt_fmt['floraison']);
}
if (isset($txt_fmt['floraison']) && preg_match('/([Ff]r\.) (.+)/',$txt_fmt['floraison'], $retour)){
$txt_fmt['fructification'] = $retour[2];
$txt_fmt['floraison'] = str_replace($retour[0],'',$txt_fmt['floraison']);
$txt_fmt['floraison'] = str_replace(',','',$txt_fmt['floraison']);
$txt_fmt['fructification'] = str_replace($retour[1],'',$txt_fmt['fructification']);
$txt_fmt['fructification'] = str_replace('.','',$txt_fmt['fructification']);
}
}
}
}
?>
Property changes:
Added: svn:mergeinfo
Merged /branches/v5.4-decaisne/modules/fiche/formateurs/Description.php:r1226-1227
Merged /branches/v5.2-lasegue/modules/fiche/formateurs/Description.php:r1183
Merged /branches/v5.7-duchartre/modules/fiche/formateurs/Description.php:r1286,1294,1296,1325,1333-1334
Merged /branches/v5.3-cordier/modules/fiche/formateurs/Description.php:r1206
Merged /branches/v5.8-seynes/modules/fiche/formateurs/Description.php:r1344-1345,1347,1351,1356
/tags/v5.10-vilmorin/modules/fiche/formateurs/Statut.php
New file
0,0 → 1,104
<?php
// declare(encoding='UTF-8');
/**
* Classe mère du module Liste.
*
* @category PHP 5.2
* @package eflore-consultation
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
* @copyright 2011 Tela-Botanica
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
class Statut extends aControleur {
private $conteneur = null;
private $nomCourant = null;
private $wikini = null;
private $statuts = null;
private $meta;
private $referentiel = null;
private $appUrls;
public function __construct(Conteneur $conteneur) {
$this->conteneur = $conteneur;
$this->nomCourant = $this->conteneur->getNomCourant();
$this->wikini = $this->conteneur->getApiWikini();
$this->statuts = $this->conteneur->getApiStatuts();
$this->meta = $this->conteneur->getApiMetaDonnees();
$this->referentiel = $this->conteneur->getParametre('referentiel');
$this->appUrls = $this->conteneur->getAppUrls();
}
public function getBloc() {
$donnees = array();
$donnees['statuts'] = $this->getStatutsZoneGeo();
if(empty($donnees['statuts'])) {
$donnees['wikini'] = $this->getWikini();
}
$donnees['liste_rouge'] = $this->getCategorieListeRouge();
return $donnees;
}
public function obtenirDonnees() {
$donnees = array();
$donnees['wikini'] = $this->getWikini();
$donnees['statuts'] = $this->getStatuts();
$donnees['liste_rouge'] = $this->getCategorieListeRouge();
return $donnees;
}
private function getStatuts() {
$statuts = "";
$projet = Config::get($this->referentiel.'.baseStatuts');
if ($projet != "") {
$nnr = $this->nomCourant->getNnr();
$statuts = $this->statuts->getStatuts($projet, $nnr);
$this->meta->setProjet($projet);
$meta = $this->meta->getMetaDonnees();
$statuts['meta'] = $meta[0];
$statuts['meta']['url'] = $this->appUrls->obtenirUrlMetaDonnees($projet);
}
return $statuts;
}
private function getStatutsZoneGeo() {
$statuts = "";
$projet = Config::get($this->referentiel.'.baseStatuts');
if ($projet != "") {
$nnr = $this->nomCourant->getNnr();
$statuts = $this->statuts->getStatutsZoneGeo($projet, $nnr);
$this->meta->setProjet($projet);
$meta = $this->meta->getMetaDonnees();
$statuts['meta'] = $meta[0];
$statuts['meta']['url'] = $this->appUrls->obtenirUrlMetaDonnees($projet);
}
return $statuts;
}
private function getCategorieListeRouge() {
$liste_rouge = "";
$projet = Config::get($this->referentiel.'.baseListeRouge');
if ($projet != "") {
$nnr = $this->nomCourant->getNnr();
$liste_rouge = $this->statuts->getCategorieListeRouge($projet, $nnr);
$this->meta->setProjet($projet);
$meta = $this->meta->getMetaDonnees();
$liste_rouge['meta'] = $meta[0];
$liste_rouge['meta']['url'] = $this->appUrls->obtenirUrlMetaDonnees($projet);
}
return $liste_rouge;
}
private function getWikini() {
$wikini = array();
$wikini['titre'] = 'Wikini';
$referentiel = $this->conteneur->getParametre('referentiel');
$num_tax = $this->nomCourant->getNomSelectionne()->get('num_taxonomique');
$page_wiki = $this->wikini->getPageWikiPourRefEtNumTax($referentiel, $num_tax);
$wikini['statuts_de_protection'] = $this->wikini->getTexteFormate($page_wiki, 'statuts de protection');
return $wikini;
}
}
?>
/tags/v5.10-vilmorin/modules/fiche/formateurs/Ethnobotanique.php
New file
0,0 → 1,160
<?php
// declare(encoding='UTF-8');
/**
* Classe mère du module Liste.
*
* @category PHP 5.2
* @package eflore-consultation
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
* @copyright 2011 Tela-Botanica
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
class Ethnobotanique extends aControleur {
 
private $conteneur = null;
private $nomCourant = null;
private $nomsVernaculaires = null;
private $wikini;
private $referentiel = 'bdtfx';
private $donnees = array();
 
public function __construct(Conteneur $conteneur) {
$this->conteneur = $conteneur;
$this->nomCourant = $this->conteneur->getNomCourant();
$this->nomsVernaculaires = $this->conteneur->getApiNomsVernaculaires();
$this->referentiel = $this->conteneur->getParametre('referentiel');
$this->wikini = $this->conteneur->getApiWikini();
$this->meta = $this->conteneur->getApiMetaDonnees();
$this->appUrls = $this->conteneur->getAppUrls();
}
 
public function obtenirDonnees() {
$this->getNomsVernaculaires('.referentielVerna');
$this->getNomsVernaculaires('.referentielVernaGrec');
$this->getChorologie();
$this->donnees['wikini'] = $this->getWikini();
return $this->donnees;
}
 
private function getNomsVernaculaires($projet) {
$projet = Config::get($this->referentiel.$projet);
if ($projet != "") {
$nt = $this->nomCourant->getNomRetenu()->get('num_taxonomique');
$nomsVerna = $this->nomsVernaculaires->getRechercheComplete($projet, $nt);
$this->donnees[$projet]['noms'] = $nomsVerna['resultat'];
$this->meta->setProjet($projet);
$meta = $this->meta->getMetaDonnees();
$this->donnees[$projet]['meta'] = $meta[0];
$this->donnees[$projet]['meta']['url'] = $this->appUrls->obtenirUrlMetaDonnees($projet);
}
}
public function getBloc() {
$nt = $this->nomCourant->getNomRetenu()->get('num_taxonomique');
$projet = Config::get($this->referentiel.'.referentielVerna');
if ($projet != "") {
$nomsVerna = $this->nomsVernaculaires->getRechercheLimitee($projet, $nt);
$this->donnees['nomsVerna'] = (isset($nomsVerna['resultat']) && is_array($nomsVerna['resultat'])) ? array_slice($nomsVerna['resultat'], 0, 3) : array();
$this->donnees['autresNomsVerna'] = count($nomsVerna['resultat']) - 3;
}
$this->donnees['wikini'] = $this->getWikini();
return $this->donnees;
}
private function getChorologie() {
$infos_choro = $this->nomCourant->getNomRetenu()->getInfos();
$this->donnees['chorologie'] = $this->traiterTableauChorologie($infos_choro);
$this->meta->setProjet($this->referentiel);
$meta = $this->meta->getMetaDonnees();
$this->donnees['chorologie']['meta'] = $meta[0];
$this->donnees['chorologie']['meta']['url'] = $this->appUrls->obtenirUrlMetaDonnees($this->referentiel);
}
private function traiterTableauChorologie($infos_choro) {
$donnees_choro = array();
$colonnes = array();
foreach ($infos_choro as $param => $valeur) {
if(strncmp($param, 'presence', 8) == 0) {
$lieu = self::obtenirLieuPourCodePresence($this->referentiel, $param);
if($lieu) {
$donnees_choro['Présence'][$lieu] = $valeur;
$colonnes[] = $lieu;
}
} else {
$donnees_choro = self::traiterChampsStatuts($this->referentiel, $donnees_choro, $param, $valeur);
}
}
 
ksort($donnees_choro);
$donnees = array('colonnes' => array_unique($colonnes), 'donnees' => $donnees_choro);
return $donnees;
}
static function traiterChampsStatuts($ref, $tableau_donnees, $code, $valeur) {
if ($code == 'statut_origine.libelle') {
$tableau_donnees['Statut d\'origine'][self::obtenirIntituleLieuPourReferentiel($ref)] = $valeur;
} elseif ($code == 'statut_introduction.libelle') {
$tableau_donnees['Statut d\'introduction'][self::obtenirIntituleLieuPourReferentiel($ref)] = $valeur;
} elseif ($code == 'statut_culture.libelle') {
$tableau_donnees['Statut de culture'][self::obtenirIntituleLieuPourReferentiel($ref)] = $valeur;
}
return $tableau_donnees;
}
 
/* eg:
* - presence.libelle
* - presence_Guadeloupe.code */
static function obtenirLieuPourCodePresence($ref, $str) {
// ignore les paramètres JSON de présence qui ne contiennent pas le libellé
// (= présence en toutes lettres)
if(substr($str, -7) != 'libelle') return NULL;
@list($prefixe, $lieu) = explode('_', $str, 2);
 
if($str == 'presence.libelle') {
return self::obtenirIntituleLieuPourReferentiel($ref);
}
 
list($lieu, $param) = explode('.', $lieu, 2);
if (strtolower($lieu) == 'ga') {
return 'France (Hors Corse)';
} elseif (strtolower($lieu) == 'co') {
return 'France (Corse)';
} elseif($lieu) {
return $lieu;
}
return NULL;
}
private static function obtenirIntituleLieuPourReferentiel($ref) {
$lieu = '';
switch($ref) {
case 'bdtfx':
$lieu = 'France';
break;
case 'bdtxa':
$lieu = 'Antilles';
case 'isfan':
$lieu = 'Afrique du Nord';
break;
}
return $lieu;
}
private function getWikini() {
$wikini = array();
$wikini['titre'] = 'Wikini';
$referentiel = $this->conteneur->getParametre('referentiel');
$num_tax = $this->nomCourant->getNomSelectionne()->get('num_taxonomique');
$page_wiki = $this->wikini->getPageWikiPourRefEtNumTax($referentiel, $num_tax);
$wikini['noms_communs'] = $this->wikini->getTexteFormate($page_wiki, 'noms communs');
$wikini['culture_et_arts'] = $this->wikini->getTexteFormate($page_wiki, 'culture et arts');
$wikini['usage'] = $this->wikini->getTexteFormate($page_wiki, 'usage');
return $wikini;
}
}
?>
/tags/v5.10-vilmorin/modules/fiche/formateurs/Ecologie.php
New file
0,0 → 1,210
<?php
// declare(encoding='UTF-8');
/**
* Classe mère du module Liste.
*
* @category PHP 5.2
* @package eflore-consultation
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
* @author Mathilde Salthun-lassalle <mathilde@tela-botanica.org>
* @author Raphaël Droz <raphael@tela-botanica.org>
* @copyright 2011, 2013 Tela-Botanica
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @used by modules/pdf_export/PdfExport.php::initialiser()
* @used by modules/fiche/formateurs/Synthese.php::obtenirDonnees()
*/
class Ecologie extends aControleur {
private $referentiel = 'bdtfx';
private $donnees = array();
public function __construct(Conteneur $conteneur) {
$this->conteneur = $conteneur;
$this->nomCourant = $this->conteneur->getNomCourant();
$this->referentiel = $this->conteneur->getParametre('referentiel');
$this->informations = $this->conteneur->getApiInformations();
$this->meta = $this->conteneur->getApiMetaDonnees();
$this->wikini = $this->conteneur->getApiWikini();
$this->appUrls = $this->conteneur->getAppUrls();
$this->graphique = $this->conteneur->getApiGraphiques();
$this->syntaxons = $this->conteneur->getApiSyntaxons();
parent::__construct();
}
public function obtenirDonnees() {
$donnees = array();
$this->getWikini();
$this->getBaseflor();
$this->getBaseveg();
$this->donnees['urls'] = $this->appUrls;
return $this->donnees;
}
public function obtenirDonneesExport() {
$donnees['wikini'] = $this->getWikini();
$donnees['baseflor'] = $this->getBaseflorExport();
$donnees['baseveg'] = $this->getBaseveg();
return $donnees;
}
public function getBaseflorCatminat($depart, $limite) {
$baseflorCatminat = array();
$this->informations->setProjet('baseflor');
$this->informations->setBdnt($this->conteneur->getParametre('referentiel'));
$this->informations->setNum_nom($this->nomCourant->getNnr());
$this->informations->setDepart($depart);
$this->informations->setLimite($limite);
$informations = $this->informations->getInformationsRelationCatminat();
if($informations != ""){
$baseflorCatminat['catminat'] = $informations['resultat'][0]['catminat_code'];
$baseflorCatminat['lien-liste-fancy'] = $this->appUrls->obtenirUrlListeFancyBoxPhytosocio('catminat_taxons',$this->conteneur->getParametre('referentiel'),$this->nomCourant->getNnr(),$baseflorCatminat['catminat']);
} else {
$baseflorCatminat['aucune'] = 'Aucune donnée';
}
return $baseflorCatminat;
}
private function getBaseveg() {
if (Config::get($this->referentiel.'.basePhytosocio') != "") {
$baseveg = array();
$baseflor = $this->getBaseflorCatminat(0,500);
$baseveg['baseflor'] = $baseflor;
if (isset($baseflor['catminat'])) {
$this->syntaxons->setProjet('baseveg');
$catminat = str_replace('/','-',$baseflor['catminat']);
$this->syntaxons->setCatminat($catminat);
$syntaxonsSup = $this->syntaxons->getSyntaxonsSuperieurs();
$baseveg['syntaxons-sup'] = $syntaxonsSup['resultat'];
$syntaxonsCourant = $this->syntaxons->getSyntaxonsCatminat();
$baseveg['syntaxon-courant'] = $syntaxonsCourant['resultat'];
foreach ($baseveg['syntaxons-sup'] as $cle => $valeurs) {
$catminat_sup = str_replace('/','-',$valeurs['code_catminat']);
$baseveg['synonymes']['lien-liste-fancy'][$valeurs['code_catminat']] = $this->appUrls->obtenirUrlListeFancyBoxPhytosocio('catminat_synonymes',$this->conteneur->getParametre('referentiel'),$this->nomCourant->getNnr(),$catminat_sup);
$baseveg['ref']['lien-liste-fancy'][$valeurs['code_catminat']] = $this->appUrls->obtenirUrlListeFancyBoxPhytosocio('catminat_ref',$this->conteneur->getParametre('referentiel'),$this->nomCourant->getNnr(),$catminat_sup);
$baseveg['taxons']['lien-liste-fancy'][$valeurs['code_catminat']] = $this->appUrls->obtenirUrlListeFancyBoxPhytosocio('catminat_taxons_sup',$this->conteneur->getParametre('referentiel'),$this->nomCourant->getNnr(),$catminat_sup);
}
$baseveg['synonymes']['lien-liste-fancy'][$baseflor['catminat']] = $this->appUrls->obtenirUrlListeFancyBoxPhytosocio('catminat_synonymes',$this->conteneur->getParametre('referentiel'),$this->nomCourant->getNnr(),$catminat);
$baseveg['ref']['lien-liste-fancy'][$baseflor['catminat']] = $this->appUrls->obtenirUrlListeFancyBoxPhytosocio('catminat_ref',$this->conteneur->getParametre('referentiel'),$this->nomCourant->getNnr(),$catminat);
$this->meta->setProjet('baseveg');
$meta = $this->meta->getMetaDonnees();
$baseveg['meta'] = $meta[0];
$baseveg['meta']['url'] = $this->appUrls->obtenirUrlMetaDonnees('baseveg');
}else {
$baseveg['aucune'] = 'Aucune donnée';
}
$this->donnees['baseveg'] = $baseveg;
}
}
private function getBasevegSyntaxonCourant() {
$baseveg = array();
$baseflor = $this->getBaseflorCatminat(0,500);
if (isset($baseflor['catminat'])) {
$this->syntaxons->setProjet('baseveg');
$catminat = str_replace('/','-',$baseflor['catminat']);
$this->syntaxons->setCatminat($catminat);
$syntaxonsCourant = $this->syntaxons->getSyntaxonsCatminat();
$baseveg['description'] = $syntaxonsCourant['resultat'];
}
return $baseveg;
}
private function getWikini() {
$wikini = array();
$wikini['titre'] = 'Wikini';
$referentiel = $this->conteneur->getParametre('referentiel');
$num_tax = $this->nomCourant->getNomSelectionne()->get('num_taxonomique');
$page_wiki = $this->wikini->getPageWikiPourRefEtNumTax($referentiel, $num_tax);
$wikini['ecologie'] = $this->wikini->getTexteFormate($page_wiki, 'ecologie');
$this->donnees['wikini'] = $wikini;
}
public function getBloc() {
$donnees = array();
$this->getBaseflor(false);
$this->donnees['graph'] = $this->donnees['baseflor'];
$this->donnees['graph']['titre'] = 'Optimum écologique';
$this->donnees['phytosocio'] = $this->getBasevegSyntaxonCourant();
return $this->donnees;
}
private function getBaseflorExport() {
$baseflor = array();
$this->informations ->setProjet('baseflor');
$this->informations ->setBdnt($this->conteneur->getParametre('referentiel'));
$this->informations ->setNum_nom($this->nomCourant->getNnr());
$informations = $this->informations->getInformationsEcologie();
if(is_array($informations)){
$baseflor['climat_url'] = $informations['graphique_climat']['href']."?retour.format=500";
$baseflor['sol_url'] = $informations['graphique_sol']['href']."?retour.format=500";
$baseflor['climat_url_png'] = $informations['graphique_climat']['href']."?retour=image/png";
$baseflor['sol_url_png'] = $informations['graphique_sol']['href']."?retour=image/png";
$this->graphique -> setProjet('baseflor');
$baseflor['legende_eco'] = $this->urls->obtenirUrlBaseDossier() . Config::get('dossier_images') . '/legende_formes.png';
$this->meta->setProjet('baseflor');
$meta = $this->meta->getMetaDonnees();
$baseflor['meta']= $meta[0];
}else {
$baseflor['aucune'] = 'Aucune donnée';
}
return $baseflor;
}
private function getBaseflor($inclure_legende = true) {
if (Config::get($this->referentiel.'.baseEcologie')) {
$referentiel = $this->conteneur->getParametre('referentiel');
$num_nom = $this->nomCourant->getNnr();
 
// TODO: unserialize() pourrait aussi légitimement retourner FALSE
$cache = unserialize($this->conteneur->getCache()->charger('baseflor/graphique/'.$referentiel.'_'.$num_nom));
if($cache) {
$baseflor = $cache;
$this->graphique ->setProjet('baseflor');
$graphique = $this->graphique->getLegendeGraphique();
$baseflor['legende'] = $graphique ;
} else {
$baseflor = array();
$this->informations ->setProjet('baseflor');
$this->informations ->setBdnt($this->conteneur->getParametre('referentiel'));
$this->informations ->setNum_nom($this->nomCourant->getNnr());
$informations = $this->informations->getInformationsEcologie();
if(is_array($informations)){
if (isset($informations['graphique_climat'])) {
$baseflor['climat_url'] = $informations['graphique_climat']['href']."?retour.format=500";
$baseflor['climat_url_png'] = $informations['graphique_climat']['href']."?retour=image/png";
$baseflor['description']['climat_url'] = $informations['graphique_climat']['href']."?retour.format=420";
$baseflor['description']['climat_url_png'] = $informations['graphique_climat']['href']."?retour.format=420&retour=image/png";
}
if (isset($informations['graphique_sol'])) {
$baseflor['sol_url'] = $informations['graphique_sol']['href']."?retour.format=500";
$baseflor['sol_url_png'] = $informations['graphique_sol']['href']."?retour=image/png";
$baseflor['description']['sol_url'] = $informations['graphique_sol']['href']."?retour.format=420";
$baseflor['description']['sol_url_png'] = $informations['graphique_sol']['href']."?retour.format=420&retour=image/png";
}
if($inclure_legende) {
$this->graphique ->setProjet('baseflor');
$graphique = $this->graphique->getLegendeGraphique();
$baseflor['legende'] = $graphique ;
}
$this->meta->setProjet('baseflor');
$meta = $this->meta->getMetaDonnees();
$baseflor['meta'] = $meta[0];
$baseflor['meta']['url'] = $this->appUrls->obtenirUrlMetaDonnees('baseflor');
$this->conteneur->getCache()->sauver(serialize($baseflor),
'baseflor/graphique/'.$referentiel.'_'.$num_nom);
} else {
$baseflor['aucune'] = 'Aucune donnée';
}
}
$this->donnees['baseflor'] = $baseflor;
}
}
}
?>
/tags/v5.10-vilmorin/modules/fiche/squelettes/fiche_accueil.tpl.html
New file
0,0 → 1,51
<script type="text/Javascript">
var ongletsDefaut = [<?= $blocs; ?>];
</script>
<div id="bloc-fiche" class="importance1">
<h1><span ><?=$nom_retenu?></span><span class="famille" style="float: right;"><?=($famille != '') ? $famille : '';?></span></h1>
<div id="zone_onglets" class="ui-tabs ui-widget ui-widget-content ui-corner-all">
<? $url = htmlentities('index.php?referentiel=bdtfx&niveau=1&module=fiche&action=fiche&num_nom='.$num_nom.'&type_nom='.$type_nom.'&nom='.$nom.'&onglet=');?>
<ul id="onglets" class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">
<li id="onglet_synthese" class="ui-state-default ui-corner-top <?= ($onglet == 'synthese') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet lien-statique" href="<?=$url;?>synthese">Accueil</a>
</li>
<li class="ui-state-default ui-corner-top <?= ($onglet == 'illustrations') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet" href="<?=$url;?>illustrations">Illustrations</a>
</li>
<li class="ui-state-default ui-corner-top <?= ($onglet == 'description') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet" href="<?=$url;?>description">Description</a>
</li>
<li class="ui-state-default ui-corner-top <?= ($onglet == 'bibliographie') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet" href="<?=$url;?>bibliographie">Bibliographie</a>
</li>
<li class="ui-state-default ui-corner-top <?= ($onglet == 'repartitio') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet" href="<?=$url;?>repartition">Répartition</a>
</li>
<li class="ui-state-default ui-corner-top <?= ($onglet == 'ethnobotanique') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet" href="<?=$url;?>ethnobotanique">Ethnobotanique</a>
</li>
<li class="ui-state-default ui-corner-top <?= ($onglet == 'classification') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet" href="<?=$url;?>classification">Classification</a>
</li>
<li class="ui-state-default ui-corner-top <?= ($onglet == 'nomenclature') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet" href="<?=$url;?>nomenclature">Nomenclature</a>
</li>
<li class="ui-state-default ui-corner-top <?= ($onglet == 'statut') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet" href="<?=$url;?>statut">Statut de protection</a>
</li>
<li class="ui-state-default ui-corner-top <?= ($onglet == 'ecologie') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet" href="<?=$url;?>ecologie">Ecologie</a>
</li>
<li id="ongletEtPlus" class="ui-state-default ui-corner-top">
<a id="lienOngletEtPlus" class="lien-statique" href="#etPlus" title="Ajouter d'autres fiches">
+
</a>
</li>
</ul>
<span id="conteneurMenuOnglets"></span>
</div>
<div id="zone_contenu_fiche">
<?= $contenu_onglet ?>
</div>
</div>
/tags/v5.10-vilmorin/modules/fiche/squelettes/fiche_illustrations.tpl.html
New file
0,0 → 1,209
<div class="onglet_contenu" id="illustrations">
<? if (isset($coste)) : ?>
<h2>Illustration de la flore de Coste</h2>
<div id="illustrations-coste">
<?php if (empty($coste['images']) == false) :?>
<ul class="liste-illustrations">
<?php foreach($coste['images'] as $url) : ?>
<li>
<a class="lien-image-coste" data-num-image="<?= $url; ?>" href="<?= $url; ?>" >
<img src="<?= $url; ?>" alt="<?= $nomComplet ?> - illustration de coste" />
</a>
</li>
<?php endforeach; ?>
</ul>
<hr class="nettoyage" />
<div class="conteneur_lien_metadonnees">
<?= $coste['meta']['citation']?>
<a class="lien_metadonnees lien_popup" href="<?= $coste['meta']['url']; ?>">Voir toutes les metadonnées</a>
</div>
<?php else : echo ' <br/> Aucune illustration. <br/> <br/>'; endif;?>
</div>
<? endif; ?>
 
<? if (isset($organes) || $illustrationsOrganes != null) : ?>
<h2>Flora Data - Organes</h2>
<? endif ?>
 
<? if (isset($organes)) : ?>
 
<div id="illustrations-organes">
<? if (empty($organes) == false) :?>
<ul class="liste-illustrations">
<? foreach($organes as $tag => $image) : ?>
<? if ($image && $image['binaire.href']) : ?>
<li class="organe-moyen">
<?= ucfirst($tag); ?>
<a class="lien_grand_format" target="_blank" title="Voir cette image dans son format original (s'ouvre dans une nouvelle fenêtre)" href="<?= Illustrations::obtenirUrlImageGrandFormatCel($image['id_image']); ?>" data-num-image="<?= $image['id_image'] ?>">
<img data-num-image="<?= $image['id_image'] ?>"
alt="Photographie n°<?= $image['id_image'] ?> du taxon <?= $image['observation']['determination.ns'] ?>"
src="<?= $image['binaire.href'] ?>" />
</a>
</li>
<? endif ?>
<? endforeach ?>
</ul>
<? endif ?>
<hr class="nettoyage" />
<a class="acceder-outil-vert lien-externe"
href="<?= $base_url_widget_saisie ?>?referentiel=<?= $referentiel; ?>&num_nom=<?= $nnr ?>&titre=<?= urlencode("Ajout d'une photo de ".$nomComplet); ?>"
title="Ajouter une photographie au moyen du Carnet en Ligne">
Ajouter une photo
</a>
<? if (empty($organes) == false) : ?>
<span class="separator"></span>
<a class="acceder-outil-vert lien-externe" href="<?= $base_url_pictoflora ?>?masque.referentiel=<?= $referentiel; ?>&protocole=3&masque.ns=<?= $nomComplet ?>"
title="Participer au choix des photos d'organes">
Participer au choix
</a>
<? endif ?>
<br/><br/>
</div>
<? endif ?>
 
<!-- sous-squelette -->
<?= $illustrationsOrganes ?>
<br/>
 
<? if (isset($caracteres)) : ?>
<h2>Flora Data - Aide à la détermination</h2>
 
<div id="illustrations-caracteres">
<? if (empty($caracteres) == false) : ?>
<ul class="liste-illustrations">
<? foreach($caracteres as $image) : ?>
<li class="caractere-moyen">
<? if ($image != null) : ?>
<a class="lien_grand_format" target="_blank" title="Voir cette image dans son format original (s'ouvre dans une nouvelle fenêtre)" href="<?= Illustrations::obtenirUrlImageGrandFormatCel($image['id_image']); ?>" data-num-image="<?= $image['id_image'] ?>">
<img data-num-image="<?= $image['id_image'] ?>"
alt="<?= $image['auteur'] ?> - <?= $image['observation']['determination.ns'] ?>"
src="<?= $image['binaire.href'] ?>" />
</a>
<? if ($image['auteur.id']) : ?>
<a target="_blank" title="Voir le profil de cet utilisateur (nécessite d'être identifié)" href="<?= $image['urlProfil']; ?>">
<strong class="auteur"><?= $image['auteur'] ?></strong>
</a>&nbsp;&nbsp;
<div class="liste_actions_ill">
<a title="Envoyer un message à l'auteur à propos de cette image (nécessite d'être identifié)" class="mailto" href="<?= $image['urlContact']; ?>">
<img class="icone_action_ill" src="<?=Config::get('url_css_images')?>contact.png" />
</a>
<a title="Télécharger cette image dans différents formats" class="lien_telechargement_image" href="<?=Config::get('base_url_widget');?>telechargement?id_image=<?=$image['id_image']?>">
<img class="icone_action_ill" src="<?=Config::get('url_css_images')?>sauver.png" />
</a>
<a title="Voir plus d'informations sur cette image (s'ouvre dans un popup)" class="lien-image-cel" data-num-image="<?=$image['id_image']?>" href="<?=$image['urlDetailImg'];?>">
<img class="icone_action_ill" src="<?=Config::get('url_css_images')?>infos_image.png" data-num-image="<?=$image['id_image']?>" />
</a>
<a title="Signaler une mauvaise identification ou en proposer une autre via l'outil identiplante" target="_blank" class="signaler-mauvaise-identification" href="<?= $image['urlMauvaiseIdentification']; ?>">
<img class="icone_action_ill" src="<?=Config::get('url_css_images')?>mauvaise_id.png" />
</a>
</div>
<? else : ?>
<strong class="auteur"><?= $image['auteur'] ?></strong>
&nbsp;&nbsp;(profil indisponible)
<div class="liste_actions_ill">
<a class="lien_telechargement_image" href="<?=Config::get('base_url_widget');?>telechargement?id_image=<?=$image['id_image']?>">
<img class="icone_action_ill" src="<?=Config::get('url_css_images')?>sauver.png" />
</a>
<a title="Voir plus d'informations sur cette image (s'ouvre dans un popup)" class="lien-image-cel" data-num-image="<?= $image['id_image'] ?>" href="<?=$image['urlDetailImg'];?>">
<img class="icone_action_ill" src="<?=Config::get('url_css_images')?>infos_image.png" data-num-image="<?=$image['id_image'];?>" />
</a>
<a title="Proposer une autre détermination via l'outil identiplante" target="_blank" class="signaler-mauvaise-identification" href="<?= $image['urlMauvaiseIdentification']; ?>">
<img class="icone_action_ill" src="<?=Config::get('url_css_images')?>mauvaise_id.png" />
</a>
</div>
<? endif ?><br />
<? endif ?>
</li>
<? endforeach ?>
</ul>
<? endif ?>
<hr class="nettoyage" />
<div class="ajouter-participer-choix">
<a class="acceder-outil-vert lien-externe"
href="<?= $base_url_widget_saisie ?>?referentiel=<?= $referentiel; ?>&num_nom=<?= $nnr ?>&titre=<?= urlencode("Ajout d'une photo de ".$nomComplet); ?>"
title="Ajouter une photographie au moyen du Carnet en Ligne">
Ajouter une photo
</a>
<? if (empty($caracteres) == false) : ?>
<span class="separator"></span>
<a class="acceder-outil-vert lien-externe" href="<?= $base_url_pictoflora ?>?masque.referentiel=<?= $referentiel; ?>&masque.ns=<?= $nomComplet ?>#page_recherche_images~1"
title="Participer au choix des photos d'organes">
Participer au choix
</a>
<? endif ?>
</div>
</div>
<br/>
<? endif ?>
 
<? if (isset($cel)) : ?>
<h2>Flora Data - Tout</h2>
<br/><br/>
<div id="illustrations-cel">
<? if ($cel['cel_present']) { ?>
<div class="lien-ajax-tpl">
<!-- sous-squelette -->
<?= $cel['illustrationsCel'] ?>
<br/>
<span>Seules les <?= Config::get('nbTrancheImagesResultatsDeterminationAffichees') ?> premières images sont affichées : </span>
<a href="<?= $cel['ajax_url']; ?>" class="lien-ajax-tpl-chargement">
<strong>Cliquez ici pour charger toutes les illustrations disponibles pour ce taxon</strong>
</a>
</div>
<br/>
<div class="conteneur_lien_metadonnees">
<?= $cel['meta']['citation']?>
<a class="lien_metadonnees lien_popup" href="<?= $cel['meta']['url']; ?>">Voir toutes les metadonnées</a>
</div>
<?php } else { echo ' <br/> Aucune illustration. <br/> <br/>'; } ?>
<a class="acceder-outil-vert lien-externe"
href="<?= $base_url_widget_saisie ?>?referentiel=<?= $referentiel; ?>&num_nom=<?= $nnr ?>&titre=<?= urlencode("Ajout d'une photo de ".$nomComplet); ?>"
title="Ajouter une photographie au moyen du Carnet en Ligne">
Ajouter une photo
</a>
</div>
<br/><br/><br/>
<? endif ?>
<? if (isset($photoflora)) : ?>
<h2>Photoflora </h2>
<p id="intro-photoflora">
Ces images sont fournies par le site <a href="http://photoflora.free.fr/" class="lien-externe">Photoflora</a>.<br>
Des informations complémentaires sur l'auteur, la localité... sont diponibles sur la
<a href="http://photoflora.free.fr/FiTax.php?NumTaxon=<?= $nt ?>" class="lien-externe">
page du taxon <span class="nom-sci"><?= $nomSciRetenu ?></span>
</a>.
</p>
<div id="illustrations-photoflora">
<?php if (isset($photoflora['images'])) : ?>
<ul class="liste-illustrations">
<?php foreach($photoflora['images'] as $id => $image) : ?>
<li>
<a class="lien-externe img-cadre" href="http://photoflora.free.fr/UneFoto.php?NumTaxon=<?= $nt ?>&NumPhoto=<?= $id ?>.jpg">
<div class="img-cadre-fond">
<img src="<?= $image['src'] ?>" alt="Photographie n°<?=$id;?> du taxon <?= $image['nomSci']; ?>" />
</div>
</a>
<p>
à <strong class="localisation"><?= $image['station']; ?></strong><br />
le <strong class="date-creation"><?= $image['date']; ?></strong><br />
par <strong class="auteur"><?= $image['auteur']; ?></strong>
</p>
</li>
<?php endforeach; ?>
</ul>
<hr class="nettoyage" />
<? endif; ?>
</div>
<div class="conteneur_lien_metadonnees">
<?= $photoflora['meta']['citation']?>
<a class="lien_metadonnees lien_popup" href="<?= $photoflora['meta']['url']; ?>">Voir toutes les metadonnées</a>
</div>
<?php endif; ?>
 
<script type="text/javascript">
$.event.trigger('ongletIllustrationsCharge');
</script>
</div>
/tags/v5.10-vilmorin/modules/fiche/squelettes/fiche_pied_page.tpl.html
New file
0,0 → 1,71
<div class="importance1">
<div class="gauche telechargements_pdf">
<h2>Téléchargements</h2>
<div class="conteneur_telechargements">
<?= $export_pdf; ?>
</div>
<h2>Fiche mobile SmartFlore :</h2>
<div class="conteneur_permalien_mobile">
<span>Fiche mobile SmartFlore :</span>
<span class="description">
<a class="lien_externe" href="<?= $mobile; ?>" title="voir la version mobile de ce taxon (s'ouvre dans une nouvelle fenêtre)">
Version nomade
</a>
</span>
</div>
<div class="conteneur_permalien_mobile">
<span>QR code :</span>
<a class="lien_telechargement_qr_code" target="_blank" href="<?= $qr_code_png; ?>">QR code</a>
</div>
</div>
<div class="droite infos_liens_permanents">
<h2>Informations :</h2>
<div class="gauche telechargements_pdf">
<div class="conteneur_permalien">Numéro nomenclatural : <?= $nn ?></div>
<div class="conteneur_permalien">Numéro taxonomique : <?= $nt ?></div>
</div>
<div class="droite infos_liens_permanents">
<div class="conteneur_permalien">Numéro nomenclatural du nom retenu : <?= $nnr ?></div>
<?php if(isset($inpn) && $inpn != "0") : ?><div class="conteneur_permalien">Numéro INPN : <?= $inpn ?></div><? endif; ?>
</div>
<hr class="nettoyage" />
<h2>Liens permanents :</h2>
<div class="conteneur_permalien">
<span>Nom sélectionné :</span>
<span class="conteneur_permalien">
<a id="permalien_num_nom" class="lien_externe" href="<?=htmlentities($permalien_num_nom)?>" title="Lien permanent vers <?=$nom_retenu;?>">
<?=htmlentities($permalien_num_nom)?>
</a>
</span>
</div>
<!-- <div class="conteneur_permalien">
<span class="titre_lien_permanent">Taxon :</span>
<span>
<a class="lien_externe" href="<?=htmlentities($permalien_taxon)?>" title="Lien permanent vers ce taxon">
<?=htmlentities($permalien_taxon)?>
</a>
</span>
</div> -->
<div class="conteneur_permalien">
<span>Fiche wikipedia :</span>
<span class="description conteneur_permalien">
<a id="permalien_wikipedia" class="lien_externe" href="<?=htmlentities($wikipedia['lien'])?>" title="voir la page de ce taxon sur wikipedia (s'ouvre dans une nouvelle fenêtre)">
<?=htmlentities($wikipedia['lien'])?>
</a>
</span>
</div>
<div class="conteneur_permalien">
<span>Fiche wikini :</span>
<span class="description conteneur_permalien">
<a id="permalien_wikini" class="lien_externe" href="<?=htmlentities($wiki)?>" title="voir la page de ce taxon sur le wiki flora (s'ouvre dans une nouvelle fenêtre)">
<?=htmlentities($wiki)?>
</a>
</span>
</div>
</div>
<hr class="nettoyage" />
<script type="text/javascript">
$.event.trigger('ficheSyntheseChargee');
</script>
</div>
/tags/v5.10-vilmorin/modules/fiche/squelettes/fiche_pdf_lien.tpl.html
New file
0,0 → 1,35
<!-- cadre de bas de la fiche contient les liens pour export pdf. -->
<script>
<!--
$(document).ready(function(){
$('#bloc_export_choix').hide();
$('#export_choix').click(function(event) {
$('#bloc_export_choix').slideToggle();
event.preventDefault();
return false;
});
});
-->
</script>
<div>
<a href="<?=$lien?>" class="lien_export_pdf"> Télécharger la fiche au format PDF </a>
<div class="avertissement_telechargement">(Peut durer jusqu'à 30 secondes)</div><br />
<a href="" id="export_choix" name="export_choix">Personnaliser la fiche</a>
<div id="bloc_export_choix">
<form id="export_pdf" method="post" action="<?=$lien?>" >
<br/>
<span>Cocher les sections à télécharger :</span>
<fieldset>
<label> Description </label> <input type="checkbox" name="bloc[]" value="description" />
<label> Ethnobotanique </label> <input type="checkbox" name="bloc[]" value="ethnobotanique" />
<label> Ecologie </label> <input type="checkbox" name="bloc[]" value="ecologie" />
<label> Statuts de protection </label> <input type="checkbox" name="bloc[]" value="statuts" />
<label> Nomenclature </label> <input type="checkbox" name="bloc[]" value="nomenclature" />
<label> Bibliographie </label> <input type="checkbox" name="bloc[]" value="bibliographie" />
<label> Illustrations </label> <input type="checkbox" name="bloc[]" value="illustrations" />
<label> Répartition </label> <input type="checkbox" name="bloc[]" value="repartition" />
</fieldset>
<input type="submit" name="choix" value="Télécharger la fiche."/>
</form>
</div>
</div>
/tags/v5.10-vilmorin/modules/fiche/squelettes/fiche_description.tpl.html
New file
0,0 → 1,184
<div class="onglet_contenu" id="description">
<?php if(isset($coste) && isset($coste['titre'])) : ?>
<h2>Description de Coste : <?=$coste['titre']?></h2>
<div class="description coste">
<? if (!empty($coste['description'])) : ?>
<table class="desc">
<tr>
<td>
<?if ($coste['description']['nom_scientifique'] != '') : ?>
<span class="gras">
<?=$coste['description']['nom_scientifique']; ?>
</span>
<? endif; ?>
<?if ($coste['description']['nom_commun'] != '') : ?>
<span class="italique">
<?=$coste['description']['nom_commun']; ?>
</span>
<? endif; ?>
</td>
</tr>
<?if ($coste['description']['synonymes'] != '') : ?>
<tr>
<td>
<span class="titre">Synonymes </span>
<?=$coste['description']['synonymes']; ?>
</td>
</tr>
<? endif; ?>
<tr>
<td>
<?if ($coste['description']['texte'] != '') : ?>
<?=$coste['description']['texte']; ?>
<br/>
<? endif; ?>
</td>
</tr>
<?if ($coste['description']['ecologie'] != '') : ?>
<tr>
<td>
<span class="titre">Écologie </span>
<?=$coste['description']['ecologie']; ?>
</td>
</tr>
<? endif; ?>
<?if ($coste['description']['repartition'] != '') : ?>
<tr>
<td>
<span class="titre">Répartition </span>
<?=$coste['description']['repartition']; ?>
</td>
</tr>
<? endif; ?>
<?if ($coste['description']['floraison'] != '') : ?>
<tr>
<td>
<span class="titre">Floraison </span>
<?=$coste['description']['floraison']; ?>
<?if ($coste['description']['fructification'] != '') : ?>
<span class="titre">Fructification </span>
<?=$coste['description']['fructification']; ?>
<? endif; ?>
</td>
</tr>
<? endif; ?>
<?if ($coste['description']['usages'] != '') : ?>
<tr>
<td>
<span class="titre">Usages</span>
<?=$coste['description']['usages']; ?>
</td>
</tr>
<? endif; ?>
</table>
<div class="conteneur_lien_metadonnees">
<?=$coste['meta']['citation']?>
<span class="conteneur_lien_metadonnees">
<a class="lien_metadonnees lien_popup" href="<?= $coste['meta']['url']; ?>">Voir toutes les metadonnées</a>
</span>
</div>
<? else : ?>
Aucune donnée.
<? endif; ?>
</div>
<? endif; ?>
<?php if(isset($baseflor)) : ?>
<h2>Description Baseflor : </h2>
<div class="description baseflor">
<? if (!empty($baseflor)) : ?>
<table class="desc">
<tr>
<td colspan="2">
<?if ($baseflor['type_bio'] != '') : ?>
<span class="titre">Type Biologique : </span><?=$baseflor['type_bio']; ?>
<? endif; ?>
</td>
</tr>
<tr>
<td colspan="2">
<?if ($baseflor['form_vegetale'] != '') :?>
<span class="titre">Formation végétale : </span> <?=$baseflor['form_vegetale']; ?>
<? endif; ?>
</td>
</tr>
<tr>
<td colspan="2">
<?if ($baseflor['chorologie'] != '') :?>
<span class="titre">Chorologie : </span>&nbsp<?=$baseflor['chorologie']; ?>
<? endif; ?>
</td>
</tr>
<tr>
<td >
<?if ($baseflor['inflorescence'] != '') :?>
<span class="titre">Inflorescence :</span> <?=$baseflor['inflorescence'];?> <br/>
<? endif; ?>
<?if ($baseflor['fruit'] != '') :?>
<span class="titre">Fruit :</span><?=$baseflor['fruit']; ?> <br/>
<? endif; ?>
<?if ($baseflor['couleur_fleur'] != '') :?>
<span class="titre">Couleur de la fleur : </span><?=$baseflor['couleur_fleur'] ;?> <br/>
<? endif; ?>
<?if ($baseflor['macule'] != '') :?>
<span class="titre">Macule : </span><?=$baseflor['macule']; ?> <br/>
<? endif; ?>
<?if ($baseflor['floraison'] != '') :?>
<span class="titre">Floraison : </span><?=$baseflor['floraison']; ?> <br/>
<? endif; ?>
</td>
<td>
<?if ($baseflor['sexualite'] != '') :?>
<span class="titre">sexualité : </span><?=$baseflor['sexualite']; ?> <br/>
<? endif; ?>
<?if ($baseflor['ordre_maturation'] != '') :?>
<span class="titre">Ordre de maturation : </span><?=$baseflor['ordre_maturation']; ?> <br/>
<? endif; ?>
<?if ($baseflor['pollinisation'] != '') :?>
<span class="titre">Pollinisation : </span><?=$baseflor['pollinisation']; ?> <br/>
<? endif; ?>
<?if ($baseflor['dissemination'] != '') :?>
<span class="titre">Dissémination : </span><?=$baseflor['dissemination'] ;?> <br/>
<? endif; ?>
</td>
</tr>
</table>
<div class="conteneur_lien_metadonnees">
<?=$baseflor['meta']['citation']?>
<span class="conteneur_lien_metadonnees">
<a class="lien_metadonnees lien_popup " href="<?= $baseflor['meta']['url']; ?>">Voir toutes les metadonnées</a>
</span>
</div>
<? else : ?>
Aucune donnée.
<? endif; ?>
</div>
<? endif; ?>
<br />
<?php if(isset($wikini)) : ?>
<h2> Description collaborative : </h2>
<!-- TODO: cette phrase d'aide devrait être ajoutée avec javascript mais le système des onglets ajax nous en empêche -->
<div class="description baseflor">
<span class="aide_wikini"> Participez à la rédaction collaborative de cette description, un double clic dans le cadre suffit pour compléter ou corriger la page </span>
<div class="contenu_editable">
<div class="description wikini editable_sur_clic" title="description">
<?=$wikini['description']?>
</div>
</div>
</div>
<hr class="nettoyage"/>
<br />
<? endif; ?>
<?php if(isset($wp)) : ?>
<h2>Fiche wikipedia : <?=$wp['titre']?></h2>
<div class="description wp">
<a class="lien_externe" href="<?=htmlentities($wp['lien'])?>" title="voir la page de ce taxon sur wikipedia (s'ouvre dans une nouvelle fenêtre)">
<?=htmlentities($wp['lien'])?>
</a>
</div>
<? endif; ?>
<hr class="nettoyage"/>
</div>
/tags/v5.10-vilmorin/modules/fiche/squelettes/fiche_entete.tpl.html
New file
0,0 → 1,25
<script type="text/Javascript">
var ongletsDefaut = [<?= $blocs; ?>];
var base_url_application_onglets = "<?= $base_url_onglets; ?>";
</script>
<script type="text/javascript">
//<![CDATA[
var urlTexteBrutSectionWikiTpl = "<?= Config::get('texteBrutSectionWikiTpl'); ?>";
var urlEditionSectionWikiTpl = "<?= Config::get('editionSectionWikiTpl'); ?>";
var urlTexteFormateSectionWikiTpl = "<?= Config::get('texteFormateSectionWikiTpl'); ?>";
var pageWikiTaxon = "<?= strtoupper($donnees['referentiel']); ?>nt<?= $donnees['num_tax']; ?>";
var urlPopup = "<?= Config::get('base_url_application_popup'); ?>";
var urlBaseWidget = "<?= Config::get('base_url_widget'); ?>";
var urlCssImages = "<?=Config::get('url_css_images')?>";
var urlImagesOrganesMoyenFormatTpl = "<?= Illustrations::obtenirTemplateUrlImageGrandFormatOrganes('L') ?>";
var urlImagesOrganesGrandFormatTpl = "<?= Illustrations::obtenirTemplateUrlImageGrandFormatOrganes('O') ?>";
var permalienNumNom = "<?= $permalien_num_nom; ?>";
var onglet = "<?= $onglet; ?>";
//]]>
</script>
<?php if(Config::get('utiliserDictionnaire') && Config::get('utiliserDictionnaireNiveau'.$niveau)) { ?>
<script type="text/javascript" src="http://www.tela-botanica.org/commun/dictionnaire/scripts/helpers.js"></script>
<script type="text/javascript" src="http://www.tela-botanica.org/commun/dictionnaire/scripts/dictionnaire.config.js"></script>
<script type="text/javascript" src="http://www.tela-botanica.org/commun/dictionnaire/scripts/dictionnaire.js"></script>
<link media="screen" href="http://www.tela-botanica.org/commun/dictionnaire/scripts/dictionnaire.css" type="text/css" rel="stylesheet" />
<?php } ?>
/tags/v5.10-vilmorin/modules/fiche/squelettes/fiche_statut.tpl.html
New file
0,0 → 1,80
<div class="onglet_contenu" id="statut">
<h2>Statuts de protection</h2>
<?php if(!empty($statuts) && is_array($statuts)) { ?>
<?php if(isset($statuts[0])) { ?>
<table class="liste_statuts_protection">
<tr>
<th>Zone géographique</th><th>Règle appliquée</th><th>Texte</th>
</tr>
<?php if ($statuts != array()) : ?>
<?php foreach ($statuts as $index => $statut) : ?>
<?php if(is_numeric($index)) { ?>
<tr>
<td><?= $statut['zone_application']; ?></td>
<td><?= $statut['regle']; ?></td>
<td><a class="lien_externe" title="Voir le texte de loi relatif" href="<?= $statut['hyperlien_legifrance']; ?>">
<?= $statut['texte']; ?>
</a>
(<?= $statut['statut']; ?>)
</td>
</tr>
<?php } ?>
<?php endforeach; ?><?php endif; ?>
</table>
<?php } else { ?>
<table class="liste_statuts_protection largeur-11">
<tr>
<th>Zone géographique</th><th>Règle appliquée</th><th>Texte</th><th class="largeur-01">Nom</th>
</tr>
<?php if ($statuts != array()) : ?>
<?php foreach ($statuts as $za => $lois) : ?>
<?php if($za != "meta") : ?>
<?php foreach ($lois as $loi) : ?>
<tr>
<td><?= $za; ?></td>
<td><?= $loi['regle']; ?></td>
<td><?= $loi['texte']; ?> (<?= $loi['statut']; ?>)</td>
<td><i><?php foreach ($loi['nom_sci'] as $nom_sci) { echo "- ".$nom_sci."<br /><br />"; } ?></i></td>
</tr>
<?php endforeach; ?>
<?php endif; ?>
<?php endforeach; ?>
<?php endif; ?>
</table>
<?php } ?>
<div class="conteneur_lien_metadonnees">
<?=$statuts['meta']['citation']?>
<span class="conteneur_lien_metadonnees">
<a class="lien_metadonnees lien_popup" href="<?= $statuts['meta']['url']; ?>">Voir toutes les metadonnées</a>
</span>
</div>
<?php } else { ?>
<h3 class="aucune_info"> Aucun statut de protection connu </h3>
<?php } ?>
<h2>Liste rouge</h2>
<?php if(!empty($liste_rouge) && isset($liste_rouge[0])) { ?>
<ul>
<li>
<span class="infos_liste_rouge">Catégorie <?= $liste_rouge[0]['num_categorie'].' - '.$liste_rouge[0]['categorie']; ?></span> <a target="_blank" href="http://www.uicn.fr/-Aires-protegees-.html" >(Plus d'informations)</a>
</li>
</ul>
<div class="conteneur_lien_metadonnees">
<?=$liste_rouge['meta']['citation']?>
<span class="conteneur_lien_metadonnees">
<a class="lien_metadonnees lien_popup" href="<?= $liste_rouge['meta']['url']; ?>">Voir toutes les metadonnées</a>
</span>
</div>
<?php } else { ?>
<h3 class="aucune_info"> Aucune information de la liste rouge connue </h3>
<?php } ?>
 
<h2>Vos compléments sur les statuts de protection</h2>
<!-- TODO: cette phrase d'aide devrait être ajoutée avec javascript mais le système des onglets ajax nous en empêche -->
<span class="aide_wikini">Complétez nos données sur les statuts de protection, un double clic dans le cadre suffit pour compléter ou corriger la page </span>
<div class="contenu_editable">
<div class="description wikini editable_sur_clic" title="statuts de protection">
<?=$wikini['statuts_de_protection']?>
</div>
</div>
</div>
/tags/v5.10-vilmorin/modules/fiche/squelettes/fiche_ethnobotanique.tpl.html
New file
0,0 → 1,122
<div class="onglet_contenu" id="ethnobotanique">
<? if (isset($nvjfl)) : ?>
<h2>Noms communs</h2>
<?php if($nvjfl['noms'] != array()) { ?>
<table class="liste_noms_vernaculaires">
<tr>
<th>Langue</th><th>Nom</th><th>Genre et Nombre</th><th>Conseil d'emploi</th><th>Notes</th>
</tr>
<?php foreach($nvjfl['noms'] as $nom_verna) : ?>
<tr>
<td><?= $nom_verna['code_langue'] ?></td>
<td><?= $nom_verna['nom_vernaculaire'] ?></td>
<td><?= $nom_verna['genre'] ?></td>
<td><?= $nom_verna['conseil_emploi'] ?></td>
<td><?= $nom_verna['notes'] ?></td>
</tr>
<?php endforeach; ?>
<?php if($nvps['noms'] != array()) { ?>
<?php foreach($nvps['noms'] as $nom_verna) : ?>
<tr>
<td><?= $nom_verna['code_langue'] ?></td>
<td><?= $nom_verna['nom_vernaculaire'] ?></td>
<td><?= $nom_verna['genre'] ?></td>
<td></td>
<td><?= $nom_verna['notes'] ?></td>
</tr>
<?php endforeach; ?>
<?php } ?>
</table>
<?php } else { ?>
<h3 class="aucune_info">Aucun nom vernaculaire référencé</h3>
<?php } ?>
<div class="conteneur_lien_metadonnees">
<?=$nvjfl['meta']['citation']?>
<span class="conteneur_lien_metadonnees">
<a class="lien_metadonnees lien_popup" href="<?=$nvjfl['meta']['url']; ?>">Voir toutes les metadonnées</a>
</span>
</div><div class="conteneur_lien_metadonnees">
<?=$nvps['meta']['citation']?>
<span class="conteneur_lien_metadonnees">
<a class="lien_metadonnees lien_popup" href="<?=$nvps['meta']['url']; ?>">Voir toutes les metadonnées</a>
</span>
</div>
<? endif ; ?>
<? if (isset($nva)) : ?>
<h2>Noms communs</h2>
<?php if($nva['noms'] != array()) { ?>
<table class="liste_noms_vernaculaires">
<tr>
<th>Langue</th><th>Nom</th>
</tr>
<?php foreach($nva['noms'] as $nom_verna) : ?>
<tr>
<td><?= $nom_verna['code_langue'] ?></td>
<td><?= $nom_verna['nom_vernaculaire'] ?></td>
</tr>
<?php endforeach; ?>
</table>
<?php } else { ?>
<h3 class="aucune_info">Aucun nom vernaculaire référencé</h3>
<?php } ?>
<div class="conteneur_lien_metadonnees">
<?=$nva['meta']['citation']?>
<span class="conteneur_lien_metadonnees">
<a class="lien_metadonnees lien_popup" href="<?=$nva['meta']['url']; ?>">Voir toutes les metadonnées</a>
</span>
</div>
<? endif ; ?>
<!-- TODO: cette phrase d'aide devrait être ajoutée avec javascript mais le système des onglets ajax nous en empêche -->
<span class="aide_wikini">Proposez vos noms communs et vos étymologies</span>
<div class="contenu_editable">
<div class="description wikini editable_sur_clic" title="noms communs">
<?=$wikini['noms_communs']?>
</div>
</div>
<h2>Statuts</h2>
<?php if($chorologie['donnees']) { ?>
<table class="liste_statuts">
<tr>
<th></th>
<?php foreach($chorologie['colonnes'] as $colonne) : ?>
<th><?= $colonne ?></th>
<?php endforeach; ?>
</tr>
<?php foreach($chorologie['donnees'] as $type => $donnee) : ?>
<tr>
<td><?= $type ?></td>
<?php foreach($chorologie['colonnes'] as $colonne) : ?>
<td><?= (isset($donnee[$colonne])) ? $donnee[$colonne] : '' ?></td>
<?php endforeach; ?>
</tr>
<?php endforeach; ?>
</table>
<?php } else { ?>
<h3 class="aucune_info">Aucun statut référencé</h3>
<?php } ?>
<div class="conteneur_lien_metadonnees">
<?= $chorologie['meta']['citation']?>
<span class="conteneur_lien_metadonnees">
<a class="lien_metadonnees lien_popup" href="<?= $chorologie['meta']['url']; ?>">Voir toutes les metadonnées</a>
</span>
</div>
<h2> Usage :</h2>
<!-- TODO: cette phrase d'aide devrait être ajoutée avec javascript mais le système des onglets ajax nous en empêche -->
<span class="aide_wikini"> Participez à la rédaction de ces données ethnobota, un double clic dans le cadre suffit pour compléter ou corriger la page </span>
<div class="contenu_editable">
<div class="description wikini editable_sur_clic" title="usage">
<?=$wikini['usage']?>
</div>
</div>
<h2> Culture et arts :</h2>
<!-- TODO: cette phrase d'aide devrait être ajoutée avec javascript mais le système des onglets ajax nous en empêche -->
<span class="aide_wikini"> Participez à la rédaction de ces données ethnobota, un double clic dans le cadre suffit pour compléter ou corriger la page </span>
<div class="contenu_editable">
<div class="description wikini editable_sur_clic" title="culture et arts">
<?=$wikini['culture_et_arts']?>
</div>
</div>
</div>
/tags/v5.10-vilmorin/modules/fiche/squelettes/fiche_ecologie.tpl.html
New file
0,0 → 1,246
<div class="onglet_contenu" id="ecologie">
<?php if(isset($baseflor)) : ?>
<h2>Optimum écologique</h2>
<? if (!isset($baseflor['aucune'])) : ?>
<div class="fond_graphique">
<div class="bloc_graph">
<? if (isset($baseflor['climat_url'])) :?>
<span class="titre">caractéristiques climatiques</span>
<div class="graphique">
<object class="ecologie_svg" type="image/svg+xml" data="<?=$baseflor['climat_url']?>" class="svg" alt="<?=$baseflor['climat_url_png']?>">
</object>
</div>
<button class="voir"> voir la légende </button>
<button class="cacher">masquer la légende </button>
<br/>
<div class="legende_graphique">
<table>
<tr>
<td class="largeur-02" >
<span class="titre">Lumière </span>
</td>
<td>
<? foreach ($baseflor['legende']['VEL'] as $code => $infos ) : ?>
<?=$code ?> : <?=$infos['nom'] ?>
<? endforeach; ?>
</td>
</tr>
<tr>
<td>
<span class="titre">Température </span>
</td>
<td>
<? foreach ($baseflor['legende']['VET'] as $code => $infos ) : ?>
<?=$code ?> : <?=$infos['nom'] ?>
<? endforeach; ?>
</td>
</tr>
<tr>
<td>
<span class="titre">Humidité atmosphérique </span>
</td>
<td>
<? foreach ($baseflor['legende']['VEHA'] as $code => $infos ) : ?>
<?=$code ?> : <?=$infos['nom'] ?>
<? endforeach; ?>
</td>
</tr>
<tr>
<td>
<span class="titre">Continentalité </span>
</td>
<td>
<? foreach ($baseflor['legende']['VEC'] as $code => $infos ) : ?>
<?=$code ?> : <?=$infos['nom'] ?>
<? endforeach; ?>
</td>
</tr>
</table>
</div>
<? endif; ?>
</div>
<br /><br />
<div class="bloc_graph">
<? if (isset($baseflor['sol_url'])) : ?>
<span class="titre">caractéristiques du sol</span>
<div class="graphique">
<object class="ecologie_svg" type="image/svg+xml" data="<?=$baseflor['sol_url']?>" class="svg" alt="<?=$baseflor['sol_url_png']?>">
</object>
</div>
<div class="legende_formes">
</div>
<button class="voir"> voir la légende </button>
<button class="cacher">masquer la légende </button>
<br/>
<div class="legende_graphique">
<table>
<tr>
<td class="largeur-02">
<span class="titre"> Réaction (pH) </span>
</td>
<td>
<? foreach ($baseflor['legende']['VER'] as $code => $infos ) : ?>
<?=$code ?> : <?=$infos['nom'] ?>
<? endforeach; ?>
</td>
</tr>
<tr>
<td>
<span class="titre"> Humidité </span>
</td>
<td>
<? foreach ($baseflor['legende']['VEHE'] as $code => $infos ) : ?>
<?=$code ?> : <?=$infos['nom'] ?>
<? endforeach; ?>
</td>
</tr>
<tr>
<td>
<span class="titre"> Texture </span>
</td>
<td>
<? foreach ($baseflor['legende']['VETX'] as $code => $infos ) : ?>
<?=$code ?> : <?=$infos['nom'] ?>
<? endforeach; ?>
</td>
</tr>
<tr>
<td>
<span class="titre"> Nutriments </span>
</td>
<td>
<? foreach ($baseflor['legende']['VEN'] as $code => $infos ) : ?>
<?=$code ?> : <?=$infos['nom'] ?>
<? endforeach; ?>
</td>
</tr>
<tr>
<td>
<span class="titre"> Salinité </span>
</td>
<td>
<? foreach ($baseflor['legende']['VES'] as $code => $infos ) : ?>
<?=$code ?> : <?=$infos['nom'] ?>
<? endforeach; ?>
</td>
</tr>
<tr>
<td>
<span class="titre"> Matière Organique </span>
</td>
<td>
<? foreach ($baseflor['legende']['VEMO'] as $code => $infos ) : ?>
<?=$code ?> : <?=$infos['nom'] ?>
<? endforeach; ?>
</td>
</tr>
</table>
</div>
<? endif; ?>
</div>
</div>
<div class="conteneur_lien_metadonnees">
<?=$baseflor['meta']['citation']?>
<span class="conteneur_lien_metadonnees">
<a class="lien_metadonnees lien_popup " href="<?= $baseflor['meta']['url']; ?>">Voir toutes les metadonnées</a>
</span>
</div>
<?else : ?>
<?=$baseflor['aucune']?>
<br />
<? endif; ?>
<? endif; ?>
<?php if(isset($baseflor)) : ?>
<h2>Phytosociologie</h2>
<? if (isset($baseveg['syntaxons-sup']) || isset($baseveg['syntaxons-sup'])) : ?>
<br/>
Le code catminat de ce taxon est
<span class="gras">
<a href="http://eveg.fr/index.php?catminat='<?=$baseveg['baseflor']['catminat'] ?>'" target="_blank" title="Voir le détail sur eVeg">
<?=$baseveg['baseflor']['catminat'] ?>
</a>
</span> </br>
Il est caractéristique du syntaxon de niveau <span class="gras"><?=$baseveg['syntaxon-courant'][0]['niveau.libelle']?></span> présenté
dans le tableau ci-dessous avec ses niveaux supérieurs. [ <a href="http://philippe.julve.pagesperso-orange.fr/catminat.htm" target="_blank">Voir le site Catminat pour en savoir plus.</a> ]
<table>
<?php foreach ($baseveg['syntaxons-sup'] as $cle => $valeurs ) : ?>
<tr>
<td>
<span class="gras">
<a href="http://eveg.fr/index.php?catminat='<?=$valeurs['code_catminat'] ?>'" target="_blank" title="Voir le détail sur eVeg">
<?=$valeurs['code_catminat']?>
</a>
</span></br>
<?=$valeurs['niveau.libelle']?>
</td>
<td>
<span class="gras"><?=$valeurs['syntaxon']?></span> </br>
<span ><?=$valeurs['physio_biotype']?></span> </br>
<?= !empty($valeurs['repartition_france']) ? 'répartition : '.$valeurs['repartition_france'] : '' ?>
</td>
<td>
<a class="lien_popup" href="<?=$baseveg['ref']['lien-liste-fancy'][$valeurs['code_catminat']]?>">Réf.</a> </br>
<a class="lien_popup" href="<?=$baseveg['synonymes']['lien-liste-fancy'][$valeurs['code_catminat']]?>">Syn.</a> </br>
<a class="lien_popup" href="<?=$baseveg['taxons']['lien-liste-fancy'][$valeurs['code_catminat']]?>">Taxons</a>
</td>
</tr>
<? endforeach; ?>
<tr class="surlignage">
<td>
<span class="gras">
<a href="http://eveg.fr/index.php?catminat='<?=$baseveg['syntaxon-courant'][0]['code_catminat'] ?>'" target="_blank" title="Voir le détail sur eVeg">
<?=$baseveg['syntaxon-courant'][0]['code_catminat']?>
</a>
</span><br/>
<?=$baseveg['syntaxon-courant'][0]['niveau.libelle']?>
</td>
<td>
<span class="gras"><?=$baseveg['syntaxon-courant'][0]['syntaxon']?></span> </br>
<span ><?=$baseveg['syntaxon-courant'][0]['physio_biotype']?></span> </br>
<?= !empty($baseveg['syntaxon-courant'][0]['repartition_france']) ? 'rép.'.$baseveg['syntaxon-courant'][0]['repartition_france'] : ''?>
</td>
<td>
<a class="lien_popup" href="<?=$baseveg['ref']['lien-liste-fancy'][$baseveg['syntaxon-courant'][0]['code_catminat']]?>">Réf.</a> </br>
<a class="lien_popup" href="<?=$baseveg['synonymes']['lien-liste-fancy'][$baseveg['syntaxon-courant'][0]['code_catminat']]?>">Syn.</a></br>
<a class="lien_popup" href="<?=$baseveg['baseflor']['lien-liste-fancy']?>">Taxons</a>
</td>
</tr>
</table>
<div class="conteneur_lien_metadonnees">
<?=$baseveg['meta']['citation']?>
<span class="conteneur_lien_metadonnees">
<a class="lien_metadonnees lien_popup " href="<?= $baseveg['meta']['url']; ?>">Voir toutes les metadonnées</a>
</span>
</div>
<? else : ?>
Aucune donnée.
<? endif; ?>
<br/>
<?php endif; ?>
 
<br/>
<br/>
<h2>Vos compléments sur l'écologie</h2>
<!-- TODO: cette phrase d'aide devrait être ajoutée avec javascript mais le système des onglets ajax nous en empêche -->
<span class="aide_wikini"> Participez à la rédaction collaborative, un double clic dans le cadre suffit pour compléter ou corriger la page </span>
<div class="contenu_editable">
<div class="description wikini editable_sur_clic" title="ecologie">
<?=$wikini['ecologie']?>
</div>
</div>
</div>
/tags/v5.10-vilmorin/modules/fiche/squelettes/fiche_synthese_niveau1.tpl.html
New file
0,0 → 1,440
<!-- Fichier débutant -->
<!-- Variables js communes injectées dans fiche_entete.tpl.tml -->
<? $url = htmlentities('?referentiel='.Registre::get('parametres.referentiel').'&niveau='.Registre::get('parametres.niveau').'&module=fiche&num_nom='.$num_nom.'&type_nom='.$type_nom.'&nom='.$nom.'&onglet=');?>
<div class="synthese onglet_contenu" id="synthese">
<div class="colonne deuxtiers">
<!-- Description -->
<div id="synthese_description" class="module ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
<h3 class="titre ui-widget-header ui-corner-all" id="titre-1">
<a class="titreOnglet lien-onglet-synthese" href="<?=$url;?>description"><?=$i18n["onglet-nom-descr"]?></a>
</h3>
<div id="contenu-1" class="contenu">
<h4><?= $description['titre']?></h4>
<? if ($description['description'] != '') : ?>
<? if($description['type'] == 'baseflor') : ?>
<table class="desc">
<tr>
<td colspan="2">
<?if ($description['description']['type_bio'] != '') : ?>
<span class="titre">Type Biologique :</span> <?=$description['description']['type_bio']; ?><br/>
<? endif; ?>
</td>
</tr>
<tr>
<td colspan="2">
<? if ($description['description']['form_vegetale'] != '') : ?>
<span class="titre">Formation végétale :</span> <?=$description['description']['form_vegetale']; ?><br/>
<? endif; ?>
</td>
</tr>
<tr>
<td colspan="2">
<? if ($description['description']['chorologie'] != ''): ?>
<span class="titre">Chorologie : </span> <?=$description['description']['chorologie']; ?><br/>
<? endif; ?>
</td>
</tr>
<tr>
<td >
<? if ($description['description']['inflorescence'] != '') : ?>
<span class="titre">Inflorescence :</span> <?=$description['description']['inflorescence']; ?><br/>
<? endif; ?>
<? if ($description['description']['fruit'] != '') : ?>
<span class="titre">Fruit :</span> <?=$description['description']['fruit']; ?><br/>
<? endif; ?>
<? if ($description['description']['couleur_fleur'] != '') : ?>
<span class="titre">Couleur de la fleur : </span> <?=$description['description']['couleur_fleur']; ?><br/>
<? endif; ?>
<? if ($description['description']['macule'] != '') : ?>
<span class="titre">Macule :</span> <?=$description['description']['macule']; ?><br/>
<? endif; ?>
<? if ($description['description']['floraison'] != '') : ?>
<span class="titre">Floraison :</span> <?=$description['description']['floraison']; ?><br/>
<? endif; ?>
</td>
<td>
<? if ($description['description']['sexualite'] != '') : ?>
<span class="titre">Sexualité : </span> <?=$description['description']['sexualite']; ?><br/>
<? endif; ?>
<?if ($description['description']['ordre_maturation'] != '') : ?>
<span class="titre">Ordre de maturation : </span> <?=$description['description']['ordre_maturation']; ?><br/>
<? endif; ?>
<? if ($description['description']['pollinisation'] != '') : ?>
<span class="titre">Pollinisation : </span> <?=$description['description']['pollinisation']; ?><br/>
<? endif; ?>
<? if ($description['description']['dissemination'] != '') : ?>
<span class="titre">Dissémination : </span><?=$description['description']['dissemination']; ?><br/>
<? endif; ?>
</td>
</tr>
</table>
<? elseif($description['titre'] == 'Description de Coste') : ?>
<table class="desc">
<tr>
<td>
<?if ($description['description']['nom_scientifique'] != '') : ?>
<span class="gras">
<?=$description['description']['nom_scientifique']; ?>
</span>
<? endif; ?>
<?if ($description['description']['nom_commun'] != '') : ?>
<span class="italique">
<?=$description['description']['nom_commun']; ?>
</span>
<? endif; ?>
</td>
</tr>
<?if (@$description['description']['synonymes'] != '') : ?>
<tr>
<td>
<span class="titre">Synonymes </span>
<?=$description['description']['synonymes']; ?>
</td>
</tr>
<? endif; ?>
<tr>
<td>
<?if ($description['description']['texte'] != '') : ?>
<?=$description['description']['texte']; ?>
<br/>
<? endif; ?>
</td>
</tr>
<?if ($description['description']['ecologie'] != '') : ?>
<tr>
<td>
<span class="titre">Écologie </span>
<?=$description['description']['ecologie']; ?>
</td>
</tr>
<? endif; ?>
<?if ($description['description']['repartition'] != '') : ?>
<tr>
<td>
<span class="titre">Répartition </span>
<?=$description['description']['repartition']; ?>
</td>
</tr>
<? endif; ?>
<?if (@$description['description']['floraison'] != '') : ?>
<tr>
<td>
<span class="titre">Floraison </span>
<?=$description['description']['floraison']; ?>
<?if ($description['description']['fructification'] != '') : ?>
<span class="titre">Fructification </span>
<?=$description['description']['fructification']; ?>
<? endif; ?>
</td>
</tr>
<? endif; ?>
<?if (@$description['description']['usages'] != '') : ?>
<tr>
<td>
<span class="titre">Usages</span>
<?=$description['description']['usages']; ?>
</td>
</tr>
<? endif; ?>
</table>
<? else : ?>
<?=$description['description'];?>
<? endif;?>
<? endif;?>
<a href="<?=$url;?>description" class="lien_ouverture_onglet_parent" id="alignement-droite">
Voir +/Compléter
</a>
</div>
</div>
<!-- Ethnobotanique -->
<div id="synthese_ethnobotanique" class="module ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
<h3 class="titre ui-widget-header ui-corner-all" id="titre-4">
<a class="titreOnglet lien-onglet-synthese" href="<?=$url;?>ethnobotanique"><?=$i18n["onglet-nom-ethnobota"]?></a>
</h3>
<div id="contenu-4" class="contenu">
<h4>Noms communs</h4>
<?php if ($ethnobotanique['nomsVerna'] == array()) { ?>
Aucun nom vernaculaire<br /><br />
<? if ($ethnobotanique['wikini']['noms_communs'] == '') {?>
<a href="<?=$url;?>ethnobotanique" class="lien_ouverture_onglet_parent" >
Rajouter vos données.
</a>
<? } else { echo $ethnobotanique['wikini']['noms_communs']; } ?>
<?php } else { ?>
<?php foreach ($ethnobotanique['nomsVerna'] as $nom_verna) : ?>
<div> - <?= $nom_verna['nom_vernaculaire'].' ('.$nom_verna['code_langue'].')'; ?> </div>
<?php endforeach; ?>
<?php if($ethnobotanique['autresNomsVerna'] > 0) { ?>
<a href="<?=$url;?>ethnobotanique" class="lien_ouverture_onglet_parent" id="alignement-droite">
et <?= $ethnobotanique['autresNomsVerna'] ?>
autre<?= ($ethnobotanique['autresNomsVerna'] > 1) ? 's' : '' ?>
nom<?= ($ethnobotanique['autresNomsVerna'] > 1) ? 's' : '' ?>
</a><br />
<?php }?>
<?php }?>
<h4>Usages</h4>
<? if ($ethnobotanique['wikini']['usage'] == '') {?>
<a href="<?=$url;?>ethnobotanique" class="lien_ouverture_onglet_parent" >
Rajouter vos données.
</a>
<? } else { echo $ethnobotanique['wikini']['usage'];} ?>
<h4>Culture et arts</h4>
<? if ($ethnobotanique['wikini']['culture_et_arts'] == '') {?>
<a href="<?=$url;?>ethnobotanique" class="lien_ouverture_onglet_parent" >
Rajouter vos données.
</a>
<? } else { echo $ethnobotanique['wikini']['culture_et_arts']; } ?>
<br />
<a href="<?=$url;?>ethnobotanique" class="lien_ouverture_onglet_parent" id="alignement-droite">
Voir +/Compléter
</a>
</div>
</div>
<!-- Ecologie -->
<div id="synthese_ecologie" class="module ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
<h3 class="titre ui-widget-header ui-corner-all" id="titre-8">
<a class="titreOnglet lien-onglet-synthese" href="<?=$url;?>ecologie"><?=$i18n["onglet-nom-eco"]?></a>
</h3>
<div id="contenu-8" class="contenu">
<h4><?= $ecologie['graph']['titre'] ?></h4>
<? if (empty($ecologie['graph']['description'])) : ?>
<? if ($ecologie['graph']['wikini']['ecologie'] == '') :?>
<a href="<?=$url;?>statut" class="lien_ouverture_onglet_parent" >
Rajouter vos données.
</a>
<? else : echo $ecologie['graph']['wikini']['ecologie'];?>
<? endif; ?>
<? else : ?>
<div class="fond_graphique">
<? if (isset($ecologie['graph']['description']['climat_url'])) :?>
<span class="titre">caractéristiques climatiques</span>
<div class="graphique">
<object type="image/svg+xml" data="<?=$ecologie['graph']['description']['climat_url']?>"
class="svg" alt="<?=$ecologie['graph']['description']['climat_url_png']?>" >
</object>
</div>
<? endif; ?>
<? if (isset($ecologie['graph']['description']['sol_url'])) :?>
<span class="titre">caractéristiques du sol</span>
<div class="graphique">
<object type="image/svg+xml" data="<?=$ecologie['graph']['description']['sol_url']?>"
class="svg" class="svg" alt="<?=$ecologie['graph']['description']['sol_url_png']?>" > >
</object>
</div>
<? endif; ?>
<a href="<?=$url;?>ecologie" class="lien_ouverture_onglet_parent">
Voir les références
</a>
</div>
<? endif; ?>
<? if (!empty($ecologie['phytosocio']['description'])) : ?>
<h4>Phytosociologie</h4>
<span class="gras">
<?=$ecologie['phytosocio']['description'][0]['niveau.libelle']?> -
<?=$ecologie['phytosocio']['description'][0]['code_catminat']?>
</span> <br/>
<?=$ecologie['phytosocio']['description'][0]['syntaxon']?> -
<span class="italique">
<?=$ecologie['phytosocio']['description'][0]['physio_biotype']?>
</span>
<? endif; ?>
<br/>
<a href="<?=$url;?>ecologie" class="lien_ouverture_onglet_parent" id="alignement-droite">
Voir +/Compléter
</a>
</div>
</div>
<!-- Nomenclature -->
<div id="synthese_nomenclature" class="module ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
<h3 class="titre ui-widget-header ui-corner-all" id="titre-6">
<a class="titreOnglet lien-onglet-synthese" href="<?=$url;?>nomenclature"><?=$i18n["onglet-nom-classif"]?></a>
</h3>
<div id="contenu-6" class="contenu">
<h4>Taxons supérieurs</h4>
<?php if($nomenclature['taxons_sup'] != array()) { ?>
<?php foreach($nomenclature['taxons_sup'] as $taxon) : ?>
<div>
<a title="Voir la fiche de ce nom" href="<?= $nomenclature['urls']->obtenirUrlFiche($taxon['num_nom'],'nom_scientifique', $taxon['nom_sci']); ?>">
<?= $taxon['rang.libelle']; ?> : <?= $taxon['nom_sci']; ?>
</a>
</div>
<?php endforeach; ?>
<?php } else { ?>
<div>Aucun taxon supérieur référencé </div>
<?php } ?>
<h4>Nom retenu</h4>
<div>
<div class="nom retenu <?= ($nomenclature['nom_selectionne'] == $nomenclature['nom_retenu_formate']) ? 'surlignage' : '' ?>">
<?= $nomenclature['nom_retenu_formate']; ?>
</div>
<?php if($nomenclature['basionyme_nom_retenu'] != '') { ?>
<div class="nom"> <span class="nomenclature_basionyme">Basionyme</span> : <?= $nomenclature['basionyme_nom_retenu']; ?></div>
<?php } ?>
</div>
<h4>Synonymes</h4>
<?php if($nomenclature['synonymes'] == array()) { ?>
Aucun synonyme
<? } else { ?>
<?php foreach (@$nomenclature['synonymes'] as $synonyme) : ?>
<div class="nomenclature_synonyme nom<?= ($nomenclature['nom_selectionne'] == $synonyme['nom_sci_complet']) ? ' surlignage' : '' ?>">
<?= $synonyme['nom_sci_complet']; ?>
</div>
<?php endforeach; ?>
<?php if($nomenclature['autresSynonymesNbre'] > 0) { ?>
<a href="<?=$url;?>nomenclature" style="float:right;" class="lien_ouverture_onglet_parent" >et
<?= $nomenclature['autresSynonymesNbre'] ?>
autre<?= ($nomenclature['autresSynonymesNbre'] > 1) ? 's' : '' ?>
synonyme<?= ($nomenclature['autresSynonymesNbre'] > 1) ? 's' : '' ?>
</a>
<?php }} ?>
<h4>Taxons inférieurs</h4>
<?php if($nomenclature['taxons_inf'] != array()) { ?>
<?php foreach($nomenclature['taxons_inf'] as $taxon) : ?>
<div>
<a title="Voir la fiche de ce nom" href="<?= $nomenclature['urls']->obtenirUrlFiche($taxon['num_nom'],'nom_scientifique', $taxon['nom_sci']); ?>">
<?= $taxon['rang.libelle']; ?> : <?= $taxon['nom_sci']; ?>
</a>
</div>
<?php endforeach; ?>
<?php } else { ?>
<div>Aucun taxon inférieur référencé </div>
<?php } ?>
<a href="<?=$url;?>nomenclature" class="lien_ouverture_onglet_parent" id="alignement-droite">
Voir +/Compléter
</a>
</div>
</div>
<!-- Bibliographie -->
<div id="synthese_bibliographie" class="module ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
<h3 class="titre ui-widget-header ui-corner-all" id="titre-2">
<a class="titreOnglet lien-onglet-synthese" href="<?=$url;?>bibliographie"><?=$i18n["onglet-nom-biblio"]?></a>
</h3>
<div id="contenu-2" class="contenu">
<?php if (isset($bibliographie['wikini'])) { ?>
<?= ($bibliographie['wikini']['biblio'] == '') ?
'<a href="'.$url.'description" class="lien_ouverture_onglet_parent" >
Ajoutez votre bibliographie sur ce taxon</a>'
: $bibliographie['wikini']['biblio'].
'<br /><br /><a href="'.$url.'description" class="lien_ouverture_onglet_parent" >
Rajouter vos données.</a>'; ?>
<?php } else { ?>
<h4>Références</h4>
<?php if ($bibliographie['references'] == array()) { ?>
Aucune référence bibliographique
<?php } else { ?>
<?php foreach ($bibliographie['references'] as $reference) : ?>
<div> - <?= $reference['reference_html']; ?> </div>
<?php endforeach; ?>
<?php if($bibliographie['autresReferences'] > 0) { ?>
<a href="<?=$url;?>nomenclature" class="lien_ouverture_onglet_parent" id=alignement-droite>
et <?= $bibliographie['autresReferences'] ?>
autre<?= ($bibliographie['autresReferences'] > 1) ? 's' : '' ?>
référence<?= ($bibliographie['autresReferences'] > 1) ? 's' : '' ?>
</a>
<?php } } ?>
<?php }?>
<hr class="nettoyage" />
<a href="<?=$url;?>bibliographie" class="lien_ouverture_onglet_parent" id=alignement-droite>
Voir +/Compléter
</a>
</div>
</div>
</div>
<div class="colonne">
<!-- Illustrations -->
<div id="synthese_illustrations" class="module ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
<h3 class="titre ui-widget-header ui-corner-all" id="titre-0">
<a class="titreOnglet lien-onglet-synthese" href="<?=$url;?>illustrations"><?=$i18n["onglet-nom-illustra"]?></a>
</h3>
<div id="contenu-0" class="contenu">
<?php if (empty($illustrations['imageUrl']) == false) : ?>
<img class="illustration_cel" data-num-nom="<?= $num_nom; ?>" title="<?= $infos['nom_sci'] . ($nom_vernaculaire != '' ? ' ('.$nom_vernaculaire.')' : '') ?>"
src="<?=$illustrations['imageUrl']?>" alt="<?= $infos['nom_sci'] . ($nom_vernaculaire != '' ? ' ('.$nom_vernaculaire.')' : '') ?>"
style="margin-bottom: 0px; margin-left: -2px; width: 210px;"/>
<?php else : ?>
<span class="absent" style="float:none; margin-left:55px">
Pas de photo<br />
<a href="http://www.tela-botanica.org/page:cel"
title="Ajouter une photographie de <?= $nom_retenu ?> au moyen du Carnet en Ligne"
onclick="window.open(this.href); return false;" class="contribuer">
Contribuer
</a>
</span>
<?php endif; ?> <br />
<a href="<?=$url;?>illustrations" class="lien_ouverture_onglet_parent" id="alignement-droite">
Voir +/Compléter
</a>
</div>
</div>
<!-- Répartition -->
<div id="synthese_repartition" class="module ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
<h3 class="titre ui-widget-header ui-corner-all" id="titre-3">
<a class="titreOnglet lien-onglet-synthese" href="<?=$url;?>repartition"><?=$i18n["onglet-nom-repart"]?></a>
</h3>
<div id="contenu-3" class="contenu">
<? if ($referentiel != "bdtxa" && $repartition['eflore'] != null) : ?>
<h4>Observations</h4>
<img src="<?=htmlentities($repartition['eflore'])?>" alt="<?= $infos['nom_sci'] ?> - carte des observations" style="margin-left: 11px; width: 190px;" />
<? endif; ?>
<? if ($repartition['chorodep'] != null) : ?>
<h4>Répartition départementale</h4>
<img src="<?=htmlentities($repartition['chorodep'])?>" alt="<?= $infos['nom_sci'] ?> - carte de répartition"/>
<? endif; ?>
<br/>
<a href="<?=$url;?>repartition" class="lien_ouverture_onglet_parent" id="alignement-droite">
Voir +/Compléter
</a>
</div>
</div>
<!-- Statut de protection -->
<div id="synthese_statut" class="module ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
<h3 class="titre ui-widget-header ui-corner-all" id="titre-7">
<a class="titreOnglet lien-onglet-synthese" href="<?=$url;?>statut"><?=$i18n["onglet-nom-protect"]?></a>
</h3>
<div id="contenu-7" class="contenu <?= (isset($statut['statuts'][0]) || isset($statut['liste_rouge'][0])) ? 'attention' : ''; ?>">
<? if (!empty($statut['statuts']) && isset($statut['statuts'][0])) { ?>
Attention ce taxon est protégé dans les zones suivantes : <br />
<?php foreach($statut['statuts'] as $statut_zone) : ?>
<a href="<?=$url;?>statut" class="lien_ouverture_onglet_parent" >
<?= @$statut_zone['zone_application']; ?><br />
</a>
<?php endforeach; ?>
<? } else if (@$statut['wikini']['statuts_de_protection'] != '' ) { ?>
<?= $statut['wikini']['statuts_de_protection'];?>
<? } ?>
<? if (!empty($statut['liste_rouge']) && isset($statut['liste_rouge'][0])) { ?>
Ce taxon est classé dans la liste rouge dans la catégorie : <br />
<a href="<?=$url;?>statut" class="lien_ouverture_onglet_parent" >
<?= $statut['liste_rouge'][0][num_categorie].' - '.$statut['liste_rouge'][0][categorie]; ?><br />
</a>
<? } ?>
<? if (@$statut['wikini']['statuts_de_protection'] == '' && !isset($statut['statuts'][0]) && !isset($statut['liste_rouge'][0])) {?>
<span class="pas_de_protection">Pas de protection connue</span>
<? }?>
<br />
<a href="<?=$url;?>statut" class="lien_ouverture_onglet_parent" id="alignement-droite">
Voir +/Compléter
</a>
</div>
</div>
</div>
<hr class="nettoyage" />
<script type="text/javascript">
$.event.trigger('ongletSyntheseCharge');
</script>
</div>
/tags/v5.10-vilmorin/modules/fiche/squelettes/fiche_illustrations_organes.tpl.html
New file
0,0 → 1,78
<? if (isset($organes) && (empty($organes) == false)) : ?>
<div id="galerie-organes">
<ul class="liste-illustrations">
<?php foreach($organes as $tag => $image) : ?>
<li class="icone-organe">
<a class="lien-images-organes <? if (empty($image)) : ?>non-<? endif ?>fourni" data-tag="<?= $tag; ?>"
title="<? if (empty($image)) : ?>Aucune photo pour <? endif ?><?= $tag ?>">
<img class="icone-organe" src="<?=Config::get('url_css_images')?>icones_tags/<?= $tag; ?>.png" alt="<?= $tag ?>" />
<?= $tag; ?>
</a>
</li>
<?php endforeach; ?>
</ul>
<hr class="nettoyage" />
<div id="galerie-organes-contenu" style="display: none;">
<? foreach($organes as $tag => $image) : ?>
<div class="onglet-organe" data-tag="<?= $tag; ?>">
<?php if (empty($organes[$tag]) == false) :?>
<ul class="liste-illustrations">
<?php foreach($organes[$tag] as $image) : ?>
<li class="miniature-organe">
<?php if ($image != null) : ?>
<a class="lien-grande-image-organe"
data-id-observation="<?= $image['observation']['id_observation'] ?>"
data-url-mauvaise-ident="<?= $image['urlMauvaiseIdentification'] ?>"
data-id-image="<?= $image['id_image'] ?>" data-titre="<?= $image['observation']['determination.ns'] ?>"
data-description="<?= $image['determination.libelle'] ?>" data-localisation="<?= $image['station.libelle'] ?>"
data-auteur="<?= $image['auteur.libelle'] ?>" data-id-destinataire="<?= $image['auteur.id'] ?>"
data-date="<?= $image['date'] ?>">
<img class="miniature-organe" src="<?= $image['binaire.href']; ?>" alt="<?= $image['auteur.libelle'] . ' - ' . $image['observation']['determination.ns'] ?>" />
</a>
<?php else: ?>
<p class="absent absent-mini">
Pas de photo
<br>
<a class="contribuer" onclick="window.open(this.href); return false;"
title="Ajouter une photographie au moyen du Carnet en Ligne"
href="<?= Config::get('base_url_widget_saisie');?>?referentiel=<?= $referentiel; ?>&num_nom=<?= $nnr ?>&titre=<?= urlencode("Ajout d'une photo de ".$nomComplet); ?>">
Contribuer
</a>
</p>
<?php endif; ?>
</li>
<?php endforeach; ?>
</ul>
<hr class="nettoyage" />
<?php else: ?>
Aucune illustration pour l'organe "<?= $tag ?>"
<?php endif; ?>
</div>
<?php endforeach; ?>
<div id="grande-image-organe">
<a target="_blank" title="Voir cette image dans son format original (s'ouvre dans une nouvelle fenêtre)" href="">
<img src="" alt="Grande image" />
</a>
</div>
<div id="grande-image-legende">
<div>
<dl>
<dt>Photo n°</dt><dd id="grande-image-legende-id-image"></dd>
<dt>Titre</dt><dd id="grande-image-legende-titre"><br></dd>
<dt>Description</dt><dd id="grande-image-legende-description"><br></dd>
<dt>Localisation</dt><dd id="grande-image-legende-localisation"><br></dd>
<dt>Auteur</dt>
<dd>
<a id="grande-image-legende-auteur" href=""></a>
<a id="grande-image-legende-id-destinataire" href="" class="mailto">
<img class="icone_action_ill" src="<?=Config::get('url_css_images')?>contact.png" />
</a>
</dd>
<dt>Date d'observation</dt><dd id="grande-image-legende-date"><br></dd>
<dt>Licence</dt><dd><a href="http://www.tela-botanica.org/page:licence" class="lien-externe">CC-BY-SA</a></dd>
</dl>
</div>
</div>
</div>
</div>
<? endif ?>
/tags/v5.10-vilmorin/modules/fiche/squelettes/fiche_synthese_niveau2.tpl.html
New file
0,0 → 1,440
<!-- Fichier intermédiaire -->
<!-- Variables js commune injectée dans fiche_entete.tpl.tml -->
<? $url = htmlentities('?referentiel='.Registre::get('parametres.referentiel').'&niveau='.Registre::get('parametres.niveau').'&module=fiche&num_nom='.$num_nom.'&type_nom='.$type_nom.'&nom='.$nom.'&onglet=');?>
<div class="synthese onglet_contenu" id="synthese">
<div class="colonne deuxtiers">
<!-- Description -->
<div id="synthese_description" class="module ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
<h3 class="titre ui-widget-header ui-corner-all" id="titre-1">
<a class="titreOnglet lien-onglet-synthese" href="<?=$url;?>description"><?=$i18n["onglet-nom-descr"]?></a>
</h3>
<div id="contenu-1" class="contenu">
<h4><?= $description['titre']?></h4>
<? if ($description['description'] != '') : ?>
<? if($description['type'] == 'baseflor') : ?>
<table class="desc">
<tr>
<td colspan="2">
<?if ($description['description']['type_bio'] != '') : ?>
<span class="titre">Type Biologique :</span> <?=$description['description']['type_bio']; ?><br/>
<? endif; ?>
</td>
</tr>
<tr>
<td colspan="2">
<? if ($description['description']['form_vegetale'] != '') : ?>
<span class="titre">Formation végétale :</span> <?=$description['description']['form_vegetale']; ?><br/>
<? endif; ?>
</td>
</tr>
<tr>
<td colspan="2">
<? if ($description['description']['chorologie'] != ''): ?>
<span class="titre">Chorologie : </span> <?=$description['description']['chorologie']; ?><br/>
<? endif; ?>
</td>
</tr>
<tr>
<td >
<? if ($description['description']['inflorescence'] != '') : ?>
<span class="titre">Inflorescence :</span> <?=$description['description']['inflorescence']; ?><br/>
<? endif; ?>
<? if ($description['description']['fruit'] != '') : ?>
<span class="titre">Fruit :</span> <?=$description['description']['fruit']; ?><br/>
<? endif; ?>
<? if ($description['description']['couleur_fleur'] != '') : ?>
<span class="titre">Couleur de la fleur : </span> <?=$description['description']['couleur_fleur']; ?><br/>
<? endif; ?>
<? if ($description['description']['macule'] != '') : ?>
<span class="titre">Macule :</span> <?=$description['description']['macule']; ?><br/>
<? endif; ?>
<? if ($description['description']['floraison'] != '') : ?>
<span class="titre">Floraison :</span> <?=$description['description']['floraison']; ?><br/>
<? endif; ?>
</td>
<td>
<? if ($description['description']['sexualite'] != '') : ?>
<span class="titre">Sexualité : </span> <?=$description['description']['sexualite']; ?><br/>
<? endif; ?>
<?if ($description['description']['ordre_maturation'] != '') : ?>
<span class="titre">Ordre de maturation : </span> <?=$description['description']['ordre_maturation']; ?><br/>
<? endif; ?>
<? if ($description['description']['pollinisation'] != '') : ?>
<span class="titre">Pollinisation : </span> <?=$description['description']['pollinisation']; ?><br/>
<? endif; ?>
<? if ($description['description']['dissemination'] != '') : ?>
<span class="titre">Dissémination : </span><?=$description['description']['dissemination']; ?><br/>
<? endif; ?>
</td>
</tr>
</table>
<? elseif($description['titre'] == 'Description de Coste') : ?>
<table class="desc">
<tr>
<td>
<?if ($description['description']['nom_scientifique'] != '') : ?>
<span class="gras">
<?=$description['description']['nom_scientifique']; ?>
</span>
<? endif; ?>
<?if ($description['description']['nom_commun'] != '') : ?>
<span class="italique">
<?=$description['description']['nom_commun']; ?>
</span>
<? endif; ?>
</td>
</tr>
<?if ($description['description']['synonymes'] != '') : ?>
<tr>
<td>
<span class="titre">Synonymes </span>
<?=$description['description']['synonymes']; ?>
</td>
</tr>
<? endif; ?>
<tr>
<td>
<?if ($description['description']['texte'] != '') : ?>
<?=$description['description']['texte']; ?>
<br/>
<? endif; ?>
</td>
</tr>
<?if ($description['description']['ecologie'] != '') : ?>
<tr>
<td>
<span class="titre">Écologie </span>
<?=$description['description']['ecologie']; ?>
</td>
</tr>
<? endif; ?>
<?if ($description['description']['repartition'] != '') : ?>
<tr>
<td>
<span class="titre">Répartition </span>
<?=$description['description']['repartition']; ?>
</td>
</tr>
<? endif; ?>
<?if ($description['description']['floraison'] != '') : ?>
<tr>
<td>
<span class="titre">Floraison </span>
<?=$description['description']['floraison']; ?>
<?if ($description['description']['fructification'] != '') : ?>
<span class="titre">Fructification </span>
<?=$description['description']['fructification']; ?>
<? endif; ?>
</td>
</tr>
<? endif; ?>
<?if ($description['description']['usages'] != '') : ?>
<tr>
<td>
<span class="titre">Usages</span>
<?=$description['description']['usages']; ?>
</td>
</tr>
<? endif; ?>
</table>
<? else : ?>
<?=$description['description']?>
<? endif;?>
<? endif;?><br />
<a href="<?=$url;?>description" class="lien_ouverture_onglet_parent" id="alignement-droite">
Voir +/Compléter
</a>
</div>
</div>
<!-- Ethnobotanique -->
<div id="synthese_ethnobotanique" class="module ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
<h3 class="titre ui-widget-header ui-corner-all" id="titre-4">
<a class="titreOnglet lien-onglet-synthese" href="<?=$url;?>ethnobotanique"><?=$i18n["onglet-nom-ethnobota"]?></a>
</h3>
<div id="contenu-4" class="contenu">
<h4>Noms communs</h4>
<?php if ($ethnobotanique['nomsVerna'] == array()) { ?>
Aucun nom vernaculaire<br /><br />
<? if ($ethnobotanique['wikini']['noms_communs'] == '') {?>
<a href="<?=$url;?>ethnobotanique" class="lien_ouverture_onglet_parent" >
Rajouter vos informations.
</a>
<? } else { echo $ethnobotanique['wikini']['noms_communs'];} ?>
<?php } else { ?>
<?php foreach ($ethnobotanique['nomsVerna'] as $nom_verna) : ?>
<div> - <?= $nom_verna['nom_vernaculaire'].' ('.$nom_verna['code_langue'].')'; ?> </div>
<?php endforeach; ?>
<?php if($ethnobotanique['autresNomsVerna'] > 0) { ?>
<a href="<?=$url;?>ethnobotanique" class="lien_ouverture_onglet_parent" id="alignement-droite">
et <?= $ethnobotanique['autresNomsVerna'] ?>
autre<?= ($ethnobotanique['autresNomsVerna'] > 1) ? 's' : '' ?>
nom<?= ($ethnobotanique['autresNomsVerna'] > 1) ? 's' : '' ?>
</a><br />
<?php }?>
<?php }?>
<h4>Usages</h4>
<? if ($ethnobotanique['wikini']['usage'] == '') {?>
<a href="<?=$url;?>ethnobotanique" class="lien_ouverture_onglet_parent" >
Rajouter vos informations.
</a>
<? } else { echo $ethnobotanique['wikini']['usage']; } ?>
<h4>Culture et arts</h4>
<? if ($ethnobotanique['wikini']['culture_et_arts'] == '') {?>
<a href="<?=$url;?>ethnobotanique" class="lien_ouverture_onglet_parent" >
Rajouter vos informations.
</a>
<? } else { echo $ethnobotanique['wikini']['culture_et_arts']; } ?>
<br />
<a href="<?=$url;?>ethnobotanique" class="lien_ouverture_onglet_parent" id="alignement-droite">
Voir +/Compléter
</a>
</div>
</div>
<!-- Ecologie -->
<div id="synthese_ecologie" class="module ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
<h3 class="titre ui-widget-header ui-corner-all" id="titre-8">
<a class="titreOnglet lien-onglet-synthese" href="<?=$url;?>ecologie"><?=$i18n["onglet-nom-eco"]?></a>
</h3>
<div id="contenu-8" class="contenu">
<h4><?= $ecologie['graph']['titre'] ?></h4>
<? if (empty($ecologie['graph']['description'])) : ?>
<? if ($ecologie['graph']['wikini']['ecologie'] == '') :?>
<a href="<?=$url;?>statut" class="lien_ouverture_onglet_parent" >
Rajouter vos informations.
</a>
<? else : echo $ecologie['graph']['wikini']['ecologie'];?>
<? endif; ?>
<? else : ?>
<div class="fond_graphique">
<? if (isset($ecologie['graph']['description']['climat_url'])) :?>
<span class="titre">caractéristiques climatiques</span>
<div class="graphique">
<object type="image/svg+xml" data="<?=$ecologie['graph']['description']['climat_url']?>"
class="svg" alt="<?=$ecologie['graph']['description']['climat_url_png']?>" >
</object>
</div>
<? endif;?>
<? if (isset($ecologie['graph']['description']['sol_url'])) :?>
<span class="titre">caractéristiques du sol</span>
<div class="graphique">
<object type="image/svg+xml" data="<?=$ecologie['graph']['description']['sol_url']?>"
class="svg" alt="<?=$ecologie['graph']['description']['sol_url_png']?>" >
</object>
</div>
<? endif;?>
<a href="<?=$url;?>ecologie" class="lien_ouverture_onglet_parent">
Voir les références
</a>
</div>
<? endif; ?>
<? if (!empty($ecologie['phytosocio']['description'])) : ?>
<h4>Phytosociologie</h4>
<span class="gras">
<?=$ecologie['phytosocio']['description'][0]['niveau.libelle']?> -
<?=$ecologie['phytosocio']['description'][0]['code_catminat']?>
</span> <br/>
<?=$ecologie['phytosocio']['description'][0]['syntaxon']?> -
<span class="italique">
<?=$ecologie['phytosocio']['description'][0]['physio_biotype']?>
</span>
<? endif; ?>
<br/>
<a href="<?=$url;?>ecologie" class="lien_ouverture_onglet_parent" id="alignement-droite">
Voir +/Compléter
</a>
</div>
</div>
<!-- Nomenclature -->
<div id="synthese_nomenclature" class="module ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
<h3 class="titre ui-widget-header ui-corner-all" id="titre-6">
<a class="titreOnglet lien-onglet-synthese" href="<?=$url;?>nomenclature"><?=$i18n["onglet-nom-classif"]?></a>
</h3>
<div id="contenu-6" class="contenu">
<h4>Taxons supérieurs</h4>
<?php if($nomenclature['taxons_sup'] != array()) { ?>
<?php foreach($nomenclature['taxons_sup'] as $taxon) : ?>
<div>
<a title="Voir la fiche de ce nom" href="<?= $nomenclature['urls']->obtenirUrlFiche($taxon['num_nom'],'nom_scientifique', $taxon['nom_sci']); ?>">
<?= $taxon['rang.libelle']; ?> : <?= $taxon['nom_sci']; ?>
</a>
</div>
<?php endforeach; ?>
<?php } else { ?>
<div>Aucun taxon supérieur référencé </div>
<?php } ?>
<h4>Nom retenu</h4>
<div>
<div class="nom retenu <?= ($nomenclature['nom_selectionne'] == $nomenclature['nom_retenu_formate']) ? 'surlignage' : '' ?>">
<?= $nomenclature['nom_retenu_formate']; ?>
</div>
<?php if($nomenclature['basionyme_nom_retenu'] != '') { ?>
<div class="nom"> <span class="nomenclature_basionyme">Basionyme : <?= $nomenclature['basionyme_nom_retenu']; ?></span></div>
<?php } ?>
</div>
<h4>Synonymes</h4>
<?php if($nomenclature['synonymes'] == array()) { ?>
Aucun synonyme
<? } else { ?>
<?php foreach ($nomenclature['synonymes'] as $synonyme) : ?>
<div class="nomenclature_synonyme nom<?= ($nomenclature['nom_selectionne'] == $synonyme['nom_sci_complet']) ? ' surlignage' : '' ?>">
<?= $synonyme['nom_sci_complet']; ?>
</div>
<?php endforeach; ?>
<?php if($nomenclature['autresSynonymesNbre'] > 0) { ?>
<a href="<?=$url;?>nomenclature" style="float:right;" class="lien_ouverture_onglet_parent" >et
<?= $nomenclature['autresSynonymesNbre'] ?>
autre<?= ($nomenclature['autresSynonymesNbre'] > 1) ? 's' : '' ?>
synonyme<?= ($nomenclature['autresSynonymesNbre'] > 1) ? 's' : '' ?>
</a>
<?php }} ?>
<h4>Taxons inférieurs</h4>
<?php if($nomenclature['taxons_inf'] != array()) { ?>
<?php foreach($nomenclature['taxons_inf'] as $taxon) : ?>
<div>
<a title="Voir la fiche de ce nom" href="<?= $nomenclature['urls']->obtenirUrlFiche($taxon['num_nom'],'nom_scientifique', $taxon['nom_sci']); ?>">
<?= $taxon['rang.libelle']; ?> : <?= $taxon['nom_sci']; ?>
</a>
</div>
<?php endforeach; ?>
<?php } else { ?>
<div>Aucun taxon inférieur référencé </div>
<?php } ?>
<br/>
<a href="<?=$url;?>nomenclature" class="lien_ouverture_onglet_parent" id="alignement-droite">
Voir +/Compléter
</a>
</div>
</div>
<!-- Bibliographie -->
<div id="synthese_bibliographie" class="module ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
<h3 class="titre ui-widget-header ui-corner-all" id="titre-2">
<a class="titreOnglet lien-onglet-synthese" href="<?=$url;?>bibliographie"><?=$i18n["onglet-nom-biblio"]?></a>
</h3>
<div id="contenu-2" class="contenu">
<?php if (isset($bibliographie['wikini'])) { ?>
<?= ($bibliographie['wikini']['biblio'] == '') ?
'<a href="'.$url.'description" class="lien_ouverture_onglet_parent" >
Rajouter vos données.</a>'
: $bibliographie['wikini']['biblio'].
'<br /><br /><a href="'.$url.'description" class="lien_ouverture_onglet_parent" >
Compléter cette bibliographie</a>'; ?>
<?php } else { ?>
<h4>Références</h4>
<?php if ($bibliographie['references'] == array()) { ?>
Aucune référence bibliographique
<?php } else { ?>
<?php foreach ($bibliographie['references'] as $reference) : ?>
<div> - <?= $reference['reference_html']; ?> </div>
<?php endforeach; ?>
<?php if($bibliographie['autresReferences'] > 0) { ?>
<a href="<?=$url;?>nomenclature" class="lien_ouverture_onglet_parent" id="alignement-droite">
et <?= $bibliographie['autresReferences'] ?>
autre<?= ($bibliographie['autresReferences'] > 1) ? 's' : '' ?>
référence<?= ($bibliographie['autresReferences'] > 1) ? 's' : '' ?>
</a>
<?php } } ?>
<?php }?>
<hr class="nettoyage" />
<a href="<?=$url;?>bibliographie" class="lien_ouverture_onglet_parent" id="alignement-droite">
Voir +/Compléter
</a>
</div>
</div>
</div><div class="colonne">
<!-- Illustrations -->
<div id="synthese_illustrations" class="module ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
<h3 class="titre ui-widget-header ui-corner-all" id="titre-0">
<a class="titreOnglet lien-onglet-synthese" href="<?=$url;?>illustrations"><?=$i18n["onglet-nom-illustra"]?></a>
</h3>
<div id="contenu-0" class="contenu">
<?php if ($illustrations['imageUrl'] != '') : ?>
<img class="illustration_cel" data-num-nom="<?= $num_nom; ?>" title="<?= $infos['nom_sci'] . ($nom_vernaculaire != '' ? ' ('.$nom_vernaculaire.')' : '') ?>"
src="<?=$illustrations['imageUrl']?>" alt="<?= $infos['nom_sci'] . ($nom_vernaculaire != '' ? ' ('.$nom_vernaculaire.')' : '') ?>"
style="margin-bottom: 0px; margin-left: -2px; width: 210px;"/>
<?php else : ?>
<span class="absent" style="float:none; margin-left:55px">
Pas de photo<br />
<a href="http://www.tela-botanica.org/page:cel"
title="Ajouter une photographie de <?= $nom_retenu ?> au moyen du Carnet en Ligne"
onclick="window.open(this.href); return false;" class="contribuer">
Contribuer
</a>
</span>
<?php endif; ?>
<br/>
<a href="<?=$url;?>illustrations" class="lien_ouverture_onglet_parent" id="alignement-droite">
Voir +/Compléter
</a>
</div>
</div>
<!-- Répartition -->
<div id="synthese_repartition" class="module ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
<h3 class="titre ui-widget-header ui-corner-all" id="titre-3">
<a class="titreOnglet lien-onglet-synthese" href="<?=$url;?>repartition"><?=$i18n["onglet-nom-repart"]?></a>
</h3>
<div id="contenu-3" class="contenu">
<? if ($referentiel != "bdtxa" && $repartition['eflore'] != null) : ?>
<h4>Observations</h4>
<img src="<?=htmlentities($repartition['eflore'])?>" alt="<?= $infos['nom_sci'] ?> - carte des observations" style="margin-left: 11px; width: 190px;" />
<? endif; ?>
<? if ($repartition['chorodep'] != null) : ?>
<h4>Répartition départementale</h4>
<img src="<?=htmlentities($repartition['chorodep'])?>" alt="<?= $infos['nom_sci'] ?> - carte de répartition"/>
<? endif; ?>
<br/>
<a href="<?=$url;?>repartition" class="lien_ouverture_onglet_parent" id="alignement-droite">
Voir +/Compléter
</a>
</div>
</div>
<!-- Statut de protection -->
<div id="synthese_statut" class="module ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
<h3 class="titre ui-widget-header ui-corner-all" id="titre-7">
<a class="titreOnglet lien-onglet-synthese" href="<?=$url;?>statut"><?=$i18n["onglet-nom-protect"]?></a>
</h3>
<div id="contenu-7" class="contenu <?= (isset($statut['statuts'][0]) || isset($statut['liste_rouge'][0])) ? 'attention' : ''; ?>">
<? if (!empty($statut['statuts']) && isset($statut['statuts'][0])) { ?>
Attention ce taxon est protégé dans les zones suivantes : <br />
<?php foreach($statut['statuts'] as $statut_zone) : ?>
<a href="<?=$url;?>statut" class="lien_ouverture_onglet_parent" >
<?= $statut_zone['zone_application']; ?><br />
</a>
<?php endforeach; ?>
<? } else if ($statut['wikini']['statuts_de_protection'] != '' ) { ?>
<?= $statut['wikini']['statuts_de_protection'];?>
<? } ?>
<? if (!empty($statut['liste_rouge']) && isset($statut['liste_rouge'][0])) { ?>
Ce taxon est classé dans la liste rouge dans la catégorie : <br />
<a href="<?=$url;?>statut" class="lien_ouverture_onglet_parent" >
<?= $statut['liste_rouge'][0][num_categorie].' - '.$statut['liste_rouge'][0][categorie]; ?><br />
</a>
<? } ?>
<? if ($statut['wikini']['statuts_de_protection'] == '' && !isset($statut['statuts'][0]) && !isset($statut['liste_rouge'][0])) {?>
<span class="pas_de_protection">Pas de protection connue</span>
<? }?>
<br />
<a href="<?=$url;?>statut" class="lien_ouverture_onglet_parent" id="alignement-droite">
Voir +/Compléter
</a>
</div>
</div>
</div>
<hr class="nettoyage" />
<script type="text/javascript">
$.event.trigger('ongletSyntheseCharge');
</script>
</div>
/tags/v5.10-vilmorin/modules/fiche/squelettes/fiche_synthese_niveau3.tpl.html
New file
0,0 → 1,434
<!-- Fichier expert -->
<!-- Variables js communes injectée dans fiche_entete.tpl.tml -->
<? $url = htmlentities('?referentiel='.Registre::get('parametres.referentiel').'&niveau='.Registre::get('parametres.niveau').'&module=fiche&num_nom='.$num_nom.'&type_nom='.$type_nom.'&nom='.$nom.'&onglet=');?>
<div class="synthese onglet_contenu" id="synthese">
<div class="colonne deuxtiers">
<!-- Nomenclature -->
<div id="synthese_nomenclature" class="module ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
<h3 class="titre ui-widget-header ui-corner-all" id="titre-6">
<a class="titreOnglet lien-onglet-synthese" href="<?=$url;?>nomenclature"><?=$i18n["onglet-nom-classif"]?></a>
</h3>
<div id="contenu-6" class="contenu">
<h4>Taxons supérieurs</h4>
<?php if($nomenclature['taxons_sup'] != array()) { ?>
<?php foreach($nomenclature['taxons_sup'] as $taxon) : ?>
<div>
<a title="Voir la fiche de ce nom" href="<?= $nomenclature['urls']->obtenirUrlFiche($taxon['num_nom'],'nom_scientifique', $taxon['nom_sci']); ?>">
<?= $taxon['rang.libelle']; ?> : <?= $taxon['nom_sci']; ?>
</a>
</div>
<?php endforeach; ?>
<?php } else { ?>
<div>Aucun taxon supérieur référencé </div>
<?php } ?>
<h4>Nom retenu</h4>
<div>
<div class="nom retenu <?= ($nomenclature['nom_selectionne'] == $nomenclature['nom_retenu_formate']) ? 'surlignage' : '' ?>">
<?= $nomenclature['nom_retenu_formate']; ?>
</div>
<?php if($nomenclature['basionyme_nom_retenu'] != '') { ?>
<div class="nom"> <span class="nomenclature_basionyme">Basionyme : <?= $nomenclature['basionyme_nom_retenu']; ?></span></div>
<?php } ?>
</div>
<h4>Synonymes</h4>
<?php if($nomenclature['synonymes'] == array()) { ?>
Aucun synonyme
<? } else { ?>
<?php foreach ($nomenclature['synonymes'] as $synonyme) : ?>
<div class="nomenclature_synonyme nom<?= ($nomenclature['nom_selectionne'] == $synonyme['nom_sci_complet']) ? ' surlignage' : '' ?>">
<?= $synonyme['nom_sci_complet']; ?>
</div>
<?php endforeach; ?>
<?php if($nomenclature['autresSynonymesNbre'] > 0) { ?>
<a href="<?=$url;?>nomenclature" class="lien_ouverture_onglet_parent" id="alignement_droite">
et <?= $nomenclature['autresSynonymesNbre'] ?>
autre<?= ($nomenclature['autresSynonymesNbre'] > 1) ? 's' : '' ?>
synonyme<?= ($nomenclature['autresSynonymesNbre'] > 1) ? 's' : '' ?>
</a>
<?php }} ?>
<h4>Taxons inférieurs</h4>
<?php if($nomenclature['taxons_inf'] != array()) { ?>
<?php foreach($nomenclature['taxons_inf'] as $taxon) : ?>
<div>
<a title="Voir la fiche de ce nom" href="<?= $nomenclature['urls']->obtenirUrlFiche($taxon['num_nom'],'nom_scientifique', $taxon['nom_sci']); ?>">
<?= $taxon['rang.libelle']; ?> : <?= $taxon['nom_sci']; ?>
</a>
</div>
<?php endforeach; ?>
<?php } else { ?>
<div>Aucun taxon inférieur référencé </div>
<?php } ?>
<a href="<?=$url;?>classification" class="lien_ouverture_onglet_parent" id="alignement-droite">
Voir +/Compléter
</a>
</div>
</div>
<!-- Description -->
<div id="synthese_description" class="module ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
<h3 class="titre ui-widget-header ui-corner-all" id="titre-1">
<a class="titreOnglet lien-onglet-synthese" href="<?=$url;?>description"><?=$i18n["onglet-nom-descr"]?></a>
</h3>
<div id="contenu-1" class="contenu">
<h4><?= $description['titre']?></h4>
<? if ($description['description'] != '') : ?>
<? if($description['type'] == 'baseflor') : ?>
<table class="desc">
<tr>
<td colspan="2">
<?if ($description['description']['type_bio'] != '') : ?>
<span class="titre">Type Biologique :</span> <?=$description['description']['type_bio']; ?><br/>
<? endif; ?>
</td>
</tr>
<tr>
<td colspan="2">
<? if ($description['description']['form_vegetale'] != '') : ?>
<span class="titre">Formation végétale :</span> <?=$description['description']['form_vegetale']; ?><br/>
<? endif; ?>
</td>
</tr>
<tr>
<td colspan="2">
<? if ($description['description']['chorologie'] != ''): ?>
<span class="titre">Chorologie : </span> <?=$description['description']['chorologie']; ?><br/>
<? endif; ?>
</td>
</tr>
<tr>
<td >
<? if ($description['description']['inflorescence'] != '') : ?>
<span class="titre">Inflorescence :</span> <?=$description['description']['inflorescence']; ?><br/>
<? endif; ?>
<? if ($description['description']['fruit'] != '') : ?>
<span class="titre">Fruit :</span> <?=$description['description']['fruit']; ?><br/>
<? endif; ?>
<? if ($description['description']['couleur_fleur'] != '') : ?>
<span class="titre">Couleur de la fleur : </span> <?=$description['description']['couleur_fleur']; ?><br/>
<? endif; ?>
<? if ($description['description']['macule'] != '') : ?>
<span class="titre">Macule :</span> <?=$description['description']['macule']; ?><br/>
<? endif; ?>
<? if ($description['description']['floraison'] != '') : ?>
<span class="titre">Floraison :</span> <?=$description['description']['floraison']; ?><br/>
<? endif; ?>
</td>
<td>
<? if ($description['description']['sexualite'] != '') : ?>
<span class="titre">Sexualité : </span> <?=$description['description']['sexualite']; ?><br/>
<? endif; ?>
<?if ($description['description']['ordre_maturation'] != '') : ?>
<span class="titre">Ordre de maturation : </span> <?=$description['description']['ordre_maturation']; ?><br/>
<? endif; ?>
<? if ($description['description']['pollinisation'] != '') : ?>
<span class="titre">Pollinisation : </span> <?=$description['description']['pollinisation']; ?><br/>
<? endif; ?>
<? if ($description['description']['dissemination'] != '') : ?>
<span class="titre">Dissémination : </span><?=$description['description']['dissemination']; ?><br/>
<? endif; ?>
</td>
</tr>
</table>
<? elseif($description['titre'] == 'Description de Coste') : ?>
<table class="desc">
<tr>
<td>
<?if ($description['description']['nom_scientifique'] != '') : ?>
<span class="gras">
<?=$description['description']['nom_scientifique']; ?>
</span>
<? endif; ?>
<?if ($description['description']['nom_commun'] != '') : ?>
<span class="italique">
<?=$description['description']['nom_commun']; ?>
</span>
<? endif; ?>
</td>
</tr>
<?if ($description['description']['synonymes'] != '') : ?>
<tr>
<td>
<span class="titre">Synonymes </span>
<?=$description['description']['synonymes']; ?>
</td>
</tr>
<? endif; ?>
<tr>
<td>
<?if ($description['description']['texte'] != '') : ?>
<?=$description['description']['texte']; ?>
<br/>
<? endif; ?>
</td>
</tr>
<?if ($description['description']['ecologie'] != '') : ?>
<tr>
<td>
<span class="titre">Écologie </span>
<?=$description['description']['ecologie']; ?>
</td>
</tr>
<? endif; ?>
<?if ($description['description']['repartition'] != '') : ?>
<tr>
<td>
<span class="titre">Répartition </span>
<?=$description['description']['repartition']; ?>
</td>
</tr>
<? endif; ?>
<?if ($description['description']['floraison'] != '') : ?>
<tr>
<td>
<span class="titre">Floraison </span>
<?=$description['description']['floraison']; ?>
<?if ($description['description']['fructification'] != '') : ?>
<span class="titre">Fructification </span>
<?=$description['description']['fructification']; ?>
<? endif; ?>
</td>
</tr>
<? endif; ?>
<?if ($description['description']['usages'] != '') : ?>
<tr>
<td>
<span class="titre">Usages</span>
<?=$description['description']['usages']; ?>
</td>
</tr>
<? endif; ?>
</table>
<? else : ?>
<?=$description['description'];?>
<? endif;?>
<? endif;?>
<br/>
<a href="<?=$url;?>description" class="lien_ouverture_onglet_parent" id="alignement-droite">
Voir +/Compléter
</a>
</div>
</div>
<!-- Ecologie -->
<div id="synthese_ecologie" class="module ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
<h3 class="titre ui-widget-header ui-corner-all" id="titre-8">
<a class="titreOnglet lien-onglet-synthese" href="<?=$url;?>ecologie"><?=$i18n["onglet-nom-eco"]?></a>
</h3>
<div id="contenu-8" class="contenu">
<h4><?=$ecologie['graph']['titre']?></h4>
<? if (empty($ecologie['graph']['description'])) : ?>
<? if ($ecologie['graph']['wikini']['ecologie'] == '') :?>
<a href="<?=$url;?>statut" class="lien_ouverture_onglet_parent" >
Rajouter vos informations.
</a>
<? else : echo $ecologie['graph']['wikini']['ecologie'];?>
<? endif; ?>
<? else : ?>
<div class="fond_graphique">
<? if (isset($ecologie['graph']['description']['climat_url'])) :?>
<span class="titre">caractéristiques climatiques</span>
<div class="graphique">
<object type="image/svg+xml" data="<?=$ecologie['graph']['description']['climat_url']?>"
class="svg" alt="<?=$ecologie['graph']['description']['climat_url_png']?>" >
</object>
</div>
<?endif;?>
<? if (isset($ecologie['graph']['description']['sol_url'])) :?>
<span class="titre">caractéristiques du sol</span>
<div class="graphique">
<object type="image/svg+xml" data="<?=$ecologie['graph']['description']['sol_url']?>"
class="svg" alt="<?=$ecologie['graph']['description']['sol_url_png']?>" >
</object>
</div>
<?endif;?>
<a href="<?=$url;?>ecologie" class="lien_ouverture_onglet_parent">
Voir les références
</a>
</div>
<? endif; ?>
<? if (!empty($ecologie['phytosocio']['description'])) : ?>
<h4>Phytosociologie</h4>
<span class="gras">
<?=$ecologie['phytosocio']['description'][0]['niveau.libelle']?> -
<?=$ecologie['phytosocio']['description'][0]['code_catminat']?>
</span> <br/>
<?=$ecologie['phytosocio']['description'][0]['syntaxon']?> -
<span class="italique">
<?=$ecologie['phytosocio']['description'][0]['physio_biotype']?>
</span>
<? endif; ?>
<br/>
<a href="<?=$url;?>ecologie" class="lien_ouverture_onglet_parent" id="alignement-droite">
Voir +/Compléter
</a>
</div>
</div>
<!-- Ethnobotanique -->
<div id="synthese_ethnobotanique" class="module ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
<h3 class="titre ui-widget-header ui-corner-all" id="titre-4">
<a class="titreOnglet lien-onglet-synthese" href="<?=$url;?>ethnobotanique"><?=$i18n["onglet-nom-ethnobota"]?></a>
</h3>
<div id="contenu-4" class="contenu">
<h4>Noms communs</h4>
<?php if ($ethnobotanique['nomsVerna'] == array()) { ?>
Aucun nom vernaculaire
<? if ($ethnobotanique['wikini']['noms_communs'] == '') {?>
<a href="<?=$url;?>ethnobotanique" class="lien_ouverture_onglet_parent" >
Rajouter vos informations.
</a>
<? } else { echo $ethnobotanique['wikini']['noms_communs'];} ?>
<?php } else { ?>
<?php foreach ($ethnobotanique['nomsVerna'] as $nom_verna) : ?>
<div> - <?= $nom_verna['nom_vernaculaire'].' ('.$nom_verna['code_langue'].')'; ?> </div>
<?php endforeach; ?>
<?php if($ethnobotanique['autresNomsVerna'] > 0) { ?>
<a href="<?=$url;?>ethnobotanique" class="lien_ouverture_onglet_parent" id="alignement-droite">
et <?= $ethnobotanique['autresNomsVerna'] ?>
autre<?= ($ethnobotanique['autresNomsVerna'] > 1) ? 's' : '' ?>
nom<?= ($ethnobotanique['autresNomsVerna'] > 1) ? 's' : '' ?>
</a><br />
<?php }?>
<?php }?>
<h4>Usages</h4>
<? if ($ethnobotanique['wikini']['usage'] == '') {?>
<a href="<?=$url;?>ethnobotanique" class="lien_ouverture_onglet_parent" >
Rajouter vos informations.
</a>
<? } else { echo $ethnobotanique['wikini']['usage'];} ?>
<h4>Culture et arts</h4>
<? if ($ethnobotanique['wikini']['culture_et_arts'] == '') {?>
<a href="<?=$url;?>ethnobotanique" class="lien_ouverture_onglet_parent" >
Rajouter vos informations.
</a>
<? } else { echo $ethnobotanique['wikini']['culture_et_arts']; } ?>
<br />
<a href="<?=$url;?>ethnobotanique" class="lien_ouverture_onglet_parent" id="alignement-droite">
Voir +/Compléter
</a>
</div>
</div>
<!-- Bibliographie -->
<div id="synthese_bibliographie" class="module ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
<h3 class="titre ui-widget-header ui-corner-all" id="titre-2">
<a class="titreOnglet lien-onglet-synthese" href="<?=$url;?>bibliographie"><?=$i18n["onglet-nom-biblio"]?></a>
</h3>
<div id="contenu-2" class="contenu">
<?php if (isset($bibliographie['wikini'])) { ?>
<?= ($bibliographie['wikini']['biblio'] == '') ?
'<a href="'.$url.'description" class="lien_ouverture_onglet_parent" >
Ajoutez votre bibliographie sur ce taxon</a>'
: $bibliographie['wikini']['biblio'] ?>
<?php } else { ?>
<h4>Références</h4>
<?php if ($bibliographie['references'] == array()) { ?>
Aucune référence bibliographique
<?php } else { ?>
<?php foreach ($bibliographie['references'] as $reference) : ?>
<div> - <?= $reference['reference_html']; ?> </div>
<?php endforeach; ?>
<?php if($bibliographie['autresReferences'] > 0) { ?>
<a href="<?=$url;?>nomenclature" class="lien_ouverture_onglet_parent" id="alignement-droite">
et <?= $bibliographie['autresReferences'] ?>
autre<?= ($bibliographie['autresReferences'] > 1) ? 's' : '' ?>
référence<?= ($bibliographie['autresReferences'] > 1) ? 's' : '' ?>
</a>
<?php } } ?>
<?php }?>
<hr class="nettoyage" />
<a href="<?=$url;?>bibliographie" class="lien_ouverture_onglet_parent" id="alignement-droite">
Voir +/Compléter
</a>
</div>
</div>
</div><div class="colonne">
<!-- Illustrations -->
<div id="synthese_illustrations" class="module ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
<h3 class="titre ui-widget-header ui-corner-all" id="titre-0">
<a class="titreOnglet lien-onglet-synthese" href="<?=$url;?>illustrations"><?=$i18n["onglet-nom-illustra"]?></a>
</h3>
<div id="contenu-0" class="contenu">
<?php if ($illustrations['imageUrl'] != '') : ?>
<img class="illustration_cel" data-num-nom="<?= $num_nom; ?>" title="<?= $infos['nom_sci'] . ($nom_vernaculaire != '' ? ' ('.$nom_vernaculaire.')' : '') ?>"
src="<?=$illustrations['imageUrl']?>" alt="<?= $infos['nom_sci'] . ($nom_vernaculaire != '' ? ' ('.$nom_vernaculaire.')' : '') ?>"
style="margin-bottom: 0px; margin-left: -2px; width: 210px;"/>
<?php else : ?>
<span class="absent" style="float:none; margin-left:55px">
Pas de photo<br />
<a href="http://www.tela-botanica.org/page:cel"
title="Ajouter une photographie de <?= $nom_retenu ?> au moyen du Carnet en Ligne"
onclick="window.open(this.href); return false;" class="contribuer">
Contribuer
</a>
</span>
<?php endif; ?>
<a href="<?=$url;?>illustrations" class="lien_ouverture_onglet_parent" id="alignement-droite">
Voir +/Compléter
</a>
</div>
</div>
<!-- Répartition -->
<div id="synthese_repartition" class="module ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
<h3 class="titre ui-widget-header ui-corner-all" id="titre-3">
<a class="titreOnglet lien-onglet-synthese" href="<?=$url;?>repartition"><?=$i18n["onglet-nom-repart"]?></a>
</h3>
<div id="contenu-3" class="contenu">
<? if ($referentiel != "bdtxa" && $repartition['eflore'] != null) : ?>
<h4>Observations</h4>
<img src="<?=htmlentities($repartition['eflore'])?>" alt="<?= $infos['nom_sci'] ?> - carte des observations" style="margin-left: 11px; width: 190px;" />
<? endif; ?>
<? if ($repartition['chorodep'] != null) : ?>
<h4>Répartition départementale</h4>
<img src="<?=htmlentities($repartition['chorodep'])?>" alt="<?= $infos['nom_sci'] ?> - carte de répartition"/>
<? endif; ?>
<br/>
<a href="<?=$url;?>repartition" class="lien_ouverture_onglet_parent" id="alignement-droite">
Voir +/Compléter
</a>
</div>
</div>
<!-- Statut de protection -->
<div id="synthese_statut" class="module ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">
<h3 class="titre ui-widget-header ui-corner-all" id="titre-7">
<a class="titreOnglet lien-onglet-synthese" href="<?=$url;?>statut"><?=$i18n["onglet-nom-protect"]?></a>
</h3>
<div id="contenu-7" class="contenu <?= (isset($statut['statuts'][0]) || isset($statut['liste_rouge'][0])) ? 'attention' : ''; ?>">
<? if (!empty($statut['statuts']) && isset($statut['statuts'][0])) { ?>
Attention ce taxon est protégé dans les zones suivantes : <br />
<?php foreach($statut['statuts'] as $statut_zone) : ?>
<a href="<?=$url;?>statut" class="lien_ouverture_onglet_parent" >
<?= $statut_zone['zone_application']; ?><br />
</a>
<?php endforeach; ?>
<? } else if ($statut['wikini']['statuts_de_protection'] != '' ) { ?>
<?= $statut['wikini']['statuts_de_protection'];?>
<? } ?>
<? if (!empty($statut['liste_rouge']) && isset($statut['liste_rouge'][0])) { ?>
Ce taxon est classé dans la liste rouge dans la catégorie : <br />
<a href="<?=$url;?>statut" class="lien_ouverture_onglet_parent" >
<?= $statut['liste_rouge'][0][num_categorie].' - '.$statut['liste_rouge'][0][categorie]; ?><br />
</a>
<? } ?>
<? if ($statut['wikini']['statuts_de_protection'] == '' && !isset($statut['statuts'][0]) && !isset($statut['liste_rouge'][0])) {?>
<span class="pas_de_protection">Pas de protection connue</span>
<? }?>
<br />
<a href="<?=$url;?>statut" class="lien_ouverture_onglet_parent" id="alignement-droite">
Voir +/Compléter
</a>
</div>
</div>
</div>
<hr class="nettoyage" />
<script type="text/javascript">
$.event.trigger('ongletSyntheseCharge');
</script>
</div>
/tags/v5.10-vilmorin/modules/fiche/squelettes/fiche_nomenclature.tpl.html
New file
0,0 → 1,248
<div class="onglet_contenu" id="nomenclature">
<h2>Nom retenu <?php if (trim($date_maj) != "") : ?> (taxon modifié le : <?= $date_maj ?>)<? endif; ?></h2>
<div style="float:right">
<div class="legende">
<b>Légende</b><br />
<span class="legende_nom_retenu couleur_legende" style="margin:8px 5px 0 0"></span><span>Nom sélectionné</span>
<br />
<img src="<?=$baseUrlIco?>presentations/images/bib_en_ligne.png" alt="diagnose" title="Voir la diagnose en ligne" />Lien vers diagnose
<br />
<div class="imagettePlus"></div>Afficher la biblio
<br />
<div class="imagetteMoins"></div>Masquer la biblio
</div>
<div style="padding:5px 10px; display:none" id="plieur">
<a class="lien_tout_deplier" href="#">Tout déplier</a> | <a class="lien_tout_plier" href="#">Tout plier</a>
</div>
</div>
<div class="onglet_marge_gauche">
<span class="nom retenu <?= ($nom_selectionne == $nom_retenu_formate) ? 'surlignage' : '' ?>">
<?if ($nom_retenu_source != '') { ?>
<a class="lien_biblio_ext" href="<?=$nom_retenu_source?>" target="_blank" title="Voir la diagnose en ligne">
<img src="<?=$baseUrlIco?>presentations/images/bib_en_ligne.png" alt="diagnose" title="Voir la diagnose en ligne" />
</a>
<? } ?>
<a title="cliquez pour accéder à la fiche de ce taxon" href="<?= $urls->obtenirUrlFiche($nom_retenu_nn,'nom_scientifique'); ?>">
<?= $nom_retenu_formate ?>
</a>
</span>
</div>
<?php if($basionyme_nom_retenu != null && $basionyme_nom_retenu != '') { ?>
<div class="nom onglet_marge_gauche basionyme_complet">
Basionyme :
<a title="cliquez pour accéder à la fiche de ce taxon" href="<?= $urls->obtenirUrlFiche($basionyme_nom_retenu_nn,'nom_scientifique'); ?>">
<?= $basionyme_nom_retenu ?>
</a>
</div>
<?php } ?>
<?php if($hybride_parent_01 != null && $hybride_parent_01 != '') { ?>
Hybride de :<br />
Parent 1 : <span class="nom">
<a title="cliquez pour accéder à la fiche de ce taxon" href="<?= $urls->obtenirUrlFiche($hybride_parent_01_nn,'nom_scientifique'); ?>">
<?= $hybride_parent_01 ?>
</a>
</span><br />
Parent 2 : <span class="nom">
<a title="cliquez pour accéder à la fiche de ce taxon" href="<?= $urls->obtenirUrlFiche($hybride_parent_02_nn,'nom_scientifique'); ?>">
<?= $hybride_parent_02 ?>
</a>
</span>
<?php } ?>
<h2>Synonymes</h2>
<br />
<?php if(is_array($synonymes['noms']) && count($synonymes['noms']) > 0) { ?>
<?php foreach ($synonymes['noms'] as $id_b => $basionyme) : ?>
<span class="nom basionyme_complet">
<?php if($id_b != 'basionyme_inconnu') { ?>
<?if ($basionyme['source_biblio'] != '') { ?>
<a class="lien_biblio_ext" href="<?=$basionyme['source_biblio']?>" target="_blank" title="Voir la diagnose en ligne">
<img src="<?=$baseUrlIco?>presentations/images/bib_en_ligne.png" alt="diagnose" title="Voir la diagnose en ligne" />
</a>
<? } ?>
<a title="cliquez pour accéder à la fiche de ce taxon" href="<?= $urls->obtenirUrlFiche($basionyme['infos_basionyme']['basionyme.id'],'nom_scientifique'); ?>">
<?= isset($basionyme['infos_basionyme']['basionyme_html_complet']) ? "Basionyme : ".$basionyme['infos_basionyme']['basionyme_html_complet'] : ''; ?>
</a>
<?php } else { ?>
Noms dont le basionyme est inconnu
<?php } ?>
</span>
<ul class="liste_synonymes_basionyme">
<?php foreach ($basionyme['synonymes'] as $id => $synonyme) : ?>
<?php if($id_b != $id) { ?>
<li class="item_nomenclature">
<?if ($synonyme['source_biblio'] != '') { ?>
<a class="lien_biblio_ext" href="<?=$synonyme['source_biblio']?>" target="_blank" title="Voir la diagnose en ligne">
<img src="<?=$baseUrlIco?>presentations/images/bib_en_ligne.png" alt="diagnose" title="Voir la diagnose en ligne" />
</a>
<? } ?>
<span class="nom<?= ($nom_selectionne == $synonyme['nom_sci_complet']) ? ' surlignage' : '' ?>">
<a title="cliquez pour accéder à la fiche de ce taxon" href="<?= $urls->obtenirUrlFiche($id,'nom_scientifique'); ?>"> <?= $synonyme['nom_sci_complet'] ?></a>
</span>
</li>
<?php } ?>
<?php endforeach; ?>
</ul>
<?php endforeach; ?>
<hr class="nettoyage" />
<?php } else { ?>
<h3 class="aucune_info"> Aucun synonyme référencé pour ce nom </h3>
<?php } ?>
<? if (isset($flores_synonymes)) : ?>
<h2>Dénomination dans les flores usuelles</h2>
<?php if(is_array($flores_synonymes) && count($flores_synonymes) > 0) { ?>
<ul>
<?php foreach ($flores_synonymes as $infos_flore) : ?>
<li class="item_nomenclature">
<div>
Ce taxon est noté dans la flore <em><?= $infos_flore['nom_flore'] ?></em>
<?php if(isset($infos_flore['num'])) { ?>
sous :<br /><ul>
<?php foreach ($infos_flore['num'] as $code => $flore) : ?>
<li>le nom de <em><?= $flore['nom_sci'] ?></em>
et <?=$infos_flore['type']?> <b><?= $flore['id'] ?></b><?=($flore['statut']) ? ' en tant que '.$flore['statut'] : ''?><br /></li>
<?php endforeach; ?>
</ul>
<?php } else { ?>
<?php } ?>
</div>
</li>
<?php endforeach; ?>
</ul><hr class="nettoyage" />
<?php } else { ?>
<h3 class="aucune_info"> Aucune information floristique référencée pour ce nom </h3>
<?php } ?>
<?php if($num_type != null) { ?>
<h3> Autres </h3>
<!-- On utilise une liste au cas où d'autres informations viendraient se greffer à cet endroit -->
<ul>
<li class="item_nomenclature"> Numéro du type : <?= $num_type ?></li>
</ul>
<?php } ?>
<? endif; ?>
<hr class="nettoyage" />
<div class="conteneur_lien_metadonnees">
<?= $synonymes['meta']['citation']?>
<span class="conteneur_lien_metadonnees">
<a class="lien_metadonnees lien_popup" href="<?= $synonymes['meta']['url']; ?>">Voir toutes les metadonnées</a>
</span>
</div>
<a class="acceder-outil gauche" href="http://referentiels.tela-botanica.org/referentiel/index.php?ref=<?=$referentiel;?>&module=FicheTaxon&num_nom=<?=$nom_retenu_nn;?>">
Consultez ce nom dans le référentiel en cours de mise à jour</a><br /><br />
<div class="acceder-outil gauche">Recherchez ce nom sur les sites
<a href="http://inpn.mnhn.fr/espece/listeEspeces/<?=htmlentities($nom_retenu)?>/">
<img src="<?=$baseUrlIco?>presentations/images/sites/inpn.png" alt="INPN" title="Rechercher dans Inventaire National du Patrimoine Naturel" />
</a>
<a href="http://www.theplantlist.org/tpl/search?q=<?=htmlentities($nom_retenu)?>">
<img src="<?=$baseUrlIco?>presentations/images/sites/tpl.png" alt="The Plant List"
title="Rechercher dans The Plant List"/>
</a>
<a href="http://www.ipni.org/ipni/simplePlantNameSearch.do?find_wholeName=<?=htmlentities($nom_retenu)?>&amp;output_format=normal&amp;query_type=by_query&amp;back_page=query_ipni.html">
<img src="<?=$baseUrlIco?>presentations/images/sites/ipni.png" alt="IPNI" title="Rechercher dans IPNI"/>
</a>
<a href="http://plants.jstor.org/search?plantName=%22<?=htmlentities($nom_retenu)?>%22&amp;syn=1">
<img src="<?=$baseUrlIco?>presentations/images/sites/jstor.png" alt="JSTOR Plant Science" title="Rechercher dans JSTOR Plant Science" />
</a>
<a href="http://www.anbg.gov.au/cgi-bin/apni?TAXON_NAME=<?=htmlentities($nom_retenu)?>">
<img src="<?=$baseUrlIco?>presentations/images/sites/anbg.png" alt="Australian Plant Name Index" title="Rechercher dans Australian Plant Name Index" />
</a>
<a href="http://sweetgum.nybg.org/vh/specimen_list.php?QueryName=BasicQuery&amp;QueryPage=http%3A%2F%2Fsciweb.nybg.org%2Fscience2%2Fvii2.asp&amp;Restriction=NybRecordType+%3D+%27Specimen%27&amp;StartAt=1&amp;any=SummaryData%7CAdmWebMetadata&amp;QueryOption=any&amp;Submit=Search&amp;QueryTerms=<?=htmlentities($nom_retenu)?>">
<img src="<?=$baseUrlIco?>presentations/images/sites/nybg.png" alt="NYBG Virtual Herbarium" title="Rechercher dans NYBG Virtual Herbarium" />
</a>
<a href="http://collections.mnh.si.edu/search/botany/?qt=<?=htmlentities($nom_retenu)?>">
<img src="<?=$baseUrlIco?>presentations/images/sites/si.png" alt="Type Specimen Register of the U.S. National Herbarium" title="Rechercher dans Type Specimen Register of the U.S. National Herbarium" />
</a>
<a href="http://herbarium.univie.ac.at/database/search.php?taxon=<?=htmlentities($nom_retenu)?>&amp;search=1">
<img src="<?=$baseUrlIco?>presentations/images/sites/vha.png" alt="Virtual Herbaria Austria" title="Rechercher dans Virtual Herbaria Austria" />
</a>
<a href="http://swbiodiversity.org/seinet/taxa/index.php?taxon=<?=htmlentities($nom_retenu)?>">
<img src="<?=$baseUrlIco?>presentations/images/sites/seinet.png" alt="SEINet" title="Rechercher dans SEINet" />
</a>
<a href="http://www.ville-ge.ch/musinfo/bd/cjb/africa/resultat.php?efFamille=&amp;projet%5B%5D=FSA&amp;projet%5B%5D=FTA&amp;projet%5B%5D=FNA&amp;projet%5B%5D=BDM&amp;langue=en&amp;pbRecherche=Rechercher&amp;efNom=<?=htmlentities($nom_retenu)?>">
<img src="<?=$baseUrlIco?>presentations/images/sites/cjb.png" alt="African Plants Database" title="Rechercher dans African Plants Database du Jardin Botanique de Genève" />
</a>
<a href="http://www.tropicos.org/NameSearch.aspx?name=<?=htmlentities($nom_retenu)?>">
<img src="<?=$baseUrlIco?>presentations/images/sites/tropicos.png" alt="Tropicos" title="Rechercher dans Tropicos" />
</a>
<a href="http://www.sfo-asso.com/pages/connaissances.php?parent=6&id=195">
<img src="<?=$baseUrlIco?>presentations/images/sites/sfo.png" alt="SFO" title="Rechercher dans Société Française d'Orchidophilie" />
</a>
<a href="http://coldb.mnhn.fr/Consultation">
<img src="<?=$baseUrlIco?>presentations/images/sites/mnhn.png" alt="MNHN" title="Rechercher dans Muséum national d'Histoire naturelle" />
</a>
<? if ($referentiel == "bdtxa") : ?>
<a href="http://collections.antilles.inra.fr/initCard.do?idEntityValue1=<?=htmlentities($nom_retenu);?>&idEntityValue2=&idEntityValue3=&idEntity=21">
<img src="<?=$baseUrlIco?>presentations/images/sites/antilles.png" alt="INRA Antilles" title="Rechercher dans collections INRA Antilles" />
</a>
<? endif; ?>
</div>
<hr class="nettoyage" />
<span class="aide_wikini"> Partagez vos infos complémentaires sur ce nom, un double clic dans le cadre suffit pour compléter ou corriger la page </span>
<div class="contenu_editable">
<div class="description wikini editable_sur_clic" title="nomenclature">
<?=$wikini['nomenclature']?>
</div>
</div>
<h2>Place du taxon dans la classification APG III</h2>
<table class="liste_taxons_superieurs">
<tr>
<th>Rang</th><th>Nom Scientifique</th><th>Num Nom</th>
</tr>
<?php if ($taxons_sup != array()) : ?>
<?php foreach ($taxons_sup as $taxon) : ?>
<tr>
<td><?= $taxon['rang.libelle'] ?></td>
<td><a title="Voir la fiche de ce nom" href="<?= $urls->obtenirUrlFiche($taxon['num_nom'],'nom_scientifique', $taxon['nom_sci']); ?>">
<?= $taxon['nom_sci'] ?>
</a>
</td>
<td><?= $taxon['num_nom'] ?></td>
</tr>
<?php endforeach; ?>
<?php endif; ?>
<tr class='surlignage'>
<td><?= $taxon_courant['rang.libelle'] ?></td>
<td><?= $taxon_courant['nom_sci'] ?></td>
<td><?= $taxon_courant['num_nom'] ?></td>
</tr>
<?php if ($taxons_inf != array()) : ?>
<?php foreach($taxons_inf as $taxon) : ?>
<tr>
<td><?= $taxon['rang.libelle'] ?></td>
<td>
<a title="Voir la fiche de ce nom" href="<?= $urls->obtenirUrlFiche($taxon['num_nom'],'nom_scientifique', $taxon['nom_sci']); ?>">
<?= $taxon['nom_sci'] ?>
</a>
</td>
<td><?= $taxon['num_nom'] ?></td>
</tr>
<?php endforeach; ?>
<?php endif; ?>
</table>
<div class="conteneur_lien_metadonnees">
<?= $synonymes['meta']['citation']?>
<span class="conteneur_lien_metadonnees">
<a class="lien_metadonnees lien_popup" href="<?= $synonymes['meta']['url']; ?>">Voir toutes les metadonnées</a>
</span>
</div>
<script type="text/Javascript">
$('#plieur').show();
gestionBiblio($('#nomenclature'));
</script>
</div>
/tags/v5.10-vilmorin/modules/fiche/squelettes/fiche_accueil_niveau1.tpl.html
New file
0,0 → 1,69
<?= $entete; ?>
<div id="bloc-fiche" class="importance4">
<h1>
<span class="famille nomenclature" style="float: right;">
<?php if($famille != '') { ?>
<a class="lien_recherche_hier" title="<?= $i18n['lien-recherche-hier-fam']; ?>" href="<?= $lien_recherche_famille ?>"> <?= $famille; ?> </a>
<?php } ?>
</span>
<span class="nomenclature"><?=$nom_retenu_html?></span>
</h1>
<?php if($nom_vernaculaire): ?>
<h2 class="vernaculaire"><?=$nom_vernaculaire;?></h2>
<?php endif; ?>
<?php if($nom_appele_html): ?>
<h3 class="redirige_depuis">
<span class="label_redirige_depuis">Nom recherché :</span>
<span class="valeur_redirige_depuis"><?= $nom_appele_html ?></span>
</h3>
<?php endif; ?>
 
<hr class="nettoyage" />
 
<div id="zone_onglets" class="ui-tabs ui-widget ui-widget-content ui-corner-all">
<? $url = htmlentities('index.php?referentiel='.Registre::get('parametres.referentiel').'&niveau='.Registre::get('parametres.niveau').'&module=fiche&action=fiche&num_nom='.$num_nom.'&type_nom='.$type_nom.'&nom='.$nom.'&onglet=');?>
<ul id="onglets" class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">
<li id="onglet_synthese" title="<?=$i18n['onglet-descr-synth']?>" class="ui-state-default ui-corner-top <?= ($onglet == 'synthese') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet lien-statique" rel="synthese" href="<?=$url;?>synthese">
<?=$i18n["onglet-nom-synth"]?></a>
</li>
<li title="<?=$i18n['onglet-descr-descr']?>" class="ui-state-default ui-corner-top <?= ($onglet == 'description') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet" rel="description" href="<?=$url;?>description">
<?=$i18n["onglet-nom-descr"]?></a>
</li>
<li title="<?=$i18n['onglet-descr-ethnobota']?>" class="ui-state-default ui-corner-top <?= ($onglet == 'ethnobotanique') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet" rel="ethnobotanique" href="<?=$url;?>ethnobotanique">
<?=$i18n["onglet-nom-ethnobota"]?></a>
</li>
<li title="<?=$i18n['onglet-descr-eco']?>" class="ui-state-default ui-corner-top <?= ($onglet == 'ecologie') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet" rel="ecologie" href="<?=$url;?>ecologie">
<?=$i18n["onglet-nom-eco"]?></a>
</li>
<li title="<?=$i18n['onglet-descr-classif']?>" class="ui-state-default ui-corner-top <?= ($onglet == 'nomenclature') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet" rel="nomenclature" href="<?=$url;?>nomenclature">
<?=$i18n["onglet-nom-classif"]?></a>
</li>
<li title="<?=$i18n['onglet-descr-biblio']?>" class="ui-state-default ui-corner-top <?= ($onglet == 'bibliographie') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet" rel="bibliographie" href="<?=$url;?>bibliographie">
<?=$i18n["onglet-nom-biblio"]?></a>
</li>
<li title="<?=$i18n['onglet-descr-illustra']?>" class="ui-state-default ui-corner-top <?= ($onglet == 'illustrations') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet" rel="illustrations" href="<?=$url;?>illustrations">
<?=$i18n["onglet-nom-illustra"]?></a>
</li>
<li title="<?=$i18n['onglet-descr-repart']?>" class="ui-state-default ui-corner-top <?= ($onglet == 'repartition') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet" rel="repartition" href="<?=$url;?>repartition">
<?=$i18n["onglet-nom-repart"]?></a>
</li>
<li title="<?=$i18n['onglet-descr-protect']?>" class="ui-state-default ui-corner-top <?= ($onglet == 'statut') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet" rel="statut" href="<?=$url;?>statut">
<?=$i18n["onglet-nom-protect"]?></a>
</li>
</ul>
<span id="conteneurMenuOnglets"></span>
<span><a class="lien-onglet lien-statique lien_retour_synthese" href="<?=$url;?>synthese">Retour à l'onglet Synthèse</a></span>
</div>
<div id="zone_contenu_fiche">
<?= $contenu_onglet ?>
</div>
</div>
/tags/v5.10-vilmorin/modules/fiche/squelettes/fiche_accueil_niveau2.tpl.html
New file
0,0 → 1,69
<?= $entete; ?>
<div id="bloc-fiche" class="importance4">
<h1>
<span class="famille nomenclature" style="float: right;">
<?php if($famille != '') { ?>
<a class="lien_recherche_hier" title="<?= $i18n['lien-recherche-hier-fam']; ?>" href="<?= $lien_recherche_famille ?>"> <?= $famille; ?> </a>
<?php } ?>
</span>
<span class="nomenclature"><?=$nom_retenu_html?></span>
</h1>
<?php if($nom_vernaculaire): ?>
<h2 class="vernaculaire"><?=$nom_vernaculaire;?></h2>
<?php endif; ?>
<?php if($nom_appele_html): ?>
<h3 class="redirige_depuis">
<span class="label_redirige_depuis">Nom recherché :</span>
<span class="valeur_redirige_depuis"><?= $nom_appele_html ?></span>
</h3>
<?php endif; ?>
 
<hr class="nettoyage" />
 
<div id="zone_onglets" class="ui-tabs ui-widget ui-widget-content ui-corner-all">
<? $url = htmlentities('index.php?referentiel='.Registre::get('parametres.referentiel').'&niveau='.Registre::get('parametres.niveau').'&module=fiche&action=fiche&num_nom='.$num_nom.'&type_nom='.$type_nom.'&nom='.$nom.'&onglet=');?>
<ul id="onglets" class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">
<li title="<?=$i18n['onglet-descr-synth']?>" id="onglet_synthese" class="ui-state-default ui-corner-top <?= ($onglet == 'synthese') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet lien-statique" rel="synthese" href="<?=$url;?>synthese">
<?=$i18n["onglet-nom-synth"]?></a>
</li>
<li title="<?=$i18n['onglet-descr-descr']?>" class="ui-state-default ui-corner-top <?= ($onglet == 'description') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet" rel="description" href="<?=$url;?>description">
<?=$i18n["onglet-nom-descr"]?></a>
</li>
<li title="<?=$i18n['onglet-descr-ethnobota']?>" class="ui-state-default ui-corner-top <?= ($onglet == 'ethnobotanique') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet" rel="ethnobotanique" href="<?=$url;?>ethnobotanique">
<?=$i18n["onglet-nom-ethnobota"]?></a>
</li>
<li title="<?=$i18n['onglet-descr-eco']?>" class="ui-state-default ui-corner-top <?= ($onglet == 'ecologie') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet" rel="ecologie" href="<?=$url;?>ecologie">
<?=$i18n["onglet-nom-eco"]?></a>
</li>
<li title="<?=$i18n['onglet-descr-classif']?>" class="ui-state-default ui-corner-top <?= ($onglet == 'nomenclature') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet" rel="nomenclature" href="<?=$url;?>nomenclature">
<?=$i18n["onglet-nom-classif"]?></a>
</li>
<li title="<?=$i18n['onglet-descr-biblio']?>" class="ui-state-default ui-corner-top <?= ($onglet == 'bibliographie') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet" rel="bibliographie" href="<?=$url;?>bibliographie">
<?=$i18n["onglet-nom-biblio"]?></a>
</li>
<li title="<?=$i18n['onglet-descr-illustra']?>" class="ui-state-default ui-corner-top <?= ($onglet == 'illustrations') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet" rel="illustrations" href="<?=$url;?>illustrations">
<?=$i18n["onglet-nom-illustra"]?></a>
</li>
<li title="<?=$i18n['onglet-descr-repart']?>" class="ui-state-default ui-corner-top <?= ($onglet == 'repartition') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet" rel="repartition" href="<?=$url;?>repartition">
<?=$i18n["onglet-nom-repart"]?></a>
</li>
<li title="<?=$i18n['onglet-descr-protect']?>" class="ui-state-default ui-corner-top <?= ($onglet == 'statut') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet" rel="statut" href="<?=$url;?>statut">
<?=$i18n["onglet-nom-protect"]?></a>
</li>
</ul>
<span id="conteneurMenuOnglets"></span>
<span><a class="lien-onglet lien-statique lien_retour_synthese" href="<?=$url;?>synthese">Retour à l'onglet Synthèse</a></span>
</div>
<div id="zone_contenu_fiche">
<?= $contenu_onglet ?>
</div>
</div>
/tags/v5.10-vilmorin/modules/fiche/squelettes/fiche_accueil_niveau3.tpl.html
New file
0,0 → 1,69
<?= $entete; ?>
<div id="bloc-fiche" class="importance4">
<h1>
<span class="famille nomenclature" style="float: right;">
<?php if($famille != '') { ?>
<a class="lien_recherche_hier" title="<?= $i18n['lien-recherche-hier-fam']; ?>" href="<?= $lien_recherche_famille ?>"> <?= $famille; ?> </a>
<?php } ?>
</span>
<span class="nomenclature"><?=$nom_retenu_html?></span>
</h1>
<?php if($nom_vernaculaire): ?>
<h2 class="vernaculaire"><?=$nom_vernaculaire;?></h2>
<?php endif; ?>
<?php if($nom_appele_html): ?>
<h3 class="redirige_depuis">
<span class="label_redirige_depuis">Nom recherché :</span>
<span class="valeur_redirige_depuis"><?= $nom_appele_html ?></span>
</h3>
<?php endif; ?>
 
<hr class="nettoyage" />
 
<div id="zone_onglets" class="ui-tabs ui-widget ui-widget-content ui-corner-all">
<? $url = htmlentities('index.php?referentiel='.Registre::get('parametres.referentiel').'&niveau='.Registre::get('parametres.niveau').'&module=fiche&action=fiche&num_nom='.$num_nom.'&type_nom='.$type_nom.'&nom='.$nom.'&onglet=');?>
<ul id="onglets" class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">
<li title="<?=$i18n['onglet-descr-synth']?>" id="onglet_synthese" class="ui-state-default ui-corner-top <?= ($onglet == 'synthese') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet lien-statique" rel="synthese" href="<?=$url;?>synthese">
<?=$i18n["onglet-nom-synth"]?></a>
</li>
<li title="<?=$i18n['onglet-descr-classif']?>" class="ui-state-default ui-corner-top <?= ($onglet == 'nomenclature') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet" rel="nomenclature" href="<?=$url;?>nomenclature">
<?=$i18n["onglet-nom-classif"]?></a>
</li>
<li title="<?=$i18n['onglet-descr-descr']?>" class="ui-state-default ui-corner-top <?= ($onglet == 'description') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet" rel="description" href="<?=$url;?>description">
<?=$i18n["onglet-nom-descr"]?></a>
</li>
<li title="<?=$i18n['onglet-descr-eco']?>" class="ui-state-default ui-corner-top <?= ($onglet == 'ecologie') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet" rel="ecologie" href="<?=$url;?>ecologie">
<?=$i18n["onglet-nom-eco"]?></a>
</li>
<li title="<?=$i18n['onglet-descr-ethnobota']?>" class="ui-state-default ui-corner-top <?= ($onglet == 'ethnobotanique') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet" rel="ethnobotanique" href="<?=$url;?>ethnobotanique">
<?=$i18n["onglet-nom-ethnobota"]?></a>
</li>
<li title="<?=$i18n['onglet-descr-biblio']?>" class="ui-state-default ui-corner-top <?= ($onglet == 'bibliographie') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet" rel="bibliographie" href="<?=$url;?>bibliographie">
<?=$i18n["onglet-nom-biblio"]?></a>
</li>
<li title="<?=$i18n['onglet-descr-illustra']?>" class="ui-state-default ui-corner-top <?= ($onglet == 'illustrations') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet" rel="illustrations" href="<?=$url;?>illustrations">
<?=$i18n["onglet-nom-illustra"]?></a>
</li>
<li title="<?=$i18n['onglet-descr-repart']?>" class="ui-state-default ui-corner-top <?= ($onglet == 'repartition') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet" rel="repartition" href="<?=$url;?>repartition">
<?=$i18n["onglet-nom-repart"]?></a>
</li>
<li title="<?=$i18n['onglet-descr-protect']?>" class="ui-state-default ui-corner-top <?= ($onglet == 'statut') ? 'ui-tabs-selected ui-state-active' : '' ;?>">
<a class="lien-onglet" rel="statut" href="<?=$url;?>statut">
<?=$i18n["onglet-nom-protect"]?></a>
</li>
</ul>
<span id="conteneurMenuOnglets"></span>
<span><a class="lien-onglet lien-statique lien_retour_synthese" href="<?=$url;?>synthese">Retour à l'onglet Synthèse</a></span>
</div>
<div id="zone_contenu_fiche">
<?= $contenu_onglet ?>
</div>
</div>
/tags/v5.10-vilmorin/modules/fiche/squelettes/fiche_illustrations_cel.tpl.html
New file
0,0 → 1,54
<? if (isset($cel)) : ?>
<?php if (isset($cel['images'])) : ?>
<ul class="liste-illustrations">
<?php foreach($cel['images'] as $id => $image) : ?>
<li><div>
<a class="lien_grand_format" target="_blank" title="Voir cette image dans son format original (s'ouvre dans une nouvelle fenêtre)" href="<?= $image['urlImgGrandFormat'] ?>">
<img src="<?= $image['src']; ?>" alt="Photographie n°<?=$id;?> du taxon <?=$image['nomSci']?>" data-num-image="<?=$id;?>" title="Voir cette image dans son format original (s'ouvre dans une nouvelle fenêtre)" />
</a>
<p>
<strong class="localisation"><?= $image['station']; ?></strong> - <strong class="date-creation"><?= $image['date']; ?></strong>
<br />par
<? if ($image['auteur.id']) : ?>
<a target="_blank" title="Voir le profil de cet utilisateur (nécessite d'être identifié)" href="<?= $image['urlProfil']; ?>">
<strong class="auteur"><?= $image['auteur'] ?></strong>
</a>&nbsp;&nbsp;
</p>
<div class="liste_actions_ill">
<a title="Envoyer un message à l'auteur à propos de cette image (nécessite d'être identifié)" class="mailto" href="<?= $image['urlContact']; ?>">
<img class="icone_action_ill" src="<?=Config::get('url_css_images')?>contact.png" />
</a>
<a title="Télécharger cette image dans différents formats" class="lien_telechargement_image" href="<?=Config::get('base_url_widget');?>telechargement?id_image=<?=$id?>">
<img class="icone_action_ill" src="<?=Config::get('url_css_images')?>sauver.png" />
</a>
<a title="Voir plus d'informations sur cette image (s'ouvre dans un popup)" class="lien-image-cel" data-num-image="<?=$id;?>" href="<?=$image['urlDetailImg'];?>">
<img class="icone_action_ill" src="<?=Config::get('url_css_images')?>infos_image.png" data-num-image="<?=$id;?>" />
</a>
<a title="Signaler une mauvaise identification ou en proposer une autre via l'outil identiplante" target="_blank" class="signaler-mauvaise-identification" href="<?= $image['urlMauvaiseIdentification']; ?>">
<img class="icone_action_ill" src="<?=Config::get('url_css_images')?>mauvaise_id.png" />
</a>
</div>
<? else : ?>
<strong class="auteur"><?= $image['auteur'] ?></strong>
&nbsp;&nbsp;(profil indisponible)
</p>
<div class="liste_actions_ill">
<a class="lien_telechargement_image" href="<?=Config::get('base_url_widget');?>telechargement?id_image=<?=$id?>">
<img class="icone_action_ill" src="<?=Config::get('url_css_images')?>sauver.png" />
</a>
<a title="Voir plus d'informations sur cette image (s'ouvre dans un popup)" class="lien-image-cel" data-num-image="<?= $image['id_image'] ?>" href="<?=$image['urlDetailImg'];?>">
<img class="icone_action_ill" src="<?=Config::get('url_css_images')?>infos_image.png" data-num-image="<?=$id;?>" />
</a>
<a title="Proposer une autre détermination via l'outil identiplante" target="_blank" class="signaler-mauvaise-identification" href="<?= $image['urlMauvaiseIdentification']; ?>">
<img class="icone_action_ill" src="<?=Config::get('url_css_images')?>mauvaise_id.png" />
</a>
</div>
<? endif ?><br />
</div>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
<hr class="nettoyage" />
<? endif ?>
/tags/v5.10-vilmorin/modules/fiche/squelettes/fiche_bibliographie.tpl.html
New file
0,0 → 1,36
<div class="onglet_contenu" id="bibliographie">
<? if (isset($flores)) : ?>
<h2> Flores </h2>
<ul class="liste_biblio_flores">
<?php foreach($flores['liste_flores'] as $flore) : ?>
<li class="item_biblio_flore"> <?= $flore ?></li>
<?php endforeach; ?>
</ul><hr class="nettoyage" />
<div class="conteneur_lien_metadonnees">
<?= $flores['meta']['titre']?>
<a class="lien_metadonnees lien_popup" href="<?= $flores['meta']['url']; ?>">Voir toutes les metadonnées</a>
</div>
<? endif; ?>
<h2> Références bibliographiques </h2>
<ul class="references_bibliographiques">
<?php foreach($bibliobota['references'] as $reference) : ?>
<li><?=$reference['reference_html']?></li>
<?php endforeach; ?>
</ul>
<a class="acceder-outil" href="http://www.tela-botanica.org/page:accueil_biblio">Participez aux projets collaboratifs liés à la bibliothèque</a>
<div class="conteneur_lien_metadonnees">
<?= $bibliobota['meta']['citation']?>
<a class="lien_metadonnees lien_popup" href="<?= $bibliobota['meta']['url']; ?>">Voir toutes les metadonnées</a>
</div>
<h2> Bibliographie collaborative : </h2>
<!-- TODO: cette phrase d'aide devrait être ajoutée avec javascript mais le système des onglets ajax nous en empêche -->
<span class="aide_wikini"> Participez à la rédaction collaborative de cette bibliograpĥie, un double clic dans le cadre suffit pour compléter ou corriger la page </span>
<div class="contenu_editable">
<div class="description wikini editable_sur_clic" title="biblio">
<?=$wikini['biblio']?>
</div>
</div>
</div>
/tags/v5.10-vilmorin/modules/fiche/squelettes/fiche_repartition.tpl.html
New file
0,0 → 1,92
<div class="onglet_contenu" id="repartition">
<? if (isset($repartition)) : ?>
<div id="repartition">
<h2>Chorologie départementale</h2>
<object class="chorodep_svg" type="image/svg+xml" data="<?=$repartition['svgUrl']?>" class="svg" alt="<?=$repartition['pngUrl']?>">
</object>
<div id="legende" style="position:absolute; margin-top:-250px;margin-left:20px;">
<h3>Légende</h3><br />
<? foreach ($repartition['legende'] as $id => $details) :?>
<div style="clear:left; ">
<div class="bloc_legende_repartition" style="background:<?=$details['couleur']?>"></div>
<div class="texte_legende_repartition"><b><?=$details['nom']?></b></div>
</div>
<? endforeach; ?>
</div>
<div class="conteneur_lien_metadonnees">
<?=$repartition['meta']['citation']?>
<span class="conteneur_lien_metadonnees">
<a class="lien_metadonnees lien_popup" href="<?= $repartition['meta']['url']; ?>">Voir toutes les metadonnées</a>
</span>
</div>
<a href="http://www.tela-botanica.org/page:liste_projets?id_projet=9&amp;act=description"
title="Carte en cours d'élaboration. Participez au projet" onclick="window.open(this.href); return false;"
class="acceder-outil">Participez au projet</a>
</div>
<? endif; ?>
<hr class="nettoyage" />
<? if (isset($moissonnage)) : ?>
<div id="moissonnage">
<h2>Observations</h2>
<div class="conteneur_repartition_observations" >
<object id="repartition_observations" type="text/html" data="<?=$moissonnage['mapUrl']?>" class="svg" alt="<?=$moissonnage['mapUrl']?>" style="width:620px; height:620px; overflow:none;">
</object>
</div>
<div id="legende" style="padding:15px;margin-top:-25px;">
<? foreach ($moissonnage['legende'] as $id => $details) :?>
<div style="clear:left;">
<div class="bloc_legende_repartition" style="background:<?=$details['couleur']?>"></div>
<div ><b><?=$details['nom']?> : </b><?=$details['description']?></div>
</div>
<? endforeach; ?>
</div>
<div id="carte_recalculer">
<span>Une fois générée, cette carte est mise en cache.</span>
<a href="#" id="lien_recalculer_carte">Recalculer la carte</a>
</div>
<div id="carte_telechargement">
<span>Télécharger la carte au format </span>
<a href="<?=$moissonnage['mapTelechargementUrls']['png']; ?>">png</a>&nbsp;
<a href="<?=$moissonnage['mapTelechargementUrls']['html']; ?>">html</a>
</div>
</div>
<hr class="nettoyage" />
<?endif;?>
<? if (isset($flore_probable)) : ?>
<div id="flore_probable">
<h2>Carte de la flore probable</h2>
<? if ($flore_probable['carte']['url'] != null) { ?>
<div class="conteneur_flore_probable">
<img id="carte_flore_probable" alt="Carte de la flore probable pour ce taxon" src="<?= $flore_probable['carte']['url'] ?>" />
</div>
<hr class="nettoyage" />
<?=$flore_probable['meta']['citation']?>
<span class="conteneur_lien_metadonnees">
<a class="lien_metadonnees lien_popup" href="<?= $flore_probable['meta']['url']; ?>">Voir toutes les metadonnées</a>
</span>
<? } else { ?>
<h3 class="aucune_info"> Aucune carte de flore probable pour ce taxon </h3>
<?php } ?>
</div>
<hr class="nettoyage" />
<?endif;?>
<div id="cel">
<h2>Observations du carnet en ligne</h2>
<iframe style="width:100%;height:500px" src="<?= Config::get('base_url_widget_carto'); ?>?num_taxon=<?=$widget['nt']?>&referentiel=<?=$widget['referentiel']; ?>"></iframe>
<a href="<?= Config::get('base_url_widget_carto'); ?>?num_taxon=<?=$widget['nt']?>&referentiel=<?=$widget['referentiel']; ?>">Consultez les données du carnet en ligne sur le widget carto</a>
<hr class="nettoyage" />
<div>
<a href="<?= Config::get('base_url_widget_saisie'); ?>?num_nom=<?=$widget['nn']?>&referentiel=<?=$widget['referentiel'] ?>" title="Ajouter une observation au moyen du Carnet en Ligne"
onclick="window.open(this.href); return false;" class="acceder-outil">
Rajouter une observation
</a>
</div>
</div>
<script type="text/javascript">
$.event.trigger('ongletRepartitionCharge');
</script>
</div>
/tags/v5.10-vilmorin/modules/popup_contact/presentations/scripts/identification.js
New file
0,0 → 1,96
$(document).ready(function() {
$("#connexion").on('click', connecter);
});
 
function connecter() {
var erreurMsg = "";
var urlWs = URL_WS_UTILISATEUR;
var courriel = $("#courriel").val();
var mdp = $("#mdp").val();
var persistance = $('#persistance').is(':checked');
var donnees = {'methode':'connexion', 'courriel':courriel, 'mdp':mdp, 'persistance':persistance};
$.ajax({
type : "PUT",
cache : false,
url : urlWs,
data : donnees,
beforeSend : nettoyerMsg,
success : function(data) {
if (data.identifie) {
rechargerPage();
} else {
afficherErreur(data.message);
}
},
error : function(jqXHR, textStatus, errorThrown) {
erreurMsg += "Erreur Ajax :\ntype : "+textStatus+' '+errorThrown+"\n";
erreurMsg += extraireInfosReponse(jqXHR);
afficherErreur('Une erreur est survenue lors de la connexion.');
if (DEBUG) {
console.log('Erreur : '+erreurMsg);
}
},
complete : function(jqXHR, textStatus) {
var debugMsg = extraireEnteteDebug(jqXHR);
if (DEBUG) {
console.log('Débogage : '+debugMsg);
}
}
});
return false;
}
 
function nettoyerMsg() {
$(".msg").remove();
}
 
function rechargerPage() {
window.location.reload();
}
 
function extraireInfosReponse(jqXHR) {
var erreurMsg = '';
try {
reponse = jQuery.parseJSON(jqXHR.responseText);
if (reponse != null) {
$.each(reponse, function (cle, valeur) {
erreurMsg += valeur + "\n";
});
}
} catch(e) {
erreurMsg += "L'erreur n'était pas en JSON.";
}
return erreurMsg;
}
 
function extraireEnteteDebug(jqXHR) {
var debugMsg = '';
if (jqXHR.getResponseHeader("X-DebugJrest-Data") != '') {
debugInfos = jQuery.parseJSON(jqXHR.getResponseHeader("X-DebugJrest-Data"));
if (debugInfos != null) {
$.each(debugInfos, function (cle, valeur) {
debugMsg += valeur + "\n";
});
}
}
return debugMsg;
}
 
function afficherErreur(msg) {
afficherTxt(msg, 'attention');
}
 
function afficherInfo(msg) {
afficherTxt(msg, 'information');
}
 
function afficherMsg(msg) {
afficherTxt(msg);
}
 
function afficherTxt(msg, type) {
type = type ? ' '+type : '';
nettoyerMsg();
$("#zone-dialogue").append('<pre class="msg'+type+'">'+msg+'</pre>');
}
/tags/v5.10-vilmorin/modules/popup_contact/presentations/scripts/contact.js
New file
0,0 → 1,121
$(document).ready(function() {
$("#annuler").on('click', fermerFenetre);
$("#effacer").on('click', effacerFomulaire);
$("#envoyer").on('click', envoyerCourriel);
});
 
function fermerFenetre() {
window.open('', '_self', '');// BUG : Chrome
window.close();
}
 
function effacerFomulaire() {
$("#sujet").attr('value', $("#sujet_defaut").val());
$("#message").text($("#message_defaut").val());
}
 
function envoyerCourriel(event) {
if (verifierFormContact()) {
if($("#type_envoi").val() == "non-inscrit") {
var destinataireId = $("#destinataire_id").val();
var urlMessage = URL_WS_MESSAGE_CEL+"/"+destinataireId;
} else {
var destinataireId = $("#destinataire_id").val();
var urlMessage = URL_WS_UTILISATEUR+"/"+destinataireId+"/message";
}
var erreurMsg = "";
var sujet = $("#sujet").val()+" - Carnet en ligne - Tela Botanica";
var message = $("#message").val()+"\n--\n"+
"Ce message vous est envoyé par l'intermédiaire de l'application eFlore du réseau Tela Botanica.\n"+
"http://www.tela-botanica.org/eflore";
var donnees = new Array();
donnees[0] = {'name':'sujet','value':sujet};
donnees[1] = {'name':'message','value':message};
donnees[2] = {'name':'utilisateur_courriel','value':$("#utilisateur_courriel").val()};
donnees[3] = {'name':'copies','value':$("#copies").val()};
donnees[4] = {'name':'destinataire_id','value':$("#destinataire_id").val()};
 
$.ajax({
type : "POST",
cache : false,
url : urlMessage,
data : donnees,
beforeSend : function() {
nettoyerMsg();
},
success : function(data) {
afficherInfo(data.message);
},
error : function(jqXHR, textStatus, errorThrown) {
erreurMsg += "Erreur Ajax :\ntype : "+textStatus+' '+errorThrown+"\n";
reponse = jQuery.parseJSON(jqXHR.responseText);
if (reponse != null) {
$.each(reponse, function (cle, valeur) {
erreurMsg += valeur + "\n";
});
}
},
complete : function(jqXHR, textStatus) {
var debugMsg = '';
if (jqXHR.getResponseHeader("X-DebugJrest-Data") != '') {
debugInfos = jQuery.parseJSON(jqXHR.getResponseHeader("X-DebugJrest-Data"));
if (debugInfos != null) {
$.each(debugInfos, function (cle, valeur) {
debugMsg += valeur + "\n";
});
}
}
if (erreurMsg != '') {
afficherMsg('Une erreur est survenue lors de la transmission de votre message.'+'<br />'+
'Vous pouvez signaler le disfonctionnement à <a href="'+
'mailto:cel@tela-botanica.org'+'?'+
'subject=Disfonctionnement du formulaire de contact'+
"&body="+erreurMsg+"\nDébogage :\n"+debugMsg+
'">eflore_remarques@tela-botanica.org</a>.');
}
if (DEBUG) {
console.log('Débogage : '+debugMsg);
}
}
});
} else {
afficherInfo('Veuillez saisir un message');
}
event.preventDefault();
return false;
}
 
function afficherInfo(msg) {
afficherTxt(msg, 'information');
}
 
function afficherMsg(msg) {
afficherTxt(msg);
}
 
function afficherTxt(msg, type) {
type = type ? ' '+type : '';
nettoyerMsg();
$("#zone-dialogue").append('<pre class="msg'+type+'">'+msg+'</pre>');
}
 
function nettoyerMsg() {
$(".msg").remove();
}
 
function verifierFormContact() {
var valide = true;
var msg = trim($("#message").val());
var msgDefaut = trim($("#message_defaut").val());
if (msg == msgDefaut) {
valide = false;
}
return valide;
}
 
function trim(chaine) {
return chaine.replace(/^\s+/g, '').replace(/\s+$/g, '');
}
/tags/v5.10-vilmorin/modules/popup_contact/presentations/styles/identification.css
New file
0,0 → 1,6
@CHARSET "UTF-8";
/*----------------------------------------------------------------------------------------------------------*/
/* Balises */
input[type="checkbox"]{
margin:2px 5px;
}
/tags/v5.10-vilmorin/modules/popup_contact/squelettes/form_identification.tpl.html
New file
0,0 → 1,22
<div class="importance1">
<div id="zone-dialogue">
<p class="msg attention">
Vous n'êtes pas identifié sur le site de Tela Botanica.<br />
Veuillez vous identifier afin d'accéder au formulaire de contact.
</p>
</div>
<form id="form-connexion" action="<?= $urlPopUp ?>" method="post">
<h3>Identifiez vous</h3>
<label for="courriel">Courriel : </label>
<input type="text" id="courriel" name="courriel" maxlength="80" value="" />
<label for="mdp">Mot de passe : </label>
<input type="password" id="mdp" name="mdp" maxlength="80" value="" />
<p>
<input type="submit" id="connexion" class="gauche btn" name="connexion" value="Connexion" />
<input id="persistance" class="gauche" name="persistance" type="checkbox" value="o" />
<label for="persistance">Rester connecté</label>
</p>
</form>
</div>
/tags/v5.10-vilmorin/modules/popup_contact/squelettes/form_contact.tpl.html
New file
0,0 → 1,28
<div class="importance1">
<div id="zone-dialogue"></div>
<form id="form-contact" method="post" action="<?= $urlPopUp ?>">
<div class="champ">
<label for="sujet">Sujet</label>
<input id="sujet" name="sujet" value="<?= $sujet ?>"/>
</div>
<div class="champ">
<label for="message">Message</label>
<textarea id="message" name="message" rows="10"><?= $message ?></textarea>
</div>
<div>
<input id="sujet_defaut" name="sujet_defaut" type="hidden" value="<?= $sujet ?>" />
<input id="message_defaut" name="message_defaut" type="hidden" value="<?= $message ?>" />
<input id="destinataire_id" name="destinataire_id" type="hidden" value="<?= $idDestinataire ?>" />
<input id="copies" name="copies" type="hidden" value="eflore_remarques@tela-botanica.org" />
<input id="utilisateur_courriel" name="utilisateur_courriel" type="hidden" value="<?= $utilisateurCourriel ?>"/>
<input id="type_envoi" name="type_envoi" type="hidden" value="<?= $typeEnvoi ?>"/>
<button id="annuler" class="btn" type="submit">Annuler</button>
<button id="effacer" class="btn" type="reset">Effacer</button>
<button id="envoyer" class="droite btn" type="submit">Envoyer</button>
</div>
</form>
</div>
/tags/v5.10-vilmorin/modules/popup_contact/squelettes/contact_entete.tpl.html
New file
0,0 → 1,14
<!-- CSS -->
<? if ($formType != 'contact') : ?>
<link href="modules/popup_contact/presentations/styles/<?= $formType ?>.css" rel="stylesheet" type="text/css"/>
<? endif; ?>
 
<!-- JavaScript -->
<script type="text/javascript">
//<![CDATA[
var DEBUG = false;
var URL_WS_UTILISATEUR = "<?= $urlWsUtilisateur ?>";
var URL_WS_MESSAGE_CEL = "<?= $urlWsMessageCel ?>";
//]]>
</script>
<script type="text/Javascript" src="modules/popup_contact/presentations/scripts/<?= $formType ?>.js"></script>
/tags/v5.10-vilmorin/modules/popup_contact/PopupContact.php
New file
0,0 → 1,108
<?php
// declare(encoding='UTF-8');
/**
* Affiche un formulaire de contact d'utilisateur.
*
* @category php 5.2
* @package eFlore-consultation
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright Copyright (c) 2012, Tela Botanica (accueil@tela-botanica.org)
* @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 $Id$
*/
 
class PopupContact extends aControleur {
 
private $conteneur = null;
private $imagesApi = null;
private $utilisateur = null;
private $appUrls = null;
private $id_destinataire = '';
private $id_image = '';
private $urlWsCelTpl = '';
private $urlWsAnnuaireUtilisateurTpl = '';
 
public function initialiser() {
$this->capturerParametres();
$this->conteneur = new Conteneur();
$this->imagesApi = $this->conteneur->getApiImages();
$this->utilisateur = $this->conteneur->getUtilisateur();
$this->appUrls = $this->conteneur->getAppUrls();
$this->urlWsAnnuaireUtilisateurTpl = $this->conteneur->getParametre('baseUrlServicesAnnuaireTpl');
$this->urlWsCelTpl = $this->conteneur->getParametre('baseUrlServicesCelTpl');
}
 
private function capturerParametres() {
if (isset($_GET['id_destinataire'])) {
$this->id_destinataire = $_GET['id_destinataire'];
}
if (isset($_GET['id_img'])) {
$this->id_image = $_GET['id_img'];
}
}
 
public function executerActionParDefaut() {
$this->executerForm();
}
 
public function executerForm() {
if ($this->utilisateur->etreIdentifie()) {
$this->afficherFormContact();
} else {
$this->afficherFormIdentification();
}
}
 
private function afficherFormContact() {
$this->setSortie(self::META_TITRE, 'Contactez un membre du réseau');
$entete = array();
$entete['formType'] = 'contact';
$entete['urlWsMessageCel'] = sprintf($this->urlWsCelTpl, 'celMessage/image');
$entete['urlWsUtilisateur'] = sprintf($this->urlWsAnnuaireUtilisateurTpl, 'utilisateur');
$this->setSortie(self::ENTETE, $this->getVue('contact_entete', $entete));
 
$infos = array();
// cas d'une obs saisie par une personne non inscrite
// le message doit être envoyé au cel qui fournira le courriel de l'auteur
if(trim($this->id_destinataire) == "") {
$infos['idDestinataire'] = $this->id_image;
$infos['typeEnvoi'] = 'non-inscrit';
} else {
$infos['idDestinataire'] = $this->id_destinataire;
$infos['typeEnvoi'] = 'inscrit';
}
$infos['idImage'] = $this->id_image;
$infos['utilisateurCourriel'] = $this->utilisateur->getCourriel();
$infos['urlPopUp'] = $this->appUrls->obtenirUrlPopUpContact($this->id_destinataire, $this->id_image);
 
$this->imagesApi->setProjet('cel');
// prêt à passer à API_DEL
// TODO: voir pourquoi la forme service:del:images/#id_image ne fonctionne pas
// et s'il est vraiment utile d'appeler DEL ici
$imageInfos = $this->imagesApi->setApi(Eflore::API_EFLORE)->getInfosImageParIdImage($this->id_image);
$idObs = $imageInfos['observation.id'];
$nomSci = $imageInfos['determination.nom_sci'];
$date = $imageInfos['date'];
$lieu = $imageInfos['station.libelle'];
 
$infos['sujet'] = "Observation #$idObs de $nomSci";
$infos['message'] = "\n\n\n\n\n\n\n\n--\nConcerne l'observation de $nomSci du $date au lieu $lieu";
 
$this->setSortie(self::RENDU_CORPS, $this->getVue('form_contact', $infos));
}
 
private function afficherFormIdentification() {
$this->setSortie(self::META_TITRE, 'Identification');
$entete = array();
$entete['formType'] = 'identification';
$entete['urlWsUtilisateur'] = sprintf($this->urlWsAnnuaireUtilisateurTpl, 'utilisateur');
$this->setSortie(self::ENTETE, $this->getVue('contact_entete', $entete));
 
$infos = array();
$infos['urlPopUp'] = $this->appUrls->obtenirUrlPopUpContact($this->id_destinataire, $this->id_image);
$this->setSortie(self::RENDU_CORPS, $this->getVue('form_identification', $infos));
}
}
?>
/tags/v5.10-vilmorin/modules/popup_illustrations/squelettes/popup_fiche_illustrations.tpl.html
New file
0,0 → 1,31
<div id="info-img">
<div class="img-cadre">
<img src="<?=$image['binaire.href']?>" alt="<?=$id?>" />
</div>
<div class="importance1">
<dl>
<dt>Photo n°</dt><dd><?=$id?></dd>
<dt>Titre</dt><dd><?= $image['determination.nom_sci'] ?><br /></dd>
<dt>Description</dt><dd><?= $image['determination.libelle'] ?><br /></dd>
<dt>Localisation</dt><dd><?=$image['station.commune'] ?><br /></dd>
<dt>Auteur</dt>
<dd>
<? if ($image['auteur.id']) : ?>
<a href="http://tela-botanica.org/profil:<?= $image['auteur.id'] ?>"
title="Voir le profil de cet utilisateur (nécessite d'être identifié)">
<?= $image['auteur.libelle'] ?>
</a>
<a title="Envoyer un message à l'auteur à propos de cette image (nécessite d'être identifié)"
class="mailto" href="<?= $urlContact ?>">
(Contacter ...)
</a>
<? else : ?>
<?= $image['auteur.libelle'] ?>
- (profil indisponible)
<? endif ?>
</dd>
<dt>Date d'observation</dt><dd><?= $image['date'] ?><br /></dd>
<dt>Licence</dt><dd><a class="lien-externe" href="http://www.tela-botanica.org/page:licence">CC-BY-SA</a></dd>
</dl>
</div>
</div>
/tags/v5.10-vilmorin/modules/popup_illustrations/PopupIllustrations.php
New file
0,0 → 1,67
<?php
// declare(encoding='UTF-8');
/**
* Affiche un pop-up avec les infos d'une illustration.
*
* @category php 5.2
* @package eFlore-consultation
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright Copyright (c) 2012, Tela Botanica (accueil@tela-botanica.org)
* @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 $Id$
*/
 
class PopupIllustrations extends aControleur {
private $conteneur = null;
private $id_image = '';
private $images = null;
private $appUrls = null;
 
public function initialiser() {
$this->capturerParametres();
$this->conteneur = new Conteneur();
$this->images = $this->conteneur->getApiImages();
$this->appUrls = $this->conteneur->getAppUrls();
}
 
private function capturerParametres() {
if (isset($_GET['id'])) {
$this->id_image = $_GET['id'];
}
}
 
public function executerActionParDefaut() {
$this->executerFiche();
}
 
public function executerFiche(){
$infos = array();
$this->images->setProjet('cel');
$img = $this->images->setApi(Eflore::API_EFLORE)->getInfosImageParIdImage($this->id_image); // prêt à passer à API_DEL
$infos['id'] = $this->id_image;
$img['date'] = $this->formaterDateImg($img['date']);
$infos['image'] = $img;
$infos['urlContact'] = $this->appUrls->obtenirUrlPopUpContact($img['auteur.id'], $this->id_image);
 
$this->setSortie(self::RENDU_CORPS, $this->getVue('popup_fiche_illustrations', $infos));
}
private function formaterDateImg($date) {
$dateFmt = $date;
if ($date == '0000-00-00' || $date == '1970-01-01 01:01:01') {
return 'inconnue';
}
$time = strtotime($date);
if(!$time) {
/* TODO: php -r "echo strtotime('1891-00-00 00:00:00');"
si FALSE pour avant 1901: problème php
On retourne alors simplement l'année. */
$dateFmt = explode('-', $date);
return $dateFmt[0];
}
return strftime('%e %B %Y', strtotime($date));
}
}
?>
/tags/v5.10-vilmorin/modules/fiche_metadonnees/squelettes/metadonnees.tpl.html
New file
0,0 → 1,87
<div>
<a id="lien_metadonnees_resume" href="#metadonnees_resume">Résumé</a>
<a id="lien_metadonnees" href="#metadonnees_resume">Détails</a>
<div id="metadonnees_resume">
<br />
<span class="intitule_metadonnee">Ces données proviennent de la base "</span><?= $metadonnees_resume['titre']; ?>" <br />
<span class="intitule_metadonnee">de</span> <?= $metadonnees_resume['auteurs']['noms'] ?><br /><br />
<span class="intitule_metadonnee">Description :</span>
<span class="metadonnees_resume_description"><?= $metadonnees_resume['description']; ?></span><br />
<span class="intitule_metadonnee">Citation : </span> "<?= $metadonnees_resume['citation'] ?>"<br /><br />
<?php if ($metadonnees_resume['date'] != null): ?>
<span class="intitule_metadonnee">Mise à jour le</span> <?= $metadonnees_resume['date']; ?>
<?php endif; ?>
<br/>
<?php if($metadonnees_resume['url'] != "") { ?>
<span class="intitule_metadonnee">Url du projet : </span><a href="<?= $metadonnees_resume['url']; ?>"><?= $metadonnees_resume['url']; ?></a><br />
<? } ?>
<?php if($metadonnees_resume['auteurs']['contacts'] != "") { ?>
<span class="intitule_metadonnee">Contact du ou des auteurs du projet : </span><?= $metadonnees_resume['auteurs']['contacts']; ?>
<? } ?>
</div>
 
<div id="metadonnees">
<ul>
<? foreach ($metadonnees as $donnee) : ?>
<? foreach ($donnee as $cle => $valeur) : ?>
<li>
<?php if(is_array($valeur)) { ?>
<? foreach ($valeur[0] as $sous_cle => $sous_valeur) : ?>
<ul class="sous-liste-metadonnees">
<li>
<?php if(trim($sous_cle) != '') { ?>
<span class="intitule_metadonnee"><?= $i18n[$sous_cle] ?> :</span>
<? } ?>
<span class="valeur_metadonnee"><?= $sous_valeur ?></span>
</li>
</ul>
<? endforeach; ?>
<?php } else { ?>
<?php if(trim($cle) != '') { ?>
<span class="intitule_metadonnee"><?= $i18n[$cle] ?> :</span>
<? } ?>
<span class="valeur_metadonnee"><?= $valeur ?></span>
<?php } ?>
</li>
<? endforeach; ?>
<? endforeach; ?>
</ul>
</div>
</div>
<script>
function redimensionnerFancyBox() {
$('#fancybox-inner').width("auto");
$('#fancybox-outer').width("auto");
$('#fancybox-content').width("auto");
}
 
function afficherResumeMetadonnees() {
$('#lien_metadonnees_resume').addClass("lien_metadonnees_affiche");
$('#lien_metadonnees').removeClass("lien_metadonnees_affiche");
$('#metadonnees_resume').show();
$('#metadonnees').hide();
}
function afficherMetadonneesCompletes() {
$('#lien_metadonnees').addClass("lien_metadonnees_affiche");
$('#lien_metadonnees_resume').removeClass("lien_metadonnees_affiche");
$('#metadonnees_resume').hide();
$('#metadonnees').show();
}
 
$(document).ready(function() {
afficherResumeMetadonnees();
$('#lien_metadonnees').click(function(event) {
afficherMetadonneesCompletes();
redimensionnerFancyBox();
event.preventDefault();
});
$('#lien_metadonnees_resume').click(function(event) {
afficherResumeMetadonnees();
redimensionnerFancyBox();
event.preventDefault();
});
});
</script>
/tags/v5.10-vilmorin/modules/fiche_metadonnees/FicheMetadonnees.php
New file
0,0 → 1,125
<?php
// declare(encoding='UTF-8');
/**
* Classe mère du module fiche metadonnées.
*
* @category PHP 5.2
* @package eflore-consultation
* @author Aurélien Peronnet <aurelien@tela-botanica.org>
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
* @copyright 2011 Tela-Botanica
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
class FicheMetadonnees extends aControleur {
 
private $projet = '';
private $serviceMetaDonnees;
 
public function __construct($metadonnees = null) {
$this->capturerParametres();
$this->serviceMetaDonnees = (is_null($this->serviceMetaDonnees)) ? new MetaDonnees($this->projet) : $metadonnees;
}
 
public function executerActionParDefaut() {
$this->executerAffichageMetaDonnees();
}
 
public function chargerMetadonneesHtml() {
$meta = $this->serviceMetaDonnees->getMetaDonnees();
$meta_resume = $this->formaterResumeMetadonnees($meta[0]);
$donnees['i18n'] = I18n::get('Metadonnees');
foreach ($meta as $index => $metadonnees) {
$meta[$index] = $this->formaterClesMetadonnees($metadonnees);
}
$donnees['metadonnees'] = $meta;
$donnees['metadonnees_resume'] = $meta_resume;
$html = $this->getVue(dirname(__FILE__).'/squelettes/metadonnees', $donnees);
return $html;
}
private function formaterResumeMetadonnees($meta) {
// tentative de retrouver une date de mise à jour
$dateCreationOuMaj = null;
if (! empty($meta['date_creation'])) {
$dateCreationOuMaj = strftime("%d/%m/%Y", strtotime($meta['date_creation']));
}
// retour
return array('auteurs' => $this->formaterAuteurs($meta),
'url' => $this->formaterUrl($meta),
'description' => $meta['description'],
'citation' => $meta['citation'],
'titre' => $meta['titre'],
'date' => $dateCreationOuMaj
);
}
private function formaterAuteurs($meta) {
$contacts = array();
$noms = array();
if(isset($meta['createurs.details'])) {
foreach($meta['createurs.details'] as $createur_detail) {
$auteur_nom_fmt = isset($createur_detail["p.nom"]) ? $createur_detail["p.nom"] : "";
$auteur_prenom_fmt = isset($createur_detail["p.prenom"]) ? $createur_detail["p.prenom"] : "";
$structure_fmt = isset($createur_detail["o.nom"]) ? $createur_detail["o.nom"] : "";
$auteur_contact = isset($createur_detail["p.courriel"]) ? $createur_detail["p.courriel"] : "";
if($auteur_prenom_fmt != "" || $auteur_nom_fmt != "") {
$nom_prenom_structure_fmt = $auteur_prenom_fmt.' '.$auteur_nom_fmt;
if($structure_fmt != "") {
$nom_prenom_structure_fmt .= " (".$structure_fmt.")";
}
$noms[] = $nom_prenom_structure_fmt;
}
if($auteur_contact != "") {
$contacts[] = $auteur_contact;
}
}
}
$createurs = array('noms' => implode(", ", $noms), 'contacts' => implode(", ", $contacts));
return $createurs;
}
private function formaterUrl($meta) {
return $meta['url_projet'];
}
 
public function executerAffichageMetaDonnees($donnees) {
header('Content-type: text/html; charset=UTF-8');
$html = $this->chargerMetadonneesHtml();
echo $html;
exit;
}
 
private function capturerParametres() {
if (isset($_GET['projet'])) {
$this->projet = $_GET['projet'];
}
}
private function formaterClesMetadonnees($metadonnees) {
$meta_fmt = array();
foreach ($metadonnees as $cle => $metadonnee) {
$cle_fmt = str_replace('.', '_', $cle);
if(is_array($metadonnee)) {
$metadonnee = $this->formaterClesMetadonnees($metadonnee);
} elseif($this->estUnLien($metadonnee)) {
$metadonnee = $this->formaterLienMetadonnee($metadonnee);
}
$meta_fmt[$cle_fmt] = $metadonnee;
}
return $meta_fmt;
}
private function estUnLien($valeur) {
// le test du pauvre, mais ça suffit ici
// car nous controlons le format des métadonnées
return strpos($valeur, "http://") !== false;
}
private function formaterLienMetadonnee($lien) {
return '<a href="'.$lien.'" target="_blank">'.$lien.'</a>';
}
}
?>
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/tags/v5.10-vilmorin/modules/liste/squelettes/liste.tpl.html
New file
0,0 → 1,53
<form id="form_liste_alphabet" name="form_liste_alphabet" method="get" action="<?=$urlFiltre;?>">
<input id="referentiel" name="referentiel" type="hidden" value="<?=$referentiel?>"/>
<input id="module" name="module" type="hidden" value="<?=$module?>"/>
<input id="action" name="action" type="hidden" value="<?=$action?>"/>
<fieldset>
<h2>Choisissez un rang</h2>
<p>Vous pouvez choisir d'afficher la liste des noms retenus des taxons pour les rangs suivant :</p>
<label for="rang">Rang :</label>
<select id="rang" name="rang">
<? foreach ($rangCodes as $codeRang) : ?>
<option
<?= ($codeRang == $rang) ? 'selected="selected"' : '' ?>
value="<?=$codeRang?>">
<?=$i18n['rang'.$codeRang]?>
</option>
<? endforeach; ?>
</select>
<button id="rang-submit" name="lettre" type="submit" value="<?=$lettre?>">OK</button>
</fieldset>
<fieldset>
<h2>Consultez les <?=strtolower($i18n['rang'.$rang])?>s par ordre alphabétique</h2>
<p>Plus la couleur de fond de la lettre est foncée plus, elle contient de taxons. Son survol avec la souris fait apparaitre le nombre de taxons présents.</p>
<p id="alphabet">
<? foreach ($initiales as $initiale => $nbre) : ?>
<button name="lettre" type="submit"
title="<?=$nbre?> taxons"
value="<?=isset($lettreCorrespondance[$initiale]) ? $lettreCorrespondance[$initiale] : $initiale?>"
<?=($initiale == $lettre) ? 'disabled="disabled"' : ''?>
style="background-color:rgb(<?=$couleurs[$nbre]['R']?>,<?=$couleurs[$nbre]['V']?>,<?=$couleurs[$nbre]['B']?>);color:black;">
<?=$initiale?>
</button>
<? endforeach; ?>
</p>
</fieldset>
</form>
 
<?php if ($taxons) : ?>
<h1>Taxons trouvés : <?=$nbreTaxons?></h1>
<ol>
<? foreach ($taxons as $id => $taxon) : ?>
<li>
<a href="#">
<?=$taxon['nom_sci']?>
</a>
</li>
<? endforeach; ?>
</ol>
<?php else : ?>
<p>Aucun taxon n'a été trouvé pour la lettre <?=$lettre?>.</p>
<?php endif; ?>
/tags/v5.10-vilmorin/modules/liste/Liste.php
New file
0,0 → 1,137
<?php
// declare(encoding='UTF-8');
/**
* Classe mère du module Liste.
*
* @category PHP 5.2
* @package eflore-consultation
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
* @copyright 2011 Tela-Botanica
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
class Liste extends aControleur {
private $alphabet = null;
protected $rang = null;
protected $lettre = null;
private $rangsCorrespondance = array('F' => 'Famille', 'G' => 'Genre');
public function initialiser() {
$this->capturerParametres();
}
public function executerActionParDefaut() {
$this->executerListe();
}
public function executerListe() {
$this->initialiserAlphabet();
$this->initialiserLettre();
$couleurs = $this->creerColoration($this->alphabet);
$taxons = $this->getListeTaxons();
 
$donnees = array();
$donnees['i18n'] = I18n::get('Liste');
$donnees['lettre'] = $this->lettre;
$donnees['rang'] = $this->rang;
$donnees['rangCodes'] = array_keys($this->rangsCorrespondance);
$donnees['initiales'] = $this->alphabet;
$donnees['lettreCorrespondance'] = $this->chargerCorrespondanceSpeciale();
$donnees['couleurs'] = $couleurs;
$donnees['taxons'] = $taxons;
$donnees['nbreTaxons'] = $this->getEfloreTaxons()->getEnteteTotal();
$donnees['urlFiltre'] = $this->obtenirUrlBase();
$donnees['referentiel'] = Registre::get('parametres.referentiel');
$donnees['module'] = strtolower(get_class($this));
$donnees['action'] = 'liste';
$this->setSortie(self::RENDU_CORPS, $this->getVue('liste', $donnees));
}
private function capturerParametres() {
if (isset($_GET['rang'])) {
$this->rang = $_GET['rang'];
}
if (isset($_GET['lettre'])) {
$this->lettre = $_GET['lettre'];
}
}
private function initialiserAlphabet() {
if (!isset($this->alphabet)) {
$this->alphabet = $this->getStatsInitiales();
}
ksort($this->alphabet);
}
 
private function initialiserLettre() {
if (empty($this->lettre)) {
if (!is_null($this->alphabet)) {
$this->lettre = key($this->alphabet);
} else {
$m = "Aucune lettre n'a pu être initialiser car l'alphabet vaut null.";
trigger_error($m, E_USER_WARNING);
}
}
}
private function chargerCorrespondanceSpeciale() {
return array('chimere' => '+', 'hybride' => '×');
}
private function getStatsInitiales() {
$nomRang = $this->getNomCodeRang();
$stats = array();
if ($nomRang) {
$methode = 'getStatsInitiales'.$nomRang;
$stats = $this->getEfloreTaxons()->$methode();
}
return $stats;
}
private function getListeTaxons() {
$taxons = false;
if (isset($this->lettre)) {
$nomRang = $this->getNomCodeRang();
if ($nomRang) {
$methode = "getListe{$nomRang}ParInitiale";
$taxons = $this->getEfloreTaxons()->$methode($this->lettre);
}
}
return $taxons;
}
private function getNomCodeRang() {
$nom = false;
if (array_key_exists($this->rang, $this->rangsCorrespondance)) {
$nom = $this->rangsCorrespondance[$this->rang];
} else {
$m = "Ce code de rang '{$this->rang}' est inconnu. Codes disponibles : ".implode(', ', $this->rangsCorrespondance);
trigger_error($m, E_USER_WARNING);
}
return $nom;
}
/**
* Gestion de la coloration de l'alphabet en fonction du nombre de résultat
*/
private function creerColoration($alphabet) {
$debut = explode(',', Config::get('couleur_alphabet_debut')); // Tableau RGB de départ
$fin = explode(',', Config::get('couleur_alphabet_fin')); // Tableau RGB d'arrivée
$rvbAbreviations = array('R','V','B');
$nbreLettres = count($alphabet);
$valeurMax = max($alphabet);
$couleurs = array();
foreach ($alphabet as $lettre => $nbre) {
foreach ($rvbAbreviations as $index => $rvb) { //Pour faire le Rouge, Vert, Bleu
$couleurs[$nbre][$rvb] = round($debut[$index] - (($debut[$index]-$fin[$index]) / $valeurMax * $nbre) , 0);
}
}
return $couleurs;
}
}
?>
/tags/v5.10-vilmorin/modules/recherche_simple/squelettes/form_nom.tpl.html
New file
0,0 → 1,63
<!-- DEBUT FORM_NOM -->
<script type="text/javascript">
<!--
var AUTOCOMPLETION_ELEMENTS_NBRE = 50;
var URL_SERVICE_AUTOCOMPLETION_NOM_SCI = "<?=$url_base_completion_noms_sci?>";
var URL_SERVICE_AUTOCOMPLETION_NOM_VERNA = "<?=$url_base_completion_noms_verna?>";
var VALEUR_DEFAUT_NOM_SCI = "<?= $i18n['valeur-form-nom-sci']; ?>";
var VALEUR_DEFAUT_NOM_VERNA = "<?= $i18n['valeur-form-nom-verna']; ?>";
var VALEUR_DEFAUT_AU = "<?=$i18n['valeur-form-auteur']?>";
var VALEUR_DEFAUT_BIB = "<?=$i18n['valeur-form-bib']?>";
var VALEUR_DEFAUT_DATE = "<?=$i18n['valeur-form-date']?>";
var URL_BASE_FICHE_TAXON = "<?=$url_base_fiche_taxon?>";
var URL_BASE_POPUP = "<?=Config::get('base_url_application_popup');?>";
var REFERENTIEL = "<?= Registre::get('parametres.referentiel');?>";
// -->
</script>
<form id="ef-form-nomenclature" name="ef-form-nomenclature" action="<?=$url_form;?>" method="get">
<fieldset>
<span class="zone-choix-type-nom">
<?php if (isset($nom_verna)) { ?>
<span class="type-nom">
<input id="type_nom_scientifique" name="type_nom" value="nom_scientifique" type="radio" <?=($type_nom == 'nom_scientifique') ? 'checked="checked"': '';?> />
<label for="type_nom_scientifique"><?=$i18n['ns'];?></label>
</span>
<span class="type-nom">
<input id="type_nom_vernaculaire" name="type_nom" value="nom_vernaculaire" type="radio" <?=($type_nom == 'nom_vernaculaire') ? 'checked="checked"': '';?> />
<label for="type_nom_vernaculaire" title="(en français, allemand, anglais, catalan, espagnol, italien ou néerlandais)"><?=$i18n['nv'];?></label>
</span>
<?php } else {?>
<input id="type-nom-scientifique" name="type_nom" type="hidden" value="nom_scientifique" />
<?=$i18n['ns'];?>
<?php } ?>
</span>
<input id="nom" name="nom" class="champ" size="30" maxlength="255" type="text" <?php if(isset($nom)) echo 'value="'.$nom.'"';?> />
<span id="zone-liens-recherche">
<input id="eflore_nomenclature_referentiel" name="referentiel" type="hidden" value="<?=Registre::get('parametres.referentiel')?>" />
<input id="eflore_nomenclature_niveau" name="niveau" type="hidden" value="<?=Registre::get('parametres.niveau')?>" />
<input id="eflore_nomenclature_module" name="module" type="hidden" value="recherche" />
<input id="eflore_nomenclature_action" name="action" type="hidden" value="rechercheSimple" />
<input id="eflore_nomenclature_submit" name="submit" type="submit" value="<?=$i18n['recherche'];?>" class="ok"/>
<input id="eflore_nomenclature_fiche" name="acces_fiche" type="submit" value="<?=$i18n['fiche'];?>" />
</span>
</fieldset>
</form>
 
 
<?php if (isset($message)) : ?>
<p class="<?= (isset($message['attention'])) ? 'attention' : 'information'; ?>">
<?= (isset($message['attention'])) ? $i18n[$message['attention']] : ''; ?>
<?= (isset($message['nom_ss_corresp'])) ? $message['nom_ss_corresp']['nom'].$i18n['nom_ss_corresp'].
'<a href="http://referentiels.tela-botanica.org/referentiel/index.php?ref=bdtfx&module=FicheTaxon&num_nom='.$message['nom_ss_corresp']['id'].'">'.
$i18n['reftax'].'</a>' : ''; ?>
<?php if (isset($message['nom_approche'])) : ?>
<?=$i18n['orthographe'];?>
<?php foreach ($message['nom_approche'] as $cle => $nom) :?>
<a href="<?=$nom['url_nom_approche']?>"><?=$nom['nom'];?></a>
<?= (isset($message['nom_approche'][$cle+1]['nom'])) ? ' ou ' : ''; ?>
<?php endforeach; ?>
<?php endif; ?>
</p>
<?php endif; ?>
<!-- FIN FORM_NOM -->
/tags/v5.10-vilmorin/modules/recherche_simple/RechercheSimple.php
New file
0,0 → 1,40
<?php
class RechercheSimple extends aControleur {
 
//+----------------------------------------------------------------------------------------------------------------+
// Méthodes
/**
* Fonction d'affichage par défaut
*/
public function executerActionParDefaut() {
$this->afficherMoteurSimple();
}
 
private function afficherMoteurSimple() {
$donnees['form_nom'] = $this->executerFormulaireNom();
$this->setSortie(self::RENDU_CORPS, $donnees['form_nom']);
}
 
 
public function executerFormulaireNom($donnees = array()) {
$donnees['url_base_completion_noms_verna'] = "";
if (Config::get(Registre::get('parametres.referentiel').'.referentielVerna')) {
if (!isset($donnees['type_nom'])) {
$donnees['type_nom'] = (Registre::get('parametres.niveau') == 1) ? 'nom_vernaculaire' : 'nom_scientifique';
}
$donnees['nom_verna'] = true;
$donnees['referentielVerna'] = Config::get(Registre::get('parametres.referentiel').'.referentielVerna');
$donnees['url_base_completion_noms_verna'] = str_replace('{projet}', $donnees['referentielVerna'], Config::get('nomsVernaTpl'));
}
$donnees['referentiel'] = Registre::get('parametres.referentiel');
 
// nécessaire pour une autocomplétion indépendante, pour ne pas avoir à modifier le javascript
$donnees['url_base_completion_noms_sci'] = str_replace('{projet}', $donnees['referentiel'], Config::get('nomsTpl'));
$donnees['url_base_fiche_taxon'] = str_replace('&amp;', '&', $this->urls->obtenirUrlFiche('{num_taxon}', 'nom_scientifique'));
 
$donnees['url_form'] = $this->urls->obtenirUrlBase();
$donnees['i18n'] = I18n::get('Recherche-form-nom');
return $this->getVue('form_nom', $donnees);
}
}
?>
/tags/v5.10-vilmorin/.htaccess
New file
0,0 → 1,0
AddDefaultCharset UTF-8
/tags/v5.10-vilmorin/bibliotheque/QrCode.php
New file
0,0 → 1,81
<?php
/**
* BarcodeQR - Code QR Barcode Image Generator (PNG)
*
* @package BarcodeQR
* @category BarcodeQR
* @name BarcodeQR
* @version 1.0
* @author Shay Anderson 05.11
* @link http://www.shayanderson.com/php/php-qr-code-generator-class.htm
* @license http://www.gnu.org/licenses/gpl.html GPL License
* This is free software and is distributed WITHOUT ANY WARRANTY
*/
final class QrCode {
 
private $API_CHART_URL = '';
private $taille = '150';
private $contenu;
private $urlQrCodeTpl;
private $dossierQrCode;
 
public function __construct($conteneur) {
$this->API_CHART_URL = $conteneur->getParametre('urlApiChart');
$this->dossierQrCode = $conteneur->getParametre('dossierQrCode');
$this->urlQrCodeTpl = $conteneur->getParametre('urlQrCodeTpl');
}
 
/**
* URL code
*
* @param string $url
*/
public function setUrl($url = '') {
$this->contenu = $url;
}
 
/**
* Taille du QRcode en pixel. Cela sera forcément un carré.
*
* @param string $taille
*/
public function setTaille($taille) {
$this->taille = $taille;
}
 
/**
* Generate QR code image
*
* @param string $filename
* @return bool
*/
public function dessiner($idQrCode = null) {
if (!preg_match('/\.png$/i', $idQrCode)) {
$idQrCode .= '.png';
}
$cheminImg = $this->dossierQrCode.$idQrCode;
if (file_exists($cheminImg) == false) {
$ch = curl_init();
// For Debugging
//curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
//curl_setopt($ch, CURLOPT_STDERR, $f = fopen("$cheminImg.txt", "w+"));
 
curl_setopt($ch, CURLOPT_URL, $this->API_CHART_URL);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, "chs={$this->taille}x{$this->taille}&cht=qr&chl=".urlencode($this->contenu));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$img = curl_exec($ch);
curl_close($ch);
 
// For Debugging
//fclose($f);
 
file_put_contents($cheminImg, $img);
}
$urlQrCode = sprintf($this->urlQrCodeTpl, $idQrCode);
return $urlQrCode;
}
}
?>
/tags/v5.10-vilmorin/bibliotheque/ChaineManipulateur.php
New file
0,0 → 1,76
<?php
// declare(encoding='UTF-8');
/**
* Classe fournissant des méthodes statiques de manipulation des chaînes de caractères (String).
*
* @category PHP 5.2
* @package eFlore/Bibliotheque
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org)
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
class ChaineManipulateur {
private $encodage = 'UTF-8';
private $caracteresAccentues = array(
'À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î',
'Ï', 'Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'ß',
'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î',
'ï', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', 'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'ÿ', 'Ā',
'ā', 'Ă', 'ă', 'Ą', 'ą', 'Ć', 'ć', 'Ĉ', 'ĉ', 'Ċ', 'ċ', 'Č', 'č', 'Ď', 'ď',
'Đ', 'đ', 'Ē', 'ē', 'Ĕ', 'ĕ', 'Ė', 'ė', 'Ę', 'ę', 'Ě', 'ě', 'Ĝ', 'ĝ', 'Ğ',
'ğ', 'Ġ', 'ġ', 'Ģ', 'ģ', 'Ĥ', 'ĥ', 'Ħ', 'ħ', 'Ĩ', 'ĩ', 'Ī', 'ī', 'Ĭ', 'ĭ',
'Į', 'į', 'İ', 'ı', 'IJ', 'ij', 'Ĵ', 'ĵ', 'Ķ', 'ķ', 'Ĺ', 'ĺ', 'Ļ', 'ļ', 'Ľ',
'ľ', 'Ŀ', 'ŀ', 'Ł', 'ł', 'Ń', 'ń', 'Ņ', 'ņ', 'Ň', 'ň', 'ʼn', 'Ō', 'ō', 'Ŏ',
'ŏ', 'Ő', 'ő', 'Œ', 'œ', 'Ŕ', 'ŕ', 'Ŗ', 'ŗ', 'Ř', 'ř', 'Ś', 'ś', 'Ŝ', 'ŝ',
'Ş', 'ş', 'Š', 'š', 'Ţ', 'ţ', 'Ť', 'ť', 'Ŧ', 'ŧ', 'Ũ', 'ũ', 'Ū', 'ū', 'Ŭ',
'ŭ', 'Ů', 'ů', 'Ű', 'ű', 'Ų', 'ų', 'Ŵ', 'ŵ', 'Ŷ', 'ŷ', 'Ÿ', 'Ź', 'ź', 'Ż',
'ż', 'Ž', 'ž', 'ſ', 'ƒ', 'Ơ', 'ơ', 'Ư', 'ư', 'Ǎ', 'ǎ', 'Ǐ', 'ǐ', 'Ǒ', 'ǒ',
'Ǔ', 'ǔ', 'Ǖ', 'ǖ', 'Ǘ', 'ǘ', 'Ǚ', 'ǚ', 'Ǜ', 'ǜ', 'Ǻ', 'ǻ', 'Ǽ', 'ǽ', 'Ǿ', 'ǿ');
private $caracteresNormaux = array(
'A', 'A', 'A', 'A', 'A', 'A', 'AE', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I',
'I', 'D', 'N', 'O', 'O', 'O', 'O', 'O', 'O', 'U', 'U', 'U', 'U', 'Y', 's',
'a', 'a', 'a', 'a', 'a', 'a', 'ae', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i',
'i', 'n', 'o', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'y', 'y', 'A', 'a',
'A', 'a', 'A', 'a', 'C', 'c', 'C', 'c', 'C', 'c', 'C', 'c', 'D', 'd', 'D', 'd',
'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'G', 'g', 'G', 'g', 'G', 'g',
'G', 'g', 'H', 'h', 'H', 'h', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i',
'IJ', 'ij', 'J', 'j', 'K', 'k', 'L', 'l', 'L', 'l', 'L', 'l', 'L', 'l', 'l', 'l',
'N', 'n', 'N', 'n', 'N', 'n', 'n', 'O', 'o', 'O', 'o', 'O', 'o', 'OE', 'oe', 'R',
'r', 'R', 'r', 'R', 'r', 'S', 's', 'S', 's', 'S', 's', 'S', 's', 'T', 't', 'T', 't',
'T', 't', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'W', 'w', 'Y',
'y', 'Y', 'Z', 'z', 'Z', 'z', 'Z', 'z', 's', 'f', 'O', 'o', 'U', 'u', 'A', 'a', 'I',
'i', 'O', 'o', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'A', 'a', 'AE', 'ae', 'O', 'o');
 
public function __construct($encodage = null) {
if (is_string($encodage)) {
$this->setEncodage($encodage);
}
}
 
public function setEncodage($encodage) {
$this->encodage = $encodage;
}
 
/**
* Supprime ou remplace les accents d'une chaine en PHP.
* La solution retenu, provenant du site
* {@link http://www.lecoindunet.com/zone_php/scripts_utiles/remplacer-les-caracteres-accentues-dune-chaine-en-php-72 lecoindunet.com},
* consiste en deux tableaux (caractères avec et sans accents) car cela permetra éventuellement
* de fournir des méthodes pour récupérer ces tableaux pour d'autres traitements.
* Une autre solution aurait été d'utiliser les entités HTML comme proposé par le site
* {@link http://www.weirdog.com/blog/php/supprimer-les-accents-des-caracteres-accentues.html weirdog.com}.
*
* @param String $chaine la chaine de caractères dans laquelle supprimer les accents.
* @param String $encodage le code d'encodage de la chaine si ce n'est pas de l'UTF-8.
* @return la chaine de caractères sans accent.
*/
public function supprimerAccents($chaine) {
if ($this->encodage != 'UTF-8') {
mb_convert_variables($encodage, 'UTF-8', $this->caracteresAccentues, $this->caracteresNormaux);
}
return str_replace($this->caracteresAccentues, $this->caracteresNormaux, $chaine);
}
}
?>
/tags/v5.10-vilmorin/bibliotheque/Surligneur.php
New file
0,0 → 1,97
<?php
class Surligneur {
private $texte = '';
private $texteSansAccent = '';
private $tags = array();
private $nbreSurlignageMaxParMot = 1;
private $nbreSurlignageCourant = 0;
 
public function __construct($texte = null, $surlignageMaxParMot = null) {
if (is_null($texte) == false) {
$this->setTexte($texte);
}
if (is_null($surlignageMaxParMot) == false) {
$this->setNbreMaxSurlignageParMot($surlignageMaxParMot);
}
}
 
public function setTexte($txt) {
$this->texte = $txt;
}
 
public function setNbreMaxSurlignageParMot($nbre) {
$this->nbreSurlignageMaxParMot = $nbre;
}
function supprimerAccents($chaine){
return strtr($chaine,array('à' => 'a','á' => 'a','â' => 'a','ã' => 'a','ä' => 'a',
'ç' => 'c',
'è' => 'e','é' => 'e','ê' => 'e','ë' => 'e',
'ì' => 'i','í' => 'i','î' => 'i','ï' => 'i',
'ñ' => 'n',
'ò' => 'o', 'ó' => 'o' , 'ô' => 'o', 'õ' => 'o', 'ö' => 'o',
'ù' => 'u', 'ú' => 'u', 'û' => 'u', 'ü' => 'u',
'ý' => 'y', 'ÿ' => 'y'));
}
 
public function surlignerMots($mots) {
$this->verifierTableauDeMots($mots);
$this->texte = preg_replace_callback('`<[^>]+>`', array($this, 'sauverTags'), $this->texte);
foreach ($mots as $mot) {
$this->initialiserNbreSurlignageCourant();
$this->texte = $this->surlignerMot($mot);
}
$this->texte = preg_replace_callback('`<([0-9]+)>`', array($this, 'restaurerTags'), $this->texte);
return $this->texte;
}
 
private function verifierTableauDeMots($mots) {
if (is_array($mots) === false) {
$message = "Surligneur::surlignerMots() n'accepte que les tableaux de mots en argument";
throw new InvalidArgumentException($message);
} else {
if (count($mots) == 0) {
$message = "Surligneur::surlignerMots() n'accepte que des tableaux contenant au moins un mot";
throw new LengthException($message);
}
}
}
 
private function sauverTags($match) {
$i = count($this->tags);
$this->tags[$i] = $match[0];
return '<'.$i.'>';
}
 
private function initialiserNbreSurlignageCourant() {
$this->nbreSurlignageCourant = 0;
}
 
private function surlignerMot($mot) {
$positionDebutMot = stripos($this->texte, $mot);
$longueurMot = strlen($mot);
$surlignage = $this->texte;
if ($positionDebutMot !== false) {
$this->nbreSurlignageCourant++;
if ($this->nbreSurlignageCourant <= $this->nbreSurlignageMaxParMot) {
$debut = substr($this->texte, 0, $positionDebutMot);
$milieu = substr($this->texte, $positionDebutMot, $longueurMot);
$this->texte = substr($this->texte, $positionDebutMot + $longueurMot);
$fin = $this->surlignerMot($mot);
$surlignage = $debut.$this->sauverTagSurlignage($milieu).$fin;
}
}
return $surlignage;
}
 
private function sauverTagSurlignage($motTrouve) {
$i = count($this->tags);
$this->tags[$i] = '<span class="surlignage">'.$motTrouve.'</span>';
return '<'.$i.'>';
}
private function restaurerTags($match) {
return $this->tags[$match[1]];
}
}
?>
/tags/v5.10-vilmorin/bibliotheque/Conteneur.php
New file
0,0 → 1,159
<?php
class Conteneur {
protected $parametres = array();
protected $partages = array();
 
public function __construct(array $parametres = null) {
$this->parametres = is_null($parametres) ? array() : $parametres;
}
 
public function getParametre($cle) {
$valeur = isset($this->parametres[$cle]) ? $this->parametres[$cle] : Config::get($cle);
return $valeur;
}
 
public function getParametreTableau($cle) {
$tableau = array();
$parametre = $this->getParametre($cle);
if (empty($parametre) === false) {
$tableauPartiel = explode(',', $parametre);
$tableauPartiel = array_map('trim', $tableauPartiel);
foreach ($tableauPartiel as $champ) {
if (strpos($champ, '=') === false) {
$tableau[] = trim($champ);
} else {
list($cle, $val) = explode('=', $champ);
$tableau[trim($cle)] = trim($val);
}
}
}
return $tableau;
}
 
public function setParametre($cle, $valeur) {
$this->parametres[$cle] = $valeur;
}
 
public function getAppUrls() {
if (!isset($this->partages['AppUrls'])){
$this->partages['AppUrls'] = new AppUrls();
}
return $this->partages['AppUrls'];
}
 
public function getApiNoms() {
$noms = new Noms($this->getParametre('referentiel'));
return $noms;
}
 
public function getApiTaxons() {
$taxons = new Taxons($this->getParametre('referentiel'));
return $taxons;
}
 
public function getApiBiblioBota() {
$biblioBota = new BiblioBota();
return $biblioBota;
}
 
public function getApiImages() {
$images = new Images();
return $images;
}
 
public function getApiCartes() {
$cartes = new Cartes();
return $cartes;
}
 
public function getApiNomsVernaculaires() {
$nomsVernaculaires = new NomsVernaculaires();
return $nomsVernaculaires;
}
 
public function getApiTextes() {
$textes = new Textes();
return $textes;
}
 
public function getApiWikini() {
$wiki = new Wikini();
return $wiki;
}
public function getApiGraphiques() {
$graphique = new Graphiques();
return $graphique;
}
public function getApiSyntaxons() {
$syntaxon = new Syntaxons();
return $syntaxon;
}
 
public function getApiMetaDonnees() {
$meta = new MetaDonnees();
return $meta;
}
public function getApiInformations() {
$informations = new Informations();
return $informations;
}
public function getApiStatuts() {
$statuts = new Statuts();
return $statuts;
}
 
public function getNomCourant() {
if (!isset($this->partages['NomCourant'])){
$nns = $this->getParametre('num_nom');
$noms = $this->getApiNoms();
$taxons = $this->getApiTaxons();
$this->partages['NomCourant'] = new NomCourant($nns, $noms, $taxons);
}
return $this->partages['NomCourant'];
}
 
public function getUtilisateur() {
if (!isset($this->partages['Utilisateur'])){
$this->partages['Utilisateur'] = new Utilisateur($this);
}
return $this->partages['Utilisateur'];
}
 
public function getBdd() {
if (!isset($this->partages['Bdd'])){
$this->partages['Bdd'] = new Bdd();
}
return $this->partages['Bdd'];
}
public function getCache($dossierStockage = null) {
if (!isset($this->partages['Cache'])){
$params = array(
'mise_en_cache' => $this->getParametre('cache'),
'stockage_chemin' => is_null($dossierStockage) ? $this->getParametre('chemincache') : $dossierStockage,
'duree_de_vie' => $this->getParametre('dureecache')
);
$this->partages['Cache'] = new CacheSimple($params);
}
return $this->partages['Cache'];
}
 
public function getRestClient() {
if (!isset($this->partages['RestClient'])){
$this->partages['RestClient'] = new RestClient();
}
return $this->partages['RestClient'];
}
public function getQrCode() {
if (!isset($this->partages['QrCode'])){
$this->partages['QrCode'] = new QrCode($this);
}
return $this->partages['QrCode'];
}
}
?>
/tags/v5.10-vilmorin/bibliotheque/TableauManipulateur.php
New file
0,0 → 1,58
<?php
// declare(encoding='UTF-8');
/**
* Classe fournissant des méthodes de manipulation de tableau (Array).
*
* @category PHP 5.2
* @package eFlore/Bibliotheque
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org)
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
class TableauManipulateur {
 
private $tableau = array();
 
public function __construct(Array $tableau = null) {
if (is_array($tableau)) {
$this->setTableau($tableau);
}
}
 
public function setTableau(Array $tableau) {
$this->tableau = $tableau;
}
 
public function getTableau() {
return $this->tableau;
}
 
/**
* Etend le tableau principal avec les données du tableau à copier. Si des clés sont identiques entre les deux tableaux
* une excetion est déclenchée et la valeur du tableau à étendre est gardée. Si les deux tableaux ont des clés numériques
* leurs valeurs sont gardées (à la différence de array_merge).
* Le tableau à copier est passé par copie et il est progressivement détruit pour éviter la consomation
* de mémoire.
*
* @param array $tableau_a_copier
* @return void
*/
public function etendreAvec(Array $tableau_a_copier) {
$cles_existantes = null;
foreach ($tableau_a_copier as $cle => $val) {
if (array_key_exists($cle, $this->tableau) == false) {
$this->tableau[$cle] = $val;
unset($tableau_a_copier[$cle]);
} else {
$cles_existantes[] = $cle;
}
}
if (is_array($cles_existantes)) {
$message = "Le tableau a étendre contenait déjà les clés suivantes : ".implode(', ', $cles_existantes);
throw new Exception($message);
}
}
}
?>
/tags/v5.10-vilmorin/bibliotheque/NomCourant.php
New file
0,0 → 1,50
<?php
class NomCourant {
private $nns = null;
private $nnr = null;
private $selectionne = null;
private $retenu = null;
 
public function __construct($num_nom_selectionne, Noms $noms, Taxons $taxons) {
$this->nns = $num_nom_selectionne;
$this->selectionne = new Nom($noms->getNom($this->nns));
$this->retenu = new Nom($taxons->getTaxon($this->nns));
$this->nnr = $this->retenu->get('id');
$taxons_sup = $taxons->getTaxonsSup($this->nnr);
$this->taxons_sup = $taxons_sup[$this->nnr];
$this->retenu->setTaxonsSuperieurs($taxons_sup, $this->nnr);
}
 
/**
* Retour le numéro du nom sélectionné courant.
*
* @return le numéro du nom sélectionné.
*/
public function getNns() {
return $this->nns;
}
public function getNnr() {
return $this->nnr;
}
 
public function getNomSelectionne() {
return $this->selectionne;
}
 
public function getNomRetenu() {
return $this->retenu;
}
public function getNt() {
return $this->retenu->get('num_taxonomique');
}
public function getInpn() {
return $this->selectionne->get('cd_nom');
}
 
}
?>
/tags/v5.10-vilmorin/bibliotheque/AppUrls.php
New file
0,0 → 1,297
<?php
class AppUrls {
private $urlBase = null;
private $urlMobile = null;
private $urlBaseDossier = null;
private $urlCourante = null;
private $urlRedirection = null;
private $urlPopUp = null;
 
public function __construct(Url $urlBase = null, Url $urlBaseDossier = null, Url $urlPopUp = null, Url $urlMobile = null) {
$this->urlBase = (is_null($urlBase)) ? Registre::get('eFlore.urlBase') : $urlBase;
$this->urlBaseDossier = (is_null($urlBaseDossier)) ? Registre::get('eFlore.urlBaseDossier') : $urlBaseDossier;
$this->urlPopUp = (is_null($urlPopUp)) ? Registre::get('eFlore.urlPopUp') : $urlPopUp;
$this->urlMobileTpl = (is_null($urlMobile)) ? Registre::get('eFlore.urlMobileTpl') : $urlMobile;
}
 
public function obtenirUrlBase() {
$this->urlBase->setRequete(array());
$url = $this->urlBase->getURL();
return $url;
}
 
public function obtenirUrlBaseDossier() {
$this->urlBaseDossier->setRequete(array());
$url = $this->urlBaseDossier->getURL();
return $url;
}
 
public function redirigerVers($url) {
$url = str_replace('&amp;', '&', $url);
header("Location: $url");
}
 
public function getParametresUrlListe() {
$parametres = array(
'referentiel' => Registre::get('parametres.referentiel'),
'module' => 'liste',
'action' => 'liste',
'rang' => $this->rang,
'lettre' => $this->lettre
);
return $parametres;
}
 
public function obtenirUrlListeFamille() {
$parametres = $this->getParametresUrlListe();
$parametres['rang'] = 'F';
$this->urlBase->setRequete($parametres);
$url = $this->urlBase->getURL();
return $url;
}
 
public function obtenirUrlListeGenre() {
$parametres = $this->getParametresUrlListe();
$parametres['rang'] = 'G';
$this->urlBase->setRequete($parametres);
$url = $this->urlBase->getURL();
return $url;
}
 
public function getParametresUrlRecherche() {
$parametres = array(
'referentiel' => Registre::get('parametres.referentiel'),
'module' => 'recherche',
'action' => 'rechercheSimple',
'submit' => 'Rechercher'
);
return $parametres;
}
 
public function obtenirUrlRechercheSimple($nom = null, $type = 'nom_scientifique') {
$parametres = $this->getParametresUrlRecherche();
$parametres['type_nom'] = $type;
$parametres['nom'] = $nom;
$this->urlBase->setRequete($parametres);
$url = $this->urlBase->getURL();
return $url;
}
 
public function getParametresUrlRechercheAvancee() {
$parametres = array(
'referentiel' => Registre::get('parametres.referentiel'),
'niveau' => Registre::get('parametres.niveau'),
'module' => 'recherche',
'action' => 'rechercheAvancee',
'type_nom' => 'nom_scientifique'
);
return $parametres;
}
 
public function obtenirUrlResultat($typeResultat, $params = array()) {
$parametres = $this->getParametresUrlResultat();
$parametres['resultat'] = $typeResultat;
$parametres = array_merge($parametres, $params);
$this->urlBase->setRequete($parametres);
$url = $this->urlBase->getURL();
return $url;
}
 
public function obtenirUrlResultatAvanceOnglets($onglet, $params = array()) {
$parametres = $this->getParametresUrlRechercheAvancee();
$parametres['resultat'] = $onglet;
$parametres = array_merge($parametres, $params);
$this->urlBase->setRequete($parametres);
$url = $this->urlBase->getURL();
return $url;
}
 
public function obtenirUrlRechercheAvancee($params = array()) {
$parametres = $this->getParametresUrlRechercheAvancee();
$parametres = array_merge($parametres,$params);
$this->urlBase->setRequete($parametres);
$url = $this->urlBase->getURL();
return $url;
}
 
public function getParametresUrlResultat() {
$parametres = array(
'referentiel' => Registre::get('parametres.referentiel'),
'module' => 'recherche',
'niveau' => Registre::get('parametres.niveau'),
'action' => Registre::get('parametres.action'),
'submit' => 'Rechercher',
'type_nom' => isset($_GET['type_nom']) ? $_GET['type_nom'] : 'nom_scientifique',
'nom' => isset($_GET['nom']) ? $_GET['nom'] : ''
);
return $parametres;
}
 
/*public function obtenirUrlResultatDetermination() {
$parametres = $this->getParametresUrlResultat();
$parametres['resultat'] = 'determination';
$this->urlBase->setRequete($parametres);
$url = $this->urlBase->getURL();
return $url;
}
 
public function obtenirUrlResultatAlphab() {
$parametres = $this->getParametresUrlResultat();
$parametres['resultat'] = 'alphab';
$this->urlBase->setRequete($parametres);
$url = $this->urlBase->getURL();
return $url;
}
 
public function obtenirUrlResultatRetenu() {
$parametres = $this->getParametresUrlResultat();
$parametres['resultat'] = 'retenu';
$this->urlBase->setRequete($parametres);
$url = $this->urlBase->getURL();
return $url;
}
 
public function obtenirUrlResultatDecompo() {
$parametres = $this->getParametresUrlResultat();
$parametres['resultat'] = 'decompo';
$this->urlBase->setRequete($parametres);
$url = $this->urlBase->getURL();
return $url;
}*/
 
public function getParametresUrlFiche() {
$parametres = array(
'referentiel' => Registre::get('parametres.referentiel'),
'niveau' => Registre::get('parametres.niveau'),
'module' => 'fiche',
'action' => 'fiche'
);
return $parametres;
}
 
public function obtenirUrlFiche($numNom, $type_nom = 'nom_vernaculaire', $nom = '') {
$parametres = $this->getParametresUrlFiche();
$parametres['num_nom'] = $numNom;
$parametres['type_nom'] = $type_nom;
$parametres['nom'] = $nom;
$this->urlBase->setRequete($parametres);
$url = $this->urlBase->getURL();
return $url;
}
 
public function obtenirUrlMobile($numNom) {
$parametres = array(
'referentiel' => Registre::get('parametres.referentiel'),
'num_nom' => $numNom
);
$urlMobile = $this->urlMobileTpl;
foreach ($parametres as $cle => $val) {
$urlMobile = str_replace('{'.$cle.'}', rawurlencode($val), $urlMobile);
}
return $urlMobile;
}
 
public function getParametresUrlMetaDonnees() {
$parametres = array(
'module' => 'fiche-metadonnees',
'action' => 'affichageMetaDonnees'
);
return $parametres;
}
 
public function obtenirUrlMetaDonnees($projet) {
$parametres = $this->getParametresUrlMetaDonnees();
$parametres['projet'] = $projet;
$this->urlPopUp->setRequete($parametres);
$url = $this->urlPopUp->getURL();
return $url;
}
 
 
public function getParametresUrlListeFancyBoxPhytosocio() {
$parametres = array(
'module' => 'liste-fancy-box-phytosocio',
'action' => 'lister'
);
return $parametres;
}
 
public function obtenirUrlListeFancyBoxPhytosocio($liste,$referentiel,$num_nom, $catminat) {
$parametres = $this->getParametresUrlListeFancyBoxPhytosocio();
$parametres['type'] = $liste;
$parametres['referentiel'] = $referentiel;
$parametres['num_nom'] = $num_nom;
$parametres['catminat'] = $catminat;
$this->urlPopUp->setRequete($parametres);
$url = $this->urlPopUp->getURL();
return $url;
}
 
public function getParametresUrlPopUpIllustrations() {
$parametres = array(
'module' => 'popup-illustrations',
'action' => 'fiche',
'referentiel' => Registre::get('parametres.referentiel')
);
return $parametres;
}
 
public function obtenirUrlPopUpIllustrations($idImg) {
$parametres = $this->getParametresUrlPopUpIllustrations();
$parametres['id'] = $idImg;
$this->urlPopUp->setRequete($parametres);
$url = $this->urlPopUp->getURL();
return $url;
}
 
public function getParametresPdfExport() {
$parametres = array(
'referentiel' => Registre::get('parametres.referentiel'),
'niveau' => Registre::get('parametres.niveau'),
'module' => 'pdf-export',
'action' => 'pdf-export'
);
return $parametres;
}
 
 
public function obtenirUrlPdfExport($numNom) {
$parametres = $this->getParametresPdfExport();
$parametres['num_nom'] = $numNom;
$this->urlBase->setRequete($parametres);
$url = $this->urlBase->getURL();
return $url;
}
 
public function getParametresUrlPopUpContact($action) {
$action = is_null($action) ? 'form' : $action;
$parametres = array(
'module' => 'popup-contact',
'action' => $action,
'referentiel' => Registre::get('parametres.referentiel')
);
return $parametres;
}
 
public function obtenirUrlPopUpContact($idDestinataire, $idImage, $action = null) {
$parametres = $this->getParametresUrlPopUpContact($action);
$parametres['id_destinataire'] = $idDestinataire;
$parametres['id_img'] = $idImage;
$this->urlPopUp->setRequete($parametres);
$url = $this->urlPopUp->getURL();
return $url;
}
public function obtenirUrlMauvaiseIdentification($idObs) {
$tpl = Config::get('urlMauvaiseIdentificationTpl');
$url = sprintf($tpl, $idObs);
return $url;
}
public function obtenirUrlProfilAnnuaire($idUtilisateur) {
$tpl = Config::get('baseUrlProfilAnnuaireTpl');
$url = sprintf($tpl, $idUtilisateur);
return $url;
}
}
?>
/tags/v5.10-vilmorin/bibliotheque/Nom.php
New file
0,0 → 1,34
<?php
class Nom {
private $infos = array();
 
public function __construct(Array $infos) {
$this->infos = $infos;
}
public function setTaxonsSuperieurs(Array $taxonsSup, $nns) {
$this->infos['taxonsSup'] = $taxonsSup[$nns];
}
public function getInfos() {
return $this->infos;
}
 
public function get($cle) {
$valeur = '';
if (array_key_exists($cle, $this->infos)) {
$valeur = $this->infos[$cle];
}
return $valeur;
}
public function getTaxonSupRang($rang) {
$nom_sci = '';
foreach ($this->infos['taxonsSup'] as $taxon) {
if ($taxon['rang.code'] == 'bdnt.rangTaxo:'.$rang) {
$nom_sci = $taxon['nom_sci_complet'];
}
}
return $nom_sci;
}
}
?>
/tags/v5.10-vilmorin/bibliotheque/Trieur.php
New file
0,0 → 1,97
<?php
// declare(encoding='UTF-8');
/**
* Classe fournissant des méthodes de trie de tableaux (Array).
*
* @category PHP 5.2
* @package eFlore/Bibliotheque
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org)
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
// TODO : réaliser une seule méthode pour trierMD et trierMDType
class Trieur {
const TRI_NATUREL = 'nat';
const TRI_CASSE_SENSIBLE = 'ci';
const TRI_CASSE_INSENSIBLE = 'ci';
 
private $manipulateurDeChaine = null;
private $tableau = array();
private $champsEtOrdres = array();
private $triType = self::TRI_NATUREL;
 
public function __construct(Array $tableau = null, ChaineManipulateur $manipulateurDeChaine = null) {
if (is_array($tableau)) {
$this->setTableau($tableau);
}
$this->manipulateurDeChaine = is_null($tableau) ? new ChaineManipulateur() : $manipulateurDeChaine;
}
 
public function setTableau($tableau) {
$this->tableau = $tableau;
}
/**
* Fournir un tableau contenant en clé les noms des champs et en valeur l'ordre de tri. Exemple :
* array('ma_cle1' => SORT_ASC, 'ma_cle2' => SORT_DESC), $type_de_tri);
* Utiliser les constantes php SORT_DESC ou SORT_ASC pour l'odre de tri.
* @param array en clé les noms des champs et en valeur l'ordre de tri.
*/
public function setChampsEtOrdres($champsEtOrdres) {
$this->champsEtOrdres = $champsEtOrdres;
}
/**
* Pour le type de tri : utiliser :
* - Trieur::TRI_NATUREL pour un tri naturel,
* - Tableau::TRI_CASSE_SENSIBLE pour un tri sensible à la casse,
* - Tableau::TRI_CASSE_INSENSIBLE pour un tri insensible à la casse.
* @param string le type de tri à appliquer.
*/
public function setTriType($type) {
$this->triType = $type;
}
 
/**
* Méthode réalisant un tri d'un tableau multidimension. Attention les clés du tableau ne sont pas modifiées.
* A utiliser de cette façon:
* EfloreTriage::trieMultiple( $tableau_multidimension, array('ma_cle1' => SORT_ASC, 'ma_cle2' => SORT_DESC), $type_de_tri);
* Utiliser les constantes php SORT_DESC ou SORT_ASC pour l'odre de tri.
 
* @param array le tableau à trier
* @param array le tableau des colonnes à trier qui a des noms de clés pour clés et des ordres de tri pour valeurs.
* @param string le type de tri à appliquer.
* @return array le tableau trié.
*/
public function trier() {
uasort($this->tableau, array($this, 'comparer'));
return $this->tableau;
}
 
public function comparer($a, $b) {
$resultat = 0;
foreach ($this->champsEtOrdres as $champ => $ordre) {
if ($resultat == 0) {
$mot_01 = $this->manipulateurDeChaine->supprimerAccents($b[$champ]);
$mot_02 = $this->manipulateurDeChaine->supprimerAccents($a[$champ]);
switch ($this->triType) {
case self::TRI_NATUREL :
$resultat = ($ordre == SORT_DESC) ? strnatcmp($mot_01, $mot_02) : strnatcmp($mot_02, $mot_01);
break;
case self::TRI_CASSE_SENSIBLE :
$resultat = ($ordre == SORT_DESC) ? strcmp($mot_01, $mot_02) : strcmp($mot_02, $mot_01);
break;
case self::TRI_CASSE_INSENSIBLE :
$resultat = ($ordre == SORT_DESC) ? strcasecmp($mot_01, $mot_02) : strcasecmp($mot_02, $mot_01);
break;
default:
$resultat = ($ordre == SORT_DESC) ? strcasecmp($mot_01, $mot_02) : strcasecmp($mot_02, $mot_01);
break;
}
 
}
}
return $resultat;
}
}
?>
/tags/v5.10-vilmorin/bibliotheque/Utilisateur.php
New file
0,0 → 1,92
<?php
class Utilisateur {
 
const NIVEAU_DEBUTANT = 1;
const NIVEAU_INTERMEDIAIRE = 2;
const NIVEAU_EXPERT = 3;
 
private $dureeSauvegarde = null;
private $nomCookieUtilisateur = '';
private $nomCookieUtilisateurPersistant = '';
private $nomCookieNiveau = '';
private $niveauDefaut = '';
private $urlWsAnnuaire = '';
private $restClient = null;
 
private $niveau = null;
private $identifie = false;
private $courriel = null;
private $md5Mdp = null;
 
public function __construct(Conteneur $conteneur) {
$this->dureeSauvegarde = $conteneur->getParametre('cookies.duree');
$this->nomCookieUtilisateur = $conteneur->getParametre('cookies.utilisateur');
$this->nomCookieUtilisateurPersistant = $conteneur->getParametre('cookies.utilisateurPersistant');
$this->nomCookieNiveau = $conteneur->getParametre('cookies.niveau');
$this->niveauDefaut = $conteneur->getParametre('utilisateur.niveau.defaut');
$this->urlWsAnnuaire = $conteneur->getParametre('baseUrlServicesAnnuaireTpl');
$this->restClient = $conteneur->getRestClient();
$this->analyserCookies();
}
 
public function getCourriel() {
return $this->courriel;
}
 
public function getNiveau() {
return $this->niveau;
}
 
public function sauver() {
setcookie($this->nomCookieNiveau, time()+$this->dureeSauvegarde, '/');
}
 
public function etreIdentifie() {
$this->analyserCookies();
return $this->identifie;
}
 
public function connecter($courriel, $mdp, $persistance = false) {
$url = sprintf($this->urlWsAnnuaire, 'utilisateur');
$donnees['methode'] = 'connexion';
$donnees['courriel'] = $courriel;
$donnees['mdp'] = $mdp;
$donnees['persistance'] = $persistance;
 
$json = $this->restClient->ajouter($url, $donnees);
$forceTableauAssociatif = true;
$resultat = json_decode($json, $forceTableauAssociatif);
return $resultat['identifie'];
}
 
private function analyserCookies() {
$this->analyserCookiesIdentite();
$this->analyserCookiesNiveau();
}
 
private function analyserCookiesIdentite() {
if ($this->identifie == false) {
if (isset($_COOKIE[$this->nomCookieUtilisateurPersistant])) {
$idTela = $_COOKIE[$this->nomCookieUtilisateurPersistant];
$this->extraireMdpEtCourriel($idTela);
} else if (isset($_COOKIE[$this->nomCookieUtilisateur])) {
$idTela = $_COOKIE[$this->nomCookieUtilisateur];
$this->extraireMdpEtCourriel($idTela);
}
}
}
 
private function extraireMdpEtCourriel($idTela) {
$this->md5Mdp = substr($idTela, 0, 32);
$this->courriel = substr($idTela, 32);
$this->identifie = true;
}
 
private function analyserCookiesNiveau() {
$this->niveau = $this->niveauDefaut;
if (isset($_COOKIE[$this->nomCookieNiveau])) {
$this->niveau = $_COOKIE[$this->nomCookieNiveau];
}
}
}
?>
/tags/v5.10-vilmorin/i18n/fr.ini
New file
0,0 → 1,171
[General]
obligatoire = "*"
etc = "..."
point = "."
 
[Referentiels-titres]
* = "Multi-projets"
bdnff = "BDNFF"
bdtfx = "BDTFX"
 
[Entete]
titre-general = "eFlore"
 
[Pied]
info = "Si vous constatez des problèmes, contactez : "
info-a = "Si vous constatez des problèmes ou souhaitez nous adresser vos remarques"
info-b = "contactez-nous"
 
[Niveau]
titre-niveau = "Choisir votre niveau de botanique"
niveau-1 = "Débutant"
niveau-2 = "Intermédiaire"
niveau-3 = "Expert"
ok = "Changer"
 
[Recherche-accueil]
titre-general = "eFlore"
titre-taxon = "Consulter les plantes par genre/famille"
titre-nom = "Rechercher un nom"
 
[Recherche-form-nom]
titre-nom = "Rechercher une plante"
valeur-form-nom-sci = "Saisir un nom scientifique (sans auteur)"
valeur-form-nom-verna = "Saisir un nom commun"
legende = "Consultation nomenclaturale"
nom = "Nom"
ns = "Nom scientifique"
nv = "Nom commun"
recherche = "OK"
fiche = "Accès fiche"
referentiel = "Référentiels"
info_nb_lettres = "Veuillez saisir au moins 3 lettres !"
info_sp_abs = "Aucune espèce trouvée avec cette orthographe."
orthographe = "Vous cherchez peut-être : "
nom_ss_corresp = " est un nom sans correspondance. Pour plus d'information, veuillez consulter <br/>";
reftax = "le référentiel en cours d'actualisation"
valeur-form-auteur = "(abréviation de l auteur)"
valeur-form-bib = "(abrévation de la publication)"
valeur-form-date = "(ex: 1875)"
 
[Recherche-form-avancee]
info_res_vide = "Aucun taxon ne correspond à ces critères."
valeur-form-auteur = "(abréviation de l auteur)"
valeur-form-bib = "(abrévation de la publication)"
valeur-form-date = "(ex: 1875)"
 
[Recherche-form-taxon]
titre = "Consulter les plantes par genre/famille"
titre-alphabet = "Consultation par ordre alphabétique"
legende = "Consultation taxonomique"
referentiel = "Référentiel : "
rang = "Rang : "
projet = "Référentiels"
valider = "Rechercher"
 
[Liste]
rangF = "Famille"
rangG = "Genre"
 
[Resultat-onglets-ns]
determination = "Vignettes"
alphab = "Alphabétique"
retenu = "Liste"
decompo = "Tableau"
 
[Resultat-onglets-nv]
determination = "Vignettes noms français"
alphab = "Tableau multilingue"
 
[Fiche]
lien-recherche-hier-fam = "Voir les taxons rattachés à cette famille"
lien-recherche-hier-gen = "Voir les taxons rattachés à ce genre"
lien-recherche-hier-sp = "Voir les taxons rattachés à ce genre et à cette espèce"
lien-recherche-hier-ssp = "Voir les taxons rattachés à ce genre et à cette espèce ainsi qu'à ce type d'épithète infra spécifique"
lien-recherche-hier-infra-sp = "Voir les taxons rattachés à ce genre et à cette espèce ainsi qu'à cet épithète infra spécifique"
 
onglet-nom-synth = "Synthèse"
onglet-nom-descr = "Description"
onglet-nom-ethnobota = "Ethnobota"
onglet-nom-eco = "Ecologie"
onglet-nom-classif = "Nomenclature"
onglet-nom-biblio = "Bibliographie"
onglet-nom-illustra = "Illustrations"
onglet-nom-repart = "Répartition"
onglet-nom-protect = "Protection"
 
onglet-descr-synth = "Principales informations sur ce taxon"
onglet-descr-descr = "Critères de reconnaissance"
onglet-descr-ethnobota = "Noms communs, statuts d'introduction et de culture..."
onglet-descr-eco = "Relation avec le milieu et les autres espèces"
onglet-descr-classif = "Nomenclature, synonymie, classification..."
onglet-descr-biblio = "Citations dans les flores et références bibliographiques"
onglet-descr-illustra = "Illustrations provenant des différents projets collaboratifs et de nos partenaires"
onglet-descr-repart = "Carte de présence, flore probable, carte précise au point..."
onglet-descr-protect = "Statuts de protection et lois"
 
[Metadonnees]
guid = "Guid"
langue_meta = "Langue des métadonnées"
langue_meta_code = "Code de langue des métadonnées"
langue_meta_href = "Url de référence de la langue des metadonnées"
code = "Code"
version = "Version"
titre = "Titre"
description = "Description"
mots_cles = "Mots clés"
citation = "Citation"
url_tech = "Url technique"
url_projet = "Url du projet"
source = "Source"
createurs = "Créateurs"
createurs_details = "Détails des créateurs"
p_type = "Type"
p_type_code = "Code de type"
p_type_href = "Url de référence du code de type"
p_nom = "Nom"
p_prenom = "Prénom"
p_courriel = "Courriel"
o_type = "Type"
o_type_code = "Code de type"
o_type_href = "Url de référence du code de type"
editeur = "Éditeur"
editeur_p_prenom = "Prénom de l'éditeur"
editeur_p_nom = "Nom de l'éditeur"
editeur_p_courriel = "Courriel de l'éditeur"
editeur_nom = "Nom de l'éditeur"
editeur_guid = "Guid de l'éditeur"
editeur_courriel = "Courriel de l'éditeur"
editeur_telephone = "Téléphone de l'éditeur"
editeur_url_info = "Url d'information sur l'éditeur"
editeur_url_logo = "Url du logo de l'éditeur"
editeur_type = "Type d'éditeur"
editeur_acronyme = "Acronyme de l'éditeur"
editeur_adresse = "Adresse de l'éditeur"
editeur_coordonnees = "Coordonnées de l'éditeur"
editeur_coordonnees_datum = "Datum des coordonnées"
editeur_coordonnees_datum_code = "Code de datum des coordonnées"
editeur_coordonnees_datum_href = "Url de référence du code de datum des coordonnées"
editeur_contact = "Contact de l'éditeur"
editeur_contact_details = "Détails du contact de l'éditeur"
contributeurs = "Contributeurs"
contributeurs_details = "Détails des contributeur"
droits = "Droits"
url_droits = "Url de référence des droits"
contact_prenom = "Prénom"
contact_nom = "Nom"
contact_courriel = "Courriel"
contact_role = "Role"
o_nom = "Nom"
langue = "Langue"
langue_code = "Code de langue"
langue_href = "Url de référence du code de langue"
date_creation = "Date de création"
couverture_spatiale = "Couverture spatiale"
couverture_spatiale_detail = "Détails de la couverture spatiale"
couverture_spatiale_code = "Code de la couverture spatiale"
couverture_spatiale_href = "Url de référence du code de la couverture spatiale"
web_services = "Web services"
 
 
 
/tags/v5.10-vilmorin/controleurs/AppControleur.php
New file
0,0 → 1,339
<?php
// declare(encoding='UTF-8');
/**
* AppControleur 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 eflore-consultation
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
* @copyright 2011 Tela-Botanica
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence 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 d'AppControleur
*/
private static $parametres = array();
 
/**
* Constructeur vide
*/
public function __construct() {
$sortie = array(
'titre' => '', 'description' => '', 'tags' => '',
'entete' => '', 'tags' => '',
'corps' => '', 'tete' => '', 'pied' => '',
'navigation' => '', 'menu' => '');
 
self::$parametres = array(
'referentiel' => Config::get('referentiel_defaut'),
'module' => Config::get('module_defaut'),
'action' => Config::get('action_defaut'),
'niveau' => Config::get('niveau_defaut'),
'sortie' => $sortie);
parent::__construct();
}
 
/**
* Initialisation du controleur principal en fonction des paramêtres de l'url.
*/
public static function initialiser() {
self::verifierCreationInstance();
self::gererSession();
 
self::nettoyerGet();
self::capturerParametres();
self::initialiserRegistre();
self::chargerConfigReferentiel();
 
spl_autoload_register(array(get_class(), 'chargerClasse'));
 
self::executerModule();
}
 
// "public" pour pouvoir être appelée distinctememnt de "initialiser" lors des tests PHPUnit
public static function verifierCreationInstance() {
if (empty(self::$instance)) {
self::$instance = new AppControleur();
}
}
 
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();
}
}
 
private static function nettoyerGet() {
foreach ($_GET as $cle => $valeur) {
$verifier = array('NULL', "\n", "\r", "\\", "'", '"', "\x00", "\x1a", ';');
$_GET[$cle] = strip_tags(str_replace($verifier, '', $valeur));
}
}
 
private static function capturerParametres() {
if (isset($_GET['referentiel'])) {
self::$parametres['referentiel'] = $_GET['referentiel'];
}
if (isset($_GET['module'])) {
self::$parametres['module'] = $_GET['module'];
}
if (isset($_GET['action'])) {
self::$parametres['action'] = $_GET['action'];
}
if (isset($_GET['niveau'])) {
self::$parametres['niveau'] = $_GET['niveau'];
}
}
 
// "public" pour pouvoir être appelée distinctememnt de "initialiser" lors des tests PHPUnit
public static function initialiserRegistre() {
Registre::set('eFlore.urlBase', new Url(Config::get('base_url_application_index')));
Registre::set('eFlore.urlBaseDossier', new Url(Config::get('base_url_application')));
Registre::set('eFlore.urlCourante', self::getUrlCourante());
Registre::set('eFlore.urlRedirection', self::getUrlRedirection());
Registre::set('eFlore.urlPopUp', new Url(Config::get('base_url_application_popup')));
Registre::set('eFlore.urlMobileTpl', Config::get('base_url_mobile'));
 
Registre::set('parametres.referentiel', self::$parametres['referentiel']);
Registre::set('parametres.module', self::$parametres['module']);
Registre::set('parametres.action', self::$parametres['action']);
Registre::set('parametres.niveau', self::$parametres['niveau']);
}
 
private static function chargerConfigReferentiel() {
$chemin = Config::get('chemin_configurations').strtolower(self::$parametres['referentiel']).'.ini';
Config::charger($chemin);
}
 
private static function getUrlCourante() {
$url = false;
if (isset($_SERVER['REQUEST_URI'])) {
$url = $_SERVER['REQUEST_URI'];
}
return ($url) ? new Url($url) : $url;
}
 
private static function getUrlRedirection() {
$url = false;
if (isset($_SERVER['REDIRECT_URL']) && !empty($_SERVER['REDIRECT_URL'])) {
if (isset($_SERVER['REDIRECT_QUERY_STRING']) && !empty($_SERVER['REDIRECT_QUERY_STRING'])) {
$url = $_SERVER['REDIRECT_URL'].'?'.$_SERVER['REDIRECT_QUERY_STRING'];
} else {
$url = $_SERVER['REDIRECT_URL'];
}
}
return ($url) ? new Url($url) : $url;
}
 
private static function chargerClasse($nom_classe) {
$dossiers_classes = array(
Config::get('chemin_modules').self::getNomDossierModuleCourrant().DS,
Config::get('chemin_modules').self::getNomDossierDepuisClasse($nom_classe).DS,
Config::get('chemin_modeles').'api_0.1'.DS);
 
foreach ($dossiers_classes as $chemin) {
$fichier_a_tester = $chemin.$nom_classe.'.php';
if (file_exists($fichier_a_tester)) {
include_once $fichier_a_tester;
return null;
}
}
}
 
public static function getNomDossierDepuisParametre($parametre) {
$dossier = str_replace('-', '_', strtolower($parametre));
return $dossier;
}
 
public static function getNomDossierDepuisClasse($nomClasse) {
$dossier = str_replace(' ', '_', strtolower(preg_replace('/(?<!^)([A-Z])/',' $0', $nomClasse)));
return $dossier;
}
 
private static function getNomDossierModuleCourrant() {
$dossier = self::getNomDossierDepuisParametre(self::$parametres['module']);
return $dossier;
}
 
private static function getNomClasseModule() {
$dossier = str_replace(' ', '', ucwords(str_replace('-', ' ', strtolower(self::$parametres['module']))));
return $dossier;
}
 
private static function getNomMethodeAction() {
$methode = 'executer'.
str_replace(' ', '', ucwords(str_replace('-', ' ', strtolower(self::$parametres['action']))));
return $methode;
}
 
private static function executerModule() {
$classeModule = self::getNomClasseModule();
$action = self::getNomMethodeAction();
// Nous vérifions que le module existe
if (class_exists($classeModule)) {
$module = new $classeModule();
 
// Chargement Entete et Pied de page par défaut
$module->chargerEnteteGeneral();
$module->chargerMenuGeneral();
$module->chargerPiedGeneral();
 
// Initialisation du module demandé
if (method_exists($module, 'initialiser')) {
$module->initialiser();
}
// Lancement de l'action demandé du module chargé
if (method_exists($module, $action)) {
$module->$action();
} else {
$m = "La méthode '$action' du controleur '$classeModule' est introuvable.";
trigger_error($m, E_USER_ERROR);
}
 
self::fusionnerSortie($module->getSortie());
} else {
$m = "La classe du controleur '$classeModule' est introuvable.";
trigger_error($m, E_USER_ERROR);
}
}
 
/**
* 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);
}
 
/**
* Retourne le titre du contenu de l'application.
*/
public static function getMetaTitre() {
$contenu = self::$parametres['sortie']['titre'];
$sortie = self::convertirEncodage($contenu);
return $sortie;
}
 
/**
* Retourne la description du contenu de l'application.
*/
public static function getMetaDescription() {
$contenu = self::$parametres['sortie']['description'];
$sortie = self::convertirEncodage($contenu);
return $sortie;
}
 
/**
* Retourne les mots-clés (tags) du contenu de l'application.
*/
public static function getMetaTags() {
$contenu = self::$parametres['sortie']['tags'];
$sortie = self::convertirEncodage($contenu);
return $sortie;
}
 
/**
* Retourne les informations à placer dans la balise HEAD du HTML.
*/
public static function getEntete() {
$contenu = self::$parametres['sortie']['entete'];
$sortie = self::convertirEncodage($contenu);
return $sortie;
}
 
/**
* Retourne le contenu du corps de l'application.
*/
public static function getContenuCorps() {
$contenu = self::$parametres['sortie']['corps'];
$sortie = self::convertirEncodage($contenu);
return $sortie;
}
 
/**
* Retourne le contenu de la tête de l'application.
*/
public static function getContenuTete() {
$contenu = self::$parametres['sortie']['tete'];
$sortie = self::convertirEncodage($contenu);
return $sortie;
}
 
/**
* Retourne le contenu du pied de l'application.
*/
public static function getContenuPied() {
$contenu = self::$parametres['sortie']['pied'];
$sortie = self::convertirEncodage($contenu);
return $sortie;
}
 
/**
* Retourne les éléments de navigation (onglet, fils d'ariane) de l'application.
*/
public static function getContenuNavigation() {
$contenu = self::$parametres['sortie']['navigation'];
$sortie = self::convertirEncodage($contenu);
return $sortie;
}
 
/**
* Retourne les éléments du menu de l'application.
*/
public static function getContenuMenu() {
$contenu = self::$parametres['sortie']['menu'];
$sortie = self::convertirEncodage($contenu);
return $sortie;
}
 
/**
* Retourne les chronos pris dans l'appli
*/
public static function getChrono() {
$sortie = '';
if (Config::get('benchmark_chrono')) {
$chrono = Chronometre::afficherChrono();
$sortie = self::convertirEncodage($chrono);
}
return $sortie;
}
 
/**
* Retourne les messages d'exceptions et d'erreurs.
*/
public static function getExceptions() {
$contenu = (Config::get('debogage')) ? GestionnaireException::getExceptions() : '';
$sortie = self::convertirEncodage($contenu);
return $sortie;
}
 
/**
* Convertion du contenu de l'application (voir fichier config.ini : appli_encodage),
* dans le format de sortie désiré (voir fichier config.ini : sortie_encodage).
* Cette convertion a lieu seulement si les formats sont différents.
*/
private static function convertirEncodage($contenu) {
if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
$contenu = mb_convert_encoding($contenu, Config::get('sortie_encodage'), Config::get('appli_encodage'));
}
return $contenu;
}
}
?>
/tags/v5.10-vilmorin/controleurs/aControleur.php
New file
0,0 → 1,296
<?php
// declare(encoding='UTF-8');
/**
* Classe abstraite dont chaque controleur de l'application doit hériter.
*
* @category PHP 5.2
* @package eflore-consultation
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
* @copyright 2011 Tela-Botanica
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
abstract class aControleur extends Controleur {
 
const META_TITRE = 'titre';
const META_DESCRIPTION = 'description';
const META_TAGS = 'tags';
const ENTETE = 'entete';
const RENDU_TETE = 'tete';
const RENDU_CORPS = 'corps';
const RENDU_PIED = 'pied';
const RENDU_NAVIGATION = 'navigation';
const RENDU_MENU = 'menu';
 
private $sortie = array();
protected $urlBase = null;
protected $urlCourante = null;
protected $urls = null;
public function __construct(AppUrls $urls = null) {
$chemin = Config::get('chemin_modules').
AppControleur::getNomDossierDepuisClasse(get_class($this)).DS.
Config::get('dossier_squelettes').DS;
Registre::set('tbf.chemin_squelettes', $chemin);
 
$this->urlBase = Registre::get('eFlore.urlBase');
$this->urlCourante = Registre::get('eFlore.urlCourante');
$this->urlRedirection = Registre::get('eFlore.urlRedirection');
$this->urls = (is_null($urls)) ? new AppUrls() : $urls;
parent::__construct();
}
 
//+------------------------------------------------------------------------------------------------------+
// GESTION de l'AFFICHAGE en SORTIE
 
/**
* Attribue une position de sortie à un contenu.
*/
protected function setSortie($position, $contenu, $fusionner = false) {
if ($this->verifierExistenceTypeSortie($position)) {
if ($fusionner) {
if (isset($this->sortie[$position])) {
$this->sortie[$position] .= $contenu;
} else {
$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::RENDU_NAVIGATION &&
$type != self::RENDU_MENU &&
$type != self::ENTETE &&
$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;
}
 
/**
* Fusionne un tableau de sortie par défaut avec le tableau passé en paramêtre.
* @param array le tableau à fusionner
*/
private function fusionnerSortie($nouvelleSortie) {
$sortieActuelle = $this->getSortie();
foreach ($nouvelleSortie as $position => $nouveauContenu) {
if ($nouveauContenu != '') {
$contenuPrecedent = isset($sortieActuelle[$position]) ? $sortieActuelle[$position] : null;
if ($nouveauContenu != $contenuPrecedent) {
$this->setSortie($position, $nouveauContenu, true);
}
}
}
}
/**
* Vide toutes les sorties (utile en cas de classe statique et de module ajax)
*/
protected function viderSorties() {
$this->setSortie(self::RENDU_TETE, '');
$this->setSortie(self::RENDU_CORPS, '');
$this->setSortie(self::RENDU_PIED, '');
$this->setSortie(self::RENDU_NAVIGATION, '');
$this->setSortie(self::RENDU_MENU, '');
}
 
/**
* Execute l'action d'un module donnée et fusionne le résultat avec le tableau de sortie.
* Permet à une action d'un module donnée de charger le résultat d'une autre action de module.
*/
protected function executerAction($ClasseModule, $action, $parametres = array()) {
$module = new $ClasseModule();
$sortiePrecedente = $this->getSortie();
// Initialisation du module demandé
if (method_exists($module, 'initialiser')) {
$module->initialiser();
}
// Lancement de l'action demandé du module chargé
if (method_exists($module, $action)) {
if (isset($parametres)) {
$module->$action($parametres);
} else {
$module->$action();
}
$nouvelleSortie = $module->getSortie();
$this->fusionnerSortie($nouvelleSortie);
} else {
$m = "La méthode '$action' du controleur '$ClasseModule' est introuvable.";
trigger_error($m, E_USER_ERROR);
}
}
//+------------------------------------------------------------------------------------------------------+
// GESTION du VUES COMMUNES
/**
* Charge un squelette de vue depuis l'emplacement commune.
* @param String $tpl le nom du squelette à charger sans l'extenssion de fichier.
* @param Array $donnees les données à passer au squelette PHP.
*/
private function getVueCommune($tpl, $donnees) {
$cheminOrigine = $this->getCheminSquelette();
$this->setCheminSquelette(Config::get('chemin_squelettes'));
$vue = $this->getVue($tpl, $donnees);
$this->setCheminSquelette($cheminOrigine);
return $vue;
}
 
/**
* Pour mutualiser la création du pied de page de l'application, sa gestion est gérée dans cette classe.
*/
public function chargerEnteteGeneral() {
$donnees['appli'] = Framework::getInfoAppli();
$donnees['i18n'] = array_merge(I18n::get('Entete'), I18n::get('General'));
$donnees['referentiel_titre'] = I18n::get('Referentiels-titres.'.Registre::get('parametres.referentiel'));
 
$this->setSortie(self::RENDU_TETE, $this->getVueCommune('entete_page', $donnees));
}
 
/**
* Pour mutualiser la création du menu de l'application, sa gestion est gérée dans cette classe.
*/
public function chargerMenuGeneral() {
$donnees['appli'] = Framework::getInfoAppli();
$donnees['i18n'] = array_merge(I18n::get('Pied'), I18n::get('General'));
$donnees['courrielContact'] = Config::get('courriel_contact');
 
$this->setSortie(self::RENDU_MENU, $this->getVueCommune('menu', $donnees));
}
 
/**
* Pour mutualiser la création du pied de page de l'application, sa gestion est gérée dans cette classe.
*/
public function chargerPiedGeneral() {
$donnees['appli'] = Framework::getInfoAppli();
$donnees['i18n'] = array_merge(I18n::get('Pied'), I18n::get('General'));
$donnees['courrielContact'] = Config::get('courriel_contact');
$donnees['url_widget_remarques'] = Config::get('url_widget_remarques');
 
$this->setSortie(self::RENDU_PIED, $this->getVueCommune('pied_page', $donnees));
}
 
//+------------------------------------------------------------------------------------------------------+
// GESTION du CHARGEMENT des CLASSES MÉTIERS
protected function getEfloreNoms() {
if (! isset($this->EfloreNoms)) {
$this->EfloreNoms = new Noms();
}
return $this->EfloreNoms;
}
 
protected function getEfloreTaxons() {
if (! isset($this->EfloreTaxons)) {
$this->EfloreTaxons = new Taxons();
}
return $this->EfloreTaxons;
}
 
public function obtenirUrlBase() {
$url = $this->urlBase->getURL();
return $url;
}
 
public function redirigerVers($url) {
$url = str_replace('&amp;', '&', $url);
header("Location: $url");
}
 
public function getParametresUrlListe() {
$parametres = array(
'referentiel' => Registre::get('parametres.referentiel'),
'module' => 'liste',
'action' => 'liste',
'rang' => $this->rang,
'lettre' => $this->lettre
);
return $parametres;
}
 
public function obtenirUrlListeFamille() {
$parametres = $this->getParametresUrlListe();
$parametres['rang'] = 'F';
$this->urlBase->setRequete($parametres);
$url = $this->urlBase->getURL();
return $url;
}
 
public function obtenirUrlListeGenre() {
$parametres = $this->getParametresUrlListe();
$parametres['rang'] = 'G';
$this->urlBase->setRequete($parametres);
$url = $this->urlBase->getURL();
return $url;
}
 
 
 
public function getParametresUrlResultat() {
$parametres = array(
'referentiel' => Registre::get('parametres.referentiel'),
'module' => 'recherche',
'action' => Registre::get('parametres.action'),
'submit' => 'Rechercher',
'type_nom' => isset($_GET['type_nom']) ? $_GET['type_nom'] : 'nom_scientifique',
'nom' => isset($_GET['nom']) ? $_GET['nom'] : ''
);
return $parametres;
}
 
public function obtenirUrlResultatDetermination() {
$parametres = $this->getParametresUrlResultat();
$parametres['resultat'] = 'determination';
$this->urlBase->setRequete($parametres);
$url = $this->urlBase->getURL();
return $url;
}
 
public function obtenirUrlResultatAlphab() {
$parametres = $this->getParametresUrlResultat();
$parametres['resultat'] = 'alphab';
$this->urlBase->setRequete($parametres);
$url = $this->urlBase->getURL();
return $url;
}
 
public function obtenirUrlResultatRetenu() {
$parametres = $this->getParametresUrlResultat();
$parametres['resultat'] = 'retenu';
$this->urlBase->setRequete($parametres);
$url = $this->urlBase->getURL();
return $url;
}
 
public function obtenirUrlResultatDecompo() {
$parametres = $this->getParametresUrlResultat();
$parametres['resultat'] = 'decompo';
$this->urlBase->setRequete($parametres);
$url = $this->urlBase->getURL();
return $url;
}
}
?>
/tags/v5.10-vilmorin/widget/widget.ini.defaut.php
New file
0,0 → 1,29
;<?/*
[parametres]
;Memoire maxi pour les services : 128Mo = 134217728 ; 256Mo = 268435456 ; 512Mo = 536870912 ; 1Go = 1073741824
limiteMemoire = "512M"
; Niveau d'erreur PHP
erreurNiveau = 30719 ; E_ALL = 30719
; Séparateur d'url en entrée
argSeparatorInput = "&"
; Indication de la locale (setLocale(LC_ALL, ?)) pour les classes appelées par Widget.php
locale = "fr_FR.UTF-8"
; Indication du fuseau horraire par défaut date_default_timezone_set(?)pour les classes appelées par Widget.php
fuseauHoraire = "Europe/Paris"
 
[chemins]
; Chemins à utiliser dans la méthode autoload des widgets
autoload = "bibliotheque/"
; Dossier contenant les widgets
widgetsDossier = "modules/"
; Dossier contenant le widget demandé construit dynamiquement dans le fichier Widget.php
widgetCourantDossier = ""
; Dossier contenant les fichiers des bibliothèques tierces
bibliothequeDossier = "bibliotheque/"
; Base de l'url servant à appeler les widgets
baseURL = "/eflore-consultation/widget/"
; URL de base absolue des Widgets du CEL construit dynamiquement dans le fichier WidgetCommun.php
baseURLAbsoluDyn = ""
; URL des services web du CEL sous forme de template à utiliser avec sprintf
baseURLServicesEfloreTpl = "http://localhost/service:eflore::0.1/%s"
;*/?>
/tags/v5.10-vilmorin/widget/modules/recherche/config.defaut.ini
New file
0,0 → 1,15
[url]
efloreScriptUrl = "http://www.tela-botanica.org/eflore/consultation/presentations/scripts/recherche.js"
; url vers l'application utilisée par défaut
efloreConsultationUrl = "http://www.tela-botanica.org/page:eflore"
; url spécifique à un référentiel
efloreConsultationBdtfxUrl = "http://www.tela-botanica.org/page:eflore_bdtfx"
; url spécifique à un référentiel
efloreConsultationBdtxaUrl = "http://www.tela-botanica.org/page:isfgm"
efloreRechercheSciUrlTpl = "http://www.tela-botanica.org/service:eflore:0.1/{referentiel}/noms"
efloreRechercheVernaUrlTpl = "http://www.tela-botanica.org/service:eflore:0.1/{referentiel}/noms-vernaculaires"
ficheTaxonUrlTpl = "?referentiel={referentiel}&niveau=2&module=fiche&action=fiche&num_nom={num_taxon}&type_nom=nom_scientifique&nom="
 
[referentiel]
referentielsSciDispos = bdtfx#France : métropole,bdtxa#France : Antilles,isfan#Afrique du Nord,apd#Afrique tropicale
referentielsVernaDispos = bdtfx:nvjfl,bdtxa:nva
/tags/v5.10-vilmorin/widget/modules/recherche/Recherche.php
New file
0,0 → 1,105
<?php
// declare(encoding='UTF-8');
/**
* Service de recherche dans eflore, permettant d'intégrer le moteur dans une page donnée
* Encodage en entrée : utf8
* Encodage en sortie : utf8
*
* Cas d'utilisation et documentation :
* @link http://www.tela-botanica.org/wikini/eflore/wakka.php?wiki=AideEfloreWidgetRecherche
*
*
* @author Aurélien PERONNET <aurelien@tela-botanica.org>
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
* @version $Id$
* @copyright Copyright (c) 2013, Tela Botanica (accueil@tela-botanica.org)
*/
class Recherche extends WidgetCommun {
const DS = DIRECTORY_SEPARATOR;
/**
* Méthode appelée par défaut pour charger ce widget.
*/
public function executer() {
$retour = null;
$this->extraireParametres();
$methode = $this->traiterNomMethodeExecuter("recherche");
if (method_exists($this, $methode)) {
$retour = $this->$methode();
} else {
$this->messages[] = "Ce type de service '$methode' n'est pas disponible.";
}
if (is_null($retour)) {
$info = 'Un problème est survenu : '.print_r($this->messages, true);
$this->envoyer($info);
} else {
$squelette = dirname(__FILE__).self::DS.'squelettes'.self::DS.$retour['squelette'].'.tpl.html';
$contenu = $this->traiterSquelettePhp($squelette, $retour['donnees']);
if (isset($_GET['callback'])) {
$this->envoyerJsonp(array('contenu' => $contenu));
} else {
$this->envoyer($contenu);
}
}
}
public function extraireParametres() {
extract($this->parametres);
}
public function executerRecherche() {
$widget['donnees'] = array();
$widget['donnees']['efloreScriptUrl'] = $this->config['url']['efloreScriptUrl'];
$widget['donnees']['efloreConsultationUrl'] = $this->config['url']['efloreConsultationUrl'];
$widget['donnees']['efloreRechercheSciUrlTpl'] = $this->config['url']['efloreRechercheSciUrlTpl'];
$widget['donnees']['efloreRechercheVernaUrlTpl'] = $this->config['url']['efloreRechercheVernaUrlTpl'];
$widget['donnees']['ficheTaxonUrlTpl'] = $this->config['url']['ficheTaxonUrlTpl'];
$widget['donnees']['referentielsSciDispos'] = $this->traiterReferentielSciDispos();
$widget['donnees']['referentielsConsultationUrls'] = $this->traiterUrlsConsultationReferentiels($widget['donnees']['referentielsSciDispos']);
$widget['donnees']['referentielsVernasDispos'] = $this->traiterReferentielsSciVernasDispos();
$ref_sci_defaut = array_shift(array_keys($widget['donnees']['referentielsSciDispos']));
$ref_verna_defaut = $widget['donnees']['referentielsVernasDispos'][$ref_sci_defaut];
$widget['donnees']['efloreRechercheSciUrlDefaut'] = str_replace('{referentiel}', $ref_sci_defaut, $this->config['url']['efloreRechercheSciUrlTpl']);
$widget['donnees']['efloreRechercheVernaUrlDefaut'] = str_replace('{referentiel}',$ref_verna_defaut, $this->config['url']['efloreRechercheVernaUrlTpl']);
$widget['donnees']['ficheTaxonUrlTplDefaut'] = str_replace('{referentiel}', $ref_sci_defaut, $this->config['url']['ficheTaxonUrlTpl']);
$widget['squelette'] = 'recherche';
return $widget;
}
private function traiterReferentielSciDispos() {
$refs_sci_fmt = array();
$refs_sci = $this->config['referentiel']['referentielsSciDispos'];
$refs_sci = explode(',', $refs_sci);
foreach($refs_sci as $ref) {
$ref_code_desc = explode('#', $ref);
$refs_sci_fmt[$ref_code_desc[0]] = $ref_code_desc[1];
}
return $refs_sci_fmt;
}
private function traiterReferentielsSciVernasDispos() {
$refs_verna = $this->config['referentiel']['referentielsVernaDispos'];
$refs_verna = explode(',', $refs_verna);
$tab_refs_verna = array();
foreach($refs_verna as $ref_verna) {
$ref_sci_a_verna = explode(":", $ref_verna);
$tab_refs_verna[$ref_sci_a_verna[0]] = $ref_sci_a_verna[1];
}
return $tab_refs_verna;
}
private function traiterUrlsConsultationReferentiels($referentiels) {
$urls = array();
foreach($referentiels as $code_ref => $nom) {
$config_url_ref = 'efloreConsultation'.ucwords($code_ref).'Url';
if(isset($this->config['url'][$config_url_ref])) {
$urls[$code_ref] = $this->config['url'][$config_url_ref];
} else {
$urls[$code_ref] = $this->config['url']['efloreConsultationUrl'];
}
}
return $urls;
}
}
?>
/tags/v5.10-vilmorin/widget/modules/recherche/squelettes/exemple.tpl.html
New file
0,0 → 1,15
<div id="recherche-eflore-1">
<script type="text/javascript" src="http://www.tela-botanica.org/commun/jquery/1.7.1/jquery-1.7.1.js"></script>
<script type="text/javascript" src="http://www.tela-botanica.org/commun/jquery/jquery-ui/1.8.17/js/jquery-ui-1.8.17.custom.min.js"></script>
<link xmlns:xh="http://www.w3.org/1999/xhtml/vocab#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" rel="xh:stylesheet stylesheet" href="http://localhost/eflore-consultation/presentations/styles/eflore.css" media="screen" type="text/css" />
<link xmlns:xh="http://www.w3.org/1999/xhtml/vocab#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" rel="xh:stylesheet stylesheet" href="http://localhost/eflore-consultation/widget/modules/recherche/squelettes/css/recherche.css" media="screen" type="text/css" />
<link href="http://www.tela-botanica.org/commun/jquery/jquery-ui/1.8.17/css/ui-lightness/jquery-ui-1.8.17.custom.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
$(document).ready(function() {
$.getJSON("http://localhost/eflore-consultation/widget/recherche/?mode=ajax&callback=?", function (moteur) {
$("#recherche-eflore-1").append(moteur.contenu);
initialiser();
});
});
</script>
</div>
/tags/v5.10-vilmorin/widget/modules/recherche/squelettes/css/recherche.css
New file
0,0 → 1,72
#conteneur-recherche {
width: 660px;
}
 
#conteneur-recherche h1.titre-widget {
margin-top: 5px;
margin-bottom: 0px;
color: black;
background: none;
}
 
#conteneur-recherche {
background-color: #FFFFFF;
border-radius: 10px 10px 10px 10px;
box-shadow: 1px 6px 6px 6px #C3C0AD;
color: #3A3633;
font-family: arial;
font-size: 11px;
margin: 10px 10px 20px;
padding: 8px;
}
 
#conteneur-recherche h1 {
font-size: 14px;
}
 
#conteneur-recherche h1.titre-widget {
padding-left: 15px;
}
 
#conteneur-recherche .zone-choix-referentiel {
padding: 3px;
padding-bottom : 5px;
padding-left: 10px;
}
 
#conteneur-recherche .label-referentiel {
color: #FD8C13;
font-weight: bold;
letter-spacing: 0;
padding: 0 0 0 5px;
text-transform: uppercase;
}
 
#conteneur-recherche .selection-referentiel {
background: none repeat scroll 0 0 white;
cursor: pointer;
height: 25px;
}
 
#conteneur-recherche .referentiel-selectionne {
background-color: #EEE;
border-color: #EB8F00;
color: #C87A00;
cursor: default;
font-weight: bold;
text-decoration: underline;
height: 35px;
}
 
#ef-form-nomenclature label {
display: inline;
}
 
#eflore_nomenclature_fiche {
color: black;
border-color: black;
}
 
.ef-groupe-champs {
border: none;
}
/tags/v5.10-vilmorin/widget/modules/recherche/squelettes/recherche.tpl.html
New file
0,0 → 1,95
<!-- DEBUT FORM_NOM -->
<script type="text/javascript">
<!--
var AUTOCOMPLETION_ELEMENTS_NBRE = 50;
var URL_SERVICE_AUTOCOMPLETION_NOM_SCI_TPL = "<?= $efloreRechercheSciUrlTpl; ?>";
var URL_SERVICE_AUTOCOMPLETION_NOM_VERNA_TPL = "<?= $efloreRechercheVernaUrlTpl; ?>";
var URL_BASE_FICHE_TAXON_TPL = "<?= $ficheTaxonUrlTpl; ?>";
var VALEUR_DEFAUT_NOM_SCI = "Saisir un nom scientifique (sans auteur)";
var VALEUR_DEFAUT_NOM_VERNA = "Saisir un nom commun";
var VALEUR_DEFAUT_AU = "";
var VALEUR_DEFAUT_BIB = "";
var VALEUR_DEFAUT_DATE = "";
var URL_BASE_FICHE_TAXON = "<?= $ficheTaxonUrlTplDefaut; ?>";
<?php $refs_urls = json_encode($referentielsConsultationUrls); ?>
var REFERENTIELS_CONSULTATION_URLS = <?= $refs_urls; ?>;
<?php $refs_verna = json_encode($referentielsVernasDispos); ?>
var REFERENTIELS_VERNA_DISPOS = <?= $refs_verna; ?>;
var URL_SERVICE_AUTOCOMPLETION_NOM_SCI = "<?= $efloreRechercheSciUrlDefaut; ?>";
var URL_SERVICE_AUTOCOMPLETION_NOM_VERNA = "<?= $efloreRechercheVernaUrlDefaut; ?>";
function gererVisibiliteSelecteurNom() {
ref_sci = $(".selection-referentiel[disabled=disabled]").attr("name");
$("#eflore_nomenclature_referentiel").val(ref_sci);
URL_SERVICE_AUTOCOMPLETION_NOM_SCI = URL_SERVICE_AUTOCOMPLETION_NOM_SCI_TPL.replace("{referentiel}", ref_sci);
URL_BASE_FICHE_TAXON = REFERENTIELS_CONSULTATION_URLS[ref_sci]+URL_BASE_FICHE_TAXON_TPL.replace("{referentiel}", ref_sci);
console.log(URL_BASE_FICHE_TAXON);
if(REFERENTIELS_VERNA_DISPOS[ref_sci] != undefined) {
URL_SERVICE_AUTOCOMPLETION_NOM_VERNA = URL_SERVICE_AUTOCOMPLETION_NOM_VERNA_TPL.replace("{referentiel}", REFERENTIELS_VERNA_DISPOS[ref_sci]);
$("#type_nom_vernaculaire").parent().css("visibility","visible");
} else {
$("#type_nom_vernaculaire").parent().css("visibility","hidden");
$("#type_nom_scientifique").attr('checked', 'checked');
$('#nom').val();
$('#nom').attr("placeholder", "");
}
$('#ef-form-nomenclature').attr("action", REFERENTIELS_CONSULTATION_URLS[ref_sci]);
}
function mettreEnValeurReferentielSelectionne(bouton) {
$(".selection-referentiel").removeAttr("disabled");
$(".selection-referentiel").removeClass("referentiel-selectionne");
bouton.attr("disabled","disabled");
bouton.addClass("referentiel-selectionne");
gererVisibiliteSelecteurNom();
}
function initialiser() {
$.getScript("<?= $efloreScriptUrl; ?>").done(function(script, textStatus) {
// la fonction initialiserMoteur est la fonction d'initialisation du script de recherche tiré d'eflore
// elle utilise les variable définies ci dessus, et elle est donc chargée après.
initialiserMoteur();
$(".selection-referentiel").click(function () {
mettreEnValeurReferentielSelectionne($(this));
});
mettreEnValeurReferentielSelectionne($($(".selection-referentiel")[0]));
});
}
 
// -->
</script>
<div class="importance1" id="conteneur-recherche">
<h1 class="titre-widget">Cherchez une plante de <span class="zone-choix-referentiel">
<?php $premier_ref = true; ?>
<?php foreach($referentielsSciDispos as $code => $intitule) : ?>
<span class="referentiel">
<input type="button" class="selection-referentiel" id="referentiel_<?= $code ?>" name="<?= $code; ?>" value="<?= $intitule; ?>" <?= $premier_ref ? 'disabled="disabled"' : ""; ?> />
</span>
<?php $premier_ref = false; ?>
<?php endforeach; ?>
</span> </h1>
<form id="ef-form-nomenclature" name="ef-form-nomenclature" action="<?= $efloreConsultationUrl; ?>" method="get">
<fieldset class="ef-groupe-champs">
<span class="zone-choix-type-nom">
<span class="type-nom">
<input type="radio" id="type_nom_scientifique" name="type_nom" value="nom_scientifique" checked="checked" />
<label for="type_nom_scientifique">Nom scientifique</label>
</span>
<span class="type-nom">
<input type="radio" id="type_nom_vernaculaire" name="type_nom" value="nom_vernaculaire" />
<label for="type_nom_vernaculaire" title="(en français, allemand, anglais, catalan, espagnol, italien ou néerlandais)">Nom commun</label>
</span>
</span>
<input type="text" aria-haspopup="true" aria-autocomplete="list" role="textbox" autocomplete="off" id="nom" name="nom" class="champ ui-autocomplete-input" size="30" maxlength="255" />
<span id="zone-liens-recherche">
<input type="hidden" id="eflore_nomenclature_niveau" name="niveau" value="2" />
<input type="hidden" id="eflore_nomenclature_module" name="module" value="recherche" />
<input type="hidden" id="eflore_nomenclature_referentiel" name="referentiel" value="<?= array_shift(array_keys($referentielsSciDispos)); ?>" />
<input type="hidden" id="eflore_nomenclature_action" name="action" value="rechercheSimple" />
<input type="submit" id="eflore_nomenclature_submit" name="submit" value="OK" class="ok" />
<input type="submit" id="eflore_nomenclature_fiche" name="acces_fiche" value="Accès fiche" />
</span>
</fieldset>
</form>
</div>
<!-- FIN FORM_NOM -->
/tags/v5.10-vilmorin/widget/modules/recherche
New file
Property changes:
Added: svn:ignore
+config.ini
/tags/v5.10-vilmorin/widget/Widget.php
New file
0,0 → 1,161
<?php
// In : utf8 url_encoded (get et post)
// Out : utf8
/**
* La classe Widget analyser l'url et chage le widget correspondant.
* Format d'url :
* /widget/nom_du_widget?parametres1=ma_valeur1&parametre2=ma_valeur2
* Les widget sont dans des dossiers en minuscule correspondant au nom de la classe du widget.
* Exemple : /widget/carto avec la classe Carto.php dans le dossier carto.
*
*
* @author jpm
*
*/
class Widget {
 
/** Les paramètres de configuration extrait du fichier .ini */
private static $config;
 
/** Le nom du widget demandé. */
private $widget = null;
/** Les chemins où l'autoload doit chercher des classes. */
private static $autoload_chemins = array();
/** Les paramètres de l'url $_GET nettoyés. */
private $parametres = null;
 
/**
* Constructeur.
* Parse le fichier de configuraion "widget.ini" et parse l'url à la recherche du widget demandé.
* @param str iniFile Configuration file to use
*/
public function __construct($fichier_ini = 'widget.ini.php') {
// Chargement de la configuration
self::$config = parse_ini_file($fichier_ini, TRUE);
// Paramêtres de config dynamiques
self::$config['chemins']['baseURLAbsoluDyn'] = 'http://'.$_SERVER['SERVER_NAME'].self::$config['chemins']['baseURL'].'%s';
// Gestion de la mémoire maximum allouée aux services
ini_set('memory_limit', self::$config['parametres']['limiteMemoire']);
// Réglages de PHP
setlocale(LC_ALL, self::$config['parametres']['locale']);
date_default_timezone_set(self::$config['parametres']['fuseauHoraire']);
// Gestion des erreurs
error_reporting(self::$config['parametres']['erreurNiveau']);
if (isset($_SERVER['REQUEST_URI']) && isset($_SERVER['QUERY_STRING'])) {
$url_morceaux = $this->parserUrl();
if (isset($url_morceaux[0])) {
$this->widget = $url_morceaux[0];
self::$config['chemins']['widgetCourantDossier'] = self::$config['chemins']['widgetsDossier'].strtolower($this->widget).DIRECTORY_SEPARATOR;
$this->chargerWidgetConfig();
}
// Chargement des chemins pour l'autoload
$this->chargerCheminAutoload();
// Enregistrement de la méthode gérant l'autoload des classes
spl_autoload_register(array('Widget', 'chargerClasse'));
// Nettoyage du $_GET (sécurité)
$this->collecterParametres();
} else {
$e = 'Les widget nécessite les variables serveurs suivantes pour fonctionner : REQUEST_URI et QUERY_STRING.';
trigger_error($e, E_USER_ERROR);
}
}
private function parserUrl() {
if (strlen($_SERVER['QUERY_STRING']) == 0) {
$len = strlen($_SERVER['REQUEST_URI']);
} else {
$len = -(strlen($_SERVER['QUERY_STRING']) + 1);
}
$url = substr($_SERVER['REQUEST_URI'], strlen(self::$config['chemins']['baseURL']), $len);
$url_morceaux = explode('/', $url);
return $url_morceaux;
}
private function collecterParametres() {
if (isset($_GET) && $_GET != '') {
$this->nettoyerGet();
$this->parametres = $_GET;
}
}
private function nettoyerGet() {
foreach ($_GET as $cle => $valeur) {
$verifier = array('NULL', "\n", "\r", "\\", '"', "\x00", "\x1a", ';');
$_GET[$cle] = strip_tags(str_replace($verifier, '', $valeur));
}
}
private function chargerCheminAutoload() {
$chemins_communs = explode(';', self::$config['chemins']['autoload']);
$chemins_communs = array_map('trim', $chemins_communs);
array_unshift($chemins_communs, '');
$chemins_widget = array();
if (isset(self::$config[$this->widget]['autoload'])) {
$chemins_widget = explode(';', self::$config[$this->widget]['autoload']);
foreach ($chemins_widget as $cle => $chemin) {
$chemins_widget[$cle] = self::$config['chemins']['widgetCourantDossier'].trim($chemin);
}
}
self::$autoload_chemins = array_merge($chemins_communs, $chemins_widget);
}
/**
* La méthode chargerClasse() charge dynamiquement les classes trouvées dans le code.
* Cette fonction est appelée par php5 quand il trouve une instanciation de classe dans le code.
*
*@param string le nom de la classe appelée.
*@return void le fichier contenant la classe doit être inclu par la fonction.
*/
public static function chargerClasse($classe) {
if (class_exists($classe)) {
return null;
}
foreach (self::$autoload_chemins as $chemin) {
$chemin = $chemin.$classe.'.php';
if (file_exists($chemin)) {
require_once $chemin;
}
}
}
/**
* Execute le widget.
*/
function executer() {
if (!is_null($this->widget)) {
$classe_widget = ucfirst($this->widget);
$fichier_widget = self::$config['chemins']['widgetCourantDossier'].$classe_widget.'.php';
if (file_exists($fichier_widget)) {
include_once $fichier_widget;
if (class_exists($classe_widget)) {
$widget = new $classe_widget(self::$config, $this->parametres);
$widget->executer();
}
}
}
}
/**
* Charge le fichier de config spécifique du wiget et fusionne la config avec celle partagés par l'ensemble des widgets.
*/
private function chargerWidgetConfig() {
$widget_config_ini_fichier = self::$config['chemins']['widgetCourantDossier'].'config.ini';
if (file_exists($widget_config_ini_fichier)) {
$widget_config = parse_ini_file($widget_config_ini_fichier, TRUE);
self::$config = array_merge(self::$config, $widget_config);
}
}
}
?>
/tags/v5.10-vilmorin/widget/.htaccess
New file
0,0 → 1,13
<files *.ini>
order deny,allow
deny from all
</files>
 
#AddHandler x-httpd-php5 .php
AddDefaultCharset UTF-8
 
RewriteEngine On
# Redirections générale vers le fichier principal de Widget.
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*$ index.php/
/tags/v5.10-vilmorin/widget/bibliotheque/WidgetCommun.php
New file
0,0 → 1,431
<?php
abstract class WidgetCommun {
protected $config = null;
protected $parametres = null;
protected $messages = array();
protected $debug = array();
public function __construct($config, $parametres) {
$this->config = $config;
$this->parserFichierIni($config['chemins']['widgetCourantDossier'].'config.ini');
$this->parametres = $parametres;
}
/**
* Parse le fichier ini donné en paramètre
* @param string $fichier_ini nom du fichier ini à parser
* @return boolean true si le fichier ini a été trouvé.
*/
private function parserFichierIni($fichier_ini) {
$retour = false;
if (file_exists($fichier_ini)) {
$ini = parse_ini_file($fichier_ini, true);
$this->fusionner($ini);
$retour = true;
}
return $retour;
}
 
/**
* fusionne un tableau de paramètres avec le tableau de config global
* @param array $ini le tableau à fusionner
*/
private function fusionner(array $ini) {
$this->config = array_merge($this->config, $ini);
}
protected function traiterNomMethodeExecuter($nom) {
$methode = 'executer';
$methode .= str_replace(' ', '', ucwords(str_replace('-', ' ', strtolower($nom))));
return $methode;
}
//+----------------------------------------------------------------------------------------------------------------+
// GESTION des CLASSES CHARGÉES à la DEMANDE
protected function getDao() {
if (! isset($this->dao)) {
$this->dao = new Dao();
}
return $this->dao;
}
//+----------------------------------------------------------------------------------------------------------------+
// GESTION DE MÉTHODES COMMUNES ENTRE LES SERVICES
protected function getUrlImage($id, $format = 'L') {
$url_tpl = $this->config['chemins']['celImgUrlTpl'];
$id = sprintf('%09s', $id).$format;
$url = sprintf($url_tpl, $id);
return $url;
}
protected function encoderMotCle($mot_cle) {
return md5(mb_strtolower($mot_cle));
}
private function protegerMotsCles($mots_cles, $type) {
$separateur = ($type == self::TYPE_IMG) ? ',' : ';' ;
$mots_cles_a_proteger = explode($separateur,rtrim(trim($mots_cles), $separateur));
foreach ($mots_cles_a_proteger as $mot) {
$mots_cles_proteges[] = $this->bdd->quote($mot);
}
$mots_cles = implode(',', $mots_cles_proteges);
return $mots_cles;
}
protected function tronquerCourriel($courriel) {
$courriel = preg_replace('/[^@]+$/i', '...', $courriel);
return $courriel;
}
protected function nettoyerTableau($tableau) {
foreach ($tableau as $cle => $valeur) {
if (is_array($valeur)) {
$valeur = $this->nettoyerTableau($valeur);
} else {
$valeur = $this->nettoyerTexte($valeur);
}
$tableau[$cle] = $valeur;
}
return $tableau;
}
protected function nettoyerTexte($txt) {
$txt = preg_replace('/&(?!([a-z]+|#[0-9]+|#x[0-9][a-f]+);)/i', '&amp;', $txt);
$txt = preg_replace('/^(?:000null|null)$/i', '', $txt);
return $txt;
}
protected function etreVide($valeur) {
$vide = false;
if ($valeur == '' || $valeur == 'null'|| $valeur == '000null' || $valeur == '0') {
$vide = true;
}
return $vide;
}
protected function formaterDate($date_heure_mysql, $format = '%A %d %B %Y à %H:%M') {
$date_formatee = '';
if (!$this->etreVide($date_heure_mysql)) {
$timestamp = $this->convertirDateHeureMysqlEnTimestamp($date_heure_mysql);
$date_formatee = strftime($format, $timestamp);
}
return $date_formatee;
}
 
protected function convertirDateHeureMysqlEnTimestamp($date_heure_mysql){
$val = explode(' ', $date_heure_mysql);
$date = explode('-', $val[0]);
$heure = explode(':', $val[1]);
return mktime((int) $heure[0], (int) $heure[1], (int) $heure[2], (int) $date[1], (int) $date[2], (int) $date[0]);
}
//+----------------------------------------------------------------------------------------------------------------+
// GESTION DE L'IDENTIFICATION et des UTILISATEURS
protected function getAuthIdentifiant() {
$id = (isset($_SERVER['PHP_AUTH_USER'])) ? $_SERVER['PHP_AUTH_USER'] : null;
return $id;
}
protected function getAuthMotDePasse() {
$mdp = (isset($_SERVER['PHP_AUTH_PW'])) ? $_SERVER['PHP_AUTH_PW'] : null;
return $mdp;
}
protected function authentifierAdmin() {
$message_accueil = "Veuillez vous identifier avec votre compte Tela Botanica.";
$message_echec = "Accès limité aux administrateurs du CEL.\n".
"Votre tentative d'identification a échoué.\n".
"Actualiser la page pour essayer à nouveau si vous êtes bien inscrit comme administrateur.";
return $this->authentifier($message_accueil, $message_echec, 'Admin');
}
protected function authentifierUtilisateur() {
$message_accueil = "Veuillez vous identifier avec votre compte Tela Botanica.";
$message_echec = "Accès limité aux utilisateur du CEL.\n".
"Inscrivez vous http://www.tela-botanica.org/page:inscription pour le devenir.\n".
"Votre tentative d'identification a échoué.\n".
"Actualiser la page pour essayer à nouveau si vous êtes déjà inscrit ou contacter 'accueil@tela-botanica.org'.";
return $this->authentifier($message_accueil, $message_echec, 'Utilisateur');
}
private function authentifier($message_accueil, $message_echec, $type) {
$id = $this->getAuthIdentifiant();
if (!isset($id)) {
$this->envoyerAuth($message_accueil, $message_echec);
} else {
if ($type == 'Utilisateur' && $this->getAuthMotDePasse() == 'debug') {
$autorisation = true;
} else {
$methodeAutorisation = "etre{$type}Autorise";
$autorisation = $this->$methodeAutorisation();
}
if ($autorisation == false) {
$this->envoyerAuth($message_accueil, $message_echec);
}
}
return true;
}
protected function etreUtilisateurAutorise() {
$identifiant = $this->getAuthIdentifiant();
$mdp = md5($this->getAuthMotDePasse());
$url = sprintf($this->config['authentification']['serviceUrlTpl'], $identifiant, $mdp);
$json = $this->getDao()->consulter($url);
$existe = json_decode($json);
$autorisation = (isset($existe) && $existe) ? true :false;
return $autorisation;
}
protected function etreAdminAutorise($identifiant) {
$identifiant = $this->getAuthIdentifiant();
$autorisation = ($this->etreUtilisateurAutorise() && $this->etreAdminCel($identifiant)) ? true : false;
return $autorisation;
}
protected function etreAdminCel($courriel) {
$admins = $this->config['authentification']['administrateurs'];
$courriels_autorises = explode(',', $admins);
 
$autorisation = (in_array($courriel, $courriels_autorises)) ? true : false ;
return $autorisation;
}
/**
* Prend en paramêtre un tableau de courriels et retourne après avoir intérogé un service we de l'annuaire
* une tableau avec en clé le courriel et en valeur, un tableau associatif :
* - nom : le nom de l'utilisateur
* - prenom : le prénom de l'utilisateur.
* @param array $courriels un tableau de courriels pour lesquels il faut recherche le prénom et nom.
*/
protected function recupererUtilisateursNomPrenom(Array $courriels) {
// Récupération des données au format Json
$service = "utilisateur/prenom-nom-par-courriel/".implode(',', $courriels);
$url = sprintf($this->config['chemins']['baseURLServicesAnnuaireTpl'], $service);
$json = $this->getDao()->consulter($url);
return (array) json_decode($json);
}
protected function recupererUtilisateursIdentite(Array $courriels) {
// Récupération des données au format Json
$service = "utilisateur/identite-par-courriel/".implode(',', $courriels);
$url = sprintf($this->config['chemins']['baseURLServicesAnnuaireTpl'], $service);
$json = $this->getDao()->consulter($url);
$utilisateurs = json_decode($json);
foreach ($courriels as $courriel) {
$info = array('id' => null, 'intitule' => '');
if (isset($utilisateurs->$courriel)) {
$info['intitule'] = $utilisateurs->$courriel->intitule;
$info['id'] = $utilisateurs->$courriel->id;
} else {
$info['intitule'] = $this->tronquerCourriel($courriel);
}
$noms[$courriel] = $info;
}
return $noms;
}
//+----------------------------------------------------------------------------------------------------------------+
// GESTION de l'ENVOIE au NAVIGATEUR
 
protected function envoyerJsonp($donnees = null, $encodage = 'utf-8') {
$contenu = $_GET['callback'].'('.json_encode($donnees).');';
$this->envoyer($contenu, 'text/html', $encodage);
}
protected function envoyer($donnees = null, $mime = 'text/html', $encodage = 'utf-8') {
// Traitements des messages d'erreurs et données
if (count($this->messages) != 0) {
header('HTTP/1.1 500 Internal Server Error');
$mime = 'text/html';
$encodage = 'utf-8';
$sortie = '<html>'.
'<head><title>Messages</title></head>'.
'<body><pre>'.implode("\n", $this->messages).'</pre><body>'.
'</html>';
} else {
$sortie = $donnees;
if (is_null($donnees)) {
$sortie = 'OK';
}
}
 
// Gestion de l'envoie du déboguage
$this->envoyerDebogage();
 
// Envoie sur la sortie standard
$this->envoyerContenu($encodage, $mime, $sortie);
}
 
private function envoyerDebogage() {
if (!is_array($this->debug)) {
$this->debug[] = $this->debug;
}
if (count($this->debug) != 0) {
foreach ($this->debug as $cle => $val) {
if (is_array($val)) {
$this->debug[$cle] = print_r($val, true);
}
}
header('X-DebugJrest-Data:'.json_encode($this->debug));
}
}
 
private function envoyerContenu($encodage, $mime, $contenu) {
if (!is_null($mime) && !is_null($encodage)) {
header("Content-Type: $mime; charset=$encodage");
} else if (!is_null($mime) && is_null($encodage)) {
header("Content-Type: $mime");
}
print_r($contenu);
}
private function envoyerAuth($message_accueil, $message_echec) {
header('HTTP/1.0 401 Unauthorized');
header('WWW-Authenticate: Basic realm="'.mb_convert_encoding($message_accueil, 'ISO-8859-1', 'UTF-8').'"');
header('Content-type: text/plain; charset=UTF-8');
print $message_echec;
exit(0);
}
//+----------------------------------------------------------------------------------------------------------------+
// GESTION DES SQUELETTES (PHP, TXT...)
/**
* Méthode prenant en paramètre un tableau associatif, les clés seront recherchées dans le texte pour être
* remplacer par la valeur. Dans le texte, les clés devront être entre accolades : {}
*
* @param String $txt le texte où chercher les motifs.
* @param Array $donnees un tableau associatif contenant les motifs à remplacer.
*
* @return String le texte avec les motifs remplacer par les valeurs du tableau.
*/
protected static function traiterSqueletteTxt($txt, Array $donnees = array()) {
$motifs = array();
$valeurs = array();
foreach ($donnees as $cle => $valeur) {
if (strpos($cle, '{') === false && strpos($cle, '}') === false) {
$motifs = '{'.$cle.'}';
$valeurs = $valeur;
}
}
$txt = str_replace($motifs, $valeurs, $txt);
return $txt;
}
 
/**
* Méthode prenant en paramètre un chemin de fichier squelette et un tableau associatif de données,
* en extrait les variables, charge le squelette et retourne le résultat des deux combinés.
*
* @param String $fichier le chemin du fichier du squelette
* @param Array $donnees un tableau associatif contenant les variables a injecter dans le squelette.
*
* @return boolean false si le squelette n'existe pas, sinon la chaine résultat.
*/
protected static function traiterSquelettePhp($fichier, Array $donnees = array()) {
$sortie = false;
if (file_exists($fichier)) {
// Extraction des variables du tableau de données
extract($donnees);
// Démarage de la bufferisation de sortie
ob_start();
// Si les tags courts sont activés
if ((bool) @ini_get('short_open_tag') === true) {
// Simple inclusion du squelette
include $fichier;
} else {
// Sinon, remplacement des tags courts par la syntaxe classique avec echo
$html_et_code_php = self::traiterTagsCourts($fichier);
// Pour évaluer du php mélangé dans du html il est nécessaire de fermer la balise php ouverte par eval
$html_et_code_php = '?>'.$html_et_code_php;
// Interprétation du html et du php dans le buffer
echo eval($html_et_code_php);
}
// Récupèration du contenu du buffer
$sortie = ob_get_contents();
// Suppression du buffer
@ob_end_clean();
} else {
$msg = "Le fichier du squelette '$fichier' n'existe pas.";
trigger_error($msg, E_USER_WARNING);
}
// Retourne le contenu
return $sortie;
}
 
/**
* Fonction chargeant le contenu du squelette et remplaçant les tags court php (<?= ...) par un tag long avec echo.
*
* @param String $chemin_squelette le chemin du fichier du squelette
*
* @return string le contenu du fichier du squelette php avec les tags courts remplacés.
*/
private static function traiterTagsCourts($chemin_squelette) {
$contenu = file_get_contents($chemin_squelette);
// Remplacement de tags courts par un tag long avec echo
$contenu = str_replace('<?=', '<?php echo ', $contenu);
// Ajout systématique d'un point virgule avant la fermeture php
$contenu = preg_replace("/;*\s*\?>/", "; ?>", $contenu);
return $contenu;
}
//+----------------------------------------------------------------------------------------------------------------+
// UTILITAIRES
/**
* Permet de trier un tableau multi-dimenssionnel en gardant l'ordre des clés.
*
* @param Array $array le tableau à trier
* @param Array $cols tableau indiquant en clé la colonne à trier et en valeur l'ordre avec SORT_ASC ou SORT_DESC
* @author cagret at gmail dot com
* @see http://fr.php.net/manual/fr/function.array-multisort.php Post du 21-Jun-2009 12:38
*/
public static function trierTableauMd($array, $cols) {
$colarr = array();
foreach ($cols as $col => $order) {
$colarr[$col] = array();
foreach ($array as $k => $row) {
$colarr[$col]['_'.$k] = strtolower(self::supprimerAccents($row[$col]));
}
}
$params = array();
foreach ($cols as $col => $order) {
$params[] =& $colarr[$col];
$params = array_merge($params, (array)$order);
}
call_user_func_array('array_multisort', $params);
$ret = array();
$keys = array();
$first = true;
foreach ($colarr as $col => $arr) {
foreach ($arr as $k => $v) {
if ($first) {
$keys[$k] = substr($k,1);
}
$k = $keys[$k];
if (!isset($ret[$k])) {
$ret[$k] = $array[$k];
}
$ret[$k][$col] = $array[$k][$col];
}
$first = false;
}
return $ret;
}
private static function supprimerAccents($str, $charset='utf-8')
{
$str = htmlentities($str, ENT_NOQUOTES, $charset);
$str = preg_replace('#&([A-za-z])(?:acute|cedil|circ|grave|orn|ring|slash|th|tilde|uml);#', '\1', $str);
$str = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $str); // pour les ligatures e.g. '&oelig;'
$str = preg_replace('#&[^;]+;#', '', $str); // supprime les autres caractères
return $str;
}
}
?>
/tags/v5.10-vilmorin/widget/bibliotheque/Dao.php
New file
0,0 → 1,155
<?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.
*
* @category php5
* @package Widget
* @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 Dao {
const HTTP_URL_REQUETE_SEPARATEUR = '&';
const HTTP_URL_REQUETE_CLE_VALEUR_SEPARATEUR = '=';
private $http_methodes = array('GET', 'POST', 'PUT', 'DELETE', 'HEAD', 'OPTIONS', 'CONNECT', 'TRACE');
protected $parametres = null;
private $url = null;
private $reponse_entetes = null;
//+----------------------------------------------------------------------------------------------------------------+
// ACCESSEURS
public function getReponseEntetes($cle) {
return $this->reponse_entetes;
}
public function getParametre($cle) {
$valeur = (isset($this->parametres[$cle])) ? $this->parametres[$cle] : null;
return $valeur;
}
public function ajouterParametre($cle, $valeur) {
$this->parametres[$cle] = $valeur;
}
public function supprimerParametre($cle) {
unset($this->parametres[$cle]);
}
public function nettoyerParametres() {
$this->parametres = null;
}
//+----------------------------------------------------------------------------------------------------------------+
// MÉTHODES
public function consulter($url) {
$retour = $this->envoyerRequete($url, 'GET');
return $retour;
}
public function ajouter($url, Array $donnees) {
$retour = $this->envoyerRequete($url, 'PUT', $donnees);
return $retour;
}
public function modifier($url, Array $donnees) {
$retour = $this->envoyerRequete($url, 'POST', $donnees);
return $retour;
}
public function supprimer($url) {
$retour = $this->envoyerRequete($url, 'DELETE');
return $retour;
}
public function envoyerRequete($url, $mode, Array $donnees = array()) {
$this->url = $url;
$contenu = false;
if (! in_array($mode, $this->http_methodes)) {
$e = "Le mode de requête '$mode' n'est pas accepté!";
trigger_error($e, E_USER_WARNING);
} else {
if ($mode == 'GET') {
$this->traiterUrlParametres();
}
$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_URL_REQUETE_SEPARATEUR))));
$flux = @fopen($this->url, 'r', false, $contexte);
if (!$flux) {
$this->reponse_entetes = $http_response_header;
$e = "L'ouverture de l'url '{$this->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
$this->reponse_entetes = stream_get_meta_data($flux);
// Contenu actuel de $url
$contenu = stream_get_contents($flux);
fclose($flux);
}
$this->traiterEntete();
}
$this->reinitialiser();
return $contenu;
}
private function traiterUrlParametres() {
$parametres = array();
if (count($this->parametres) > 0) {
foreach ($this->parametres as $cle => $valeur) {
$cle = rawurlencode($cle);
$valeur = rawurlencode($valeur);
$parametres[] = $cle.self::HTTP_URL_REQUETE_CLE_VALEUR_SEPARATEUR.$valeur;
}
$url_parametres = implode(self::HTTP_URL_REQUETE_SEPARATEUR, $parametres);
$this->url = $this->url.'?'.$url_parametres;
}
}
private function traiterEntete() {
$infos = $this->analyserEntete();
$this->traiterEnteteDebogage($infos);
}
private function analyserEntete() {
$entetes = $this->reponse_entetes;
$infos = array('date' => null, 'uri' => $this->url, 'debogages' => null);
if (isset($entetes['wrapper_data'])) {
$entetes = $entetes['wrapper_data'];
}
foreach ($entetes as $entete) {
if (preg_match('/^X_REST_DEBOGAGE_MESSAGES: (.+)$/', $entete, $match)) {
$infos['debogages'] = 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 traiterEnteteDebogage($entetes_analyses) {
if (isset($entetes['debogages'])) {
$date = $entetes['date'];
$uri = $entetes['uri'];
$debogages = $entetes['debogages'];
foreach ($debogages as $debogage) {
$e = "DEBOGAGE : $date - $uri :\n$debogage";
trigger_error($e, E_USER_NOTICE);
}
}
}
private function reinitialiser() {
$this->nettoyerParametres();
}
}
/tags/v5.10-vilmorin/widget/index.php
New file
0,0 → 1,5
<?php
require 'Widget.php';
$widget = new Widget();
$widget->executer();
?>
/tags/v5.10-vilmorin/widget
New file
Property changes:
Added: svn:ignore
+widget.ini.php
/tags/v5.10-vilmorin/index_mobile.php
New file
0,0 → 1,11
<?php
// declare(encoding='UTF-8');
/** Inclusion du fichier principal de l'application*/
require_once 'eflore.php';
 
echo AppControleur::getContenuCorps();
 
// Débogage à décommenter quand nécessaire (en vrai jamais)
//echo AppControleur::getChrono();
//echo AppControleur::getExceptions();
?>
/tags/v5.10-vilmorin/eflore_papyrus.php
New file
0,0 → 1,95
<?php
// declare(encoding='UTF-8');
/**
* Mon exemple d'application.
* Fichier contenant les fonctions nécessaire pour l'insertion de l'application dans Papyrus.
*
* @category PHP 5.2
* @package eflore-consultation
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
* @copyright 2011 Tela-Botanica
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
 
// Gestion des paramêtres passés par Papyrus
if (isset($GLOBALS['_GEN_commun']['info_application']->referentiel)) {
$_GET['referentiel'] = $GLOBALS['_GEN_commun']['info_application']->referentiel;
}
 
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.'eflore.php';
 
$chemin = '/eflore/consultation/';
$chemin_commun = 'http://www.tela-botanica.org/commun/';
// Définition des feuilles de style de l'application pour Papyrus
// TODO: il y a surement mieux à faire pour obtenir l'url des fichiers
GEN_stockerStyleExterne('jquery-ui', $chemin_commun.'jquery/jquery-ui/1.10.2/css/ui-lightness/jquery-ui-1.10.2.custom.css');
GEN_stockerStyleExterne('fancybox', $chemin_commun.'jquery/fancybox/1.3.4/jquery.fancybox-1.3.4.css');
GEN_stockerStyleExterne('eflore', $chemin.'/presentations/styles/eflore.css');
 
// OpenSearch dynamique
$referentiel = 'bdtfx';
if (isset($_GET['referentiel'])) $referentiel = $_GET['referentiel'];
$titreOpenSearch = 'eFlore ' . strtoupper($referentiel) . ' : noms scientifiques';
$cheminOpenSearch = Config::get('base_url_application') . 'configurations/RechercheOpenSearch/OpenSearch' . ucfirst($referentiel) . '.xml';
GEN_stockerStyleExterne('opensearch-description', $cheminOpenSearch, $titreOpenSearch, 'search', 'application/opensearchdescription+xml', '');
 
// Définition des fichiers JS de l'application pour Papyrus
GEN_stockerFichierScript('jquery-1.7', $chemin_commun.'jquery/1.7.1'.DS.'jquery-1.7.1.js');
GEN_stockerFichierScript('jquery-ui-1.10.2', $chemin_commun.'jquery/jquery-ui/1.10.2/js'.DS.'jquery-ui-1.10.2.custom.min.js');
GEN_stockerFichierScript('fancybox', $chemin_commun.'/jquery/fancybox/1.3.4'.DS.'jquery.fancybox-1.3.4.pack.js');
GEN_stockerFichierScript('cookie', $chemin_commun.'jquery/cookie/1.0/jquery.cookie.min.js');
GEN_stockerFichierScript('eflore-general', $chemin.'presentations/scripts'.DS.'eflore.js');
GEN_stockerFichierScript('autocompletion', $chemin.'presentations/scripts'.DS.'recherche.js');
GEN_stockerFichierScript('eflore-synthese', $chemin.'presentations/scripts'.DS.'fiche-synthese.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 sociaux
GEN_modifierMetaProperty('og:title', 'eFlore');
GEN_modifierMetaProperty('og:description', 'eFlore, la flore &eacute;lectronique collaborative 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() {
//Retour du menu vide dans le cas de l'affichage dans Papyrus
// AppControleur::getContenuMenu()
return '';
}
?>
/tags/v5.10-vilmorin/metier/api_0.1/Graphiques.php
New file
0,0 → 1,99
<?php
// declare(encoding='UTF-8');
/**
* Classe gérant les graphiques et leurs légendes.
*
* @category PHP 5.2
* @package eflore-consultation
* @author Mathilde SALTHUN-LASSALLE <mathilde@tela-botanica.org>
* @copyright 2011 Tela-Botanica
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
class Graphiques extends Eflore {
 
private $bdnt;
private $num_nom;
private $type_graph;
private $classe;
private $code;
// pour chaque code, [0] est le min (départ de recherche des valeurs)
// et [1] est le max (fin)
static $codes = array ("VEL" => array(1,9),
"VET" => array(1,9),
"VEHA" => array(1,9),
"VEC" => array(1,9),
"VER" => array(1,9),
"VETX" => array(1,9),
"VEN" => array(1,9),
"VEMO" => array(1,9),
"VEHE" => array(1,12),
"VES" => array(0,9) );
 
public function setType_graph($tg) {
$this->type_graph = $tg;
}
public function setCode($code) {
$this->code = $code;
}
public function setClasse($classe) {
$this->classe = $classe;
}
public function setBdnt($bdnt){
$this->bdnt = $bdnt;
}
public function setNum_nom($nn){
$this->num_nom = $nn;
}
 
// TODO: array_map() // XXX: PHP-5.3
static function _build_range() {
$ret = array();
foreach (self::$codes as $classe => $val) {
foreach(range($val[0], $val[1]) as $i) {
$ret[] = $classe . ':' . $i;
}
}
return implode(',', $ret);
}
 
// TODO: array_map() // XXX: PHP-5.3
static function _split_data($tab) {
$ret = array();
foreach ($tab as $k => $v) {
list($new_k, $sub_k) = explode(':', $k);
$ret[$new_k][$sub_k] = $v;
}
return $ret;
}
 
public function getLegendeGraphique() {
$legende = array();
// eg: VEL:1,VEL:2,VEL:3,...VER:9,VETX:1,...
$ressources = self::_build_range();
$url = Eflore::s_formaterUrl(Config::get('legendeGraphiqueTpl'),
$this->ajouterParametreParDefaut(array('params' => $ressources)),
FALSE);
$data = $this->chargerDonnees($url);
return self::_split_data($data);
}
public function getGraphique() {
$url = $this->getUrlInformation();
return $this->chargerDonnees($url);
}
public function getUrlGraphique() {
$tpl = Config::get('graphiqueTpl');
$params = array( 'bdnt' => $this->bdnt, 'num_nom' => $this->num_nom , 'type_graph' => $this->type_graph);
$url = $this->formaterUrl($tpl, $params);
return $url;
}
}
?>
/tags/v5.10-vilmorin/metier/api_0.1/Informations.php
New file
0,0 → 1,91
<?php
/**
*
* classe gérant des informations (descriptives, écologiques )
*
* @author mathilde SALTHUN-LASSALLE <mathilde@tela-botanica.org>
*
*/
class Informations extends Eflore {
private $bdnt;
private $num_nom;
private $limite;
private $depart;
private $catminat;
public function setDepart($depart){
$this->depart = $depart;
}
public function setLimite($limite){
$this->limite = $limite;
}
public function setBdnt($bdnt){
$this->bdnt = $bdnt;
}
public function setNum_nom($nn){
$this->num_nom = $nn;
}
public function setCatminat($catminat){
$this->catminat = $catminat;
}
public function getInformations() {
$url = $this->getUrlInformation();
return $this->chargerDonnees($url);
}
 
public function getInformationsEcologie() {
$url = $this->getUrlInformation();
$url .= '?categorie=ecologie';
return $this->chargerDonnees($url);
}
public function getInformationsDescription() {
$url = $this->getUrlInformation();
$url .= '?categorie=description';
return $this->chargerDonnees($url);
}
public function getInformationsRelationCatminat() {
$url = $this->getUrlInformationsRelationCatminat();
return $this->chargerDonnees($url);
}
public function getInformationsMasqueCatminat() {
$url = $this->getUrlInformationsMasqueCatminat();
return $this->chargerDonnees($url);
}
public function getUrlInformation() {
$tpl = Config::get('informationTpl');
$params = array( 'bdnt' => $this->bdnt, 'num_nom' => $this->num_nom );
$url = $this->formaterUrl($tpl, $params);
return $url;
}
public function getUrlInformationsRelationCatminat() {
$tpl = Config::get('informationsRelationCatminat');
$params = array( 'bdnt' => $this->bdnt, 'num_nom' => $this->num_nom, 'limite' => $this->limite, 'depart' => $this->depart );
$url = $this->formaterUrl($tpl, $params);
return $url;
}
public function getUrlInformationsMasqueCatminat() {
$tpl = Config::get('informationsCatminat');
$params = array( 'catminat' => $this->catminat, 'limite' => $this->limite, 'depart' => $this->depart );
$url = $this->formaterUrl($tpl, $params);
return $url;
}
 
}
/tags/v5.10-vilmorin/metier/api_0.1/Wikini.php
New file
0,0 → 1,56
<?php
// declare(encoding='UTF-8');
/**
* Classe gérant les wiki.
*
* @category PHP 5.2
* @package eflore-consultation
* @author Aurélien Peronnet <aurelien@tela-botanica.org>
* @copyright 2012 Tela-Botanica
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
class Wikini extends Eflore {
 
//TODO: voir s'il est nécessaire d'ajouter des variables de classe pour en faire
// un service à la structure similaire à celle du service wikipedia
public function getPageWikiPourRefEtNumTax($referentiel, $numTax) {
return strtoupper($referentiel).'nt'.$numTax;
}
 
public function getTexteFormate($page, $section) {
$url = $this->getUrlTexteFormate($page, $section);
$donnees = $this->chargerDonnees($url);
return $donnees['texte'];
}
private function getUrlTexteFormate($page, $section = null) {
if ($section != null) {
$tpl = Config::get('texteFormateSectionWikiTpl');
$params = array('pageTag' => $page, 'sectionTitre' => $section);
} else {
$tpl = Config::get('texteFormateWikiTpl');
$params = array('pageTag' => $page);
}
$url = $this->formaterUrl($tpl, $params);
return $url;
}
public function getUrlPageWiki($referentiel, $numTax) {
$tpl = Config::get('pageWikiTpl');
$page = $this->getPageWikiPourRefEtNumTax($referentiel, $numTax);
$params = array('pageTag' => $page);
$url = $this->formaterUrl($tpl, $params);
return $url;
}
public function getDescriptionReferentielFormate($referentiel) {
$tpl = Config::get('texteFormateWikiTpl');
$params = array('pageTag' => strtoupper($referentiel).'Description');
$url = $this->formaterUrl($tpl, $params);
$donnees = $this->chargerDonnees($url);
return $donnees['texte'];
}
}
?>
/tags/v5.10-vilmorin/metier/api_0.1/Eflore.php
New file
0,0 → 1,165
<?php
// declare(encoding='UTF-8');
/**
* Classe mère de l'API 0.1 d'eFLore.
*
* @category PHP 5.2
* @package eflore-consultation
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
* @copyright 2011 Tela-Botanica
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
abstract class Eflore {
 
const RANG_FAMILLE = 180;
const RANG_GENRE = 220;
const RANG_ESPECE = 290;
const API_EFLORE = '';
const API_DEL = 'del';
const PROTOCOLE_CARACTERES = 1;
const PROTOCOLE_CAPITALISATION = 3;
const PROTOCOLE_DEFI = 4;
const PROTOCOLE_GENTIANE_AZURE = 5;
 
private $entete = null;
private $projet = null;
private $api = null;
 
public function __construct($projet = null) {
$this->projet = Registre::get('parametres.referentiel');
if (!is_null($projet)) {
$this->projet = $projet;
}
$this->api = self::API_EFLORE;
}
 
public function setApi($api) {
$this->api = $api;
return $this;
}
 
public function getApi() {
return $this->api;
}
 
public function setProjet($projet) {
$this->projet = $projet;
}
 
public function getProjet() {
return $this->projet;
}
 
public function getEnteteTotal() {
return $this->entete['total'];
}
 
/**
* Récupère un squelette d'URL dans le fichier de configuration, en fonction de l'API spécifiée dans $this->api
*
* @param string $squelette squelette d'URL à chercher dans le fichier de config, sans le préfixe d'API
* @param string $api forcer l'API, false par défaut pour utiliser l'API spécifié dans $this->api (utiliser les constantes)
* @throws Exception si la clef générée n'est pas présente dans le fichier de configuration
*/
protected function obtenirSqueletteSelonApi($squelette) {
$api = $this->api;
if ($api != '') {
$squelette = ucfirst($squelette);
}
$clef = $api . $squelette . 'Tpl';
if (Config::existe($clef)) {
return Config::get($clef);
} else {
throw new Exception("Squelette indisponible pour l'API spécifiée");
}
}
 
/**
* Formate une url à partir d'un template contenant des paramètres à remplacer sous la forme {monParametre}.
* Le tableau associatif de paramètres doit contenir en clé le paramêtre (monParametre) sans les accolades,
* la valeur correspondante sera la valeur de remplacement.
* Par défaut, les parametres suivant sont pris en compte par cette méthode :
* - {projet} : le code du référentiel courrant ou définit dans le constructeur de l'objet métier.
*
* @param String $tpl le squelette d'url à formater.
* @param Array $parametres le tableau de parametres (sans accolades pour les clés).*/
public function formaterUrl($tpl, Array $parametres) {
$parametres = $this->ajouterParametreParDefaut($parametres);
foreach($parametres as $key=> $value) {
if(is_array($value)) {
$value = implode(',', $value);
}
$tpl = str_replace('{'.$key.'}',rawurlencode($value),$tpl);
}
return $tpl;
}
 
public function ajouterParametreParDefaut(Array $parametres) {
$parametres['projet'] = isset($parametres['projet']) ? $parametres['projet'] : $this->projet;
return $parametres;
}
 
/**
* Permet de consulter une url et retourne le résultat ou une erreur
*
* @param $url l'url du service à appeler pour charger les données. */
protected function chargerDonnees($url) {
$resultat = false;
$json = $this->getRestClient()->consulter($url);
$entete = $this->getRestClient()->getReponseEntetes();
//Si le service meta-donnees fonctionne correctement, l'entete comprend la clé wrapper_data
if (isset($entete['wrapper_data'])) {
$forceTableauAssociatif = true;
$resultat = json_decode($json, $forceTableauAssociatif);
$this->entete = (isset($resultat['entete'])) ? $resultat['entete'] : null;
} else {
$m = "L'url <a href=\"$url\">$url</a> lancée via RestClient renvoie une erreur";
trigger_error($m, E_USER_WARNING);
}
return $resultat;
}
 
 
/**
* Permet de consulter une url et retourne le résultat ou une erreur
*
* @param $url l'url du service à appeler pour charger les données. */
protected function chargerDonneesRecursivement($url) {
$resultat = false;
$resultat = $this->chargerDonnees($url);
if (isset($resultat['entete']['href.suivant'])) {
$resultatSuivant = $this->chargerDonneesRecursivement($resultat['entete']['href.suivant']);
if ($resultatSuivant) {
// utilisation de + obligatoire pour ne pas casser l'indexation par des ids
// numériques (au lieu de array merge)
$resultat['resultat'] = $resultat['resultat'] + $resultatSuivant['resultat'];
}
}
return $resultat;
}
 
//+----------------------------------------------------------------------------------------------------------------+
// GESTION DES CLASSES CHARGÉES À LA DEMANDE
 
private function getRestClient() {
if (!isset($this->restClient)) {
$this->restClient = new RestClient();
}
return $this->restClient;
}
 
 
static function s_formaterUrl($tpl, Array $parametres, $enc = TRUE) {
foreach($parametres as $key => $value) {
if(is_array($value)) {
$value = implode(',', $value);
}
$tpl = str_replace('{'.$key.'}',$enc ? rawurlencode($value) : $value, $tpl);
}
return $tpl;
}
}
?>
/tags/v5.10-vilmorin/metier/api_0.1/Noms.php
New file
0,0 → 1,144
<?php
// declare(encoding='UTF-8');
/**
* Classe gérant les noms scientifiques.
*
* @category PHP 5.2
* @package eflore-consultation
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
* @copyright 2011 Tela-Botanica
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
class Noms extends Eflore {
 
public function getSynonymes($nn) {
$tpl = Config::get('nomsSynonymesTpl');
$params = array('id' => $nn);
$url = $this->formaterUrl($tpl, $params);
return $this->chargerDonnees($url);
}
public function getFlores($nn) {
$tpl = Config::get('nomsFloresTpl');
$params = array('id' => $nn);
$url = $this->formaterUrl($tpl, $params);
return $this->chargerDonnees($url);
}
 
public function getNom($nn) {
return $this->chargerDonnees($this->getUrlNom($nn));
}
 
public function getRechercheEtendue($nom, $type_resultat = '') {
$methode = 'getUrlRecherche'.$type_resultat;
 
if (method_exists($this, $methode)) {
$url = $this->$methode($nom, 'etendue');
} else {
$url = $this->getUrlRecherche($nom, 'etendue');
Debug::printr("Le type de recherche demandé '$type_resultat' n'est pas disponible.");
}
return $this->chargerDonneesRecursivement($url);
}
 
public function getRechercheFloue($nom) {
$url = $this->getUrlRecherche($nom, 'floue');
return $this->chargerDonnees($url);
}
public function getRechercheAvancee($parametres) {
$url = $this->getUrlRechercheAvancee($parametres);
return $this->chargerDonnees($url);
}
private function getUrlRechercheAvancee($parametres){
$tpl = Config::get('nomsRechercheAvanceeTpl');
$masques = $this->formaterMasquesRechercheAvancee($parametres);
$url = '';
if($masques != ''){
$url = $this->formaterUrl($tpl,array('projet'=> $this->getProjet(), 'type' => 'etendue'));
$url .= '&'.implode('&',$masques);
}
return $url;
}
private function formaterMasquesRechercheAvancee($parametres) {
$masques = '';
foreach ($parametres as $masque => $valeur){
if ($valeur != '' && in_array($valeur, I18n::get('Recherche-form-avancee')) == false){
if ($masque == 'type') {
$masques[] = 'masque='.urlencode('%'.$valeur);
} elseif ($masque == 'au') {
$masques[] = 'masque.au='.urlencode($valeur.',('.$valeur.'%),% '.$valeur);
} elseif ($masque == 'bib'){
$masques[] = 'masque.bib='.urlencode($valeur.',%; '.$valeur);
} else {
$valeur = ($valeur == '0') ? '' : $valeur;
$masques[] = 'masque.'.$masque.'='.urlencode($valeur);
}
}
}
return $masques;
}
private function getUrlNom($nn) {
$tpl = Config::get('nomTpl');
$params = array('id' => $nn);
$url = $this->formaterUrl($tpl, $params);
return $url;
}
 
// retourne les champs par defaut
private function getUrlRecherche($nom, $typeRech) {
$tpl = Config::get('nomsRechercheTpl');
$params = array('valeur' => $nom, 'type' => $typeRech);
$url = $this->formaterUrl($tpl, $params);
return $url;
}
 
// retourne les champs par defaut
private function getUrlRechercheAlphab($nom, $typeRech) {
$tpl = Config::get('nomsRechercheAlphabTpl');
$params = array('valeur' => $nom, 'type' => $typeRech);
$url = $this->formaterUrl($tpl, $params);
return $url;
}
 
// retourne les champs par defaut
private function getUrlRechercheRetenu($nom, $typeRech) {
$tpl = Config::get('nomsRechercheRetenuTpl');
$params = array('valeur' => $nom, 'type' => $typeRech);
$url = $this->formaterUrl($tpl, $params);
return $url;
}
 
private function getUrlRechercheSynonyme($nom, $typeRech) {
$tpl = Config::get('nomsRechercheSynonymeTpl');
$params = array('valeur' => $nom, 'type' => $typeRech);
$url = $this->formaterUrl($tpl, $params);
return $url;
}
 
// retourne les champs par defaut + nom retenu
private function getUrlRechercheDetermination($nom, $typeRech) {
$tpl = Config::get('nomsRechercheDeterminationTpl');
$params = array('valeur' => $nom, 'type' => $typeRech);
$url = $this->formaterUrl($tpl, $params);
return $url;
}
 
// retourne les champs par defaut + nom decompose (au, an et bib)
private function getUrlRechercheDecompo($nom, $typeRech) {
$tpl = Config::get('nomsRechercheDecompoTpl');
$params = array('valeur' => $nom, 'type' => $typeRech);
$url = $this->formaterUrl($tpl, $params);
return $url;
}
 
}
?>
/tags/v5.10-vilmorin/metier/api_0.1/Taxons.php
New file
0,0 → 1,136
<?php
// declare(encoding='UTF-8');
/**
* Classe gérant les noms scientifiques.
*
* @category PHP 5.2
* @package eflore-consultation
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
* @copyright 2011 Tela-Botanica
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
class Taxons extends Eflore {
 
public function getTaxon($nn) {
$url = $this->getUrlTaxon($nn);
return $this->chargerDonnees($url);
}
 
public function getStatsInitialesFamille() {
$url = $this->getUrlStatsInitiales(self::RANG_FAMILLE);
$donnees = $this->chargerDonnees($url);
if (isset($donnees['Famille'])) {
$initiales = $donnees['Famille'];
} elseif (isset($donnees[self::RANG_FAMILLE])) {
$initiales = $donnees[self::RANG_FAMILLE];
}
 
return $initiales;
}
 
private function getUrlTaxon($nn) {
$tpl = Config::get('taxonTpl');
$params = array('id' => $nn);
$url = $this->formaterUrl($tpl, $params);
return $url;
}
 
public function getStatsInitialesGenre() {
$url = $this->getUrlStatsInitiales(self::RANG_GENRE);
$donnees = $this->chargerDonnees($url);
$initiales = $donnees['Genre'];
if (isset($donnees['Genre'])) {
$initiales = $donnees['Genre'];
} elseif (isset($donnees[self::RANG_GENRE])) {
$initiales = $donnees[self::RANG_GENRE];
}
return $initiales;
}
 
private function getUrlStatsInitiales($rang) {
$tpl = Config::get('taxonsStatsInitialesRangTpl');
$params = array('rang' => $rang);
$url = $this->formaterUrl($tpl, $params);
return $url;
}
 
public function getListeFamilleParInitiale($lettre) {
$url = $this->getUrlInitiales(self::RANG_FAMILLE, $lettre);
$donnees = $this->chargerDonneesRecursivement($url);
$taxons = ($donnees === false) ? $donnees : $donnees['resultat'];
return $taxons;
}
 
public function getListeGenreParInitiale($lettre) {
$url = $this->getUrlInitiales(self::RANG_GENRE, $lettre);
$donnees = $this->chargerDonneesRecursivement($url);
$taxons = ($donnees === false) ? $donnees : $donnees['resultat'];
return $taxons;
}
 
private function getUrlInitiales($rang, $lettre) {
$tpl = Config::get('taxonsListeInitialesRangTpl');
$params = array('rang' => $rang, 'initiale' => $lettre);
$url = $this->formaterUrl($tpl, $params);
return $url;
}
 
public function getRechercheEtendue($nom) {
$url = $this->getUrlRecherche($nom, 'etendue');
return $this->chargerDonnees($url);
}
 
public function getRechercheFloue($nom) {
$url = $this->getUrlRecherche($nom, 'floue');
return $this->chargerDonnees($url);
}
 
private function getUrlRecherche($nom, $typeRech) {
$tpl = Config::get('taxonsRechercheTpl');
$params = array('valeur' => $nom, 'type' => $typeRech);
$url = $this->formaterUrl($tpl, $params);
return $url;
}
public function getTaxonsInf($num_nom) {
$url = $this->getUrlTaxonsInf($num_nom);
return $this->chargerDonnees($url);
}
private function getUrlTaxonsInf($num_nom) {
$tpl = Config::get('taxonInfTpl');
$params = array('id' => $num_nom);
$url = $this->formaterUrl($tpl, $params);
return $url;
}
public function getTaxonsSup($num_nom) {
$url = $this->getUrlTaxonsSup($num_nom);
return $this->chargerDonnees($url);
}
private function getUrlTaxonsSup($num_nom) {
$tpl = Config::get('taxonSupTpl');
$params = array('id' => $num_nom);
$url = $this->formaterUrl($tpl, $params);
return $url;
}
public function getUrlPermalienNumNom($referentiel, $version, $num_nom) {
$tpl = Config::get('permalienNumNomTpl');
$params = array('ref_tax' => $referentiel, 'ref_version' => $version, 'id' => $num_nom);
$url = $this->formaterUrl($tpl, $params);
return $url;
}
public function getUrlPermalienTaxon($referentiel, $version, $num_tax) {
$tpl = Config::get('permalienTaxonTpl');
$params = array('ref_tax' =>$referentiel, 'ref_version' =>$version, 'id' => $num_tax);
$url = $this->formaterUrl($tpl, $params);
return $url;
}
}
?>
/tags/v5.10-vilmorin/metier/api_0.1/Textes.php
New file
0,0 → 1,55
<?php
// declare(encoding='UTF-8');
/**
* Classe gérant les textes.
*
* @category PHP 5.2
* @package eflore-consultation
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
* @copyright 2012 Tela-Botanica
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
class Textes extends Eflore {
private $id = '';
private $format = 'htm';//Valeurs possibles : htm, txt
private $sectionTitre = '';
 
public function setId($id) {
$this->id = $id;
}
 
public function setFormat($format) {
$this->format = $format;
}
 
public function setSectionTitre($titre) {
$this->sectionTitre = $titre;
}
 
public function getTexte() {
if ($this->sectionTitre != '') {
$tpl = Config::get('texteTitreSectionTpl');
$params = array('id' => $this->id, 'txtFormat' => $this->format, 'sectionTitre' => $this->sectionTitre);
} else {
$tpl = Config::get('texteTpl');
$params = array('id' => $this->id, 'txtFormat' => $this->format);
}
$url = $this->formaterUrl($tpl, $params);
return $this->chargerDonnees($url);
}
public function getPageUrl() {
$url = '';
if(Config::get($this->getProjet().'LienPageTpl')) {
$tpl = Config::get($this->getProjet().'LienPageTpl');
$params = array('id' => $this->id, 'langue' => 'fr');
$url = $this->formaterUrl($tpl, $params);
}
return $url;
}
}
?>
/tags/v5.10-vilmorin/metier/api_0.1/NomsVernaculaires.php
New file
0,0 → 1,68
<?php
// declare(encoding='UTF-8');
/**
* Classe gérant les noms vernaculaires
*
* @category PHP 5.2
* @package eflore-consultation
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
* @copyright 2011 Tela-Botanica
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
class NomsVernaculaires extends Eflore {
 
public function getRechercheComplete($referentiel, $num_tax) {
$tpl = Config::get('nomsVernaRechercheCompleteTpl');
$params = array('valeur' => $num_tax, 'projet' => $referentiel);
$url = $this->formaterUrl($tpl, $params);
return $this->chargerDonnees($url);
}
public function getRechercheLimitee($referentiel, $num_tax) {
$tpl = Config::get('nomsVernaRechercheLimiteeTpl');
$params = array('valeur' => $num_tax, 'projet' => $referentiel);
$url = $this->formaterUrl($tpl, $params);
return $this->chargerDonnees($url);
}
 
public function getRechercheEtendue($nom, $type_resultat = '') {
$methode = 'getUrlRecherche'.$type_resultat;
if (method_exists($this, $methode)) {
$url = $this->$methode($nom, 'etendue');
} else {
$url = $this->getUrlRecherche($nom, 'etendue');
Debug::printr("Le type de recherche demandé '$type_resultat' n'est pas disponible.");
}
return $this->chargerDonnees($url);
}
 
public function getRechercheFloue($nom, $type_resultat = '') {
$url = $this->getUrlRecherche($nom, 'floue');
return $this->chargerDonnees($url);
}
 
private function getUrlRecherche($nom, $typeRech) {
$tpl = Config::get('nomsVernaRechercheTpl');
$params = array('valeur' => $nom, 'type' => $typeRech);
$url = $this->formaterUrl($tpl, $params);
return $url;
}
 
private function getUrlRechercheDetermination($nom, $typeRech) {
$tpl = Config::get('nomsVernaRechercheDeterminationTpl');
$params = array('valeur' => $nom, 'type' => $typeRech);
$url = $this->formaterUrl($tpl, $params);
return $url;
}
private function getUrlRechercheAlphab($nom, $typeRech) {
$tpl = Config::get('nomsVernaRechercheAlphabTpl');
$params = array('valeur' => $nom, 'type' => $typeRech);
$url = $this->formaterUrl($tpl, $params);
return $url;
}
}
?>
/tags/v5.10-vilmorin/metier/api_0.1/Cartes.php
New file
0,0 → 1,140
<?php
// declare(encoding='UTF-8');
/**
* Classe gérant les images.
*
* @category PHP 5.2
* @package eflore-consultation
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
* @copyright 2011 Tela-Botanica
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
class Cartes extends Eflore {
 
private $id;
private $largeur;
 
public function setId($id) {
$this->id = $id;
}
 
public function setLargeur($largeur) {
$this->largeur = $largeur;
}
public function setInfoNom($nom) {
$this->nom = $nom;
}
public function setInfoReferentiel($referentiel) {
$this->referentiel = $referentiel;
}
 
public function getUrlDataSvg() {
$tpl = Config::get('carteTpl');
$params = array('id' => $this->id, 'largeur' => $this->largeur, 'mime-type' => 'image/svg+xml');
$url = $this->formaterUrl($tpl, $params);
return $url;
}
 
public function getUrlPng() {
$tpl = Config::get('carteTpl');
$params = array('id' => $this->id, 'largeur' => $this->largeur, 'mime-type' => 'image/png');
$url = $this->formaterUrl($tpl, $params);
return $url;
}
public function getUrlMap() {
$tpl = Config::get('efloreCarteTpl');
$params = array('num_nom' => $this->nom->get('id'), 'num_tax' => $this->nom->get('num_taxonomique') ,
'nom_sci' => $this->nom->get('nom_sci'), 'auteur' => $this->nom->get('auteur') ,
'largeur' => $this->largeur, 'mime_type' => 'text/html');
$url = $this->formaterUrl($tpl, $params);
return $url;
}
public function getUrlMapSvg() {
$tpl = Config::get('carteMoissonnageTpl');
$params = array('num_taxon' => $this->nom, 'referentiel' => $this->referentiel,
'largeur' => $this->largeur, 'mime_type' => 'text/html', 'methode' => 'afficher');
$url = $this->formaterUrl($tpl, $params);
return $url;
}
public function getUrlMapPng() {
$tpl = Config::get('carteMoissonnageTpl');
$params = array('num_taxon' => $this->nom, 'referentiel' => $this->referentiel,
'largeur' => $this->largeur, 'mime_type' => 'image/png', 'methode' => 'afficher');
$url = $this->formaterUrl($tpl, $params);
return $url;
}
public function getUrlTelechargementMapPng() {
$tpl = Config::get('carteMoissonnageTpl');
$params = array('num_taxon' => $this->nom, 'referentiel' => $this->referentiel,
'largeur' => $this->largeur, 'mime_type' => 'image/png', 'methode' => 'telecharger');
$url = $this->formaterUrl($tpl, $params);
return $url;
}
public function getUrlTelechargementMapHtml() {
$tpl = Config::get('carteMoissonnageTpl');
$params = array('num_taxon' => $this->nom, 'referentiel' => $this->referentiel,
'largeur' => $this->largeur, 'mime_type' => 'text/html', 'methode' => 'telecharger');
$url = $this->formaterUrl($tpl, $params);
return $url;
}
public function getUrlEflorePng() {
$tpl = Config::get('efloreCarteTpl');
$params = array('num_nom' => $this->nom->get('id'), 'num_tax' => $this->nom->get('num_taxonomique') ,
'nom_sci' => $this->nom->get('nom_sci'), 'auteur' => $this->nom->get('auteur') ,
'largeur' => $this->largeur, 'mime_type' => 'image/png');
$url = $this->formaterUrl($tpl, $params);
return $url;
}
public function getUrlFloreProbablePng() {
$tpl = Config::get('carteFloreProbableTpl');
$params = array('id' => $this->id,
'mime_type' => 'text/plain');
$url = $this->formaterUrl($tpl, $params);
$donnees = $this->chargerDonnees($url);
$url_carte = null;
// on demande l'url de la carte au web service
// car la carte peut ne pas exister
if(isset($donnees['binaire.href'])) {
$url_carte = $donnees['binaire.href'];
}
return $url_carte;
}
 
public function getLegendeId() {
$tpl = Config::get('legendeIdCarteTpl');
$params = array('id' => $this->id);
$url = $this->formaterUrl($tpl, $params);
$donnees = $this->chargerDonnees($url);
return $donnees;
}
public function getLegende() {
$tpl = Config::get('legendeCarteTpl');
$url = $this->formaterUrl($tpl, array());
$donnees = $this->chargerDonnees($url);
return $donnees;
}
 
// version statique de getUrlPng() ci-dessus
static function getCarteUrlPng($projet, $id, $largeur) {
return Eflore::s_formaterUrl(Config::get('carteTpl'),
array('projet' => $projet,
'id' => $id,
'largeur' => $largeur,
'mime-type' => 'image/png'));
}
 
}
?>
/tags/v5.10-vilmorin/metier/api_0.1/MetaDonnees.php
New file
0,0 → 1,35
<?php
// declare(encoding='UTF-8');
/**
* Classe gérant les noms scientifiques.
*
* @category PHP 5.2
* @package eflore-consultation
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
* @copyright 2011 Tela-Botanica
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
class MetaDonnees extends Eflore {
private $version = '+';
 
public function setVersion($version) {
$this->version = $version;
}
 
public function getMetaDonnees() {
$url = $this->getUrlMetaDonnees();
// XXX: request ontologies
return $this->chargerDonnees($url);
}
 
private function getUrlMetaDonnees() {
$tpl = Config::get('metaDonneesTpl');
$params = array('verproj' => 'version.projet', 'version' => $this->version);
$url = $this->formaterUrl($tpl, $params);
return $url;
}
}
?>
/tags/v5.10-vilmorin/metier/api_0.1/Images.php
New file
0,0 → 1,303
<?php
// declare(encoding='UTF-8');
/**
* Classe gérant les images.
*
* @category PHP 5.2
* @package eflore-consultation
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
* @copyright 2011 Tela-Botanica
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
class Images extends Eflore {
private $nntaxon;
private $limite;
private $depart;
 
public function setNnTaxon($nntax) {
$this->nntaxon = $nntax;
}
public function setLimite($limite) {
$this->limite = $limite;
}
public function setDepart($depart) {
$this->depart = $depart;
}
//TODO: créer des fonctions spécifiques cel et photoflora pour plus de clarté ?
public function getUrlsImagesParIdsNoms(Array $idsNoms) {
$infosImages = $this->getInfosImagesParIdsNoms($idsNoms);
$urls = array();
if (count($infosImages) > 0) {
foreach ($infosImages as $img) {
$id = $img['determination.nom_sci.code'];
$urls[$id][] = $img['binaire.href'];
}
}
return $urls;
}
 
// retourne les urls d'une série d'images tirées de del, avec en premier les
// images d'organes les mieux votées, et ensuite toute les autres images disponibles
public function getUrlsImagesOrganesParIdsNom($idNom) {
$infosImages0 = $this->getInfosMeilleuresImagesParTag($idNom, array('fleur', 'feuille', 'fruit', 'ecorce', 'port', 'rameau'), Eflore::PROTOCOLE_CAPITALISATION, 6);
$infosImages1 = $this->getInfosImagesParIdsNoms(array($idNom));
$urls = array();
foreach ($infosImages0 as $imgs) {
foreach ($imgs as $img) {
$id = $img['determination.nom_sci.code'];
$urls[$id][] = $img['binaire.href'];
}
}
foreach ($infosImages1 as $img) {
$id = $img['determination.nom_sci.code'];
if (! in_array($img['binaire.href'], $urls[$id])) {
$urls[$id][] = $img['binaire.href'];
}
}
return $urls;
}
 
public function getInfosImagesParIdsNoms(Array $idsNoms) {
$pas = 800;
if(count($idsNoms) >= $pas) {
$images = array();
$idsPartages = array_chunk($idsNoms, $pas);
foreach ($idsPartages as $sousEnsembleIdsNoms) {
$url = $this->getUrlImagesParIdsNoms($sousEnsembleIdsNoms);
$donnees = $this->chargerDonnees($url);
$resultats = (isset($donnees['resultats'])) ? $donnees['resultats'] : array();
$images += $resultats;
}
} else {
$url = $this->getUrlImagesParIdsNoms($idsNoms);
$donnees = $this->chargerDonnees($url);
$images = (isset($donnees['resultats'])) ? $donnees['resultats'] : array();
}
return $this->formaterResultatImages($images);
}
public function getInfosTrancheImagesParIdsNoms($idNom, $limite = 12) {
// 12 fait 4 lignes de 3 images donc bien pour l'affichage
$url = $this->getUrlImagesParIdsNoms($idNom, $limite);
$donnees = $this->chargerDonnees($url);
$images = (isset($donnees['resultats'])) ? $donnees['resultats'] : array();
return $this->formaterResultatImages($images);
}
 
public function getInfosImageParIdImage($id_image) {
$tpl = $this->obtenirSqueletteSelonApi('imagesPopup');
$url = $this->formaterUrl($tpl, array('id' => $id_image, 'referentiel' => Registre::get('parametres.referentiel')));
$image = $this->chargerDonnees($url);
return $this->formaterResultatImages($image, true);
}
public function getInfosImages() {
$url = $this->getUrlImages();
$donnees = $this->chargerDonnees($url);
$images = (empty($donnees['resultats']) == false) ? $donnees['resultats'] : array();
return $this->formaterResultatImages($images);
}
 
public function getInfosImagesTaxons() {
$pas = 800;
$idsTaxons = explode(',', $this->nntaxon);
if(count($idsTaxons) >= $pas) {
$images = array();
$idsPartages = array_chunk($idsTaxons, $pas);
foreach ($idsPartages as $sousEnsembleIdsTaxons) {
$url = $this->getUrlImagesTaxons(implode(',',$sousEnsembleIdsTaxons));
$donnees = $this->chargerDonnees($url);
$resultats = (empty($donnees['resultats']) == false) ? $donnees['resultats'] : array();
$images += $resultats;
}
} else {
$url = $this->getUrlImagesTaxons($idsTaxons);
$donnees = $this->chargerDonnees($url);
$images = (isset($donnees['resultats'])) ? $donnees['resultats'] : array();
}
return $this->formaterResultatImages($images);
}
 
public function getInfosPremiereImageParIdsNoms($idsNoms) {
$url = $this->getUrlPremiereImageParIdsNoms($idsNoms);
$donnees = $this->chargerDonnees($url);
$images = (isset($donnees['resultats'])) ? $donnees['resultats'] : array();
return $this->formaterResultatImages($images);
}
 
public function getInfosImagesGalerieMobile($nn) {
$url = $this->getUrlImagesGalerieMobile($nn);
$donnees = $this->chargerDonnees($url);
$images = (isset($donnees['resultats'])) ? $donnees['resultats'] : array();
return $images;
}
 
/**
* Retourne les $limite images ayant le plus de votes pour CHAQUE tag de $tags pour le protocole $protocole
*/
public function getInfosMeilleuresImagesParTag($nn, $tags, $protocole = Eflore::PROTOCOLE_CAPITALISATION, $limite = 10, $format = 'CRS') {
if (! is_array($tags)) {
$tags = array($tags);
}
$images_tag = array();
foreach ($tags as $tag) {
$url = $this->getUrlMeilleuresImagesParTag($nn, $tag, $protocole, $limite, $format);
$donnees = $this->chargerDonnees($url);
$images = (isset($donnees['resultats'])) ? $donnees['resultats'] : array();
$images_tag[$tag] = $this->formaterResultatImagesDel($images);
}
return $images_tag;
}
 
/**
* Retourne l'image ayant le plus de votes pour le pour capitalisation d'images, pour le premier tags de $tags. S'il
* n'y a aucune image pour le premier tag, parcourt les autres tags jusqu'à en trouver une.
*/
public function getInfosMeilleureImageParPrioriteTags($nn, $tags, $format = 'CRS') {
if (! is_array($tags)) {
$tags = array($tags);
}
$image = null;
foreach ($tags as $tag) {
$url = $this->getUrlMeilleuresImagesParTag($nn, $tag, Eflore::PROTOCOLE_CAPITALISATION, 1, $format);
$donnees = $this->chargerDonnees($url);
$image = (isset($donnees['resultats'])) ? $donnees['resultats'] : array();
$image = $this->formaterResultatImagesDel($image);
if (empty($image) == false) {
break;
}
}
//echo "<pre>" . print_r($image, true) . "</pre>";
if (is_array($image)) {
$image = array_pop($image);
}
return $image;
}
 
private function getUrlImagesParIdsNoms($idsNoms, $limite = 801) {
$tpl = $this->obtenirSqueletteSelonApi('imagesResultatsDetermination');
$params = array('idsNoms' => implode(',', $idsNoms), 'referentiel' => Registre::get('parametres.referentiel'), 'limite' => $limite);
$url = $this->formaterUrl($tpl, $params);
return $url;
}
 
public function getUrlPremiereImageParIdsNoms($idsNoms) {
$tpl = $this->obtenirSqueletteSelonApi('imagesPremiere');
$params = array('idsNoms' => implode(',', $idsNoms), 'referentiel' => Registre::get('parametres.referentiel'));
$url = $this->formaterUrl($tpl, $params);
return $url;
}
 
private function getUrlImages($nn = false) {
$tpl = $this->obtenirSqueletteSelonApi('images');
if ($this->getApi() == Eflore::API_EFLORE) {
$params = array('projet' => $this->getProjet(), 'limite' => $this->limite, 'depart' => $this->depart, 'referentiel' => Registre::get('parametres.referentiel'));
}
$url = $this->formaterUrl($tpl, $params);
return $url;
}
 
private function getUrlImagesTaxons($idsTaxons) {
$tpl = $this->obtenirSqueletteSelonApi('imagesTaxons');
$params = array('projet' => $this->getProjet(),'nntaxon'=> $idsTaxons, 'referentiel' => Registre::get('parametres.referentiel'));
$url = $this->formaterUrl($tpl, $params);
return $url;
}
 
private function getUrlImagesGalerieMobile($nn) {
$tpl = Config::get('delGalerieMobileTpl');
$params = array('nn' => $nn, 'referentiel' => Registre::get('parametres.referentiel'));
$url = $this->formaterUrl($tpl, $params);
return $url;
}
 
private function getUrlMeilleuresImagesParTag($nn, $tag, $protocole = Eflore::PROTOCOLE_CAPITALISATION, $limite = 10, $format = 'CRS') {
$tpl = Config::get('delMeilleuresImagesParTagTpl');
$params = array('nn'=> $nn,
'tag'=> $tag,
'protocole' => $protocole,
'referentiel' => Registre::get('parametres.referentiel'),
'limite' => $limite,
'format' => $format);
$url = $this->formaterUrl($tpl, $params);
return $url;
}
 
/**
* Transforme les résultats issus des Webservices autres que eflore/cel afin de conserver un format homogène
* @param mixed $images
*/
private function formaterResultatImages($images, $seulementUne = false) {
switch ($this->getApi()) {
case Eflore::API_DEL:
return $this->formaterResultatImagesDel($images, $seulementUne);
break;
default:
return $images;
}
}
 
private function formaterResultatImagesDel($images, $seulementUne = false) {
if ($seulementUne) {
return $this->formaterUnResultatImagesDel($images);
} else {
$retour = array();
foreach ($images as $idObsImage => $image) {
$retour[$image['id_image']] = array_merge($images[$idObsImage], $this->formaterUnResultatImagesDel($image));
}
return $retour;
}
}
 
/**
* Convertit un array venant d'un Webservice del vers le format retourné par eflore/cel
* @param array $image
* @return array
*/
private function formaterUnResultatImagesDel(array $image) {
$libelleAuteur = $image['observation']['auteur.prenom'].' '.$image['observation']['auteur.nom'];
$codeReferentiel = substr($image['observation']['determination.referentiel'], 0, strpos($image['observation']['determination.referentiel'], ':'));
$localiteLibelle = array($image['observation']['zone_geo'],
$image['observation']['lieudit'],
$image['observation']['station'],
$image['observation']['milieu']);
$retourImage = array(
'date' => $image['observation']['date_observation'],
'mime' => 'image/jpeg',
'auteur.libelle' => $libelleAuteur,
'auteur.id' => $image['observation']['auteur.id'],
'binaire.href' => $image['binaire.href'],
'observation.id' => $image['observation']['id_observation'],
'determination.libelle' => $image['observation']['determination.ns'].'[Dét. : '.$libelleAuteur.']',
'determination.nom_sci' => $image['observation']['determination.ns'],
'determination.nom_sci.code' => $codeReferentiel.'.'.$image['observation']['determination.nn'],
'station.commune' => $image['observation']['zone_geo'],
'station.lieudit' => $image['observation']['lieudit'],
'station.station' => $image['observation']['station'],
'station.milieu' => $image['observation']['milieu'],
'station.libelle' => $this->formaterLocalite($localiteLibelle)
);
return $retourImage;
}
private function formaterLocalite($infosLocalite) {
$localiteFmt = array();
foreach ($infosLocalite as $localite) {
if($localite != '') {
$localiteFmt[] = $localite;
}
}
if (empty($localiteFmt)) {
$localiteFmt[0] = 'localité inconnue';
}
return implode(" > ", $localiteFmt);
}
}
?>
/tags/v5.10-vilmorin/metier/api_0.1/BiblioBota.php
New file
0,0 → 1,29
<?php
// declare(encoding='UTF-8');
/**
* Classe gérant les noms scientifiques.
*
* @category PHP 5.2
* @package eflore-consultation
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
* @copyright 2011 Tela-Botanica
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
class BiblioBota extends Eflore {
 
public function getReferences($nomSelectionne) {
$url = $this->getUrlReferences($nomSelectionne);
return $this->chargerDonnees($url);
}
 
private function getUrlReferences($nomSelectionne) {
$tpl = Config::get('referencesBiblioBota');
$params = array('nom_saisi' => $nomSelectionne);
$url = $this->formaterUrl($tpl, $params);
return $url;
}
}
?>
/tags/v5.10-vilmorin/metier/api_0.1/Syntaxons.php
New file
0,0 → 1,59
<?php
// declare(encoding='UTF-8');
/**
* Classe gérant les syntaxons
*
* @category PHP 5.2
* @package eflore-consultation
* @author Mathilde SALTHUN-LASSALLE <mathilde@tela-botanica.org>
* @copyright 2011 Tela-Botanica
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
*/
 
class Syntaxons extends Eflore {
private $catminat;
public function setCatminat($code) {
$this->catminat = 'catminat:'.$code;
}
public function getSyntaxonsSuperieurs() {
$url = $this->getUrlSyntaxonsSuperieurs();
return $this->chargerDonnees($url);
}
public function getSyntaxonsCatminat() {
$url = $this->getUrlSyntaxonsCatminat();
return $this->chargerDonnees($url);
}
public function getSyntaxonsSynonymes() {
$url = $this->getUrlSyntaxonsSynonymes();
return $this->chargerDonnees($url);
}
public function getUrlSyntaxonsCatminat() {
$tpl = Config::get('syntaxonsCatminat');
$params = array( 'code' => $this->catminat);
$url = $this->formaterUrl($tpl, $params);
return $url;
}
public function getUrlSyntaxonsSuperieurs() {
$tpl = Config::get('syntaxonsSuperieurs');
$params = array( 'code' => $this->catminat);
$url = $this->formaterUrl($tpl, $params);
return $url;
}
public function getUrlSyntaxonsSynonymes() {
$tpl = Config::get('syntaxonsSynonymes');
$params = array( 'code' => $this->catminat);
$url = $this->formaterUrl($tpl, $params);
return $url;
}
}
?>
/tags/v5.10-vilmorin/metier/api_0.1/Statuts.php
New file
0,0 → 1,24
<?php
class Statuts extends Eflore {
public function getStatuts($projet, $nn) {
$tpl = Config::get('statutsTpl');
$params = array('projet' => $projet,'id' => $nn);
$url = $this->formaterUrl($tpl, $params);
return $this->chargerDonnees($url);
}
public function getStatutsZoneGeo($projet, $nn) {
$tpl = Config::get('statutsZoneGeoTpl');
$params = array('projet' => $projet,'id' => $nn);
$url = $this->formaterUrl($tpl, $params);
return $this->chargerDonnees($url);
}
public function getCategorieListeRouge($projet, $nn) {
$tpl = Config::get('listeRougeTpl');
$params = array('projet' => $projet,'id' => $nn);
$url = $this->formaterUrl($tpl, $params);
return $this->chargerDonnees($url);
}
}
/tags/v5.10-vilmorin/service.php
New file
0,0 → 1,11
<?php
// declare(encoding='UTF-8');
/** Inclusion du fichier principal de l'application*/
require_once 'eflore.php';
 
echo AppControleur::getContenuTete();
echo AppControleur::getContenuCorps();
echo AppControleur::getContenuPied();
echo AppControleur::getChrono();
echo AppControleur::getExceptions();
?>
/tags/v5.10-vilmorin/CHANGELOG
New file
0,0 → 1,113
Changements 2015-03-12 [création de la branche "v5.9-van-tieghem"]:
* Galerie d'organes : ajout d'un bouton "signaler une mauvaise identification"
* Fusion - Données de Coste limitées à BDTFX - un fichier de config serait mieux
* "Famille de plante" => "Famille de plantes"
* Activation/desactivation du dictionnaire par clic sur une icone
* Amélioration du alt des images pour Pinterest (nom d'auteur - nom retenu)
* Amélioration du alt des grandes images de la galerie d'organes
* Fusion - Pansement sur une jambe de bois : métadonnées d'eFlore, si "date_creation" n'est pas trouvée, on tente d'utiliser "version".
* Correction d'un terme devenu obsolète
* Fusion - métadonnées d'eFlore : meilleur pansement; si "date_creation" n'est pas trouvée, on ne l'affiche simplement pas
* Modification <meta> OpenGraph suite à valeurs par défaut dans Papyrus
* Carte de moissonnage : bouton pour régénérer la carte malgré le cache
* Widget remarques : masquage de l'email
* Chargement à la demande des illustrations du cel
* Affichage des images plus intelligent encore
* Mise en gras du lien de chargement ajax des illustrations
* Correction d'une url éronnée vers pictoflora
* changement version bdtfx
* modif biblio
 
Changements 2014-06-02 [création de la branche "v5.8-seynes"]:
* Appel au service chorodep avec le paramètre nt
* Amélioration de la galerie photo (icones, lien photo originale, meilleure gestion des dates inconnues, fenêtre de téléchargement...)
* Amélioration du moteur de recherche par nom vernaculaire (plus de limitation à la langue française)
* Amélioration du tri de la liste des noms (tri.retour=alphabet)
* QrCode s'ouvrant dans un pop-up et faisant référence au référentiel nomenclatural
* Nouvelle entête pour les fiches (meilleur texte et placement des noms)
* Correction fiche Smartflore : carte de répartition réellement générique
* Correction de problèmes d'encodage dans le titre de la page
* Correction du bug entraînant une ouverture des pages en bas de la page
 
Changements 2014-04-08 [création de la branche "v5.7-duchartre"]:
* Pour les appels aux meta données et les info de phytociologie l'url appellée doit être service.php et non pas eflore.php
* Ajout d'un fichier de config pour afrique du centre et de l'ouest ainsi que d'un lien permettant de tester celui ci dans le menu
* Meilleure gestion du javascript suivant la présence ou non de certains éléments
* Correction d'un lien manquant pour le dictionnaire
* Le dictionnaire est maintenant configurable par niveau et son inclusion ne se fait qu'à un seul endroit (dans le squelette entete)
* Correction d'un bug de chargement à répétition dans chrome + meilleure gestion du javascript qui ne s'active que quand nécessaire
* Suppression d'urls en durs des widgets dans le squelettes + meilleure gestion des morceaux communs aux squelettes de fiche
* Le widget de saisie n'était pas configuré pour pointer sur le taxon dans les résultats "détermination"
* SUpression adresse widget en dur + meilleure gestion de l'affichage en l'abscende d'infos
* Correction mineures d'affichage
* Possibilité de faire une recherche en cliquant sur des parties de noms scientifiques
* Fix temporaire pour empecher un bug provenant de l'i18n en cas langue anglaise demandée
* Amélioration de la gestion des liens de recherche avancée qui sont générés sur le nom dans la fiche
* Supression de vieux code inutile + modification css de la galerie des organes
* Correction pour ne pas parser le nom d'auteur dans le titre de la fiche, ce qui provoque des erreurs d'affichage sinon
 
Changements 2014-03-24 [création de la branche "v5.6-bureau"]:
* debug affichage des noms dans le pop up taxons de phytosocio baseveg
* Refactorisation du javascript des fiches synthese + mise à jour auto de l'url sur changement d'onglet
* debug syntaxon ne s'affichait pas car double url_encode
* Autoselection du permalien lors du hover sur celui ci, afin de faciliter le copier coller.
* Les synonymes sont désormais triés par basionyme dans l'onglet nomenclature
* Modification du texte au survol des onglets
* Suppression de termes de langage en dur pour les remplacer par les variables de l'i18n
* Suppression de variables de projets en dur
* Regroupement des synonymes par num_type
* Correction du bug qui proposait le nom déjà saisi dans les propositions de recherche approchée + suppression des doublons
* Style pour la synonymie
* Meilleure gestion de l'affichage des synonymes
* Début d'une meilleure gestion du chargement de la carte de moissonnage
 
Changements 2014-03-04 [création de la branche "v5.5-apollinaire-fee"]:
* Ajout des liens vers eVeg sur les codes CATMINAT dans "ecologie"
* Ajout de la carte de flore probable issue des données de sophy
* Intégration du widget de rapport d'erreur.
* ajout du num nom retenu et du numéro inpn dans le pied de page
* Ajout de la citation sous la carte de sophy
 
Changements 2014-02-11 [création de la branche "v5.4-decaisne"]:
* Correction bugs galerie par tags
* La recherche montre seulement les espèces si on appuie sur un bouton
 
Changements 2014-01-06 [création de la branche "v5.3-cordier"]:
* création dossier PDF si non existant
* opensearch
* Correction d'un bug qui n'affichait pas les informations de l'obs dans le popup contact
* Correction d'une url mal générée vers le popup de contact
* Rétablissement de la description de Coste dans "Description"
* Correction 5 bugs + url mal foutues
 
Changements 20130912 [création de la branche "v5.1-prillieux"]:
* config: directives modifiées:
- texteWikiTpl
- pageWikiTpl
- base_url_widget, base_url_mobile [ajoutée dans config.default.ini]
* coste: adaptation au nouveau webservice
 
Changements v0.1-20130830:
* correction du Changelog (directives modifiées)
 
Changements v0.1-20130829:
* tenue du Changelog
* config: directives modifiées:
- legendeGraphiqueTpl
- carteMoissonnageTpl
- referentielVerna (bdtxa)
- champsPresence (bdtfx)
* support eFlore/Antilles-bdtxa: fiches, pdf, API
* ui:
* ajout d'un dictionnaire javascript
* mise en valeur des boutons lors des focus
* amélioration des ombres portées de certains widgets
* correction des blocs dépliés par défaut
* ontologies;
* support critères multiples pour onglet écologie/graphiques
* cartes: optimisation/correction de la cartes basée sur les synonymes
* simplification et améliorations du système de cache
* actualisation des tests unitaires
* multiples bugfixes
 
v0.1-20130600
/tags/v5.10-vilmorin
New file
Property changes:
Added: svn:ignore
+.buildpath
+.project
+.settings
+framework.php
+nbproject
Added: svn:mergeinfo
Merged /branches/v5.2-lasegue:r1183
Merged /branches/v5.7-duchartre:r1286,1294,1296,1325,1333-1334
Merged /branches/v5.3-cordier:r1206
Merged /branches/v5.9-van-tieghem:r1402
Merged /branches/v5.8-seynes:r1344-1345,1347,1356,1364,1367,1372,1374,1376,1378
Merged /branches/v5.4-decaisne:r1226-1227