From 458fc0ed0c06ee9a23412a96bf3434fb9e6df43d Mon Sep 17 00:00:00 2001 From: Ludovic CHEVALIER Date: Fri, 12 Jul 2013 17:43:24 +0200 Subject: [PATCH] [PLUGINS] +agenda2.0 et calendrier_mini --- .../action/activer_agenda_rubrique.php | 33 ++ .../agenda_3_5/action/editer_evenement.php | 383 +++++++++++++++ .../agenda_3_5/action/supprimer_evenement.php | 27 + .../agenda_3_5/agenda_administrations.php | 109 +++++ www/plugins/agenda_3_5/agenda_autoriser.php | 146 ++++++ www/plugins/agenda_3_5/agenda_fonctions.php | 197 ++++++++ www/plugins/agenda_3_5/agenda_pipelines.php | 253 ++++++++++ .../agenda_3_5/base/agenda_evenements.php | 149 ++++++ www/plugins/agenda_3_5/css/spip.agenda.css | 36 ++ .../demo/agenda_calendrier_mini.html | 173 +++++++ .../demo/exemple_navigation_jours.html | 8 + .../demo/test/test_boucle_evenements.html | 9 + .../agenda_3_5/demo/test/testagenda.html | 36 ++ .../formulaires/configurer_agenda.html | 105 ++++ .../formulaires/editer_evenement.html | 113 +++++ .../formulaires/editer_evenement.php | 140 ++++++ .../formulaires/evenement_participants.html | 15 + .../formulaires/evenement_participants.php | 83 ++++ .../agenda_3_5/formulaires/migrer_agenda.html | 102 ++++ .../agenda_3_5/formulaires/migrer_agenda.php | 182 +++++++ .../formulaires/participer_evenement.html | 37 ++ .../formulaires/participer_evenement.php | 108 ++++ www/plugins/agenda_3_5/inc/agenda_filtres.php | 197 ++++++++ www/plugins/agenda_3_5/inc/date_gestion.php | 46 ++ .../agenda_3_5/inc/un-evenement-ical.html | 17 + .../javascript/jquery-ui.multidatespicker.js | 461 ++++++++++++++++++ www/plugins/agenda_3_5/lang/agenda.xml | 15 + www/plugins/agenda_3_5/lang/agenda_de.php | 157 ++++++ www/plugins/agenda_3_5/lang/agenda_en.php | 157 ++++++ www/plugins/agenda_3_5/lang/agenda_es.php | 157 ++++++ www/plugins/agenda_3_5/lang/agenda_fr.php | 155 ++++++ www/plugins/agenda_3_5/lang/agenda_nl.php | 60 +++ www/plugins/agenda_3_5/lang/agenda_sk.php | 157 ++++++ .../agenda_3_5/lang/configureragenda_fr.php | 30 ++ .../agenda_3_5/lang/migreragenda_fr.php | 35 ++ www/plugins/agenda_3_5/lang/paquet-agenda.xml | 12 + .../agenda_3_5/lang/paquet-agenda_en.php | 16 + .../agenda_3_5/lang/paquet-agenda_es.php | 16 + .../agenda_3_5/lang/paquet-agenda_fr.php | 14 + .../agenda_3_5/lang/paquet-agenda_sk.php | 16 + www/plugins/agenda_3_5/lang/paquet-albums.xml | 2 + .../agenda_3_5/modeles/evenement_vevent.html | 1 + www/plugins/agenda_3_5/paquet.xml | 49 ++ .../objets/contenu/article-evenements.html | 7 + .../prive/objets/contenu/evenement.html | 46 ++ .../prive/objets/infos/evenement.html | 33 ++ .../objets/liste/evenement_participants.html | 39 ++ .../prive/objets/liste/evenements-post.html | 11 + .../prive/objets/liste/evenements.html | 49 ++ .../contenu/agenda_inscriptions.html | 16 + .../squelettes/contenu/configurer_agenda.html | 9 + .../squelettes/contenu/evenement_edit.html | 32 ++ .../prive/squelettes/contenu/evenements.html | 16 + .../squelettes/extra/agenda_inscriptions.html | 23 + .../inclure/agenda-navigation-mois.html | 12 + .../squelettes/inclure/agenda-rubriques.html | 13 + .../navigation/agenda_inscriptions.html | 5 + .../squelettes/navigation/evenement.html | 14 + .../squelettes/navigation/evenements.html | 25 + .../prive/style_prive_plugin_agenda.html | 102 ++++ .../prive/themes/spip/images/agenda-16.png | Bin 0 -> 627 bytes .../prive/themes/spip/images/agenda-24.png | Bin 0 -> 1109 bytes .../prive/themes/spip/images/agenda-32.png | Bin 0 -> 1579 bytes .../themes/spip/images/agenda-add-16.png | Bin 0 -> 668 bytes .../themes/spip/images/agenda-add-24.png | Bin 0 -> 1116 bytes .../themes/spip/images/agenda-add-32.png | Bin 0 -> 1640 bytes .../themes/spip/images/agenda-del-16.png | Bin 0 -> 661 bytes .../themes/spip/images/agenda-del-24.png | Bin 0 -> 1128 bytes .../themes/spip/images/agenda-del-32.png | Bin 0 -> 1634 bytes .../themes/spip/images/agenda-edit-16.png | Bin 0 -> 722 bytes .../themes/spip/images/agenda-edit-24.png | Bin 0 -> 1284 bytes .../themes/spip/images/agenda-edit-32.png | Bin 0 -> 1834 bytes .../themes/spip/images/agenda-new-16.png | Bin 0 -> 739 bytes .../themes/spip/images/agenda-new-24.png | Bin 0 -> 1348 bytes .../themes/spip/images/agenda-new-32.png | Bin 0 -> 2006 bytes .../themes/spip/images/agenda-non-32.png | Bin 0 -> 1737 bytes .../prive/themes/spip/images/agenda-ok-32.png | Bin 0 -> 1729 bytes .../prive/themes/spip/images/evenement-16.png | Bin 0 -> 698 bytes .../prive/themes/spip/images/evenement-24.png | Bin 0 -> 1159 bytes .../prive/themes/spip/images/evenement-32.png | Bin 0 -> 1539 bytes .../themes/spip/images/evenement-add-16.png | Bin 0 -> 724 bytes .../themes/spip/images/evenement-add-24.png | Bin 0 -> 1222 bytes .../themes/spip/images/evenement-add-32.png | Bin 0 -> 1567 bytes .../themes/spip/images/evenement-del-16.png | Bin 0 -> 731 bytes .../themes/spip/images/evenement-del-24.png | Bin 0 -> 1235 bytes .../themes/spip/images/evenement-del-32.png | Bin 0 -> 1577 bytes .../themes/spip/images/evenement-edit-16.png | Bin 0 -> 783 bytes .../themes/spip/images/evenement-edit-24.png | Bin 0 -> 1357 bytes .../themes/spip/images/evenement-edit-32.png | Bin 0 -> 1834 bytes .../themes/spip/images/evenement-new-16.png | Bin 0 -> 782 bytes .../themes/spip/images/evenement-new-24.png | Bin 0 -> 1376 bytes .../themes/spip/images/evenement-new-32.png | Bin 0 -> 1893 bytes .../themes/spip/images/repetition-16.png | Bin 0 -> 822 bytes .../themes/spip/images/repetition-24.png | Bin 0 -> 1706 bytes .../themes/spip/images/repetition-32.png | Bin 0 -> 2077 bytes .../transmettre/evenement_participants.html | 15 + .../transmettre/evenements_participants.html | 10 + www/plugins/agenda_3_5/public/agenda.php | 397 +++++++++++++++ .../agenda_3_5/squelettes/agenda-ical.html | 12 + .../agenda_3_5/squelettes/agenda-rss.html | 30 ++ .../agenda_3_5/squelettes/agenda-zpip.html | 1 + .../agenda_3_5/squelettes/aside/agenda.html | 16 + .../squelettes/breadcrumb/agenda.html | 4 + .../calendrier_mini_event.json.html | 18 + .../calendrier_mini_event.json_fonctions.php | 12 + .../agenda_3_5/squelettes/content/agenda.html | 21 + .../squelettes/content/article-evenement.html | 13 + .../squelettes/content/evenement.html | 13 + .../agenda_3_5/squelettes/content/jour.html | 35 ++ .../squelettes/content/rubrique-agenda.html | 24 + .../squelettes/contenu/page-agenda.html | 17 + .../squelettes/contenu/page-jour.html | 18 + .../agenda_3_5/squelettes/extra/agenda.html | 16 + .../squelettes/extra/evenement.html | 8 + .../agenda_3_5/squelettes/extra/jour.html | 8 + .../squelettes/extra/rubrique-agenda.html | 8 + .../agenda_3_5/squelettes/extra1/agenda.html | 16 + .../squelettes/extra1/evenement.html | 8 + .../agenda_3_5/squelettes/extra1/jour.html | 8 + .../squelettes/extra1/rubrique-agenda.html | 8 + .../agenda_3_5/squelettes/ical-agenda.html | 1 + .../squelettes/inc-rss-item-evenement.html | 29 ++ .../agenda-evenements-meme-article.html | 12 + .../squelettes/inclure/agenda-liste.html | 49 ++ .../squelettes/inclure/resume/evenement.html | 20 + .../squelettes/navigation/page-agenda.html | 22 + .../style_public_plugin_agenda.html | 26 + www/plugins/agenda_3_5/svn.revision | 10 + .../balise/calendrier_mini.php | 102 ++++ .../calendrier_mini.json.html | 6 + .../calendrier_mini.json_fonctions.php | 19 + .../calendriermini_fonctions.php | 57 +++ .../css/img/month_next.png | Bin 0 -> 288 bytes .../css/img/month_prev.png | Bin 0 -> 287 bytes .../css/img/month_prev_next-32x16.png | Bin 0 -> 531 bytes .../calendrier_mini-2.0/css/minical.css | 56 +++ .../demos/minical_demo.html | 91 ++++ .../formulaires/calendrier_mini.html | 57 +++ .../configurer_calendriermini.html | 79 +++ .../javascript/calendrier_mini.js.html | 208 ++++++++ .../javascript/jquery-ui.multidatespicker.js | 460 +++++++++++++++++ .../calendrier_mini-2.0/lang/minical.xml | 13 + .../calendrier_mini-2.0/lang/minical_ar.php | 18 + .../calendrier_mini-2.0/lang/minical_ca.php | 27 + .../calendrier_mini-2.0/lang/minical_de.php | 27 + .../calendrier_mini-2.0/lang/minical_en.php | 33 ++ .../calendrier_mini-2.0/lang/minical_es.php | 33 ++ .../calendrier_mini-2.0/lang/minical_fa.php | 18 + .../calendrier_mini-2.0/lang/minical_fr.php | 31 ++ .../calendrier_mini-2.0/lang/minical_it.php | 27 + .../calendrier_mini-2.0/lang/minical_sk.php | 33 ++ .../calendrier_mini-2.0/lang/minical_sl.php | 18 + .../lang/paquet-calendriermini.xml | 15 + .../lang/paquet-calendriermini_de.php | 17 + .../lang/paquet-calendriermini_en.php | 17 + .../lang/paquet-calendriermini_es.php | 17 + .../lang/paquet-calendriermini_fr.php | 15 + .../lang/paquet-calendriermini_sk.php | 18 + .../calendrier_mini-2.0/minical-32.png | Bin 0 -> 4911 bytes .../modeles/archives_mensuelles.html | 16 + .../modeles/rubrique_calendrier.html | 1 + .../modeles/select_archives_mensuelles.html | 26 + www/plugins/calendrier_mini-2.0/paquet.xml | 20 + .../contenu/configurer_calendriermini.html | 4 + www/plugins/calendrier_mini-2.0/svn.revision | 10 + www/plugins/skel_lhc/plugin.xml | 16 +- 166 files changed, 7169 insertions(+), 7 deletions(-) create mode 100644 www/plugins/agenda_3_5/action/activer_agenda_rubrique.php create mode 100644 www/plugins/agenda_3_5/action/editer_evenement.php create mode 100644 www/plugins/agenda_3_5/action/supprimer_evenement.php create mode 100644 www/plugins/agenda_3_5/agenda_administrations.php create mode 100644 www/plugins/agenda_3_5/agenda_autoriser.php create mode 100644 www/plugins/agenda_3_5/agenda_fonctions.php create mode 100644 www/plugins/agenda_3_5/agenda_pipelines.php create mode 100644 www/plugins/agenda_3_5/base/agenda_evenements.php create mode 100644 www/plugins/agenda_3_5/css/spip.agenda.css create mode 100644 www/plugins/agenda_3_5/demo/agenda_calendrier_mini.html create mode 100644 www/plugins/agenda_3_5/demo/exemple_navigation_jours.html create mode 100644 www/plugins/agenda_3_5/demo/test/test_boucle_evenements.html create mode 100644 www/plugins/agenda_3_5/demo/test/testagenda.html create mode 100644 www/plugins/agenda_3_5/formulaires/configurer_agenda.html create mode 100644 www/plugins/agenda_3_5/formulaires/editer_evenement.html create mode 100644 www/plugins/agenda_3_5/formulaires/editer_evenement.php create mode 100644 www/plugins/agenda_3_5/formulaires/evenement_participants.html create mode 100644 www/plugins/agenda_3_5/formulaires/evenement_participants.php create mode 100644 www/plugins/agenda_3_5/formulaires/migrer_agenda.html create mode 100644 www/plugins/agenda_3_5/formulaires/migrer_agenda.php create mode 100644 www/plugins/agenda_3_5/formulaires/participer_evenement.html create mode 100644 www/plugins/agenda_3_5/formulaires/participer_evenement.php create mode 100644 www/plugins/agenda_3_5/inc/agenda_filtres.php create mode 100644 www/plugins/agenda_3_5/inc/date_gestion.php create mode 100644 www/plugins/agenda_3_5/inc/un-evenement-ical.html create mode 100755 www/plugins/agenda_3_5/javascript/jquery-ui.multidatespicker.js create mode 100644 www/plugins/agenda_3_5/lang/agenda.xml create mode 100644 www/plugins/agenda_3_5/lang/agenda_de.php create mode 100644 www/plugins/agenda_3_5/lang/agenda_en.php create mode 100644 www/plugins/agenda_3_5/lang/agenda_es.php create mode 100644 www/plugins/agenda_3_5/lang/agenda_fr.php create mode 100644 www/plugins/agenda_3_5/lang/agenda_nl.php create mode 100644 www/plugins/agenda_3_5/lang/agenda_sk.php create mode 100644 www/plugins/agenda_3_5/lang/configureragenda_fr.php create mode 100644 www/plugins/agenda_3_5/lang/migreragenda_fr.php create mode 100644 www/plugins/agenda_3_5/lang/paquet-agenda.xml create mode 100644 www/plugins/agenda_3_5/lang/paquet-agenda_en.php create mode 100644 www/plugins/agenda_3_5/lang/paquet-agenda_es.php create mode 100644 www/plugins/agenda_3_5/lang/paquet-agenda_fr.php create mode 100644 www/plugins/agenda_3_5/lang/paquet-agenda_sk.php create mode 100644 www/plugins/agenda_3_5/lang/paquet-albums.xml create mode 100644 www/plugins/agenda_3_5/modeles/evenement_vevent.html create mode 100644 www/plugins/agenda_3_5/paquet.xml create mode 100644 www/plugins/agenda_3_5/prive/objets/contenu/article-evenements.html create mode 100644 www/plugins/agenda_3_5/prive/objets/contenu/evenement.html create mode 100644 www/plugins/agenda_3_5/prive/objets/infos/evenement.html create mode 100755 www/plugins/agenda_3_5/prive/objets/liste/evenement_participants.html create mode 100644 www/plugins/agenda_3_5/prive/objets/liste/evenements-post.html create mode 100644 www/plugins/agenda_3_5/prive/objets/liste/evenements.html create mode 100755 www/plugins/agenda_3_5/prive/squelettes/contenu/agenda_inscriptions.html create mode 100644 www/plugins/agenda_3_5/prive/squelettes/contenu/configurer_agenda.html create mode 100644 www/plugins/agenda_3_5/prive/squelettes/contenu/evenement_edit.html create mode 100644 www/plugins/agenda_3_5/prive/squelettes/contenu/evenements.html create mode 100644 www/plugins/agenda_3_5/prive/squelettes/extra/agenda_inscriptions.html create mode 100644 www/plugins/agenda_3_5/prive/squelettes/inclure/agenda-navigation-mois.html create mode 100644 www/plugins/agenda_3_5/prive/squelettes/inclure/agenda-rubriques.html create mode 100755 www/plugins/agenda_3_5/prive/squelettes/navigation/agenda_inscriptions.html create mode 100644 www/plugins/agenda_3_5/prive/squelettes/navigation/evenement.html create mode 100644 www/plugins/agenda_3_5/prive/squelettes/navigation/evenements.html create mode 100644 www/plugins/agenda_3_5/prive/style_prive_plugin_agenda.html create mode 100644 www/plugins/agenda_3_5/prive/themes/spip/images/agenda-16.png create mode 100644 www/plugins/agenda_3_5/prive/themes/spip/images/agenda-24.png create mode 100644 www/plugins/agenda_3_5/prive/themes/spip/images/agenda-32.png create mode 100644 www/plugins/agenda_3_5/prive/themes/spip/images/agenda-add-16.png create mode 100644 www/plugins/agenda_3_5/prive/themes/spip/images/agenda-add-24.png create mode 100644 www/plugins/agenda_3_5/prive/themes/spip/images/agenda-add-32.png create mode 100644 www/plugins/agenda_3_5/prive/themes/spip/images/agenda-del-16.png create mode 100644 www/plugins/agenda_3_5/prive/themes/spip/images/agenda-del-24.png create mode 100644 www/plugins/agenda_3_5/prive/themes/spip/images/agenda-del-32.png create mode 100644 www/plugins/agenda_3_5/prive/themes/spip/images/agenda-edit-16.png create mode 100644 www/plugins/agenda_3_5/prive/themes/spip/images/agenda-edit-24.png create mode 100644 www/plugins/agenda_3_5/prive/themes/spip/images/agenda-edit-32.png create mode 100644 www/plugins/agenda_3_5/prive/themes/spip/images/agenda-new-16.png create mode 100644 www/plugins/agenda_3_5/prive/themes/spip/images/agenda-new-24.png create mode 100644 www/plugins/agenda_3_5/prive/themes/spip/images/agenda-new-32.png create mode 100644 www/plugins/agenda_3_5/prive/themes/spip/images/agenda-non-32.png create mode 100644 www/plugins/agenda_3_5/prive/themes/spip/images/agenda-ok-32.png create mode 100644 www/plugins/agenda_3_5/prive/themes/spip/images/evenement-16.png create mode 100644 www/plugins/agenda_3_5/prive/themes/spip/images/evenement-24.png create mode 100644 www/plugins/agenda_3_5/prive/themes/spip/images/evenement-32.png create mode 100644 www/plugins/agenda_3_5/prive/themes/spip/images/evenement-add-16.png create mode 100644 www/plugins/agenda_3_5/prive/themes/spip/images/evenement-add-24.png create mode 100644 www/plugins/agenda_3_5/prive/themes/spip/images/evenement-add-32.png create mode 100644 www/plugins/agenda_3_5/prive/themes/spip/images/evenement-del-16.png create mode 100644 www/plugins/agenda_3_5/prive/themes/spip/images/evenement-del-24.png create mode 100644 www/plugins/agenda_3_5/prive/themes/spip/images/evenement-del-32.png create mode 100644 www/plugins/agenda_3_5/prive/themes/spip/images/evenement-edit-16.png create mode 100644 www/plugins/agenda_3_5/prive/themes/spip/images/evenement-edit-24.png create mode 100644 www/plugins/agenda_3_5/prive/themes/spip/images/evenement-edit-32.png create mode 100644 www/plugins/agenda_3_5/prive/themes/spip/images/evenement-new-16.png create mode 100644 www/plugins/agenda_3_5/prive/themes/spip/images/evenement-new-24.png create mode 100644 www/plugins/agenda_3_5/prive/themes/spip/images/evenement-new-32.png create mode 100644 www/plugins/agenda_3_5/prive/themes/spip/images/repetition-16.png create mode 100644 www/plugins/agenda_3_5/prive/themes/spip/images/repetition-24.png create mode 100644 www/plugins/agenda_3_5/prive/themes/spip/images/repetition-32.png create mode 100755 www/plugins/agenda_3_5/prive/transmettre/evenement_participants.html create mode 100755 www/plugins/agenda_3_5/prive/transmettre/evenements_participants.html create mode 100644 www/plugins/agenda_3_5/public/agenda.php create mode 100644 www/plugins/agenda_3_5/squelettes/agenda-ical.html create mode 100644 www/plugins/agenda_3_5/squelettes/agenda-rss.html create mode 100644 www/plugins/agenda_3_5/squelettes/agenda-zpip.html create mode 100644 www/plugins/agenda_3_5/squelettes/aside/agenda.html create mode 100644 www/plugins/agenda_3_5/squelettes/breadcrumb/agenda.html create mode 100644 www/plugins/agenda_3_5/squelettes/calendrier_mini_event.json.html create mode 100644 www/plugins/agenda_3_5/squelettes/calendrier_mini_event.json_fonctions.php create mode 100644 www/plugins/agenda_3_5/squelettes/content/agenda.html create mode 100644 www/plugins/agenda_3_5/squelettes/content/article-evenement.html create mode 100644 www/plugins/agenda_3_5/squelettes/content/evenement.html create mode 100644 www/plugins/agenda_3_5/squelettes/content/jour.html create mode 100644 www/plugins/agenda_3_5/squelettes/content/rubrique-agenda.html create mode 100644 www/plugins/agenda_3_5/squelettes/contenu/page-agenda.html create mode 100644 www/plugins/agenda_3_5/squelettes/contenu/page-jour.html create mode 100644 www/plugins/agenda_3_5/squelettes/extra/agenda.html create mode 100644 www/plugins/agenda_3_5/squelettes/extra/evenement.html create mode 100644 www/plugins/agenda_3_5/squelettes/extra/jour.html create mode 100644 www/plugins/agenda_3_5/squelettes/extra/rubrique-agenda.html create mode 100644 www/plugins/agenda_3_5/squelettes/extra1/agenda.html create mode 100644 www/plugins/agenda_3_5/squelettes/extra1/evenement.html create mode 100644 www/plugins/agenda_3_5/squelettes/extra1/jour.html create mode 100644 www/plugins/agenda_3_5/squelettes/extra1/rubrique-agenda.html create mode 100644 www/plugins/agenda_3_5/squelettes/ical-agenda.html create mode 100644 www/plugins/agenda_3_5/squelettes/inc-rss-item-evenement.html create mode 100644 www/plugins/agenda_3_5/squelettes/inclure/agenda-evenements-meme-article.html create mode 100644 www/plugins/agenda_3_5/squelettes/inclure/agenda-liste.html create mode 100644 www/plugins/agenda_3_5/squelettes/inclure/resume/evenement.html create mode 100644 www/plugins/agenda_3_5/squelettes/navigation/page-agenda.html create mode 100644 www/plugins/agenda_3_5/squelettes/style_public_plugin_agenda.html create mode 100644 www/plugins/agenda_3_5/svn.revision create mode 100644 www/plugins/calendrier_mini-2.0/balise/calendrier_mini.php create mode 100644 www/plugins/calendrier_mini-2.0/calendrier_mini.json.html create mode 100644 www/plugins/calendrier_mini-2.0/calendrier_mini.json_fonctions.php create mode 100644 www/plugins/calendrier_mini-2.0/calendriermini_fonctions.php create mode 100644 www/plugins/calendrier_mini-2.0/css/img/month_next.png create mode 100644 www/plugins/calendrier_mini-2.0/css/img/month_prev.png create mode 100644 www/plugins/calendrier_mini-2.0/css/img/month_prev_next-32x16.png create mode 100644 www/plugins/calendrier_mini-2.0/css/minical.css create mode 100644 www/plugins/calendrier_mini-2.0/demos/minical_demo.html create mode 100644 www/plugins/calendrier_mini-2.0/formulaires/calendrier_mini.html create mode 100644 www/plugins/calendrier_mini-2.0/formulaires/configurer_calendriermini.html create mode 100644 www/plugins/calendrier_mini-2.0/javascript/calendrier_mini.js.html create mode 100755 www/plugins/calendrier_mini-2.0/javascript/jquery-ui.multidatespicker.js create mode 100644 www/plugins/calendrier_mini-2.0/lang/minical.xml create mode 100644 www/plugins/calendrier_mini-2.0/lang/minical_ar.php create mode 100644 www/plugins/calendrier_mini-2.0/lang/minical_ca.php create mode 100644 www/plugins/calendrier_mini-2.0/lang/minical_de.php create mode 100644 www/plugins/calendrier_mini-2.0/lang/minical_en.php create mode 100644 www/plugins/calendrier_mini-2.0/lang/minical_es.php create mode 100644 www/plugins/calendrier_mini-2.0/lang/minical_fa.php create mode 100644 www/plugins/calendrier_mini-2.0/lang/minical_fr.php create mode 100644 www/plugins/calendrier_mini-2.0/lang/minical_it.php create mode 100644 www/plugins/calendrier_mini-2.0/lang/minical_sk.php create mode 100644 www/plugins/calendrier_mini-2.0/lang/minical_sl.php create mode 100644 www/plugins/calendrier_mini-2.0/lang/paquet-calendriermini.xml create mode 100644 www/plugins/calendrier_mini-2.0/lang/paquet-calendriermini_de.php create mode 100644 www/plugins/calendrier_mini-2.0/lang/paquet-calendriermini_en.php create mode 100644 www/plugins/calendrier_mini-2.0/lang/paquet-calendriermini_es.php create mode 100644 www/plugins/calendrier_mini-2.0/lang/paquet-calendriermini_fr.php create mode 100644 www/plugins/calendrier_mini-2.0/lang/paquet-calendriermini_sk.php create mode 100644 www/plugins/calendrier_mini-2.0/minical-32.png create mode 100644 www/plugins/calendrier_mini-2.0/modeles/archives_mensuelles.html create mode 100644 www/plugins/calendrier_mini-2.0/modeles/rubrique_calendrier.html create mode 100644 www/plugins/calendrier_mini-2.0/modeles/select_archives_mensuelles.html create mode 100644 www/plugins/calendrier_mini-2.0/paquet.xml create mode 100644 www/plugins/calendrier_mini-2.0/prive/squelettes/contenu/configurer_calendriermini.html create mode 100644 www/plugins/calendrier_mini-2.0/svn.revision diff --git a/www/plugins/agenda_3_5/action/activer_agenda_rubrique.php b/www/plugins/agenda_3_5/action/activer_agenda_rubrique.php new file mode 100644 index 00000000..0fb08c76 --- /dev/null +++ b/www/plugins/agenda_3_5/action/activer_agenda_rubrique.php @@ -0,0 +1,33 @@ +0) + sql_updateq('spip_rubriques',array('agenda'=>1),'id_rubrique='.intval($arg)); + else + sql_updateq('spip_rubriques',array('agenda'=>0),'id_rubrique='.(-intval($arg))); + } +} + +?> diff --git a/www/plugins/agenda_3_5/action/editer_evenement.php b/www/plugins/agenda_3_5/action/editer_evenement.php new file mode 100644 index 00000000..d192815f --- /dev/null +++ b/www/plugins/agenda_3_5/action/editer_evenement.php @@ -0,0 +1,383 @@ +intval($id_evenement_source), + 'id_article'=>intval($id_article), + 'statut' => 'prop', + ); + + // Envoyer aux plugins + $champs = pipeline('pre_insertion', + array( + 'args' => array( + 'table' => 'spip_evenements', + ), + 'data' => $champs + ) + ); + + // nouvel evenement + $id_evenement = sql_insertq("spip_evenements", $champs); + + pipeline('post_insertion', + array( + 'args' => array( + 'table' => 'spip_evenements', + 'id_objet' => $id_evenement + ), + 'data' => $champs + ) + ); + + if (!$id_evenement){ + spip_log("agenda action formulaire evenement : impossible d'ajouter un evenement",'agenda'); + return false; + } + return $id_evenement; +} + +/** + * Modifier un evenement existant + * + * @param int $id_evenement + * @param array $set + * @return bool|string + */ +function evenement_modifier($id_evenement, $set=null){ + + include_spip('inc/modifier'); + include_spip('inc/filtres'); + $c = collecter_requests( + // white list + objet_info('evenement','champs_editables'), + // black list + array('statut','id_article'), + // donnees eventuellement fournies + $set + ); + + // Si l'evenement est publie, invalider les caches et demander sa reindexation + $t = sql_getfetsel("statut", "spip_evenements", "id_evenement=".intval($id_evenement)); + $invalideur = $indexation = false; + if ($t == 'publie') { + $invalideur = "id='evenement/$id_evenement'"; + $indexation = true; + } + + if ($err = objet_modifier_champs('evenement', $id_evenement, + array( + 'nonvide' => array('titre' => _T('info_nouvel_evenement')." "._T('info_numero_abbreviation').$id_evenement), + 'invalideur' => $invalideur, + 'indexation' => $indexation, + ), + $c)) + return $err; + + if (!is_null($repetitions = _request('repetitions', $set))) + agenda_action_revision_evenement_repetitions($id_evenement, $repetitions); + + // Modification de statut, changement de parent ? + $c = collecter_requests(array('statut', 'id_parent'), array(), $set); + $err = evenement_instituer($id_evenement, $c); + + return $err; +} + + +function agenda_action_revision_evenement_repetitions($id_evenement, $repetitions=""){ + include_spip('inc/filtres'); + $repetitions = preg_split(",[^0-9\-\/],",$repetitions); + // gestion des repetitions + $rep = array(); + foreach($repetitions as $date){ + if (strlen($date)){ + $date = recup_date($date); + if ($date=mktime(0,0,0,$date[1],$date[2],$date[0])) + $rep[] = $date; + } + } + agenda_action_update_repetitions($id_evenement, $rep); +} + +function agenda_action_update_repetitions($id_evenement, $repetitions){ + // evenement source + if ($row = sql_fetsel("*", "spip_evenements","id_evenement=".intval($id_evenement))){ + // Si ce n'est pas un événement source, on n'a rien à faire ici + if ($row['id_evenement_source'] != 0){ return; } + + // On ne garde que les données correctes pour une modification + $c = collecter_requests( + // white list + objet_info('evenement','champs_editables'), + // black list + array('id_evenement', 'id_evenement_source'), + // donnees fournies + $row + ); + + // Savoir si la source était publiée ou pas + $publie = ($row['statut'] == 'publie'); + + // On calcule la durée en secondes de l'événement source pour la reporter telle quelle aux répétitions + $date_debut = strtotime($row['date_debut']); + $date_fin = strtotime($row['date_fin']); + $duree = $date_fin - $date_debut; + + $repetitions_updated = array(); + // mettre a jour toutes les repetitions deja existantes ou les supprimer si plus lieu + $res = sql_select("id_evenement,date_debut","spip_evenements","id_evenement_source=".intval($id_evenement)); + while ($row = sql_fetch($res)){ + $date = strtotime(date('Y-m-d', strtotime($row['date_debut']))); + if (in_array($date, $repetitions)){ + // Cette répétition existe déjà, on la met à jour + $repetitions_updated[] = $date; + + // On calcule les nouvelles dates/heures en reportant la durée de la source + $update_date_debut = date('Y-m-d', $date).' '.date('H:i:s', $date_debut); + $update_date_fin = date('Y-m-d H:i:s', strtotime($update_date_debut)+$duree); + + // Seules les dates sont changées dans les champs de la source + // TODO : prendre en charge la mise a jour uniquement si conforme a l'original + $c['date_debut'] = $update_date_debut; + $c['date_fin'] = $update_date_fin; + + // mettre a jour l'evenement + sql_updateq( + 'spip_evenements', + $c, + 'id_evenement = '.$row['id_evenement'] + ); + } + else { + // il est supprime + sql_delete("spip_evenements","id_evenement=".$row['id_evenement']); + } + } + + // regarder les repetitions a ajouter + foreach($repetitions as $date){ + if (!in_array($date, $repetitions_updated)){ + // On calcule les dates/heures en reportant la durée de la source + $update_date_debut = date('Y-m-d', $date)." ".date('H:i:s', $date_debut); + $update_date_fin = date('Y-m-d H:i:s', strtotime($update_date_debut)+$duree); + + // Seules les dates sont changées dans les champs de la source + $c['date_debut'] = $update_date_debut; + $c['date_fin'] = $update_date_fin; + + // On crée la nouvelle répétition + if ($id_evenement_new = agenda_action_insert_evenement($c['id_article'], $id_evenement)) { + // Si c'est bon, on ajoute tous les champs + sql_updateq( + 'spip_evenements', + $c, + 'id_evenement = '.$id_evenement_new + ); + + // Pour les créations il ne faut pas oublier de dupliquer les liens + // En effet, sinon les documents insérés avant la création (0-id_auteur) ne seront pas dupliqués + include_spip('action/editer_liens'); + objet_dupliquer_liens('evenement', $id_evenement, $id_evenement_new); + } + } + } + } +} + +/** + * Instituer un evenement + * + * @param int $id_evenement + * @param array $c + * @return bool|string + */ +function evenement_instituer($id_evenement, $c) { + + include_spip('inc/autoriser'); + include_spip('inc/modifier'); + + $row = sql_fetsel("id_article, statut", "spip_evenements", "id_evenement=".intval($id_evenement)); + $id_parent = $id_parent_ancien = $row['id_article']; + $statut = $statut_ancien = $row['statut']; + + $champs = array(); + + if (!autoriser('modifier', 'article', $id_parent) + OR (isset($c['id_parent']) AND !autoriser('modifier', 'article', $c['id_parent']))){ + spip_log("editer_evenement $id_evenement refus " . join(' ', $c)); + return false; + } + + // Verifier que l'article demande existe et est different + // de l'article actuel + if ($c['id_parent'] + AND $c['id_parent'] != $id_parent + AND (sql_countsel("spip_articles", "id_article=".intval($c['id_parent'])))) { + $id_parent = $champs['id_article'] = $c['id_parent']; + } + + $sa = sql_getfetsel('statut','spip_articles','id_article='.intval($id_parent)); + if ($id_parent + AND ( + $id_parent!==$id_parent_ancien OR $statut=='0' + )){ + switch($sa){ + case 'publie': + // statut par defaut si besoin + if ($statut=='0') + $champs['statut'] = $statut = 'publie'; + break; + case 'poubelle': + // si article a la poubelle, evenement aussi + $champs['statut'] = $statut = 'poubelle'; + break; + default: + // pas de publie ni 0 si article pas publie + if (in_array($statut,array('publie','0'))) + $champs['statut'] = $statut = 'prop'; + break; + } + } + + // si pas d'article lie, et statut par defaut + // on met en propose + if ($statut=='0') + $champs['statut'] = $statut = 'prop'; + + if (isset($c['statut']) + AND $s = $c['statut'] + AND $s != $statut) { + // pour instituer un evenement il faut avoir le droit d'instituer l'article associe avec le meme statut + if (autoriser('instituer', 'article', $id_parent, null, array('statut'=>$s)) + AND ($sa=='publie' OR $s!=='publie')) + $champs['statut'] = $statut = $s; + else + spip_log("editer_evenement $id_evenement refus " . join(' ', $c)); + } + + // Envoyer aux plugins + $champs = pipeline('pre_edition', + array( + 'args' => array( + 'table' => 'spip_evenements', + 'action'=>'instituer', + 'id_objet' => $id_evenement, + 'id_parent_ancien' => $id_parent_ancien, + 'statut_ancien' => $statut_ancien, + ), + 'data' => $champs + ) + ); + + if (!count($champs)) return; + + // Envoyer les modifs sur l'evenement et toutes ses repetitons + $ids = array_map('reset', sql_allfetsel('id_evenement', 'spip_evenements', 'id_evenement_source='.intval($id_evenement))); + $ids[] = intval($id_evenement); + sql_updateq('spip_evenements', $champs, sql_in('id_evenement', $ids)); + + // Invalider les caches + include_spip('inc/invalideur'); + suivre_invalideur("id='id_article/$id_parent_ancien'"); + suivre_invalideur("id='id_article/$id_parent'"); + + // Pipeline + pipeline('post_edition', + array( + 'args' => array( + 'table' => 'spip_evenements', + 'action'=>'instituer', + 'id_objet' => $id_evenement, + 'id_parent_ancien' => $id_parent_ancien, + 'statut_ancien' => $statut_ancien, + ), + 'data' => $champs + ) + ); + + // Notifications + if ($notifications = charger_fonction('notifications', 'inc')) { + $notifications('instituerevenement', $id_evenement, + array('id_parent' => $id_parent, 'statut' => $statut, 'id_parent_ancien' => $id_parent, 'statut_ancien' => $statut_ancien) + ); + } + + return ''; // pas d'erreur +} + +/* +function agenda_action_supprime_repetitions($supp_evenement){ + $res = sql_select("id_evenement", "spip_evenements", "id_evenement_source=".intval($supp_evenement)); + while ($row = sql_fetch($res)){ + $id_evenement = $row['id_evenement']; + sql_delete("spip_evenements", "id_evenement=".intval($id_evenement)); + } +} +*/ +/* +function agenda_action_supprime_evenement($id_article,$supp_evenement){ + $id_evenement = sql_getfetsel("id_evenement", "spip_evenements", array( + "id_article=" . intval($id_article), + "id_evenement=" . intval($supp_evenement))); + if (intval($id_evenement) AND $id_evenement == $supp_evenement){ + sql_delete("spip_evenements", "id_evenement=".intval($id_evenement)); + agenda_action_supprime_repetitions($id_evenement); + } + include_spip('inc/invalideur'); + suivre_invalideur("article/$id_article"); + $id_evenement = 0; + return $id_evenement; +}*/ + + +function agenda_action_insert_evenement($id_article,$id_evenement_source = 0){return evenement_inserer($id_article,$id_evenement_source);} +function action_evenement_set($id_evenement, $set=null){return evenement_modifier($id_evenement, $set);} +function agenda_action_instituer_evenement($id_evenement, $c) {return evenement_instituer($id_evenement,$c);} +?> diff --git a/www/plugins/agenda_3_5/action/supprimer_evenement.php b/www/plugins/agenda_3_5/action/supprimer_evenement.php new file mode 100644 index 00000000..dc0b8c98 --- /dev/null +++ b/www/plugins/agenda_3_5/action/supprimer_evenement.php @@ -0,0 +1,27 @@ +$id_article))){ + include_spip("action/editer_evenement"); + evenement_modifier($id_evenement,array('statut'=>'poubelle')); + } +} + +?> \ No newline at end of file diff --git a/www/plugins/agenda_3_5/agenda_administrations.php b/www/plugins/agenda_3_5/agenda_administrations.php new file mode 100644 index 00000000..895beed1 --- /dev/null +++ b/www/plugins/agenda_3_5/agenda_administrations.php @@ -0,0 +1,109 @@ +"concat(tables_liees,'evenements,')"), "evenements='oui'"), + array('sql_alter',"TABLE spip_groupes_mots DROP evenements"), + ); + + $maj['0.20'] = array( + array('sql_alter',"TABLE spip_rubriques ADD agenda tinyint(1) DEFAULT 0 NOT NULL"), + ); + + $maj['0.21'] = array( + array('sql_alter',"TABLE spip_evenements ADD adresse text NOT NULL"), + array('sql_alter',"TABLE spip_evenements ADD inscription text NOT NULL"), + array('sql_alter',"TABLE spip_evenements ADD places text NOT NULL"), + ); + + $maj['0.22'] = array( + array('maj_tables',array('spip_evenements_participants')), + ); + + $maj['0.23'] = array( + array('sql_alter',"TABLE spip_evenements CHANGE titre titre text NOT NULL DEFAULT ''"), + array('sql_alter',"TABLE spip_evenements CHANGE descriptif descriptif text NOT NULL DEFAULT ''"), + array('sql_alter',"TABLE spip_evenements CHANGE lieu lieu text NOT NULL DEFAULT ''"), + array('sql_alter',"TABLE spip_evenements CHANGE adresse adresse text NOT NULL DEFAULT ''"), + ); + include_spip('maj/svn10000'); + $maj['0.24.0'] = array( + array('maj_liens','mot','evenement'), + array('sql_drop_table',"spip_mots_evenements"), + array('sql_alter',"TABLE spip_evenements ADD statut varchar(10) DEFAULT 0 NOT NULL"), + ); + + $maj['0.25.0'] = array( + array('upgrade_evenements_statut_025'), + ); + + $maj['0.26.0'] = array( + array('maj_tables',array('spip_evenements')), + array('sql_update',"spip_evenements", array('date_creation'=>'maj')), + ); + + include_spip('base/upgrade'); + maj_plugin($nom_meta_base_version, $version_cible, $maj); +} + +function agenda_vider_tables($nom_meta_base_version) { + sql_drop_table("spip_evenements"); + #sql_drop_table("spip_mots_evenements"); // au cas ou ? + sql_alter("TABLE spip_rubriques DROP COLUMN agenda"); + effacer_meta($nom_meta_base_version); +} + +function upgrade_evenements_articles_012(){ + $res = sql_select("*", "spip_evenements_articles"); + while ($row = sql_fetch($res)){ + $id_article = $row['id_article']; + $id_evenement = $row['id_evenement']; + sql_update("spip_evenements", array('id_article'=>$id_article),'id_evenement='.intval($id_evenement)); + } +} + +function upgrade_evenements_statut_025(){ + include_spip('action/editer_evenement'); + $res = sql_select('id_evenement','spip_evenements',"statut='0'"); + while ($row = sql_fetch($res)){ + evenement_modifier($row['id_evenement'],array()); + } +} + +?> diff --git a/www/plugins/agenda_3_5/agenda_autoriser.php b/www/plugins/agenda_3_5/agenda_autoriser.php new file mode 100644 index 00000000..5a944c96 --- /dev/null +++ b/www/plugins/agenda_3_5/agenda_autoriser.php @@ -0,0 +1,146 @@ + 0){ + return autoriser('creerevenementdans', 'article', $options['id_article'], $qui, $options); + } + else{ + return ($qui['statut'] == '0minirezo' and !$qui['restreint']); + } +} + +/** + * Autorisation de modifier un evenement : autorisations de l'article parent + * + * @param string $faire + * @param string $quoi + * @param int $id + * @param int $qui + * @param array $options + * @return bool + */ +function autoriser_evenement_modifier_dist($faire,$quoi,$id,$qui,$options){ + if (!isset($options['id_article']) OR !$id_article=$options['id_article']) + $id_article = sql_getfetsel('id_article','spip_evenements','id_evenement='.intval($id)); + if (!$id_article) return false; + return autoriser('modifier','article',$id_article,$qui); +} + +/** + * Autorisation d'instituer un evenement : voir si l'article est publie ou non + * @param string $faire + * @param string $quoi + * @param int $id + * @param int $qui + * @param array $options + * @return bool + */ +function autoriser_evenement_instituer_dist($faire,$quoi,$id,$qui,$options){ + if (!isset($options['id_article']) OR !$id_article=$options['id_article']) + $id_article = sql_getfetsel('id_article','spip_evenements','id_evenement='.intval($id)); + if (!$id_article) return false; + $statut = sql_getfetsel('statut','spip_articles','id_article='.intval($id_article)); + // interdit de publier un evenement sur un article non publie + if ($statut!=='publie' + AND isset($options['statut']) + AND $options['statut']=='publie') + return false; + $options['id_article']=$id_article; + return autoriser('modifier','evenement',$id,$qui,$options); +} + +/** + * Autorisation de voir un evenement : autorisations de l'article parent + * + * @param string $faire + * @param string $quoi + * @param int $id + * @param int $qui + * @param array $options + * @return bool + */ +function autoriser_evenement_voir_dist($faire,$quoi,$id,$qui,$options){ + if (!isset($options['id_article']) OR !$id_article=$options['id_article']) + $id_article = sql_getfetsel('id_article','spip_evenements','id_evenement='.intval($id)); + if (!$id_article) return false; + return autoriser('voir','article',$id_article,$qui); +} + + +/** + * Autorisation de supprimer un evenement : autorisations de l'article parent + * + * @param string $faire + * @param string $quoi + * @param int $id + * @param int $qui + * @param array $options + * @return bool + */ +function autoriser_evenement_supprimer_dist($faire,$quoi,$id,$qui,$options){ + if (!isset($options['id_article']) OR !$id_article=$options['id_article']) + $id_article = sql_getfetsel('id_article','spip_evenements','id_evenement='.intval($id)); + if (!$id_article) { + if ($qui['statut']=='0minirezo') + return true; + else + return false; + } + return autoriser('modifier','article',$id_article,$qui); +} + + +?> diff --git a/www/plugins/agenda_3_5/agenda_fonctions.php b/www/plugins/agenda_3_5/agenda_fonctions.php new file mode 100644 index 00000000..2060d584 --- /dev/null +++ b/www/plugins/agenda_3_5/agenda_fonctions.php @@ -0,0 +1,197 @@ + 28/02/2007 + * + * @param string $date + * @param int $decalage + * @param string $format + * @return string + */ +function agenda_moisdecal($date,$decalage,$format="Y-m-d H:i:s"){ + include_spip('inc/filtres'); + $date_array = recup_date($date); + if ($date_array) list($annee, $mois, $jour) = $date_array; + if (!$jour) $jour=1; + if (!$mois) $mois=1; + $mois2 = $mois + $decalage; + $date2 = mktime(1, 1, 1, $mois2, $jour, $annee); + // mois normalement attendu + $mois3 = date('m', mktime(1, 1, 1, $mois2, 1, $annee)); + // et si le mois de la nouvelle date a moins de jours... + $mois2 = date('m', $date2); + if ($mois2 - $mois3) $date2 = mktime(1, 1, 1, $mois2, 0, $annee); + return date($format, $date2); +} + + +/** + * decale les jours de la date. + * + * @param string $date + * @param int $decalage + * @param string $format + * @return string + */ +function agenda_jourdecal($date,$decalage,$format="Y-m-d H:i:s"){ + include_spip('inc/filtres'); + $date_array = recup_date($date); + if ($date_array) list($annee, $mois, $jour) = $date_array; + if (!$jour) $jour=1; + if (!$mois) $mois=1; + $jour2 = $jour + $decalage; + $date2 = mktime(1, 1, 1, $mois, $jour2, $annee); + return date($format, $date2); +} + +/** + * Filtre pour tester si une date est dans le futur + * [(#DATE|agenda_date_a_venir) Dans le futur...] + * + * @param string $date_test + * @param string $date_ref + * date de reference, par defaut celle du serveur (argument utile pour les tests unitaires) + * @return string + */ +function agenda_date_a_venir($date_test,$date_ref=null){ + if (is_null($date_ref)) + $date_ref = $_SERVER['REQUEST_TIME']; + else + $date_ref = strtotime($date_ref); + + return (strtotime($date_test)>$date_ref)?' ':''; +} + + +/** + * Filtre pour tester si une date est dans le passe + * [(#DATE|agenda_date_passee) Dans le passe...] + * + * @param string $date_test + * @param string $date_ref + * date de reference, par defaut celle du serveur (argument utile pour les tests unitaires) + * @return string + */ +function agenda_date_passee($date_test,$date_ref=null){ + if (is_null($date_ref)) + $date_ref = $_SERVER['REQUEST_TIME']; + else + $date_ref = strtotime($date_ref); + + return (strtotime($date_test)<$date_ref)?' ':''; +} + +/** + * Determiner la date de debut de l'affichage de la liste des evenements + * en fonction du mode demande et de la date courante + * @param string $date + * @param string $affichage_debut + * @return string + */ +function agenda_date_debut_liste($date,$affichage_debut='date_jour'){ + switch($affichage_debut){ + case 'date_jour' : + break; + case 'date_veille' : + $date = agenda_jourdecal($date, -1); + break; + case 'debut_semaine' : + $t = strtotime($date); + $date = agenda_jourdecal($date, -(date('N', $t)-1)); + break; + case 'debut_semaine_prec' : + $t = strtotime($date); + $date = agenda_jourdecal($date, -(date('N', $t)-1+7)); + break; + case 'debut_mois' : + $t = strtotime($date); + $date = agenda_jourdecal($date, -(date('j', $t)-1)); + break; + case 'debut_mois_prec' : + $t = strtotime($date); + $date = agenda_jourdecal($date, -(date('j', $t)-1)); // debut de mois + $date = agenda_moisdecal($date, -1); // precedent + break; + case 'debut_mois_1' : + case 'debut_mois_2' : + case 'debut_mois_3' : + case 'debut_mois_4' : + case 'debut_mois_5' : + case 'debut_mois_6' : + case 'debut_mois_7' : + case 'debut_mois_8' : + case 'debut_mois_9' : + case 'debut_mois_10' : + case 'debut_mois_11' : + case 'debut_mois_12' : + $t = strtotime($date); + $mdebut = intval(substr($affichage_debut,strlen('debut_mois_'))); + $mcourant = date('n', $t); + $offset = ($mcourant-$mdebut+12)%12; + $date = agenda_jourdecal($date, -(date('j', $t)-1)); // debut de mois + $date = agenda_moisdecal($date, -$offset); + break; + } + return $date; +} +/** + * Afficher la periode de l'agenda : + * Le nom du mois si nb_mois = 1 + * L'annee si nb_mois=12 et debut du mois = janvier + * sinon : mois annee - mois annee (xxx 12 - yyy 13) + * si le debut de la periode est fixe (debut d'un mois donnee), on precede de + * "Annee" ou "Saison" la periode + * + * @param string $date + * @param int $nb_mois + * @param string $affichage_debut + * @return string + */ +function affdate_periode($date,$nb_mois,$affichage_debut='date_jour'){ + $fixe = in_array($affichage_debut,array('debut_mois_1','debut_mois_2','debut_mois_3','debut_mois_4','debut_mois_5','debut_mois_6','debut_mois_7','debut_mois_8','debut_mois_9','debut_mois_10','debut_mois_11','debut_mois_12')); + if ($nb_mois==1) + return affdate_mois_annee($date); + if ($nb_mois==12 AND mois($date)==1) + return ($fixe?_T('agenda:label_annee').' ':'').annee($date); + + return ($fixe?_T('agenda:label_periode_saison').' ':'').affdate_mois_annee($date)." - ".affdate_mois_annee(agenda_moisdecal($date, $nb_mois-1)); +} + +/** + * Raccourcis [->evenement12] et [->evt12] + */ +/* +function generer_url_evenement($id, $args='', $ancre='') { + return array('evenement', $id); +}*/ + +?> diff --git a/www/plugins/agenda_3_5/agenda_pipelines.php b/www/plugins/agenda_3_5/agenda_pipelines.php new file mode 100644 index 00000000..a4eb8d02 --- /dev/null +++ b/www/plugins/agenda_3_5/agenda_pipelines.php @@ -0,0 +1,253 @@ +'; + } + } + return $flux; +} + +/** + * Inserer les infos d'agenda sur les articles et rubriques + * + * @param array $flux + * @return array + */ +function agenda_affiche_milieu($flux) { + $e = trouver_objet_exec($flux['args']['exec']); + $out = ""; + if ($e['type']=='rubrique' + AND autoriser('configurer') + AND $e['edition']==false + AND $id_rubrique = intval($flux['args']['id_rubrique']) + AND autoriser('modifier', 'rubrique', $id_rubrique)){ + $activer = true; + $res = ""; + $actif = sql_getfetsel('agenda','spip_rubriques','id_rubrique='.intval($id_rubrique)); + $statut="-32"; + $alt = ""; + $voir = ""; + if (!sql_countsel('spip_rubriques','agenda=1')) + $res .= "" . _T('agenda:aucune_rubrique_mode_agenda') . "
"; + else { + include_spip('inc/rubriques'); + if (sql_countsel('spip_rubriques',sql_in('id_rubrique',calcul_hierarchie_in($id_rubrique))." AND agenda=1 AND id_rubrique<>".intval($id_rubrique))){ + $alt = _T('agenda:rubrique_dans_une_rubrique_mode_agenda'); + $activer = false; + $statut="-ok-32"; + $voir = _T('agenda:voir_evenements_rubrique'); + } + elseif(!$actif) { + $alt = _T('agenda:rubrique_sans_gestion_evenement').'
'; + $statut="-non-32"; + } + if ($actif){ + $alt = _T('agenda:rubrique_mode_agenda').'
'; + $statut="-ok-32"; + $voir = _T('agenda:voir_evenements_rubrique'); + } + } + + if (!$actif){ + if($activer){ + $res .= bouton_action(_T('agenda:rubrique_activer_agenda'),generer_action_auteur('activer_agenda_rubrique',$id_rubrique,self()),'ajax'); + } + } + else + $res .= bouton_action(_T('agenda:rubrique_desactiver_agenda'),generer_action_auteur('activer_agenda_rubrique',"-$id_rubrique",self()),'ajax'); + if ($voir) + $res .= " | $voir"; + if ($res) + $out .= boite_ouvrir(_T('agenda:agenda').http_img_pack("agenda$statut.png",$alt,"class='statut'",$alt),'simple agenda-statut') + . $res + . boite_fermer(); + } + elseif ($e['type']=='article' + AND $e['edition']==false){ + $id_article = $flux['args']['id_article']; + $out .= recuperer_fond('prive/objets/contenu/article-evenements',$flux['args']); + } + + if ($out){ + if ($p=strpos($flux['data'],'')) + $flux['data'] = substr_replace($flux['data'],$out,$p,0); + else + $flux['data'] .= $out; + } + return $flux; +} + +/** + * Optimiser la base (evenements a la poubelle, lies a des articles disparus, ou liens mots sur evenements disparus) + * + * @param array $flux + * @return array + */ +function agenda_optimiser_base_disparus($flux){ + + # passer a la poubelle + # les evenements lies a un article inexistant + $res = sql_select("DISTINCT evenements.id_article","spip_evenements AS evenements + LEFT JOIN spip_articles AS articles + ON evenements.id_article=articles.id_article","articles.id_article IS NULL"); + while ($row = sql_fetch($res)) + sql_updateq("spip_evenements",array('statut'=>'poubelle'),"id_article=".$row['id_article']); + + // Evenements a la pouvelle + sql_delete("spip_evenements", "statut='poubelle' AND maj < ".$flux['args']['date']); + + include_spip('action/editer_liens'); + // optimiser les liens de tous les mots vers des objets effaces + // et depuis des mots effaces + $flux['data'] += objet_optimiser_liens(array('mot'=>'*'),array('evenement'=>'*')); + + return $flux; +} + + +/** + * Lister les evenements dans le calendrier de l'espace prive (extension organiseur) + * + * @param array $flux + * @return array + */ +function agenda_quete_calendrier_prive($flux){ + $quoi = $flux['args']['quoi']; + if (!$quoi OR $quoi=='evenements'){ + $start = sql_quote($flux['args']['start']); + $end = sql_quote($flux['args']['end']); + $res = sql_select('*','spip_evenements AS E',"((E.date_fin >= $start OR E.date_debut >= $start) AND E.date_debut <= $end)"); + while ($row = sql_fetch($res)){ + $flux['data'][] = array( + 'id' => $row['id_evenement'], + 'title' => $row['titre'], + 'allDay' => false, + 'start' => $row['date_debut'], + 'end' => $row['date_fin'], + 'url' => str_replace("&","&",generer_url_entite($row['id_evenement'],'evenement')), + 'className' => "calendrier-event evenement calendrier-couleur5", + 'description' => $row['descriptif'], + ); + } + } + return $flux; +} + +/** + * Synchroniser le statut des evenements lorsqu'on publie/depublie un article + * @param array $flux + * @return array + */ +function agenda_post_edition($flux){ + if ($flux['args']['table']=='spip_articles' + AND $flux['args']['action'] == 'instituer' + AND $id_article = $flux['args']['id_objet'] + AND isset($flux['data']['statut']) + AND $statut = $flux['data']['statut'] + AND $statut_ancien = $flux['args']['statut_ancien'] + AND $statut!=$statut_ancien){ + + $set = array(); + // les evenements principaux, associes a cet article + $where = array('id_article='.intval($id_article),'id_evenement_source=0'); + switch($statut){ + case 'poubelle': + // on passe aussi tous les evenements associes a la poubelle, sans distinction + $set['statut'] = 'poubelle'; + break; + case 'publie': + // on passe aussi tous les evenements prop en publie + $set['statut'] = 'publie'; + $where[] = "statut='prop'"; + break; + default: + if ($statut_ancien=='publie'){ + // on depublie aussi tous les evenements publie + $set['statut'] = 'prop'; + $where[] = "statut='publie'"; + } + break; + } + if (count($set)){ + include_spip('action/editer_evenement'); + $res = sql_select('id_evenement','spip_evenements',$where); + // et on applique a tous les evenements lies a l'article + while ($row = sql_fetch($res)){ + evenement_modifier($row['id_evenement'],$set); + } + } + } + return $flux; +} + +/* + * Synchroniser les liaisons (mots, docs, gis, etc) de l'événement édité avec ses répétitions s'il en a + * @param array $flux + * @param array + */ +function agenda_post_edition_lien($flux){ + // Si on est en train de lier ou délier quelque chose a un événement + if ($flux['args']['objet'] == 'evenement'){ + // On cherche si cet événement a des répétitions + if ($id_evenement = $flux['args']['id_objet'] + and $id_evenement > 0 + and $repetitions = sql_allfetsel('id_evenement', 'spip_evenements', 'id_evenement_source = '.$id_evenement) + and is_array($repetitions) + ){ + include_spip('action/editer_liens'); + + // On a la liste des ids des répétitions + $repetitions = array_map('reset', $repetitions); + + // Si c'est un ajout de lien, on l'ajoute à toutes les répétitions + if ($flux['args']['action'] == 'insert'){ + objet_associer( + array($flux['args']['objet_source'] => $flux['args']['id_objet_source']), + array('evenement' => $repetitions) + ); + } + // Si c'est une suppression de lien, on le supprime à toutes les répétitions + elseif ($flux['args']['action'] == 'delete'){ + objet_dissocier( + array($flux['args']['objet_source'] => $flux['args']['id_objet_source']), + array('evenement' => $repetitions) + ); + } + } + } + + return $flux; +} + +/** + * Les evenements peuvent heriter des compositions des articles + * @param array $heritages + * @return array + */ +function agenda_compositions_declarer_heritage($heritages) { + $heritages['evenement'] = 'article'; + return $heritages; +} + + +?> diff --git a/www/plugins/agenda_3_5/base/agenda_evenements.php b/www/plugins/agenda_3_5/base/agenda_evenements.php new file mode 100644 index 00000000..f4e61fb5 --- /dev/null +++ b/www/plugins/agenda_3_5/base/agenda_evenements.php @@ -0,0 +1,149 @@ + "BIGINT (21) DEFAULT '0' NOT NULL", + "id_auteur" => "BIGINT (21) DEFAULT '0' NOT NULL", + "date" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", + "reponse" => "char(3) default '?' NOT NULL", // oui, non, ? + ); + + $spip_evenements_participants_key = array( + "PRIMARY KEY" => "id_evenement, id_auteur", + "KEY id_auteur" => "id_auteur"); + + $tables_auxiliaires['spip_evenements_participants'] = array( + 'field' => &$spip_evenements_participants, + 'key' => &$spip_evenements_participants_key); + + return $tables_auxiliaires; +} + +/** + * Declarer la table objet evenement + * + * @param array $tables + * @return array + */ +function agenda_declarer_tables_objets_sql($tables){ + $tables['spip_evenements'] = array( + 'page'=>'evenement', + 'texte_retour' => 'icone_retour', + 'texte_objets' => 'agenda:info_evenements', + 'texte_objet' => 'agenda:info_evenement', + 'texte_modifier' => 'agenda:icone_modifier_evenement', + 'texte_creer' => 'agenda:titre_cadre_ajouter_evenement', + 'texte_logo_objet' => 'agenda:texte_logo_objet', + 'info_aucun_objet'=> 'agenda:info_aucun_evenement', + 'info_1_objet' => 'agenda:info_un_evenement', + 'info_nb_objets' => 'agenda:info_nombre_evenements', + 'titre' => 'titre, "" AS lang', + 'date' => 'date_debut', + 'principale' => 'oui', + 'champs_editables' => array('date_debut', 'date_fin', 'titre', 'descriptif','lieu', 'adresse', 'inscription', 'places', 'horaire'), + 'field'=> array( + "id_evenement" => "bigint(21) NOT NULL", + "id_article" => "bigint(21) DEFAULT '0' NOT NULL", + "date_debut" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", + "date_fin" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", + "titre" => "text NOT NULL DEFAULT ''", + "descriptif" => "text NOT NULL DEFAULT ''", + "lieu" => "text NOT NULL DEFAULT ''", + "adresse" => "text NOT NULL DEFAULT ''", + "inscription" => "tinyint(1) DEFAULT 0 NOT NULL", + "places" => "int(11) DEFAULT 0 NOT NULL", + "horaire" => "varchar(3) DEFAULT 'oui' NOT NULL", + "id_evenement_source" => "bigint(21) NOT NULL", + "statut" => "varchar(10) DEFAULT '0' NOT NULL", + "maj" => "TIMESTAMP", + "date_creation" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL" + ), + 'key' => array( + "PRIMARY KEY" => "id_evenement", + "KEY date_debut" => "date_debut", + "KEY date_fin" => "date_fin", + "KEY id_article" => "id_article" + ), + 'join' => array( + "id_evenement"=>"id_evenement", + "id_article"=>"id_article" + ), + 'tables_jointures' => array( + 'articles', + 'evenements_participants', + ), + 'rechercher_champs' => array( + 'titre' => 8, 'descriptif' => 5, 'lieu' => 5, 'adresse' => 3 + ), + 'rechercher_jointures' => array( + 'document' => array('titre' => 2, 'descriptif' => 1) + ), + 'statut' => array( + array( + 'champ' => 'statut', + 'publie' => 'publie', + 'previsu' => '!', + 'exception' => array('statut','tout') + ), + ), + 'statut_titres' => array( + 'prop'=>'agenda:info_evenement_propose', + 'publie'=>'agenda:info_evenement_publie', + 'poubelle'=>'agenda:info_evenement_supprime' + ), + 'statut_textes_instituer' => array( + 'prop' => 'texte_statut_propose_evaluation', + 'publie' => 'texte_statut_publie', + 'poubelle' => 'texte_statut_poubelle', + ), + 'texte_changer_statut' => 'agenda:texte_evenement_statut', + 'champs_versionnes' => array('id_article', 'titre', 'descriptif', 'lieu', 'adresse', 'date_debut', 'date_fin', 'horaire'), + + ); + + //-- Jointures ---------------------------------------------------- + $tables['spip_articles']['tables_jointures'][] = 'evenements'; + $tables['spip_auteurs']['tables_jointures'][] = 'evenements_participants'; + $tables['spip_rubriques']['field']['agenda'] = 'tinyint(1) DEFAULT 0 NOT NULL'; + + return $tables; +} + +?> \ No newline at end of file diff --git a/www/plugins/agenda_3_5/css/spip.agenda.css b/www/plugins/agenda_3_5/css/spip.agenda.css new file mode 100644 index 00000000..795e0c5e --- /dev/null +++ b/www/plugins/agenda_3_5/css/spip.agenda.css @@ -0,0 +1,36 @@ + +.evenement.one {padding: 0.75em;background: #eee;margin-bottom: 1.5em;} +.evenement.one .lire-la-suite {display: none;} + +.long .liste-items .evenement {padding-left: 7.5em;} +.long .liste-items .evenement .banner {display:block;float: left;margin-left: -7.5em;width: 5.5em;text-align: center;overflow: hidden;opacity: 0.7;} +.long .liste-items .evenement .banner .label {display: block;padding:0.75em 0;} +.long .liste-items .evenement .banner .day {display: block;text-align: center;font-size: 2em;line-height: 1;} +.long .liste-items .evenement .banner .month {display: block;text-align: center;text-transform: uppercase;font-size: 0.85em;} +.long .liste-items .evenement .banner .year {display: block;text-align: center;font-size: 0.85em;} + +/*.long .liste-items.evenements .item.month, .long .liste-items.evenements .item.month {padding: 0.75em;background: #e4e4e4; text-transform: uppercase;}*/ +.liste-items.evenements .item.fini .entry-title a {color:#ccc;} +.liste-items.evenements .item.fini .entry-content {margin-bottom: 0;max-height: 4.5em;overflow: hidden;} +.liste-items.evenements .item.fini .meta-publi {display: none;} +.liste-items.evenements .item.fini .lire-la-suite {display: none;} +.liste-items.evenements .item.fini .evenement .banner {opacity: 0.5;} + +.liste-items.evenements.short .info-publi, .short .liste-items.evenements .info-publi {display:block;margin: 0;} +.liste-items.evenements .meta-publi {left:7.5em;} +.liste-items.evenements .lire-la-suite {left:7.5em;} +.liste-items.evenements .entry-title {margin-top: 0;} + +.page_jour .liste-items.evenements .evenement .banner {display: none;} +.page_jour .long .liste-items .evenement{padding-left: 0;} +.page_jour .liste-items.evenements .meta-publi {left:0;} +.page_jour .liste-items.evenements .lire-la-suite {left:0;} + +/* +.liste-items.evenements.short .evenement {padding-left: 0;background-image: none;} +.liste-items.evenements.short .entry-title {margin: 0;font-size: inherit;} +.liste-items.evenements.short .banner {display: none;} +.liste-items.evenements.short .entry-content {display: none;} +.liste-items.evenements.short .lire-la-suite {display: none;} +.liste-items.evenements.short .meta-publi {display: none;} +*/ \ No newline at end of file diff --git a/www/plugins/agenda_3_5/demo/agenda_calendrier_mini.html b/www/plugins/agenda_3_5/demo/agenda_calendrier_mini.html new file mode 100644 index 00000000..34e8c5b2 --- /dev/null +++ b/www/plugins/agenda_3_5/demo/agenda_calendrier_mini.html @@ -0,0 +1,173 @@ +#CACHE{86400} + + + + [(#TITRE|textebrut)][ - (#NOM_SITE_SPIP|textebrut)] + + [] + + [] + + + + + + + + + + + + + +
+ + [(#REM) Entete de la page + titre du site ] + + + [(#REM) Fil d'Ariane ] +
<:accueil_site:> > [(#TITRE|couper{80})][ > (#TITRE|couper{80})]
+ + +
+ + + [(#REM) Contenu principal : contenu de l'article ] + +
+ +[(#REM) mini calendrier : +1er arg la date, +2eme le nom de la variable date (optionel : 'date' par defaut) +3eme l'url sur laquelle boucler (optionel : url courante par defaut) ] +#CALENDRIER_MINI{#ENV{date},'date',#SELF} + +
+ #DEBUT_SURLIGNE + [(#LOGO_ARTICLE||image_reduire{200,200})] + [

(#SURTITRE)

] +

#TITRE

+ [

(#SOUSTITRE)

] + #FIN_SURLIGNE + +

[(#DATE|nom_jour) ][(#DATE|affdate)][, <:par_auteur:> (#LESAUTEURS)]

+ + [(#REM) Traductions de l'article ] + +
+

<:trad_article_traduction:>

+
    + [(#LANG|traduire_nom_langue)] + +
  • [(#LANG|traduire_nom_langue)]
  • + +
+
+
+
+ + + #DEBUT_SURLIGNE + [
(#CHAPO)
] +
+ [

<:voir_en_ligne:> : [(#NOM_SITE|sinon{[(#URL_SITE|couper{80})]})]

] + [
(#TEXTE|image_reduire{520,0})
] + #FIN_SURLIGNE + + [(#REM) Portfolio : album d'images ] + + + + +
+ #EMBED_DOCUMENT + [
(#TITRE)
] + [
(#DESCRIPTIF)
] +
+ + + [

<:info_ps:>

#DEBUT_SURLIGNE(#PS)#FIN_SURLIGNE
] + + [(#REM) Autres documents joints a l'article ] + +
+

<:titre_documents_joints:>

+ +
+
+ + [(#REM) Petition : + La petition ayant une PAGINATION il faut absolument lui passer SELF] + [ #REM Conserver cet invalideur invisible : (#PETITION|?{'',''}) ] + + + [

<:info_notes:>

#DEBUT_SURLIGNE(#NOTES)#FIN_SURLIGNE
] + + [(#REM) Forum de l'article ] + [

<:repondre_article:>

] + + + +
+ + + [(#REM) Menu de navigation laterale ] + + +
+ + [(#REM) Pied de page ] + + +
+ + + diff --git a/www/plugins/agenda_3_5/demo/exemple_navigation_jours.html b/www/plugins/agenda_3_5/demo/exemple_navigation_jours.html new file mode 100644 index 00000000..b3b318bc --- /dev/null +++ b/www/plugins/agenda_3_5/demo/exemple_navigation_jours.html @@ -0,0 +1,8 @@ + +[ +[(#VAL{Y-m-d}|date{#VAL{-1 day}|strtotime{#ENV{date}|affdate{U}}}|nom_jour)] ‹] + +[(#EVAL{' '}|concat{[(#ENV{date}|nom_jour) ],#ENV{date}|jour})] + +[›  [(#VAL{Y-m-d}|date{#VAL{+1 day}|strtotime{#ENV{date}|affdate{U}}}|nom_jour)]] \ No newline at end of file diff --git a/www/plugins/agenda_3_5/demo/test/test_boucle_evenements.html b/www/plugins/agenda_3_5/demo/test/test_boucle_evenements.html new file mode 100644 index 00000000..91769a1b --- /dev/null +++ b/www/plugins/agenda_3_5/demo/test/test_boucle_evenements.html @@ -0,0 +1,9 @@ + +#ID_EVENEMENT: + + + + +plop + + \ No newline at end of file diff --git a/www/plugins/agenda_3_5/demo/test/testagenda.html b/www/plugins/agenda_3_5/demo/test/testagenda.html new file mode 100644 index 00000000..8e994db6 --- /dev/null +++ b/www/plugins/agenda_3_5/demo/test/testagenda.html @@ -0,0 +1,36 @@ +

{id_mot}

+
    + +
  • #TITRE + +
      + +
    • #TITRE
    • + +
    +
    +
  • + +
+ +

{titre_mot}

+
    + +
  • #TITRE
  • + +
+ +

{branche}

+
    + +
  • #TITRE + +
      + +
    • #TITRE
    • + +
    +
    +
  • + +
diff --git a/www/plugins/agenda_3_5/formulaires/configurer_agenda.html b/www/plugins/agenda_3_5/formulaires/configurer_agenda.html new file mode 100644 index 00000000..7d61bbd1 --- /dev/null +++ b/www/plugins/agenda_3_5/formulaires/configurer_agenda.html @@ -0,0 +1,105 @@ +
+

<:configureragenda:titre_configuration:>

+ [

(#ENV**{message_ok})

] + [

(#ENV**{message_erreur})

] + +
+ [(#REM) déclarer les hidden qui déclencheront le service du formulaire + paramêtre : url d'action ] + #ACTION_FORMULAIRE{#ENV{action}} + #SET{fl,configureragenda} +
    + + #SET{name,titre}#SET{obli,''}[(#SET{defaut,<:agenda:titre_sur_l_agenda:>})]#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} +
  • + [ + (#GET{erreurs}) + ] +
  • + #SET{name,descriptif}#SET{obli,''}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} +
  • + [ + (#GET{erreurs}) + ] +
  • + #SET{name,url_evenement}#SET{obli,''}#SET{defaut,'evenement'}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} +
  • + [ + (#GET{erreurs}) + ] + #SET{val,evenement} +
    + + +
    + #SET{val,article} +
    + + +
    +
  • + [(#VAL{_AGENDA_INSERT_HEAD_CSS}|defined|non) + #SET{name,insert_head_css}#SET{obli,''}#SET{defaut,1}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} +
  • [ + (#GET{erreurs}) + ] + #SET{val,1} +
    + + +
    +
  • + ] +
  • +
    + <:configureragenda:legend_presentation_agenda:> +
      + #SET{name,affichage_debut}#SET{obli,''}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} +
    • + [ + (#GET{erreurs}) + ] +
    • + #SET{name,affichage_duree}#SET{obli,''}#SET{defaut,1}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} +
    • + [ + (#GET{erreurs}) + ] +
    • +
    +
    +
  • +
+ + [(#REM) ajouter les saisies supplémentaires : extra et autre, à cet endroit ] + +

  + +

+
+
\ No newline at end of file diff --git a/www/plugins/agenda_3_5/formulaires/editer_evenement.html b/www/plugins/agenda_3_5/formulaires/editer_evenement.html new file mode 100644 index 00000000..269778ed --- /dev/null +++ b/www/plugins/agenda_3_5/formulaires/editer_evenement.html @@ -0,0 +1,113 @@ +
+ [

(#ENV**{message_ok})

] + [

(#ENV**{message_erreur})

] + [(#ENV{editable}) +
+ [(#REM) declarer les hidden qui declencheront le service du formulaire + parametre : url d'action ] + #ACTION_FORMULAIRE{#ENV{action}} + + +
    +
  • + [ + (#ENV**{erreurs}|table_valeur{titre}) + ] +
  • +
  • + [ + (#ENV**{erreurs}|table_valeur{id_parent}) + ] +
  • +
  • <:agenda:evenement_date:> +
      +
    • + [ + (#ENV**{erreurs}|table_valeur{horaire}) + ] +
    • +
    • + [ + (#ENV**{erreurs}|table_valeur{date_debut})][ + (#ENV**{erreurs}|table_valeur{date_fin}) + ] + + + + + + +
    • +
    +
  • +
  • + [ + (#ENV{repetitions}|non)<:agenda:ajouter_repetition:> +
    ][ + (#ENV**{erreurs}|table_valeur{repetitions}) + ]
    + [ + (#ENV{repetitions}|non)
    ] +
  • +
  • + [ + (#ENV**{erreurs}|table_valeur{descriptif}) + ] +
  • [ + (#ENV{affiche_inscription,oui}|=={oui}|oui) +
  • +
    + [(#ENV**{erreurs}|table_valeur{inscription})] + + +
    + [ + (#ENV**{erreurs}|table_valeur{places}) + ] +
    +
  • ] +
  • + [ + (#ENV**{erreurs}|table_valeur{lieu}) + ] +
  • +
  • + [ + (#ENV**{erreurs}|table_valeur{adresse}) + ] +
  • +
+ [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ] + +

+
+ #INCLURE{fond=formulaires/dateur/inc-dateur} + ] +
+ \ No newline at end of file diff --git a/www/plugins/agenda_3_5/formulaires/editer_evenement.php b/www/plugins/agenda_3_5/formulaires/editer_evenement.php new file mode 100644 index 00000000..fe89622f --- /dev/null +++ b/www/plugins/agenda_3_5/formulaires/editer_evenement.php @@ -0,0 +1,140 @@ +'publie')); + } + // a la creation, documenter la date de creation + if (!intval($id_evenement)) + evenement_modifier($res['id_evenement'],array('date_creation'=>date('Y-m-d H:i:s'))); + + $id_evenement = $res['id_evenement']; + if ($res['redirect']) { + if (strpos($res['redirect'],'article')!==false){ + $id_article = sql_getfetsel('id_article','spip_evenements','id_evenement='.intval($id_evenement)); + $res['redirect'] = parametre_url($res['redirect'],'id_article',$id_article); + } + } + return $res; +} + +?> diff --git a/www/plugins/agenda_3_5/formulaires/evenement_participants.html b/www/plugins/agenda_3_5/formulaires/evenement_participants.html new file mode 100644 index 00000000..3ba12282 --- /dev/null +++ b/www/plugins/agenda_3_5/formulaires/evenement_participants.html @@ -0,0 +1,15 @@ +
+ [

(#ENV*{message_ok})

] + [

(#ENV*{message_erreur})

] +
+ #ACTION_FORMULAIRE{#ENV{action}} +
 
+ + + +
+
+ diff --git a/www/plugins/agenda_3_5/formulaires/evenement_participants.php b/www/plugins/agenda_3_5/formulaires/evenement_participants.php new file mode 100644 index 00000000..7761a0e9 --- /dev/null +++ b/www/plugins/agenda_3_5/formulaires/evenement_participants.php @@ -0,0 +1,83 @@ +$evenement, + 'tri_inscrits'=>$tri, + 'supprimer_lien'=>'' + ); + } + + return $valeurs; +} + +/** + * Traiter le post des informations de suppression d'inscription + * + * @param string $a + * @param bool $editable + * @return array + */ +function formulaires_evenement_participants_traiter_dist($a,$editable=true){ + + $supprimer = _request('supprimer_lien'); + + if ($supprimer){ + foreach($supprimer as $k=>$v) { + if ($lien = lien_verifier_action($k,$v)){ + $lien = explode("-",$lien); + list($objet_source,$ids,$objet_lie,$idl) = $lien; + if(autoriser('modifier','evenement',$ids)){ + if ($idl=="*") sql_delete("spip_evenements_participants", "id_evenement=$ids"); + else sql_delete("spip_evenements_participants", "id_evenement=$ids and id_auteur=$idl"); + } + } + } + } + + return $res; +} + +/** + * Fonction issue de prive/formulaires/editer_liens.php + * + * Les formulaires envoient une action dans un tableau ajouter_lien + * ou supprimer_lien + * L'action est de la forme + * objet1-id1-objet2-id2 + * + * L'action peut etre indiquee dans la cle, ou dans la valeur + * Si elle est indiquee dans la valeur, et que la cle est non numerique, + * on ne la prend en compte que si un submit avec la cle a ete envoye + * + * @param string $k + * @param string $v + * @return string + */ +function lien_verifier_action($k,$v){ + if (preg_match(",^\w+-[\w*]+-[\w*]+-[\w*]+,",$k)) + return $k; + if (preg_match(",^\w+-[\w*]+-[\w*]+-[\w*]+,",$v)){ + if (is_numeric($k)) + return $v; + if (_request($k)) + return $v; + } + return ''; +} +?> diff --git a/www/plugins/agenda_3_5/formulaires/migrer_agenda.html b/www/plugins/agenda_3_5/formulaires/migrer_agenda.html new file mode 100644 index 00000000..29f09e7b --- /dev/null +++ b/www/plugins/agenda_3_5/formulaires/migrer_agenda.html @@ -0,0 +1,102 @@ +
+

<:migreragenda:titre_migrer_agenda:>

+ [

(#ENV**{message_ok})

] + [

(#ENV**{message_erreur})

] + [(#ENV{editable}) +
+ [(#REM) déclarer les hidden qui déclencheront le service du formulaire + paramêtre : url d'action ] + #ACTION_FORMULAIRE{#ENV{action}} + #SET{fl,migreragenda} + +

<:migreragenda:explication_migration_agenda_article_1:>

+

<:migreragenda:explication_migration_agenda_article_2:>

+
    + [
  • + [ + (#ENV**{erreurs}|table_valeur{id_parent}) + ] + (#VAL|chercher_rubrique{0,#ENV{id_parent},'article',0,0,0,form_simple}) +
  • ] + #SET{name,toute_la_branche}#SET{obli,''}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} +
  • [ + (#GET{erreurs}) + ] + #SET{val,oui} +
    + + +
    +
  • + + #SET{name,champ_date_debut}#SET{obli,''}#SET{defaut,'date'}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} +
  • + [ + (#GET{erreurs}) + ] +
  • + #SET{name,champ_date_fin}#SET{obli,''}#SET{defaut,'date_redac'}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} +
  • + [ + (#GET{erreurs}) + ] +
  • + + #SET{name,horaire}#SET{obli,''}#SET{defaut,'oui'}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} +
  • + [ + (#GET{erreurs}) + ] + #SET{val,oui} +
    + + +
    + #SET{val,non} +
    + + +
    +
  • + + #SET{name,groupes_mots}#SET{obli,''}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} +
  • + [ + (#GET{erreurs}) + ] + ] + + #SET{val,#ID_GROUPE} +
    + + +
    + + [(#ENV{editable}) +
  • +
+

<:migreragenda:explication_migration_agenda_article_fin:>

+ [(#REM) ajouter les saisies supplémentaires : extra et autre, à cet endroit ] + +

  +

+ + [
+ (#ENV**{erreurs}|table_valeur{confirmer}) +
+

  +

+ ] +
+ ] +
\ No newline at end of file diff --git a/www/plugins/agenda_3_5/formulaires/migrer_agenda.php b/www/plugins/agenda_3_5/formulaires/migrer_agenda.php new file mode 100644 index 00000000..1f79a57c --- /dev/null +++ b/www/plugins/agenda_3_5/formulaires/migrer_agenda.php @@ -0,0 +1,182 @@ +'', + 'toute_la_branche' => '', + 'champ_date_debut' => 'date', + 'champ_date_fin' => 'date_redac', + 'horaire' => 'oui', + 'groupes_mots' => array(), + ); + + return $valeurs; +} + +function formulaires_migrer_agenda_verifier_dist(){ + + $erreurs = array(); + $oblis = array('id_parent','champ_date_debut','champ_date_fin','horaire'); + + foreach ($oblis as $obli){ + if (!_request($obli)) + $erreurs[$obli] = _T('info_obligatoire'); + } + + if (!isset($erreurs['champ_date_debut']) + AND !in_array(_request('champ_date_debut'),array('date','date_redac'))) + $erreurs['champ_date_debut'] = _T('migreragenda:erreur_choix_incorrect'); + + if (!isset($erreurs['champ_date_fin']) + AND !in_array(_request('champ_date_fin'),array('date','date_redac'))) + $erreurs['champ_date_fin'] = _T('migreragenda:erreur_choix_incorrect'); + + if (!isset($erreurs['horaire']) + AND !in_array(_request('horaire'),array('oui','non'))) + $erreurs['horaire'] = _T('migreragenda:erreur_choix_incorrect'); + + if (!isset($erreurs['groupes_mots']) + AND $groupes = _request('groupes_mots')){ + + if (!is_array($groupes)) + $erreurs['groupes_mots'] = _T('migreragenda:erreur_choix_incorrect'); + else { + $groupes = array_map('intval',$groupes); + if (sql_countsel('spip_groupes_mots',sql_in('id_groupe',$groupes))!=count($groupes)) + $erreurs['groupes_mots'] = _T('migreragenda:erreur_choix_incorrect'); + } + } + + // pas d'erreurs ? verifier ce qui va etre fait et l'annoncer + if (!count($erreurs) AND !_request('confirm')){ + $where = migrer_agenda_where_articles(_request('id_parent'),_request('toute_la_branche')); + $nba = sql_countsel("spip_articles",$where); + + $message = _T('migreragenda:info_migration_articles')." "; + $message .= sinon(singulier_ou_pluriel($nba,'info_1_article','info_nb_articles'),_T('info_aucun_article')); + + $erreurs['confirmer'] = $message; + } + + return $erreurs; +} + + +function formulaires_migrer_agenda_traiter_dist(){ + $id_rubrique = _request('id_parent'); + $where_articles = migrer_agenda_where_articles($id_rubrique,_request('toute_la_branche')); + $groupes = _request('groupes_mots'); + if (!$groupes) + $groupes = array(); + $where_mots = migrer_agenda_where_mots($groupes); + + $horaire = (_request('horaire')=='oui'?true:false); + $champ_date_debut = _request('champ_date_debut'); + $champ_date_fin = _request('champ_date_fin'); + + // poser le flag agenda sur la rubrique ! + sql_updateq("spip_rubriques",array('agenda'=>1),'id_rubrique='.intval($id_rubrique)); + // et migrer les articles + $nb = migrer_articles($where_articles,$champ_date_debut,$champ_date_fin,$horaire,$where_mots); + + $message = _T('migreragenda:info_migration_articles_reussi')." "; + $message .= sinon(singulier_ou_pluriel($nb,'info_1_article','info_nb_articles'),_T('info_aucun_article')); + + return array('message_ok'=>$message); +} + + + +function migrer_articles($where_articles,$champ_date_debut,$champ_date_fin,$horaire,$where_mots){ + + include_spip("action/editer_evenement"); + + $where_mots = implode(" AND ",$where_mots); + + $nb = 0; + $res = sql_select("*","spip_articles",$where_articles); + while ($row = sql_fetch($res)){ + + $id_evenement = evenement_inserer($row['id_article']); + // mettre les champs + $set = array( + 'date_debut' => $row[$champ_date_debut], + 'date_fin' => $row[$champ_date_fin], + 'titre' => $row['titre'], + 'horaire' => ($horaire?'oui':'non') + ); + evenement_modifier($id_evenement,$set); + + // associer les mots : en sql pour ne pas exploser si plein de mots en base + $mots = sql_allfetsel('M.id_mot','spip_mots AS M JOIN spip_mots_liens AS L ON (M.id_mot=L.id_mot AND L.objet='.sql_quote('article').')',"id_objet=".intval($row['id_article'])." AND (".$where_mots.")"); + if (count($mots)){ + $insert = array(); + foreach ($mots as $mot){ + $insert[] = array('id_mot'=>$mot['id_mot'],'objet'=>'evenement','id_objet'=>$id_evenement); + } + sql_insertq_multi("spip_mots_liens",$insert); + } + + + // publier l'evenement + evenement_modifier($id_evenement,array('statut'=>'publie')); + + $nb++; + } + + return $nb; +} + + + +function migrer_agenda_where_articles($id_rubrique,$branche = false){ + + $where = array(); + $where[] = "statut=".sql_quote('publie'); + if ($branche){ + include_spip("inc/rubriques"); + $where[] = sql_in('id_rubrique',calcul_branche_in($id_rubrique)); + } + else + $where[] = "id_rubrique=".intval($id_rubrique); + + // exclure les articles qui ont deja un evenement + $where[] = "id_article NOT IN (".sql_get_select("id_article","spip_evenements").")"; + + return $where; +} + +function migrer_agenda_where_mots($groupes){ + $id_groupe = array(); + + $rows = sql_allfetsel('*','spip_groupes_mots',sql_in('id_groupe',$groupes)); + foreach($rows as $row){ + $id_groupe[] = $row['id_groupe']; + $tables_liees = explode(',',$row['tables_liees']); + $tables_liees = array_filter($tables_liees); + // ajouter les evenements a ce groupe de mot + if (!in_array('evenements',$tables_liees)){ + include_spip("action/editer_groupe_mots"); + $tables_liees[] = 'evenements'; + $tables_liees = implode(',',$tables_liees); + groupemots_modifier($row['id_groupe'],array('tables_liees'=>$tables_liees)); + } + } + + $where = array(sql_in('id_groupe',$id_groupe)); + return $where; +} + +?> \ No newline at end of file diff --git a/www/plugins/agenda_3_5/formulaires/participer_evenement.html b/www/plugins/agenda_3_5/formulaires/participer_evenement.html new file mode 100644 index 00000000..c25dd05a --- /dev/null +++ b/www/plugins/agenda_3_5/formulaires/participer_evenement.html @@ -0,0 +1,37 @@ +
+ [(#ENV{editable}|non) + [

(#ENV**{message_ok})

] + [

(#ENV**{message_erreur})

] + ] + [(#ENV{editable}) +
+ [(#REM) declarer les hidden qui declencheront le service du formulaire + parametre : url d'action ] + #ACTION_FORMULAIRE{#ENV{action}} +
<:agenda:label_vous_inscrire:> + [

(#ENV*{message_ok})

] + [

(#ENV*{message_erreur})

] +
    +
  • + [(#ENV**{erreurs}|table_valeur{reponse})] +
    + + +
    +
    + + +
    +
    + + +
    +
  • +
+
+ [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ] + +

+
+ ] +
diff --git a/www/plugins/agenda_3_5/formulaires/participer_evenement.php b/www/plugins/agenda_3_5/formulaires/participer_evenement.php new file mode 100644 index 00000000..868ec6b0 --- /dev/null +++ b/www/plugins/agenda_3_5/formulaires/participer_evenement.php @@ -0,0 +1,108 @@ +NOW()') + OR !$row['inscription']) + return false; + + // si anonyme, on echoue avec avertissement + if (!$GLOBALS['visiteur_session']['id_auteur']) + return array( + 'message_erreur'=>_T('agenda:connexion_necessaire_pour_inscription'), + 'editable'=>false + ); + + // valeurs d'initialisation + $valeurs['id'] = $id_evenement; + $valeurs['reponse'] = sql_getfetsel('reponse','spip_evenements_participants','id_evenement='.intval($id_evenement).' AND id_auteur='.intval($GLOBALS['visiteur_session']['id_auteur'])); + + // si les places sont comptees, regarder si il en reste + if ($places = $row['places']){ + $ok = sql_countsel('spip_evenements_participants','id_evenement='.intval($id_evenement)." AND reponse='oui'"); + $peutetre = sql_countsel('spip_evenements_participants','id_evenement='.intval($id_evenement)." AND reponse='?'"); + // Les reponses PEUT-ETRE sont ponderees a 0,5 donc + // on multiplie tout par 2 pour eviter les troncatures ($total ne sert de toute facon que dans les tests) + $total = 2*$ok+$peutetre; + if ($total>=2*$places){ + // dans ce cas, le formulaire est editable seulement si l'auteur a deja repondu oui ou peut-etre, et peut changer d'avis ! + if (!($valeurs['reponse']=='oui' OR $valeurs['reponse']=='?')){ + $valeurs['editable'] = false; + $valeurs['message_ok'] = _T('agenda:evenement_complet'); + } + } + } + + return $valeurs; +} + +function formulaires_participer_evenement_verifier_dist($id_evenement){ + $erreurs = array(); + $reponse = _request('reponse'); + // Le test de la ligne suivante sert a savoir si la reponse est vide, non? + // On vient juste de la recuperer ci-dessus, pas la peine de la reaffecter... + if (!($reponse) OR !in_array($reponse,array('oui','non','?'))) + $erreurs['reponse'] = _T('agenda:indiquez_votre_choix'); + elseif ($reponse!=='non') { + $row = sql_fetsel('places','spip_evenements','id_evenement='.intval($id_evenement)); + $valeurs['reponse'] = sql_getfetsel('reponse','spip_evenements_participants','id_evenement='.intval($id_evenement).' AND id_auteur='.intval($GLOBALS['visiteur_session']['id_auteur'])); + if ($places = $row['places'] AND $valeurs['reponse']!==$reponse){ + $ok = sql_countsel('spip_evenements_participants','id_evenement='.intval($id_evenement)." AND reponse='oui'"); + $peutetre = sql_countsel('spip_evenements_participants','id_evenement='.intval($id_evenement)." AND reponse='?'"); + // Les reponses PEUT-ETRE sont ponderees a 0,5 donc + // on multiplie tout par 2 pour eviter les troncatures ($total ne sert de toute facon que dans les tests) + $total = 2*$ok+$peutetre; + if ( + // Si on est au taquet, le seul cas autorise restant (la reponse NON et la reponse identique sont prises + // en compte dans les tests ci-dessus) est: transformation d'un OUI en PEUT-ETRE (-0,5) + ($total>=2*$places AND !($valeurs['reponse']=='oui' AND $reponse=='?')) + OR + // Si il reste un siege PEUT-ETRE, le seul cas interdit restant est: transformation d'un NON en OUI (+1) + ($total==2*$places-1 AND ($valeurs['reponse']=='non' AND $reponse=='oui')) + ){ + $erreurs['reponse'] = _T('agenda:plus_de_place'); + } + } + } + return $erreurs; +} + +function formulaires_participer_evenement_traiter_dist($id_evenement){ + + $reponse = _request('reponse'); + if (sql_fetsel('reponse','spip_evenements_participants','id_evenement='.intval($id_evenement).' AND id_auteur='.intval($GLOBALS['visiteur_session']['id_auteur']))){ + sql_updateq('spip_evenements_participants',array('reponse'=>$reponse),'id_evenement='.intval($id_evenement).' AND id_auteur='.intval($GLOBALS['visiteur_session']['id_auteur'])); + } + else + sql_insertq('spip_evenements_participants',array('id_evenement'=>$id_evenement,'id_auteur'=>$GLOBALS['visiteur_session']['id_auteur'],'reponse'=>$reponse,'date'=>'NOW()')); + + $retour = array('editable'=>true); + if (!$reponse = sql_getfetsel('reponse','spip_evenements_participants','id_evenement='.intval($id_evenement).' AND id_auteur='.intval($GLOBALS['visiteur_session']['id_auteur'])) + OR $reponse!=_request('reponse')){ + $retour['message_erreur'] = _T('agenda:probleme_technique'); + } + else { + if ($reponse=='oui') + $message = _T('agenda:participation_prise_en_compte'); + elseif ($reponse=='?') + $message = _T('agenda:participation_incertaine_prise_en_compte'); + else + $message = _T('agenda:absence_prise_en_compte'); + } + return array('message_ok'=>$message,'editable'=>true); +} + +?> \ No newline at end of file diff --git a/www/plugins/agenda_3_5/inc/agenda_filtres.php b/www/plugins/agenda_3_5/inc/agenda_filtres.php new file mode 100644 index 00000000..84a61864 --- /dev/null +++ b/www/plugins/agenda_3_5/inc/agenda_filtres.php @@ -0,0 +1,197 @@ +param; + + if (count($params) < 1) + erreur_squelette(_T('zbug_info_erreur_squelette'), + "{agenda ?} BOUCLE$idb"); + + $parent = $boucles[$idb]->id_parent; + + // les valeurs $date et $type doivent etre connus a la compilation + // autrement dit ne pas etre des champs + + $date_deb = array_shift($params); + $date_deb = $date_deb[0]->texte; + + $date_fin = array_shift($params); + $date_fin = $date_fin[0]->texte; + + $type = array_shift($params); + $type = $type[0]->texte; + + $annee = $params ? array_shift($params) : ""; + $annee = "\n" . 'sprintf("%04d", ($x = ' . + calculer_liste($annee, array(), $boucles, $parent) . + ') ? $x : date("Y"))'; + + $mois = $params ? array_shift($params) : ""; + $mois = "\n" . 'sprintf("%02d", ($x = ' . + calculer_liste($mois, array(), $boucles, $parent) . + ') ? $x : date("m"))'; + + $jour = $params ? array_shift($params) : ""; + $jour = "\n" . 'sprintf("%02d", ($x = ' . + calculer_liste($jour, array(), $boucles, $parent) . + ') ? $x : date("d"))'; + + $annee2 = $params ? array_shift($params) : ""; + $annee2 = "\n" . 'sprintf("%04d", ($x = ' . + calculer_liste($annee2, array(), $boucles, $parent) . + ') ? $x : date("Y"))'; + + $mois2 = $params ? array_shift($params) : ""; + $mois2 = "\n" . 'sprintf("%02d", ($x = ' . + calculer_liste($mois2, array(), $boucles, $parent) . + ') ? $x : date("m"))'; + + $jour2 = $params ? array_shift($params) : ""; + $jour2 = "\n" . 'sprintf("%02d", ($x = ' . + calculer_liste($jour2, array(), $boucles, $parent) . + ') ? $x : date("d"))'; + + $boucle = &$boucles[$idb]; + $date = $boucle->id_table . ".$date"; + + $quote_end = ",'".$boucle->sql_serveur."','text'"; + + if ($type == 'jour') + $boucle->where[]= array("'AND'", + array("'<='", "'DATE_FORMAT($date_deb, \'%Y%m%d\')'",("sql_quote($annee . $mois . $jour$quote_end)")), + array("'>='", "'DATE_FORMAT($date_fin, \'%Y%m%d\')'",("sql_quote($annee . $mois . $jour$quote_end)"))); + elseif ($type == 'mois') + $boucle->where[]= array("'AND'", + array("'<='", "'DATE_FORMAT($date_deb, \'%Y%m\')'",("sql_quote($annee . $mois$quote_end)")), + array("'>='", "'DATE_FORMAT($date_fin, \'%Y%m\')'",("sql_quote($annee . $mois$quote_end)"))); + elseif ($type == 'semaine') + $boucle->where[]= array("'AND'", + array("'>='", + "'DATE_FORMAT($date_fin, \'%Y%m%d\')'", + ("date_debut_semaine($annee, $mois, $jour)")), + array("'<='", + "'DATE_FORMAT($date_deb, \'%Y%m%d\')'", + ("date_fin_semaine($annee, $mois, $jour)"))); + elseif (count($crit->param) > 3) + $boucle->where[]= array("'AND'", + array("'>='", + "'DATE_FORMAT($date_fin, \'%Y%m%d\')'", + ("sql_quote($annee . $mois . $jour$quote_end)")), + array("'<='", "'DATE_FORMAT($date_deb, \'%Y%m%d\')'", ("sql_quote($annee2 . $mois2 . $jour2$quote_end)"))); + // sinon on prend tout +} + + +/** + * Afficher de facon textuelle les dates de debut et fin en fonction des cas + * - Le lundi 20 fevrier a 18h + * - Le 20 fevrier de 18h a 20h + * - Du 20 au 23 fevrier + * - du 20 fevrier au 30 mars + * - du 20 fevrier 2007 au 30 mars 2008 + * $horaire='oui' permet d'afficher l'horaire, toute autre valeur n'indique que le jour + * $forme peut contenir abbr (afficher le nom des jours en abbrege) et ou hcal (generer une date au format hcal) + * + * @param string $date_debut + * @param string $date_fin + * @param string $horaire + * @param string $forme + * @return string + */ +function agenda_affdate_debut_fin($date_debut, $date_fin, $horaire = 'oui', $forme=''){ + $abbr = ''; + if (strpos($forme,'abbr')!==false) $abbr = 'abbr'; + $affdate = "affdate_jourcourt"; + if (strpos($forme,'annee')!==false) $affdate = 'affdate'; + + $dtstart = $dtend = $dtabbr = ""; + if (strpos($forme,'hcal')!==false) { + $dtstart = ""; + $dtend = ""; + $dtabbr = ""; + } + + $date_debut = strtotime($date_debut); + $date_fin = strtotime($date_fin); + $d = date("Y-m-d", $date_debut); + $f = date("Y-m-d", $date_fin); + $h = $horaire=='oui'; + $hd = date("H:i",$date_debut); + $hf = date("H:i",$date_fin); + $au = " " . strtolower(_T('agenda:evenement_date_au')); + $du = _T('agenda:evenement_date_du') . " "; + $s = ""; + if ($d==$f) + { // meme jour + $s = ucfirst(nom_jour($d,$abbr))." ".$affdate($d); + if ($h) + $s .= " $hd"; + $s = "$dtstart$s$dtabbr"; + if ($h AND $hd!=$hf) $s .= "-$dtend$hf$dtabbr"; + } + else if ((date("Y-m",$date_debut))==date("Y-m",$date_fin)) + { // meme annee et mois, jours differents + if ($h){ + $s = $du . $dtstart . affdate_jourcourt($d) . " $hd" . $dtabbr; + $s .= $au . $dtend . $affdate($f); + if ($hd!=$hf) $s .= " $hf"; + $s .= $dtabbr; + } + else { + $s = $du . $dtstart . jour($d) . $dtabbr; + $s .= $au . $dtend . $affdate($f) . $dtabbr; + } + } + else if ((date("Y",$date_debut))==date("Y",$date_fin)) + { // meme annee, mois et jours differents + $s = $du . $dtstart . affdate_jourcourt($d); + if ($h) $s .= " $hd"; + $s .= $dtabbr . $au . $dtend . $affdate($f); + if ($h) $s .= " $hf"; + $s .= $dtabbr; + } + else + { // tout different + $s = $du . $dtstart . affdate($d); + if ($h) + $s .= " ".date("(H:i)",$date_debut); + $s .= $dtabbr . $au . $dtend. affdate($f); + if ($h) + $s .= " ".date("(H:i)",$date_fin); + $s .= $dtabbr; + } + return unicode2charset(charset2unicode($s,'AUTO')); +} + + +?> diff --git a/www/plugins/agenda_3_5/inc/date_gestion.php b/www/plugins/agenda_3_5/inc/date_gestion.php new file mode 100644 index 00000000..65316151 --- /dev/null +++ b/www/plugins/agenda_3_5/inc/date_gestion.php @@ -0,0 +1,46 @@ + \ No newline at end of file diff --git a/www/plugins/agenda_3_5/inc/un-evenement-ical.html b/www/plugins/agenda_3_5/inc/un-evenement-ical.html new file mode 100644 index 00000000..ac77161f --- /dev/null +++ b/www/plugins/agenda_3_5/inc/un-evenement-ical.html @@ -0,0 +1,17 @@ +BEGIN:VEVENT +SUMMARY:[(#EVTITRE|textebrut|filtrer_ical)] +UID:evenement#ID_EVENEMENT @ [(#URL_SITE_SPIP|filtrer_ical)][ +DTSTAMP:(#DATE_CREATION|date_ical)][(#HORAIRE|=={oui}|?{[ +DTSTART:(#DATE_DEBUT|date_ical)][ +DTEND:(#DATE_FIN|date_ical)],[ +DTSTART;VALUE=DATE:(#DATE_DEBUT|affdate{Ymd})][ +DTEND;VALUE=DATE:(#DATE_FIN|agenda_jourdecal{1,Ymd})]})][ +CREATED:(#DATE_CREATION|date_ical)][ +LAST-MODIFIED:(#MAJ|date_ical)][ +LOCATION:(#LIEU|PtoBR|textebrut|filtrer_ical)][ +DESCRIPTION:(#DESCRIPTIF|supprimer_tags|textebrut|filtrer_ical)] +CATEGORIES:[(#TITRE|textebrut|filtrer_ical)] +URL:[(#URL_ARTICLE|parametre_url{id_evenement,#ID_EVENEMENT}|url_absolue|filtrer_ical)][ +SEQUENCE:(#ID_VERSION|moins{1}) +]STATUS:CONFIRMED +END:VEVENT diff --git a/www/plugins/agenda_3_5/javascript/jquery-ui.multidatespicker.js b/www/plugins/agenda_3_5/javascript/jquery-ui.multidatespicker.js new file mode 100755 index 00000000..36511a8c --- /dev/null +++ b/www/plugins/agenda_3_5/javascript/jquery-ui.multidatespicker.js @@ -0,0 +1,461 @@ +/* + * MultiDatesPicker v1.6.1 + * http://multidatespickr.sourceforge.net/ + * + * Copyright 2011, Luca Lauretta + * Dual licensed under the MIT or GPL version 2 licenses. + */ +(function( $ ){ + $.extend($.ui, { multiDatesPicker: { version: "1.6.1" } }); + + $.fn.multiDatesPicker = function(method) { + var mdp_arguments = arguments; + var ret = this; + var today_date = new Date(); + var day_zero = new Date(0); + var mdp_events = {}; + + function removeDate(date, type) { + if(!type) type = 'picked'; + date = dateConvert.call(this, date); + for(var i in this.multiDatesPicker.dates[type]) + if(!methods.compareDates(this.multiDatesPicker.dates[type][i], date)) + return this.multiDatesPicker.dates[type].splice(i, 1).pop(); + } + function removeIndex(index, type) { + if(!type) type = 'picked'; + return this.multiDatesPicker.dates[type].splice(index, 1).pop(); + } + function addDate(date, type, no_sort) { + if(!type) type = 'picked'; + date = dateConvert.call(this, date); + + // @todo: use jQuery UI datepicker method instead + date.setHours(0); + date.setMinutes(0); + date.setSeconds(0); + date.setMilliseconds(0); + + if (methods.gotDate.call(this, date, type) === false) { + this.multiDatesPicker.dates[type].push(date); + if(!no_sort) this.multiDatesPicker.dates[type].sort(methods.compareDates); + } + } + function sortDates(type) { + if(!type) type = 'picked'; + this.multiDatesPicker.dates[type].sort(methods.compareDates); + } + function dateConvert(date, desired_type, date_format) { + if(!desired_type) desired_type = 'object';/* + if(!date_format && (typeof date == 'string')) { + date_format = $(this).datepicker('option', 'dateFormat'); + if(!date_format) date_format = $.datepicker._defaults.dateFormat; + } + */ + return methods.dateConvert.call(this, date, desired_type, date_format); + } + + var methods = { + init : function( options ) { + var $this = $(this); + this.multiDatesPicker.changed = false; + + var mdp_events = { + beforeShow: function(input, inst) { + this.multiDatesPicker.changed = false; + if(this.multiDatesPicker.originalBeforeShow) + this.multiDatesPicker.originalBeforeShow.call(this, input, inst); + }, + onSelect : function(dateText, inst) { + var $this = $(this); + this.multiDatesPicker.changed = true; + + if (dateText) { + $this.multiDatesPicker('toggleDate', dateText); + } + + if (this.multiDatesPicker.mode == 'normal' && this.multiDatesPicker.dates.picked.length > 0 && this.multiDatesPicker.pickableRange) { + var min_date = this.multiDatesPicker.dates.picked[0], + max_date = new Date(min_date.getTime()); + + methods.sumDays(max_date, this.multiDatesPicker.pickableRange-1); + + // counts the number of disabled dates in the range + if(this.multiDatesPicker.adjustRangeToDisabled) { + var c_disabled, + disabled = this.multiDatesPicker.dates.disabled.slice(0); + do { + c_disabled = 0; + for(var i = 0; i < disabled.length; i++) { + if(disabled[i].getTime() <= max_date.getTime()) { + if((min_date.getTime() <= disabled[i].getTime()) && (disabled[i].getTime() <= max_date.getTime()) ) { + c_disabled++; + } + disabled.splice(i, 1); + i--; + } + } + max_date.setDate(max_date.getDate() + c_disabled); + } while(c_disabled != 0); + } + + if(this.multiDatesPicker.maxDate && (max_date > this.multiDatesPicker.maxDate)) + max_date = this.multiDatesPicker.maxDate; + + $this + .datepicker("option", "minDate", min_date) + .datepicker("option", "maxDate", max_date); + } else { + $this + .datepicker("option", "minDate", this.multiDatesPicker.minDate) + .datepicker("option", "maxDate", this.multiDatesPicker.maxDate); + } + + if(this.tagName == 'INPUT') { // for inputs + $this.val( + $this.multiDatesPicker('getDates', 'string') + ); + } + + if(this.multiDatesPicker.originalOnSelect && dateText) + this.multiDatesPicker.originalOnSelect.call(this, dateText, inst); + + // thanks to bibendus83 -> http://sourceforge.net/tracker/?func=detail&atid=1495384&aid=3403159&group_id=358205 + if ($this.datepicker('option', 'altField') != undefined && $this.datepicker('option', 'altField') != "") { + $($this.datepicker('option', 'altField')).val( + $this.multiDatesPicker('getDates', 'string') + ); + } + }, + beforeShowDay : function(date) { + var $this = $(this), + gotThisDate = $this.multiDatesPicker('gotDate', date) !== false, + isDisabledCalendar = $this.datepicker('option', 'disabled'), + isDisabledDate = $this.multiDatesPicker('gotDate', date, 'disabled') !== false, + areAllSelected = this.multiDatesPicker.maxPicks == this.multiDatesPicker.dates.picked.length; + + var custom = [true, '']; + if(this.multiDatesPicker.originalBeforeShowDay) + custom = this.multiDatesPicker.originalBeforeShowDay.call(this, date); + + var highlight_class = gotThisDate ? 'ui-state-highlight' : custom[1]; + var highlight_class = (gotThisDate ? 'ui-state-highlight' : '') + ((custom[1] && gotThisDate) ? ' ' : '') + custom[1]; + var selectable_date = !(isDisabledCalendar || isDisabledDate || (areAllSelected && !highlight_class)); + custom[0] = selectable_date && custom[0]; + custom[1] = highlight_class; + return custom; + }, + onClose: function(dateText, inst) { + if(this.tagName == 'INPUT' && this.multiDatesPicker.changed) { + $(inst.dpDiv[0]).stop(false,true); + setTimeout('$("#'+inst.id+'").datepicker("show")',50); + } + if(this.multiDatesPicker.originalOnClose) this.multiDatesPicker.originalOnClose.call(this, dateText, inst); + } + }; + + if(options) { + this.multiDatesPicker.originalBeforeShow = options.beforeShow; + this.multiDatesPicker.originalOnSelect = options.onSelect; + this.multiDatesPicker.originalBeforeShowDay = options.beforeShowDay; + this.multiDatesPicker.originalOnClose = options.onClose; + + $this.datepicker(options); + + this.multiDatesPicker.minDate = $.datepicker._determineDate(this, options.minDate, null); + this.multiDatesPicker.maxDate = $.datepicker._determineDate(this, options.maxDate, null); + + if(options.addDates) methods.addDates.call(this, options.addDates); + if(options.addDisabledDates) + methods.addDates.call(this, options.addDisabledDates, 'disabled'); + + methods.setMode.call(this, options); + } else { + $this.datepicker(); + } + + $this.datepicker('option', mdp_events); + + if(this.tagName == 'INPUT') $this.val($this.multiDatesPicker('getDates', 'string')); + + // Fixes the altField filled with defaultDate by default + var altFieldOption = $this.datepicker('option', 'altField'); + if (altFieldOption) $(altFieldOption).val($this.multiDatesPicker('getDates', 'string')); + }, + compareDates : function(date1, date2) { + date1 = dateConvert.call(this, date1); + date2 = dateConvert.call(this, date2); + // return > 0 means date1 is later than date2 + // return == 0 means date1 is the same day as date2 + // return < 0 means date1 is earlier than date2 + var diff = date1.getFullYear() - date2.getFullYear(); + if(!diff) { + diff = date1.getMonth() - date2.getMonth(); + if(!diff) + diff = date1.getDate() - date2.getDate(); + } + return diff; + }, + sumDays : function( date, n_days ) { + var origDateType = typeof date; + obj_date = dateConvert.call(this, date); + obj_date.setDate(obj_date.getDate() + n_days); + return dateConvert.call(this, obj_date, origDateType); + }, + dateConvert : function( date, desired_format, dateFormat ) { + var from_format = typeof date; + + if(from_format == desired_format) { + if(from_format == 'object') { + try { + date.getTime(); + } catch (e) { + $.error('Received date is in a non supported format!'); + return false; + } + } + return date; + } + + var $this = $(this); + if(typeof date == 'undefined') date = new Date(0); + + if(desired_format != 'string' && desired_format != 'object' && desired_format != 'number') + $.error('Date format "'+ desired_format +'" not supported!'); + + if(!dateFormat) { + dateFormat = $.datepicker._defaults.dateFormat; + + // thanks to bibendus83 -> http://sourceforge.net/tracker/index.php?func=detail&aid=3213174&group_id=358205&atid=1495382 + var dp_dateFormat = $this.datepicker('option', 'dateFormat'); + if (dp_dateFormat) { + dateFormat = dp_dateFormat; + } + } + + // converts to object as a neutral format + switch(from_format) { + case 'object': break; + case 'string': date = $.datepicker.parseDate(dateFormat, date); break; + case 'number': date = new Date(date); break; + default: $.error('Conversion from "'+ desired_format +'" format not allowed on jQuery.multiDatesPicker'); + } + // then converts to the desired format + switch(desired_format) { + case 'object': return date; + case 'string': return $.datepicker.formatDate(dateFormat, date); + case 'number': return date.getTime(); + default: $.error('Conversion to "'+ desired_format +'" format not allowed on jQuery.multiDatesPicker'); + } + return false; + }, + gotDate : function( date, type ) { + if(!type) type = 'picked'; + for(var i = 0; i < this.multiDatesPicker.dates[type].length; i++) { + if(methods.compareDates.call(this, this.multiDatesPicker.dates[type][i], date) === 0) { + return i; + } + } + return false; + }, + getDates : function( format, type ) { + if(!format) format = 'string'; + if(!type) type = 'picked'; + switch (format) { + case 'object': + return this.multiDatesPicker.dates[type]; + case 'string': + case 'number': + var o_dates = new Array(); + for(var i in this.multiDatesPicker.dates[type]) + o_dates.push( + dateConvert.call( + this, + this.multiDatesPicker.dates[type][i], + format + ) + ); + return o_dates; + + default: $.error('Format "'+format+'" not supported!'); + } + }, + addDates : function( dates, type ) { + if(dates.length > 0) { + if(!type) type = 'picked'; + switch(typeof dates) { + case 'object': + case 'array': + if(dates.length) { + for(var i in dates) + if (typeof dates[i] != "function") + addDate.call(this, dates[i], type, true); + sortDates.call(this, type); + break; + } // else does the same as 'string' + case 'string': + case 'number': + addDate.call(this, dates, type); + break; + default: + $.error('Date format "'+ typeof dates +'" not allowed on jQuery.multiDatesPicker'); + } + $(this).datepicker('refresh'); + } else { + $.error('Empty array of dates received.'); + } + }, + removeDates : function( dates, type ) { + if(!type) type = 'picked'; + var removed = []; + if (Object.prototype.toString.call(dates) === '[object Array]') { + for(var i in dates.sort(function(a,b){return b-a})) { + removed.push(removeDate.call(this, dates[i], type)); + } + } else { + removed.push(removeDate.call(this, dates, type)); + } + $(this).datepicker('refresh'); + return removed; + }, + removeIndexes : function( indexes, type ) { + if(!type) type = 'picked'; + var removed = []; + if (Object.prototype.toString.call(indexes) === '[object Array]') { + for(var i in indexes.sort(function(a,b){return b-a})) { + removed.push(removeIndex.call(this, indexes[i], type)); + } + } else { + removed.push(removeIndex.call(this, indexes, type)); + } + $(this).datepicker('refresh'); + return removed; + }, + resetDates : function ( type ) { + if(!type) type = 'picked'; + this.multiDatesPicker.dates[type] = []; + $(this).datepicker('refresh'); + }, + toggleDate : function( date, type ) { + if(!type) type = 'picked'; + + switch(this.multiDatesPicker.mode) { + case 'daysRange': + this.multiDatesPicker.dates[type] = []; // deletes all picked/disabled dates + var end = this.multiDatesPicker.autoselectRange[1]; + var begin = this.multiDatesPicker.autoselectRange[0]; + if(end < begin) { // switch + end = this.multiDatesPicker.autoselectRange[0]; + begin = this.multiDatesPicker.autoselectRange[1]; + } + for(var i = begin; i < end; i++) + methods.addDates.call(this, methods.sumDays(date, i), type); + break; + default: + if(methods.gotDate.call(this, date) === false) // adds dates + methods.addDates.call(this, date, type); + else // removes dates + methods.removeDates.call(this, date, type); + break; + } + }, + setMode : function( options ) { + var $this = $(this); + if(options.mode) this.multiDatesPicker.mode = options.mode; + + switch(this.multiDatesPicker.mode) { + case 'normal': + for(option in options) + switch(option) { + case 'maxPicks': + case 'minPicks': + case 'pickableRange': + case 'adjustRangeToDisabled': + this.multiDatesPicker[option] = options[option]; + break; + //default: $.error('Option ' + option + ' ignored for mode "'.options.mode.'".'); + } + break; + case 'daysRange': + case 'weeksRange': + var mandatory = 1; + for(option in options) + switch(option) { + case 'autoselectRange': + mandatory--; + case 'pickableRange': + case 'adjustRangeToDisabled': + this.multiDatesPicker[option] = options[option]; + break; + //default: $.error('Option ' + option + ' does not exist for setMode on jQuery.multiDatesPicker'); + } + if(mandatory > 0) $.error('Some mandatory options not specified!'); + break; + } + + /* + if(options.pickableRange) { + $this.datepicker("option", "maxDate", options.pickableRange); + $this.datepicker("option", "minDate", this.multiDatesPicker.minDate); + } + */ + + if(mdp_events.onSelect) + mdp_events.onSelect(); + $this.datepicker('refresh'); + } + }; + + this.each(function() { + if (!this.multiDatesPicker) { + this.multiDatesPicker = { + dates: { + picked: [], + disabled: [] + }, + mode: 'normal', + adjustRangeToDisabled: true + }; + } + + if(methods[method]) { + var exec_result = methods[method].apply(this, Array.prototype.slice.call(mdp_arguments, 1)); + switch(method) { + case 'getDates': + case 'removeDates': + case 'gotDate': + case 'sumDays': + case 'compareDates': + case 'dateConvert': + ret = exec_result; + } + return exec_result; + } else if( typeof method === 'object' || ! method ) { + return methods.init.apply(this, mdp_arguments); + } else { + $.error('Method ' + method + ' does not exist on jQuery.multiDatesPicker'); + } + return false; + }); + + if(method != 'gotDate' && method != 'getDates') { + aaaa = 1; + } + + return ret; + }; + + var PROP_NAME = 'multiDatesPicker'; + var dpuuid = new Date().getTime(); + var instActive; + + $.multiDatesPicker = {version: false}; + //$.multiDatesPicker = new MultiDatesPicker(); // singleton instance + $.multiDatesPicker.initialized = false; + $.multiDatesPicker.uuid = new Date().getTime(); + $.multiDatesPicker.version = $.ui.multiDatesPicker.version; + + // Workaround for #4055 + // Add another global to avoid noConflict issues with inline event handlers + window['DP_jQuery_' + dpuuid] = $; +})( jQuery ); \ No newline at end of file diff --git a/www/plugins/agenda_3_5/lang/agenda.xml b/www/plugins/agenda_3_5/lang/agenda.xml new file mode 100644 index 00000000..9b8cd309 --- /dev/null +++ b/www/plugins/agenda_3_5/lang/agenda.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/www/plugins/agenda_3_5/lang/agenda_de.php b/www/plugins/agenda_3_5/lang/agenda_de.php new file mode 100644 index 00000000..49fad442 --- /dev/null +++ b/www/plugins/agenda_3_5/lang/agenda_de.php @@ -0,0 +1,157 @@ + 'Ihre Abwesenheit wurde erfasst', + 'activite_editoriale' => 'Redaktionelle Aktivität', + 'afficher_calendrier' => 'Kalender anzeigen', + 'agenda' => 'Kalender', + 'ajouter_repetition' => 'Wiederholungen hinzufügen', + 'ajouter_un_evenement' => 'diesem Artikel ein Event hinzufügen', + 'annee_precedente' => 'Jahr davor', # MODIF + 'annee_suivante' => 'Jahr danach', + 'aucun_evenement' => 'Kein Event', + 'aucun_inscrit' => 'Aucun inscrit', # NEW + 'aucune_rubrique_mode_agenda' => 'In der Grundeinstellung können Events in alle Rubriken eingetragen werden. Wenn sie den Kalender gezielt für eine oder mehrere Rubriken aktivieren, dann steht ihnen der Kalender nur für diese Rubriken zur Verfügung.', + + // B + 'bouton_annuler' => 'Abbrechen', + 'bouton_supprimer' => 'Löschen', + + // C + 'confirm_suppression_inscription' => 'Wollen sie diese Anmeldung wirklich löschen?', + 'confirm_suppression_inscription_toutes' => 'Voulez-vous vraiment supprimer toutes les inscriptions ?', # NEW + 'connexion_necessaire_pour_inscription' => 'Merci de vous connecter pour pouvoir vous inscrire à cet événement.', # NEW + 'creer_evenement' => 'Event neu anlegen', + + // E + 'erreur_article_interdit' => 'Sie dürfen dieses Event nicht diesem Artikel zuordnen', + 'erreur_article_manquant' => 'Sie müssen einen Artikel angeben', + 'erreur_date' => 'Falsches Datum', + 'erreur_date_avant_apres' => 'Das Enddatum muß nach dem Anfangsdatum liegen!', + 'erreur_date_corrigee' => 'Das Datum wurde korrigiert', + 'erreur_heure' => 'Falsche Uhrzeit', + 'erreur_heure_corrigee' => 'Die Uhrzeit wurde korrigiert', + 'evenement_adresse' => 'Adresse', + 'evenement_article' => 'Verbunden mit Artikel', + 'evenement_autres_occurences' => 'Weitere Zuordnungen:', + 'evenement_date' => 'Datum', + 'evenement_date_a' => 'bis ', + 'evenement_date_a_immediat' => 'zu ', + 'evenement_date_au' => 'bis ', + 'evenement_date_de' => 'Von ', + 'evenement_date_debut' => 'Anfangsdatum', + 'evenement_date_du' => 'Vom ', + 'evenement_date_fin' => 'Enddatum', + 'evenement_date_inscription' => 'Date d\'inscription', # NEW + 'evenement_descriptif' => 'Beschreibung', + 'evenement_horaire' => 'ganztägig', + 'evenement_lieu' => 'Ort', + 'evenement_repetitions' => 'Wiederholungen', + 'evenement_titre' => 'Titel', + 'evenements' => 'Event', + 'evenements_a_venir' => 'In der Zukunft', + 'evenements_depuis_debut' => 'Alle', + 'explication_synchro_flux_ical' => 'Le plugin Agenda fournit un flux des évènements au format iCal. Certains clients ne mettent à jour un évènement que si un numéro de version (indiquant ansi qu\'il y a eu modification) est présent dans ce flux. Pour que ce numéro de version soit intégré dans le flux iCal généré, vous devez activer le suivi des révisions pour les évènements (menu Configuration > Révisions).', # NEW + 'explication_synchro_flux_ical_titre' => 'Synchronisation du flux iCal', # NEW + + // F + 'fermer' => 'Schließen', + + // I + 'icone_creer_evenement' => 'Neue Veranstaltung anlegen', + 'icone_modifier_evenement' => 'Event Bearbeiten', + 'indiquez_votre_choix' => 'Indiquez votre choix', # NEW + 'info_1_mois' => '1 mois', # NEW + 'info_1_place' => '1 Platz', + 'info_aucun_evenement' => 'Kein Event', + 'info_evenement' => 'Event', + 'info_evenement_poubelle' => 'Event gelöscht', + 'info_evenement_propose' => 'Event vorgeschlagen', + 'info_evenement_publie' => 'Event veröffentlicht', + 'info_evenements' => 'Event', + 'info_inscription' => 'Inscription en ligne :', # NEW + 'info_lieu' => 'Ort:', + 'info_nb_inscrits' => '@nb@ inscrits', # NEW + 'info_nb_mois' => '@nb@ mois', # NEW + 'info_nb_places' => '@nb@ Plätze', + 'info_nombre_evenements' => '@nb@ Events', + 'info_nouvel_evenement' => 'Neues Event', + 'info_reponse_inscription_non' => 'nein', + 'info_reponse_inscription_nsp' => '?', + 'info_reponse_inscription_oui' => 'ja', + 'info_reponse_inscriptions' => 'Réponse', # NEW + 'info_reponses_inscriptions' => 'Antworten', + 'info_un_evenement' => 'ein Event', + 'info_un_inscrit' => 'Un inscrit', # NEW + 'inscrits' => 'Anmeldungen', + + // L + 'label_annee' => 'Année', # NEW + 'label_inscription' => 'Online-Anmeldungen', + 'label_periode_saison' => 'Saison', # NEW + 'label_places' => 'Maximale Anzahl Plätze', + 'label_reponse_jyparticipe' => 'Ich komme', + 'label_reponse_jyparticipe_pas' => 'Ich komme nicht', + 'label_reponse_jyparticipe_peutetre' => 'Ich komem vielleicht', + 'label_vous_inscrire' => 'Ihre Teilnahme', + 'lien_desinscrire' => 'Entfernen', + 'lien_desinscrire_tous' => 'Supprimer toutes les inscriptions', # NEW + 'lien_retirer_evenement' => 'Löschen', + 'liste_inscrits' => 'Liste der Anmeldungen', + + // M + 'mois_precedent' => 'voriger Monat', + 'mois_suivant' => 'nächster Monat', + + // N + 'nb_repetitions' => '@nb@ Wiederholungen', + + // P + 'participation_incertaine_prise_en_compte' => 'Ihre vorläufige Anmeldung wurde gespeichert', + 'participation_prise_en_compte' => 'Ihre Anmeldung wurde gespeichert', + 'probleme_technique' => 'Ein technisches Problem ist aufgetreten. Bitte versuchen sie es später noch einmal.', + + // R + 'repetition' => 'Wiederholung', + 'repetition_de' => 'Wiederholung von', + 'retour_evenement' => 'Retour à l\'événement', # NEW + 'rubrique_activer_agenda' => 'Kalender für diese Rubrik aktivieren', + 'rubrique_dans_une_rubrique_mode_agenda' => 'Diese Rubrik kann den Kalender nutzen, denn sie befindet sich innerhalb einer Rubrik, für die den Kalende nutzen darf.', + 'rubrique_desactiver_agenda' => 'Kalender in dieser Rubrik deaktivieren', + 'rubrique_liste_evenements_de' => 'Events der Rubrik', + 'rubrique_mode_agenda' => 'Der Kalender wurde für diese Rubrik und ihre Artikel aktiviert. ', + 'rubrique_sans_gestion_evenement' => 'Der Kalender ist für diese Rubrik noch nicht aktiviert. ', + 'rubriques' => 'Kalender-Rubriken', + + // S + 'sans_titre' => '(ohne Titel)', + + // T + 'telecharger' => 'Herunterladen', # MODIF + 'telecharger_oui' => 'Seulement les réponses positives', # NEW + 'telecharger_toutes' => 'Toutes les réponses', # NEW + 'telecharger_toutes_tous_evenements' => 'Toutes les réponses aux inscriptions', # NEW + 'texte_agenda' => 'KALENDER', # MODIF + 'texte_evenement_statut' => 'Dieses Event ist', + 'texte_logo_objet' => 'EVENT-LOGO', # MODIF + 'titre_cadre_ajouter_evenement' => 'Event hinzufügen', + 'titre_cadre_modifier_evenement' => 'Event umändern', + 'titre_sur_l_agenda' => 'Im Kalender', + 'titre_sur_l_agenda_aussi' => 'Et aussi...', # NEW + 'toutes_rubriques' => 'Alle', + + // U + 'une_repetition' => '1 Wiederholung', + + // V + 'voir_evenements_rubrique' => 'Die Events der Rubrik einsehen' +); + +?> diff --git a/www/plugins/agenda_3_5/lang/agenda_en.php b/www/plugins/agenda_3_5/lang/agenda_en.php new file mode 100644 index 00000000..1e5bbc96 --- /dev/null +++ b/www/plugins/agenda_3_5/lang/agenda_en.php @@ -0,0 +1,157 @@ + 'Your absence is recorded', + 'activite_editoriale' => 'Editorial activity', + 'afficher_calendrier' => 'Show the calendar', + 'agenda' => 'Agenda', + 'ajouter_repetition' => 'Add repetitions', + 'ajouter_un_evenement' => 'Add one event to this article', + 'annee_precedente' => 'previous year', + 'annee_suivante' => 'next year', + 'aucun_evenement' => 'no event', + 'aucun_inscrit' => 'No registered', + 'aucune_rubrique_mode_agenda' => 'By default, all sections can use the events. If you activate the agenda mode on one or more sections, event management will be limited in its subtree.', + + // B + 'bouton_annuler' => 'Cancel', + 'bouton_supprimer' => 'Delete', + + // C + 'confirm_suppression_inscription' => 'Are you sure you want to delete this registration?', + 'confirm_suppression_inscription_toutes' => 'Do you really want to delete all registrations?', + 'connexion_necessaire_pour_inscription' => 'Please log in to register to this event.', + 'creer_evenement' => 'Create an event', + + // E + 'erreur_article_interdit' => 'You have no right to associate this event to this article', + 'erreur_article_manquant' => 'You should link to an article', + 'erreur_date' => 'This date is incorrect', + 'erreur_date_avant_apres' => 'Please enter an end date after the date of beginning.', + 'erreur_date_corrigee' => 'The date has been corrected', + 'erreur_heure' => 'This hour is incorrect', + 'erreur_heure_corrigee' => 'The hour has been corrected', + 'evenement_adresse' => 'Address', + 'evenement_article' => 'Link to the article', + 'evenement_autres_occurences' => 'Other occurences :', + 'evenement_date' => 'Date', + 'evenement_date_a' => 'to ', + 'evenement_date_a_immediat' => 'at ', + 'evenement_date_au' => 'To ', + 'evenement_date_de' => 'From ', + 'evenement_date_debut' => 'Starting date', + 'evenement_date_du' => 'From ', + 'evenement_date_fin' => 'Ending date', + 'evenement_date_inscription' => 'Registration date', + 'evenement_descriptif' => 'Description', + 'evenement_horaire' => 'All day', + 'evenement_lieu' => 'Location', + 'evenement_repetitions' => 'Repetition', + 'evenement_titre' => 'Title', + 'evenements' => 'Events', + 'evenements_a_venir' => 'Next', + 'evenements_depuis_debut' => 'All', + 'explication_synchro_flux_ical' => 'Le plugin Agenda fournit un flux des évènements au format iCal. Certains clients ne mettent à jour un évènement que si un numéro de version (indiquant ansi qu\'il y a eu modification) est présent dans ce flux. Pour que ce numéro de version soit intégré dans le flux iCal généré, vous devez activer le suivi des révisions pour les évènements (menu Configuration > Révisions).', # NEW + 'explication_synchro_flux_ical_titre' => 'Synchronisation du flux iCal', # NEW + + // F + 'fermer' => 'close', + + // I + 'icone_creer_evenement' => 'Generate a new event', + 'icone_modifier_evenement' => 'Edit the event', + 'indiquez_votre_choix' => 'Indicate your choice', + 'info_1_mois' => '1 month', + 'info_1_place' => '1 seat', + 'info_aucun_evenement' => 'No event', + 'info_evenement' => 'Event', + 'info_evenement_poubelle' => 'Event deleted', + 'info_evenement_propose' => 'Event proposed', + 'info_evenement_publie' => 'Event published', + 'info_evenements' => 'Events', + 'info_inscription' => 'Online registration:', + 'info_lieu' => 'Place:', + 'info_nb_inscrits' => '@nb@ registered', + 'info_nb_mois' => '@nb@ months', + 'info_nb_places' => '@nb@ seats', + 'info_nombre_evenements' => '@nb@ events', + 'info_nouvel_evenement' => 'New event', + 'info_reponse_inscription_non' => 'no', + 'info_reponse_inscription_nsp' => '?', + 'info_reponse_inscription_oui' => 'yes', + 'info_reponse_inscriptions' => 'Answer', + 'info_reponses_inscriptions' => 'Answers:', + 'info_un_evenement' => 'One event', + 'info_un_inscrit' => 'One registered', + 'inscrits' => 'Registrations', + + // L + 'label_annee' => 'Year', + 'label_inscription' => 'Online registration', + 'label_periode_saison' => 'Season', + 'label_places' => 'Limit the seats number', + 'label_reponse_jyparticipe' => 'I\'ll be there', + 'label_reponse_jyparticipe_pas' => 'I won\'t be there', + 'label_reponse_jyparticipe_peutetre' => 'Maybe I\'ll be there', + 'label_vous_inscrire' => 'Your participation', + 'lien_desinscrire' => 'Remove', + 'lien_desinscrire_tous' => 'Delete all registrations', + 'lien_retirer_evenement' => 'Deleted ', + 'liste_inscrits' => 'Registrations', + + // M + 'mois_precedent' => 'previous month', + 'mois_suivant' => 'next month', + + // N + 'nb_repetitions' => '@nb@ repetitions', + + // P + 'participation_incertaine_prise_en_compte' => 'Your possible participation is registered', + 'participation_prise_en_compte' => 'Your participation is recorded', + 'probleme_technique' => 'A technical problem occurred. Try again later.', + + // R + 'repetition' => 'Repetition', + 'repetition_de' => 'Repetition of', + 'retour_evenement' => 'Back to the event', + 'rubrique_activer_agenda' => 'Activate the agenda for this section', + 'rubrique_dans_une_rubrique_mode_agenda' => 'This section allows you to use the events as it is in a section where agenda mode has been enabled', + 'rubrique_desactiver_agenda' => 'Disable agenda mode for this section', + 'rubrique_liste_evenements_de' => 'Events of the section', + 'rubrique_mode_agenda' => 'The agenda mode is enabled for this section and its subtree', + 'rubrique_sans_gestion_evenement' => 'The agenda mode is not enabled for this section', + 'rubriques' => 'Agenda sections', + + // S + 'sans_titre' => '(without title)', + + // T + 'telecharger' => 'Download (csv)', + 'telecharger_oui' => 'Only positive answers', + 'telecharger_toutes' => 'All answers', + 'telecharger_toutes_tous_evenements' => 'All answers to registrations', + 'texte_agenda' => 'Agenda', + 'texte_evenement_statut' => 'This event is:', + 'texte_logo_objet' => 'Event\'s logo', + 'titre_cadre_ajouter_evenement' => 'Add one event', + 'titre_cadre_modifier_evenement' => 'Modify one event', + 'titre_sur_l_agenda' => 'On agenda', + 'titre_sur_l_agenda_aussi' => 'And also...', + 'toutes_rubriques' => 'All', + + // U + 'une_repetition' => '1 repetition', + + // V + 'voir_evenements_rubrique' => 'See this section\'s events' +); + +?> diff --git a/www/plugins/agenda_3_5/lang/agenda_es.php b/www/plugins/agenda_3_5/lang/agenda_es.php new file mode 100644 index 00000000..ffba447a --- /dev/null +++ b/www/plugins/agenda_3_5/lang/agenda_es.php @@ -0,0 +1,157 @@ + 'Su ausencia se ha registrado', + 'activite_editoriale' => 'Actividad Editorial', + 'afficher_calendrier' => 'Mostrar el calendario', + 'agenda' => 'Agenda', + 'ajouter_repetition' => 'Añadir repeticiones', + 'ajouter_un_evenement' => 'Añadir un evento a este artículo', + 'annee_precedente' => 'Año anterior', + 'annee_suivante' => 'Año siguiente', + 'aucun_evenement' => 'Ningún evento', + 'aucun_inscrit' => 'Ningún inscrito', + 'aucune_rubrique_mode_agenda' => 'Por defecto, todas las secciones permiten utilizar los eventos. Si activa el modo agenda sobre una o más secciones, la gestión de enventos se limitará a su rama.', + + // B + 'bouton_annuler' => 'Cancelar', + 'bouton_supprimer' => 'Eliminar', + + // C + 'confirm_suppression_inscription' => '¿Desea realmente eliminar esta inscripción?', + 'confirm_suppression_inscription_toutes' => '¿Desea realmente eliminar todas las inscripciones?', + 'connexion_necessaire_pour_inscription' => 'Gracias por conectarse para poder inscribirse a este evento.', + 'creer_evenement' => 'Crear un evento', + + // E + 'erreur_article_interdit' => 'No tiene permiso para asociar este evento a este artículo', + 'erreur_article_manquant' => 'Debe indicar un artículo', + 'erreur_date' => 'Esta fecha es incorrecta', + 'erreur_date_avant_apres' => '¡Indique una fecha de finalización posterior a la fecha de inicio!', + 'erreur_date_corrigee' => 'La fecha ha sido corregida', + 'erreur_heure' => 'Esta hora es incorrecta', + 'erreur_heure_corrigee' => 'La hora ha sido corregida', + 'evenement_adresse' => 'Dirección', + 'evenement_article' => 'Asociado al artículo', + 'evenement_autres_occurences' => 'Otras ocasiones:', + 'evenement_date' => 'Fecha', + 'evenement_date_a' => 'a las ', + 'evenement_date_a_immediat' => 'a las ', + 'evenement_date_au' => 'Al', + 'evenement_date_de' => 'De ', + 'evenement_date_debut' => 'Fecha de inicio', + 'evenement_date_du' => 'Del ', + 'evenement_date_fin' => 'Fecha de finalización', + 'evenement_date_inscription' => 'Fecha de inscripción', + 'evenement_descriptif' => 'Descripción', + 'evenement_horaire' => 'Todo el día', + 'evenement_lieu' => 'Lugar', + 'evenement_repetitions' => 'Repeticiones', + 'evenement_titre' => 'Título', + 'evenements' => 'Eventos', + 'evenements_a_venir' => 'Próximos', + 'evenements_depuis_debut' => 'Desde el inicio', + 'explication_synchro_flux_ical' => 'Le plugin Agenda fournit un flux des évènements au format iCal. Certains clients ne mettent à jour un évènement que si un numéro de version (indiquant ansi qu\'il y a eu modification) est présent dans ce flux. Pour que ce numéro de version soit intégré dans le flux iCal généré, vous devez activer le suivi des révisions pour les évènements (menu Configuration > Révisions).', # NEW + 'explication_synchro_flux_ical_titre' => 'Synchronisation du flux iCal', # NEW + + // F + 'fermer' => 'cerrar', + + // I + 'icone_creer_evenement' => 'Crear un nuevo evento', + 'icone_modifier_evenement' => 'Modificar el evento', + 'indiquez_votre_choix' => 'Indique su elección', + 'info_1_mois' => '1 mes', + 'info_1_place' => '1 plaza', + 'info_aucun_evenement' => 'Ningún evento', + 'info_evenement' => 'Evento', + 'info_evenement_poubelle' => 'Evento eliminado', + 'info_evenement_propose' => 'Evento propuesto', + 'info_evenement_publie' => 'Evento publicado', + 'info_evenements' => 'Eventos', + 'info_inscription' => 'Inscripción en línea:', + 'info_lieu' => 'Lugar:', + 'info_nb_inscrits' => '@nb@ inscritos', + 'info_nb_mois' => '@nb@ meses', + 'info_nb_places' => '@nb@ plazas', + 'info_nombre_evenements' => '@nb@ eventos', + 'info_nouvel_evenement' => 'Nuevo evento', + 'info_reponse_inscription_non' => 'no', + 'info_reponse_inscription_nsp' => '¿?', + 'info_reponse_inscription_oui' => 'sí', + 'info_reponse_inscriptions' => 'Respuesta', + 'info_reponses_inscriptions' => 'Respuestas:', + 'info_un_evenement' => '1 evento', + 'info_un_inscrit' => 'Un inscrito', + 'inscrits' => 'Inscripciones', + + // L + 'label_annee' => 'Año', + 'label_inscription' => 'Inscripción en línea ', + 'label_periode_saison' => 'Estación', + 'label_places' => 'Limitar el número de lugares', + 'label_reponse_jyparticipe' => 'Asistiré', + 'label_reponse_jyparticipe_pas' => 'No asistiré', + 'label_reponse_jyparticipe_peutetre' => 'Tal vez asista', + 'label_vous_inscrire' => 'Su participación', + 'lien_desinscrire' => 'Eliminar', + 'lien_desinscrire_tous' => 'Eliminar todas las inscripciones', + 'lien_retirer_evenement' => 'Eliminar', + 'liste_inscrits' => 'Lista de inscripciones', + + // M + 'mois_precedent' => 'mes anterior', + 'mois_suivant' => 'mes siguiente', + + // N + 'nb_repetitions' => '@nb@ repeticiones', + + // P + 'participation_incertaine_prise_en_compte' => 'Su eventual participación ha sido registrada', + 'participation_prise_en_compte' => 'Su participación ha sido registrada', + 'probleme_technique' => 'Ha habido un problema técnico. Por favor, inténtelo más tarde.', + + // R + 'repetition' => 'Repetición', + 'repetition_de' => 'Repetición de', + 'retour_evenement' => 'Volver al evento', + 'rubrique_activer_agenda' => 'Activar el modo agenda', + 'rubrique_dans_une_rubrique_mode_agenda' => 'Esta sección permite utilizar eventos porque está en una sección en la que el modo agenda ha sido activado', + 'rubrique_desactiver_agenda' => 'Desactivar el modo agenda', + 'rubrique_liste_evenements_de' => 'Eventos de la sección', + 'rubrique_mode_agenda' => 'El modo agenda está activado para esta sección y su rama', + 'rubrique_sans_gestion_evenement' => 'El modo agenda no está activado para esta sección', + 'rubriques' => 'Secciones Agenda', + + // S + 'sans_titre' => '(sin título)', + + // T + 'telecharger' => 'Descargar', + 'telecharger_oui' => 'Solamente respuestas positivas', + 'telecharger_toutes' => 'Todas las respuestas', + 'telecharger_toutes_tous_evenements' => 'Todas las respuestas a las inscripciones', + 'texte_agenda' => 'Agenda', + 'texte_evenement_statut' => 'Este evento es:', + 'texte_logo_objet' => 'Logo del evento', + 'titre_cadre_ajouter_evenement' => 'Añadir un evento', + 'titre_cadre_modifier_evenement' => 'Modificar un evento', + 'titre_sur_l_agenda' => 'En la agenda', + 'titre_sur_l_agenda_aussi' => 'Y también...', + 'toutes_rubriques' => 'Todas', + + // U + 'une_repetition' => '1 repetición', + + // V + 'voir_evenements_rubrique' => 'Ver los eventos de la sección' +); + +?> diff --git a/www/plugins/agenda_3_5/lang/agenda_fr.php b/www/plugins/agenda_3_5/lang/agenda_fr.php new file mode 100644 index 00000000..f93569b1 --- /dev/null +++ b/www/plugins/agenda_3_5/lang/agenda_fr.php @@ -0,0 +1,155 @@ + 'Votre absence est enregistrée', + 'activite_editoriale' => 'Activité Éditoriale', + 'afficher_calendrier' => 'Afficher le calendrier', + 'agenda' => 'Agenda', + 'ajouter_repetition' => 'Ajouter des répétitions', + 'ajouter_un_evenement' => 'ajouter un événement à cet article', + 'annee_precedente' => 'année précédente', + 'annee_suivante' => 'année suivante', + 'aucun_evenement' => 'aucun événement', + 'aucun_inscrit' => 'Aucun inscrit', + 'aucune_rubrique_mode_agenda' => 'Par défaut, toutes les rubriques permettent d\'utiliser les événements. Si vous activez le mode agenda sur une ou plusieurs rubriques, la gestion des événements sera limitée a sa branche.', + + // B + 'bouton_annuler' => 'Annuler', + 'bouton_supprimer' => 'Supprimer', + + // C + 'confirm_suppression_inscription' => 'Voulez-vous vraiment supprimer cette inscription ?', + 'confirm_suppression_inscription_toutes' => 'Voulez-vous vraiment supprimer toutes les inscriptions ?', + 'connexion_necessaire_pour_inscription' => 'Merci de vous connecter pour pouvoir vous inscrire à cet événement.', + 'creer_evenement' => 'Créer un événement', + + // E + 'erreur_article_interdit' => 'Vous n\'avez pas le droit d\'associer cet événement à cet article', + 'erreur_article_manquant' => 'Vous devez indiquer un article', + 'erreur_date' => 'Cette date est incorrecte', + 'erreur_date_avant_apres' => 'Indiquez une date de fin après la date de début !', + 'erreur_date_corrigee' => 'La date a été corrigée', + 'erreur_heure' => 'Cette heure est incorrecte', + 'erreur_heure_corrigee' => 'L\'heure a été corrigée', + 'evenement_adresse' => 'Adresse', + 'evenement_article' => 'Associé à l\'article', + 'evenement_autres_occurences' => 'Autres occurences :', + 'evenement_date' => 'Date', + 'evenement_date_a' => 'à ', + 'evenement_date_a_immediat' => 'à ', + 'evenement_date_au' => 'Au ', + 'evenement_date_de' => 'De ', + 'evenement_date_debut' => 'Date de début', + 'evenement_date_du' => 'Du ', + 'evenement_date_fin' => 'Date de fin', + 'evenement_date_inscription' => 'Date d\'inscription', + 'evenement_descriptif' => 'Descriptif', + 'evenement_horaire' => 'Toute la journée', + 'evenement_lieu' => 'Lieu', + 'evenement_repetitions' => 'Répétitions', + 'evenement_titre' => 'Titre', + 'evenements' => 'Événements', + 'evenements_a_venir' => 'À venir', + 'evenements_depuis_debut' => 'Depuis le début', + 'explication_synchro_flux_ical' => 'Le plugin Agenda fournit un flux des évènements au format iCal. Certains clients ne mettent à jour un évènement que si un numéro de version (indiquant ansi qu\'il y a eu modification) est présent dans ce flux. Pour que ce numéro de version soit intégré dans le flux iCal généré, vous devez activer le suivi des révisions pour les évènements (menu Configuration > Révisions).', + 'explication_synchro_flux_ical_titre' => 'Synchronisation du flux iCal', + + // F + 'fermer' => 'fermer', + + // I + 'icone_creer_evenement' => 'Créer un nouvel événement', + 'icone_modifier_evenement' => 'Modifier l\'événement', + 'indiquez_votre_choix' => 'Indiquez votre choix', + 'info_1_mois' => '1 mois', + 'info_1_place' => '1 place', + 'info_aucun_evenement' => 'Aucun événement', + 'info_evenement' => 'Événement', + 'info_evenement_poubelle' => 'Événement supprimé', + 'info_evenement_propose' => 'Événement proposé', + 'info_evenement_publie' => 'Événement publié', + 'info_evenements' => 'Événements', + 'info_inscription' => 'Inscription en ligne :', + 'info_lieu' => 'Lieu :', + 'info_nb_inscrits' => '@nb@ inscrits', + 'info_nb_mois' => '@nb@ mois', + 'info_nb_places' => '@nb@ places', + 'info_nombre_evenements' => '@nb@ événements', + 'info_nouvel_evenement' => 'Nouvel événement', + 'info_reponse_inscription_non' => 'non', + 'info_reponse_inscription_nsp' => '?', + 'info_reponse_inscription_oui' => 'oui', + 'info_reponse_inscriptions' => 'Réponse', + 'info_reponses_inscriptions' => 'Réponses :', + 'info_un_evenement' => '1 événement', + 'info_un_inscrit' => 'Un inscrit', + 'inscrits' => 'Inscriptions', + + // L + 'label_annee' => 'Année', + 'label_inscription' => 'Inscription en ligne', + 'label_periode_saison' => 'Saison', + 'label_places' => 'Limiter le nombre de places', + 'label_reponse_jyparticipe' => 'J\'y serai', + 'label_reponse_jyparticipe_pas' => 'Je n\'y vais pas', + 'label_reponse_jyparticipe_peutetre' => 'J\'y serai peut-être', + 'label_vous_inscrire' => 'Votre participation', + 'lien_desinscrire' => 'Supprimer', + 'lien_desinscrire_tous' => 'Supprimer toutes les inscriptions', + 'lien_retirer_evenement' => 'Supprimer', + 'liste_inscrits' => 'Liste des inscriptions', + + // M + 'mois_precedent' => 'mois précédent', + 'mois_suivant' => 'mois suivant', + + // N + 'nb_repetitions' => '@nb@ répétitions', + + // P + 'participation_incertaine_prise_en_compte' => 'Votre participation éventuelle est enregistrée', + 'participation_prise_en_compte' => 'Votre participation est enregistrée', + 'probleme_technique' => 'Un problème technique est survenu. Reessayez plus tard.', + + // R + 'repetition' => 'Répétition', + 'repetition_de' => 'Répétition de', + 'retour_evenement' => 'Retour à l\'événement', + 'rubrique_activer_agenda' => 'Activer le mode agenda', + 'rubrique_dans_une_rubrique_mode_agenda' => 'Cette rubrique permet d\'utiliser les événements car elle est dans une rubrique dont le mode agenda a été activé', + 'rubrique_desactiver_agenda' => 'Désactiver le mode agenda', + 'rubrique_liste_evenements_de' => 'Événements de la rubrique', + 'rubrique_mode_agenda' => 'Le mode agenda est activé pour cette rubrique et sa branche', + 'rubrique_sans_gestion_evenement' => 'Le mode agenda n\'est pas activé pour cette rubrique', + 'rubriques' => 'Rubriques Agenda', + + // S + 'sans_titre' => '(sans titre)', + + // T + 'telecharger' => 'Télécharger (csv)', + 'telecharger_oui' => 'Seulement les réponses positives', + 'telecharger_toutes' => 'Toutes les réponses', + 'telecharger_toutes_tous_evenements' => 'Toutes les réponses aux inscriptions', + 'texte_agenda' => 'Agenda', + 'texte_evenement_statut' => 'Cet événement est :', + 'texte_logo_objet' => 'Logo de l\'événement', + 'titre_cadre_ajouter_evenement' => 'Ajouter un événement', + 'titre_cadre_modifier_evenement' => 'Modifier un événement', + 'titre_sur_l_agenda' => 'Sur l\'agenda', + 'titre_sur_l_agenda_aussi' => 'Et aussi...', + 'toutes_rubriques' => 'Toutes', + + // U + 'une_repetition' => '1 répétition', + + // V + 'voir_evenements_rubrique' => 'Voir les événements de la rubrique' +); + +?> diff --git a/www/plugins/agenda_3_5/lang/agenda_nl.php b/www/plugins/agenda_3_5/lang/agenda_nl.php new file mode 100644 index 00000000..fabba515 --- /dev/null +++ b/www/plugins/agenda_3_5/lang/agenda_nl.php @@ -0,0 +1,60 @@ + 'Hoofdactiviteit', + 'ajouter_un_evenement' => 'een gebeurtenis toevoegen aan dit artikel', +// B + 'bouton_annuler' => 'Annuleren', + 'bouton_supprimer' => 'Afschaffen', +// E + 'evenement_autres_occurences' => 'Andere omstandigheden:', + 'evenement_date' => 'Date', + 'evenement_date_a' => 'tot ', + 'evenement_date_a_immediat' => 'om ', + 'evenement_date_au' => 'Tot ', + 'evenement_date_de' => 'Van ', + 'evenement_date_debut' => 'Aanvangsdatum', + 'evenement_date_du' => 'Van ', + 'evenement_date_fin' => 'Einddatum', + 'evenement_descriptif' => 'Beschrijvend', + 'evenement_horaire' => 'Dienstregeling', + 'evenement_lieu' => 'Plaats', + 'evenement_repetitions' => 'Herhalingen', + 'evenement_titre' => 'Titel', + 'evenements' => 'Gebeurtenissen', +// I + 'icone_creer_evenement' => 'Een nieuwe gebeurtenis creëren', + 'info_evenements' => 'Gebeurtenissen', + 'info_nombre_evenements' => '@nb@ gebeurtenissen,', + 'info_un_evenement' => 'een gebeurtenis,', + 'item_mots_cles_association_evenements' => 'aan de gebeurtenissen', +// L + 'lien_retirer_evenement' => 'Afschaffen', +// N + 'nb_mots_clefs' => '@nb@ trefwoorden', + 'nb_repetitions' => '@nb@ herhalingen', +// R + 'repetition_de' => 'Herhaling van', +// S + 'sans_titre' => '(zonder titel)', +// T + 'texte_agenda' => 'AGENDA', + 'titre_cadre_ajouter_evenement' => 'Een gebeurtenis toevoegen', + 'titre_cadre_modifier_evenement' => 'Een gebeurtenis wijzigen', + 'titre_sur_l_agenda' => 'Op de agenda', +// U + 'un_mot_clef' => '1 trefwoord', + 'une_repetition' => '1 herhaling', +); +?> \ No newline at end of file diff --git a/www/plugins/agenda_3_5/lang/agenda_sk.php b/www/plugins/agenda_3_5/lang/agenda_sk.php new file mode 100644 index 00000000..2526554f --- /dev/null +++ b/www/plugins/agenda_3_5/lang/agenda_sk.php @@ -0,0 +1,157 @@ + 'Vaša neúčasť bola zaznamenaná', + 'activite_editoriale' => 'Redakčná činnosť', + 'afficher_calendrier' => 'Zobraziť kalendár', + 'agenda' => 'Kalendár udalostí', + 'ajouter_repetition' => 'Pridať opakovania', + 'ajouter_un_evenement' => 'pridať udalosť k tomuto článku', + 'annee_precedente' => 'predchádzajúci rok', + 'annee_suivante' => 'ďalší rok', + 'aucun_evenement' => 'žiadna udalosť', + 'aucun_inscrit' => 'Žiadne prihlásenie', + 'aucune_rubrique_mode_agenda' => 'Podľa predvolených nastavení vám všetky rubriky umožňujú umožňujú využívať udalosti. Ak kalendár udalostí aktivujete pre jednu rubriku alebo viacero rubrík, riadenie udalostí bude obmedzené na vetvy týchto rubrík.', + + // B + 'bouton_annuler' => 'Zrušiť', + 'bouton_supprimer' => 'Odstrániť', + + // C + 'confirm_suppression_inscription' => 'Chcete odstrániť tento údaj?', + 'confirm_suppression_inscription_toutes' => 'Naozaj chcete vymazať všetky prihlásenia?', + 'connexion_necessaire_pour_inscription' => 'Ďakujeme vám, že sa prihlásite predtým, ako sa zaregistrujete na túto udalosť.', + 'creer_evenement' => 'Vytvoriť udalosť', + + // E + 'erreur_article_interdit' => 'Nemáte dostatočné práva na to, aby ste mohli priradiť túto udalosť k tomuto článku', + 'erreur_article_manquant' => 'Musíte uviesť článok', + 'erreur_date' => 'Tento dátum nie je správny', + 'erreur_date_avant_apres' => 'Zadajte dátum ukončenia, ktorý nasleduje po dátume začiatku!', + 'erreur_date_corrigee' => 'Dátum bol opravený', + 'erreur_heure' => 'Tento čas nie je správny', + 'erreur_heure_corrigee' => 'Čas bol opravený', + 'evenement_adresse' => 'Adresa', + 'evenement_article' => 'Priradená k článku', + 'evenement_autres_occurences' => 'Ďalšie výskyty:', + 'evenement_date' => 'Dátum', + 'evenement_date_a' => 'k ', + 'evenement_date_a_immediat' => 'o ', + 'evenement_date_au' => 'Do ', + 'evenement_date_de' => 'Z(o) ', + 'evenement_date_debut' => 'Dátum začiatku', + 'evenement_date_du' => 'Od ', + 'evenement_date_fin' => 'Dátum ukončenia', + 'evenement_date_inscription' => 'Dátum prihlásenia', + 'evenement_descriptif' => 'Opis', + 'evenement_horaire' => 'Celý deň', + 'evenement_lieu' => 'Miesto', + 'evenement_repetitions' => 'Opakovania', + 'evenement_titre' => 'Nadpis', + 'evenements' => 'Udalosti', + 'evenements_a_venir' => 'Budúce', + 'evenements_depuis_debut' => 'od začiatku', + 'explication_synchro_flux_ical' => 'Zásuvný modul Kalendár udalostí poskytuje výpis zoznamu udalostí vo formáte iCal. Niektoré programy aktualizujú udalosti, iba ak je pri nich uvedené číslo verzie (a to, že nastala zmena). Na to, aby bolo toto číslo verzie zavedené do vygenerovaného zdroja iCal, treba aktivovať sledovanie zmien pre udalosti (menu Konfigurácia > Zmeny).', + 'explication_synchro_flux_ical_titre' => 'Synchronizácia zdroja iCal', + + // F + 'fermer' => 'zatvoriť', + + // I + 'icone_creer_evenement' => 'Vytvoriť novú udalosť', + 'icone_modifier_evenement' => 'Upraviť udalosť', + 'indiquez_votre_choix' => 'Uveďte svoju voľbu', + 'info_1_mois' => '1 mesiac', + 'info_1_place' => '1 miesto', + 'info_aucun_evenement' => 'Žiadna udalosť', + 'info_evenement' => 'Udalosť', + 'info_evenement_poubelle' => 'Odstránená udalosť', + 'info_evenement_propose' => 'Navrhovaná udalosť', + 'info_evenement_publie' => 'Uverejnená udalosť', + 'info_evenements' => 'Udalosti', + 'info_inscription' => 'Registrácia online:', + 'info_lieu' => 'Miesto:', + 'info_nb_inscrits' => '@nb@ prihlásení', + 'info_nb_mois' => '@nb@ mesiac', + 'info_nb_places' => '@nb@ miest', + 'info_nombre_evenements' => '@nb@ udalostí', + 'info_nouvel_evenement' => 'Nová udalosť', + 'info_reponse_inscription_non' => 'nie', + 'info_reponse_inscription_nsp' => '?', + 'info_reponse_inscription_oui' => 'áno', + 'info_reponse_inscriptions' => 'Reakcia', + 'info_reponses_inscriptions' => 'Reakcie:', + 'info_un_evenement' => '1 udalosť', + 'info_un_inscrit' => 'Jedno prihlásenie', + 'inscrits' => 'Registrácie', + + // L + 'label_annee' => 'Rok', + 'label_inscription' => 'Registrácia online', + 'label_periode_saison' => 'Ročné obdobie', + 'label_places' => 'Obmedziť počet miest', + 'label_reponse_jyparticipe' => 'Budem tam', + 'label_reponse_jyparticipe_pas' => 'Neprídem', + 'label_reponse_jyparticipe_peutetre' => 'Možno prídem', + 'label_vous_inscrire' => 'Vaša účasť', + 'lien_desinscrire' => 'Odstrániť', + 'lien_desinscrire_tous' => 'Vymazať všetky prihlásenia', + 'lien_retirer_evenement' => 'Odstrániť', + 'liste_inscrits' => 'Zoznam zaregistrovaných', + + // M + 'mois_precedent' => 'predchádzajúci mesiac', + 'mois_suivant' => 'ďalší mesiac', + + // N + 'nb_repetitions' => '@nb@ opakovaní', + + // P + 'participation_incertaine_prise_en_compte' => 'Vaša prípadná účasť bola zaznamenaná', + 'participation_prise_en_compte' => 'Vaša účasť bola zaznamenaná', + 'probleme_technique' => 'Vyskytol sa technický problém. Skúste neskôr, prosím.', + + // R + 'repetition' => 'Opakovanie', + 'repetition_de' => 'Opakovanie', + 'retour_evenement' => 'Vrátiť sa na udalosť', + 'rubrique_activer_agenda' => 'Aktivovať Kalendár udalostí pre túto rubriku', + 'rubrique_dans_une_rubrique_mode_agenda' => 'Táto rubrika vám umožňuje využívať udalosti, keďže sa nachádza v rubrike, pre ktorú bol Kalendár udalostí aktivovaný', + 'rubrique_desactiver_agenda' => 'Deaktivovať Kalendár udalostí pre túto rubriku', + 'rubrique_liste_evenements_de' => 'Udalosti rubriky', + 'rubrique_mode_agenda' => 'Režim Kalendár udalostí bol aktivovaný pre túto rubriku a jej vetvu', + 'rubrique_sans_gestion_evenement' => 'Režim Kalendár udalostí nie je pre túto rubriku aktivovaný', + 'rubriques' => 'Rubriky s kalendárom udalostí', + + // S + 'sans_titre' => '(bez nadpisu)', + + // T + 'telecharger' => 'Stiahnuť (csv)', + 'telecharger_oui' => 'Iba pozitívne reakcie', + 'telecharger_toutes' => 'Všetky reakcie', + 'telecharger_toutes_tous_evenements' => 'Všetky reakcie cez prihlásenie', + 'texte_agenda' => 'Kalendár udalostí', + 'texte_evenement_statut' => 'Táto udalosť je:', + 'texte_logo_objet' => 'Logo udalosti', + 'titre_cadre_ajouter_evenement' => 'Pridať udalosť', + 'titre_cadre_modifier_evenement' => 'Upraviť udalosť', + 'titre_sur_l_agenda' => 'V Kalendári udalostí ', + 'titre_sur_l_agenda_aussi' => 'A tiež...', + 'toutes_rubriques' => 'Všetky', + + // U + 'une_repetition' => '1 opakovanie', + + // V + 'voir_evenements_rubrique' => 'Zobraziť udalosti rubriky' +); + +?> diff --git a/www/plugins/agenda_3_5/lang/configureragenda_fr.php b/www/plugins/agenda_3_5/lang/configureragenda_fr.php new file mode 100644 index 00000000..a2d6724b --- /dev/null +++ b/www/plugins/agenda_3_5/lang/configureragenda_fr.php @@ -0,0 +1,30 @@ + 'Affichage de l\'Agenda', + 'label_titre' => 'Titre de la page', + 'label_descriptif' => 'Descriptif', + 'label_insert_head_css_1' => 'Insérer automatiquement les styles par défaut de l\'agenda', + 'label_url_evenement' => 'Affichage d\'un événement', + 'label_url_evenement_article' => 'sur la page de l\'article associé', + 'label_url_evenement_evenement' => 'sur une page dédiée pour chaque événement', + 'label_affichage_duree' => 'Lister les événements sur', + 'label_affichage_debut' => 'Début de la liste', + 'label_affichage_debut_date_jour' => 'Date du jour', + 'label_affichage_debut_date_veille' => 'Date de la veille', + 'label_affichage_debut_debut_semaine' => 'Début de la semaine', + 'label_affichage_debut_debut_semaine_prec' => 'Début de la semaine précédente', + 'label_affichage_debut_debut_mois' => 'Début du mois', + 'label_affichage_debut_debut_mois_prec' => 'Début du mois précédent', + 'label_affichage_debut_debut_mois_1' => 'Début d\'année', + 'label_affichage_debut_mois_passe' => '@mois@ précédent', + + 'legend_presentation_agenda' => 'Présentation de l\'agenda', +); + +?> diff --git a/www/plugins/agenda_3_5/lang/migreragenda_fr.php b/www/plugins/agenda_3_5/lang/migreragenda_fr.php new file mode 100644 index 00000000..e1d04828 --- /dev/null +++ b/www/plugins/agenda_3_5/lang/migreragenda_fr.php @@ -0,0 +1,35 @@ + 'Migrer un Agenda d\'articles', + 'explication_migration_agenda_article_1' => 'Si votre site contient un agenda basé sur des articles, +vous pouvez utiliser cet outil pour le transformer automatiquement en événements.', + 'explication_migration_agenda_article_2' => 'Dans la rubrique agenda sélectionnée, un événement sera créé et renseigné pour dater chaque article, selon les réglages ci-dessous.', + 'explication_migration_agenda_article_fin' => 'Seuls les articles publiés et n\'ayant pas déjà d\'événement seront migrés. + Aucune donnée ne sera supprimée sur les articles : si le résultat ne vous convient pas, il suffit de désinstaller le plugin Agenda pour retrouver votre rubrique comme avant la migration.', + + 'label_rubrique_source' => 'Rubrique Agenda à migrer', + 'label_toute_la_branche_oui' => 'Migrer aussi toutes les sous-rubriques', + 'label_champ_date_debut' => 'Date de début', + 'label_champ_date_fin' => 'Date de fin', + 'label_champ_date' => 'Date de publication', + 'label_champ_date_redac' => 'Date de rédaction antérieure', + 'label_horaire' => 'Horaire', + 'label_horaire_oui' => 'Prendre en compte l\'heure', + 'label_horaire_non' => 'Pas d\'horaire (événements par journées)', + 'label_groupes_mots' => 'Associer les mots des groupes suivants', + 'bouton_migrer' => 'Prévisualiser la migration', + 'bouton_lancer_migration' => 'Lancer la migration', + + 'erreur_choix_incorrect' => 'Ce choix n\'est pas permis', + + 'info_migration_articles' => "Articles à migrer :", + 'info_migration_articles_reussi' => "Articles migrés :", + +); + +?> diff --git a/www/plugins/agenda_3_5/lang/paquet-agenda.xml b/www/plugins/agenda_3_5/lang/paquet-agenda.xml new file mode 100644 index 00000000..cac2b720 --- /dev/null +++ b/www/plugins/agenda_3_5/lang/paquet-agenda.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/www/plugins/agenda_3_5/lang/paquet-agenda_en.php b/www/plugins/agenda_3_5/lang/paquet-agenda_en.php new file mode 100644 index 00000000..d3e94097 --- /dev/null +++ b/www/plugins/agenda_3_5/lang/paquet-agenda_en.php @@ -0,0 +1,16 @@ + 'Events agenda', + 'agenda_nom' => 'Agenda', + 'agenda_slogan' => 'Events agenda' +); + +?> diff --git a/www/plugins/agenda_3_5/lang/paquet-agenda_es.php b/www/plugins/agenda_3_5/lang/paquet-agenda_es.php new file mode 100644 index 00000000..340def38 --- /dev/null +++ b/www/plugins/agenda_3_5/lang/paquet-agenda_es.php @@ -0,0 +1,16 @@ + 'Agenda de Eventos', + 'agenda_nom' => 'Agenda', + 'agenda_slogan' => 'Agenda de Eventos' +); + +?> diff --git a/www/plugins/agenda_3_5/lang/paquet-agenda_fr.php b/www/plugins/agenda_3_5/lang/paquet-agenda_fr.php new file mode 100644 index 00000000..f6fba01a --- /dev/null +++ b/www/plugins/agenda_3_5/lang/paquet-agenda_fr.php @@ -0,0 +1,14 @@ + 'Agenda Evénementiel', + 'agenda_nom' => 'Agenda', + 'agenda_slogan' => 'Agenda Evénementiel' +); + +?> diff --git a/www/plugins/agenda_3_5/lang/paquet-agenda_sk.php b/www/plugins/agenda_3_5/lang/paquet-agenda_sk.php new file mode 100644 index 00000000..20fa3df0 --- /dev/null +++ b/www/plugins/agenda_3_5/lang/paquet-agenda_sk.php @@ -0,0 +1,16 @@ + 'Kalendár udalostí', + 'agenda_nom' => 'Diár', + 'agenda_slogan' => 'Kalendár udalostí' +); + +?> diff --git a/www/plugins/agenda_3_5/lang/paquet-albums.xml b/www/plugins/agenda_3_5/lang/paquet-albums.xml new file mode 100644 index 00000000..f2b1b692 --- /dev/null +++ b/www/plugins/agenda_3_5/lang/paquet-albums.xml @@ -0,0 +1,2 @@ + + diff --git a/www/plugins/agenda_3_5/modeles/evenement_vevent.html b/www/plugins/agenda_3_5/modeles/evenement_vevent.html new file mode 100644 index 00000000..28aa078f --- /dev/null +++ b/www/plugins/agenda_3_5/modeles/evenement_vevent.html @@ -0,0 +1 @@ +#INCLURE{fond=inclure/resume/evenement,id_evenement=#ENV{id,#ENV{id_evenement}}} \ No newline at end of file diff --git a/www/plugins/agenda_3_5/paquet.xml b/www/plugins/agenda_3_5/paquet.xml new file mode 100644 index 00000000..9d25950e --- /dev/null +++ b/www/plugins/agenda_3_5/paquet.xml @@ -0,0 +1,49 @@ + + + Agenda + + + Cedric MORIN + b_b + romy.tetue.net + Julien Tessier + + 2006-2013 + + GPL 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/www/plugins/agenda_3_5/prive/objets/contenu/article-evenements.html b/www/plugins/agenda_3_5/prive/objets/contenu/article-evenements.html new file mode 100644 index 00000000..08395106 --- /dev/null +++ b/www/plugins/agenda_3_5/prive/objets/contenu/article-evenements.html @@ -0,0 +1,7 @@ +[(#REM) afficher les evenements de cet article] +
+,statut=#LISTE{publie,prop},env}> +[(#AUTORISER{creerevenementdans, article, #ID_ARTICLE}|oui) + [(#URL_ECRIRE{evenement_edit,id_evenement=new}|parametre_url{id_article,#ID_ARTICLE}|parametre_url{redirect,#SELF}|icone_horizontale{<:agenda:creer_evenement:>,evenement-24.png,new,creer_evenement})] +] +
diff --git a/www/plugins/agenda_3_5/prive/objets/contenu/evenement.html b/www/plugins/agenda_3_5/prive/objets/contenu/evenement.html new file mode 100644 index 00000000..780d67bd --- /dev/null +++ b/www/plugins/agenda_3_5/prive/objets/contenu/evenement.html @@ -0,0 +1,46 @@ + +
+
<:info_titre:>
+
#TITRE
+
+
+
<:agenda:info_dates:>
+
[(#DATE_DEBUT|affdate_debut_fin{#DATE_FIN,#HORAIRE})]
+
+ +
+
[(#GRAND_TOTAL|singulier_ou_pluriel{agenda:une_repetition,agenda:nb_repetitions})]
+
([(#DATE_DEBUT|affdate_court)])
+
+
+
+
<:info_descriptif:>
+
[(#DESCRIPTIF|image_reduire{500,0})]
+
+
+
<:agenda:info_lieu:>
+
[(#LIEU|image_reduire{500,0})]
+
+
+
<:agenda:evenement_adresse:>
+
[(#ADRESSE|image_reduire{500,0})]
+
+
+
<:agenda:info_inscription:>
+#SET{rep_oui,#TOTAL_BOUCLE} +#SET{rep_non,#TOTAL_BOUCLE} +#SET{rep_nsp,#TOTAL_BOUCLE} +[
(#PLACES|singulier_ou_pluriel{agenda:info_1_place,agenda:info_nb_places}) + (<:agenda:info_reponses_inscriptions:> + [(#GET{rep_oui}) ]<:agenda:info_reponse_inscription_oui:> | + [(#GET{rep_non}) ]<:agenda:info_reponse_inscription_non:> | + [(#GET{rep_nsp}) ]<:agenda:info_reponse_inscription_nsp:>) + +
] + +
+[
+
<:info_notes:>
+
(#NOTES)
+
+] \ No newline at end of file diff --git a/www/plugins/agenda_3_5/prive/objets/infos/evenement.html b/www/plugins/agenda_3_5/prive/objets/infos/evenement.html new file mode 100644 index 00000000..2304c662 --- /dev/null +++ b/www/plugins/agenda_3_5/prive/objets/infos/evenement.html @@ -0,0 +1,33 @@ + +
+#SET{texte_objet,#VAL{evenement}|objet_info{texte_objet}|_T} +
<:titre_cadre_numero_objet{objet=#GET{texte_objet}}:>

#ID_EVENEMENT

+ +[(#FORMULAIRE_INSTITUER_OBJET{evenement,#ID_EVENEMENT})] + +[(#REM) + + Bouton voir en ligne + +] + + + + + + [(#VAL{redirect} + |generer_url_action{type=evenement&id=#ID_EVENEMENT} + |parametre_url{var_mode,calcul} + |icone_horizontale{<:icone_voir_en_ligne:>,racine})] + + [(#AUTORISER{previsualiser,evenement,#ID_EVENEMENT,'',#ARRAY{statut,#STATUT}}) + [(#VAL{redirect} + |generer_url_action{type=evenement&id=#ID_ARTICLE} + |parametre_url{var_mode,preview} + |icone_horizontale{<:previsualiser:>,preview})] + ] + +
+ diff --git a/www/plugins/agenda_3_5/prive/objets/liste/evenement_participants.html b/www/plugins/agenda_3_5/prive/objets/liste/evenement_participants.html new file mode 100755 index 00000000..390fc410 --- /dev/null +++ b/www/plugins/agenda_3_5/prive/objets/liste/evenement_participants.html @@ -0,0 +1,39 @@ + +#ANCRE_PAGINATION +
+ +[] + + + + + + + [ + (#AUTORISER{modifier,evenement,#ID_EVENEMENT})] + + + + + + + + + + [ + (#AUTORISER{modifier,evenement,#ID_EVENEMENT})] + + + +
(#ENV*{titre,#GRAND_TOTAL|singulier_ou_pluriel{agenda:info_un_inscrit,agenda:info_nb_inscrits,nb}})
[(#TRI{statut,#,ajax})][(#TRI{nom,<:nom:>,ajax})][(#TRI{email,<:email:>,ajax})][(#TRI{date,<:agenda:evenement_date_inscription:>,ajax})][(#TRI{reponse,<:agenda:info_reponse_inscriptions:>,ajax})]Action
[(#STATUT|puce_statut{auteur,#ID_AUTEUR})][(#RANG). ][(#NOM|sinon{<:texte_vide:>})]#EMAIL[(#DATE|affdate_jourcourt|unique{liste_evt})]#REPONSE + +
+[

(#PAGINATION{prive})

] +
+[(#AUTORISER{modifier,evenement,#ID_EVENEMENT})

] + +
+

<:agenda:aucun_inscrit:>

+ + + diff --git a/www/plugins/agenda_3_5/prive/objets/liste/evenements-post.html b/www/plugins/agenda_3_5/prive/objets/liste/evenements-post.html new file mode 100644 index 00000000..0197a756 --- /dev/null +++ b/www/plugins/agenda_3_5/prive/objets/liste/evenements-post.html @@ -0,0 +1,11 @@ +[(#REM) Se placer au debut du mois en cours par defaut] +#SET{date_debut,#ENV{date_debut,#ENV{date}}|affdate{Y-m-d 00:00:00}|agenda_dateplus{-1}} + +[(#REM) Si un evenement passe, on commence par le jour de cet evenement] + #SET{id_evenement,#ID_EVENEMENT} + + + #SET{id_evenement,#ID_EVENEMENT} + + +[(#INCLURE{fond=prive/objets/liste/evenements,debut_liste_evt=#ENV{debut_liste_evt,@#GET{id_evenement}},id_evenement=#EVAL{null},env})] diff --git a/www/plugins/agenda_3_5/prive/objets/liste/evenements.html b/www/plugins/agenda_3_5/prive/objets/liste/evenements.html new file mode 100644 index 00000000..42dc4893 --- /dev/null +++ b/www/plugins/agenda_3_5/prive/objets/liste/evenements.html @@ -0,0 +1,49 @@ +[(#SET{defaut_tri,#ARRAY{ + date_debut,#ENV{date_sens,1}, + titre,1, + id_evenement,1, + points,-1 +}}) +] +#ANCRE_PAGINATION +
+ +[] + + + + + + + + + + + + + + + + + + + #SET{id_evenement,#ID_EVENEMENT_SOURCE|?{#ID_EVENEMENT_SOURCE,#ID_EVENEMENT}} + + + + +
(#ENV*{titre,#GRAND_TOTAL|singulier_ou_pluriel{agenda:info_un_evenement,agenda:info_nombre_evenements}})
[(#TRI{statut,#,ajax})][(#TRI{date_debut,<:date:>,ajax})][(#TRI{titre,<:info_titre:>,ajax})]<:agenda:evenement_lieu:>[(#TRI{id_evenement,<:info_numero_abbreviation:>,ajax})]
[(#STATUT|puce_statut{evenement,#ID_EVENEMENT})][(#DATE_DEBUT|affdate_jourcourt|unique{liste_evt})][[(#CHEMIN_IMAGE{article-16.png}|balise_img{#INFO_TITRE{article,#ID_ARTICLE}})]][(#RANG). ]#TITRE +

[(#DATE_DEBUT|affdate_debut_fin{#DATE_FIN,#HORAIRE})]

+
#LIEU[(#ID_EVENEMENT_SOURCE|oui) + [(#CHEMIN_IMAGE{repetition-16.png}|balise_img{<:agenda:repetition:>,''}|inserer_attribut{title,<:agenda:repetition:>})] + ][(#AUTORISER{modifier,evenement,#GET{id_evenement}}|?{[ + (#GET{id_evenement})], + [(#GET{id_evenement})] + })] +
+[

(#PAGINATION{prive})

] +
+
[ +
(#ENV*{sinon,''})
+] diff --git a/www/plugins/agenda_3_5/prive/squelettes/contenu/agenda_inscriptions.html b/www/plugins/agenda_3_5/prive/squelettes/contenu/agenda_inscriptions.html new file mode 100755 index 00000000..8fde0b80 --- /dev/null +++ b/www/plugins/agenda_3_5/prive/squelettes/contenu/agenda_inscriptions.html @@ -0,0 +1,16 @@ +#BOITE_OUVRIR + +

<:agenda:liste_inscrits:>

+

#TITRE

+
[(#DATE_DEBUT|affdate_debut_fin{#DATE_FIN,#HORAIRE})]
+[
<:agenda:evenement_descriptif:> : (#DESCRIPTIF|PtoBR)
] +[
<:agenda:evenement_lieu:> : (#LIEU)
] +
+ #FORMULAIRE_EVENEMENT_PARTICIPANTS{#ENV{id_evenement},#ENV{tri_inscrits}} +
+ + + +

<:agenda:aucun_evenement:>

+ +#BOITE_FERMER diff --git a/www/plugins/agenda_3_5/prive/squelettes/contenu/configurer_agenda.html b/www/plugins/agenda_3_5/prive/squelettes/contenu/configurer_agenda.html new file mode 100644 index 00000000..d47dd30b --- /dev/null +++ b/www/plugins/agenda_3_5/prive/squelettes/contenu/configurer_agenda.html @@ -0,0 +1,9 @@ +[(#AUTORISER{configurer_agenda}|sinon_interdire_acces)] +

<:agenda:agenda:>

+[(#BOITE_OUVRIR{[(#VAL{agenda:explication_synchro_flux_ical_titre}|_T)],'info'})] +<:agenda:explication_synchro_flux_ical:> +#BOITE_FERMER +
#FORMULAIRE_CONFIGURER_AGENDA
+
#FORMULAIRE_CONFIGURER_CALENDRIERMINI
+

<:agenda:rubriques:>

+
#FORMULAIRE_MIGRER_AGENDA
diff --git a/www/plugins/agenda_3_5/prive/squelettes/contenu/evenement_edit.html b/www/plugins/agenda_3_5/prive/squelettes/contenu/evenement_edit.html new file mode 100644 index 00000000..48e97a3d --- /dev/null +++ b/www/plugins/agenda_3_5/prive/squelettes/contenu/evenement_edit.html @@ -0,0 +1,32 @@ +[(#ID_EVENEMENT|intval|oui) + [(#AUTORISER{modifier,evenement,#ID_EVENEMENT}|sinon_interdire_acces)]] +[(#ID_EVENEMENT|intval|non) + [(#AUTORISER{creer,evenement,0,'',#ARRAY{id_article,#ENV{id_article}}}|sinon_interdire_acces)]] + +#SET{retour,#ENV{redirect}|sinon{#ENV{id_article}|?{#URL_ECRIRE{article,id_article=#ID_ARTICLE},#ID_EVENEMENT|?{#ID_EVENEMENT|generer_url_entite{evenement},#URL_ECRIRE{evenements}}}}} +
+
+ [(#GET{retour}|icone_verticale{<:icone_retour:>,evenement,'',left retour[(#ENV{retourajax,''}|oui)ajax preload]})] + [[(#ID_EVENEMENT|?{<:agenda:titre_cadre_modifier_evenement:>,<:agenda:titre_cadre_ajouter_evenement:>})] +

(#ENV{titre,#INFO_TITRE{evenement,#ID_EVENEMENT}|sinon{<:agenda:info_nouvel_evenement:>}})

] +
+ +#SET{redirect,#ENV{redirect,#ID_EVENEMENT|generer_url_entite{evenement}}} +[(#ENV{retourajax,''}|oui) + #SET{redirect,'javascript:if (window.jQuery) jQuery(".entete-formulaire .retour a").followLink();'} +
+ +] + #FORMULAIRE_EDITER_EVENEMENT{#ENV{id_evenement,oui},#ENV{id_article},#GET{redirect},#ENV{associer_objet}} +[(#ENV{retourajax,''}|oui) +
+ +] +[(#ENV{id_evenement,''}|intval|oui) +
+ #FORMULAIRE_EDITER_LIENS{mots,evenement,#ENV{id_evenement}} +
+] + +
+ diff --git a/www/plugins/agenda_3_5/prive/squelettes/contenu/evenements.html b/www/plugins/agenda_3_5/prive/squelettes/contenu/evenements.html new file mode 100644 index 00000000..9584d51e --- /dev/null +++ b/www/plugins/agenda_3_5/prive/squelettes/contenu/evenements.html @@ -0,0 +1,16 @@ +[(#AUTORISER{menu,_evenements}|sinon_interdire_acces)] +

<:agenda:agenda:>

+ +#BOITE_OUVRIR{'','note'} + [(#CHEMIN_IMAGE{fermer-16.png}|balise_img|inserer_attribut{alt,<:info_tout_afficher:>})] + <:agenda:rubrique_liste_evenements_de:> +

#TITRE

+#BOITE_FERMER + + +
+ [(#INCLURE{fond=prive/objets/liste/evenements-post}{env})] +
+[(#AUTORISER{creer,evenement}|oui) +[(#URL_ECRIRE{evenement_edit,id_evenement=new}|parametre_url{id_article,#ID_ARTICLE}|icone_verticale{<:agenda:creer_evenement:>,evenement-24.png,new,right})] +] \ No newline at end of file diff --git a/www/plugins/agenda_3_5/prive/squelettes/extra/agenda_inscriptions.html b/www/plugins/agenda_3_5/prive/squelettes/extra/agenda_inscriptions.html new file mode 100644 index 00000000..d3fff83a --- /dev/null +++ b/www/plugins/agenda_3_5/prive/squelettes/extra/agenda_inscriptions.html @@ -0,0 +1,23 @@ +[(#BOITE_OUVRIR{[(#CHEMIN_IMAGE{calendrier-24.png}|balise_img{'',cadre-icone})],'info'})] +

<:agenda:info_inscription:>

+#SET{rep_oui,#TOTAL_BOUCLE} +#SET{rep_non,#TOTAL_BOUCLE} +#SET{rep_nsp,#TOTAL_BOUCLE} + +[
(#PLACES|singulier_ou_pluriel{agenda:info_1_place,agenda:info_nb_places})
] + +
<:agenda:info_reponses_inscriptions:>
+
    +
  • [(#GET{rep_oui}) ]<:agenda:info_reponse_inscription_oui:>
  • +
  • [(#GET{rep_non}) ]<:agenda:info_reponse_inscription_non:>
  • +
  • [(#GET{rep_nsp}) ]<:agenda:info_reponse_inscription_nsp:>
  • +
+#SET{args,#ARRAY{id_evenement,#ID_EVENEMENT}} +

<:agenda:telecharger:>

+ +#BOITE_FERMER diff --git a/www/plugins/agenda_3_5/prive/squelettes/inclure/agenda-navigation-mois.html b/www/plugins/agenda_3_5/prive/squelettes/inclure/agenda-navigation-mois.html new file mode 100644 index 00000000..1a986b08 --- /dev/null +++ b/www/plugins/agenda_3_5/prive/squelettes/inclure/agenda-navigation-mois.html @@ -0,0 +1,12 @@ +#SET{self,#ENV{self}|parametre_url{debut_mois,#EVAL{_request('debut_mois')}}} + +[(#REM) navigation par mois] + +[

(#PAGINATION{prive})

] +
diff --git a/www/plugins/agenda_3_5/prive/squelettes/inclure/agenda-rubriques.html b/www/plugins/agenda_3_5/prive/squelettes/inclure/agenda-rubriques.html new file mode 100644 index 00000000..0371454d --- /dev/null +++ b/www/plugins/agenda_3_5/prive/squelettes/inclure/agenda-rubriques.html @@ -0,0 +1,13 @@ +#SET{self,#SELF|parametre_url{debut_rubriques,#EVAL{_request('debut_rubriques')}}} + +[(#BOITE_OUVRIR{[<:agenda:rubriques:>(#CHEMIN_IMAGE{rubrique-24.png}|balise_img{'',cadre-icone})],simple})] +[(#REM) navigation par rubriques agenda] +[

(#PAGINATION{page})

] +
    +
  • [(#GET{self}|parametre_url{id_rubrique,''}|lien_ou_expose{<:agenda:toutes_rubriques:>,#ENV{id_rubrique,0}|=={0}})]
  • + +
  • [(#GET{self}|parametre_url{id_rubrique,#ID_RUBRIQUE}|lien_ou_expose{#TITRE|supprimer_numero{},#ENV{id_rubrique}|=={#ID_RUBRIQUE}})] (<:info_numero_abbreviation:>#ID_RUBRIQUE)
  • + +
+#BOITE_FERMER +
diff --git a/www/plugins/agenda_3_5/prive/squelettes/navigation/agenda_inscriptions.html b/www/plugins/agenda_3_5/prive/squelettes/navigation/agenda_inscriptions.html new file mode 100755 index 00000000..ac724bce --- /dev/null +++ b/www/plugins/agenda_3_5/prive/squelettes/navigation/agenda_inscriptions.html @@ -0,0 +1,5 @@ + +[(#BOITE_OUVRIR{[(#CHEMIN_IMAGE{calendrier-24.png}|balise_img{'',cadre-icone})]})] +

<:agenda:retour_evenement:>

+#BOITE_FERMER + diff --git a/www/plugins/agenda_3_5/prive/squelettes/navigation/evenement.html b/www/plugins/agenda_3_5/prive/squelettes/navigation/evenement.html new file mode 100644 index 00000000..0c3d6154 --- /dev/null +++ b/www/plugins/agenda_3_5/prive/squelettes/navigation/evenement.html @@ -0,0 +1,14 @@ + +#BOITE_OUVRIR{'','info'} +#PIPELINE{boite_infos,#ARRAY{data,'',args,#ARRAY{'type','evenement','id',#ENV{id_evenement}}}} +#BOITE_FERMER + +
+#FORMULAIRE_EDITER_LOGO{evenement,#ID_EVENEMENT,'',#ENV**} +
+ +#PIPELINE{afficher_config_objet,#ARRAY{args,#ARRAY{type,evenement,id,#ID_EVENEMENT},data,''}} + + +[(#ENV{exec}|=={evenement_edit}|oui)] + diff --git a/www/plugins/agenda_3_5/prive/squelettes/navigation/evenements.html b/www/plugins/agenda_3_5/prive/squelettes/navigation/evenements.html new file mode 100644 index 00000000..a2c1eb31 --- /dev/null +++ b/www/plugins/agenda_3_5/prive/squelettes/navigation/evenements.html @@ -0,0 +1,25 @@ +[(#BOITE_OUVRIR{[(#CHEMIN_IMAGE{calendrier-24.png}|balise_img{'',cadre-icone})],'simple'})] +#SET{self,#SELF|parametre_url{id_evenement|date_debut|debut_liste_evt,''}|parametre_url{debut_mois,#EVAL{_request('debut_mois')}}} + +[(#INCLURE{fond=prive/squelettes/inclure/agenda-navigation-mois}{ajax}{env}{self=#GET{self}})] +#BOITE_FERMER +[(#INCLURE{fond=prive/squelettes/inclure/agenda-rubriques}{ajax}{env}{self=#GET{self}})] + \ No newline at end of file diff --git a/www/plugins/agenda_3_5/prive/style_prive_plugin_agenda.html b/www/plugins/agenda_3_5/prive/style_prive_plugin_agenda.html new file mode 100644 index 00000000..7d0c867e --- /dev/null +++ b/www/plugins/agenda_3_5/prive/style_prive_plugin_agenda.html @@ -0,0 +1,102 @@ +[(#REM) + + Ce squelette definit les styles de l'espace prive + + Note: l'entete "Vary:" sert a repousser l'entete par + defaut "Vary: Cookie,Accept-Encoding", qui est (un peu) + genant en cas de "rotation du cookie de session" apres + un changement d'IP (effet de clignotement). + + ATTENTION: il faut absolument le charset sinon Firefox croit que + c'est du text/html ! + \ No newline at end of file diff --git a/www/plugins/calendrier_mini-2.0/formulaires/configurer_calendriermini.html b/www/plugins/calendrier_mini-2.0/formulaires/configurer_calendriermini.html new file mode 100644 index 00000000..f5a1ca9f --- /dev/null +++ b/www/plugins/calendrier_mini-2.0/formulaires/configurer_calendriermini.html @@ -0,0 +1,79 @@ +
+

<:minical:config_titre_calendriermini:>

+ +[

(#ENV*{message_ok})

] +[

(#ENV*{message_erreur})

] + +
+ #ACTION_FORMULAIRE{#ENV{action}} +
    + #SET{fl,minical} + #SET{name,jour1}#SET{obli,''}#SET{defaut,1}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} +
  • + [ + (#GET{erreurs}) + ] +
  • + #SET{name,format_jour}#SET{defaut,1}#SET{obli,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} +
  • + [ + (#GET{erreurs}) + ] + #SET{val,initiale} +
    + + +
    + #SET{val,abbr} +
    + + +
    +
  • + #SET{name,affichage_hors_mois}#SET{defaut,1}#SET{obli,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} +
  • + [ + (#GET{erreurs}) + ] + #SET{val,1} +
    + + +
    + #SET{val,0} +
    + + +
    +
  • + #SET{name,changement_rapide}#SET{defaut,1}#SET{obli,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} +
  • + [ + (#GET{erreurs}) + ] + #SET{val,1} +
    + + +
    + #SET{val,0} +
    + + +
    +
  • + + +
+ +

  +

+
+
\ No newline at end of file diff --git a/www/plugins/calendrier_mini-2.0/javascript/calendrier_mini.js.html b/www/plugins/calendrier_mini-2.0/javascript/calendrier_mini.js.html new file mode 100644 index 00000000..84c1db95 --- /dev/null +++ b/www/plugins/calendrier_mini-2.0/javascript/calendrier_mini.js.html @@ -0,0 +1,208 @@ +#HTTP_HEADER{Content-type:text/javascript} +if (!jQuery.fn.datepicker){ +#INCLURE{javascript/ui/jquery.ui.core.js} +#INCLURE{javascript/ui/jquery.ui.widget.js} +#INCLURE{javascript/ui/jquery.ui.datepicker.js} +} +if (!jQuery.fn.multiDatesPicker){ +#INCLURE{javascript/jquery-ui.multidatespicker.js} +} +[(#REM)