Subversion Repositories eFlore/Applications.eflore-consultation

Compare Revisions

No changes between revisions

Ignore whitespace Rev 1301 → Rev 1302

/tags/2014-04-14/index_mobile.php
File deleted
\ No newline at end of file
/tags/2014-04-14/eflore_papyrus.php
File deleted
\ No newline at end of file
/tags/2014-04-14/metier/api_0.1/MetaDonnees.php
File deleted
\ No newline at end of file
/tags/2014-04-14/metier/api_0.1/Images.php
File deleted
\ No newline at end of file
/tags/2014-04-14/metier/api_0.1/BiblioBota.php
File deleted
\ No newline at end of file
/tags/2014-04-14/metier/api_0.1/Syntaxons.php
File deleted
\ No newline at end of file
/tags/2014-04-14/metier/api_0.1/Statuts.php
File deleted
\ No newline at end of file
/tags/2014-04-14/metier/api_0.1/Graphiques.php
File deleted
/tags/2014-04-14/metier/api_0.1/Informations.php
File deleted
\ No newline at end of file
/tags/2014-04-14/metier/api_0.1/Wikini.php
File deleted
\ No newline at end of file
/tags/2014-04-14/metier/api_0.1/Eflore.php
File deleted
\ No newline at end of file
/tags/2014-04-14/metier/api_0.1/Noms.php
File deleted
\ No newline at end of file
/tags/2014-04-14/metier/api_0.1/Taxons.php
File deleted
\ No newline at end of file
/tags/2014-04-14/metier/api_0.1/Textes.php
File deleted
\ No newline at end of file
/tags/2014-04-14/metier/api_0.1/NomsVernaculaires.php
File deleted
\ No newline at end of file
/tags/2014-04-14/metier/api_0.1/Cartes.php
File deleted
\ No newline at end of file
/tags/2014-04-14/service.php
File deleted
\ No newline at end of file
/tags/2014-04-14/CHANGELOG
File deleted
/tags/2014-04-14/popup.php
File deleted
\ No newline at end of file
/tags/2014-04-14/configurations/bdtfx.ini
File deleted
\ No newline at end of file
/tags/2014-04-14/configurations/config_papyrus.ini
File deleted
\ No newline at end of file
/tags/2014-04-14/configurations/config.defaut.ini
File deleted
/tags/2014-04-14/configurations/test-conf.sed
File deleted
/tags/2014-04-14/configurations/Makefile
File deleted
/tags/2014-04-14/configurations/isfan.ini
File deleted
\ No newline at end of file
/tags/2014-04-14/configurations/RechercheOpenSearch/OpenSearchNomSci.php
File deleted
\ No newline at end of file
/tags/2014-04-14/configurations/RechercheOpenSearch/OpenSearchIsfan.xml
File deleted
\ No newline at end of file
/tags/2014-04-14/configurations/RechercheOpenSearch/OpenSearchBdtxa.xml
File deleted
\ No newline at end of file
/tags/2014-04-14/configurations/RechercheOpenSearch/OpenSearchBdtfx.xml
File deleted
\ No newline at end of file
/tags/2014-04-14/configurations/RechercheOpenSearch/RechercheOpenSearch.xml
File deleted
\ No newline at end of file
/tags/2014-04-14/configurations/bdtxa.ini
File deleted
\ No newline at end of file
/tags/2014-04-14/configurations/apd.ini
File deleted
\ No newline at end of file
/tags/2014-04-14/framework.defaut.php
File deleted
\ No newline at end of file
/tags/2014-04-14/index.php
File deleted
\ No newline at end of file
/tags/2014-04-14/presentations/images/attention.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/presentations/images/sauver.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/presentations/images/pasdephoto.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/presentations/images/pdf.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/presentations/images/icones_tags/fruit.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/tags/2014-04-14/presentations/images/icones_tags/rameau.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/tags/2014-04-14/presentations/images/icones_tags/fleur.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/tags/2014-04-14/presentations/images/icones_tags/ecorce.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/tags/2014-04-14/presentations/images/icones_tags/port.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/tags/2014-04-14/presentations/images/icones_tags/feuille.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/tags/2014-04-14/presentations/images/pasdephoto_petit.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/tags/2014-04-14/presentations/images/legende_formes.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/presentations/images/fermer.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/presentations/images/interdit.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/presentations/images/loupe.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/presentations/images/information.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/presentations/images/ouvrir.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/presentations/images/mauvaise_id.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/presentations/images/lien.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/presentations/images/legende_formes.svg
File deleted
/tags/2014-04-14/presentations/images/flecheDroite.jpg
Cannot display: file marked as a binary type.
svn:mime-type = image/jpeg
/tags/2014-04-14/presentations/images/fond_carte_metropole.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/tags/2014-04-14/presentations/images/contact.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/presentations/images/fleche_droite.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/presentations/images/chargement-transparent.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/tags/2014-04-14/presentations/images/chargement.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/tags/2014-04-14/presentations/images/flecheGauche.jpg
Cannot display: file marked as a binary type.
svn:mime-type = image/jpeg
/tags/2014-04-14/presentations/images/aide.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/presentations/images/fleche_gauche.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/presentations/images/sites/inpn.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/tags/2014-04-14/presentations/images/sites/wikipedia.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/presentations/images/sites/anbg.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/presentations/images/sites/si.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/presentations/images/sites/antilles.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/presentations/images/sites/vha.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/presentations/images/sites/cbnm.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/presentations/images/sites/smf.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/presentations/images/sites/seinet.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/presentations/images/sites/sfo.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/presentations/images/sites/cjb.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/presentations/images/sites/tpl.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/presentations/images/sites/nybg.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/presentations/images/sites/ipni.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/presentations/images/sites/mnhn.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/presentations/images/sites/jstor.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/presentations/images/sites/tropicos.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/presentations/images/sites/lichen.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/presentations/scripts/eflore.js
File deleted
\ No newline at end of file
/tags/2014-04-14/presentations/scripts/fiche-synthese.js
File deleted
/tags/2014-04-14/presentations/scripts/recherche.js
File deleted
\ No newline at end of file
/tags/2014-04-14/presentations/squelettes/pied_page.tpl.html
File deleted
\ No newline at end of file
/tags/2014-04-14/presentations/squelettes/menu.tpl.html
File deleted
\ No newline at end of file
/tags/2014-04-14/presentations/styles/pdf.css
File deleted
/tags/2014-04-14/presentations/styles/eflore.css
File deleted
\ No newline at end of file
/tags/2014-04-14/presentations/styles/popup.css
File deleted
/tags/2014-04-14/eflore.php
File deleted
\ No newline at end of file
/tags/2014-04-14/tests/bibliotheque/SurligneurTest.php
File deleted
\ No newline at end of file
/tags/2014-04-14/tests/ConsultationEflorePhpUnit.php
File deleted
\ No newline at end of file
/tags/2014-04-14/tests/metier/EfloreTest.php
File deleted
\ No newline at end of file
/tags/2014-04-14/tests/metier/NomsTest.php
File deleted
\ No newline at end of file
/tags/2014-04-14/tests/metier/TaxonsTest.php
File deleted
\ No newline at end of file
/tags/2014-04-14/tests/metier/NomsVernaculairesTest.php
File deleted
\ No newline at end of file
/tags/2014-04-14/tests/modules/RechercheSimpleTest.php
File deleted
\ No newline at end of file
/tags/2014-04-14/tests/modules/NiveauTest.php
File deleted
\ No newline at end of file
/tags/2014-04-14/tests/modules/RechercheTest.php
File deleted
\ No newline at end of file
/tags/2014-04-14/tests/modules/fiche/FicheTest.php
File deleted
/tags/2014-04-14/tests/modules/fiche_metadonnees/FicheMetadonneesTest.php
File deleted
/tags/2014-04-14/tests/modules/resultat/resultats.json
File deleted
\ No newline at end of file
/tags/2014-04-14/tests/modules/resultat/ResultatFormateurInitialisation.php
File deleted
\ No newline at end of file
/tags/2014-04-14/tests/modules/resultat/formateurs/DeterminationVernaFormateurTest.php
File deleted
\ No newline at end of file
/tags/2014-04-14/tests/modules/resultat/formateurs/DeterminationFormateurTest.php
File deleted
\ No newline at end of file
/tags/2014-04-14/tests/modules/resultat/formateurs/RetenuFormateurTest.php
File deleted
\ No newline at end of file
/tags/2014-04-14/tests/modules/resultat/formateurs/DecompoFormateurTest.php
File deleted
\ No newline at end of file
/tags/2014-04-14/tests/modules/resultat/formateurs/AlphabFormateurTest.php
File deleted
\ No newline at end of file
/tags/2014-04-14/tests/modules/resultat/resultats_verna.json
File deleted
\ No newline at end of file
/tags/2014-04-14/livraison/livraison.sh
File deleted
/tags/2014-04-14/modules/pdf_export/PdfExport.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/pdf_export/pdf_export.txt
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/pdf_export/squelettes/pdf_ethnobotanique.tpl.html
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/pdf_export/squelettes/pdf_ecologie.tpl.html
File deleted
/tags/2014-04-14/modules/pdf_export/squelettes/footer.html
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/pdf_export/squelettes/pdf_statuts.tpl.html
File deleted
/tags/2014-04-14/modules/pdf_export/squelettes/pdf_header.tpl.html
File deleted
/tags/2014-04-14/modules/pdf_export/squelettes/pdf_illustrations.tpl.html
File deleted
/tags/2014-04-14/modules/pdf_export/squelettes/pdf_nomenclature.tpl.html
File deleted
/tags/2014-04-14/modules/pdf_export/squelettes/pdf_bibliographie.tpl.html
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/pdf_export/squelettes/pdf_repartition.tpl.html
File deleted
/tags/2014-04-14/modules/pdf_export/squelettes/pdf_description.tpl.html
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/recherche_avancee/squelettes/form_recherche_av.tpl.html
File deleted
/tags/2014-04-14/modules/recherche_avancee/RechercheAvancee.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/popup_galerie/squelettes/popup_galerie_illustrations.tpl.html
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/popup_galerie/PopupGalerie.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/fiche/formateurs/Illustrations.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/fiche/formateurs/Nomenclature.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/fiche/formateurs/Bibliographie.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/fiche/formateurs/Repartition.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/fiche/formateurs/Synthese.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/fiche/formateurs/Description.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/fiche/formateurs/Statut.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/fiche/formateurs/Ethnobotanique.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/fiche/formateurs/Ecologie.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/fiche/squelettes/fiche_entete.tpl.html
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/fiche/squelettes/fiche_statut.tpl.html
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/fiche/squelettes/fiche_ethnobotanique.tpl.html
File deleted
/tags/2014-04-14/modules/fiche/squelettes/fiche_ecologie.tpl.html
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/fiche/squelettes/fiche_illustrations_organes.tpl.html
File deleted
/tags/2014-04-14/modules/fiche/squelettes/fiche_synthese_niveau1.tpl.html
File deleted
/tags/2014-04-14/modules/fiche/squelettes/fiche_synthese_niveau2.tpl.html
File deleted
/tags/2014-04-14/modules/fiche/squelettes/fiche_nomenclature.tpl.html
File deleted
/tags/2014-04-14/modules/fiche/squelettes/fiche_synthese_niveau3.tpl.html
File deleted
/tags/2014-04-14/modules/fiche/squelettes/fiche_accueil_niveau1.tpl.html
File deleted
/tags/2014-04-14/modules/fiche/squelettes/fiche_accueil_niveau2.tpl.html
File deleted
/tags/2014-04-14/modules/fiche/squelettes/fiche_accueil_niveau3.tpl.html
File deleted
/tags/2014-04-14/modules/fiche/squelettes/fiche_repartition.tpl.html
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/fiche/squelettes/fiche_bibliographie.tpl.html
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/fiche/squelettes/fiche_accueil.tpl.html
File deleted
/tags/2014-04-14/modules/fiche/squelettes/fiche_illustrations.tpl.html
File deleted
/tags/2014-04-14/modules/fiche/squelettes/fiche_pied_page.tpl.html
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/fiche/squelettes/fiche_pdf_lien.tpl.html
File deleted
/tags/2014-04-14/modules/fiche/squelettes/fiche_description.tpl.html
File deleted
/tags/2014-04-14/modules/fiche/Fiche.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/popup_contact/presentations/styles/identification.css
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/popup_contact/presentations/scripts/identification.js
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/popup_contact/presentations/scripts/contact.js
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/popup_contact/squelettes/form_identification.tpl.html
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/popup_contact/squelettes/form_contact.tpl.html
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/popup_contact/squelettes/contact_entete.tpl.html
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/popup_contact/PopupContact.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/popup_illustrations/squelettes/popup_fiche_illustrations.tpl.html
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/popup_illustrations/PopupIllustrations.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/fiche_metadonnees/FicheMetadonnees.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/fiche_metadonnees/squelettes/metadonnees.tpl.html
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/liste/squelettes/liste.tpl.html
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/liste/Liste.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/recherche_simple/squelettes/form_nom.tpl.html
File deleted
/tags/2014-04-14/modules/recherche_simple/RechercheSimple.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/resultat/Resultat.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/resultat/squelettes/onglets.tpl.html
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/resultat/squelettes/decomposition.tpl.html
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/resultat/squelettes/liste_noms.tpl.html
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/resultat/squelettes/determination_verna.tpl.html
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/resultat/squelettes/determination.tpl.html
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/resultat/squelettes/resultat.tpl.html
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/resultat/squelettes/liste_noms_verna.tpl.html
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/resultat/ParametresResultats.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/resultat/formateurs/nom_vernaculaire/AlphabVernaFormateur.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/resultat/formateurs/nom_vernaculaire/DeterminationVernaFormateur.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/resultat/formateurs/Formateur.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/resultat/formateurs/ResultatFormateurFabrique.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/resultat/formateurs/nom_scientifique/DeterminationFormateur.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/resultat/formateurs/nom_scientifique/RetenuFormateur.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/resultat/formateurs/nom_scientifique/DecompoFormateur.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/resultat/formateurs/nom_scientifique/AlphabFormateur.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/mobile/sources/Texte.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/mobile/sources/Floraison.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/mobile/sources/Illustrations.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/mobile/sources/NomsCommuns.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/mobile/sources/Repartition.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/mobile/Mobile.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/mobile/presentations/logos/tela.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/modules/mobile/presentations/logos/tela_transparent.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/modules/mobile/presentations/less/pyracantha_tela.less
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/mobile/presentations/less/gentiana.less
File deleted
/tags/2014-04-14/modules/mobile/presentations/less/README
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/mobile/presentations/less/functions.less
File deleted
/tags/2014-04-14/modules/mobile/presentations/less/pyracantha_blanc.less
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/mobile/presentations/less/pyracantha.less
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/mobile/presentations/less/pyracantha_vert.less
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/mobile/presentations/css/pyracantha_tela.css
File deleted
/tags/2014-04-14/modules/mobile/presentations/css/gentiana.css
File deleted
/tags/2014-04-14/modules/mobile/presentations/css/pyracantha_blanc.css
File deleted
/tags/2014-04-14/modules/mobile/presentations/css/pyracantha_vert.css
File deleted
/tags/2014-04-14/modules/mobile/presentations/js/mobile.js
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/mobile/presentations/icones/zoom.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/modules/mobile/presentations/icones/altitude.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/2014-04-14/modules/mobile/squelettes/fiche.tpl.html
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/mobile/squelettes/theme_gentiana_niveau1.tpl.html
File deleted
/tags/2014-04-14/modules/mobile/squelettes/theme_gentiana2_niveau1.tpl.html
File deleted
/tags/2014-04-14/modules/mobile/squelettes/theme_pyracantha_niveau1.tpl.html
File deleted
/tags/2014-04-14/modules/niveau/Niveau.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/niveau/squelettes/niveau.tpl.html
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/liste_fancy_box_phytosocio/ListeFancyBoxPhytosocio.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/liste_fancy_box_phytosocio/squelettes/liste-fancy-box-ref.tpl.html
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/liste_fancy_box_phytosocio/squelettes/liste-fancy-box-taxons.tpl.html
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/liste_fancy_box_phytosocio/squelettes/liste-fancy-box-synonymes.tpl.html
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/recherche/Recherche.php
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/recherche/squelettes/recherche_accueil.tpl.html
File deleted
/tags/2014-04-14/modules/pagination/squelettes/pagination.tpl.html
File deleted
\ No newline at end of file
/tags/2014-04-14/modules/pagination/Pagination.php
File deleted
\ No newline at end of file
/tags/2014-04-14/.htaccess
File deleted
/tags/2014-04-14/bibliotheque/Nom.php
File deleted
\ No newline at end of file
/tags/2014-04-14/bibliotheque/Trieur.php
File deleted
\ No newline at end of file
/tags/2014-04-14/bibliotheque/Utilisateur.php
File deleted
\ No newline at end of file
/tags/2014-04-14/bibliotheque/QrCode.php
File deleted
\ No newline at end of file
/tags/2014-04-14/bibliotheque/ChaineManipulateur.php
File deleted
\ No newline at end of file
/tags/2014-04-14/bibliotheque/Surligneur.php
File deleted
\ No newline at end of file
/tags/2014-04-14/bibliotheque/Conteneur.php
File deleted
\ No newline at end of file
/tags/2014-04-14/bibliotheque/TableauManipulateur.php
File deleted
\ No newline at end of file
/tags/2014-04-14/bibliotheque/NomCourant.php
File deleted
\ No newline at end of file
/tags/2014-04-14/bibliotheque/AppUrls.php
File deleted
\ No newline at end of file
/tags/2014-04-14/i18n/fr.ini
File deleted
/tags/2014-04-14/controleurs/AppControleur.php
File deleted
\ No newline at end of file
/tags/2014-04-14/controleurs/aControleur.php
File deleted
\ No newline at end of file
/tags/2014-04-14/widget/widget.ini.defaut.php
File deleted
\ No newline at end of file
/tags/2014-04-14/widget/modules/recherche/Recherche.php
File deleted
\ No newline at end of file
/tags/2014-04-14/widget/modules/recherche/squelettes/exemple.tpl.html
File deleted
\ No newline at end of file
/tags/2014-04-14/widget/modules/recherche/squelettes/css/recherche.css
File deleted
\ No newline at end of file
/tags/2014-04-14/widget/modules/recherche/squelettes/recherche.tpl.html
File deleted
\ No newline at end of file
/tags/2014-04-14/widget/modules/recherche/config.defaut.ini
File deleted
/tags/2014-04-14/widget/Widget.php
File deleted
\ No newline at end of file
/tags/2014-04-14/widget/.htaccess
File deleted
\ No newline at end of file
/tags/2014-04-14/widget/bibliotheque/WidgetCommun.php
File deleted
\ No newline at end of file
/tags/2014-04-14/widget/bibliotheque/Dao.php
File deleted
\ No newline at end of file
/tags/2014-04-14/widget/index.php
File deleted
\ No newline at end of file
/tags/v5.7-duchartre-2014-04-14/CHANGELOG
New file
0,0 → 1,84
Changements <next>:
 
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.7-duchartre-2014-04-14/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://www.tela-botanica.org/sites/commun/generique/images/favicone/tela_botanica.png" />
<link rel="shortcut icon" type="image/x-icon" href="http://www.tela-botanica.org/sites/commun/generique/images/favicone/tela_botanica.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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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://www.tela-botanica.org/sites/commun/generique/images/favicone/tela_botanica.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.7-duchartre-2014-04-14/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://www.tela-botanica.org/sites/commun/generique/images/favicone/tela_botanica.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.7-duchartre-2014-04-14/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://www.tela-botanica.org/sites/commun/generique/images/favicone/tela_botanica.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.7-duchartre-2014-04-14/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://www.tela-botanica.org/sites/commun/generique/images/favicone/tela_botanica.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.7-duchartre-2014-04-14/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://www.tela-botanica.org/sites/commun/generique/images/favicone/tela_botanica.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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/configurations/config.defaut.ini
New file
0,0 → 1,289
; +------------------------------------------------------------------------------------------------------+
; 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_del = "http://{ref:domaine}/appli:del"
; 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:del#page_validation~%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}&masque.lg={langue}"
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}&masque.lg={langue}&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=801"
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}"
 
 
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}"
 
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.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
 
; +------------------------------------------------------------------------------------------------------+
; Utilisation du dictionnaire (pour activer différement par niveau)
utiliserDictionnaire = 1
utiliserDictionnaireNiveau1 = 0
utiliserDictionnaireNiveau2 = 1
utiliserDictionnaireNiveau3 = 0
/tags/v5.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/configurations
New file
Property changes:
Added: svn:ignore
+config.ini
/tags/v5.7-duchartre-2014-04-14/index.php
New file
0,0 → 1,272
<?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" />
 
 
<!-- 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://www.tela-botanica.org/sites/commun/generique/images/favicone/tela_botanica.png" />
<link rel="shortcut icon" type="image/x-icon" href="http://www.tela-botanica.org/sites/commun/generique/images/favicone/tela_botanica.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://www.tela-botanica.org/sites/botanique/generique/images/graphisme/logo_tela_fond_vert.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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/presentations/styles/eflore.css
New file
0,0 → 1,1592
@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 h1 {
background: none repeat scroll 0 0 transparent;
padding: 0 9px 0 9px;
}
 
.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;
text-transform: none;
}
.redirige_depuis {
color: #777777;
font-size: 0.9em;
font-weight: normal;
text-transform: none;
}
.redirige_depuis strong {
font-weight: bold;
font-style: italic;
}
 
/*----------------------------------------------------------------------------------------------------------*/
/* 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;
}
 
.separator {
display: inline-block;
width: 10px;
}
 
.liste-illustrations li.organe-moyen {
height: 230px;
font-size: 13px;
}
 
.liste-illustrations li.caractere-moyen {
height: 210px;
}
 
.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-image-cel img {
height: 300px;
}
 
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;
}
div #recherche_av_form {
width:95%;
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;
}
/tags/v5.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/presentations/images/fleche_droite.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/presentations/images/fleche_droite.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/chargement-transparent.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/tags/v5.7-duchartre-2014-04-14/presentations/images/chargement-transparent.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/chargement.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/tags/v5.7-duchartre-2014-04-14/presentations/images/chargement.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/flecheGauche.jpg
Cannot display: file marked as a binary type.
svn:mime-type = image/jpeg
/tags/v5.7-duchartre-2014-04-14/presentations/images/flecheGauche.jpg
New file
Property changes:
Added: svn:mime-type
+image/jpeg
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/fleche_gauche.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/presentations/images/fleche_gauche.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/aide.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/presentations/images/aide.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/sites/cjb.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/presentations/images/sites/cjb.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/sites/tpl.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/presentations/images/sites/tpl.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/sites/nybg.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/presentations/images/sites/nybg.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/sites/ipni.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/presentations/images/sites/ipni.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/sites/mnhn.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/presentations/images/sites/mnhn.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/sites/jstor.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/presentations/images/sites/jstor.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/sites/tropicos.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/presentations/images/sites/tropicos.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/sites/lichen.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/presentations/images/sites/lichen.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/sites/inpn.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/tags/v5.7-duchartre-2014-04-14/presentations/images/sites/inpn.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/sites/wikipedia.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/presentations/images/sites/wikipedia.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/sites/anbg.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/presentations/images/sites/anbg.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/sites/si.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/presentations/images/sites/si.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/sites/antilles.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/presentations/images/sites/antilles.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/sites/vha.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/presentations/images/sites/vha.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/sites/cbnm.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/presentations/images/sites/cbnm.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/sites/smf.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/presentations/images/sites/smf.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/sites/sfo.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/presentations/images/sites/sfo.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/sites/seinet.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/presentations/images/sites/seinet.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/attention.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/presentations/images/attention.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/sauver.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/presentations/images/sauver.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/pasdephoto.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/presentations/images/pasdephoto.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/pdf.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/presentations/images/pdf.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/icones_tags/fleur.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/tags/v5.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/presentations/images/icones_tags/ecorce.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/tags/v5.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/presentations/images/icones_tags/port.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/tags/v5.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/presentations/images/icones_tags/feuille.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/tags/v5.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/presentations/images/icones_tags/fruit.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/tags/v5.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/presentations/images/icones_tags/rameau.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/tags/v5.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/presentations/images/pasdephoto_petit.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/tags/v5.7-duchartre-2014-04-14/presentations/images/pasdephoto_petit.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/legende_formes.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/presentations/images/legende_formes.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/fermer.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/presentations/images/fermer.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/interdit.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/presentations/images/interdit.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/loupe.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/presentations/images/loupe.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/information.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/presentations/images/information.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/mauvaise_id.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/presentations/images/mauvaise_id.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/ouvrir.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/presentations/images/ouvrir.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/lien.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/presentations/images/lien.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/presentations/images/flecheDroite.jpg
Cannot display: file marked as a binary type.
svn:mime-type = image/jpeg
/tags/v5.7-duchartre-2014-04-14/presentations/images/flecheDroite.jpg
New file
Property changes:
Added: svn:mime-type
+image/jpeg
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/presentations/images/fond_carte_metropole.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/tags/v5.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/presentations/images/contact.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/presentations/images/contact.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/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"+
"&retour.tri=retenu";
return url;
}
 
function getUrlAutocompletionNomsVerna(requete) {
var url = getUrlAutocompletion(URL_SERVICE_AUTOCOMPLETION_NOM_VERNA, requete, 'oss')+
"&masque.lg=fra";
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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/presentations/scripts/fiche-synthese.js
New file
0,0 → 1,717
//+----------------------------------------------------------------------------------------------------------+
// 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);
}
});
$(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) {
return urlEditionSectionWikiTpl.replace('{pageTag}', page).replace('{sectionTitre}', section);
}
 
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) {
parent.children('.nom').each(function () {
html = $(this).html();
posCrochetGauche = html.indexOf('[');
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() {
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("title"),
'"'+'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() {
$(".conteneur_repartition_observations").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() {
$(".conteneur_repartition_observations").removeClass("chargement_repartition");
});
});
 
});
 
$(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").fancybox({
"autoDimensions" : false,
"width" : 800,
"height" : 405,
"overlayOpacity" : "1",
"titleShow" : 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 = source.replace('CRX2S', 'L'); // @FIXME cracra
// chargement image et lien popup
grandeImage.attr('src', source);
grandeImage.parent().attr('href',urlPopup+'?module=popup-illustrations&action=fiche&referentiel=bdtfx&id=' + $(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];
$('#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 à l'auteur à propos de cette image (nécessite d'être identifié)");
$('#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écessite d'être identifié)");
}
 
// 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);
$('#permalien_num_nom').select();
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
}
);
}
 
$(document).ajaxStop(function() {
gererChargementGraphiqueEcologie();
gererAffichageLegendeEcologie();
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.7-duchartre-2014-04-14/presentations/squelettes/entete_page.tpl.html
--- v5.7-duchartre-2014-04-14/presentations/squelettes/menu.tpl.html (revision 0)
+++ v5.7-duchartre-2014-04-14/presentations/squelettes/menu.tpl.html (revision 1302)
@@ -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.7-duchartre-2014-04-14/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; ?>?email=eflore_remarques@tela-botanica.org&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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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:eol-style
+native
\ No newline at end of property
Added: svn:executable
+*
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/livraison
New file
Property changes:
Added: svn:ignore
+consultation.tar.gz
/tags/v5.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/modules/fiche_metadonnees/FicheMetadonnees.php
New file
0,0 → 1,119
<?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) {
return array('auteurs' => $this->formaterAuteurs($meta),
'url' => $this->formaterUrl($meta),
'description' => $meta['description'],
'citation' => $meta['citation'],
'titre' => $meta['titre'],
'date' => strftime("%d/%m/%Y", strtotime($meta['date_creation']))
);
}
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.7-duchartre-2014-04-14/modules/fiche_metadonnees/squelettes/metadonnees.tpl.html
New file
0,0 → 1,85
<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 />
<span class="intitule_metadonnee">Mise à jour le</span> <?= $metadonnees_resume['date']; ?>
<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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/modules/resultat/formateurs/nom_scientifique/DeterminationFormateur.php
New file
0,0 → 1,274
<?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->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['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 extraireNumerosNomSynonymes() {
$numNomsASynonyme = array();
foreach ($this->noms as $id => $nom) {
// certains taxons requêtés via /bdtfx/noms?masque= n'ont pas de num_tax ni de num_nom_retenu
if(!isset($nom['nom_retenu.id'])) continue;
$num_nom_retenu = $nom['nom_retenu.id'];
if(!isset($numNomsASynonyme[$num_nom_retenu])) {
$numNomsASynonyme[$num_nom_retenu] = array();
}
$numNomsASynonyme[$num_nom_retenu][] = $id;
if($num_nom_retenu != $id) {
$numNomsASynonyme[$id] = $numNomsASynonyme[$num_nom_retenu];
}
}
return $numNomsASynonyme;
}
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() {
if (Config::get(Registre::get('parametres.referentiel').'.baseRepartition') != "") {
$conteneur = new Conteneur();
$cartesWs = $conteneur->getApiCartes();
$cartesWs->setProjet(Config::get(Registre::get('parametres.referentiel').'.baseRepartition'));
$cartesWs->setLargeur('108x101');
$urls = array();
$numsNomsASynonymes = $this->extraireNumerosNomSynonymes();
foreach ($this->noms as $id => $nom) {
if (array_key_exists('nom_retenu.id', $nom)) {
$id = $nom['nom_retenu.id'];
$idsNoms = $numsNomsASynonymes[$id];
$cartesWs->setId("nn:".implode(',',$idsNoms)."");
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]['nomSciRetenu'] = $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;
}
}
?>
/tags/v5.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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['nomSciRetenu']?></strong>
</a>
</div>
<?php if (isset($repartition)) : ?>
<?php if (isset($repartition['urls'][$nnTaxon]) ) : ?>
<img class="illustration_resultat_choro" src="<?=htmlentities($repartition['urls'][$nnTaxon])?>" alt="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="Image provenant 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; ?>
<?php if (isset($dessins) && isset($dessins[$taxons[$nnTaxon]][0])) : ?>
<img class="illustration_resultat_coste" src="<?=htmlentities($dessins[$taxons[$nnTaxon]][0])?>" alt="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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/modules/mobile/sources/Texte.php
New file
0,0 → 1,108
<?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));
$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->donnees['titre'] = $this->donnees['corps'][0];
if (strpos($this->format, "html") != false) {
$this->obtenirTitreHtml();
} else {
$this->obtenirTitrePlain();
}
}
return $this->donnees;
}
//formater pour AppUrls ?
public function obtenirUrlWikini() {
$titre = urlencode("Fiche simplifiée Smart'flore");
$url_wiki = "http://www.tela-botanica.org/wikini/eFloreRedaction/api/rest/0.5/pages/SmartFlore"
.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.7-duchartre-2014-04-14/modules/mobile/sources/Floraison.php
New file
0,0 → 1,196
<?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() {
$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.7-duchartre-2014-04-14/modules/mobile/sources/Illustrations.php
New file
0,0 → 1,114
<?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);
$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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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 $cartes;
public function __construct(Conteneur $conteneur) {
$this->conteneur = $conteneur;
$this->nomCourant = $this->conteneur->getNomCourant();
$this->cartes = $this->conteneur->getApiCartes();
}
 
public function getDonnees() {
$donnees['chorodep'] = $this->getChorodepMiniature();
return $donnees;
}
private function getChorodepMiniature() {
$this->cartes->setProjet('chorodep');
$this->cartes->setLargeur('570x534');
//TODO: démochir ce code
// Chargement des nn des synonymes pour obtenir une carte plus complète
$noms = $this->conteneur->getApiNoms();
$syns = $noms->getSynonymes($this->nomCourant->getNnr());
$nns_syns = array_keys($syns['resultat']);
$nns_syns[] = $this->nomCourant->getNnr();
$id = 'nn:'.implode(',', $nns_syns);
$this->cartes->setId($id);
return $this->cartes->getUrlDataSvg();
}
}
?>
/tags/v5.7-duchartre-2014-04-14/modules/mobile/Mobile.php
New file
0,0 → 1,108
<?php
// declare(encoding='UTF-8');
/**
* Classe mère du module Mobile.
*
* @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 Mobile extends aControleur {
 
private $theme = 'pyracantha';
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';
$this->theme = isset($_GET['theme']) ? $_GET['theme'] : $this->theme;
 
$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(){
$niveau = Registre::get('parametres.niveau');
$squelette = "theme_{$this->theme}_niveau{$niveau}";
 
$donnees = $this->parametres;
$donnees['nom_retenu'] = $this->nom_retenu->get('nom_sci_html').' '.$this->nom_retenu->get('auteur');
$donnees['famille'] = $this->nom_retenu->getTaxonSupRang('180');
$donnees = array_merge($this->obtenirDonnees(), $donnees);
$donnees['css'] = $this->obtenirLienCss();
$donnees['url_absolue'] = "http://".$_SERVER['SERVER_NAME'].'/'.$_SERVER['REQUEST_URI'];
$donnees['contenu_onglet'] = $this->getVue($squelette, $donnees);
$donnees['lien'] = $this->url->obtenirUrlMobile($this->parametres['num_nom']);
$this->setSortie(self::RENDU_CORPS, $this->getVue('fiche', $donnees), true);
//print_r($donnees);
}
 
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', 'repartition', 'texte', 'floraison', 'nomsCommuns');
foreach ($sources as $source) {
$nom_classe = ucfirst($source);
$classe = new $nom_classe($this->conteneur);
$donnees[$source] = $classe->getDonnees();
}
 
return $donnees;
}
 
private function obtenirLienCss() {
$theme = $this->theme;
if (strcmp($this->theme, 'pyracantha') >= 0) {
$theme = 'pyracantha_blanc';
}
$lien = "modules/mobile/presentations/css/$theme.css";
return $lien;
}
}
?>
/tags/v5.7-duchartre-2014-04-14/modules/mobile/presentations/icones/zoom.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/modules/mobile/presentations/icones/zoom.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/modules/mobile/presentations/icones/altitude.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/modules/mobile/presentations/icones/altitude.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/modules/mobile/presentations/logos/tela.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/modules/mobile/presentations/logos/tela.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/tags/v5.7-duchartre-2014-04-14/modules/mobile/presentations/logos/tela_transparent.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/tags/v5.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/modules/mobile/presentations/css/pyracantha_blanc.css
New file
0,0 → 1,179
.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; }
.small-caps { font-variant: small-caps; }
.btn-large {
padding: 10px;
font-size: 17px;
}
.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;
}
footer a { color: white; }
footer 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 { background: #88ab1c; }
#div-infos-latin {
margin-left: auto;
margin-right: auto;
}
#div-infos-latin .btn {
width: 99%;
padding-left: 0pt;
padding-right: 0pt;
box-shadow: 0pt 2px 3px black;
}
#div-infos-latin a { font-size: 16px; }
#div-infos-famille {
margin-left: auto;
margin-right: auto;
}
#div-infos-famille .btn {
width: 99%;
padding-left: 0pt;
padding-right: 0pt;
box-shadow: 0pt 2px 3px black;
}
#div-infos-famille a { font-size: 16px; }
#div-infos-famille { margin-top: -1em; }
#div-illustrations {
border-radius: 2em;
-moz-border-radius: 2em;
-webkit-border-radius: 2em;
background: white;
margin-top: -1em;
padding-top: 20px;
padding-bottom: 20px;
}
#galerie_carte { list-style-type: none; }
#slider-pictures {
max-width: 320px;
margin-left: auto;
margin-right: auto;
}
#slider-pictures .carousel { margin-bottom: 0pt; }
#slider-pictures .carousel-control { background: none; }
#slider-pictures .carousel-inner > .item > img {
width: 320px;
max-height: 310px;
}
#slider-pictures .carousel-indicators li { background: #256226; }
#slider-pictures .carousel-indicators .active { background: #ed7826; }
#slider-pictures .carousel-caption {
padding: 10px;
position: static;
}
#slider-pictures .carousel-caption h4 { font-size: 100%; }
#slider-pictures .carousel-caption p { font-size: 90%; }
#slider-pictures img {
margin-left: auto;
margin-right: auto;
}
#gstn-img {
max-height: 120px;
margin: 0.5em 0pt 1em 0pt;
display: inline-block;
}
#gstn-img img {
border: #eaeaea 2px solid;
width: 100px;
}
#gstn-img .zoom {
margin-top: 40px;
width: 20px;
border: none;
}
.resume {
text-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; }
.couleur1-bg, .couleur2-bg, body { background: white; }
header { background: #88ab1c; }
.tela img {
width: 60px;
max-width: 60px;
}
.titre {
color: white;
text-shadow: 0pt 1px 1px #ed7826;
}
.infos .bg {
padding: 0.2em;
border-radius: 0pt 0pt 1em 1em;
}
.infos .btn {
padding: 0pt;
border-radius: 1em 1em 0pt 0pt;
}
.infos .collapse { width: 100%; }
.infos h4 { color: #ed7826; }
.infos .textes {
padding: 0.5em 1em;
border-radius: 2em;
-moz-border-radius: 2em;
-webkit-border-radius: 2em;
-webkit-overflow-scrolling: touch;
}
.infos .textes h4 {
color: #256226;
text-shadow: 2px 1px 1px #88ab1c;
}
.resume { color: black; }
.gradient-bas {
background-image: linear-gradient(top, #88ab1c 0%, white 100%);
background-image: -o-linear-gradient(top, #88ab1c 0%, white 100%);
background-image: -moz-linear-gradient(top, #88ab1c 0%, white 100%);
background-image: -webkit-linear-gradient(top, #88ab1c 0%, white 100%);
background-image: -ms-linear-gradient(top, #88ab1c 0%, white 100%);
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #88ab1c), color-stop(1, white));
}
.en-savoir-plus {
margin-left: 0.2em;
float: left;
color: white;
background: #88ab1c;
}
.haut-de-page {
margin-right: 0.2em;
float: right;
color: white;
background: black;
}
/tags/v5.7-duchartre-2014-04-14/modules/mobile/presentations/css/pyracantha_vert.css
New file
0,0 → 1,181
.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; }
.small-caps { font-variant: small-caps; }
.btn-large {
padding: 10px;
font-size: 17px;
}
.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;
}
footer a { color: white; }
footer 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 { background: #88ab1c; }
#div-infos-latin {
margin-left: auto;
margin-right: auto;
}
#div-infos-latin .btn {
width: 99%;
padding-left: 0pt;
padding-right: 0pt;
box-shadow: 0pt 2px 3px black;
}
#div-infos-latin a { font-size: 16px; }
#div-infos-famille {
margin-left: auto;
margin-right: auto;
}
#div-infos-famille .btn {
width: 99%;
padding-left: 0pt;
padding-right: 0pt;
box-shadow: 0pt 2px 3px black;
}
#div-infos-famille a { font-size: 16px; }
#div-infos-famille { margin-top: -1em; }
#div-illustrations {
border-radius: 2em;
-moz-border-radius: 2em;
-webkit-border-radius: 2em;
background: white;
margin-top: -1em;
padding-top: 20px;
padding-bottom: 20px;
}
#galerie_carte { list-style-type: none; }
#slider-pictures {
max-width: 320px;
margin-left: auto;
margin-right: auto;
}
#slider-pictures .carousel { margin-bottom: 0pt; }
#slider-pictures .carousel-control { background: none; }
#slider-pictures .carousel-inner > .item > img {
width: 320px;
max-height: 310px;
}
#slider-pictures .carousel-indicators li { background: #256226; }
#slider-pictures .carousel-indicators .active { background: #ed7826; }
#slider-pictures .carousel-caption {
padding: 10px;
position: static;
}
#slider-pictures .carousel-caption h4 { font-size: 100%; }
#slider-pictures .carousel-caption p { font-size: 90%; }
#slider-pictures img {
margin-left: auto;
margin-right: auto;
}
#gstn-img {
max-height: 120px;
margin: 0.5em 0pt 1em 0pt;
display: inline-block;
}
#gstn-img img {
border: #eaeaea 2px solid;
width: 100px;
}
#gstn-img .zoom {
margin-top: 40px;
width: 20px;
border: none;
}
.resume {
text-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; }
.couleur1-bg { background: #9ac342; }
.couleur2-bg { background: #88ab1c; }
body { background: white; }
header { background: #88ab1c; }
.tela img {
width: 60px;
max-width: 60px;
}
.titre {
color: white;
text-shadow: 0pt 1px 1px #ed7826;
}
.infos .bg {
padding: 0.2em;
border-radius: 0pt 0pt 1em 1em;
}
.infos .btn {
padding: 0pt;
border-radius: 1em 1em 0pt 0pt;
}
.infos .collapse { width: 100%; }
.infos .textes {
padding: 0.5em 1em;
border-radius: 2em;
-moz-border-radius: 2em;
-webkit-border-radius: 2em;
background: white;
-webkit-overflow-scrolling: touch;
}
.infos .textes h4 {
color: #256226;
text-shadow: 2px 1px 1px #88ab1c;
}
.resume { color: black; }
.gradient-bas {
background-image: linear-gradient(top, #88ab1c 0%, white 100%);
background-image: -o-linear-gradient(top, #88ab1c 0%, white 100%);
background-image: -moz-linear-gradient(top, #88ab1c 0%, white 100%);
background-image: -webkit-linear-gradient(top, #88ab1c 0%, white 100%);
background-image: -ms-linear-gradient(top, #88ab1c 0%, white 100%);
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #88ab1c), color-stop(1, white));
}
.en-savoir-plus {
margin-left: 0.2em;
float: left;
color: white;
background: #b04dff;
}
.haut-de-page {
margin-right: 0.2em;
float: right;
color: white;
background: black;
}
/tags/v5.7-duchartre-2014-04-14/modules/mobile/presentations/css/pyracantha_tela.css
New file
0,0 → 1,187
.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; }
.small-caps { font-variant: small-caps; }
.btn-large {
padding: 10px;
font-size: 17px;
}
.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;
}
footer a { color: white; }
footer 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 { background: white; }
#div-infos-latin {
margin-left: auto;
margin-right: auto;
}
#div-infos-latin .btn {
width: 99%;
padding-left: 0pt;
padding-right: 0pt;
box-shadow: 0pt 2px 3px black;
}
#div-infos-latin a { font-size: 16px; }
#div-infos-famille {
margin-left: auto;
margin-right: auto;
}
#div-infos-famille .btn {
width: 99%;
padding-left: 0pt;
padding-right: 0pt;
box-shadow: 0pt 2px 3px black;
}
#div-infos-famille a { font-size: 16px; }
#div-infos-famille { margin-top: -1em; }
#div-illustrations {
border-radius: 2em;
-moz-border-radius: 2em;
-webkit-border-radius: 2em;
background: white;
margin-top: -1em;
padding-top: 20px;
padding-bottom: 20px;
}
#galerie_carte { list-style-type: none; }
#slider-pictures {
max-width: 320px;
margin-left: auto;
margin-right: auto;
}
#slider-pictures .carousel { margin-bottom: 0pt; }
#slider-pictures .carousel-control { background: none; }
#slider-pictures .carousel-inner > .item > img {
width: 320px;
max-height: 310px;
}
#slider-pictures .carousel-indicators li { background: #256226; }
#slider-pictures .carousel-indicators .active { background: #ed7826; }
#slider-pictures .carousel-caption {
padding: 10px;
position: static;
}
#slider-pictures .carousel-caption h4 { font-size: 100%; }
#slider-pictures .carousel-caption p { font-size: 90%; }
#slider-pictures img {
margin-left: auto;
margin-right: auto;
}
#gstn-img {
max-height: 120px;
margin: 0.5em 0pt 1em 0pt;
display: inline-block;
}
#gstn-img img {
border: #eaeaea 2px solid;
width: 100px;
}
#gstn-img .zoom {
margin-top: 40px;
width: 20px;
border: none;
}
.resume {
text-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; }
.couleur1-bg { background: #ed7826; }
.couleur2-bg { background: #88ab1c; }
body { background: #256226; }
header { background: white; }
.tela img {
width: 80px;
max-width: 80px;
}
.titre {
color: black;
text-shadow: 0pt 1px 1px #ed7826;
}
.infos .bg {
padding: 1em;
border-radius: 2em;
-moz-border-radius: 2em;
-webkit-border-radius: 2em;
}
.infos .btn {
padding: 0pt;
border-radius: 2em;
-moz-border-radius: 2em;
-webkit-border-radius: 2em;
}
.infos .collapse { width: 100%; }
.infos .textes {
padding: 1em;
border-radius: 2em;
-moz-border-radius: 2em;
-webkit-border-radius: 2em;
max-height: 220px;
overflow: auto;
background: #f3b88f;
-webkit-overflow-scrolling: touch;
}
.infos .textes h4 {
color: #256226;
text-shadow: 2px 1px 1px #88ab1c;
}
.resume { color: white; }
.gradient-bas {
background-image: linear-gradient(top, white 0%, #256226 100%);
background-image: -o-linear-gradient(top, white 0%, #256226 100%);
background-image: -moz-linear-gradient(top, white 0%, #256226 100%);
background-image: -webkit-linear-gradient(top, white 0%, #256226 100%);
background-image: -ms-linear-gradient(top, white 0%, #256226 100%);
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, white), color-stop(1, #256226));
}
.en-savoir-plus {
margin-left: 0.2em;
float: left;
color: white;
background: #b04dff;
}
.haut-de-page {
margin-right: 0.2em;
float: right;
color: white;
background: black;
}
/tags/v5.7-duchartre-2014-04-14/modules/mobile/presentations/css/gentiana.css
New file
0,0 → 1,102
.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; }
.couleur1-bg { background: #ed7826; }
.couleur2-bg { background: #88ab1c; }
.bordered { border: 1px solid #256226; }
.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 {
background: #88ab1c;
color: white;
}
header #tela { background: url("../logos/tela_transparent.png") no-repeat 2px 6px; }
header .titre {
font-style: italic;
font-size: 130%;
font-weight: bold;
text-shadow: 0pt 1px 1px #ed7826;
}
.gradient-bas {
background-image: linear-gradient(top, '' 0%, '' 100%);
background-image: -o-linear-gradient(top, '' 0%, '' 100%);
background-image: -moz-linear-gradient(top, '' 0%, '' 100%);
background-image: -webkit-linear-gradient(top, '' 0%, '' 100%);
background-image: -ms-linear-gradient(top, '' 0%, '' 100%);
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #88ab1c), color-stop(1, white));
height: 16px;
display: block;
}
footer { display: none; }
.sci { font-style: italic; }
#principal {
margin-bottom: -1em;
padding-left: 0.5em;
}
#principal a:hover { text-decoration: none; }
#principal h4 {
font-size: 17px;
color: #ed7826;
text-shadow: 2px 1px 1px white;
}
#canvas_fleur, #canvas_fruit { width: 100%; }
#floraison_value, #fructification_value { display: none; }
.wrapper {
width: 120pp;
height: 120px;
margin-left: auto;
margin-right: auto;
overflow: hidden;
}
.wrapper img {
height: 120px;
width: auto;
}
.wrapper_demi { height: 59px; }
.wrapper ul { margin: 0pt; }
.wrapper_carte {
margin-left: auto;
margin-right: auto;
}
.wrapper_carte ul { margin: 0pt; }
.wrapper_carte #galerie_carte img { border: 1px solid #256226; }
#galerie_carte { list-style-type: none; }
.bas-de-page {
margin-top: 1em;
margin-bottom: 1em;
}
.en-savoir-plus {
margin-left: 0.2em;
float: left;
background: #88ab1c;
color: white;
text-shadow: 0pt 0pt 0pt black;
}
.en-savoir-plus:hover { text-decoration: none; }
.en-savoir-plus:visited { text-decoration: none; }
.haut-de-page {
margin-right: 0.2em;
float: right;
background: black;
color: white;
}
.haut-de-page:hover { text-decoration: none; }
.haut-de-page:visited { text-decoration: none; }
/tags/v5.7-duchartre-2014-04-14/modules/mobile/presentations/js/mobile.js
New file
0,0 → 1,165
$(document).ready(function() {
// Popover
$('.btn-pop').popover();
// CSS switcher
$('.toggle-button').click(function(e) {
$('link#custom-css').attr('href', $(this).attr('CssUrl'));
return false;
});
// Slider images : photoswipe
if (document.getElementById('galerie_carte')) {
var psc = $('#galerie_carte a').photoSwipe({
enableMouseWheel: false ,
enableKeyboard: false,
preventSlideshow: true
});
}
if (document.getElementById('galerie_images')) {
var psi = $('#galerie_images a').photoSwipe({
enableMouseWheel: false ,
enableKeyboard: false ,
captionAndToolbarAutoHideDelay: 0
});
}
// Slider images : bootstrap
if (document.getElementById('slider-pictures')) {
$('#slider-pictures').hide();
$('#slider-pictures').swiperight(function() {
$('#slider-pictures').carousel('prev');
});
$('#slider-pictures').swipeleft(function() {
$('#slider-pictures').carousel('next');
});
}
});
 
/*----------------------------------------------------------------------------------------------------------*/
// POPOVER
var nbrPopup = 0,
popupOuverte = false;
 
function gestionPopover() {
if (popupOuverte && nbrPopup != 0) {
$('.btn-pop').popover('hide');
popupOuverte = false;
}
nbrPopup++;
}
 
function resetPopover() {
nbrPopup = 0;
popupOuverte = true;
}
 
/*----------------------------------------------------------------------------------------------------------*/
// SLIDER BOOTSTRAP
function gestionSlider() {
if ($('#slider-pictures').is(':visible')) {
$('#gstn-img').show();
$('#slider-pictures').hide();
} else {
$('#gstn-img').hide();
$('#slider-pictures').show();
}
}
 
/*----------------------------------------------------------------------------------------------------------*/
// CANVAS FLORAISON, FRUCTIFICATION
var moisAbbr = new Array('J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D', ''),
intervalle = false;
 
function dessinCanvas(canvas, color, valeur) {
var ctx = canvas.getContext('2d'),
i = 0,
arr = getTableauMois(valeur),
index0 = arr[0],
index1 = -1,
size = canvas.width;
if (intervalle) {
index1 = arr[arr.length - 1];
}
for (var abscisse = 10; abscisse < size; abscisse += (size/13)) {
ctx.beginPath();
ctx.moveTo(abscisse, 0);
ctx.lineTo(abscisse, 55);
ctx.stroke();
 
if (in_array(i, arr)) {
if (i == index0 && index1 != -1) {
var linearGradient = ctx.createLinearGradient(abscisse, 10, abscisse+30, 10);
linearGradient.addColorStop(0, "#fff");
linearGradient.addColorStop(1, color);
ctx.beginPath();
ctx.fillStyle = linearGradient;
ctx.moveTo(abscisse, 25);
ctx.lineTo(abscisse+(size/13), 25);
ctx.lineTo(abscisse+(size/13), 10);
ctx.lineTo(abscisse, 25);
ctx.fill();
} else {
if (i == index1) {
var linearGradient = ctx.createLinearGradient(abscisse, 10, abscisse+25, 10);
 
linearGradient.addColorStop(0, color);
linearGradient.addColorStop(1, "#fff");
ctx.beginPath();
ctx.fillStyle = linearGradient;
ctx.moveTo(abscisse, 10);
ctx.lineTo(abscisse, 25);
ctx.lineTo(abscisse+(size/13), 25);
ctx.lineTo(abscisse, 10);
ctx.fill();
} else {
ctx.fillStyle = color;
ctx.fillRect(abscisse, 10, (size/13), 15);
}
}
}
ctx.font = '20px Georgia';
ctx.fillStyle = '#000';
ctx.fillText(moisAbbr[i++], abscisse + 5, 50);
}
}
 
function getTableauMois(elt) {
var arr = new Array(),
temp = elt.split('-');
 
if (typeof temp[1] === 'undefined') {
arr.push(elt);
} else {
intervalle = true;
temp[0] = parseInt(temp[0]);
temp[1] = parseInt(temp[1]);
if (temp[0] < temp[1]) {
for (var c = temp[0]; c <= temp[1]; c++) {
arr.push(c);
}
} else {
for (var c = temp[0]; c < 12; c++) {
arr.push(c);
}
for (var c = 0; c <= temp[1]; c++) {
arr.push(c);
}
}
}
return arr;
}
 
function in_array(needle, haystack) {
var inArray = 0;
for (var i in haystack) {
if (haystack[i] == needle) {
inArray++;
}
}
return (inArray != 0);
}
/tags/v5.7-duchartre-2014-04-14/modules/mobile/squelettes/fiche.tpl.html
New file
0,0 → 1,61
<!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://www.tela-botanica.org/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">
 
<!-- CSS -->
<link href="http://www.tela-botanica.org/commun/jquery/photoswipe/3.0.5/photoswipe.css" type="text/css" rel="stylesheet" />
<link href="http://www.tela-botanica.org/commun/bootstrap/2.3.1/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<link href="<?= $css ?>" rel="stylesheet" type="text/css" id="custom-css" />
 
<!-- Javascript -->
<script src="http://www.tela-botanica.org/commun/jquery/1.7.1/jquery-1.7.1.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="http://www.tela-botanica.org/commun/bootstrap/2.3.1/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 class="container-fluid">
<div id="up">
<?= $contenu_onglet; ?>
 
<div class="row-fluid bas-de-page">
<a href="<?= $permalien_num_nom; ?>" class="btn btn-large en-savoir-plus">
En savoir plus
<i class="icon-share"></i>
</a>
<a href="#up" class="btn btn-large haut-de-page">
<i class="icon-chevron-up icon-white"></i>
Haut de page
</a>
<div class="clearfix"></div>
</div>
 
</div> <!-- Fin du bloc 'Haut de Page' -->
</body>
</html>
/tags/v5.7-duchartre-2014-04-14/modules/mobile/squelettes/theme_gentiana_niveau1.tpl.html
New file
0,0 → 1,176
<?
$txt_latin = "Le nom latin est utilisé en sciences pour nommer un être vivant,
ou un groupe d'êtres vivants. On l'appelle aussi nom scientifique ou encore
nom savant, car il n'est pas employé couramment et parfois difficile à
retenir.";
$txt_famille = "Une famille rassemble des êtres vivants proches, qui se ressemblent, malgré leurs
différences. Les familles botaniques sont ainsi utilisées pour classer les végétaux et pour
estimer les similitudes ou affinités qu'il peut y avoir entre différentes plantes.";
 
$icones = array('icon-eye-open', 'icon-book', 'icon-certificate', 'icon-home', 'icon-flag');
$index_icones = 0;
$nb_onglets = 0;
?>
<header class="row-fluid">
<div id="tela" class="padding-05em">
<div class="text-center titre">
<? if (isset($texte['nom-commun'])) : ?>
<?= $texte['nom-commun']; ?>
<? elseif ($nomsCommuns[0]['nom_vernaculaire'] != '') : ?>
<?= $nomsCommuns[0]['nom_vernaculaire'] ?>
<? else : ?>
<? if ($texte['titre'][0] != '') : ?>
<?= $texte['titre'][0]; ?>
<? else : ?>
Aucun nom commun défini.
<? endif; ?>
<? endif; ?>
</div>
<div class="align-center">
<? if ($nom_retenu != '') : ?>
<?= $nom_retenu; ?>
<? else : ?>
Aucun nom scientifique.
<? endif; ?>
<? if ($famille != '') : ?>
(<span class="small-caps"><?= $famille; ?>)</span>
<? endif; ?>
</div>
</div>
</header>
<span class="gradient-bas"></span>
<div id="" class="row-fluid">
<div class="span6">
<div class="wrapper">
<ul id="galerie_images" class="gallery">
<? if (count($illustrations) != 0) : ?>
<? for($i = 0; $i < count($illustrations); $i++) : ?>
<? if (trim($illustrations[$i]['legende']['texte']) != '&nbsp;') : ?>
<? $alt = $illustrations[$i]['legende']['titre'].' ('.$illustrations[$i]['legende']['texte'].')'; ?>
<? else : ?>
<? $alt = $illustrations[$i]['legende']['titre']; ?>
<? endif; ?>
<li>
<a href="<?= $illustrations[$i]['src'] ?>" rel="external">
<img src="<?= $illustrations[$i]['src'] ?>" alt="<?= $alt; ?>" />
</a>
</li>
<? endfor; ?>
<? endif; ?>
</ul>
</div>
</div>
<div class="span6">
<div class="wrapper_carte">
<ul id="galerie_carte" class="gallery">
<li>
<a href="<?= $repartition['chorodep'] ?>" rel="external">
<img style="width:190px; height:178px" src="<?= $repartition['chorodep'] ?>" class="" title="Carte de répartition" alt="Carte de répartition" />
</a>
</li>
</ul>
</div>
</div>
</div>
<? if ($floraison['floraison'] != -1) : ?>
<div class="row-fluid margin-top-05em padding-left-01em">
<div class="span12 bordered">
<i class="margin-top-03em margin-left-03em icon-leaf pull-left"></i>
<div class="margin-left-05em pull-left">Floraison</div>
<canvas id="canvas_fleur" height="60"></canvas>
<span id="floraison_value"><?= $floraison['floraison'] ?></span>
</div>
</div>
<? endif; ?>
 
<? if ($floraison['fructification'] != -1) : ?>
<div class="row-fluid margin-top-05em padding-left-01em">
<div class="span12 bordered">
<i class="margin-top-03em margin-left-03em icon-asterisk pull-left"></i>
<div class="margin-left-05em pull-left">Fructification</div>
<canvas id="canvas_fruit" height="60"></canvas>
<span id="fructification_value"><?= $floraison['fructification'] ?></span>
</div>
</div>
<? endif; ?>
<script type="text/javascript">
var fleur = document.getElementById('floraison_value'),
fruit = document.getElementById('fructification_value');
if (fleur) {
dessinCanvas(document.getElementById('canvas_fleur'), '#00F', fleur.innerHTML);
}
if (fruit) {
dessinCanvas(document.getElementById('canvas_fruit'), '#F00', fruit.innerHTML);
}
</script>
 
<div class="clearfix"></div>
<div id="principal">
<? if (count($texte['corps']) > 1) : ?>
<?= $texte['corps'][2]; ?>
<div class="accordion" id="accordion2">
<? for($c = 3; $c < count($texte['corps'])-1; $c+=2) : ?>
<div class="accordion-group">
<div class="accordion-heading">
<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapse_<?= $c; ?>">
<h4>
<i class="<?= $icones[$index_icones++]; ?> margin-left-1em margin-top-03em"></i>
<?= $texte['corps'][$c]; ?>
</h4>
</a>
</div>
<div id="collapse_<?= $c; ?>" class="accordion-body collapse">
<div class="accordion-inner">
<?= $texte['corps'][$c+1]; ?>
</div>
</div>
</div>
<? endfor; ?>
</div>
<? else : ?>
<? if (isset($repartition['chorodep'])) /* affichage de la chorologie quand même, en l'absence de fiche Smartflore */ : ?>
<div class="row-fluid infos">
<div data-target="#c9" data-toggle="collapse" class="btn btn-block couleur1-bg">
<h4 class="padding-left-1em">
<i class="icon-home pull-left"></i>
Écologie &amp; habitat</h4>
</div>
<div class="in collapse" id="c9" style="height: auto;">
<div class="bg couleur1-bg">
<div class="textes">
<div class="span6 margin-right-05em"> Carte de répartition <br>
<ul class="gallery style-none margin-center" id="galerie_carte">
<li>
<a href="<?= $repartition['chorodep'] ?>" rel="external">
<img style="width:190px; height:178px" src="<?= $repartition['chorodep'] ?>" class="" title="Carte de répartition" alt="Carte de répartition" />
</a>
</li>
</ul>
</div>
<div class="clearfix"></div>
</div><!-- Fin de la zone de texte -->
</div>
</div><!-- Fin de la zone déroulante -->
</div>
<? endif; ?>
 
 
<? if ($floraison['coste']['description']['texte'] != '') : ?>
<?= $floraison['coste']['description']['texte']; ?>
<? else : ?>
<? if (count($floraison['baseflor']) > 1) : ?>
<? foreach ($floraison['baseflor'] as $index => $texte) : ?>
<? if ($floraison['baseflor'][$index] != '') : ?>
<?= $index.' : '.$texte; ?> <br />
<? endif; ?>
<? endforeach; ?>
<? else : ?>
<?= $txt_vide; ?>
<? endif; ?>
<? endif; ?>
<? endif; ?>
</div>
/tags/v5.7-duchartre-2014-04-14/modules/mobile/squelettes/theme_gentiana2_niveau1.tpl.html
New file
0,0 → 1,193
<?
$txt_latin = "Le nom latin est utilisé en sciences pour nommer un être vivant,
ou un groupe d'êtres vivants. On l'appelle aussi nom scientifique ou encore
nom savant, car il n'est pas employé couramment et parfois difficile à
retenir.";
$txt_famille = "Une famille rassemble des êtres vivants proches, qui se ressemblent, malgré leurs
différences. Les familles botaniques sont ainsi utilisées pour classer les végétaux et pour
estimer les similitudes ou affinités qu'il peut y avoir entre différentes plantes.";
 
$icones = array('icon-eye-open', 'icon-book', 'icon-certificate', 'icon-home', 'icon-flag');
$index_icones = 0;
 
$nb_onglets = 0;
?>
<header class="row-fluid">
<div id="tela" class="padding-05em">
<div class="text-center titre">
<? if (isset($texte['nom-commun'])) : ?>
<?= $texte['nom-commun']; ?>
<? elseif ($nomsCommuns[0]['nom_vernaculaire'] != '') : ?>
<?= $nomsCommuns[0]['nom_vernaculaire'] ?>
<? else : ?>
Aucun nom commun défini.
<? endif; ?>
</div>
<div class="align-center">
<? if ($nom_retenu != '') : ?>
<?= $nom_retenu; ?>
<? else : ?>
Aucun nom scientifique.
<? endif; ?>
<? if ($famille != '') : ?>
(<span class="small-caps"><?= $famille; ?>)</span>
<? endif; ?>
</div>
</div>
</header>
<span class="gradient-bas"></span>
 
<div class="row-fluid">
<div class="span12">
<div class="row-fluid">
<div class="span5 margin-bottom-05em margin-center margin-right-05em">
<div class="row-fluid margin-top-05em padding-left-01em" id="icons">
<div class="span6">
<div class="wrapper_carte">
<ul id="galerie_carte" class="gallery">
<li>
<a href="<?= $repartition['chorodep'] ?>" rel="external">
<img style="width:190px; height:178px" src="<?= $repartition['chorodep'] ?>" class="" title="Carte de répartition" alt="Carte de répartition" />
</a>
</li>
</ul>
</div>
</div>
<div class="span6 bordered">
<div class="wrapper wrapper_demi">
<ul id="galerie_images" class="gallery">
<? if (count($illustrations) != 0) : ?>
<? for($i = 0; $i < count($illustrations); $i++) : ?>
<? if (trim($illustrations[$i]['legende']['texte']) != '&nbsp;') : ?>
<? $alt = $illustrations[$i]['legende']['titre'].' ('.$illustrations[$i]['legende']['texte'].')'; ?>
<? else : ?>
<? $alt = $illustrations[$i]['legende']['titre']; ?>
<? endif; ?>
<li>
<a href="<?= $illustrations[$i]['src'] ?>" rel="external">
<img src="<?= $illustrations[$i]['src'] ?>" alt="<?= $alt; ?>" />
</a>
</li>
<? endfor; ?>
<? else: ?>
Aucune image.
<? endif; ?>
</ul>
</div>
</div>
</div>
<? if ($floraison['floraison'] != -1) : ?>
<div class="row-fluid margin-top-05em padding-left-01em">
<div class="span12 bordered">
<i class="margin-top-03em margin-left-03em icon-leaf pull-left"></i>
<div class="margin-left-05em pull-left">Floraison</div>
<canvas id="canvas_fleur" height="60"></canvas>
<span id="floraison_value"><?= $floraison['floraison'] ?></span>
</div>
</div>
<? endif; ?>
 
<? if ($floraison['fructification'] != -1) : ?>
<div class="row-fluid margin-top-05em padding-left-01em">
<div class="span12 bordered">
<i class="margin-top-03em margin-left-03em icon-asterisk pull-left"></i>
<div class="margin-left-05em pull-left">Fructification</div>
<canvas id="canvas_fruit" height="60"></canvas>
<span id="fructification_value"><?= $floraison['fructification'] ?></span>
</div>
</div>
<? endif; ?>
</div>
<script type="text/javascript">
var fleur = document.getElementById('floraison_value'),
fruit = document.getElementById('fructification_value');
if (fleur) {
dessinCanvas(document.getElementById('canvas_fleur'), '#00F', fleur.innerHTML);
}
if (fruit) {
dessinCanvas(document.getElementById('canvas_fruit'), '#F00', fruit.innerHTML);
}
</script>
<div id="principal">
<? if (count($texte['corps']) > 1) : ?>
<?= $texte['corps'][2]; ?>
<div class="clearfix">
<h4>
<i class="<?= $icones[$index_icones++]; ?> margin-left-1em margin-top-03em"></i>
<?= $texte['corps'][3]; ?>
</h4>
<?= $texte['corps'][4]; ?>
</div>
<div class="accordion" id="accordion2">
<? for($c = 3; $c < count($texte['corps'])-1; $c+=2) : ?>
<? if ($c != 3) : ?>
<div class="accordion-group">
<div class="accordion-heading">
<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapse_<?= $c; ?>">
<h4>
<i class="<?= $icones[$index_icones++]; ?> margin-left-1em margin-top-03em"></i>
<?= $texte['corps'][$c]; ?>
</h4>
</a>
</div>
<div id="collapse_<?= $c; ?>" class="accordion-body collapse">
<div class="accordion-inner">
<?= $texte['corps'][$c+1]; ?>
</div>
</div>
</div>
<? endif; ?>
<? endfor; ?>
</div>
<? else : ?>
 
<? if (isset($repartition['chorodep'])) /* affichage de la chorologie quand même, en l'absence de fiche Smartflore */ : ?>
<div class="row-fluid infos">
<div data-target="#c9" data-toggle="collapse" class="btn btn-block couleur1-bg">
<h4 class="padding-left-1em">
<i class="icon-home pull-left"></i>
Écologie &amp; habitat</h4>
</div>
<div class="in collapse" id="c9" style="height: auto;">
<div class="bg couleur1-bg">
<div class="textes">
<div class="span6 margin-right-05em"> Carte de répartition <br>
<ul class="gallery style-none margin-center" id="galerie_carte">
<li>
<a href="<?= $repartition['chorodep'] ?>" rel="external">
<img style="width:190px; height:178px" src="<?= $repartition['chorodep'] ?>" class="" title="Carte de répartition" alt="Carte de répartition" />
</a>
</li>
</ul>
</div>
<div class="clearfix"></div>
</div><!-- Fin de la zone de texte -->
</div>
</div><!-- Fin de la zone déroulante -->
</div>
<? endif; ?>
 
<? if ($floraison['coste']['description']['texte'] != '') : ?>
<?= $floraison['coste']['description']['texte']; ?>
<? else : ?>
<? if (count($floraison['baseflor']) > 1) : ?>
<? foreach ($floraison['baseflor'] as $index => $texte) : ?>
<? if ($floraison['baseflor'][$index] != '') : ?>
<?= $index.' : '.$texte; ?> <br />
<? endif; ?>
<? endforeach; ?>
<? else : ?>
<?= $txt_vide; ?>
<? endif; ?>
<? endif; ?>
<? endif; ?>
</div>
</div>
</div> <!-- span12 englobant -->
</div>
/tags/v5.7-duchartre-2014-04-14/modules/mobile/squelettes/theme_pyracantha_niveau1.tpl.html
New file
0,0 → 1,202
<?
$txt_latin = "<div onclick='gestionPopover();'>
Le nom latin est utilisé en sciences pour nommer un être vivant,
ou un groupe d'êtres vivants. On l'appelle aussi nom scientifique ou encore
nom savant, car il n'est pas employé couramment et parfois difficile à retenir.
</div>";
$txt_famille = "<div onclick='gestionPopover();'>
Une famille rassemble des êtres vivants proches, qui se ressemblent, malgré leurs
différences. Les familles botaniques sont ainsi utilisées pour classer les végétaux et pour
estimer les similitudes ou affinités qu'il peut y avoir entre différentes plantes.
</div>";
 
$icones = array('icon-eye-open', 'icon-book', 'icon-certificate', 'icon-home', 'icon-flag');
$index_icones = 0;
 
$txt_vide = "Aucune donnée disponible.";
$nb_onglets = 0;
?>
<div onclick="gestionPopover();">
<header class="row-fluid">
<div class="padding-05em">
<div class="tela pull-left">
<a href="http://tela-botanica.org" rel="external" title="Retour à Tela-Botanica.org">
<img src="modules/mobile/presentations/logos/tela.png" alt="Logo Tela" />
</a>
</div>
<div class="text-center titre">
<? if (isset($texte['nom-commun'])) : ?>
<?= $texte['nom-commun']; ?>
<? elseif ($nomsCommuns[0]['nom_vernaculaire'] != '') : ?>
<?= $nomsCommuns[0]['nom_vernaculaire'] ?>
<? else : ?>
<? if ($texte['titre'][0] != '') : ?>
<?= $texte['titre'][0]; ?>
<? else : ?>
Aucun nom commun défini.
<? endif; ?>
<? endif; ?>
</div>
</div>
</header>
<div id="div-infos">
<div id="div-infos-latin" class="row-fluid">
<div class="align-center">
<a href="<?= $url_absolue ?>#div-infos-latin" class="btn btn-large btn-pop"
data-content="<?= $txt_latin; ?>" data-html="true"
data-placement="bottom" data-toggle="popover"
data-original-title="<div onclick='gestionPopover();'>Pourquoi un nom latin ?</div>"
onclick="resetPopover();">
<? if ($nom_retenu != '') : ?>
<?= $nom_retenu; ?>
<? else : ?>
Aucun nom scientifique.
<? endif; ?>
</a>
</div>
</div>
<div id="div-illustrations" class="row-fluid">
<? if (count($illustrations) != 0) : ?>
<div class="align-center" onclick="gestionSlider();">
<a href="#btn-latin" class="" id="gstn-img">
<img src="<?= $illustrations[0]['src'] ?>" alt="Miniature" class="pull-left">
<img src="modules/mobile/presentations/icones/zoom.png" class="zoom pull-left"/>
<img src="<?= $illustrations[1]['src'] ?>" alt="Miniature" class="pull-left">
</a>
</div>
<div id="slider-pictures" class="carousel slide margin-top-05em">
<button class="btn btn-large" onclick="gestionSlider();">
<i class="icon-remove pull-left"></i>
</button>
<ol class="carousel-indicators">
<? for($i = 0; $i < count($illustrations); $i++) : ?>
<li data-target="#slider-pictures" data-slide-to="<?= $i ?>" class="<?= ($i == 0) ? 'active' : ''; ?>"></li>
<? endfor; ?>
</ol>
<div class="carousel-inner">
<? for($i = 0; $i < count($illustrations); $i++) : ?>
<div class="item <?= ($i == 0) ? ' active' : ''; ?>">
<img src="<?= $illustrations[$i]['src'] ?>" alt="Image_<?= $i ?>" >
<div class="carousel-caption">
<h4><?= $illustrations[$i]['legende']['titre'] ?></h4>
<p><?= $illustrations[$i]['legende']['texte'] ?></p>
</div>
</div>
<? endfor; ?>
</div>
<a class="left carousel-control" href="#slider-pictures" data-slide="prev">&lsaquo;</a>
<a class="right carousel-control" href="#slider-pictures" data-slide="next">&rsaquo;</a>
</div>
<? endif; ?>
</div>
<div id="div-infos-famille" class="row-fluid">
<div class="align-center">
<a href="#div-infos-famille" class="btn btn-large btn-pop" data-content="<?= $txt_famille; ?>"
data-placement="bottom" data-toggle="popover" data-html="true"
data-original-title="<div onclick='gestionPopover();'>Pourquoi une famille de plante ?</div>"
onclick="resetPopover();">
<? if ($famille != '') : ?>
Famille des <span class="small-caps"><?= $famille; ?></span>
<? else : ?>
<span class="none">En savoir plus sur les familles de plante</span>
<? endif; ?>
</a>
</div>
</div>
</div>
<span class="gradient-bas"></span>
<?= $floraison['coste']['texte']; ?>
 
<div class="resume">
<? if (count($texte['corps']) > 1) : ?>
<?= $texte['corps'][2]; ?>
</div>
<? for($index = 3; $index < count($texte['corps'])-1; $index+=2) : ?>
<? if (isset($texte['corps'][$c+1])) :
$nb_onglets++;
$class = ($nb_onglets % 2 == 0) ? "couleur1-bg" : "couleur2-bg";
?>
<div class="row-fluid infos">
<div class="btn btn-block <?= $class ?>" data-toggle="collapse" data-target="#c<?= $index ?>">
<h4 class="padding-left-1em">
<i class="<?= $icones[$index_icones++]; ?> pull-left"></i>
<?= $texte['corps'][$index]; ?>
</h4>
</div>
<div id="c<?= $index ?>" class="collapse">
<div class="bg <?= $class ?>">
<div class="textes">
<? if (stristr($texte['corps'][$index], 'cologie') != false || stristr($texte['corps'][$index], 'cologie') != false) : ?>
<div class="span6 margin-right-05em">
Carte de répartition <br />
<ul id="galerie_carte" class="gallery style-none margin-center">
<li>
<a href="<?= $repartition['chorodep'] ?>" rel="external">
<img style="width:190px; height:178px" src="<?= $repartition['chorodep'] ?>" class="" title="Carte de répartition" alt="Carte de répartition" />
</a>
</li>
</ul>
</div>
<div class="">
<?= $texte['corps'][$index+1]; ?>
</div>
<div class="clearfix"></div>
<? else : ?>
<?= $texte['corps'][$index+1]; ?>
<? endif; ?>
</div> <!-- Fin de la zone de texte -->
</div>
</div> <!-- Fin de la zone déroulante -->
</div> <!-- Fin du bloc infos -->
<? endif; ?>
<? endfor; ?>
<? else : ?>
 
<? if (isset($repartition['chorodep'])) /* affichage de la chorologie quand même, en l'absence de fiche Smartflore */ : ?>
<div class="row-fluid infos">
<div data-target="#c9" data-toggle="collapse" class="btn btn-block couleur1-bg">
<h4 class="padding-left-1em">
<i class="icon-home pull-left"></i>
Écologie &amp; habitat</h4>
</div>
<div class="in collapse" id="c9" style="height: auto;">
<div class="bg couleur1-bg">
<div class="textes">
<div class="span6 margin-right-05em"> Carte de répartition <br>
<ul class="gallery style-none margin-center" id="galerie_carte">
<li>
<a href="<?= $repartition['chorodep'] ?>" rel="external">
<img style="width:190px; height:178px" src="<?= $repartition['chorodep'] ?>" class="" title="Carte de répartition" alt="Carte de répartition" />
</a>
</li>
</ul>
</div>
<div class="clearfix"></div>
</div><!-- Fin de la zone de texte -->
</div>
</div><!-- Fin de la zone déroulante -->
</div>
<? endif; ?>
 
<? if ($floraison['coste']['description']['texte'] != '') : ?>
<?= $floraison['coste']['description']['texte']; ?>
<? else : ?>
<? if (count($floraison['baseflor']) > 1) : ?>
<? foreach ($floraison['baseflor'] as $index => $texte) : ?>
<? if ($floraison['baseflor'][$index] != '') : ?>
<?= $index.' : '.$texte; ?> <br />
<? endif; ?>
<? endforeach; ?>
<? else : ?>
<?= $txt_vide; ?>
<? endif; ?>
<? endif; ?>
</div>
<? endif; ?>
/tags/v5.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/modules/niveau/squelettes/niveau.tpl.html
New file
0,0 → 1,69
<!-- DEBUT FORM_NIVEAU -->
<script type="text/javascript">
function gestionBiblio() {
$('.nom').each(function () {
if ($(this).children('.plus').length == 0) {
html = $(this).html();
posCrochetGauche = html.indexOf('[');
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));
}
}
});
}
 
$(document).ready(function() {
$( "#radio" ).buttonset();
$('#eflore_niveau_submit').hide();
$(".zone-choix-niveau input").click(function() {
$('#eflore_niveau_submit').click();
});
gestionBiblio();
});
</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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/modules/recherche/squelettes/recherche_accueil.tpl.html
New file
0,0 → 1,13
<div id="bloc-recherche" class="importance1">
<h1><?=$i18n['titre-nom'];?></h1>
<?=$form_niveau;?>
<?=$form_nom;?>
<!-- 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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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://www.tela-botanica.org/sites/botanique/generique/images/graphisme/logo_tela_fond_vert.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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/modules/fiche/Fiche.php
New file
0,0 → 1,267
<?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['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();
}
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.7-duchartre-2014-04-14/modules/fiche/formateurs/Illustrations.php
New file
0,0 → 1,300
<?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);
// chemins
$this->donnees['base_url_widget_saisie'] = Config::get('base_url_widget_saisie');
$this->donnees['base_url_del'] = Config::get('base_url_del');
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();
$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']);
}
if (empty($this->donnees)) {
$this->donnees = $this->getPhoto('photoflora');
}
return $this->donnees;
}
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") {
$this->images->setApi(Eflore::API_EFLORE); // prêt à passer à API_DEL
} else {
$this->images->setApi(Eflore::API_EFLORE);
}
$images = $this->initialiserPhotos($projet);
$this->formaterListePhotos($projet, $images);
$this->formaterMetaPhotos($projet);
}
}
}
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) {
$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[''];
}
$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 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['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;
}
}
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 || $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');"
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.7-duchartre-2014-04-14/modules/fiche/formateurs/Nomenclature.php
New file
0,0 → 1,168
<?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['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');
$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.7-duchartre-2014-04-14/modules/fiche/formateurs/Bibliographie.php
New file
0,0 → 1,131
<?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->getFlores();
$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() {
$this->getFloresBloc();
$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['flores'] == array() && $this->donnees['references'] == array()) {
$this->donnees['wikini'] = $this->getWikini();
}
return $this->donnees;
}
// Récupération des données flores présentes dans le référentiel
private function getFlores() {
if (Config::get($this->referentiel.'.baseFloresRef') != "") {
$flores = $this->nomCourant->getNomRetenu()->get('flores');
$flores = explode(',', $flores);
$this->donnees['flores']['liste_flores'] = $this->remplacerCorrespondancesFlores($flores);
$this->meta->setProjet($this->referentiel);
$meta = $this->meta->getMetaDonnees();
$this->donnees['flores']['meta'] = $meta[0];
$this->donnees['flores']['meta']['url'] = $this->appUrls->obtenirUrlMetaDonnees($this->referentiel);
}
}
private function getFloresBloc() {
$flores = $this->nomCourant->getNomRetenu()->get('flores');
$flores = explode(',', $flores);
$flores = $this->remplacerCorrespondancesFlores($flores);
$this->donnees['flores'] = array_slice($flores, 0, 3);
$this->donnees['autresFlores'] = count($flores) - 3;
}
//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;
}
//TODO: faire une ontologie mais pas de tache prévue dans ce sprint
private function getCorrespondancesBiblio() {
$correspondance = array(
'1' => 'BONNIER & LAYENS, 1894. Tables synoptiques des plantes vasculaires de la flore de France.',
'2' => 'COSTE, 1899-1906. Flore illustrée France, (3 vol.).',
'3' => 'FOURNIER, 1934-1940. Quatre Flores de France.',
'3*' => 'FOURNIER, additions dans l\'édition de 1961.',
'4' => 'TUTIN & al., 1964-1980. Flora Europaea, (5 vol.).',
'4*' => 'Flora Europaea, édition 2 (Vol. 1), voir TUTIN & al. (1993), abrégée en FE2. L\'indication est surtout donnée quand la citation n\'a pas été faite dans 4 (supplémentaire ou modifiée).',
'5' => 'GUINOCHET & VILMORIN, 1973-1984. Flore de France, éd. C.N.R.S., (5 vol.).',
'6' => 'KERGUÉLEN, 1993. Liste synonymique de la flore de France.'
);
return $correspondance;
}
private function remplacerCorrespondancesFlores($flores) {
$correspondance_code_flores = $this->getCorrespondancesBiblio();
$flores_texte = array();
foreach($flores as $code_flore) {
$code_flore = trim($code_flore);
if(isset($correspondance_code_flores[$code_flore])) {
$flores_texte[] = $correspondance_code_flores[$code_flore];
}
}
return $flores_texte;
}
}
?>
/tags/v5.7-duchartre-2014-04-14/modules/fiche/formateurs/Repartition.php
New file
0,0 → 1,177
<?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 $tailleBloc = "190x178";
private $serviceChorodep = null;
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');
//TODO: démochir ce code
// Chargement des nn des synonymes pour obtenir une carte plus complète
$noms = $this->conteneur->getApiNoms();
$syns = $noms->getSynonymes($this->nomCourant->getNnr());
$nns_syns = array_keys($syns['resultat']);
$nns_syns[] = $this->nomCourant->getNnr();
$id = 'nn:'.implode(',', $nns_syns);
$this->cartes->setId($id);
$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') {
$syns = $this->conteneur->getApiNoms()->getSynonymes($this->nomCourant->getNnr());
$nns_syns = array_keys($syns['resultat']);
$nns_syns[] = $this->nomCourant->getNnr();
$donnees['chorodep'] = Cartes::getCarteUrlPng(Config::get($this->referentiel.'.baseRepartition'),
'nn:'.implode(',', $nns_syns),
'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');
//TODO: démochir ce code
// Chargement des nn des synonymes pour obtenir une carte plus complète
$noms = $this->conteneur->getApiNoms();
$syns = $noms->getSynonymes($this->nomCourant->getNnr());
$nns_syns = array_keys($syns['resultat']);
$nns_syns[] = $this->nomCourant->getNnr();
$id = 'nn:'.implode(',', $nns_syns);
$this->cartes->setId($id);
$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;
}
}
?>
/tags/v5.7-duchartre-2014-04-14/modules/fiche/formateurs/Synthese.php
New file
0,0 → 1,64
<?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();
$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);
$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.7-duchartre-2014-04-14/modules/fiche/formateurs/Description.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 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);
$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.nn:'.$this->nomCourant->getNnr());
$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']);
}
}
}
}
?>
/tags/v5.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/modules/fiche/squelettes/fiche_statut.tpl.html
New file
0,0 → 1,59
<div class="onglet_contenu" id="statut">
<h2>Statuts de protection</h2>
<?php if(!empty($statuts) && 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>
<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.7-duchartre-2014-04-14/modules/fiche/squelettes/fiche_entete.tpl.html
New file
0,0 → 1,21
<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($infos['referentiel']); ?>nt<?= $infos['num_tax']; ?>";
var urlPopup = "<?= Config::get('base_url_application_popup'); ?>";
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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/modules/fiche/squelettes/fiche_illustrations_organes.tpl.html
New file
0,0 → 1,74
<? 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-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['binaire.href']; ?>" />
</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 class="lien-image-cel" 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">(Contacter ...)</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.7-duchartre-2014-04-14/modules/fiche/squelettes/fiche_synthese_niveau1.tpl.html
New file
0,0 → 1,454
<!-- 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>Flores</h4>
<?php if ($bibliographie['flores'] == array()) { ?>
Aucune flore indiquée
<?php } else { ?>
<?php foreach ($bibliographie['flores'] as $flore) : ?>
<div> - <?= $flore; ?> </div>
<?php endforeach; ?>
<?php if($bibliographie['autresFlores'] > 0) { ?>
<a href="<?=$url;?>nomenclature" class="lien_ouverture_onglet_parent" id=alignement-droite>
et <?= htmlentities($bibliographie['autresFlores']) ?>
autre<?= ($bibliographie['autresFlores'] > 1) ? 's' : '' ?>
flore<?= ($bibliographie['autresFlores'] > 1) ? 's' : '' ?>
</a>
<?php } } ?><br />
<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="<?='Illustration de '.$nom_retenu.' '.$nom_vernaculaire;?>"
src="<?=$illustrations['imageUrl']?>" alt="Image de <?=$nom_retenu?> issue du cel, du site photoflora ou de la flore de Coste"
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="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="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.7-duchartre-2014-04-14/modules/fiche/squelettes/fiche_synthese_niveau2.tpl.html
New file
0,0 → 1,454
<!-- 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>Flores</h4>
<?php if ($bibliographie['flores'] == array()) { ?>
Aucune flore indiquée
<?php } else { ?>
<?php foreach ($bibliographie['flores'] as $flore) : ?>
<div> - <?= $flore; ?> </div>
<?php endforeach; ?>
<?php if($bibliographie['autresFlores'] > 0) { ?>
<a href="<?=$url;?>nomenclature" class="lien_ouverture_onglet_parent" id="alignement-droite">
et <?= htmlentities($bibliographie['autresFlores']) ?>
autre<?= ($bibliographie['autresFlores'] > 1) ? 's' : '' ?>
flore<?= ($bibliographie['autresFlores'] > 1) ? 's' : '' ?>
</a>
<?php } } ?><br />
<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="<?='Illustration de '.$nom_retenu.' '.$nom_vernaculaire;?>"
src="<?=$illustrations['imageUrl']?>" alt="Image de <?=$nom_retenu?> issue du cel, du site photoflora ou de la flore de Coste"
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="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="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.7-duchartre-2014-04-14/modules/fiche/squelettes/fiche_nomenclature.tpl.html
New file
0,0 → 1,224
<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 />
<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' : '' ?>">
<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') { ?>
<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">
<span class="nom<?= ($nom_selectionne == $synonyme['nom_sci']) ? ' 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 $num_nom_syn => $infos_flore) : ?>
<?php foreach ($infos_flore as $code => $flore) : ?>
<li class="item_nomenclature">
<div>
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>
<?php endforeach; ?>
<?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.7-duchartre-2014-04-14/modules/fiche/squelettes/fiche_synthese_niveau3.tpl.html
New file
0,0 → 1,449
<!-- 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>Flores</h4>
<?php if ($bibliographie['flores'] == array()) { ?>
Aucune flore indiquée
<?php } else { ?>
<?php foreach ($bibliographie['flores'] as $flore) : ?>
<div> - <?= $flore; ?> </div>
<?php endforeach; ?>
<?php if($bibliographie['autresFlores'] > 0) { ?>
<a href="<?=$url;?>nomenclature" class="lien_ouverture_onglet_parent" id="alignement-droite">
et <?= htmlentities($bibliographie['autresFlores']) ?>
autre<?= ($bibliographie['autresFlores'] > 1) ? 's' : '' ?>
flore<?= ($bibliographie['autresFlores'] > 1) ? 's' : '' ?>
</a>
<?php } } ?><br />
<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="<?='Illustration de '.$nom_retenu.' '.$nom_vernaculaire;?>"
src="<?=$illustrations['imageUrl']?>" alt="Image de <?=$nom_retenu?> issue du cel, du site photoflora ou de la flore de Coste"
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="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="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.7-duchartre-2014-04-14/modules/fiche/squelettes/fiche_accueil_niveau1.tpl.html
New file
0,0 → 1,62
<?= $entete; ?>
<div id="bloc-fiche" class="importance4">
<h1><span class="nomenclature"><?=$nom_retenu_html?></span>
<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>
<br/>
<?php if($nom_appele_html): ?>
<span class="redirige_depuis">Nom retenu du nom recherché <strong><?= $nom_appele_html ?></strong></span>
<br/>
<?php endif; ?>
<span class="vernaculaire"><?=$nom_vernaculaire;?></span></h1>
<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.7-duchartre-2014-04-14/modules/fiche/squelettes/fiche_accueil_niveau2.tpl.html
New file
0,0 → 1,62
<?= $entete; ?>
<div id="bloc-fiche" class="importance4">
<h1><span class="nomenclature"><?=$nom_retenu_html?></span>
<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>
<br/>
<?php if($nom_appele_html): ?>
<span class="redirige_depuis">Nom retenu du nom recherché <strong><?= $nom_appele_html ?></strong></span>
<br/>
<?php endif; ?>
<span class="vernaculaire"><?=$nom_vernaculaire;?></span></h1>
<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.7-duchartre-2014-04-14/modules/fiche/squelettes/fiche_accueil_niveau3.tpl.html
New file
0,0 → 1,62
<?= $entete; ?>
<div id="bloc-fiche" class="importance4">
<h1><span class="nomenclature"><?=$nom_retenu_html?></span>
<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>
<br/>
<?php if($nom_appele_html): ?>
<span class="redirige_depuis">Nom retenu du nom recherché <strong><?= $nom_appele_html ?></strong></span>
<br/>
<?php endif; ?>
<span class="vernaculaire"><?=$nom_vernaculaire;?></span></h1>
<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.7-duchartre-2014-04-14/modules/fiche/squelettes/fiche_repartition.tpl.html
New file
0,0 → 1,88
<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_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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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" href="<?= $url; ?>" >
<img src="<?= $url; ?>" alt="illustration de la flore 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-image-cel" href="<?= Config::get('base_url_application_popup'); ?>?module=popup-illustrations&action=fiche&referentiel=<?= $referentiel; ?>&id=<?= $image['id_image'] ?>">
<img title="<?= $image['id_image'] ?>" data-num-nom="<?= $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_del ?>?masque.referentiel=<?= $referentiel; ?>&masque.ns=<?= $nomComplet ?>#page_recherche_images~3"
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-image-cel" href="<?=Config::get('base_url_application_popup');?>?module=popup-illustrations&action=fiche&referentiel=<?= $referentiel; ?>&id=<?= $image['id_image'] ?>">
<img title="<?= $image['id_image'] ?>" data-num-nom="<?= $image['id_image'] ?>"
alt="Photographie n°<?= $image['id_image'] ?> du taxon <?= $image['observation']['determination.ns'] ?>"
src="<?= $image['binaire.href'] ?>" />
</a>
<? endif ?>
</li>
<? 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($caracteres) == false) : ?>
<span class="separator"></span>
<a class="acceder-outil-vert lien-externe" href="<?= $base_url_del ?>?masque.referentiel=<?= $referentiel; ?>&masque.ns=<?= $nomComplet ?>#page_recherche_images~1"
title="Participer au choix des photos d'organes">
Participer au choix
</a>
<? endif ?>
<br/><br/>
</div>
<br/>
<? endif ?>
 
<? if (isset($cel)) : ?>
<h2>Flora Data - Tout</h2>
 
<div id="illustrations-cel">
<?php if (isset($cel['images'])) : ?>
<ul class="liste-illustrations">
<?php foreach($cel['images'] as $id => $image) : ?>
<li><div>
<a class="lien-image-cel" href="<?=$image['urlDetailImg'];?>">
<img src="<?= $image['src']; ?>" alt="Photographie n°<?=$id;?> du taxon <?=$image['nomSci']?>" data-num-nom="<?=$id;?>" title="<?=$id;?>" />
</a>
<p>
<strong class="localisation"><?= $image['station']; ?></strong> - <strong class="date-creation"><?= $image['date']; ?></strong>
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="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="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" />
</div>
<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>
<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>
<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.7-duchartre-2014-04-14/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" 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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/.htaccess
New file
0,0 → 1,0
AddDefaultCharset UTF-8
/tags/v5.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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. Vérifiez que vous n'avez pas saisi le nom d'auteur."
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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/widget/modules/recherche
New file
Property changes:
Added: svn:ignore
+config.ini
/tags/v5.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/widget/index.php
New file
0,0 → 1,5
<?php
require 'Widget.php';
$widget = new Widget();
$widget->executer();
?>
/tags/v5.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/widget
New file
Property changes:
Added: svn:ignore
+widget.ini.php
/tags/v5.7-duchartre-2014-04-14/index_mobile.php
New file
0,0 → 1,12
<?php
// declare(encoding='UTF-8');
/** Inclusion du fichier principal de l'application*/
require_once 'eflore.php';
 
echo AppControleur::getContenuCorps();
echo AppControleur::getContenuPied();
 
// Débogage
echo AppControleur::getChrono();
echo AppControleur::getExceptions();
?>
/tags/v5.7-duchartre-2014-04-14/eflore_papyrus.php
New file
0,0 → 1,91
<?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());
}
 
// +--------------------------------------------------------------------------------------------------+
// 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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/metier/api_0.1/Textes.php
New file
0,0 → 1,54
<?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);
}
return $this->chargerDonnees($this->formaterUrl($tpl, $params));
}
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.7-duchartre-2014-04-14/metier/api_0.1/NomsVernaculaires.php
New file
0,0 → 1,68
<?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 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, 'langue' => 'fra');
$url = $this->formaterUrl($tpl, $params);
return $url;
}
 
private function getUrlRechercheDetermination($nom, $typeRech) {
$tpl = Config::get('nomsVernaRechercheDeterminationTpl');
$params = array('valeur' => $nom, 'type' => $typeRech, 'langue' => 'fra');
$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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/metier/api_0.1/Images.php
New file
0,0 → 1,298
<?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));
//echo "ORGANES <pre>" . print_r($infosImages0, true) . "</pre>";
//echo "TOUT <pre>" . print_r($infosImages1, true) . "</pre>";
$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'];
}
}
//echo "URLS <pre>" . print_r($urls, true) . "</pre>";
//exit;
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 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) {
$tpl = $this->obtenirSqueletteSelonApi('imagesResultatsDetermination');
$params = array('idsNoms' => implode(',', $idsNoms), 'referentiel' => Registre::get('parametres.referentiel'));
$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'));
return $this->formaterUrl($tpl, $params);
}
 
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);
$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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14/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.7-duchartre-2014-04-14
New file
Property changes:
Added: svn:ignore
+.buildpath
+.project
+.settings
+framework.php
Added: svn:mergeinfo
Merged /branches/v5.2-lasegue:r1183
Merged /trunk:r1287-1299
Merged /branches/v5.3-cordier:r1206