[PLUGINS] ~maj des plugins
authorLudovic CHEVALIER <ludovic.chevalier@heureux-cyclage.org>
Thu, 9 Oct 2014 12:49:06 +0000 (14:49 +0200)
committerLudovic CHEVALIER <ludovic.chevalier@heureux-cyclage.org>
Thu, 9 Oct 2014 12:49:06 +0000 (14:49 +0200)
531 files changed:
www/plugins/compositions_v3/compositions_fonctions.php
www/plugins/compositions_v3/compositions_pipeline.php
www/plugins/compositions_v3/lang/compositions.xml
www/plugins/compositions_v3/lang/compositions_fr.php
www/plugins/compositions_v3/lang/compositions_nl.php [new file with mode: 0644]
www/plugins/compositions_v3/lang/paquet-compositions.xml
www/plugins/compositions_v3/lang/paquet-compositions_fr.php
www/plugins/compositions_v3/lang/paquet-compositions_nl.php [new file with mode: 0644]
www/plugins/compositions_v3/paquet.xml
www/plugins/compositions_v3/prive/squelettes/contenu/compositions.html
www/plugins/compositions_v3/prive/style_prive_plugin_compositions.html
www/plugins/compositions_v3/svn.revision
www/plugins/crayons/action/crayons.php
www/plugins/crayons/action/crayons_html.php
www/plugins/crayons/action/crayons_store.php
www/plugins/crayons/action/crayons_upload.php
www/plugins/crayons/controleurs/breve_hyperlien.html
www/plugins/crayons/controleurs/document_fichier.html
www/plugins/crayons/controleurs/hyperlien.html
www/plugins/crayons/controleurs/syndic_article_hyperlien.html
www/plugins/crayons/crayons.js_fonctions.php
www/plugins/crayons/crayons_fonctions.php
www/plugins/crayons/formulaires/configurer_crayons.html
www/plugins/crayons/inc/compat_crayons.php
www/plugins/crayons/inc/crayons-json.php
www/plugins/crayons/inc/crayons.php
www/plugins/crayons/js/crayons.js
www/plugins/crayons/lang/crayons.xml
www/plugins/crayons/lang/crayons_ar.php
www/plugins/crayons/lang/crayons_ast.php
www/plugins/crayons/lang/crayons_br.php
www/plugins/crayons/lang/crayons_ca.php
www/plugins/crayons/lang/crayons_de.php
www/plugins/crayons/lang/crayons_en.php
www/plugins/crayons/lang/crayons_eo.php
www/plugins/crayons/lang/crayons_es.php
www/plugins/crayons/lang/crayons_eu.php
www/plugins/crayons/lang/crayons_fa.php
www/plugins/crayons/lang/crayons_fr.php
www/plugins/crayons/lang/crayons_fr_tu.php
www/plugins/crayons/lang/crayons_gl.php
www/plugins/crayons/lang/crayons_it.php
www/plugins/crayons/lang/crayons_it_fem.php
www/plugins/crayons/lang/crayons_km.php
www/plugins/crayons/lang/crayons_lb.php
www/plugins/crayons/lang/crayons_nl.php
www/plugins/crayons/lang/crayons_oc_lnc.php
www/plugins/crayons/lang/crayons_pt_br.php
www/plugins/crayons/lang/crayons_ro.php
www/plugins/crayons/lang/crayons_ru.php
www/plugins/crayons/lang/crayons_sk.php
www/plugins/crayons/lang/crayons_sv.php
www/plugins/crayons/lang/crayons_tr.php
www/plugins/crayons/lang/crayons_tw.php
www/plugins/crayons/lang/crayons_zh.php
www/plugins/crayons/lang/crayons_zh_tw.php
www/plugins/crayons/lang/paquet-crayons.xml
www/plugins/crayons/lang/paquet-crayons_fr_tu.php [new file with mode: 0644]
www/plugins/crayons/lang/paquet-crayons_nl.php
www/plugins/crayons/modeles/uploader_item.html
www/plugins/crayons/paquet.xml
www/plugins/crayons/plugin.xml
www/plugins/crayons/svn.revision
www/plugins/crayons/tetecrayons.php
www/plugins/crayons/vues/article_texte.html
www/plugins/crayons/vues/document_fichier.html
www/plugins/enluminures_typographiques_v3/lang/enlumtypo.xml [new file with mode: 0644]
www/plugins/enluminures_typographiques_v3/lang/enlumtypo_ar.php
www/plugins/enluminures_typographiques_v3/lang/enlumtypo_en.php
www/plugins/enluminures_typographiques_v3/lang/enlumtypo_es.php
www/plugins/enluminures_typographiques_v3/lang/enlumtypo_fr.php
www/plugins/enluminures_typographiques_v3/lang/enlumtypo_it.php
www/plugins/enluminures_typographiques_v3/paquet.xml
www/plugins/enluminures_typographiques_v3/plugin.xml
www/plugins/enluminures_typographiques_v3/svn.revision
www/plugins/enluminures_typographiques_v3/typoenluminee.php
www/plugins/enluminures_typographiques_v3/typoenluminee_options.php [new file with mode: 0644]
www/plugins/facteur/emails/texte.html
www/plugins/facteur/facteur_fonctions.php
www/plugins/facteur/inc/envoyer_mail.php
www/plugins/facteur/paquet.xml
www/plugins/facteur/svn.revision
www/plugins/formidable/action/dupliquer_formulaire.php [new file with mode: 0644]
www/plugins/formidable/action/editer_formulaire.php [new file with mode: 0644]
www/plugins/formidable/action/exporter_analyse_reponses.php [new file with mode: 0755]
www/plugins/formidable/action/exporter_formulaire.php [new file with mode: 0644]
www/plugins/formidable/action/exporter_formulaires_reponses.php [new file with mode: 0644]
www/plugins/formidable/action/supprimer_formulaire.php [new file with mode: 0644]
www/plugins/formidable/action/supprimer_formulaires_reponse.php [new file with mode: 0644]
www/plugins/formidable/action/vider_formulaire.php [new file with mode: 0644]
www/plugins/formidable/base/formidable_tables.php [new file with mode: 0644]
www/plugins/formidable/css/formidable_analyse.css.html [new file with mode: 0644]
www/plugins/formidable/echanger/formulaire/forms.php [new file with mode: 0644]
www/plugins/formidable/echanger/formulaire/wcs.php [new file with mode: 0644]
www/plugins/formidable/echanger/formulaire/yaml.php [new file with mode: 0644]
www/plugins/formidable/exec/puce_statut_formulaires.php [new file with mode: 0644]
www/plugins/formidable/formidable_administrations.php [new file with mode: 0644]
www/plugins/formidable/formidable_autorisations.php [new file with mode: 0644]
www/plugins/formidable/formidable_fonctions.php [new file with mode: 0644]
www/plugins/formidable/formidable_options.php [new file with mode: 0644]
www/plugins/formidable/formidable_pipelines.php [new file with mode: 0644]
www/plugins/formidable/formulaires/configurer_formidable_analyse.html [new file with mode: 0644]
www/plugins/formidable/formulaires/editer_formulaire.html [new file with mode: 0644]
www/plugins/formidable/formulaires/editer_formulaire.php [new file with mode: 0644]
www/plugins/formidable/formulaires/editer_formulaire_champs.html [new file with mode: 0644]
www/plugins/formidable/formulaires/editer_formulaire_champs.php [new file with mode: 0644]
www/plugins/formidable/formulaires/editer_formulaire_traitements.html [new file with mode: 0644]
www/plugins/formidable/formulaires/editer_formulaire_traitements.php [new file with mode: 0644]
www/plugins/formidable/formulaires/formidable.html [new file with mode: 0644]
www/plugins/formidable/formulaires/formidable.php [new file with mode: 0644]
www/plugins/formidable/formulaires/importer_formulaire.html [new file with mode: 0644]
www/plugins/formidable/formulaires/importer_formulaire.php [new file with mode: 0644]
www/plugins/formidable/formulaires/inc-formidable-boutons.html [new file with mode: 0644]
www/plugins/formidable/icones_barre/formulaire.png [new file with mode: 0644]
www/plugins/formidable/images/formidable-128.png [new file with mode: 0644]
www/plugins/formidable/images/formidable-24.png [new file with mode: 0644]
www/plugins/formidable/images/formidable-64.png [new file with mode: 0644]
www/plugins/formidable/images/formidable.svg [new file with mode: 0644]
www/plugins/formidable/images/formulaire-24.png [new file with mode: 0644]
www/plugins/formidable/images/formulaire-action-ajouter.png [new file with mode: 0644]
www/plugins/formidable/images/formulaire-analyse-24.png [new file with mode: 0644]
www/plugins/formidable/images/formulaire-config-auteurs-24.png [new file with mode: 0644]
www/plugins/formidable/images/formulaire-config-champs-24.png [new file with mode: 0644]
www/plugins/formidable/images/formulaire-config-traitements-24.png [new file with mode: 0644]
www/plugins/formidable/images/formulaire-dupliquer-24.png [new file with mode: 0644]
www/plugins/formidable/images/formulaire-editer-24.png [new file with mode: 0644]
www/plugins/formidable/images/formulaire-exporter-24.png [new file with mode: 0644]
www/plugins/formidable/images/formulaire-nouveau-48.png [new file with mode: 0644]
www/plugins/formidable/images/formulaire-reponse-24.png [new file with mode: 0644]
www/plugins/formidable/images/formulaire-reponse-supprimer-24.png [new file with mode: 0644]
www/plugins/formidable/images/formulaire-reponses-24.png [new file with mode: 0644]
www/plugins/formidable/images/formulaire-reponses-exporter-24.png [new file with mode: 0644]
www/plugins/formidable/images/formulaire-reponses-supprimer-24.png [new file with mode: 0644]
www/plugins/formidable/images/formulaire-supprimer-24.png [new file with mode: 0644]
www/plugins/formidable/inc/formidable.php [new file with mode: 0644]
www/plugins/formidable/inc/rechercher_joints_formulaires_reponse_formulaires_reponses_champ.php [new file with mode: 0644]
www/plugins/formidable/lang/formidable.xml [new file with mode: 0644]
www/plugins/formidable/lang/formidable_de.php [new file with mode: 0644]
www/plugins/formidable/lang/formidable_en.php [new file with mode: 0644]
www/plugins/formidable/lang/formidable_es.php [new file with mode: 0644]
www/plugins/formidable/lang/formidable_fr.php [new file with mode: 0644]
www/plugins/formidable/lang/formidable_it.php [new file with mode: 0644]
www/plugins/formidable/lang/formidable_sk.php [new file with mode: 0644]
www/plugins/formidable/lang/formulaire_fr.php [new file with mode: 0644]
www/plugins/formidable/lang/formulaires_reponse_fr.php [new file with mode: 0644]
www/plugins/formidable/lang/paquet-formidable.xml [new file with mode: 0644]
www/plugins/formidable/lang/paquet-formidable_es.php [new file with mode: 0644]
www/plugins/formidable/lang/paquet-formidable_fr.php [new file with mode: 0644]
www/plugins/formidable/modeles/form.html [new file with mode: 0644]
www/plugins/formidable/modeles/formidable.html [new file with mode: 0644]
www/plugins/formidable/modeles/formulaire_aide_memoire.html [new file with mode: 0644]
www/plugins/formidable/modeles/formulaire_analyse.html [new file with mode: 0644]
www/plugins/formidable/modeles/formulaire_formidable.yaml [new file with mode: 0644]
www/plugins/formidable/modeles/formulaires_reponse.html [new file with mode: 0644]
www/plugins/formidable/noisettes/formulaire_formidable.html [new file with mode: 0644]
www/plugins/formidable/noisettes/formulaire_formidable.yaml [new file with mode: 0644]
www/plugins/formidable/notifications/formulaire_accuse.html [new file with mode: 0644]
www/plugins/formidable/notifications/formulaire_email.html [new file with mode: 0644]
www/plugins/formidable/paquet.xml [new file with mode: 0644]
www/plugins/formidable/prive/objets/contenu/formulaire.html [new file with mode: 0644]
www/plugins/formidable/prive/objets/contenu/formulaires_reponse.html [new file with mode: 0644]
www/plugins/formidable/prive/objets/infos/formulaire.html [new file with mode: 0644]
www/plugins/formidable/prive/objets/infos/formulaires_reponse.html [new file with mode: 0644]
www/plugins/formidable/prive/objets/liste/formulaires.html [new file with mode: 0644]
www/plugins/formidable/prive/objets/liste/formulaires_reponses.html [new file with mode: 0644]
www/plugins/formidable/prive/squelettes/contenu/configurer_formidable.html [new file with mode: 0644]
www/plugins/formidable/prive/squelettes/contenu/formulaire.html [new file with mode: 0644]
www/plugins/formidable/prive/squelettes/contenu/formulaire_edit.html [new file with mode: 0644]
www/plugins/formidable/prive/squelettes/contenu/formulaires.html [new file with mode: 0644]
www/plugins/formidable/prive/squelettes/contenu/formulaires_analyse.html [new file with mode: 0644]
www/plugins/formidable/prive/squelettes/contenu/formulaires_reponse.html [new file with mode: 0644]
www/plugins/formidable/prive/squelettes/contenu/formulaires_reponses.html [new file with mode: 0644]
www/plugins/formidable/prive/squelettes/extra/formulaire.html [new file with mode: 0644]
www/plugins/formidable/prive/squelettes/extra/formulaire_edit.html [new file with mode: 0644]
www/plugins/formidable/prive/squelettes/extra/formulaires_analyse.html [new file with mode: 0755]
www/plugins/formidable/prive/squelettes/extra/formulaires_reponses.html [new file with mode: 0644]
www/plugins/formidable/prive/squelettes/hierarchie/formulaire.html [new file with mode: 0644]
www/plugins/formidable/prive/squelettes/hierarchie/formulaire_edit.html [new file with mode: 0644]
www/plugins/formidable/prive/squelettes/hierarchie/formulaires.html [new file with mode: 0644]
www/plugins/formidable/prive/squelettes/hierarchie/formulaires_analyse.html [new file with mode: 0644]
www/plugins/formidable/prive/squelettes/hierarchie/formulaires_reponse.html [new file with mode: 0644]
www/plugins/formidable/prive/squelettes/hierarchie/formulaires_reponses.html [new file with mode: 0644]
www/plugins/formidable/prive/squelettes/inclure/formulaires_lies.html [new file with mode: 0644]
www/plugins/formidable/prive/squelettes/inclure/formulaires_reponses-filtres.html [new file with mode: 0644]
www/plugins/formidable/prive/squelettes/navigation/formulaire.html [new file with mode: 0644]
www/plugins/formidable/prive/squelettes/navigation/formulaire_edit.html [new file with mode: 0644]
www/plugins/formidable/prive/squelettes/navigation/formulaires.html [new file with mode: 0644]
www/plugins/formidable/prive/squelettes/navigation/formulaires_analyse.html [new file with mode: 0644]
www/plugins/formidable/prive/squelettes/navigation/formulaires_reponse.html [new file with mode: 0644]
www/plugins/formidable/prive/squelettes/navigation/formulaires_reponses.html [new file with mode: 0644]
www/plugins/formidable/prive/style_prive_plugin_formidable.html [new file with mode: 0644]
www/plugins/formidable/prive/themes/basic/images/formulaire-16.png [new file with mode: 0644]
www/plugins/formidable/prive/themes/spip/images/formulaire-16.png [new file with mode: 0644]
www/plugins/formidable/prive/themes/spip/images/formulaire-24.png [new file with mode: 0644]
www/plugins/formidable/prive/themes/spip/images/formulaires_reponse-24.png [new file with mode: 0644]
www/plugins/formidable/public/formidable_criteres.php [new file with mode: 0644]
www/plugins/formidable/puce_statut/formulaires_reponse.php [new file with mode: 0644]
www/plugins/formidable/saisies-analyses/_base.html [new file with mode: 0644]
www/plugins/formidable/saisies-analyses/case.html [new file with mode: 0644]
www/plugins/formidable/saisies-analyses/checkbox.html [new file with mode: 0644]
www/plugins/formidable/saisies-analyses/destinataires.html [new file with mode: 0644]
www/plugins/formidable/saisies-analyses/explication.html [new file with mode: 0644]
www/plugins/formidable/saisies-analyses/oui_non.html [new file with mode: 0644]
www/plugins/formidable/saisies-analyses/radio.html [new file with mode: 0644]
www/plugins/formidable/saisies-analyses/selecteur_article.html [new file with mode: 0644]
www/plugins/formidable/saisies-analyses/selecteur_rubrique.html [new file with mode: 0644]
www/plugins/formidable/saisies-analyses/selecteur_rubrique_article.html [new file with mode: 0644]
www/plugins/formidable/saisies-analyses/selection.html [new file with mode: 0644]
www/plugins/formidable/saisies-analyses/selection_multiple.html [new file with mode: 0644]
www/plugins/formidable/saisies-vues/formulaire_formidable.html [new file with mode: 0644]
www/plugins/formidable/saisies-vues/formulaire_formidable_multiple.html [new file with mode: 0644]
www/plugins/formidable/saisies/champ.html [new file with mode: 0644]
www/plugins/formidable/saisies/formulaire_formidable.html [new file with mode: 0644]
www/plugins/formidable/saisies/formulaire_formidable_multiple.html [new file with mode: 0644]
www/plugins/formidable/svn.revision [new file with mode: 0644]
www/plugins/formidable/todo.txt [new file with mode: 0644]
www/plugins/formidable/traiter/email.php [new file with mode: 0644]
www/plugins/formidable/traiter/email.yaml [new file with mode: 0644]
www/plugins/formidable/traiter/enregistrement.php [new file with mode: 0644]
www/plugins/formidable/traiter/enregistrement.yaml [new file with mode: 0644]
www/plugins/formidable_1_0/action/dupliquer_formulaire.php [deleted file]
www/plugins/formidable_1_0/action/editer_formulaire.php [deleted file]
www/plugins/formidable_1_0/action/exporter_analyse_reponses.php [deleted file]
www/plugins/formidable_1_0/action/exporter_formulaire.php [deleted file]
www/plugins/formidable_1_0/action/exporter_formulaires_reponses.php [deleted file]
www/plugins/formidable_1_0/action/instituer_formulaires_reponse.php [deleted file]
www/plugins/formidable_1_0/action/supprimer_formulaire.php [deleted file]
www/plugins/formidable_1_0/action/supprimer_formulaires_reponse.php [deleted file]
www/plugins/formidable_1_0/action/vider_formulaire.php [deleted file]
www/plugins/formidable_1_0/base/formidable_tables.php [deleted file]
www/plugins/formidable_1_0/css/formidable_analyse.css.html [deleted file]
www/plugins/formidable_1_0/echanger/formulaire/forms.php [deleted file]
www/plugins/formidable_1_0/echanger/formulaire/wcs.php [deleted file]
www/plugins/formidable_1_0/echanger/formulaire/yaml.php [deleted file]
www/plugins/formidable_1_0/exec/puce_statut_formulaires.php [deleted file]
www/plugins/formidable_1_0/formidable_administrations.php [deleted file]
www/plugins/formidable_1_0/formidable_autorisations.php [deleted file]
www/plugins/formidable_1_0/formidable_fonctions.php [deleted file]
www/plugins/formidable_1_0/formidable_options.php [deleted file]
www/plugins/formidable_1_0/formidable_pipelines.php [deleted file]
www/plugins/formidable_1_0/formulaires/configurer_formidable_analyse.html [deleted file]
www/plugins/formidable_1_0/formulaires/editer_formulaire.html [deleted file]
www/plugins/formidable_1_0/formulaires/editer_formulaire.php [deleted file]
www/plugins/formidable_1_0/formulaires/editer_formulaire_champs.html [deleted file]
www/plugins/formidable_1_0/formulaires/editer_formulaire_champs.php [deleted file]
www/plugins/formidable_1_0/formulaires/editer_formulaire_traitements.html [deleted file]
www/plugins/formidable_1_0/formulaires/editer_formulaire_traitements.php [deleted file]
www/plugins/formidable_1_0/formulaires/formidable.html [deleted file]
www/plugins/formidable_1_0/formulaires/formidable.php [deleted file]
www/plugins/formidable_1_0/formulaires/importer_formulaire.html [deleted file]
www/plugins/formidable_1_0/formulaires/importer_formulaire.php [deleted file]
www/plugins/formidable_1_0/icones_barre/formulaire.png [deleted file]
www/plugins/formidable_1_0/images/formidable-128.png [deleted file]
www/plugins/formidable_1_0/images/formidable-24.png [deleted file]
www/plugins/formidable_1_0/images/formidable-64.png [deleted file]
www/plugins/formidable_1_0/images/formidable.svg [deleted file]
www/plugins/formidable_1_0/images/formulaire-24.png [deleted file]
www/plugins/formidable_1_0/images/formulaire-action-ajouter.png [deleted file]
www/plugins/formidable_1_0/images/formulaire-analyse-24.png [deleted file]
www/plugins/formidable_1_0/images/formulaire-config-auteurs-24.png [deleted file]
www/plugins/formidable_1_0/images/formulaire-config-champs-24.png [deleted file]
www/plugins/formidable_1_0/images/formulaire-config-traitements-24.png [deleted file]
www/plugins/formidable_1_0/images/formulaire-dupliquer-24.png [deleted file]
www/plugins/formidable_1_0/images/formulaire-editer-24.png [deleted file]
www/plugins/formidable_1_0/images/formulaire-exporter-24.png [deleted file]
www/plugins/formidable_1_0/images/formulaire-nouveau-48.png [deleted file]
www/plugins/formidable_1_0/images/formulaire-reponse-24.png [deleted file]
www/plugins/formidable_1_0/images/formulaire-reponse-supprimer-24.png [deleted file]
www/plugins/formidable_1_0/images/formulaire-reponses-24.png [deleted file]
www/plugins/formidable_1_0/images/formulaire-reponses-exporter-24.png [deleted file]
www/plugins/formidable_1_0/images/formulaire-reponses-supprimer-24.png [deleted file]
www/plugins/formidable_1_0/images/formulaire-supprimer-24.png [deleted file]
www/plugins/formidable_1_0/inc/formidable.php [deleted file]
www/plugins/formidable_1_0/lang/formidable.xml [deleted file]
www/plugins/formidable_1_0/lang/formidable_de.php [deleted file]
www/plugins/formidable_1_0/lang/formidable_en.php [deleted file]
www/plugins/formidable_1_0/lang/formidable_es.php [deleted file]
www/plugins/formidable_1_0/lang/formidable_fr.php [deleted file]
www/plugins/formidable_1_0/lang/formidable_it.php [deleted file]
www/plugins/formidable_1_0/lang/formidable_sk.php [deleted file]
www/plugins/formidable_1_0/lang/formulaire_fr.php [deleted file]
www/plugins/formidable_1_0/lang/formulaires_reponse_fr.php [deleted file]
www/plugins/formidable_1_0/lang/paquet-formidable.xml [deleted file]
www/plugins/formidable_1_0/lang/paquet-formidable_fr.php [deleted file]
www/plugins/formidable_1_0/modeles/formulaire_aide_memoire.html [deleted file]
www/plugins/formidable_1_0/modeles/formulaire_analyse.html [deleted file]
www/plugins/formidable_1_0/modeles/formulaire_formidable.yaml [deleted file]
www/plugins/formidable_1_0/modeles/formulaires_reponse.html [deleted file]
www/plugins/formidable_1_0/noisettes/formulaire_formidable.html [deleted file]
www/plugins/formidable_1_0/noisettes/formulaire_formidable.yaml [deleted file]
www/plugins/formidable_1_0/notifications/formulaire_accuse.html [deleted file]
www/plugins/formidable_1_0/notifications/formulaire_email.html [deleted file]
www/plugins/formidable_1_0/paquet.xml [deleted file]
www/plugins/formidable_1_0/prive/objets/contenu/formulaire.html [deleted file]
www/plugins/formidable_1_0/prive/objets/contenu/formulaires_reponse.html [deleted file]
www/plugins/formidable_1_0/prive/objets/infos/formulaire.html [deleted file]
www/plugins/formidable_1_0/prive/objets/infos/formulaires_reponse.html [deleted file]
www/plugins/formidable_1_0/prive/objets/liste/formulaires.html [deleted file]
www/plugins/formidable_1_0/prive/objets/liste/formulaires_reponses.html [deleted file]
www/plugins/formidable_1_0/prive/squelettes/contenu/configurer_formidable.html [deleted file]
www/plugins/formidable_1_0/prive/squelettes/contenu/formulaire.html [deleted file]
www/plugins/formidable_1_0/prive/squelettes/contenu/formulaire_edit.html [deleted file]
www/plugins/formidable_1_0/prive/squelettes/contenu/formulaires.html [deleted file]
www/plugins/formidable_1_0/prive/squelettes/contenu/formulaires_analyse.html [deleted file]
www/plugins/formidable_1_0/prive/squelettes/contenu/formulaires_reponse.html [deleted file]
www/plugins/formidable_1_0/prive/squelettes/contenu/formulaires_reponses.html [deleted file]
www/plugins/formidable_1_0/prive/squelettes/extra/formulaire.html [deleted file]
www/plugins/formidable_1_0/prive/squelettes/extra/formulaire_edit.html [deleted file]
www/plugins/formidable_1_0/prive/squelettes/extra/formulaires_analyse.html [deleted file]
www/plugins/formidable_1_0/prive/squelettes/extra/formulaires_reponses.html [deleted file]
www/plugins/formidable_1_0/prive/squelettes/hierarchie/formulaire.html [deleted file]
www/plugins/formidable_1_0/prive/squelettes/hierarchie/formulaire_edit.html [deleted file]
www/plugins/formidable_1_0/prive/squelettes/hierarchie/formulaires.html [deleted file]
www/plugins/formidable_1_0/prive/squelettes/hierarchie/formulaires_analyse.html [deleted file]
www/plugins/formidable_1_0/prive/squelettes/hierarchie/formulaires_reponse.html [deleted file]
www/plugins/formidable_1_0/prive/squelettes/hierarchie/formulaires_reponses.html [deleted file]
www/plugins/formidable_1_0/prive/squelettes/navigation/formulaire.html [deleted file]
www/plugins/formidable_1_0/prive/squelettes/navigation/formulaire_edit.html [deleted file]
www/plugins/formidable_1_0/prive/squelettes/navigation/formulaires.html [deleted file]
www/plugins/formidable_1_0/prive/squelettes/navigation/formulaires_analyse.html [deleted file]
www/plugins/formidable_1_0/prive/squelettes/navigation/formulaires_reponse.html [deleted file]
www/plugins/formidable_1_0/prive/squelettes/navigation/formulaires_reponses.html [deleted file]
www/plugins/formidable_1_0/prive/style_prive_plugin_formidable.html [deleted file]
www/plugins/formidable_1_0/prive/themes/basic/images/formulaire-16.png [deleted file]
www/plugins/formidable_1_0/prive/themes/spip/images/formulaire-16.png [deleted file]
www/plugins/formidable_1_0/prive/themes/spip/images/formulaire-24.png [deleted file]
www/plugins/formidable_1_0/prive/themes/spip/images/formulaires_reponse-24.png [deleted file]
www/plugins/formidable_1_0/public/formidable_criteres.php [deleted file]
www/plugins/formidable_1_0/puce_statut/formulaires_reponse.php [deleted file]
www/plugins/formidable_1_0/saisies-analyses/_base.html [deleted file]
www/plugins/formidable_1_0/saisies-analyses/case.html [deleted file]
www/plugins/formidable_1_0/saisies-analyses/checkbox.html [deleted file]
www/plugins/formidable_1_0/saisies-analyses/destinataires.html [deleted file]
www/plugins/formidable_1_0/saisies-analyses/explication.html [deleted file]
www/plugins/formidable_1_0/saisies-analyses/oui_non.html [deleted file]
www/plugins/formidable_1_0/saisies-analyses/radio.html [deleted file]
www/plugins/formidable_1_0/saisies-analyses/selecteur_article.html [deleted file]
www/plugins/formidable_1_0/saisies-analyses/selecteur_rubrique.html [deleted file]
www/plugins/formidable_1_0/saisies-analyses/selecteur_rubrique_article.html [deleted file]
www/plugins/formidable_1_0/saisies-analyses/selection.html [deleted file]
www/plugins/formidable_1_0/saisies-analyses/selection_multiple.html [deleted file]
www/plugins/formidable_1_0/saisies-vues/formulaire_formidable.html [deleted file]
www/plugins/formidable_1_0/saisies-vues/formulaire_formidable_multiple.html [deleted file]
www/plugins/formidable_1_0/saisies/champ.html [deleted file]
www/plugins/formidable_1_0/saisies/formulaire_formidable.html [deleted file]
www/plugins/formidable_1_0/saisies/formulaire_formidable_multiple.html [deleted file]
www/plugins/formidable_1_0/svn.revision [deleted file]
www/plugins/formidable_1_0/todo.txt [deleted file]
www/plugins/formidable_1_0/traiter/email.php [deleted file]
www/plugins/formidable_1_0/traiter/email.yaml [deleted file]
www/plugins/formidable_1_0/traiter/enregistrement.php [deleted file]
www/plugins/formidable_1_0/traiter/enregistrement.yaml [deleted file]
www/plugins/menus_1/balise/menus_afficher_entree.php
www/plugins/menus_1/formulaires/configurer_menus.php
www/plugins/menus_1/inclure/menu.html
www/plugins/menus_1/lang/menus.xml
www/plugins/menus_1/lang/menus_ar.php
www/plugins/menus_1/lang/menus_ca.php
www/plugins/menus_1/lang/menus_de.php
www/plugins/menus_1/lang/menus_en.php
www/plugins/menus_1/lang/menus_es.php
www/plugins/menus_1/lang/menus_fa.php
www/plugins/menus_1/lang/menus_fr.php
www/plugins/menus_1/lang/menus_it.php
www/plugins/menus_1/lang/menus_nl.php [new file with mode: 0644]
www/plugins/menus_1/lang/menus_ru.php
www/plugins/menus_1/lang/menus_sk.php
www/plugins/menus_1/lang/paquet-menus.xml
www/plugins/menus_1/lang/paquet-menus_de.php
www/plugins/menus_1/lang/paquet-menus_fr.php
www/plugins/menus_1/lang/paquet-menus_it.php
www/plugins/menus_1/lang/paquet-menus_nl.php [new file with mode: 0644]
www/plugins/menus_1/menu.html
www/plugins/menus_1/menus/articles_rubrique.html
www/plugins/menus_1/menus/articles_rubrique.xml
www/plugins/menus_1/menus/groupe_mots.html
www/plugins/menus_1/menus/groupe_mots.xml
www/plugins/menus_1/menus/mots.html
www/plugins/menus_1/menus/mots.xml
www/plugins/menus_1/menus/rubriques_completes.html
www/plugins/menus_1/menus/rubriques_completes.xml
www/plugins/menus_1/menus/secteurlangue.xml
www/plugins/menus_1/menus_administrations.php
www/plugins/menus_1/menus_fonctions.php
www/plugins/menus_1/paquet.xml
www/plugins/menus_1/prive/squelettes/contenu/configurer_menus.html
www/plugins/menus_1/svn.revision
www/plugins/multilang/formulaires/configurer_multilang.html
www/plugins/multilang/javascript/multilang_init.js_fonctions.php
www/plugins/multilang/lang/multilang.xml
www/plugins/multilang/lang/multilang_en.php
www/plugins/multilang/lang/multilang_es.php
www/plugins/multilang/lang/multilang_fa.php
www/plugins/multilang/lang/multilang_fr.php
www/plugins/multilang/lang/multilang_nl.php [new file with mode: 0644]
www/plugins/multilang/lang/multilang_sk.php
www/plugins/multilang/lang/paquet-multilang.xml
www/plugins/multilang/lang/paquet-multilang_fr.php
www/plugins/multilang/lang/paquet-multilang_it.php
www/plugins/multilang/lang/paquet-multilang_nl.php [new file with mode: 0644]
www/plugins/multilang/multilang_pipelines.php
www/plugins/multilang/paquet.xml
www/plugins/multilang/svn.revision
www/plugins/nospam/inc/nospam.php
www/plugins/nospam/inclure/nobot.html
www/plugins/nospam/lang/nospam.xml
www/plugins/nospam/lang/nospam_ar.php
www/plugins/nospam/lang/nospam_en.php
www/plugins/nospam/lang/nospam_es.php
www/plugins/nospam/lang/nospam_fa.php
www/plugins/nospam/lang/nospam_fr.php
www/plugins/nospam/lang/nospam_fr_tu.php [new file with mode: 0644]
www/plugins/nospam/lang/nospam_nl.php [new file with mode: 0644]
www/plugins/nospam/lang/nospam_sk.php
www/plugins/nospam/lang/paquet-nospam.xml
www/plugins/nospam/lang/paquet-nospam_ar.php
www/plugins/nospam/lang/paquet-nospam_de.php
www/plugins/nospam/lang/paquet-nospam_fr.php
www/plugins/nospam/lang/paquet-nospam_fr_tu.php [new file with mode: 0644]
www/plugins/nospam/lang/paquet-nospam_nl.php [new file with mode: 0644]
www/plugins/nospam/lang/paquet-nospam_sk.php [new file with mode: 0644]
www/plugins/nospam/nospam/verifier_formulaire_forum.php
www/plugins/nospam/nospam_pipelines.php
www/plugins/nospam/paquet.xml
www/plugins/nospam/plugin.xml
www/plugins/nospam/svn.revision
www/plugins/notifications2/action/instituer_forum_paremail.php
www/plugins/notifications2/contenu/page-notifications.html [new file with mode: 0644]
www/plugins/notifications2/formulaires/configurer_notifications.html
www/plugins/notifications2/lang/notifications.xml
www/plugins/notifications2/lang/notifications_en.php
www/plugins/notifications2/lang/notifications_es.php
www/plugins/notifications2/lang/notifications_fa.php
www/plugins/notifications2/lang/notifications_fr.php
www/plugins/notifications2/lang/notifications_nl.php [new file with mode: 0644]
www/plugins/notifications2/lang/notifications_sk.php
www/plugins/notifications2/lang/paquet-notifications.xml
www/plugins/notifications2/lang/paquet-notifications_fr.php
www/plugins/notifications2/lang/paquet-notifications_nl.php [new file with mode: 0644]
www/plugins/notifications2/notifications.html [new file with mode: 0644]
www/plugins/notifications2/notifications_pipelines.php
www/plugins/notifications2/paquet.xml
www/plugins/notifications2/svn.revision
www/plugins/odt2spip_30/action/odt2spip_importe.php
www/plugins/odt2spip_30/formulaires/configurer_odt2spip.html [new file with mode: 0644]
www/plugins/odt2spip_30/formulaires/odt2spip.html
www/plugins/odt2spip_30/lang/odtspip_fr.php
www/plugins/odt2spip_30/odt2spip_administrations.php [new file with mode: 0644]
www/plugins/odt2spip_30/odt2spip_pipelines.php
www/plugins/odt2spip_30/paquet.xml
www/plugins/odt2spip_30/prive/squelettes/contenu/configurer_odt2spip.html [new file with mode: 0644]
www/plugins/odt2spip_30/svn.revision
www/plugins/rss_article_3_0/formulaires/configurer_rssarticle.html
www/plugins/rss_article_3_0/genie/rssarticle_copie.php
www/plugins/rss_article_3_0/lang/rssarticle_fr.php
www/plugins/rss_article_3_0/paquet.xml
www/plugins/rss_article_3_0/svn.revision
www/plugins/saisies/inc/saisies.php
www/plugins/saisies/inc/saisies_afficher.php
www/plugins/saisies/lang/saisies.xml
www/plugins/saisies/lang/saisies_en.php
www/plugins/saisies/lang/saisies_nl.php
www/plugins/saisies/paquet.xml
www/plugins/saisies/plugin.xml
www/plugins/saisies/saisies-vues/_base.html
www/plugins/saisies/saisies/destinataires.yaml
www/plugins/saisies/saisies/textarea.html
www/plugins/saisies/saisies_fonctions.php
www/plugins/saisies/saisies_pipelines.php
www/plugins/saisies/svn.revision
www/plugins/seo-v1/paquet.xml
www/plugins/seo-v1/plugin.xml
www/plugins/seo-v1/svn.revision
www/plugins/skel_lhc/plugin.xml
www/plugins/spip-bonux-3/lang/paquet-spip_bonux.xml
www/plugins/spip-bonux-3/lang/paquet-spip_bonux_de.php [new file with mode: 0644]
www/plugins/spip-bonux-3/lang/paquet-spip_bonux_fa.php [new file with mode: 0644]
www/plugins/spip-bonux-3/lang/paquet-spip_bonux_fr.php
www/plugins/spip-bonux-3/lang/paquet-spip_bonux_nl.php [new file with mode: 0644]
www/plugins/spip-bonux-3/lang/spip_bonux.xml
www/plugins/spip-bonux-3/lang/spip_bonux_de.php [new file with mode: 0644]
www/plugins/spip-bonux-3/lang/spip_bonux_en.php
www/plugins/spip-bonux-3/lang/spip_bonux_fa.php [new file with mode: 0644]
www/plugins/spip-bonux-3/lang/spip_bonux_fr.php
www/plugins/spip-bonux-3/lang/spip_bonux_nl.php [new file with mode: 0644]
www/plugins/spip-bonux-3/lang/spip_bonux_ru.php
www/plugins/spip-bonux-3/lang/spip_bonux_sk.php
www/plugins/spip-bonux-3/paquet.xml
www/plugins/spip-bonux-3/spip_bonux_options.php
www/plugins/spip-bonux-3/svn.revision
www/plugins/spip_piwik_2_0/balise/piwik.php
www/plugins/spip_piwik_2_0/formulaires/configurer_piwik.html
www/plugins/spip_piwik_2_0/inc/js-cnil.html [new file with mode: 0644]
www/plugins/spip_piwik_2_0/lang/paquet-piwik.xml
www/plugins/spip_piwik_2_0/lang/paquet-piwik_nl.php [new file with mode: 0644]
www/plugins/spip_piwik_2_0/lang/piwik.xml
www/plugins/spip_piwik_2_0/lang/piwik_ca.php
www/plugins/spip_piwik_2_0/lang/piwik_de.php
www/plugins/spip_piwik_2_0/lang/piwik_en.php
www/plugins/spip_piwik_2_0/lang/piwik_es.php
www/plugins/spip_piwik_2_0/lang/piwik_fr.php
www/plugins/spip_piwik_2_0/lang/piwik_fr_tu.php
www/plugins/spip_piwik_2_0/lang/piwik_nl.php [new file with mode: 0644]
www/plugins/spip_piwik_2_0/lang/piwik_sk.php
www/plugins/spip_piwik_2_0/paquet.xml
www/plugins/spip_piwik_2_0/piwik_pipelines.php
www/plugins/spip_piwik_2_0/plugin.xml
www/plugins/spip_piwik_2_0/prive/piwik.html
www/plugins/spip_piwik_2_0/svn.revision
www/plugins/verifier/lang/paquet-verifier.xml
www/plugins/verifier/lang/paquet-verifier_fr.php
www/plugins/verifier/lang/paquet-verifier_fr_tu.php [new file with mode: 0644]
www/plugins/verifier/lang/verifier.xml
www/plugins/verifier/lang/verifier_ca.php
www/plugins/verifier/lang/verifier_de.php
www/plugins/verifier/lang/verifier_es.php
www/plugins/verifier/lang/verifier_fa.php
www/plugins/verifier/lang/verifier_fr.php
www/plugins/verifier/lang/verifier_fr_tu.php
www/plugins/verifier/lang/verifier_it.php
www/plugins/verifier/lang/verifier_pt_br.php
www/plugins/verifier/lang/verifier_ru.php
www/plugins/verifier/paquet.xml
www/plugins/verifier/plugin.xml
www/plugins/verifier/svn.revision
www/plugins/verifier/verifier/date.php
www/plugins/verifier/verifier/telephone.php
www/plugins/zpip_v1/inclure/barre-nav.html
www/plugins/zpip_v1/inclure/documents.html
www/plugins/zpip_v1/plugin.xml
www/plugins/zpip_v1/svn.revision

index 88dcd56..415e17a 100644 (file)
@@ -3,13 +3,14 @@
  * Plugin Compositions\r
  * (c) 2007-2013 Cedric Morin\r
  * Distribue sous licence GPL\r
- * \r
+ *\r
  * @package SPIP\Compositions\Fonctions\r
  */\r
 \r
 if (!defined("_ECRIRE_INC_VERSION")) return;\r
 \r
 define('_COMPOSITIONS_MATCH','-([^0-9][^.]*)');\r
+$GLOBALS['marqueur_skel'] = (isset($GLOBALS['marqueur_skel'])?$GLOBALS['marqueur_skel']:'').':composition';\r
 \r
 /**\r
  * Lister les objets actives par configuration\r
@@ -30,7 +31,7 @@ function compositions_objets_actives(){
 /**\r
  * Retrouver le nom du dossier ou sont stockees les compositions\r
  * reglage par defaut, ou valeur personalisee via cfg\r
- * \r
+ *\r
  * @return string\r
  */\r
 function compositions_chemin(){\r
@@ -44,7 +45,7 @@ function compositions_chemin(){
                        $config_chemin = rtrim($config['chemin_compositions'],'/').'/';\r
                }\r
        }\r
-       \r
+\r
        return $config_chemin;\r
 }\r
 \r
@@ -85,7 +86,7 @@ function compositions_lister_disponibles($type, $informer=true){
 \r
        // rechercher les skel du type article-truc.html\r
        // truc ne doit pas commencer par un chiffre pour eviter de confondre avec article-12.html\r
-       $match = "/($type_match)("._COMPOSITIONS_MATCH.")?[.]html$";\r
+       $match = "($type_match)("._COMPOSITIONS_MATCH.")?[.]html$";\r
 \r
        // lister les compositions disponibles\r
        $liste = find_all_in_path(compositions_chemin(),$match);\r
@@ -93,7 +94,7 @@ function compositions_lister_disponibles($type, $informer=true){
        if (count($liste)){\r
                foreach($liste as $s) {\r
                        $base = preg_replace(',[.]html$,i','',$s);\r
-                       if (preg_match(",$match,ims",$s,$regs)\r
+                       if (preg_match(",$match,ims",basename($s),$regs)\r
                          AND ($composition = !$informer\r
                                OR $composition = compositions_charger_infos($base)))\r
                                $res[$regs[1]][$regs[3]] = $composition;\r
@@ -102,7 +103,7 @@ function compositions_lister_disponibles($type, $informer=true){
        }\r
        // Pipeline compositions_lister_disponibles\r
        $res = pipeline('compositions_lister_disponibles',array(\r
-               'args'=>array('type' => $type,'informer' => $informer), \r
+               'args'=>array('type' => $type,'informer' => $informer),\r
                'data'=> $res\r
                )\r
        );\r
@@ -189,7 +190,7 @@ function compositions_decrire($type, $composition){
  * pour poser des classes generiques sur le <body>\r
  * si une balise <class>toto</class> est definie dans la composition c'est elle qui est appliquee\r
  * sinon on pose simplement le nom de la composition\r
- * \r
+ *\r
  * @param string $composition\r
  * @param string $type\r
  * @return string\r
@@ -226,7 +227,7 @@ function compositions_types(){
  * Renvoie les parametres necessaires pour utiliser l'heritage de composition de façon generique\r
  * recupere les donnes du pipeline compositions_declarer_heritage.\r
  * Si $type n'est pas precise, on renvoie simplement le tableau des objets pouvant heriter.\r
- * \r
+ *\r
  * @param string $type\r
  * @staticvar array $heritages\r
  * @return array\r
@@ -235,7 +236,7 @@ function compositions_recuperer_heritage($type=NULL){
        static $heritages = NULL;\r
        if (is_null($heritages)) // recuperer les heritages declares via le pipeline compositions_declarer_heritage\r
                $heritages = pipeline('compositions_declarer_heritage', array());\r
-       \r
+\r
        if (is_null($type))\r
                return $heritages;\r
 \r
@@ -244,7 +245,7 @@ function compositions_recuperer_heritage($type=NULL){
                $table_parent =  table_objet_sql($type_parent);\r
                $nom_id_parent = ($type==$type_parent) ? 'id_parent' : id_table_objet($type_parent); // Recursivite pour les rubriques, nom de l'identifiant du parent dans la table enfant\r
                $nom_id_table_parent = id_table_objet($type_parent); // Nom de l'identifiant du parent dans la table parent\r
-               \r
+\r
                // verifier que table et champs existent...\r
                $trouver_table = charger_fonction('trouver_table', 'base');\r
                if (!$type_parent\r
@@ -277,7 +278,7 @@ function compositions_recuperer_heritage($type=NULL){
 function compositions_determiner($type, $id, $serveur='', $etoile = false){\r
        static $composition = array();\r
        $id = intval($id);\r
-       \r
+\r
        if (isset($composition[$etoile][$serveur][$type][$id]))\r
                return $composition[$etoile][$serveur][$type][$id];\r
 \r
@@ -323,18 +324,24 @@ function compositions_heriter($type, $id, $id_parent=NULL, $serveur=''){
        if (intval($id) < 1) return '';\r
        static $infos = null;\r
        $compo_parent = '';\r
-       \r
+\r
        $heritage = compositions_recuperer_heritage($type);\r
+\r
+       /* Si aucun héritage n'a été défini pour le type d'objet, ce\r
+       * n'est pas la peine d'aller plus loin. */\r
+       if(count($heritage) == 0)\r
+               return '';\r
+\r
        $type_parent = $heritage['type_parent'];\r
        $table_parent = $heritage['table_parent'];\r
        $nom_id_parent = $heritage['nom_id_parent'];\r
        $nom_id_table_parent = $heritage['nom_id_table_parent'];\r
-       \r
+\r
        if (is_null($id_parent))\r
                $id_parent = sql_getfetsel($nom_id_parent, table_objet_sql($type), id_table_objet($type).'='.intval($id));\r
-       \r
+\r
        $heritages = compositions_recuperer_heritage();\r
-       \r
+\r
        do {\r
                $select = 'composition';\r
                if ($heritages[$type_parent]==$type_parent) // S'il y a recursivite sur le parent\r
@@ -344,10 +351,10 @@ function compositions_heriter($type, $id, $id_parent=NULL, $serveur=''){
                        $compo_parent = $row['composition'];\r
                elseif (strlen($row['composition'])==0 AND isset($heritages[$type_parent])) // Si le parent peut heriter, il faut verifier s'il y a heritage\r
                        $compo_parent = compositions_determiner($type_parent, $id_parent, $serveur='');\r
-               \r
+\r
                if (strlen($compo_parent) AND is_null($infos))\r
                        $infos = compositions_lister_disponibles('');\r
-                       \r
+\r
        }\r
        while ($id_parent = $row['id_parent']\r
                AND\r
@@ -409,7 +416,7 @@ function compositions_verrouiller($type, $id, $serveur=''){
        $config = unserialize($GLOBALS['meta']['compositions']);\r
        if (isset($config['tout_verrouiller']) AND $config['tout_verrouiller'] == 'oui')\r
                return true;\r
-       \r
+\r
        include_spip('base/abstract_sql');\r
        $table = table_objet($type);\r
        $table_sql = table_objet_sql($type);\r
@@ -438,7 +445,7 @@ function compositions_verrouiller($type, $id, $serveur=''){
  * @return string\r
  */\r
 function compositions_verrou_branche($id_rubrique, $serveur=''){\r
-       \r
+\r
        if (intval($id_rubrique) < 1) return false;\r
        if($infos_rubrique = sql_fetsel(array('id_parent','composition_branche_lock'),'spip_rubriques','id_rubrique='.intval($id_rubrique),'','','','',$serveur)) {\r
                if ($infos_rubrique['composition_branche_lock'])\r
index 32584c6..dd38a96 100644 (file)
@@ -58,21 +58,23 @@ function autoriser_styliser_dist($faire, $type='', $id=0, $qui = NULL, $opt = NU
  * @return array\r
  */\r
 function compositions_styliser($flux){\r
-       include_spip('compositions_fonctions');\r
        // en contexte Z, c'est Z ou Z-core qui stylise (on ne n'en occupe donc pas ici)\r
-       if (compositions_styliser_auto() AND !defined('_DIR_PLUGIN_Z') AND !defined('_DIR_PLUGIN_ZCORE')){\r
-               $type = $flux['args']['fond']; // on fait l'approximation fond=type\r
-               // si le type n'est pas l'objet d'une composition, ne rien faire\r
-               if (in_array($type,compositions_types())){\r
-                       $contexte = isset($flux['args']['contexte'])?$flux['args']['contexte']:$GLOBALS['contexte'];\r
-                       $serveur = $flux['args']['connect'];\r
-\r
-                       $ext = $flux['args']['ext'];\r
-                       $_id_table = id_table_objet($type);\r
-\r
-                       if ($id = $contexte[$_id_table] AND $composition = compositions_determiner($type,$id,$serveur)){\r
-                               if ($fond = compositions_selectionner($composition, $type, '', $ext, true, "")){\r
-                                       $flux['data'] = substr($fond, 0, - strlen(".$ext"));\r
+       if(!defined('_DIR_PLUGIN_Z') AND !defined('_DIR_PLUGIN_ZCORE')){\r
+               include_spip('compositions_fonctions');\r
+               if (compositions_styliser_auto()){\r
+                       $type = $flux['args']['fond']; // on fait l'approximation fond=type\r
+                       // si le type n'est pas l'objet d'une composition, ne rien faire\r
+                       if (in_array($type,compositions_types())){\r
+                               $contexte = isset($flux['args']['contexte'])?$flux['args']['contexte']:$GLOBALS['contexte'];\r
+                               $serveur = $flux['args']['connect'];\r
+\r
+                               $ext = $flux['args']['ext'];\r
+                               $_id_table = id_table_objet($type);\r
+\r
+                               if ($id = $contexte[$_id_table] AND $composition = compositions_determiner($type,$id,$serveur)){\r
+                                       if ($fond = compositions_selectionner($composition, $type, '', $ext, true, "")){\r
+                                               $flux['data'] = substr($fond, 0, - strlen(".$ext"));\r
+                                       }\r
                                }\r
                        }\r
                }\r
index 0c8d758..60ecc2f 100644 (file)
@@ -1,15 +1,19 @@
 <traduction module="compositions" gestionnaire="salvatore" url="http://trad.spip.net" source="svn://zone.spip.org/spip-zone/_plugins_/compositions/trunk/lang/" reference="fr">
-       <langue code="en" url="http://trad.spip.net/tradlang_module/compositions?lang_cible=en">
+       <langue code="en" url="http://trad.spip.net/tradlang_module/compositions?lang_cible=en" total="28" traduits="27" relire="0" modifs="0" nouveaux="1" pourcent="96.43">
                <traducteur nom="kent1" lien="http://trad.spip.net/auteur/kent1" />
        </langue>
-       <langue code="es" url="http://trad.spip.net/tradlang_module/compositions?lang_cible=es">
-               <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel" />
+       <langue code="es" url="http://trad.spip.net/tradlang_module/compositions?lang_cible=es" total="28" traduits="27" relire="0" modifs="0" nouveaux="1" pourcent="96.43">
+               <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel-s-bujaldon" />
        </langue>
-       <langue code="fr" />
-       <langue code="ru" url="http://trad.spip.net/tradlang_module/compositions?lang_cible=ru">
+       <langue code="fr" url="http://trad.spip.net/tradlang_module/compositions?lang_cible=fr" total="28" traduits="28" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+       </langue>
+       <langue code="nl" url="http://trad.spip.net/tradlang_module/compositions?lang_cible=nl" total="28" traduits="27" relire="0" modifs="0" nouveaux="1" pourcent="96.43">
+               <traducteur nom="Hanjo" lien="http://trad.spip.net/auteur/hanjo" />
+       </langue>
+       <langue code="ru" url="http://trad.spip.net/tradlang_module/compositions?lang_cible=ru" total="28" traduits="27" relire="0" modifs="0" nouveaux="1" pourcent="96.43">
                <traducteur nom="Serge Markitanenko" lien="http://trad.spip.net/auteur/serge-markitanenko" />
        </langue>
-       <langue code="sk" url="http://trad.spip.net/tradlang_module/compositions?lang_cible=sk">
+       <langue code="sk" url="http://trad.spip.net/tradlang_module/compositions?lang_cible=sk" total="28" traduits="27" relire="0" modifs="0" nouveaux="1" pourcent="96.43">
                <traducteur nom="jaro" lien="http://trad.spip.net/auteur/jaro" />
        </langue>
 </traduction>
index 4384ab3..e351a84 100644 (file)
@@ -29,9 +29,10 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'label_composition_explication' => 'Vous êtes Webmestre, vous pouvez',
        'label_composition_lock' => 'Verrouiller la composition',
        'label_composition_rubrique' => 'Composition des rubriques',
+       'label_heritages' => 'Héritages',
        'label_information' => 'Information',
        'label_masquer_formulaire' => 'Masquer le formulaire',
-       'label_masquer_formulaire_composition' => 'Masquer le formulaire de choix d\'une composition lorsque l\'utilisateur n\'a pas les droits de la modifier.',
+       'label_masquer_formulaire_composition' => 'Masquer le formulaire de choix d’une composition lorsque l’utilisateur n’a pas les droits de la modifier.',
        'label_pas_de_composition' => 'Aucune composition',
        'label_styliser' => 'Sélection des squelettes',
        'label_styliser_auto' => 'Ne pas utiliser la sélection automatique. La sélection est prise en charge par mes squelettes.',
diff --git a/www/plugins/compositions_v3/lang/compositions_nl.php b/www/plugins/compositions_v3/lang/compositions_nl.php
new file mode 100644 (file)
index 0000000..366e048
--- /dev/null
@@ -0,0 +1,48 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/compositions?lang_cible=nl
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // C
+       'composition' => 'Compositie',
+       'composition_defaut' => 'standaard compositie',
+       'composition_heritee' => 'geërfd',
+       'composition_utilisee' => 'Compositie:',
+       'composition_verrouillee' => 'Deze compositie is door de webmaster vergrendeld.',
+       'compositions' => 'Composities',
+
+       // D
+       'des_utilisations' => '@nb@ toepassingen',
+
+       // H
+       'heritages' => 'Deze compositie legt de standaardcompositie vast van de volgende objecten:',
+
+       // L
+       'label_activer_composition_objets' => 'Pas de composities toe op de objecten',
+       'label_branche_verrouillee' => 'De composities van deze tak zijn vergrendeld.',
+       'label_chemin_compositions' => 'Compositiemap',
+       'label_chemin_compositions_details' => 'Geef het pad aan waarin de skeletten van de composities moeten worden gezocht.',
+       'label_composition' => 'Compositie',
+       'label_composition_branche_lock' => 'De compositie van alle objecten van de tak vergrendelen',
+       'label_composition_explication' => 'Je bent webmaster. Je mag',
+       'label_composition_lock' => 'Vergrendel de compositie',
+       'label_composition_rubrique' => 'Compositie van rubrieken',
+       'label_information' => 'Informatie',
+       'label_masquer_formulaire' => 'Het formulier verbergen',
+       'label_masquer_formulaire_composition' => 'Verberg het compositie-keuzemenu wanneer de gebruiker het recht niet heeft ze te veranderen.',
+       'label_pas_de_composition' => 'Geen enkele compositie',
+       'label_styliser' => 'Keuze van skeletten',
+       'label_styliser_auto' => 'Gebruik geen automatische selectie. De selectie wordt door mijn skeletten gedaan.',
+       'label_tout_verrouiller' => 'Alles vergrendelen',
+       'label_toutes_verrouilles' => 'Alle composities zijn vergrendeld.',
+       'label_verrouiller_toutes_compositions' => 'Alle composities vergrendelen (alleen webmasters kunnen ze aanpassen).',
+
+       // U
+       'une_utilisation' => '1 toepassing'
+);
+
+?>
index bf5b385..d601a57 100644 (file)
@@ -1,15 +1,19 @@
 <traduction module="paquet-compositions" gestionnaire="salvatore" url="http://trad.spip.net" source="svn://zone.spip.org/spip-zone/_plugins_/compositions/trunk/lang/" reference="fr">
-       <langue code="en" url="http://trad.spip.net/tradlang_module/paquet-compositions?lang_cible=en">
+       <langue code="en" url="http://trad.spip.net/tradlang_module/paquet-compositions?lang_cible=en" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="kent1" lien="http://trad.spip.net/auteur/kent1" />
        </langue>
-       <langue code="es" url="http://trad.spip.net/tradlang_module/paquet-compositions?lang_cible=es">
-               <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel" />
+       <langue code="es" url="http://trad.spip.net/tradlang_module/paquet-compositions?lang_cible=es" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel-s-bujaldon" />
        </langue>
-       <langue code="fr" />
-       <langue code="ru" url="http://trad.spip.net/tradlang_module/paquet-compositions?lang_cible=ru">
+       <langue code="fr" url="http://trad.spip.net/tradlang_module/paquet-compositions?lang_cible=fr" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+       </langue>
+       <langue code="nl" url="http://trad.spip.net/tradlang_module/paquet-compositions?lang_cible=nl" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Hanjo" lien="http://trad.spip.net/auteur/hanjo" />
+       </langue>
+       <langue code="ru" url="http://trad.spip.net/tradlang_module/paquet-compositions?lang_cible=ru" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="Serge Markitanenko" lien="http://trad.spip.net/auteur/serge-markitanenko" />
        </langue>
-       <langue code="sk" url="http://trad.spip.net/tradlang_module/paquet-compositions?lang_cible=sk">
+       <langue code="sk" url="http://trad.spip.net/tradlang_module/paquet-compositions?lang_cible=sk" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="jaro" lien="http://trad.spip.net/auteur/jaro" />
        </langue>
 </traduction>
index 374952e..e7c7f83 100644 (file)
@@ -6,7 +6,7 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // C
-       'compositions_description' => 'Ce plugin vous permet de définir plusieurs variantes de compositions pour chaque type objet SPIP (article, rubrique, etc.) et de les appliquer simplement, cas par cas, depuis l\'espace privé.',
+       'compositions_description' => 'Ce plugin vous permet de définir plusieurs variantes de compositions pour chaque type objet SPIP (article, rubrique, etc.) et de les appliquer simplement, cas par cas, depuis lespace privé.',
        'compositions_nom' => 'Compositions',
        'compositions_slogan' => 'Varier les mises en page selon les rubriques, les articles...'
 );
diff --git a/www/plugins/compositions_v3/lang/paquet-compositions_nl.php b/www/plugins/compositions_v3/lang/paquet-compositions_nl.php
new file mode 100644 (file)
index 0000000..00a21e8
--- /dev/null
@@ -0,0 +1,16 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/paquet-compositions?lang_cible=nl
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // C
+       'compositions_description' => 'Met deze plugin kun je meerdere composities creëren, voor elk type SPIP object (artikel, rubriek, enz.) en ze eenvoudig toepassen vanuit de privé-ruimte.',
+       'compositions_nom' => 'Composities',
+       'compositions_slogan' => 'Varieer de indeling van de bladzijdes volgens rubriek, artikel, ...'
+);
+
+?>
index 81d5892..9323646 100644 (file)
@@ -1,9 +1,9 @@
 <paquet
        prefix="compositions"
        categorie="outil"
-       version="3.3.2"
+       version="3.3.7"
        etat="test"
-       compatibilite="[3.0.0-dev;3.0.*]"
+       compatibilite="[3.0.0;3.0.*]"
        logo="prive/themes/spip/images/composition-32.png"
        schema="0.5.0"
        documentation="http://contrib.spip.net/?article3777"
@@ -14,7 +14,7 @@
 
        <auteur lien="http://www.yterium.com">Cedric Morin</auteur>
 
-       <copyright>2007-2012</copyright>
+       <copyright>2007-2013</copyright>
 
        <licence lien="http://www.gnu.org/licenses/gpl-3.0.html">GPL 3</licence>
 
@@ -30,8 +30,8 @@
        <pipeline nom="compositions_declarer_heritage"  inclure="compositions_pipeline.php" />
 
        <utilise nom="Z" compatibilite="[1.7.10;[" />
-       <utilise nom="Zcore" compatibilite="[2.0.0-dev;[" />
-       <utilise nom="Zpip" compatibilite="[2.0.0-dev;[" />
+       <utilise nom="Zcore" compatibilite="[2.0.0;[" />
+       <utilise nom="Zpip" compatibilite="[2.0.0;[" />
        
        <necessite nom="spip_bonux" compatibilite="[3.0.0;[" />
 
index aef0deb..5c55d22 100644 (file)
@@ -1,28 +1,48 @@
 #SET{compositions,#REM|compositions_lister_disponibles}\r
-<BOUCLE_compositions(POUR){tableau #GET{compositions}}>\r
+\r
+<BOUCLE_compositions(DATA){source tableau, #GET{compositions}}>\r
        <B_pour>\r
-       <h4>[(#CLE|table_objet|ucfirst)]</h4>\r
-       <ul class="liste_items compositions">\r
-       <BOUCLE_pour(POUR){tableau #VALEUR}{par nom}>\r
-       <li class="item">\r
-       [(#VALEUR|table_valeur{icon}|image_reduire{24,24}|inserer_attribut{class,logo})]\r
-       <h3>[(#VALEUR|table_valeur{nom}|supprimer_numero)]</h3>\r
-       [<div class='descriptif'>(#VALEUR|table_valeur{description})</div>]\r
-\r
-        <B_heritages>\r
-        <div class='descriptif'><:compositions:heritages:> <BOUCLE_heritages(POUR){tableau #ENV{compositions}|table_valeur{#ENV{composition}}|table_valeur{branche}}{', '}>#CLE (#VALEUR)</BOUCLE_heritages>.</div>\r
-        </B_heritages>\r
-\r
-               <B_util>\r
-                       [(#TOTAL_BOUCLE|singulier_ou_pluriel{compositions:une_utilisation,compositions:des_utilisations})]\r
-                       <ul>\r
-                       <BOUCLE_util(POUR){tableau #_compositions:CLE|compositions_lister_utilisations{#CLE}}>\r
-                       <li><a href="[(#VALEUR|table_valeur{id}|generer_url_entite{#_compositions:CLE})]">[(#VALEUR|table_valeur{titre}|supprimer_numero)][ | (#VALEUR|table_valeur{id})]</a></li>\r
-                       </BOUCLE_util>\r
-                       </ul>\r
-               </B_util>\r
-       </li>\r
-       </BOUCLE_pour>\r
-       </ul>\r
+\r
+       [(#BOITE_OUVRIR{[(#CLE|objet_info{texte_objets}|_T)], simple, section})]\r
+\r
+       <div class='liste'>\r
+               <ul class="liste-items compositions">\r
+                       <BOUCLE_pour(DATA){source tableau, #VALEUR}{par nom}>\r
+                       <li class="item">\r
+                               [(#ICON|image_reduire{24,24}|inserer_attribut{class,logo})]\r
+\r
+                               <h4>[(#NOM|supprimer_numero)]</h4>\r
+\r
+                               [<div class='descriptif'>(#DESCRIPTION)</div>]\r
+\r
+                               <B_heritages>\r
+                               [(#BOITE_OUVRIR{<:compositions:label_heritages:>, raccourcis})]\r
+                                       <:compositions:heritages:>\r
+                                       <ul class="spip">\r
+                                               <BOUCLE_heritages(DATA){source tableau, #BRANCHE}>\r
+                                                       <li>#CLE (#VALEUR)</li>\r
+                                               </BOUCLE_heritages>\r
+                                       </ul>\r
+                               #BOITE_FERMER\r
+                               </B_heritages>\r
+\r
+                               <B_util>\r
+                                       [(#BOITE_OUVRIR{[(#TOTAL_BOUCLE|singulier_ou_pluriel{compositions:une_utilisation,compositions:des_utilisations})], raccourcis})]\r
+                                       <div class='liste'>\r
+                                               <ul class='liste-items'>\r
+                                               <BOUCLE_util(DATA){source tableau, #_compositions:CLE|compositions_lister_utilisations{#CLE}}>\r
+                                                       <li class='item'>\r
+                                                               <a href="[(#ID|generer_url_entite{#_compositions:CLE})]">[(#TITRE|supprimer_numero)][ | (#ID)]</a>\r
+                                                       </li>\r
+                                               </BOUCLE_util>\r
+                                               </ul>\r
+                                       </div>\r
+                               </B_util>\r
+                       </li>\r
+                       </BOUCLE_pour>\r
+               </ul>\r
+       </div>\r
+\r
+       #BOITE_FERMER\r
        </B_pour>\r
-</BOUCLE_compositions>
\ No newline at end of file
+</BOUCLE_compositions>\r
index 29a74e0..340dfa5 100644 (file)
@@ -2,8 +2,8 @@
 
 .formulaire_editer_composition_objet .editer_composition .choix {min-height:24px; padding-top:4px;overflow: hidden }
 .formulaire_editer_composition_objet .editer_composition .choix input {display:block;float: #ENV{left};}
-.formulaire_editer_composition_objet .editer_composition .choix label {display:block;float: #ENV{left}; width: 80%;}
-.formulaire_editer_composition_objet .editer_composition .choix img.logo {float:#ENV{left};margin-#ENV{right}:5px;}
+.formulaire_editer_composition_objet .editer_composition .choix label {display:block;float: #ENV{left}; width: 80%; padding-#ENV{left}: 34px; margin-bottom: 0.5em;}
+.formulaire_editer_composition_objet .editer_composition .choix img.logo {float:#ENV{left};margin-#ENV{left}: -34px;margin-#ENV{right}:5px;}
 
 .formulaire_editer_composition_objet h4 {
        padding-#ENV{left}: 30px;
@@ -20,4 +20,7 @@
 
 .formulaire_editer_composition_objet h4 span.composition_actuelle {font-weight: normal;}
 
-.formulaire_editer_composition_objet span.descriptif {font-style: italic;}
\ No newline at end of file
+.formulaire_editer_composition_objet span.descriptif {font-style: italic; font-size: 0.875em;}
+
+body.compositions #contenu .item > h4 {margin-bottom:0; }
+body.compositions #contenu .item .raccourcis ul {margin-bottom:0; }
index f3ef8df..fe9e80a 100644 (file)
@@ -1,10 +1,10 @@
 <svn_revision>
 <text_version>
 Origine: file:///home/svn/repository/spip-zone/_plugins_/compositions/trunk
-Revision: 73176
-Dernier commit: 2013-06-01 20:43:22 +0200 
+Revision: 82892
+Dernier commit: 2014-06-07 05:50:07 +0200 
 </text_version>
 <origine>file:///home/svn/repository/spip-zone/_plugins_/compositions/trunk</origine>
-<revision>73176</revision>
-<commit>2013-06-01 20:43:22 +0200 </commit>
+<revision>82892</revision>
+<commit>2014-06-07 05:50:07 +0200 </commit>
 </svn_revision>
\ No newline at end of file
index ab776a0..bd7a7c8 100644 (file)
@@ -1,4 +1,10 @@
 <?php
+/**
+ * Crayons 
+ * plugin for spip 
+ * (c) Fil, toggg 2006-2013
+ * licence GPL
+ */
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
index fcd47a0..b9c6385 100644 (file)
@@ -1,4 +1,10 @@
 <?php
+/**
+ * Crayons 
+ * plugin for spip 
+ * (c) Fil, toggg 2006-2013
+ * licence GPL
+ */
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
@@ -32,15 +38,13 @@ function affiche_controleur($class, $c=null) {
                        OR $f = charger_fonction($type, 'controleurs', true)
                        OR $f = 'controleur_dist';
                        list($html,$status) = $f($regs, $c);
-                       if ($status) {
+                       if ($status)
                                $return['$erreur'] = $html;
-                       } else {
+                       else
                                $return['$html'] = $html;
-                       }
                }
-       } else {
+       } else
                $return['$erreur'] = _U('crayons:donnees_mal_formatees');
-       }
 
        return $return;
 }
@@ -64,21 +68,18 @@ function controleur_dist($regs, $c=null) {
                if (!lire_fichier($fichier, $controldata))
                        die('erreur lecture controleur');
                if (preg_match_all('/\bname=(["\'])#ENV\{name_(\w+)\}\1/',
-               $controldata, $matches, PREG_PATTERN_ORDER)) {
+                       $controldata, $matches, PREG_PATTERN_ORDER))
                        $champ = $matches[2];
-               }
-       } else {
+       } else
                $controleur = '';
-       }
 
        $valeur = valeur_colonne_table($type, $champ, $id);
 
        #spip_log("$valeur = valeur_colonne_table($type, $champ, $id);");
        #spip_log($champ);
 
-       if ($valeur === false) {
+       if ($valeur === false)
                return array("$type $id $champ: " . _U('crayons:pas_de_valeur'), 6);
-       }
 /*     if (is_scalar($valeur)) {
                $valeur = array($champ => $valeur);
        }*/
@@ -93,14 +94,15 @@ function controleur_dist($regs, $c=null) {
        // si la valeur fait plusieurs lignes on doit mettre un textarea
        // derogation specifique pour descriptif_site de spip_metas
        if (
-       preg_match(",[\n\r],", $valeur[$champ])
+               preg_match(",[\n\r],", $valeur[$champ])
                OR (($champ == 'valeur') && ($id == 'descriptif_site'))
                OR
        // on regarde le type tel que defini dans serial
        // (attention il y avait des blob dans les vieux spip)
-       ($sqltype = colonne_table($type, $champ)) &&
-          ( in_array($sqltype['type'] , array('mediumtext', 'longblob', 'longtext')) ||
-          (($sqltype['type'] == 'text' || $sqltype['type'] == 'blob') && in_array($champ, array('descriptif', 'bio'))))) {
+               ($sqltype = colonne_table($type, $champ)) &&
+               (in_array($sqltype['type'] , array('mediumtext', 'longblob', 'longtext')) ||
+               (($sqltype['type'] == 'text' || $sqltype['type'] == 'blob') 
+               && in_array($champ, array('descriptif', 'bio'))))) {
                $options['hauteurMini'] = 80; // hauteur mini d'un textarea
                $option['inmode'] = 'texte';
        } else { // ligne, hauteur naturelle
@@ -128,7 +130,7 @@ function controleur_dist($regs, $c=null) {
 
        if (!$controleur) {
                $inputAttrs['style'] .= 'width:' . $crayon->largeur . 'px;' .
-                ($crayon->hauteur ? ' height:' . $crayon->hauteur . 'px;' : '');
+               ($crayon->hauteur ? ' height:' . $crayon->hauteur . 'px;' : '');
        }
 
        $html = $controleur ? $crayon->formulaire(null, $inputAttrs) :
@@ -176,7 +178,8 @@ class Crayon {
        // $options : options directes du crayon (developpement)
        function Crayon($name, $texts = array(), $options = array(), $c=null) {
                $this->name = $name;
-               list($this->type, $this->modele, $this->id) = explode('-', $this->name, 3);
+
+               list($this->type, $this->modele, $this->id) = array_pad(explode('-', $this->name, 3), 3, '');
                list($this->distant,$this->table) = distant_table($this->type);
                if (is_scalar($texts) || is_null($texts)) {
                        $texts = array($this->modele => $texts);
@@ -222,7 +225,7 @@ class Crayon {
 
                $property = 'background-color';
                if (!$p = _request($property)
-               OR $p == 'transparent') {
+                       OR $p == 'transparent') {
                        $p = 'white';
                }
                $this->styles[] = "$property:$p;";
@@ -252,10 +255,14 @@ class Crayon {
                ;
        }
 
-/*
- Fabriquer les balises des champs d'apres un modele controleurs/(type_)modele.html
-       $contexte est un tableau (nom=>valeur) qui sera enrichi puis passe à recuperer_fond
-*/
+/**
+ * Fabriquer les balises des champs d'apres un modele controleurs/(type_)modele.html
+ * 
+ * @param array $contexte
+ *     tableau (nom=>valeur) qui sera enrichi puis passe à recuperer_fond
+ * @return string
+ *  le contenu de recuperer_fond du controleur
+ */
        function fond($contexte = array()) {
                include_spip('inc/filtres');
                $contexte['id_' . $this->type] = $this->id;
@@ -275,12 +282,16 @@ class Crayon {
                return recuperer_fond($this->controleur, $contexte);
        }
 
-/*
- Fabriquer les balises du ou des champs
-       $spec est soit un scalaire 'ligne' ou 'texte' précisant le type de balise
-       soit un array($champ=>array('type'=>'...', 'attrs'=>array(attributs specifique du champs)))
-       $attrs est un tableau (attr=>val) d'attributs communs ou pour le champs unique
-*/
+/**
+ * Fabriquer les balises du ou des champs
+ * $attrs est un tableau (attr=>val) d'attributs communs ou pour le champs unique
+ * 
+ * @param string|array $spec
+ *  soit un scalaire 'ligne' ou 'texte' précisant le type de balise
+ *  soit un array($champ=>array('type'=>'...', 'attrs'=>array(attributs specifique du champs)))
+ * @return string
+ *     le html de l'input
+ */
        function input($spec = 'ligne', $attrs = array()) {
                if ($this->controleur) {
                        return $this->fond($spec);
@@ -306,6 +317,7 @@ class Crayon {
                                        . entites_html($val)
                                        . '" />'."\n";
                        }
+
                        if (is_array($spec) && isset($spec[$champ]['attrs'])) {
                                foreach ($spec[$champ]['attrs'] as $attr=>$val) {
                                        $input = inserer_attribut($input, $attr, $val);
@@ -344,13 +356,16 @@ class Crayon {
                }
                return $return;
        }
-
 }
 
-
-/*
-       Fabriquer les boutons du formulaire
-*/
+/**
+ *     Fabriquer les boutons du formulaire
+ * 
+ *  @param array $boutons
+ *      Le tableau des boutons
+ *  @return string
+ *      Le html des boutons
+ */
 function crayons_boutons($boutons = array()) {
        $boutons['submit'] = array('ok', texte_backend(_T('bouton_enregistrer')));
        $boutons['cancel'] = array('cancel', texte_backend(_T('crayons:annuler')));
@@ -407,21 +422,26 @@ class SecureCrayon extends Crayon {
        }
 }
 
+/**
+ * Action affichant le controleur html ou php adéquat
+ * 
+ * on affiche le formulaire demande (controleur associe au crayon)
+ * Si le crayon n'est pas de type "crayon", c'est un crayon etendu, qui
+ * integre le formulaire requis à son controleur (pour avoir les boutons
+ * du formulaire dans un controleur Draggable, par exemple, mais il y a
+ * d'autres usages possibles)
+ * 
+ */
 function action_crayons_html_dist() {
-       // CONTROLEUR
-       // on affiche le formulaire demande (controleur associe au crayon)
-       // Si le crayon n'est pas de type "crayon", c'est un crayon etendu, qui
-       // integre le formulaire requis à son controleur (pour avoir les boutons
-       // du formulaire dans un controleur Draggable, par exemple, mais il y a
-       // d'autres usages possibles)
        include_spip('inc/crayons');
 
+       // Utiliser la bonne langue d'environnement
        if(!isset($GLOBALS['forcer_lang']) OR !$GLOBALS['forcer_lang'] OR ($GLOBALS['forcer_lang'] === 'non'))
                lang_select($GLOBALS['auteur_session']['lang']);
-       
+
        $return = affiche_controleur(_request('class'));
        if (!_request('type') OR _request('type') == 'crayon')
-         $return['$html'] = crayons_formulaire($return['$html']);
+               $return['$html'] = crayons_formulaire($return['$html']);
 
        $json = trim(crayons_json_encode($return));
 
index da10a53..85ac161 100644 (file)
@@ -1,60 +1,70 @@
 <?php
+/**
+ * Crayons 
+ * plugin for spip 
+ * (c) Fil, toggg 2006-2013
+ * licence GPL
+ */
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
 function verif_secu($w, $secu) {
-    return (
-        $secu == md5($GLOBALS['meta']['alea_ephemere'].'='.$w)
-    OR
-        $secu == md5($GLOBALS['meta']['alea_ephemere_ancien'].'='.$w)
-    );
+       return (
+               $secu == md5($GLOBALS['meta']['alea_ephemere'].'='.$w)
+       OR
+               $secu == md5($GLOBALS['meta']['alea_ephemere_ancien'].'='.$w)
+       );
 }
 
 function post_crayons() {
-    $results = array();
-
-    if (isset($_POST['crayons']) AND is_array($_POST['crayons']))
-    foreach ($_POST['crayons'] as $crayon) {
-
-        $name = $_POST['name_'.$crayon];
-        $content = array();
-        if ($_POST['fields_'.$crayon]) {
-          foreach (explode(',', $_POST['fields_'.$crayon]) as $field) {
-            // cas particulier d'un envoi de fichier
-            if (isset($_FILES['content_'.$crayon.'_'.$field])) {
-               if ($_FILES['content_'.$crayon.'_'.$field]['size']>0)
-                       $content[$field] = $_FILES['content_'.$crayon.'_'.$field];
-               else
-                       $content[$field] = false;
-                       # cf. valeur passee dans crayon->md5() : false ou filemtime() du logo
-            } else {
-               /*
-                       le changement de charset n'est plus necessaire
-                       depuis jquery 1.5 (feature non documentee de jquery!)
-               */
-               $content[$field] = is_array($_POST['content_'.$crayon.'_'.$field])?implode(',',$_POST['content_'.$crayon.'_'.$field]):$_POST['content_'.$crayon.'_'.$field];
-            }
-          }
-        }
-
-        // Si les donnees POSTees ne correspondent pas a leur md5,
-        // il faut les traiter
-        if (isset($name)
-        AND md5(serialize($content)) != $_POST['md5_'.$crayon]) {
-            if (!isset($_POST['secu_'.$crayon])
-            OR verif_secu($name, $_POST['secu_'.$crayon])) {
-                $results[] = array($name, $content, $_POST['md5_'.$crayon], $crayon);
-            }
-            else {
-                return false; // erreur secu
-            }
-        }
-        // cas inchange
-        else
-            $results[] = array($name, $content, false, $crayon);
-    }
-
-    return $results;
+       $results = array();
+
+       if (isset($_POST['crayons']) AND is_array($_POST['crayons']))
+       foreach ($_POST['crayons'] as $crayon) {
+               $name = $_POST['name_'.$crayon];
+               $content = array();
+               if ($_POST['fields_'.$crayon]) {
+                       foreach (explode(',', $_POST['fields_'.$crayon]) as $field) {
+                               // cas particulier d'un envoi de fichier
+                               if (isset($_FILES['content_'.$crayon.'_'.$field])) {
+                                       if ($_FILES['content_'.$crayon.'_'.$field]['size']>0)
+                                               $content[$field] = $_FILES['content_'.$crayon.'_'.$field];
+                                       else
+                                               $content[$field] = false;
+                                       // cf. valeur passee dans crayon->md5() : false ou filemtime() du logo
+                               } else {
+                                       /**
+                                        * le changement de charset n'est plus necessaire
+                                        * depuis jquery 1.5 (feature non documentee de jquery!)
+                                        */
+                                       if (isset($_POST['content_'.$crayon.'_'.$field])) {
+                                               $content[$field] = is_array($_POST['content_'.$crayon.'_'.$field])
+                                                       ?implode(',',$_POST['content_'.$crayon.'_'.$field])
+                                                       :$_POST['content_'.$crayon.'_'.$field];
+                                       } else {
+                                               $content[$field] = null;
+                                       }
+                               }
+                       }
+               }
+
+               // Si les donnees POSTees ne correspondent pas a leur md5,
+               // il faut les traiter
+               if (isset($name)
+                       AND md5(serialize($content)) != $_POST['md5_'.$crayon]) {
+                       if (!isset($_POST['secu_'.$crayon])
+                               OR verif_secu($name, $_POST['secu_'.$crayon])) {
+                               $results[] = array($name, $content, $_POST['md5_'.$crayon], $crayon);
+                       }
+                       else
+                               return false; // erreur secu
+               }
+               // cas inchange
+               else
+                       $results[] = array($name, $content, false, $crayon);
+       }
+
+       return $results;
 }
 
 
@@ -179,12 +189,24 @@ function crayons_store_set_modifs($modifs, $return) {
        foreach ($modifs as $modif) {
                list($type, $modele, $id, $content, $wid) = $modif;
 
-               // MODELE
                $fun = '';
+               // si le crayon est un MODELE avec une fonction xxx_revision associee
+               // cas ou une fonction xxx_revision existe
                if (function_exists($f = $type.'_'. $modele . "_revision")
                OR function_exists($f = $modele . "_revision")
                OR function_exists($f = $type . "_revision"))
                        $fun = $f;
+
+               // si on est en SPIP 3+ et qu'on edite un objet editorial bien declare
+               // passer par l'API objet_modifier
+               elseif (function_exists('lister_tables_objets_sql')
+                 AND $tables_objet = lister_tables_objets_sql()
+                       AND isset($tables_objet[table_objet_sql($type)])) {
+                       $fun = 'crayons_objet_modifier';
+               }
+
+               // sinon spip < 3 (ou pas un objet edito)
+               // on teste les objets connus et on route sur les fonctions correspondantes
                else switch($type) {
                        case 'article':
                                $fun = 'crayons_update_article';
@@ -206,9 +228,19 @@ function crayons_store_set_modifs($modifs, $return) {
                                include_spip('action/editer_site');
                                $fun = 'revisions_sites';
                                break;
+                       case 'document':
+                               include_spip('plugins/installer');
+                               include_spip('inc/plugin');
+                               if (spip_version_compare($GLOBALS['spip_version_branche'], '3.0.0alpha', '>=')) {
+                                       include_spip('action/editer_document');
+                                       $fun = 'document_modifier';
+                               } else {
+                                       include_spip('inc/modifier');
+                                       $fun = 'revision_document';
+                               }
+                               break;
                        // cas geres de la maniere la plus standard
                        case 'auteur':
-                       case 'document':
                        case 'mot':
                        case 'signature':
                        case 'petition':
@@ -217,10 +249,12 @@ function crayons_store_set_modifs($modifs, $return) {
                                $fun = 'revision_'.$type;
                                break;
                }
+
+               // si on a pas reussi on passe par crayons_update() qui fera un update sql brutal
                if (!$fun or !function_exists($fun)) {
-                               $fun = 'crayons_update';
-//                         $return['$erreur'] = "$type: " . _U('crayons:non_implemente');
-//                         break;
+                       $fun = 'crayons_update';
+                       // $return['$erreur'] = "$type: " . _U('crayons:non_implemente');
+                       // break;
                }
 
                if (!isset($updates[$type][$fun])) {
@@ -238,30 +272,30 @@ function crayons_store_set_modifs($modifs, $return) {
 
        // il manque une fonction de mise a jour ==> on ne fait rien !
        if ($return['$erreur'])
-           return $return;
+               return $return;
 
        // hop ! mises a jour table par table et id par id
        foreach ($updates as $type => $idschamps)
-       foreach ($idschamps as $fun => $ids) {
-               foreach ($ids as $id => $champsvaleurs) {
-                       /* cas particulier du logo dans un crayon complexe :
-                          ce n'est pas un champ de la table */
-                       if (isset($champsvaleurs['chval']['logo'])) {
-                               spip_log('revision logo', 'crayons');
-                               logo_revision($id, $champsvaleurs['chval'], $type, $champsvaleurs['wdg']);
-                               unset($champsvaleurs['chval']['logo']);
-                       }
-                       if (count($champsvaleurs['chval'])) {
-                               // -- revisions_articles($id_article, $c) --
-                               spip_log("$fun($id ...)", 'crayons');
-                               $updok = $fun($id, $champsvaleurs['chval'], $type, $champsvaleurs['wdg']);
-                               // Renvoyer erreur si update base distante echoue, on ne regarde pas les updates base local car ils ne renvoient rien
-                               list($distant,$table) = distant_table($type);
-                               if ($distant AND !$updok)
-                                       $return['$erreur'] = "$type: " . _U('crayons:update_impossible');
+               foreach ($idschamps as $fun => $ids) {
+                       foreach ($ids as $id => $champsvaleurs) {
+                               /* cas particulier du logo dans un crayon complexe :
+                                  ce n'est pas un champ de la table */
+                               if (isset($champsvaleurs['chval']['logo'])) {
+                                       spip_log('revision logo', 'crayons');
+                                       logo_revision($id, $champsvaleurs['chval'], $type, $champsvaleurs['wdg']);
+                                       unset($champsvaleurs['chval']['logo']);
+                               }
+                               if (count($champsvaleurs['chval'])) {
+                                       // -- revisions_articles($id_article, $c) --
+                                       spip_log("$fun($id ...)", 'crayons');
+                                       $updok = $fun($id, $champsvaleurs['chval'], $type, $champsvaleurs['wdg']);
+                                       // Renvoyer erreur si update base distante echoue, on ne regarde pas les updates base local car ils ne renvoient rien
+                                       list($distant,$table) = distant_table($type);
+                                       if ($distant AND !$updok)
+                                               $return['$erreur'] = "$type: " . _U('crayons:update_impossible');
+                               }
                        }
-           }
-       }
+               }
 
        return $return;
 }
@@ -281,24 +315,24 @@ function vues_dist($type, $modele, $id, $content, $wid){
                lang_select($a = $GLOBALS['meta']['langue_site']);
        }
 
-  // chercher vues/article_toto.html
-  // sinon vues/toto.html
-  if (find_in_path( ($fond = 'vues/' . $type . '_' . $modele) . '.html')
-  OR find_in_path( ($fond = 'vues/' . $modele) .'.html')
-  OR find_in_path( ($fond = 'vues/' . $type) .'.html')) {
+       // chercher vues/article_toto.html
+       // sinon vues/toto.html
+       if (find_in_path( ($fond = 'vues/' . $type . '_' . $modele) . '.html')
+               OR find_in_path( ($fond = 'vues/' . $modele) .'.html')
+               OR find_in_path( ($fond = 'vues/' . $type) .'.html')) {
                $contexte = array(
-                   'id_' . $table => $id,
-                   'crayon_type' => $type,
+                       'id_' . $table => $id,
+                       'crayon_type' => $type,
                        'crayon_modele' => $modele,
-                   'champ' => $modele,
-                   'class' => _request('class_'.$wid),
-                   'self' => _request('self'),
-                   'lang' => $GLOBALS['spip_lang']
+                       'champ' => $modele,
+                       'class' => _request('class_'.$wid),
+                       'self' => _request('self'),
+                       'lang' => $GLOBALS['spip_lang']
                );
                $contexte = array_merge($contexte, $content);
                include_spip('public/assembler');
                return recuperer_fond($fond, $contexte);
-  }
+       }
        // vue par defaut
        else {
                // Par precaution on va rechercher la valeur
@@ -323,7 +357,7 @@ function vues_dist($type, $modele, $id, $content, $wid){
 
                // seul spip core sait rendre les donnees
                if (in_array($modele,
-                 array('chapo', 'texte', 'descriptif', 'ps', 'bio'))) {
+                       array('chapo', 'texte', 'descriptif', 'ps', 'bio'))) {
                        return propre($valeur);
                } else {
                        return typo($valeur);
@@ -331,11 +365,28 @@ function vues_dist($type, $modele, $id, $content, $wid){
        }
 }
 
+
+/**
+ * Fonction de mise a jour par API editer_objet
+ * @param $id
+ * @param $data
+ * @param $type
+ * @param $ref
+ * @return bool|mixed|string
+ */
+function crayons_objet_modifier($id, $data, $type, $ref) {
+       if (include_spip('action/editer_objet')
+           AND function_exists('objet_modifier')) {
+               return objet_modifier(objet_type($type),$id,$data);
+       }
+       // fallback
+       return crayons_update($id, $data, $type);
+}
+
 //
 // Fonctions de mise a jour generique
 //
-function crayons_update($id, $colval = array(), $type = '')
-{
+function crayons_update($id, $colval = array(), $type = ''){
        if (!$colval OR !count($colval))
                return false;
        list($distant,$table) = distant_table($type);
index e43140b..f09e7be 100644 (file)
@@ -1,15 +1,20 @@
 <?php
+/**
+ * Crayons 
+ * plugin for spip 
+ * (c) Fil, toggg 2006-2013
+ * licence GPL
+ */
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
-// upload d'images
-/*
+/**
+ * Upload de documents
+ * 
  * Cette action recoit des fichiers ($_FILES)
  * et les affecte a l'objet courant ;
  * puis renvoie la liste des documents joints
- *
  */
-
 function action_crayons_upload() {
 
        $type = preg_replace('/\W+/', '', strval(_request('type')));
@@ -24,8 +29,8 @@ function action_crayons_upload() {
 
        // on n'accepte qu'un seul document à la fois, dans la variable 'upss'
        if ($file = $_FILES['upss']
-       AND $file['error'] == 0) {
-       
+               AND $file['error'] == 0) {
+
                $source = $file['tmp_name'];  # /tmp/php/phpxxx
                $nom_envoye = $file['name'];  # mon-image.jpg   
                
@@ -33,24 +38,20 @@ function action_crayons_upload() {
                include_spip('inc/plugin'); // spip_version_compare dans SPIP 2.x 
                if (function_exists(spip_version_compare)) { // gerer son absence dans les branche precedente a SPIP 2.x
                        if (spip_version_compare($GLOBALS['spip_version_branche'], '3.0.0alpha', '>=')) 
-                                       define('_SPIP3', true);                 
+                               define('_SPIP3', true);
                } 
                if (defined('_SPIP3')) {
                        include_spip('action/ajouter_documents');
-                       
                        $ajouter_un_document = charger_fonction('ajouter_un_document','action');
                        $id = $ajouter_un_document("new", $file, $type, $id, 'document');
-                       
                } else {
                        include_spip('inc/ajouter_documents');
-                       
-                       $id = ajouter_un_document($source, $nom_envoye, $type, $id, 'document', $id_document=0, &$documents_actifs, $titrer=true);
+                       $id = ajouter_un_document($source, $nom_envoye, $type, $id, 'document', $id_document=0, $documents_actifs, $titrer=true);
                }
        }
 
-       if (!$id) {
+       if (!$id)
                $erreur = "erreur !";
-       }
 
        $a = recuperer_fond('modeles/uploader_item',array('id_document' => $id, 'erreur' => $erreur));
 
index 1dd1401..a90378a 100644 (file)
@@ -1,9 +1,9 @@
 <BOUCLE_f(BREVES){id_breve}{statut==.}>
 <fieldset style="#ENV{largeur}px;#ENV{style}"><legend>Hyperlien</legend>
-<label><:form_prop_nom_site:></label> <input class="crayon-active" name="#ENV{name_lien_titre}"
+<label><:form_prop_indiquer_nom_site:></label> <input class="crayon-active" name="#ENV{name_lien_titre}"
  style="width:100%;" value="[(#NOM_SITE**|entites_html)]" />
  <br />
- <label><:forum_url:></label> <input class="crayon-active" name="#ENV{name_lien_url}"
+ <label><:form_prop_url_site:></label> <input class="crayon-active" name="#ENV{name_lien_url}"
  style="width:100%;" value="[(#URL_SITE**|entites_html)]" />
 </fieldset>
 </BOUCLE_f>
index 1d0efdf..7471fca 100644 (file)
@@ -8,7 +8,7 @@
 
 [(#REM) En fonction de du contexte, choisir un logo ]
 
-<BOUCLE_d(DOCUMENTS){id_document}>
+<BOUCLE_d(DOCUMENTS){id_document}{tout}>
 
 [(#SET{image,[<img src="(#LOGO_DOCUMENT||extraire_attribut{src})" />]})]
 
 
        <small>[(#GET{logo}|inserer_attribut{src,#GET{url}}
                |inserer_attribut{style,vertical-align:middle;})]
-       &nbsp; remplacer ce document #EXTENSION
+       &nbsp; <:crayons:legend_controleur_fichier_remplacer{extension=#EXTENSION}:>
        [((#GET{image}
                |extraire_attribut{width})&times;[(#GET{image}
-               |extraire_attribut{height})]px)]&nbsp;:</small>
+               |extraire_attribut{height})]px)]</small>
 
 </legend>
 
index 175db3e..1a4b65d 100644 (file)
                <h3 class="legend"><:crayons:legend_controleur_hyperlien:></h3>
                <ul>
                        <li class="editer_nom_site">
-                               <label for="nom_site"><:form_prop_nom_site:></label>
+                               <label for="nom_site"><:form_prop_indiquer_nom_site:></label>
                                <input class="crayon-active text" name="#ENV{name_nom_site}" id="nom_site"
                                        size="40" value="[(#NOM_SITE**|entites_html)]" />
                        </li>
                        <li class="editer_url_site">
-                               <label for="url_site"><:forum_url:></label>
+                               <label for="url_site"><:form_prop_url_site:></label>
                                <input class="crayon-active text" name="#ENV{name_url_site}" id="url_site"
                                        size="40" value="[(#URL_SITE**|entites_html)]" />
                        </li>
                <h3 class="legend"><:crayons:legend_controleur_hyperlien:></h3>
                <ul>
                        <li class="editer_nom_site">
-                               <label for="nom_site"><:form_prop_nom_site:></label>
+                               <label for="nom_site"><:form_prop_indiquer_nom_site:></label>
                                <input class="crayon-active text" name="#ENV{name_nom_site}" id="nom_site"
                                        size="40" value="[(#NOM_SITE**|entites_html)]" />
                        </li>
                        <li class="editer_url_site">
-                               <label for="url_site"><:forum_url:></label>
+                               <label for="url_site"><:form_prop_url_site:></label>
                                <input class="crayon-active text" name="#ENV{name_url_site}" id="url_site"
                                        size="40" value="[(#URL_SITE**|entites_html)]" />
                        </li>
                <h3 class="legend"><:crayons:legend_controleur_hyperlien:></h3>
                <ul>
                        <li class="editer_nom_site">
-                               <label for="nom_site"><:form_prop_nom_site:></label>
+                               <label for="nom_site"><:form_prop_indiquer_nom_site:></label>
                                <input class="crayon-active text" name="#ENV{name_nom_site}" id="nom_site"
                                        size="40" value="[(#NOM_SITE**|entites_html)]" />
                        </li>
                        <li class="editer_url_site">
-                               <label for="url_site"><:forum_url:></label>
+                               <label for="url_site"><:form_prop_url_site:></label>
                                <input class="crayon-active text" name="#ENV{name_url_site}" id="url_site"
                                        size="40" value="[(#URL_SITE**|entites_html)]" />
                        </li>
                <h3 class="legend"><:crayons:legend_controleur_hyperlien:></h3>
                <ul>
                        <li class="editer_nom_site">
-                               <label for="nom_site"><:form_prop_nom_site:></label>
+                               <label for="nom_site"><:form_prop_indiquer_nom_site:></label>
                                <input class="crayon-active text" name="#ENV{name_nom_site}" id="nom_site"
                                        size="40" value="[(#NOM_SITE**|entites_html)]" />
                        </li>
                        <li class="editer_url_site">
-                               <label for="url_site"><:forum_url:></label>
+                               <label for="url_site"><:form_prop_url_site:></label>
                                <input class="crayon-active text" name="#ENV{name_url_site}" id="url_site"
                                        size="40" value="[(#URL_SITE**|entites_html)]" />
                        </li>
                <h3 class="legend"><:crayons:legend_controleur_hyperlien:></h3>
                <ul>
                        <li class="editer_nom_site">
-                               <label for="nom_site"><:form_prop_nom_site:></label>
+                               <label for="nom_site"><:form_prop_indiquer_nom_site:></label>
                                <input class="crayon-active text" name="#ENV{name_nom_site}" id="nom_site"
                                        size="40" value="[(#NOM_SITE**|entites_html)]" />
                        </li>
                        <li class="editer_url_site">
-                               <label for="url_site"><:forum_url:></label>
+                               <label for="url_site"><:form_prop_url_site:></label>
                                <input class="crayon-active text" name="#ENV{name_url_site}" id="url_site"
                                        size="40" value="[(#URL_SITE**|entites_html)]" />
                        </li>
index ac2ef20..f8026f0 100644 (file)
@@ -11,7 +11,7 @@
 <label><:forum_titre:></label> <input class="crayon-active" name="#ENV{name_titre}"
  style="width:100%;" value="[(#TITRE**|entites_html)]" />
  <br />
- <label><:forum_url:></label> <input class="crayon-active" name="#ENV{name_url}"
+ <label><:form_prop_url_site:></label> <input class="crayon-active" name="#ENV{name_url}"
  style="width:100%;" value="[(#URL_ARTICLE**|sinon{http://}|entites_html)]" />
 </fieldset>
 </BOUCLE_f>
index 4b66711..e427f9e 100644 (file)
@@ -1,4 +1,11 @@
 <?php
+/**
+ * Crayons 
+ * plugin for spip 
+ * (c) Fil, toggg 2006-2013
+ * licence GPL
+ *
+ */
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
@@ -18,7 +25,7 @@ function pack_cQuery($chemin) {
        OR _request('debug_crayons')
        // le vieil auto_compress_js
        OR ($GLOBALS['meta']['auto_compress_js'] == 'oui'
-         AND @file_exists(_DIR_RESTREINT.'inc/compacte_js.php'))
+       AND @file_exists(_DIR_RESTREINT.'inc/compacte_js.php'))
        // ou l'espace prive
        OR !function_exists('test_espace_prive')
        OR test_espace_prive())
index 0c0484b..b271f55 100644 (file)
@@ -1,24 +1,44 @@
 <?php\r
-/** \r
- * Crayons plugin for spip (c) Fil, toggg 2006-2013 -- licence GPL\r
- * \r
+/**\r
+ * Crayons\r
+ * plugin for spip\r
+ * (c) Fil, toggg 2006-2014\r
+ * licence GPL\r
+ *\r
  * @package SPIP\Crayons\Fonctions\r
  */\r
+\r
 if (!defined("_ECRIRE_INC_VERSION")) return;\r
 \r
-/**\r
- * Débuguer les crayons\r
- * mettre a true dans mes_options pour avoir les crayons non compresses\r
- */\r
-if(!defined('_DEBUG_CRAYONS'))\r
+if (!defined('_DEBUG_CRAYONS')) {\r
+       /**\r
+        * Débuguer les crayons\r
+        *\r
+        * Mettre a true dans mes_options pour avoir les crayons non compresses\r
+        */\r
        define('_DEBUG_CRAYONS', false);\r
+}\r
 \r
-// Dire rapidement si ca vaut le coup de chercher des droits\r
+/**\r
+ * Dire rapidement si ca vaut le coup de chercher des droits\r
+ *\r
+ * @return bool\r
+**/\r
 function analyse_droits_rapide_dist() {\r
        return isset($GLOBALS['auteur_session']['statut']);\r
 }\r
 \r
-// Le pipeline header_prive (pour y tester les crayons)\r
+/**\r
+ * Ajouter la gestion des crayons dans l'espace privé\r
+ *\r
+ * @pipeline header_prive\r
+ * @uses Crayons_preparer_page()\r
+ *\r
+ * @param string $head\r
+ *     Contenu du header\r
+ * @return string\r
+ *     Contenu du header\r
+**/\r
 function Crayons_insert_head($head) {\r
        // verifie la presence d'une meta crayons, si c'est vide\r
        // on ne cherche meme pas a traiter l'espace prive\r
@@ -28,10 +48,11 @@ function Crayons_insert_head($head) {
        }\r
 \r
        // verifie que l'edition de l'espace prive est autorisee\r
-       if ($config_espace_prive['espaceprive'] == 'on') {\r
+       if (isset($config_espace_prive['espaceprive'])\r
+       and $config_espace_prive['espaceprive'] == 'on') {\r
                // determine les pages (exec) crayonnables\r
                if (($config_espace_prive['exec_autorise'] == '*') ||\r
-              in_array(_request('exec'),explode(',',$config_espace_prive['exec_autorise']))) {\r
+                       in_array(_request('exec'), explode(',', $config_espace_prive['exec_autorise']))) {\r
                        // Calcul des droits\r
                        include_spip('inc/crayons');\r
                        $head = Crayons_preparer_page($head, '*', wdgcfg(), 'head');\r
@@ -42,21 +63,38 @@ function Crayons_insert_head($head) {
        return $head;\r
 }\r
 \r
-// Le pipeline affichage_final, execute a chaque hit sur toute la page\r
+/**\r
+ * Ajouter la gestion des crayons dans l'espace public\r
+ *\r
+ * @pipeline affichage_final\r
+ * @uses analyse_droits_rapide_dist()\r
+ * @uses Crayons_preparer_page()\r
+ * @note\r
+ *     Le pipeline affichage_final est executé à chaque hit sur toute la page\r
+ *\r
+ * @param string $page\r
+ *     Contenu de la page à envoyer au navigateur\r
+ * @return string\r
+ *     Contenu de la page à envoyer au navigateur\r
+**/\r
 function &Crayons_affichage_final(&$page) {\r
 \r
        // ne pas se fatiguer si le visiteur n'a aucun droit\r
-       if (!(function_exists('analyse_droits_rapide')?analyse_droits_rapide():analyse_droits_rapide_dist()))\r
+       if (!(function_exists('analyse_droits_rapide')?analyse_droits_rapide():analyse_droits_rapide_dist())) {\r
                return $page;\r
+       }\r
 \r
        // sinon regarder rapidement si la page a des classes crayon\r
-       if (strpos($page, 'crayon')===FALSE)\r
+       if (strpos($page, 'crayon')===false) {\r
                return $page;\r
+       }\r
 \r
        // voir un peu plus precisement lesquelles\r
        include_spip('inc/crayons');\r
-       if (!preg_match_all(_PREG_CRAYON, $page, $regs, PREG_SET_ORDER))\r
+       if (!preg_match_all(_PREG_CRAYON, $page, $regs, PREG_SET_ORDER)) {\r
                return $page;\r
+       }\r
+\r
        $wdgcfg = wdgcfg();\r
 \r
        // calculer les droits sur ces crayons\r
@@ -65,33 +103,58 @@ function &Crayons_affichage_final(&$page) {
        $droits_accordes = 0;\r
        foreach ($regs as $reg) {\r
                list(,$crayon,$type,$champ,$id) = $reg;\r
-               if (_DEBUG_CRAYONS) spip_log("autoriser('modifier', $type, $id, NULL, array('champ'=>$champ))","crayons_distant");\r
-               if (autoriser('modifier', $type, $id, NULL, array('champ'=>$champ))) {\r
-                       if(!isset($droits['.' . $crayon]))\r
+               if (_DEBUG_CRAYONS) {\r
+                       spip_log("autoriser('modifier', $type, $id, NULL, array('champ'=>$champ))", "crayons_distant");\r
+               }\r
+               if (autoriser('modifier', $type, $id, null, array('champ'=>$champ))) {\r
+                       if (!isset($droits['.' . $crayon])) {\r
                                $droits['.' . $crayon] = 0;\r
+                       }\r
                        $droits['.' . $crayon]++;\r
                        $droits_accordes ++;\r
                }\r
        }\r
+\r
        // et les signaler dans la page\r
-       if ($droits_accordes == count($regs)) // tous les droits\r
+       if ($droits_accordes == count($regs)) // tous les droits\r
                $page = Crayons_preparer_page($page, '*', $wdgcfg);\r
-       else if ($droits) // seulement certains droits, preciser lesquels\r
-               $page = Crayons_preparer_page($page, join(',',array_keys($droits)), $wdgcfg);\r
+       } elseif ($droits) { // seulement certains droits, preciser lesquels\r
+               $page = Crayons_preparer_page($page, join(',', array_keys($droits)), $wdgcfg);\r
+       }\r
 \r
        return $page;\r
 }\r
 \r
-function &Crayons_preparer_page(&$page, $droits, $wdgcfg = array(), $mode='page') {\r
+/**\r
+ * Ajoute les scripts css et js nécessaires aux crayons dans le code HTML\r
+ *\r
+ * @uses crayons_var2js()\r
+ *\r
+ * @param string $page\r
+ *     Code HTML de la page complète ou du header seulement\r
+ * @param string $droits\r
+ *     - Liste de css définissant les champs crayonnables\r
+ *       (séparés par virgule) dont l'édition est autorisée\r
+ *     - "*" si tous sont autorisés\r
+ * @param array $wdgcfg\r
+ *     Description de la configuration des crayons (attribut => valeur)\r
+ * @param string $mode\r
+ *     - page : toute la page est présente dans `$page`\r
+ *     - head : seul le header est présent dans `$page`\r
+ * @return\r
+**/\r
+function &Crayons_preparer_page(&$page, $droits, $wdgcfg = array(), $mode = 'page') {\r
        /**\r
         * Si pas forcer_lang, on charge le contrôleur dans la langue que l'utilisateur a dans le privé\r
         */\r
-       if(!isset($GLOBALS['forcer_lang']) OR !$GLOBALS['forcer_lang'] OR ($GLOBALS['forcer_lang'] === 'non'))\r
+       if (!isset($GLOBALS['forcer_lang']) or !$GLOBALS['forcer_lang'] or ($GLOBALS['forcer_lang'] === 'non')) {\r
                lang_select($GLOBALS['auteur_session']['lang']);\r
-       \r
+       }\r
+\r
        $jsFile = generer_url_public('crayons.js');\r
-       if (_DEBUG_CRAYONS)\r
-               $jsFile = parametre_url($jsFile,'debug_crayons',1,'&');\r
+       if (_DEBUG_CRAYONS) {\r
+               $jsFile = parametre_url($jsFile, 'debug_crayons', 1, '&');\r
+       }\r
        include_spip('inc/filtres'); // rien que pour direction_css() :(\r
        $cssFile = direction_css(find_in_path('crayons.css'));\r
 \r
@@ -127,10 +190,10 @@ function &Crayons_preparer_page(&$page, $droits, $wdgcfg = array(), $mode='page'
        $pp = '';\r
        if (isset($meta_crayon['barretypo']) && $meta_crayon['barretypo']) {\r
                if (function_exists('chercher_filtre')\r
-               AND $f = chercher_filtre('info_plugin')\r
-               AND $f('PORTE_PLUME','est_actif')) {\r
+               and $f = chercher_filtre('info_plugin')\r
+               and $f('PORTE_PLUME','est_actif')) {\r
 \r
-               $pp = <<<EOF\r
+                       $pp = <<<EOF\r
 cQuery(function() {\r
        if (typeof onAjaxLoad == 'function') {\r
                function barrebouilles_crayons() {\r
@@ -164,37 +227,41 @@ s.parentNode.insertBefore(cr, s);
 \r
 EOH;\r
 \r
-       if ($mode == 'head')\r
-               return $page . $incJS . $incCSS; //js inline avant les css, sinon ca bloque le chargement\r
+       if ($mode == 'head') {\r
+               return $page = $page . $incJS . $incCSS; //js inline avant les css, sinon ca bloque le chargement\r
+       }\r
 \r
        $pos_head = strpos($page, '</head>');\r
-       if ($pos_head === false)\r
+       if ($pos_head === false) {\r
                return $page;\r
+       }\r
 \r
        // js inline avant la premiere css, ou sinon avant la fin du head\r
        $pos_link = strpos($page, '<link ');\r
-       if (!$pos_link)\r
+       if (!$pos_link) {\r
                $pos_link = $pos_head;\r
+       }\r
        $page = substr_replace($page, $incJS, $pos_link, 0);\r
 \r
        // css avant la fin du head\r
        $pos_head = strpos($page, '</head>');\r
                $page = substr_replace($page, $incCSS, $pos_head, 0);\r
-       \r
+\r
        return $page;\r
 }\r
 \r
-\r
 /**\r
  * Balise indiquant un champ SQL crayonnable\r
  *\r
  * @note\r
- *   Si cette fonction est absente, balise_EDIT_dist() déclarée par SPIP\r
+ *   Si cette fonction est absente, `balise_EDIT_dist()` déclarée par SPIP\r
  *   ne retourne rien\r
- * \r
+ *\r
  * @example\r
- *   <div class="#EDIT{texte}">#TEXTE</div>\r
- *   <div class="#EDIT{ps}">#PS</div>\r
+ *     ```\r
+ *     <div class="#EDIT{texte}">#TEXTE</div>\r
+ *     <div class="#EDIT{ps}">#PS</div>\r
+ *     ```\r
  *\r
  * @param Champ $p\r
  *   Pile au niveau de la balise\r
@@ -204,19 +271,19 @@ EOH;
 function balise_EDIT($p) {\r
 \r
        // le code compile de ce qui se trouve entre les {} de la balise\r
-       $label = interprete_argument_balise(1,$p);\r
+       $label = interprete_argument_balise(1, $p);\r
 \r
        // Verification si l'on est dans le cas d'une meta\r
        // #EDIT{meta-descriptif_site} ou #EDIT{meta-demo/truc}\r
-       if (preg_match('/meta-(.*)\'/',$label,$meta)) {\r
+       if (preg_match('/meta-(.*)\'/', $label, $meta)) {\r
                $type = 'meta';\r
                $label= 'valeur';\r
                $primary = $meta[1];\r
                $p->code = "classe_boucle_crayon('"\r
                        . $type\r
+                       ."','"\r
+                       .$label\r
                        ."',"\r
-                       .sinon($label,"''")\r
-                       .","\r
                        . "str_replace('/', '__', '$primary')" # chaque / doit être remplacé pour CSS.\r
                        .").' '";\r
                $p->interdire_scripts = false;\r
@@ -225,36 +292,47 @@ function balise_EDIT($p) {
 \r
        $i_boucle = $p->nom_boucle ? $p->nom_boucle : $p->id_boucle;\r
        // #EDIT hors boucle? ne rien faire\r
-       if (!$type = ($p->boucles[$i_boucle]->type_requete)) {\r
+       if (!isset($p->boucles[$i_boucle]) or !$type = ($p->boucles[$i_boucle]->type_requete)) {\r
                $p->code = "''";\r
                $p->interdire_scripts = false;\r
                return $p;\r
        }\r
 \r
-       // crayon sur une base distante 'nua:article-intro-5'\r
-       if ($distant = $p->boucles[$i_boucle]->sql_serveur)\r
+       // crayon sur une base distante 'nua__article-intro-5'\r
+       if ($distant = $p->boucles[$i_boucle]->sql_serveur) {\r
                $type = $distant.'__'.$type;\r
+       }\r
 \r
        // le compilateur 1.9.2 ne calcule pas primary pour les tables secondaires\r
        // il peut aussi arriver une table sans primary (par ex: une vue)\r
-       if(!($primary = $p->boucles[$i_boucle]->primary)){\r
+       if (!($primary = $p->boucles[$i_boucle]->primary)) {\r
                include_spip('inc/vieilles_defs'); # 1.9.2 pour trouver_def_table\r
-               list($nom, $desc) = trouver_def_table(\r
-                       $p->boucles[$i_boucle]->type_requete, $p->boucles[$i_boucle]);\r
-               $primary = $desc['key']['PRIMARY KEY'];\r
+               if (function_exists('trouver_def_table')) {\r
+                       list($nom, $desc) = trouver_def_table(\r
+                               $p->boucles[$i_boucle]->type_requete,\r
+                               $p->boucles[$i_boucle]\r
+                       );\r
+                       $primary = $desc['key']['PRIMARY KEY'];\r
+               }\r
+       }\r
+       // On rajoute ici un debug dans le cas où aucune clé primaire n'est trouvée.\r
+       // Cela peut se présenter par exemple si on utilise #EDIT{monchamp} directement\r
+       // dans une boucle CONDITION sans faire référence au nom de la boucle d'au dessus.\r
+       if (!$primary) {\r
+               erreur_squelette(_T('crayons:absence_cle_primaire'), $p);\r
        }\r
 \r
-       $primary = explode(',',$primary);\r
+       $primary = explode(',', $primary);\r
        $id = array();\r
-       foreach($primary as $key) {\r
-               $id[] = champ_sql(trim($key),$p);\r
+       foreach ($primary as $key) {\r
+               $id[] = champ_sql(trim($key), $p);\r
        }\r
-       $primary = implode(".'-'.",$id);\r
+       $primary = implode(".'-'.", $id);\r
 \r
        $p->code = "classe_boucle_crayon('"\r
                . $type\r
                ."',"\r
-               .sinon($label,"''")\r
+               .sinon($label, "''")\r
                .","\r
                . $primary\r
                .").' '";\r
@@ -262,13 +340,14 @@ function balise_EDIT($p) {
        return $p;\r
 }\r
 \r
-\r
 /**\r
  * Balise indiquant une configuration crayonnable\r
  *\r
  * @example\r
- *   <div class="#EDIT_CONFIG{descriptif_site}">#DESCRIPTIF_SITE_SPIP</div>\r
- *   <div class="#EDIT_CONFIG{demo/truc}">#CONFIG{demo/truc}</div>\r
+ *     ```\r
+ *     <div class="#EDIT_CONFIG{descriptif_site}">#DESCRIPTIF_SITE_SPIP</div>\r
+ *     <div class="#EDIT_CONFIG{demo/truc}">#CONFIG{demo/truc}</div>\r
+ *     ```\r
  *\r
  * @param Champ $p\r
  *   Pile au niveau de la balise\r
@@ -278,8 +357,10 @@ function balise_EDIT($p) {
 function balise_EDIT_CONFIG_dist($p) {\r
 \r
        // le code compile de ce qui se trouve entre les {} de la balise\r
-       $config = interprete_argument_balise(1,$p);\r
-       if (!$config) return $p;\r
+       $config = interprete_argument_balise(1, $p);\r
+       if (!$config) {\r
+               return $p;\r
+       }\r
 \r
        // chaque / du nom de config doit être transformé pour css.\r
        // nous utiliserons '__' à la place.\r
@@ -292,7 +373,7 @@ function balise_EDIT_CONFIG_dist($p) {
                . "','"\r
                . $label\r
                . "',"\r
-               . "str_replace('/', '__', $config)" \r
+               . "str_replace('/', '__', $config)"\r
                . ").' '";\r
        $p->interdire_scripts = false;\r
        return $p;\r
@@ -314,11 +395,14 @@ function creer_le_crayon($class) {
 }\r
 \r
 /**\r
- * Balise #CRAYON affichant un formulaire de crayon\r
- * SI ?edit=1;\r
+ * Balise `#CRAYON` affichant un formulaire de crayon\r
+ *\r
+ * SI `?edit=1;`\r
  *\r
  * @example\r
- *   #CRAYON{ps}\r
+ *    ```\r
+ *    #CRAYON{ps}\r
+ *    ```\r
  *\r
  * @param Champ $p\r
  *   Pile au niveau de la balise\r
@@ -333,12 +417,14 @@ function balise_CRAYON($p) {
 \r
 \r
 /**\r
- * Donne la classe CSS crayon en fonction\r
+ * Donne la classe CSS crayon\r
+ *\r
+ * En fonction :\r
  * - du type de la boucle\r
- *   (attention aux exceptions pour #EDIT dans les boucles HIERARCHIE et SITES)\r
+ *   (attention aux exceptions pour `#EDIT` dans les boucles HIERARCHIE et SITES)\r
  * - du champ demande (vide, + ou se terminant par + : (+)classe type--id)\r
  * - de l'id courant\r
- * \r
+ *\r
  * @param string $type\r
  *   Type d'objet, ou "meta" pour un champ de configuration\r
  * @param string $champ\r
@@ -353,20 +439,21 @@ function classe_boucle_crayon($type, $champ, $id) {
        $type = $type[strlen($type) - 1] == 's' ?\r
                substr($type, 0, -1) :\r
                str_replace(\r
-                       array('hierarchie', 'syndication'),\r
-                       array('rubrique',   'site'),\r
-               $type);\r
+                       array('hierarchie','syndication'),\r
+                       array('rubrique','site'),\r
+                       $type\r
+               );\r
 \r
-       $plus = (substr($champ, -1) == '+' AND $champ = substr($champ, 0, -1))\r
+       $plus = (substr($champ, -1) == '+' and $champ = substr($champ, 0, -1))\r
                ? " $type--$id"\r
                : '';\r
-       \r
+\r
        // test rapide pour verifier que l'id est valide (a-zA-Z0-9)\r
        if (false !== strpos($id, ' ')) {\r
                spip_log("L'identifiant ($id) ne pourra être géré ($type | $champ)", 'crayons');\r
                return 'crayon_id_ingerable';\r
        }\r
-       \r
+\r
        return 'crayon ' . $type . '-' . $champ . '-' . $id . $plus;\r
 }\r
 \r
index fa8d014..54d2c8b 100644 (file)
        <div class="choix">
                <input type="checkbox" name="barretypo" class="checkbox"  value='on' id='barretypo'[ (#ENV{barretypo}|oui)checked="checked"] />
                <label for='barretypo'><:crayons:label_activer_barre_typo:></label>
-               [(#PLUGIN{porte_plume,version}|version_compare{'1.5','>='}|oui)[<p class="attention">(#EVAL{PORTE_PLUME_PUBLIC}|non|ou{#CONFIG{barre_outils_public}|=={non}|oui})<:crayons:activation_barre_impossible:></p>]]
+               [(#PLUGIN{porte_plume,version}|version_compare{'1.5','>='}|oui)
+                       [<p class="attention">
+                               (#VAL{PORTE_PLUME_PUBLIC}|defined|et{#VAL{PORTE_PLUME_PUBLIC}|constant}
+                                       |ou{#CONFIG{barre_outils_public}|=={non}})
+                                       <:crayons:activation_barre_impossible:>
+                       </p>]
+               ]
        </div>
 </li>
 
index 2bcdf51..5eba693 100644 (file)
@@ -1,4 +1,10 @@
 <?php\r
+/**\r
+ * Crayons \r
+ * plugin for spip \r
+ * (c) Fil, toggg 2006-2013\r
+ * licence GPL\r
+ */\r
 \r
 if (!defined("_ECRIRE_INC_VERSION")) return;\r
 \r
index d9da53e..5311c5e 100644 (file)
@@ -1,14 +1,10 @@
 <?php
-
-/***************************************************************************\
- *  SPIP, Systeme de publication pour l'internet                           *
- *                                                                         *
- *  Copyright (c) 2001-2010                                                *
- *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
- *                                                                         *
- *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
- *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
-\***************************************************************************/
+/**
+ * Crayons 
+ * plugin for spip 
+ * (c) Fil, toggg 2006-2013
+ * licence GPL
+ */
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
@@ -16,12 +12,13 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 
 /**
  * Transform a variable into its javascript equivalent (recursive)
+ * 
  * @access private
  * @param mixed the variable
- * @return string js script | boolean false if error
+ * @return string|boolean
+ *     - string : js script
+ *     - false if error
  */
-
-// http://doc.spip.org/@var2js
 function crayons_var2js($var) {
        $asso = false;
        switch (true) {
@@ -91,9 +88,6 @@ function crayons_json_export($var) {
        else
                return $var;
 */
-
 }
 
-
-
 ?>
index 6bf5b4b..ed40b6e 100644 (file)
@@ -1,4 +1,10 @@
 <?php\r
+/**\r
+ * Crayons \r
+ * plugin for spip \r
+ * (c) Fil, toggg 2006-2013\r
+ * licence GPL\r
+ */\r
 \r
 if (!defined("_ECRIRE_INC_VERSION")) return;\r
 \r
@@ -12,14 +18,14 @@ if ($GLOBALS['spip_version_code'] < '1.93' AND $f = charger_fonction('compat_cra
 // Par defaut : oui (pour les admins complets, si autoriser_defaut_dist()) ;\r
 // mettre a false en cas de mutualisation par prefixe de table,\r
 // sinon on ne peut pas garantir que les sites sont hermetiques\r
-define('_CRAYONS_TABLES_EXTERNES', true);\r
+if(!defined('_CRAYONS_TABLES_EXTERNES'))\r
+       define('_CRAYONS_TABLES_EXTERNES', true);\r
 \r
 // Autorisations non prevues par le core\r
 include_spip('inc/autoriser');\r
 \r
 include_spip('inc/crayons-json');\r
 \r
-\r
 if (!function_exists('autoriser_meta_modifier_dist')) {\r
 /**\r
  * Autorisation d'éditer les configurations dans spip_meta\r
@@ -62,20 +68,20 @@ if (!function_exists('autoriser_message_modifier_dist')) {
 //compat 192 documents\r
 if ($GLOBALS['spip_version_code'] < '1.93'){\r
        if (!function_exists('get_spip_doc')){\r
-                       function get_spip_doc($fichier) {\r
-                                       // fichier distant\r
-                                       if (preg_match(',^\w+://,', $fichier))\r
-                                                       return $fichier;\r
-\r
-                                       // gestion d'erreurs, fichier=''\r
-                                       if (!strlen($fichier))\r
-                                                       return false;\r
-\r
-                                       // fichier normal\r
-                                       return (strpos($fichier, _DIR_IMG) === false)\r
-                                       ? _DIR_IMG . $fichier\r
-                                       : $fichier;\r
-                  }\r
+               function get_spip_doc($fichier) {\r
+                       // fichier distant\r
+                       if (preg_match(',^\w+://,', $fichier))\r
+                                       return $fichier;\r
+\r
+                       // gestion d'erreurs, fichier=''\r
+                       if (!strlen($fichier))\r
+                                       return false;\r
+\r
+                       // fichier normal\r
+                       return (strpos($fichier, _DIR_IMG) === false)\r
+                       ? _DIR_IMG . $fichier\r
+                       : $fichier;\r
+               }\r
        }\r
 }\r
 \r
@@ -140,7 +146,6 @@ function valeur_champ_vignette($table, $id, $champ) {
 // en reference : le nom du widget, pour aller chercher d'autres donnees\r
 // (ex: supprimer)\r
 function logo_revision($id, $file, $type, $ref) {\r
-\r
        $chercher_logo = charger_fonction('chercher_logo', 'inc');\r
        $_id_objet = id_table_objet($type);\r
 \r
@@ -168,7 +173,6 @@ function logo_revision($id, $file, $type, $ref) {
                        @unlink($on[0]);\r
        }\r
 \r
-\r
        // Reduire le logo ?\r
        if (is_array($cfg = @unserialize($GLOBALS['meta']['crayons']))\r
        AND $max = intval($cfg['reduire_logo'])) {\r
@@ -194,7 +198,7 @@ function logo_revision($id, $file, $type, $ref) {
 // cette fonction de revision recoit le fichier upload a passer en document\r
 function document_fichier_revision($id, $data, $type, $ref) {\r
 \r
-       $s = spip_query("SELECT * FROM spip_documents WHERE id_document="._q($id));\r
+       $s = spip_query("SELECT * FROM spip_documents WHERE id_document=".intval($id));\r
        if (!$t = sql_fetch($s))\r
                return false;\r
 \r
@@ -216,64 +220,80 @@ function document_fichier_revision($id, $data, $type, $ref) {
        // Chargement d'un nouveau doc ?\r
        if ($data['document']) {\r
 \r
-               $ajouter_documents = charger_fonction('ajouter_documents', 'inc');\r
                $arg = $data['document'];\r
-               check_upload_error($arg['error']);\r
-               $x = $ajouter_documents($arg['tmp_name'], $arg['name'],\r
-                       'article', 0, 'document', null, $actifs);\r
-\r
-               // $actifs contient l'id_document nouvellement cree\r
-               // on recopie les donnees interessantes dans l'ancien\r
-               $extension=", extension ";\r
-               //compat 192\r
-               if ($GLOBALS['spip_version_code'] < '1.93')\r
-                       $extension="";\r
-\r
-               if ($id_new = array_pop($actifs)\r
-               AND $s = spip_query("SELECT fichier, taille, largeur, hauteur $extension, distant FROM spip_documents\r
-                       WHERE id_document="._q($id_new))\r
-               AND $new = sql_fetch($s)) {\r
-                       define('FILE_UPLOAD', true); // message pour crayons_json_export :(\r
-\r
-                       // Une vignette doit rester une image\r
-                       if ($t['mode'] == 'vignette'\r
-                       AND !in_array($new['extension'], array('jpg', 'gif', 'png')))\r
+               \r
+               /** \r
+                * Méthode >= SPIP 3.0 \r
+                * ou SPIP 2.x + Mediathèque\r
+                */ \r
+               if($ajouter_documents = charger_fonction('ajouter_documents','action',true)){ \r
+                       $actifs = $ajouter_documents($id,array($arg),'', 0,$t['mode']);\r
+                       $x = reset($actifs);\r
+                       if(is_numeric($x))\r
+                               return true;\r
+                       else\r
                                return false;\r
-\r
-                       // Maintenant on est bon, on recopie les nouvelles donnees\r
-                       // dans l'ancienne ligne spip_documents\r
-                       include_spip('inc/modifier');\r
-                       modifier_contenu('document', $id,\r
-                               # 'champs' inutile a partir de SPIP 11348\r
-                               array('champs' => array_keys($new)),\r
-                               $new);\r
-\r
-                       // supprimer l'ancien document (sauf s'il etait distant)\r
-                       if ($t['distant'] != 'oui'\r
-                       AND file_exists(get_spip_doc($t['fichier'])))\r
-                               supprimer_fichier(get_spip_doc($t['fichier']));\r
-\r
-                       // Effacer la ligne temporaire de spip_document\r
-                       spip_query("DELETE FROM spip_documents WHERE id_document="._q($id_new));\r
-\r
-                       // oublier id_document temporaire (ca marche chez moi, sinon bof)\r
-                       spip_query("ALTER TABLE spip_documents AUTO_INCREMENT="._q($id_new));\r
-\r
-                       return true;\r
+               }\r
+               /**\r
+                * Méthode SPIP < 3.0\r
+                */\r
+               else if($ajouter_documents = charger_fonction('ajouter_documents','inc',true)){ \r
+                       check_upload_error($arg['error']);\r
+                       $x = $ajouter_documents($arg['tmp_name'], $arg['name'],\r
+                                       'article', 0, 'document', null, $actifs);\r
+                       // $actifs contient l'id_document nouvellement cree\r
+                       // on recopie les donnees interessantes dans l'ancien\r
+                       $extension=", extension ";\r
+                       //compat 192\r
+                       if ($GLOBALS['spip_version_code'] < '1.93')\r
+                               $extension="";\r
+\r
+                       if ($id_new = array_pop($actifs)\r
+                       AND $s = spip_query("SELECT fichier, taille, largeur, hauteur $extension, distant FROM spip_documents\r
+                               WHERE id_document="._q($id_new))\r
+                       AND $new = sql_fetch($s)) {\r
+                               define('FILE_UPLOAD', true); // message pour crayons_json_export :(\r
+\r
+                               // Une vignette doit rester une image\r
+                               if ($t['mode'] == 'vignette'\r
+                               AND !in_array($new['extension'], array('jpg', 'gif', 'png')))\r
+                                       return false;\r
+\r
+                               // Maintenant on est bon, on recopie les nouvelles donnees\r
+                               // dans l'ancienne ligne spip_documents\r
+                               include_spip('inc/modifier');\r
+                               modifier_contenu('document', $id,\r
+                                       # 'champs' inutile a partir de SPIP 11348\r
+                                       array('champs' => array_keys($new)),\r
+                                       $new);\r
+\r
+                               // supprimer l'ancien document (sauf s'il etait distant)\r
+                               if ($t['distant'] != 'oui'\r
+                               AND file_exists(get_spip_doc($t['fichier'])))\r
+                                       supprimer_fichier(get_spip_doc($t['fichier']));\r
+\r
+                               // Effacer la ligne temporaire de spip_document\r
+                               spip_query("DELETE FROM spip_documents WHERE id_document="._q($id_new));\r
+\r
+                               // oublier id_document temporaire (ca marche chez moi, sinon bof)\r
+                               spip_query("ALTER TABLE spip_documents AUTO_INCREMENT="._q($id_new));\r
+\r
+                               return true;\r
+                       }\r
                }\r
        }\r
-\r
 }\r
 \r
 // cette fonction de revision soit supprime la vignette d'un document,\r
 // soit recoit le fichier upload a passer ou remplacer la vignette du document\r
 function vignette_revision($id, $data, $type, $ref) {\r
-       $s = sql_fetsel("*","spip_documents","id_document=".intval($id));\r
+       $s = sql_fetsel("id_document,id_vignette","spip_documents","id_document=".intval($id));\r
        if (!is_array($s))\r
                return false;\r
 \r
        include_spip('inc/modifier');\r
        include_spip('inc/documents');\r
+       include_spip('action/editer_document');//pour revision_document\r
        // Chargement d'un nouveau doc ?\r
        if ($data['vignette']) {\r
                define('FILE_UPLOAD', true);\r
@@ -286,7 +306,7 @@ function vignette_revision($id, $data, $type, $ref) {
                                supprimer_fichier($f); \r
                        }\r
                        sql_delete('spip_documents', 'id_document='.intval($s['id_vignette']));\r
-                       sql_delete('spip_documents_liens',  'id_document='.intval($s['id_vignette']));\r
+                       sql_delete('spip_documents_liens', 'id_document='.intval($s['id_vignette']));\r
 \r
                        pipeline('post_edition',\r
                                array(\r
@@ -298,15 +318,34 @@ function vignette_revision($id, $data, $type, $ref) {
                                        'data' => null\r
                                )\r
                        );\r
-                       \r
-                       // On remet l'id_vignette a 0\r
-                       revision_document($s['id_document'], array('id_vignette'=>0));\r
+                       $id_vignette = 0;\r
                }\r
-               // Ajout du document comme vignette\r
-               $ajouter_documents = charger_fonction('ajouter_documents', 'inc');\r
+\r
                $arg = $data['vignette'];\r
                check_upload_error($arg['error']);\r
-               $x = $ajouter_documents($arg['tmp_name'], $arg['name'],'','', 'vignette', $id, $actifs);\r
+               // Ajout du document comme vignette\r
+\r
+               /**\r
+                * Méthode >= SPIP 3.0 \r
+                * ou SPIP 2.x + Mediatheque\r
+                */\r
+               if($ajouter_documents = charger_fonction('ajouter_documents','action',true)){\r
+                       $x = $ajouter_documents(null,array($arg),'', 0, 'vignette');\r
+                       $vignette = reset($x);\r
+                       if(intval($vignette))\r
+                               document_modifier($id, array('id_vignette'=>$vignette));\r
+                       else if($id_vignette)\r
+                               document_modifier($id, array('id_vignette'=>$id_vignette));\r
+               }\r
+               /**\r
+                * Méthode < SPIP 3.0\r
+                */\r
+               else if($ajouter_documents = charger_fonction('ajouter_documents','inc',true)){\r
+                       // On remet l'id_vignette a 0 si on l'a supprimé\r
+                       if($id_vignette) revision_document($s['id_document'], array('id_vignette'=>0));\r
+                       $x = $ajouter_documents($arg['tmp_name'], $arg['name'],'','', 'vignette', $id, $actifs);\r
+               }\r
+               \r
        }else\r
                // Suppression de la vignette ?\r
                if ($wid = array_pop($ref)\r
@@ -320,7 +359,7 @@ function vignette_revision($id, $data, $type, $ref) {
                                }\r
                                sql_delete('spip_documents', 'id_document='.intval($s['id_vignette']));\r
                                sql_delete('spip_documents_liens',  'id_document='.intval($s['id_vignette']));\r
-                               \r
+\r
                                pipeline('post_edition',\r
                                        array(\r
                                                'args' => array(\r
@@ -331,7 +370,7 @@ function vignette_revision($id, $data, $type, $ref) {
                                                'data' => null\r
                                        )\r
                                );\r
-                               \r
+\r
                                // On remet l'id_vignette a 0\r
                                revision_document($s['id_document'], array('id_vignette'=>0));\r
                        }\r
@@ -339,11 +378,14 @@ function vignette_revision($id, $data, $type, $ref) {
        return true;\r
 }\r
 \r
+\r
 function colonne_table($type, $col) {\r
        list($distant,$table) = distant_table($type);\r
        $nom_table = '';\r
-       if (!(($tabref = &crayons_get_table($table, $nom_table)) && ($brut = $tabref['field'][$col]))) {\r
-               return false;\r
+       if (!(($tabref = &crayons_get_table($table, $nom_table))\r
+               && isset($tabref['field'][$col])\r
+               && ($brut = $tabref['field'][$col]))) {\r
+                       return false;\r
        }\r
        $ana = explode(' ', $brut);\r
        $sta = 0;\r
@@ -400,20 +442,50 @@ function colonne_table($type, $col) {
        }\r
        return $ret;\r
 }\r
-//     var_dump(colonne_table('forum', 'id_syndic')); die();\r
 \r
-function table_where($type, $id, $where_en_tableau = false)\r
-{\r
-       list($distant,$table) = distant_table($type);\r
+\r
+/**\r
+ * Obtient le nom de la table ainsi que sa ou ses clés primaires\r
+ *\r
+ * @param string $type\r
+ *     Table sur laquelle s'applique le crayon.\r
+ *     Ce type peut contenir le nom d'un connecteur distant tel que `{connect}__{table}`\r
+ *\r
+ * @return array|bool\r
+ *     - false si on ne trouve pas de table ou de table ayant de clé primaire\r
+ *     - liste :\r
+ *     - - nom de la table sql\r
+ *     - - tableau des noms de clés primaires\r
+**/\r
+function crayons_get_table_name_and_primary($type) {\r
+       static $types = array();\r
+       if (isset($types[$type])) {\r
+               return $types[$type];\r
+       }\r
+\r
        $nom_table = '';\r
-       if (!(($tabref = &crayons_get_table($type, $nom_table))\r
-                       && ($tabid = explode(',', $tabref['key']['PRIMARY KEY'])))) {\r
-               spip_log('crayons: table ' . $table . ' inconnue');\r
+       if ($tabref = &crayons_get_table($type, $nom_table)\r
+         and ($tabid = explode(',', $tabref['key']['PRIMARY KEY'])))\r
+       {\r
+               return $types[$type] = array($nom_table, $tabid);\r
+       }\r
+       spip_log('crayons: table ' . $type . ' inconnue');\r
+       return $types[$type] = false;\r
+}\r
+\r
+\r
+function table_where($type, $id, $where_en_tableau = false) {\r
+\r
+\r
+       if (!$infos = crayons_get_table_name_and_primary($type)) {\r
                return array(false, false);\r
        }\r
-       if (is_scalar($id)) {\r
+\r
+       list($nom_table, $tabid) = $infos;\r
+\r
+\r
+       if (is_scalar($id))\r
                $id = explode('-', $id);\r
-       }\r
        // sortie tableau pour sql_updateq\r
        if ($where_en_tableau) {\r
                $where = array();\r
@@ -422,6 +494,7 @@ function table_where($type, $id, $where_en_tableau = false)
                }\r
        // sinon sortie texte pour sql_query\r
        } else {\r
+\r
                $where = $and = '';\r
                foreach ($id as $idcol => $idval) {\r
                        $where .= $and . '`' . (is_int($idcol) ? trim($tabid[$idcol]) : $idcol) . '`=' . _q($idval);\r
@@ -433,11 +506,12 @@ function table_where($type, $id, $where_en_tableau = false)
 //     var_dump(colonne_table('forum', 'id_syndic')); die();\r
 \r
 function valeur_colonne_table_dist($type, $col, $id) {\r
-       list($distant,$table) = distant_table($type);\r
-       list($nom_table, $where) = table_where($type, $id);\r
 \r
-       if (!$nom_table)\r
+       // Table introuvable ou sans clé primaire\r
+       if (!$infos = crayons_get_table_name_and_primary($type)) {\r
                return false;\r
+       }\r
+       $table = reset($infos);\r
 \r
        $r = array();\r
 \r
@@ -450,12 +524,17 @@ function valeur_colonne_table_dist($type, $col, $id) {
        }\r
 \r
        // valeurs SQL\r
-       if (count($col)\r
-       AND $s = spip_query(\r
-                       'SELECT `' . implode($col, '`, `') .\r
-                       '` FROM ' . $nom_table . ' WHERE ' . $where, $distant)\r
-       AND $t = sql_fetch($s))\r
-               $r = array_merge($r, $t);\r
+       if (count($col)) {\r
+               list($distant, $table)   = distant_table($type);\r
+               list($nom_table, $where) = table_where($type, $id);\r
+\r
+               if ($s = spip_query(\r
+                               'SELECT `' . implode($col, '`, `') .\r
+                               '` FROM ' . $nom_table . ' WHERE ' . $where, $distant)\r
+                       AND $t = sql_fetch($s)){\r
+                               $r = array_merge($r, $t);\r
+               }\r
+       }\r
 \r
        return $r;\r
 }\r
@@ -521,13 +600,19 @@ function return_log($var) {
        die(crayons_json_export(array('$erreur'=> var_export($var,true))));\r
 }\r
 \r
-function _U($texte, $params=array())\r
-{\r
-    include_spip('inc/charsets');\r
-    return unicode2charset(html2unicode(_T($texte, $params)));\r
+function _U($texte, $params=array()) {\r
+       include_spip('inc/charsets');\r
+       return unicode2charset(html2unicode(_T($texte, $params)));\r
 }\r
 \r
-// wdgcfg = widget config :-)\r
+/**\r
+ * Obtenir la configuration des crayons\r
+ *\r
+ * @note wdgcfg = widget config :-)\r
+ * \r
+ * @return array\r
+ *     Couples : attribut => valeur\r
+**/\r
 function wdgcfg() {\r
        $php = function_exists('crayons_config') ? crayons_config() : array();\r
        include_spip('inc/meta');\r
@@ -572,8 +657,7 @@ function &crayons_get_table($type, &$nom_table) {
                        include_spip('base/serial');\r
                        include_spip('base/auxiliaires');\r
                        include_spip('public/parametrer');\r
-                       foreach(array('tables_principales', 'tables_auxiliaires') as $categ)\r
-                       {\r
+                       foreach(array('tables_principales', 'tables_auxiliaires') as $categ) {\r
                                foreach ($try as $nom) {\r
                                        if (isset($GLOBALS[$categ][$nom])) {\r
                                                $noms[$table] = $nom;\r
@@ -583,7 +667,6 @@ function &crayons_get_table($type, &$nom_table) {
                                }\r
                        }\r
                }\r
-\r
        }\r
 \r
        $nom_table = $noms[$table];\r
index c216829..00300b5 100644 (file)
@@ -35,10 +35,10 @@ $.prototype.cfgCrayons.prototype.iconclick = function(c, type) {
        // comme article-texte-10 pour le texte de l'article 10
        // ou meta-valeur-meta
        var cray =
-                          c.match(/\b\w+-(\w+)-\d(?:-\w+)+\b/)   // numeros_lien-type-2-3-article (table-champ-cles)
-                       || c.match(/\b\w+-(\w+)-\d+\b/)           // article-texte-10 (inclu dans le precedent, mais bon)
-               || c.match(/\b\meta-valeur-(\w+)\b/)      // meta-valeur-xx
-               ;
+                               c.match(/\b\w+-(\w+)-\d(?:-\w+)+\b/)   // numeros_lien-type-2-3-article (table-champ-cles)
+                               || c.match(/\b\w+-(\w+)-\d+\b/)           // article-texte-10 (inclu dans le precedent, mais bon)
+                               || c.match(/\b\meta-valeur-(\w+)\b/)      // meta-valeur-xx
+                               ;
 
        var boite = !cray ? '' : this.mkimg(type, ' (' + cray[1] + ')');
 
@@ -216,6 +216,7 @@ $.fn.hidecrayon = function() {
 
 // active un crayon qui vient d'etre charge
 $.fn.activatecrayon = function(percent) {
+       var focus = false;
        this
        .crayon()
        .click(function(e){
@@ -368,19 +369,24 @@ $.fn.activatecrayon = function(percent) {
                                e.cancelBubble = true;
                        })
                        // focus par defaut (crayons sans textarea/text, mais uniquement menus ou fichiers)
-                       .find('input:visible:first').focus().end()
+                       .find('input:visible:not(:disabled):not([readonly]):first').focus().end()
                        .find("textarea.crayon-active,input.crayon-active[type=text]")
                                .each(function(n){
-                                       // focus pour commencer a taper son texte directement dans le champ
+                                       // focus pour commencer a taper son texte directement dans le champ 
+                                       // sur le premier textarea non readonly ni disabled
                                        // on essaie de positionner la selection (la saisie) au niveau du clic
                                        // ne pas le faire sur un input de [type=file]
                                        if (n==0) {
-                                               this.focus();
+                                               if(!$(this).is(':disabled, [readonly]')){
+                                                       this.focus();
+                                                       focus = true;
+                                               }
                                                // premiere approximation, en fonction de la hauteur du clic
                                                var position = parseInt(percent * this.textLength);
                                                this.selectionStart=position;
                                                this.selectionEnd=position;
-                                       }
+                                       }else if(!focus && !$(this).is(':disabled, [readonly]'))
+                                               this.focus();
                                })
                        .end()
                        .keydown(function(e){
@@ -537,6 +543,14 @@ $.fn.crayonsstart = function() {
 
        // demarrer les crayons
        if ((typeof crayons_init_dynamique == 'undefined') || (crayons_init_dynamique==false)) {
+
+               // compat jQuery 1.9
+               if (typeof $.fn.live == 'undefined') {
+                       $.fn.live = function( types, data, fn ) {
+                               $( this.context ).on( types, this.selector, data, fn );
+                               return this;
+                       };
+               }
                $('.crayon:not(.crayon-init)')
                .live('mouseover touchstart', function(e) {
                        $(this)
index c3e0647..47457dc 100644 (file)
@@ -1,38 +1,76 @@
 <traduction module="crayons" gestionnaire="salvatore" url="http://trad.spip.net" source="svn://zone.spip.org/spip-zone/_plugins_/crayons/lang/" reference="fr">
-       <langue code="ast" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=ast">
+       <langue code="ar" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=ar" total="51" traduits="14" relire="0" modifs="0" nouveaux="37" pourcent="27.45">
+       </langue>
+       <langue code="ast" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=ast" total="51" traduits="39" relire="0" modifs="3" nouveaux="9" pourcent="76.47">
                <traducteur nom="Xuacu" lien="http://trad.spip.net/auteur/xuacu" />
        </langue>
-       <langue code="ca" />
-       <langue code="de" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=de">
+       <langue code="br" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=br" total="51" traduits="14" relire="0" modifs="0" nouveaux="37" pourcent="27.45">
+       </langue>
+       <langue code="ca" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=ca" total="51" traduits="38" relire="0" modifs="2" nouveaux="11" pourcent="74.51">
+       </langue>
+       <langue code="de" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=de" total="51" traduits="46" relire="0" modifs="3" nouveaux="2" pourcent="90.20">
                <traducteur nom="klaus++" lien="http://trad.spip.net/auteur/klaus" />
        </langue>
-       <langue code="en" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=en">
+       <langue code="en" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=en" total="51" traduits="51" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Hanjo" lien="http://trad.spip.net/auteur/hanjo" />
                <traducteur nom="kent1" lien="http://trad.spip.net/auteur/kent1" />
                <traducteur nom="Paolo" lien="http://trad.spip.net/auteur/paolo" />
        </langue>
-       <langue code="es" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=es">
+       <langue code="eo" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=eo" total="51" traduits="14" relire="0" modifs="0" nouveaux="37" pourcent="27.45">
+       </langue>
+       <langue code="es" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=es" total="51" traduits="47" relire="0" modifs="3" nouveaux="1" pourcent="92.16">
                <traducteur nom="dani" lien="http://trad.spip.net/auteur/dani" />
+               <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel-s-bujaldon" />
                <traducteur nom="severo" lien="http://trad.spip.net/auteur/severo" />
        </langue>
-       <langue code="fa" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=fa">
+       <langue code="eu" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=eu" total="51" traduits="12" relire="0" modifs="0" nouveaux="39" pourcent="23.53">
+       </langue>
+       <langue code="fa" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=fa" total="51" traduits="43" relire="0" modifs="3" nouveaux="5" pourcent="84.31">
                <traducteur nom="Davood Hossein" lien="http://trad.spip.net/auteur/davood-hossein" />
        </langue>
-       <langue code="fr" />
-       <langue code="fr_tu" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=fr_tu">
+       <langue code="fr" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=fr" total="51" traduits="51" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+       </langue>
+       <langue code="fr_tu" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=fr_tu" total="51" traduits="47" relire="0" modifs="3" nouveaux="1" pourcent="92.16">
                <traducteur nom="beatnick" lien="http://trad.spip.net/auteur/beatnick" />
+               <traducteur nom="Cerf" lien="http://trad.spip.net/auteur/cerf" />
+       </langue>
+       <langue code="gl" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=gl" total="51" traduits="15" relire="0" modifs="0" nouveaux="36" pourcent="29.41">
        </langue>
-       <langue code="it" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=it">
+       <langue code="it" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=it" total="51" traduits="39" relire="0" modifs="3" nouveaux="9" pourcent="76.47">
                <traducteur nom="Fil" lien="http://trad.spip.net/auteur/fil" />
        </langue>
-       <langue code="nl" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=nl">
+       <langue code="it_fem" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=it_fem" total="51" traduits="14" relire="0" modifs="0" nouveaux="37" pourcent="27.45">
+       </langue>
+       <langue code="km" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=km" total="51" traduits="5" relire="0" modifs="0" nouveaux="46" pourcent="9.80">
+       </langue>
+       <langue code="lb" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=lb" total="51" traduits="14" relire="0" modifs="0" nouveaux="37" pourcent="27.45">
+       </langue>
+       <langue code="nl" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=nl" total="51" traduits="51" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Hanjo" lien="http://trad.spip.net/auteur/hanjo" />
                <traducteur nom="mpossoz" lien="http://trad.spip.net/auteur/mpossoz" />
                <traducteur nom="Suske" lien="http://trad.spip.net/auteur/suske" />
        </langue>
-       <langue code="ru" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=ru">
+       <langue code="oc_lnc" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=oc_lnc" total="51" traduits="14" relire="0" modifs="0" nouveaux="37" pourcent="27.45">
+       </langue>
+       <langue code="pt_br" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=pt_br" total="51" traduits="14" relire="0" modifs="2" nouveaux="35" pourcent="27.45">
+               <traducteur nom="Ricardo Porto" lien="http://trad.spip.net/auteur/ricardo-porto" />
+       </langue>
+       <langue code="ro" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=ro" total="51" traduits="14" relire="0" modifs="0" nouveaux="37" pourcent="27.45">
+       </langue>
+       <langue code="ru" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=ru" total="51" traduits="46" relire="0" modifs="3" nouveaux="2" pourcent="90.20">
                <traducteur nom="Serge Markitanenko" lien="http://trad.spip.net/auteur/serge-markitanenko" />
        </langue>
-       <langue code="sk" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=sk">
+       <langue code="sk" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=sk" total="51" traduits="51" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="jaro" lien="http://trad.spip.net/auteur/jaro" />
        </langue>
-       <langue code="zh" />
+       <langue code="sv" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=sv" total="51" traduits="14" relire="0" modifs="0" nouveaux="37" pourcent="27.45">
+       </langue>
+       <langue code="tr" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=tr" total="51" traduits="14" relire="0" modifs="0" nouveaux="37" pourcent="27.45">
+       </langue>
+       <langue code="tw" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=tw" total="51" traduits="14" relire="0" modifs="0" nouveaux="37" pourcent="27.45">
+       </langue>
+       <langue code="zh" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=zh" total="51" traduits="18" relire="0" modifs="14" nouveaux="19" pourcent="35.29">
+       </langue>
+       <langue code="zh_tw" url="http://trad.spip.net/tradlang_module/crayons?lang_cible=zh_tw" total="51" traduits="14" relire="0" modifs="0" nouveaux="37" pourcent="27.45">
+       </langue>
 </traduction>
index 59b37dc..59d569c 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 // This is a SPIP language file  --  Ceci est un fichier langue de SPIP
-// extrait automatiquement de http://www.spip.net/trad-lang/
+// extrait automatiquement de http://trad.spip.net/tradlang_module/crayons?lang_cible=ar
 // ** ne pas modifier le fichier **
 
 if (!defined('_ECRIRE_INC_VERSION')) return;
@@ -8,12 +8,8 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // A
-       'activation_barre_impossible' => 'Un autre plugin interdit l\'usage du porte-plume dans l\'espace public.', # NEW
        'annuler' => 'إلغاء',
 
-       // B
-       'bouton_supprimer' => 'Supprimer', # NEW
-
        // D
        'deja_modifie' => 'عدّل سابقاً',
        'donnees_mal_formatees' => 'تنسيق بيانات غير سليم',
@@ -22,39 +18,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'editer' => 'تحرير',
        'editer_@type@_@id@' => 'تحرير @type@ @id@ بالكامل',
        'editer_tout' => 'تحرير الكل',
-       'effets' => 'Effets', # NEW
-       'explication_exec_autorise' => 'Pages autorisées à la modification\r
-               (?exec=...) : (, pour séparer les exec - * pour toutes).', # NEW
-       'explication_introduction_article' => 'L\'introduction d\'un article affiche le descriptif de l\'article, sinon affiche ses 600 premiers caractères (chapeau puis texte).', # NEW
-       'explication_reduire_logo' => 'Réduire le logo s\'il dépasse\r
-               la taille maximale indiquée en pixels. Exemple : 100. (0 = jamais)', # NEW
-
-       // L
-       'label_activer_barre_typo' => 'Activer la barre typographique dans les crayons ?', # NEW
-       'label_activer_crayons_prive' => 'Activer crayons pour la partie privée.', # NEW
-       'label_barre_typo' => 'Barre typographique', # NEW
-       'label_clickhide' => 'Un clic en-dehors masque les crayons', # NEW
-       'label_effets' => 'Choix des effets', # NEW
-       'label_espaceprive' => 'Crayons dans le privé ?', # NEW
-       'label_exec_autorise' => 'Pages autorisées', # NEW
-       'label_filet' => 'Filet', # NEW
-       'label_message' => 'Obtenir un message', # NEW
-       'label_msg_abandon' => 'Sur abandon', # NEW
-       'label_msg_no_change' => 'Si pas de changement', # NEW
-       'label_reduire_logo' => 'Réduire les logos', # NEW
-       'label_yellow_fade' => 'Fade', # NEW
-       'legend_controleur_hyperlien' => 'Hyperlien', # NEW
-       'legend_controleur_logo' => 'Choisir un logo :', # NEW
-       'legend_controleur_logo_remplacer' => 'Remplacer ce logo', # NEW
-       'legend_controleur_qui' => 'Qui ?', # NEW
-       'legend_controleur_vignette' => 'Choisir une vignette :', # NEW
-       'legend_controleur_vignette_remplacer' => 'Remplacer cette vignette', # NEW
-       'legend_editer_prive' => 'Éditer l\'espace privé (expérimental)', # NEW
-       'legend_introduction_article' => 'Texte introductif de l\'article', # NEW
 
        // M
-       'message_image_obligatoire' => 'Il faut choisir une image', # NEW
-       'messages' => 'Messages', # NEW
        'modifie_par_ailleurs' => 'عدّل في مكان آخر',
 
        // N
@@ -69,13 +34,6 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'sauvegarder' => 'حفظ التعديلات؟',
        'svp_copier_coller' => 'عذراً، قم بنسخ التعديلات ولصقها وإعادة المحاولة',
 
-       // T
-       'titre_config_crayons' => 'Configurer les crayons', # NEW
-       'titre_crayons' => 'Crayons', # NEW
-
-       // U
-       'update_impossible' => 'La mise à jour a échoué.', # NEW
-
        // V
        'veuillez_patienter' => 'الرجاء الانتظار...'
 );
index ce512a9..8c0a6e6 100644 (file)
@@ -8,7 +8,7 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // A
-       'activation_barre_impossible' => 'Hai otru complementu que torga l\'usu del portaplumes nel espaciu públicu.',
+       'activation_barre_impossible' => 'Hai otru complementu que torga lusu del portaplumes nel espaciu públicu.',
        'annuler' => 'Anular',
 
        // B
@@ -25,13 +25,10 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'effets' => 'Efeutos',
        'explication_exec_autorise' => 'Páxines que se permite camudar
   (?exec=...) : (, pa xebrar los exec).', # MODIF
-       'explication_introduction_article' => 'La introducción d\'un artículu amuesa la descripción del artículu, sinón amuesa los sos primeros 600 caráuteres (la entrada siguía pol testu).',
+       'explication_introduction_article' => 'La introducción d’un artículu amuesa la descripción del artículu, sinón amuesa los sos primeros 600 caráuteres (la entrada siguía pol testu).', # MODIF
        'explication_reduire_logo' => 'Amenorgar el logo si pasa del
   tamañu máximu indicáu en pixels. Exemplu: 100. (0 = enxamás)', # MODIF
 
-       // I
-       'info_experimental' => 'Expérimental', # NEW
-
        // L
        'label_activer_barre_typo' => '¿Activar la barra tipográfica nos llápices?',
        'label_activer_crayons_prive' => 'Activar los llápices pa la parte privada.',
@@ -40,27 +37,21 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'label_effets' => 'Esbilla de los efeutos',
        'label_espaceprive' => '¿Llápices nel espaciu priváu?',
        'label_exec_autorise' => 'Páxines autorizaes',
-       'label_filet' => 'Filet', # NEW
        'label_message' => 'Escoyer un mensaxe',
-       'label_msg_abandon' => 'Sur abandon', # NEW
        'label_msg_no_change' => 'Si nun hai cambeos',
        'label_reduire_logo' => 'Amenorgar los logos',
-       'label_upload_document' => 'Autoriser l\'ajout de documents par glisser/déposer sur le crayon article.texte', # NEW
        'label_yellow_fade' => 'Dilir',
        'legend_controleur_hyperlien' => 'Hiperenllaz',
        'legend_controleur_logo' => 'Escoyer un logo:',
        'legend_controleur_logo_remplacer' => 'Trocar esti logo',
        'legend_controleur_qui' => '¿Quién?',
-       'legend_controleur_vignette' => 'Choisir une vignette :', # NEW
-       'legend_controleur_vignette_remplacer' => 'Remplacer cette vignette', # NEW
-       'legend_documents' => 'Upload de documents', # NEW
-       'legend_editer_prive' => 'Editar l\'espaciu priváu (esperimental)',
+       'legend_editer_prive' => 'Editar l’espaciu priváu (esperimental)',
        'legend_introduction_article' => 'Testu introductoriu del artículu',
 
        // M
-       'message_image_obligatoire' => 'Hai qu\'escoyer una imaxe',
+       'message_image_obligatoire' => 'Hai quescoyer una imaxe',
        'messages' => 'Mensaxes',
-       'modifie_par_ailleurs' => 'Modificao n\'otru llau',
+       'modifie_par_ailleurs' => 'Modificao notru llau',
 
        // N
        'non_autorise' => 'Non autorizao',
@@ -79,7 +70,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'titre_crayons' => 'Llápices',
 
        // U
-       'update_impossible' => 'Falló l\'anovación.',
+       'update_impossible' => 'Falló lanovación.',
 
        // V
        'veuillez_patienter' => 'Un momentu...'
index 1d5b6b7..eb2e2b8 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 // This is a SPIP language file  --  Ceci est un fichier langue de SPIP
-// extrait automatiquement de http://www.spip.net/trad-lang/
+// extrait automatiquement de http://trad.spip.net/tradlang_module/crayons?lang_cible=br
 // ** ne pas modifier le fichier **
 
 if (!defined('_ECRIRE_INC_VERSION')) return;
@@ -8,53 +8,18 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // A
-       'activation_barre_impossible' => 'Un autre plugin interdit l\'usage du porte-plume dans l\'espace public.', # NEW
        'annuler' => 'Nullañ',
 
-       // B
-       'bouton_supprimer' => 'Supprimer', # NEW
-
        // D
-       'deja_modifie' => 'Bet kemmet c\'hoazh',
+       'deja_modifie' => 'Bet kemmet choazh',
        'donnees_mal_formatees' => 'Stumm fall gant an titouroù',
 
        // E
        'editer' => 'Embann',
        'editer_@type@_@id@' => 'Embann @type@ @id@ a-bezh',
        'editer_tout' => 'Embann pep tra',
-       'effets' => 'Effets', # NEW
-       'explication_exec_autorise' => 'Pages autorisées à la modification\r
-               (?exec=...) : (, pour séparer les exec - * pour toutes).', # NEW
-       'explication_introduction_article' => 'L\'introduction d\'un article affiche le descriptif de l\'article, sinon affiche ses 600 premiers caractères (chapeau puis texte).', # NEW
-       'explication_reduire_logo' => 'Réduire le logo s\'il dépasse\r
-               la taille maximale indiquée en pixels. Exemple : 100. (0 = jamais)', # NEW
-
-       // L
-       'label_activer_barre_typo' => 'Activer la barre typographique dans les crayons ?', # NEW
-       'label_activer_crayons_prive' => 'Activer crayons pour la partie privée.', # NEW
-       'label_barre_typo' => 'Barre typographique', # NEW
-       'label_clickhide' => 'Un clic en-dehors masque les crayons', # NEW
-       'label_effets' => 'Choix des effets', # NEW
-       'label_espaceprive' => 'Crayons dans le privé ?', # NEW
-       'label_exec_autorise' => 'Pages autorisées', # NEW
-       'label_filet' => 'Filet', # NEW
-       'label_message' => 'Obtenir un message', # NEW
-       'label_msg_abandon' => 'Sur abandon', # NEW
-       'label_msg_no_change' => 'Si pas de changement', # NEW
-       'label_reduire_logo' => 'Réduire les logos', # NEW
-       'label_yellow_fade' => 'Fade', # NEW
-       'legend_controleur_hyperlien' => 'Hyperlien', # NEW
-       'legend_controleur_logo' => 'Choisir un logo :', # NEW
-       'legend_controleur_logo_remplacer' => 'Remplacer ce logo', # NEW
-       'legend_controleur_qui' => 'Qui ?', # NEW
-       'legend_controleur_vignette' => 'Choisir une vignette :', # NEW
-       'legend_controleur_vignette_remplacer' => 'Remplacer cette vignette', # NEW
-       'legend_editer_prive' => 'Éditer l\'espace privé (expérimental)', # NEW
-       'legend_introduction_article' => 'Texte introductif de l\'article', # NEW
 
        // M
-       'message_image_obligatoire' => 'Il faut choisir une image', # NEW
-       'messages' => 'Messages', # NEW
        'modifie_par_ailleurs' => 'Kemmet e mod all',
 
        // N
@@ -66,16 +31,9 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'pas_de_valeur' => 'Talvoud ebet',
 
        // S
-       'sauvegarder' => 'Saveteiñ ar c\'hemmoù ?',
+       'sauvegarder' => 'Saveteiñ ar chemmoù ?',
        'svp_copier_coller' => 'Digarez, eilit/pegit ho kemmoù, ha klaskit en-dro',
 
-       // T
-       'titre_config_crayons' => 'Configurer les crayons', # NEW
-       'titre_crayons' => 'Crayons', # NEW
-
-       // U
-       'update_impossible' => 'La mise à jour a échoué.', # NEW
-
        // V
        'veuillez_patienter' => 'Gortozit...'
 );
index 85abbe3..da5048f 100644 (file)
@@ -8,7 +8,7 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // A
-       'activation_barre_impossible' => 'Un altre connector impedeix l\'ús del portaplomes a l\'espai públic. ',
+       'activation_barre_impossible' => 'Un altre connector impedeix l’ús del portaplomes a l’espai públic. ',
        'annuler' => 'Anul·lar',
 
        // B
@@ -25,36 +25,25 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'effets' => 'Efectes',
        'explication_exec_autorise' => 'Pàgines autoritzades a ser modificades
   (?exec=...) : (, per separar les exec).', # MODIF
-       'explication_introduction_article' => 'L\'introduction d\'un article affiche le descriptif de l\'article, sinon affiche ses 600 premiers caractères (chapeau puis texte).', # NEW
        'explication_reduire_logo' => 'Reduir el logotip si sobrepassa la mida màxima indicada en píxels. Exemple: 100. (0 = mai)', # MODIF
 
-       // I
-       'info_experimental' => 'Expérimental', # NEW
-
        // L
        'label_activer_barre_typo' => 'Activar la barra tipogràfica a els llapis?',
        'label_activer_crayons_prive' => 'Activar llapis a la part privada.',
        'label_barre_typo' => 'Barra tipogràfica',
-       'label_clickhide' => 'Fent un clic a l\'exterior s\'amaga els llapis',
+       'label_clickhide' => 'Fent un clic a l’exterior s’amaga els llapis',
        'label_effets' => 'Tria dels efectes',
        'label_espaceprive' => 'Els llapis a la part privada?',
        'label_exec_autorise' => 'Pàgines autoritzades',
        'label_filet' => 'Filet',
        'label_message' => 'Obtenir un missatge',
-       'label_msg_abandon' => 'Sobre l\'abandonament',
+       'label_msg_abandon' => 'Sobre labandonament',
        'label_msg_no_change' => 'Si no hi ha canvi',
        'label_reduire_logo' => 'Reduir els logotips',
-       'label_upload_document' => 'Autoriser l\'ajout de documents par glisser/déposer sur le crayon article.texte', # NEW
        'label_yellow_fade' => 'Sense interès',
-       'legend_controleur_hyperlien' => 'Hyperlien', # NEW
        'legend_controleur_logo' => 'Escollir un logotip:',
-       'legend_controleur_logo_remplacer' => 'Remplacer ce logo', # NEW
-       'legend_controleur_qui' => 'Qui ?', # NEW
        'legend_controleur_vignette' => 'Escollir una vinyeta:',
-       'legend_controleur_vignette_remplacer' => 'Remplacer cette vignette', # NEW
-       'legend_documents' => 'Upload de documents', # NEW
-       'legend_editer_prive' => 'Editar l\'espai privat (experimental)',
-       'legend_introduction_article' => 'Texte introductif de l\'article', # NEW
+       'legend_editer_prive' => 'Editar l’espai privat (experimental)',
 
        // M
        'message_image_obligatoire' => 'Cal escollir una imatge',
@@ -78,7 +67,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'titre_crayons' => 'Llapis',
 
        // U
-       'update_impossible' => 'L\'actualització ha fracassat',
+       'update_impossible' => 'Lactualització ha fracassat',
 
        // V
        'veuillez_patienter' => 'Si us plau, espereu un moment...'
index af1c1d9..ad9342d 100644 (file)
@@ -24,26 +24,26 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'editer_tout' => 'Alles bearbeiten',
        'effets' => 'Effekte',
        'explication_exec_autorise' => 'Zur Bearbeitung zugelassene Seiten
-  (?exec=...) : (exec-Skripte mit Komma trennen).',
-       'explication_introduction_article' => 'Die Einleitung eines Artikels zeigt das Feld "Beschreibung" an. Sollte es leer sein, werden die ersten  600 Zeichen des Artikels aus den Feldern "Kopf" und "Text" angezeigt.',
+  (?exec=...) : (exec-Skripte mit Komma trennen).', # MODIF
+       'explication_introduction_article' => 'Die Einleitung eines Artikels zeigt das Feld "Beschreibung" an. Sollte es leer sein, werden die ersten  600 Zeichen des Artikels aus den Feldern "Kopf" und "Text" angezeigt.', # MODIF
        'explication_reduire_logo' => 'Logo verkleinern wenn es größer als x Pixel ist.
-Beispiel: 100. (0 = niemals)',
+Beispiel: 100. (0 = niemals)', # MODIF
 
        // I
        'info_experimental' => 'Expérimentell',
 
        // L
-       'label_activer_barre_typo' => 'Funktionsleisten f&uuml;r die Stifte aktivieren?',
+       'label_activer_barre_typo' => 'Funktionsleisten für die Stifte aktivieren?',
        'label_activer_crayons_prive' => 'Stifte im Redaktionssystem aktivieren',
        'label_barre_typo' => 'Funktonsleiste',
-       'label_clickhide' => 'Ein Klick au&szlig;erhalb versteckt den Stift',
-       'label_effets' => 'Effekte w&auml;hlen',
+       'label_clickhide' => 'Ein Klick außerhalb versteckt den Stift',
+       'label_effets' => 'Effekte wählen',
        'label_espaceprive' => 'Stifte im Redaktionssystem verwenden?',
        'label_exec_autorise' => 'Erlaubte Seiten',
        'label_filet' => 'Netz',
        'label_message' => 'Nachricht erhalten',
        'label_msg_abandon' => 'bei Abbruch',
-       'label_msg_no_change' => 'wenn keine &Auml;nderung',
+       'label_msg_no_change' => 'wenn keine Änderung',
        'label_reduire_logo' => 'Logos verkleinern',
        'label_upload_document' => 'Hinzufügen von Dokumenten durch Ziehen/Ablegen auf den Stift article.texte erlauben.',
        'label_yellow_fade' => 'Ausblenden',
index e5de44f..1ec094a 100644 (file)
@@ -8,6 +8,7 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // A
+       'absence_cle_primaire' => 'No primary key!',
        'activation_barre_impossible' => 'Another plugin is preventing the use of  porte-plume on the public site.',
        'annuler' => 'Cancel',
 
@@ -23,11 +24,11 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'editer_@type@_@id@' => 'Edit the whole @type@ @id@',
        'editer_tout' => 'Edit as a whole',
        'effets' => 'Effects',
-       'explication_exec_autorise' => 'Pages which are authorised fro changes
-  (?exec=...) : (, to separate several pages- * for all).',
-       'explication_introduction_article' => 'The introduction for an article displays the description of the article if there is one, otherwise it displays the first 600 characters (of the standfirst and text).',
+       'explication_exec_autorise' => 'Pages which are authorised for changes
+  (?exec=...) : (, to separate several pages - * for all).',
+       'explication_introduction_article' => 'The introduction for an article displays the description of that article if there is one, otherwise it displays the first 600 characters (of the standfirst and text).',
        'explication_reduire_logo' => 'Reduce the logo size if it exceeds
-  the maximum size (in pixels). Example: 100 (0 = never).',
+  the maximum size (in pixels). Example: 100. (0 = never).',
 
        // I
        'info_experimental' => 'Experimental',
@@ -47,6 +48,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'label_reduire_logo' => 'Reduce logos',
        'label_upload_document' => 'Allow adding documents by drag and drop on the pencil article.texte',
        'label_yellow_fade' => 'Fade',
+       'legend_controleur_fichier_remplacer' => 'Replace this document "@extension@"',
        'legend_controleur_hyperlien' => 'Hyperlink',
        'legend_controleur_logo' => 'Choose a logo:',
        'legend_controleur_logo_remplacer' => 'Replace this logo',
index 9c16428..a081b8c 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 // This is a SPIP language file  --  Ceci est un fichier langue de SPIP
-// extrait automatiquement de http://www.spip.net/trad-lang/
+// extrait automatiquement de http://trad.spip.net/tradlang_module/crayons?lang_cible=eo
 // ** ne pas modifier le fichier **
 
 if (!defined('_ECRIRE_INC_VERSION')) return;
@@ -8,12 +8,8 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // A
-       'activation_barre_impossible' => 'Un autre plugin interdit l\'usage du porte-plume dans l\'espace public.', # NEW
        'annuler' => 'Nuligi',
 
-       // B
-       'bouton_supprimer' => 'Supprimer', # NEW
-
        // D
        'deja_modifie' => 'Jam modifita',
        'donnees_mal_formatees' => 'Datenoj malbone formatitaj',
@@ -22,39 +18,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'editer' => 'Redakti',
        'editer_@type@_@id@' => 'Tute redakti @type@ @id@ ',
        'editer_tout' => 'Ĉion redakti',
-       'effets' => 'Effets', # NEW
-       'explication_exec_autorise' => 'Pages autorisées à la modification\r
-               (?exec=...) : (, pour séparer les exec - * pour toutes).', # NEW
-       'explication_introduction_article' => 'L\'introduction d\'un article affiche le descriptif de l\'article, sinon affiche ses 600 premiers caractères (chapeau puis texte).', # NEW
-       'explication_reduire_logo' => 'Réduire le logo s\'il dépasse\r
-               la taille maximale indiquée en pixels. Exemple : 100. (0 = jamais)', # NEW
-
-       // L
-       'label_activer_barre_typo' => 'Activer la barre typographique dans les crayons ?', # NEW
-       'label_activer_crayons_prive' => 'Activer crayons pour la partie privée.', # NEW
-       'label_barre_typo' => 'Barre typographique', # NEW
-       'label_clickhide' => 'Un clic en-dehors masque les crayons', # NEW
-       'label_effets' => 'Choix des effets', # NEW
-       'label_espaceprive' => 'Crayons dans le privé ?', # NEW
-       'label_exec_autorise' => 'Pages autorisées', # NEW
-       'label_filet' => 'Filet', # NEW
-       'label_message' => 'Obtenir un message', # NEW
-       'label_msg_abandon' => 'Sur abandon', # NEW
-       'label_msg_no_change' => 'Si pas de changement', # NEW
-       'label_reduire_logo' => 'Réduire les logos', # NEW
-       'label_yellow_fade' => 'Fade', # NEW
-       'legend_controleur_hyperlien' => 'Hyperlien', # NEW
-       'legend_controleur_logo' => 'Choisir un logo :', # NEW
-       'legend_controleur_logo_remplacer' => 'Remplacer ce logo', # NEW
-       'legend_controleur_qui' => 'Qui ?', # NEW
-       'legend_controleur_vignette' => 'Choisir une vignette :', # NEW
-       'legend_controleur_vignette_remplacer' => 'Remplacer cette vignette', # NEW
-       'legend_editer_prive' => 'Éditer l\'espace privé (expérimental)', # NEW
-       'legend_introduction_article' => 'Texte introductif de l\'article', # NEW
 
        // M
-       'message_image_obligatoire' => 'Il faut choisir une image', # NEW
-       'messages' => 'Messages', # NEW
        'modifie_par_ailleurs' => 'Modifita dumtempe',
 
        // N
@@ -66,16 +31,9 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'pas_de_valeur' => 'Neniu valoro',
 
        // S
-       'sauvegarder' => 'Ĉu konservi modifojn?',
+       'sauvegarder' => 'Ĉu konservi modifojn ?',
        'svp_copier_coller' => 'Ni pardonpetas, kopigluu viajn ŝanĝojn kaj rekomencu',
 
-       // T
-       'titre_config_crayons' => 'Configurer les crayons', # NEW
-       'titre_crayons' => 'Crayons', # NEW
-
-       // U
-       'update_impossible' => 'La mise à jour a échoué.', # NEW
-
        // V
        'veuillez_patienter' => 'Bonvolu atendi...'
 );
index 43a7da2..f1a52ab 100644 (file)
@@ -24,10 +24,10 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'editer_tout' => 'Editar todo',
        'effets' => 'Efectos',
        'explication_exec_autorise' => 'Páginas cuya modificación es permitida
-  (?exec=...): (, para separar los exec - * para todas).',
-       'explication_introduction_article' => 'La introducción de un artículo enseña la descripción del artículo, o los primeros 600 carácteres (epígrafe y luego texto).',
+  (?exec=...): (, para separar los exec - * para todas).', # MODIF
+       'explication_introduction_article' => 'La introducción de un artículo enseña la descripción del artículo, o los primeros 600 carácteres (epígrafe y luego texto).', # MODIF
        'explication_reduire_logo' => 'Reducir el logotipo si va mas allá
-  del tamaño indicado en píxeles. Ejemplo: 100. (0 = nunca)',
+  del tamaño indicado en píxeles. Ejemplo: 100. (0 = nunca)', # MODIF
 
        // I
        'info_experimental' => 'Experimental',
@@ -47,6 +47,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'label_reduire_logo' => 'Reducir el tamaño de los logotipos',
        'label_upload_document' => 'Autorizar que se agreguen documentos por arrastrar/depositar ("drag & drop") sobre el lápiz artículo.texto (article.texte)',
        'label_yellow_fade' => 'Fundido',
+       'legend_controleur_fichier_remplacer' => 'Reemplazar este documento "@extension@"',
        'legend_controleur_hyperlien' => 'Enlace hipertexto',
        'legend_controleur_logo' => 'Elegir un logotipo:',
        'legend_controleur_logo_remplacer' => 'Reemplazar este logotipo',
index 00a131a..61abab6 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 // This is a SPIP language file  --  Ceci est un fichier langue de SPIP
-// extrait automatiquement de http://www.spip.net/trad-lang/
+// extrait automatiquement de http://trad.spip.net/tradlang_module/crayons?lang_cible=eu
 // ** ne pas modifier le fichier **
 
 if (!defined('_ECRIRE_INC_VERSION')) return;
@@ -8,12 +8,8 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // A
-       'activation_barre_impossible' => 'Un autre plugin interdit l\'usage du porte-plume dans l\'espace public.', # NEW
        'annuler' => 'Ezeztatu',
 
-       // B
-       'bouton_supprimer' => 'Supprimer', # NEW
-
        // D
        'deja_modifie' => 'Jadanik aldatua',
        'donnees_mal_formatees' => 'Gaizki formatutako datuak',
@@ -22,39 +18,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'editer' => 'Editatu',
        'editer_@type@_@id@' => '@type@ @id@ osoki editatu',
        'editer_tout' => 'Dena editatu',
-       'effets' => 'Effets', # NEW
-       'explication_exec_autorise' => 'Pages autorisées à la modification\r
-               (?exec=...) : (, pour séparer les exec - * pour toutes).', # NEW
-       'explication_introduction_article' => 'L\'introduction d\'un article affiche le descriptif de l\'article, sinon affiche ses 600 premiers caractères (chapeau puis texte).', # NEW
-       'explication_reduire_logo' => 'Réduire le logo s\'il dépasse\r
-               la taille maximale indiquée en pixels. Exemple : 100. (0 = jamais)', # NEW
-
-       // L
-       'label_activer_barre_typo' => 'Activer la barre typographique dans les crayons ?', # NEW
-       'label_activer_crayons_prive' => 'Activer crayons pour la partie privée.', # NEW
-       'label_barre_typo' => 'Barre typographique', # NEW
-       'label_clickhide' => 'Un clic en-dehors masque les crayons', # NEW
-       'label_effets' => 'Choix des effets', # NEW
-       'label_espaceprive' => 'Crayons dans le privé ?', # NEW
-       'label_exec_autorise' => 'Pages autorisées', # NEW
-       'label_filet' => 'Filet', # NEW
-       'label_message' => 'Obtenir un message', # NEW
-       'label_msg_abandon' => 'Sur abandon', # NEW
-       'label_msg_no_change' => 'Si pas de changement', # NEW
-       'label_reduire_logo' => 'Réduire les logos', # NEW
-       'label_yellow_fade' => 'Fade', # NEW
-       'legend_controleur_hyperlien' => 'Hyperlien', # NEW
-       'legend_controleur_logo' => 'Choisir un logo :', # NEW
-       'legend_controleur_logo_remplacer' => 'Remplacer ce logo', # NEW
-       'legend_controleur_qui' => 'Qui ?', # NEW
-       'legend_controleur_vignette' => 'Choisir une vignette :', # NEW
-       'legend_controleur_vignette_remplacer' => 'Remplacer cette vignette', # NEW
-       'legend_editer_prive' => 'Éditer l\'espace privé (expérimental)', # NEW
-       'legend_introduction_article' => 'Texte introductif de l\'article', # NEW
 
        // M
-       'message_image_obligatoire' => 'Il faut choisir une image', # NEW
-       'messages' => 'Messages', # NEW
        'modifie_par_ailleurs' => 'Bestalde aldatua',
 
        // N
@@ -66,18 +31,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'pas_de_valeur' => 'Balorerik ez',
 
        // S
-       'sauvegarder' => 'Aldaketak grabatu ?',
-       'svp_copier_coller' => 'Désolé, copiez/collez vos changements et recommencez', # NEW
-
-       // T
-       'titre_config_crayons' => 'Configurer les crayons', # NEW
-       'titre_crayons' => 'Crayons', # NEW
-
-       // U
-       'update_impossible' => 'La mise à jour a échoué.', # NEW
-
-       // V
-       'veuillez_patienter' => 'Veuillez patienter...' # NEW
+       'sauvegarder' => 'Aldaketak grabatu ?'
 );
 
 ?>
index 78c5e17..7b81532 100644 (file)
@@ -24,16 +24,13 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'editer_tout' => 'ويرايش همه',
        'effets' => 'افكت‌ها',
        'explication_exec_autorise' => 'صفحه‌هاي مجاز براي اصلاح
-(?exec=...) : (, جداسازي چند صفحه- *براي همه).',
-       'explication_introduction_article' => 'پيشگفتار يك مقاله توصيف يك مقاله را اگر باشد، نشان مي‌دهد، و اگر نباشد 600 كاراكتر اول (ليد و متن)را نشان خواهد داد.',
-       'explication_reduire_logo' => 'اندازه‌ي لوگ را اگر از بيشترين حد بالا زده باشد كم مي‌كند (به پيكسل). نمونه : 100. ( 0 = هرگز)',
-
-       // I
-       'info_experimental' => 'Expérimental', # NEW
+(?exec=...) : (, جداسازي چند صفحه- *براي همه).', # MODIF
+       'explication_introduction_article' => 'پيشگفتار يك مقاله توصيف يك مقاله را اگر باشد، نشان مي‌دهد، و اگر نباشد 600 كاراكتر اول (ليد و متن)را نشان خواهد داد.', # MODIF
+       'explication_reduire_logo' => 'اندازه‌ي لوگ را اگر از بيشترين حد بالا زده باشد كم مي‌كند (به پيكسل). نمونه : 100. ( 0 = هرگز)', # MODIF
 
        // L
        'label_activer_barre_typo' => 'فعال‌سازي ميل حروف‌نگاري در پلاگين «مدادها»؟',
-       'label_activer_crayons_prive' => 'فعال سازي «مدادها» راي قسمت خصوصي.',
+       'label_activer_crayons_prive' => 'Ù\81عاÙ\84 Ø³Ø§Ø²Ù\8a Â«Ù\85دادÙ\87ا» Ø¨Ø±Ø§Ù\8a Ù\82سÙ\85ت Ø®ØµÙ\88صÙ\8a.',
        'label_barre_typo' => 'ميل حروف نگاري ',
        'label_clickhide' => 'يك كليك بيرون محوطه مدادها را مبي بندد',
        'label_effets' => 'گزينش افكت‌ها',
@@ -44,15 +41,13 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'label_msg_abandon' => 'در جريان ابطال',
        'label_msg_no_change' => 'در صورت عدم تغيير ',
        'label_reduire_logo' => 'كاهش لوگوها',
-       'label_upload_document' => 'Autoriser l\'ajout de documents par glisser/déposer sur le crayon article.texte', # NEW
        'label_yellow_fade' => 'محو',
        'legend_controleur_hyperlien' => 'ابرپيوند',
        'legend_controleur_logo' => 'گزينش يك لوگو :',
        'legend_controleur_logo_remplacer' => 'جايگزيني اين لوگو',
        'legend_controleur_qui' => 'كي؟',
-       'legend_controleur_vignette' => 'گزيش يك صورتك  :',
+       'legend_controleur_vignette' => 'گزيش يك صورتك :',
        'legend_controleur_vignette_remplacer' => 'جايگزيني اين صورت',
-       'legend_documents' => 'Upload de documents', # NEW
        'legend_editer_prive' => 'استفاده در محوطه‌ي خصوصي (تجربي)',
        'legend_introduction_article' => 'متن مقدماتي مقاله',
 
index df390e1..2f0b72e 100644 (file)
@@ -6,7 +6,8 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // A
-       'activation_barre_impossible' => 'Un autre plugin interdit l\'usage du porte-plume dans l\'espace public.',
+       'absence_cle_primaire' => 'Pas de clé primaire !',
+       'activation_barre_impossible' => 'Un autre plugin interdit l’usage du porte-plume dans l’espace public.',
        'annuler' => 'Annuler',
 
        // B
@@ -22,38 +23,40 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'editer_tout' => 'Éditer tout',
        'effets' => 'Effets',
        'explication_exec_autorise' => 'Pages autorisées à la modification
-               (?exec=...) : (, pour séparer les exec - * pour toutes).',
-       'explication_introduction_article' => 'L\'introduction d\'un article affiche le descriptif de l\'article, sinon affiche ses 600 premiers caractères (chapeau puis texte).',
-       'explication_reduire_logo' => 'Réduire le logo s\'il dépasse
-               la taille maximale indiquée en pixels. Exemple : 100. (0 = jamais)',
+        (?exec=...) : (, pour séparer les exec - * pour toutes).',
+       'explication_introduction_article' => 'L’introduction d’un article affiche le descriptif de l’article,
+    sinon affiche ses 600 premiers caractères (chapeau puis texte).',
+       'explication_reduire_logo' => 'Réduire le logo s’il dépasse
+        la taille maximale indiquée en pixels. Exemple : 100. (0 = jamais)',
 
        // I
        'info_experimental' => 'Expérimental',
 
        // L
-       'label_activer_barre_typo' => 'Activer la barre typographique dans les crayons ?',
+       'label_activer_barre_typo' => 'Activer la barre typographique dans les crayons ?',
        'label_activer_crayons_prive' => 'Activer crayons pour la partie privée.',
        'label_barre_typo' => 'Barre typographique',
        'label_clickhide' => 'Un clic en-dehors masque les crayons',
        'label_effets' => 'Choix des effets',
-       'label_espaceprive' => 'Crayons dans le privé ?',
+       'label_espaceprive' => 'Crayons dans le privé ?',
        'label_exec_autorise' => 'Pages autorisées',
        'label_filet' => 'Filet',
        'label_message' => 'Obtenir un message',
        'label_msg_abandon' => 'Sur abandon',
        'label_msg_no_change' => 'Si pas de changement',
        'label_reduire_logo' => 'Réduire les logos',
-       'label_upload_document' => 'Autoriser l\'ajout de documents par glisser/déposer sur le crayon article.texte',
+       'label_upload_document' => 'Autoriser lajout de documents par glisser/déposer sur le crayon article.texte',
        'label_yellow_fade' => 'Fade',
+       'legend_controleur_fichier_remplacer' => 'Remplacer ce document "@extension@"',
        'legend_controleur_hyperlien' => 'Hyperlien',
        'legend_controleur_logo' => 'Choisir un logo :',
        'legend_controleur_logo_remplacer' => 'Remplacer ce logo',
-       'legend_controleur_qui' => 'Qui ?',
+       'legend_controleur_qui' => 'Qui ?',
        'legend_controleur_vignette' => 'Choisir une vignette :',
        'legend_controleur_vignette_remplacer' => 'Remplacer cette vignette',
        'legend_documents' => 'Upload de documents',
-       'legend_editer_prive' => 'Éditer l\'espace privé (expérimental)',
-       'legend_introduction_article' => 'Texte introductif de l\'article',
+       'legend_editer_prive' => 'Éditer lespace privé (expérimental)',
+       'legend_introduction_article' => 'Texte introductif de larticle',
 
        // M
        'message_image_obligatoire' => 'Il faut choisir une image',
@@ -69,7 +72,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'pas_de_valeur' => 'Pas de valeur',
 
        // S
-       'sauvegarder' => 'Sauvegarder les modifications ?',
+       'sauvegarder' => 'Sauvegarder les modifications ?',
        'svp_copier_coller' => 'Désolé, copiez/collez vos changements et recommencez',
 
        // T
index e8eca5b..e40b7aa 100644 (file)
@@ -8,7 +8,7 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // A
-       'activation_barre_impossible' => 'Un autre plugin interdit l\'usage du porte-plume dans l\'espace public.',
+       'activation_barre_impossible' => 'Un autre plugin interdit l’usage du porte-plume dans l’espace public.',
        'annuler' => 'Annuler',
 
        // B
@@ -24,38 +24,38 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'editer_tout' => 'Éditer tout',
        'effets' => 'Effets',
        'explication_exec_autorise' => 'Pages autorisées à la modification
-  (?exec=...) : (, pour séparer les exec - * pour toutes).',
-       'explication_introduction_article' => 'L\'introduction d\'un article affiche le descriptif de l\'article, sinon affiche ses 600 premiers caractères (chapeau puis texte).',
-       'explication_reduire_logo' => 'Réduire le logo s\'il dépasse
-  la taille maximale indiquée en pixels. Exemple : 100. (0 = jamais)', # MODIF
+  (?exec=...) : (, pour séparer les exec - * pour toutes).', # MODIF
+       'explication_introduction_article' => 'L’introduction d’un article affiche le descriptif de l’article, sinon affiche ses 600 premiers caractères (chapeau puis texte).', # MODIF
+       'explication_reduire_logo' => 'Réduire le logo s’il dépasse la taille maximale indiquée en pixels. Exemple : 100. (0 = jamais)', # MODIF
 
        // I
-       'info_experimental' => 'Expérimental', # NEW
+       'info_experimental' => 'Expérimental',
 
        // L
-       'label_activer_barre_typo' => 'Activer la barre typographique dans les crayons ?',
+       'label_activer_barre_typo' => 'Activer la barre typographique dans les crayons ?',
        'label_activer_crayons_prive' => 'Activer crayons pour la partie privée.',
        'label_barre_typo' => 'Barre typographique',
        'label_clickhide' => 'Un clic en-dehors masque les crayons',
        'label_effets' => 'Choix des effets',
-       'label_espaceprive' => 'Crayons dans le privé ?',
+       'label_espaceprive' => 'Crayons dans le privé ?',
        'label_exec_autorise' => 'Pages autorisées',
        'label_filet' => 'Filet',
        'label_message' => 'Obtenir un message',
        'label_msg_abandon' => 'Sur abandon',
        'label_msg_no_change' => 'Si pas de changement',
        'label_reduire_logo' => 'Réduire les logos',
-       'label_upload_document' => 'Autoriser l\'ajout de documents par glisser/déposer sur le crayon article.texte', # NEW
+       'label_upload_document' => 'Autoriser l’ajout de documents par glisser/déposer sur le crayon article.texte',
        'label_yellow_fade' => 'Fade',
+       'legend_controleur_fichier_remplacer' => 'Remplacer ce document "@extension@"',
        'legend_controleur_hyperlien' => 'Hyperlien',
        'legend_controleur_logo' => 'Choisir un logo :',
        'legend_controleur_logo_remplacer' => 'Remplacer ce logo',
-       'legend_controleur_qui' => 'Qui ?',
+       'legend_controleur_qui' => 'Qui ?',
        'legend_controleur_vignette' => 'Choisir une vignette :',
        'legend_controleur_vignette_remplacer' => 'Remplacer cette vignette',
-       'legend_documents' => 'Upload de documents', # NEW
-       'legend_editer_prive' => 'Éditer l\'espace privé (expérimental)',
-       'legend_introduction_article' => 'Texte introductif de l\'article',
+       'legend_documents' => 'Upload de documents',
+       'legend_editer_prive' => 'Éditer lespace privé (expérimental)',
+       'legend_introduction_article' => 'Texte introductif de larticle',
 
        // M
        'message_image_obligatoire' => 'Il faut choisir une image',
@@ -71,7 +71,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'pas_de_valeur' => 'Pas de valeur',
 
        // S
-       'sauvegarder' => 'Sauvegarder les modifications ?',
+       'sauvegarder' => 'Sauvegarder les modifications ?',
        'svp_copier_coller' => 'Désolé, copie/colle tes changements et recommence',
 
        // T
index 2cdfca3..d4f7042 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 // This is a SPIP language file  --  Ceci est un fichier langue de SPIP
-// extrait automatiquement de http://www.spip.net/trad-lang/
+// extrait automatiquement de http://trad.spip.net/tradlang_module/crayons?lang_cible=gl
 // ** ne pas modifier le fichier **
 
 if (!defined('_ECRIRE_INC_VERSION')) return;
@@ -8,12 +8,8 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // A
-       'activation_barre_impossible' => 'Un autre plugin interdit l\'usage du porte-plume dans l\'espace public.', # NEW
        'annuler' => 'Anular',
 
-       // B
-       'bouton_supprimer' => 'Supprimer', # NEW
-
        // D
        'deja_modifie' => 'Xa modificado',
        'donnees_mal_formatees' => 'Datos mal formatados',
@@ -22,39 +18,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'editer' => 'Editar',
        'editer_@type@_@id@' => 'Editar @type@ @id@ por completo',
        'editer_tout' => 'Editar todo',
-       'effets' => 'Effets', # NEW
-       'explication_exec_autorise' => 'Pages autorisées à la modification\r
-               (?exec=...) : (, pour séparer les exec - * pour toutes).', # NEW
-       'explication_introduction_article' => 'L\'introduction d\'un article affiche le descriptif de l\'article, sinon affiche ses 600 premiers caractères (chapeau puis texte).', # NEW
-       'explication_reduire_logo' => 'Réduire le logo s\'il dépasse\r
-               la taille maximale indiquée en pixels. Exemple : 100. (0 = jamais)', # NEW
-
-       // L
-       'label_activer_barre_typo' => 'Activer la barre typographique dans les crayons ?', # NEW
-       'label_activer_crayons_prive' => 'Activer crayons pour la partie privée.', # NEW
-       'label_barre_typo' => 'Barre typographique', # NEW
-       'label_clickhide' => 'Un clic en-dehors masque les crayons', # NEW
-       'label_effets' => 'Choix des effets', # NEW
-       'label_espaceprive' => 'Crayons dans le privé ?', # NEW
-       'label_exec_autorise' => 'Pages autorisées', # NEW
-       'label_filet' => 'Filet', # NEW
-       'label_message' => 'Obtenir un message', # NEW
-       'label_msg_abandon' => 'Sur abandon', # NEW
-       'label_msg_no_change' => 'Si pas de changement', # NEW
-       'label_reduire_logo' => 'Réduire les logos', # NEW
-       'label_yellow_fade' => 'Fade', # NEW
-       'legend_controleur_hyperlien' => 'Hyperlien', # NEW
-       'legend_controleur_logo' => 'Choisir un logo :', # NEW
-       'legend_controleur_logo_remplacer' => 'Remplacer ce logo', # NEW
-       'legend_controleur_qui' => 'Qui ?', # NEW
-       'legend_controleur_vignette' => 'Choisir une vignette :', # NEW
-       'legend_controleur_vignette_remplacer' => 'Remplacer cette vignette', # NEW
-       'legend_editer_prive' => 'Éditer l\'espace privé (expérimental)', # NEW
-       'legend_introduction_article' => 'Texte introductif de l\'article', # NEW
 
        // M
-       'message_image_obligatoire' => 'Il faut choisir une image', # NEW
-       'messages' => 'Messages', # NEW
        'modifie_par_ailleurs' => 'Modificado por outros',
 
        // N
@@ -69,10 +34,6 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'sauvegarder' => 'Gardar as modificacións ?',
        'svp_copier_coller' => 'Desculpe, copie/pegue os seus cambios e volva comezar',
 
-       // T
-       'titre_config_crayons' => 'Configurer les crayons', # NEW
-       'titre_crayons' => 'Crayons', # NEW
-
        // U
        'update_impossible' => 'Fallou a actualización',
 
index 8b998e6..250ac4c 100644 (file)
@@ -8,7 +8,7 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // A
-       'activation_barre_impossible' => 'Un altro plugin impedisce l\'utilizzo di porte-plume nella spazio pubblico.',
+       'activation_barre_impossible' => 'Un altro plugin impedisce lutilizzo di porte-plume nella spazio pubblico.',
        'annuler' => 'Annulla',
 
        // B
@@ -24,14 +24,11 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'editer_tout' => 'Modifica tutto',
        'effets' => 'Effetti',
        'explication_exec_autorise' => 'Pagine autorizzate per la modifica
-  (?exec=...) : (, per separare gli exec - * per tutti).',
-       'explication_introduction_article' => 'L\'introduzione di un articolo mostra la descrizione di un articolo, altrimenti mostra i suoi primi 600 caratteri (cappello più testo)',
+  (?exec=...) : (, per separare gli exec - * per tutti).', # MODIF
+       'explication_introduction_article' => 'L’introduzione di un articolo mostra la descrizione di un articolo, altrimenti mostra i suoi primi 600 caratteri (cappello più testo)', # MODIF
        'explication_reduire_logo' => 'Riduci il logo se supera
   la dimensione massima indicata in pixel. Esempio: 100. (0 = mai)', # MODIF
 
-       // I
-       'info_experimental' => 'Expérimental', # NEW
-
        // L
        'label_activer_barre_typo' => 'Attivare la barra tipografica per i pennarelli?',
        'label_activer_crayons_prive' => 'Attivare i pennarelli per la parte redazionale.',
@@ -42,23 +39,17 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'label_exec_autorise' => 'Pagine autorizzate',
        'label_filet' => 'Bordo',
        'label_message' => 'Ottieni un messaggio',
-       'label_msg_abandon' => 'Sull\'abbandono',
-       'label_msg_no_change' => 'Se non c\'è nessuna modifica',
+       'label_msg_abandon' => 'Sullabbandono',
+       'label_msg_no_change' => 'Se non cè nessuna modifica',
        'label_reduire_logo' => 'Riduci i logo',
-       'label_upload_document' => 'Autoriser l\'ajout de documents par glisser/déposer sur le crayon article.texte', # NEW
        'label_yellow_fade' => 'Fade',
-       'legend_controleur_hyperlien' => 'Hyperlien', # NEW
        'legend_controleur_logo' => 'Scegli un logo:',
-       'legend_controleur_logo_remplacer' => 'Remplacer ce logo', # NEW
-       'legend_controleur_qui' => 'Qui ?', # NEW
        'legend_controleur_vignette' => 'Scegli una miniatura:',
-       'legend_controleur_vignette_remplacer' => 'Remplacer cette vignette', # NEW
-       'legend_documents' => 'Upload de documents', # NEW
        'legend_editer_prive' => 'Modifica lo spazio redazionale (sperimentale)',
-       'legend_introduction_article' => 'Testo introduttivo dell\'articolo',
+       'legend_introduction_article' => 'Testo introduttivo dellarticolo',
 
        // M
-       'message_image_obligatoire' => 'Devi scegliere un\'immagine',
+       'message_image_obligatoire' => 'Devi scegliere unimmagine',
        'messages' => 'Messaggi',
        'modifie_par_ailleurs' => 'Modificato altrove',
 
@@ -79,7 +70,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'titre_crayons' => 'Pennarelli',
 
        // U
-       'update_impossible' => 'L\'aggiornamento è fallito.',
+       'update_impossible' => 'Laggiornamento è fallito.',
 
        // V
        'veuillez_patienter' => 'Attendere...'
index 937699b..1f15e0e 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 // This is a SPIP language file  --  Ceci est un fichier langue de SPIP
-// extrait automatiquement de http://www.spip.net/trad-lang/
+// extrait automatiquement de http://trad.spip.net/tradlang_module/crayons?lang_cible=it_fem
 // ** ne pas modifier le fichier **
 
 if (!defined('_ECRIRE_INC_VERSION')) return;
@@ -8,12 +8,8 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // A
-       'activation_barre_impossible' => 'Un autre plugin interdit l\'usage du porte-plume dans l\'espace public.', # NEW
        'annuler' => 'Annulla',
 
-       // B
-       'bouton_supprimer' => 'Supprimer', # NEW
-
        // D
        'deja_modifie' => 'Già modificato',
        'donnees_mal_formatees' => 'Dati mal formattati',
@@ -22,39 +18,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'editer' => 'Modifica',
        'editer_@type@_@id@' => 'Modifica @type@ @id@ in intero',
        'editer_tout' => 'Modifica tutto',
-       'effets' => 'Effets', # NEW
-       'explication_exec_autorise' => 'Pages autorisées à la modification\r
-               (?exec=...) : (, pour séparer les exec - * pour toutes).', # NEW
-       'explication_introduction_article' => 'L\'introduction d\'un article affiche le descriptif de l\'article, sinon affiche ses 600 premiers caractères (chapeau puis texte).', # NEW
-       'explication_reduire_logo' => 'Réduire le logo s\'il dépasse\r
-               la taille maximale indiquée en pixels. Exemple : 100. (0 = jamais)', # NEW
-
-       // L
-       'label_activer_barre_typo' => 'Activer la barre typographique dans les crayons ?', # NEW
-       'label_activer_crayons_prive' => 'Activer crayons pour la partie privée.', # NEW
-       'label_barre_typo' => 'Barre typographique', # NEW
-       'label_clickhide' => 'Un clic en-dehors masque les crayons', # NEW
-       'label_effets' => 'Choix des effets', # NEW
-       'label_espaceprive' => 'Crayons dans le privé ?', # NEW
-       'label_exec_autorise' => 'Pages autorisées', # NEW
-       'label_filet' => 'Filet', # NEW
-       'label_message' => 'Obtenir un message', # NEW
-       'label_msg_abandon' => 'Sur abandon', # NEW
-       'label_msg_no_change' => 'Si pas de changement', # NEW
-       'label_reduire_logo' => 'Réduire les logos', # NEW
-       'label_yellow_fade' => 'Fade', # NEW
-       'legend_controleur_hyperlien' => 'Hyperlien', # NEW
-       'legend_controleur_logo' => 'Choisir un logo :', # NEW
-       'legend_controleur_logo_remplacer' => 'Remplacer ce logo', # NEW
-       'legend_controleur_qui' => 'Qui ?', # NEW
-       'legend_controleur_vignette' => 'Choisir une vignette :', # NEW
-       'legend_controleur_vignette_remplacer' => 'Remplacer cette vignette', # NEW
-       'legend_editer_prive' => 'Éditer l\'espace privé (expérimental)', # NEW
-       'legend_introduction_article' => 'Texte introductif de l\'article', # NEW
 
        // M
-       'message_image_obligatoire' => 'Il faut choisir une image', # NEW
-       'messages' => 'Messages', # NEW
        'modifie_par_ailleurs' => 'Modificato altrove',
 
        // N
@@ -69,13 +34,6 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'sauvegarder' => 'Registrare le modifiche?',
        'svp_copier_coller' => 'Spiacente, copia/incolla le modifiche e comincia di nuovo',
 
-       // T
-       'titre_config_crayons' => 'Configurer les crayons', # NEW
-       'titre_crayons' => 'Crayons', # NEW
-
-       // U
-       'update_impossible' => 'La mise à jour a échoué.', # NEW
-
        // V
        'veuillez_patienter' => 'Attendere...'
 );
index 3f9edc4..53683e8 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 // This is a SPIP language file  --  Ceci est un fichier langue de SPIP
-// extrait automatiquement de http://www.spip.net/trad-lang/
+// extrait automatiquement de http://trad.spip.net/tradlang_module/crayons?lang_cible=km
 // ** ne pas modifier le fichier **
 
 if (!defined('_ECRIRE_INC_VERSION')) return;
@@ -8,70 +8,11 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // A
-       'activation_barre_impossible' => 'Un autre plugin interdit l\'usage du porte-plume dans l\'espace public.', # NEW
        'annuler' => 'បោះបង់',
 
-       // B
-       'bouton_supprimer' => 'Supprimer', # NEW
-
-       // D
-       'deja_modifie' => 'Already modified', # NEW
-       'donnees_mal_formatees' => 'Invalid request format', # NEW
-
        // E
        'editer' => 'កែប្រែ',
-       'editer_@type@_@id@' => 'Edit the whole @type@ @id@', # NEW
        'editer_tout' => 'កែប្រែ ទាំងអស់',
-       'effets' => 'Effets', # NEW
-       'explication_exec_autorise' => 'Pages autorisées à la modification\r
-               (?exec=...) : (, pour séparer les exec - * pour toutes).', # NEW
-       'explication_introduction_article' => 'L\'introduction d\'un article affiche le descriptif de l\'article, sinon affiche ses 600 premiers caractères (chapeau puis texte).', # NEW
-       'explication_reduire_logo' => 'Réduire le logo s\'il dépasse\r
-               la taille maximale indiquée en pixels. Exemple : 100. (0 = jamais)', # NEW
-
-       // L
-       'label_activer_barre_typo' => 'Activer la barre typographique dans les crayons ?', # NEW
-       'label_activer_crayons_prive' => 'Activer crayons pour la partie privée.', # NEW
-       'label_barre_typo' => 'Barre typographique', # NEW
-       'label_clickhide' => 'Un clic en-dehors masque les crayons', # NEW
-       'label_effets' => 'Choix des effets', # NEW
-       'label_espaceprive' => 'Crayons dans le privé ?', # NEW
-       'label_exec_autorise' => 'Pages autorisées', # NEW
-       'label_filet' => 'Filet', # NEW
-       'label_message' => 'Obtenir un message', # NEW
-       'label_msg_abandon' => 'Sur abandon', # NEW
-       'label_msg_no_change' => 'Si pas de changement', # NEW
-       'label_reduire_logo' => 'Réduire les logos', # NEW
-       'label_yellow_fade' => 'Fade', # NEW
-       'legend_controleur_hyperlien' => 'Hyperlien', # NEW
-       'legend_controleur_logo' => 'Choisir un logo :', # NEW
-       'legend_controleur_logo_remplacer' => 'Remplacer ce logo', # NEW
-       'legend_controleur_qui' => 'Qui ?', # NEW
-       'legend_controleur_vignette' => 'Choisir une vignette :', # NEW
-       'legend_controleur_vignette_remplacer' => 'Remplacer cette vignette', # NEW
-       'legend_editer_prive' => 'Éditer l\'espace privé (expérimental)', # NEW
-       'legend_introduction_article' => 'Texte introductif de l\'article', # NEW
-
-       // M
-       'message_image_obligatoire' => 'Il faut choisir une image', # NEW
-       'messages' => 'Messages', # NEW
-       'modifie_par_ailleurs' => 'Was modified elsewhere in the meantime', # NEW
-
-       // N
-       'non_autorise' => '<NEW>គ្មានអនុញ្ញាត',
-       'non_implemente' => 'Not implemented', # NEW
-
-       // P
-       'pas_de_modification' => '<NEW>គ្មានបំលាស់ប្តូរ',
-       'pas_de_valeur' => '<NEW>គ្មានតំលៃ សំរាប់អត្តសញ្ញា (ID) នេះ',
-
-       // S
-       'sauvegarder' => '<NEW>រក្សាទុក បំលាស់ប្តូរ?',
-       'svp_copier_coller' => 'Sorry, copy/paste your changes and retry', # NEW
-
-       // T
-       'titre_config_crayons' => 'Configurer les crayons', # NEW
-       'titre_crayons' => 'Crayons', # NEW
 
        // U
        'update_impossible' => 'ការបន្ទាន់សម័យ បានបរាជ័យ។',
index 0e0835b..8cefa80 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 // This is a SPIP language file  --  Ceci est un fichier langue de SPIP
-// extrait automatiquement de http://www.spip.net/trad-lang/
+// extrait automatiquement de http://trad.spip.net/tradlang_module/crayons?lang_cible=lb
 // ** ne pas modifier le fichier **
 
 if (!defined('_ECRIRE_INC_VERSION')) return;
@@ -8,12 +8,8 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // A
-       'activation_barre_impossible' => 'Un autre plugin interdit l\'usage du porte-plume dans l\'espace public.', # NEW
        'annuler' => 'Annuléieren',
 
-       // B
-       'bouton_supprimer' => 'Supprimer', # NEW
-
        // D
        'deja_modifie' => 'Schons geännert',
        'donnees_mal_formatees' => 'Daten schlecht formatéiert',
@@ -22,39 +18,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'editer' => 'Änneren',
        'editer_@type@_@id@' => '@type@ @id@ ganz änneren',
        'editer_tout' => 'Alles änneren',
-       'effets' => 'Effets', # NEW
-       'explication_exec_autorise' => 'Pages autorisées à la modification\r
-               (?exec=...) : (, pour séparer les exec - * pour toutes).', # NEW
-       'explication_introduction_article' => 'L\'introduction d\'un article affiche le descriptif de l\'article, sinon affiche ses 600 premiers caractères (chapeau puis texte).', # NEW
-       'explication_reduire_logo' => 'Réduire le logo s\'il dépasse\r
-               la taille maximale indiquée en pixels. Exemple : 100. (0 = jamais)', # NEW
-
-       // L
-       'label_activer_barre_typo' => 'Activer la barre typographique dans les crayons ?', # NEW
-       'label_activer_crayons_prive' => 'Activer crayons pour la partie privée.', # NEW
-       'label_barre_typo' => 'Barre typographique', # NEW
-       'label_clickhide' => 'Un clic en-dehors masque les crayons', # NEW
-       'label_effets' => 'Choix des effets', # NEW
-       'label_espaceprive' => 'Crayons dans le privé ?', # NEW
-       'label_exec_autorise' => 'Pages autorisées', # NEW
-       'label_filet' => 'Filet', # NEW
-       'label_message' => 'Obtenir un message', # NEW
-       'label_msg_abandon' => 'Sur abandon', # NEW
-       'label_msg_no_change' => 'Si pas de changement', # NEW
-       'label_reduire_logo' => 'Réduire les logos', # NEW
-       'label_yellow_fade' => 'Fade', # NEW
-       'legend_controleur_hyperlien' => 'Hyperlien', # NEW
-       'legend_controleur_logo' => 'Choisir un logo :', # NEW
-       'legend_controleur_logo_remplacer' => 'Remplacer ce logo', # NEW
-       'legend_controleur_qui' => 'Qui ?', # NEW
-       'legend_controleur_vignette' => 'Choisir une vignette :', # NEW
-       'legend_controleur_vignette_remplacer' => 'Remplacer cette vignette', # NEW
-       'legend_editer_prive' => 'Éditer l\'espace privé (expérimental)', # NEW
-       'legend_introduction_article' => 'Texte introductif de l\'article', # NEW
 
        // M
-       'message_image_obligatoire' => 'Il faut choisir une image', # NEW
-       'messages' => 'Messages', # NEW
        'modifie_par_ailleurs' => 'Anerwärts geännert',
 
        // N
@@ -69,13 +34,6 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'sauvegarder' => 'Ännerunge späicheren?',
        'svp_copier_coller' => 'Deet ons leet, kopéiert/pächt är Ännerungen a fänkt nei un',
 
-       // T
-       'titre_config_crayons' => 'Configurer les crayons', # NEW
-       'titre_crayons' => 'Crayons', # NEW
-
-       // U
-       'update_impossible' => 'La mise à jour a échoué.', # NEW
-
        // V
        'veuillez_patienter' => 'Waart weg...'
 );
index f7315cb..d37c32d 100644 (file)
@@ -8,7 +8,8 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // A
-       'activation_barre_impossible' => 'Een andere plugin verbiedt het gebruik van pen in de openbare ruimte.',
+       'absence_cle_primaire' => 'Geen primaire sleutel!',
+       'activation_barre_impossible' => 'Een andere plugin verbiedt het gebruik van De Penhouder in de publieke site.',
        'annuler' => 'Annuleren',
 
        // B
@@ -23,66 +24,67 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'editer_@type@_@id@' => '@type@ @id@ in geheel uitgeven',
        'editer_tout' => 'Alles uitgeven',
        'effets' => 'Gevolgen',
-       'explication_exec_autorise' => 'Toegestaan ​​om pagina\'s te wijzigen
-  (?exec=...) : (, te scheiden exec - * voor allen).',
-       'explication_introduction_article' => 'De introductie van een functie geeft de beschrijving van het item, anders geeft de eerste 600 karakters (hoed en tekst).',
-       'explication_reduire_logo' => 'Verminder het logo als het hoger is dan 
-   de maximale grootte in pixels. Voorbeeld: 100. (0 = nooit)',
+       'explication_exec_autorise' => 'Pagina’s die mogen worden gewijzigd
+  (?exec=...) : (, om de exec’s te scheiden - * voor alle).',
+       'explication_introduction_article' => 'De introductie toont de beschrijving  van een artikel, anders geeft het de eerste 600 tekens weer (kop en tekst).',
+       'explication_reduire_logo' => 'Verklein het logo als het groter is dan 
+   de maximale aantal pixels. Voorbeeld: 100. (0 = nooit)',
 
        // I
        'info_experimental' => 'Experimenteel',
 
        // L
-       'label_activer_barre_typo' => 'Draai het typografie roer in de potloden ?',
-       'label_activer_crayons_prive' => 'Schakel potloden voor de private partij.',
-       'label_barre_typo' => 'Typografische bar',
-       'label_clickhide' => 'Te klikken buiten het masker potloden',
-       'label_effets' => 'Selectie-effecten',
-       'label_espaceprive' => 'Potloden in de prive-sector ?',
-       'label_exec_autorise' => 'pagina\'s geautoriseerde',
+       'label_activer_barre_typo' => 'De typografische knoppenbalk in De Krijtjes activeren?',
+       'label_activer_crayons_prive' => 'Schakel Krijtjes in voor het private deel.',
+       'label_barre_typo' => 'Typografische knoppenbalk',
+       'label_clickhide' => 'Een klik erbuiten verbergt Krijtjes',
+       'label_effets' => 'Effectenkeuze',
+       'label_espaceprive' => 'Krijtjes in het private deel?',
+       'label_exec_autorise' => 'Toegestane bladzijdes',
        'label_filet' => 'Net',
-       'label_message' => 'Het krijgen van een bericht',
-       'label_msg_abandon' => 'Abandon zuid',
-       'label_msg_no_change' => 'Als er geen verandering',
-       'label_reduire_logo' => 'Verminderen logos',
-       'label_upload_document' => 'Bijvoegen van documenten door drag en drop op het article.texte potlood toelaten',
-       'label_yellow_fade' => 'Fade',
-       'legend_controleur_hyperlien' => 'Hyperlien',
-       'legend_controleur_logo' => 'Kies een logo :',
-       'legend_controleur_logo_remplacer' => 'Vervang deze logo',
-       'legend_controleur_qui' => 'Dat ?',
+       'label_message' => 'Een bericht krijgen',
+       'label_msg_abandon' => 'Bij het verlaten',
+       'label_msg_no_change' => 'Indien geen verandering',
+       'label_reduire_logo' => 'Logo’s verkleinen',
+       'label_upload_document' => 'Bijvoegen van documenten mogelijk maken via slepen en plakken op het Krijtje',
+       'label_yellow_fade' => 'Vervagen',
+       'legend_controleur_fichier_remplacer' => 'Document "@extension@" vervangen',
+       'legend_controleur_hyperlien' => 'Hyperlink',
+       'legend_controleur_logo' => 'Een logo kiezen:',
+       'legend_controleur_logo_remplacer' => 'Vervang dit logo',
+       'legend_controleur_qui' => 'Wat?',
        'legend_controleur_vignette' => 'Selecteer een miniatuur :',
        'legend_controleur_vignette_remplacer' => 'Vervang deze tag',
        'legend_documents' => 'Upload van documenten',
-       'legend_editer_prive' => 'Bewerk de private deel (experimentele)',
+       'legend_editer_prive' => 'Bewerk het private deel (experimenteel)',
        'legend_introduction_article' => 'Aanhef van artikel',
 
        // M
-       'message_image_obligatoire' => 'U moet kiezen voor een foto',
+       'message_image_obligatoire' => 'U moet een afbeelding kiezen',
        'messages' => 'Berichten',
        'modifie_par_ailleurs' => 'Voorts gewijzigd',
 
        // N
-       'non_autorise' => 'Niet toegelaten',
-       'non_implemente' => 'Niet geïmplementeerds',
+       'non_autorise' => 'Niet toegelaten',
+       'non_implemente' => 'Niet geïmplementeerd',
 
        // P
        'pas_de_modification' => 'Geen wijziging',
        'pas_de_valeur' => 'Geen waarde',
 
        // S
-       'sauvegarder' => 'De wijzigingen beschermen?',
-       'svp_copier_coller' => 'Désolé, copiez/collez vos changements et recommencez',
+       'sauvegarder' => 'De wijzigingen opslaan?',
+       'svp_copier_coller' => 'Sorry, kopieer/plak uw wijzigingen en begin opnieuw',
 
        // T
-       'titre_config_crayons' => 'Configureren potloden',
+       'titre_config_crayons' => 'Krijtjes configureren',
        'titre_crayons' => 'Podloden',
 
        // U
        'update_impossible' => 'De update is niet geslaagd.',
 
        // V
-       'veuillez_patienter' => 'Gelieve geduld te oefenen…'
+       'veuillez_patienter' => 'Een ogenblik geduld…'
 );
 
 ?>
index b9f466b..7a0de8f 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 // This is a SPIP language file  --  Ceci est un fichier langue de SPIP
-// extrait automatiquement de http://www.spip.net/trad-lang/
+// extrait automatiquement de http://trad.spip.net/tradlang_module/crayons?lang_cible=oc_lnc
 // ** ne pas modifier le fichier **
 
 if (!defined('_ECRIRE_INC_VERSION')) return;
@@ -8,12 +8,8 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // A
-       'activation_barre_impossible' => 'Un autre plugin interdit l\'usage du porte-plume dans l\'espace public.', # NEW
        'annuler' => 'Anullar',
 
-       // B
-       'bouton_supprimer' => 'Supprimer', # NEW
-
        // D
        'deja_modifie' => 'Ja modificat',
        'donnees_mal_formatees' => 'Donadas mal formatadas',
@@ -22,39 +18,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'editer' => 'Editar',
        'editer_@type@_@id@' => 'Editar @type@ @id@ en entièr',
        'editer_tout' => 'Tot editar',
-       'effets' => 'Effets', # NEW
-       'explication_exec_autorise' => 'Pages autorisées à la modification\r
-               (?exec=...) : (, pour séparer les exec - * pour toutes).', # NEW
-       'explication_introduction_article' => 'L\'introduction d\'un article affiche le descriptif de l\'article, sinon affiche ses 600 premiers caractères (chapeau puis texte).', # NEW
-       'explication_reduire_logo' => 'Réduire le logo s\'il dépasse\r
-               la taille maximale indiquée en pixels. Exemple : 100. (0 = jamais)', # NEW
-
-       // L
-       'label_activer_barre_typo' => 'Activer la barre typographique dans les crayons ?', # NEW
-       'label_activer_crayons_prive' => 'Activer crayons pour la partie privée.', # NEW
-       'label_barre_typo' => 'Barre typographique', # NEW
-       'label_clickhide' => 'Un clic en-dehors masque les crayons', # NEW
-       'label_effets' => 'Choix des effets', # NEW
-       'label_espaceprive' => 'Crayons dans le privé ?', # NEW
-       'label_exec_autorise' => 'Pages autorisées', # NEW
-       'label_filet' => 'Filet', # NEW
-       'label_message' => 'Obtenir un message', # NEW
-       'label_msg_abandon' => 'Sur abandon', # NEW
-       'label_msg_no_change' => 'Si pas de changement', # NEW
-       'label_reduire_logo' => 'Réduire les logos', # NEW
-       'label_yellow_fade' => 'Fade', # NEW
-       'legend_controleur_hyperlien' => 'Hyperlien', # NEW
-       'legend_controleur_logo' => 'Choisir un logo :', # NEW
-       'legend_controleur_logo_remplacer' => 'Remplacer ce logo', # NEW
-       'legend_controleur_qui' => 'Qui ?', # NEW
-       'legend_controleur_vignette' => 'Choisir une vignette :', # NEW
-       'legend_controleur_vignette_remplacer' => 'Remplacer cette vignette', # NEW
-       'legend_editer_prive' => 'Éditer l\'espace privé (expérimental)', # NEW
-       'legend_introduction_article' => 'Texte introductif de l\'article', # NEW
 
        // M
-       'message_image_obligatoire' => 'Il faut choisir une image', # NEW
-       'messages' => 'Messages', # NEW
        'modifie_par_ailleurs' => 'Modificat endacòm mai',
 
        // N
@@ -69,15 +34,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'sauvegarder' => 'Registrar las modificacions ?',
        'svp_copier_coller' => 'Desolats, copiatz/empegatz vòstres cambiaments e tornatz començar',
 
-       // T
-       'titre_config_crayons' => 'Configurer les crayons', # NEW
-       'titre_crayons' => 'Crayons', # NEW
-
-       // U
-       'update_impossible' => 'La mise à jour a échoué.', # NEW
-
        // V
-       'veuillez_patienter' => 'Mercés d\'esperar...'
+       'veuillez_patienter' => 'Mercés desperar...'
 );
 
 ?>
index 2518073..010cfed 100644 (file)
@@ -1,80 +1,42 @@
 <?php
 // This is a SPIP language file  --  Ceci est un fichier langue de SPIP
-// extrait automatiquement de http://www.spip.net/trad-lang/
+// extrait automatiquement de http://trad.spip.net/tradlang_module/crayons?lang_cible=pt_br
 // ** ne pas modifier le fichier **
 
-if (!defined("_ECRIRE_INC_VERSION")) return;
+if (!defined('_ECRIRE_INC_VERSION')) return;
 
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // A
-       'activation_barre_impossible' => 'Un autre plugin interdit l\'usage du porte-plume dans l\'espace public.', # NEW
        'annuler' => 'Cancelar',
 
-       // B
-       'bouton_supprimer' => 'Supprimer', # NEW
-
        // D
-       'deja_modifie' => 'J&aacute; alterado',
+       'deja_modifie' => 'Já alterado',
        'donnees_mal_formatees' => 'Dados mal formatados',
 
        // E
        'editer' => 'Editar',
        'editer_@type@_@id@' => 'Editar @type@ @id@ completamente',
        'editer_tout' => 'Editar tudo',
-       'effets' => 'Effets', # NEW
-       'explication_exec_autorise' => 'Pages autoris&eacute;es &agrave; la modification
-               (?exec=...) : (, pour s&eacute;parer les exec).', # NEW
-       'explication_introduction_article' => 'L\'introduction d\'un article affiche le descriptif de l\'article, sinon affiche ses 600 premiers caract&egrave;res (chapeau puis texte).', # NEW
-       'explication_reduire_logo' => 'R&#233;duire le logo s\'il d&#233;passe
-               la taille maximale indiquee en pixels. Exemple : 100. (0 = jamais)', # NEW
-
-       // L
-       'label_activer_barre_typo' => 'Activer la barre typographique dans les crayons ?', # NEW
-       'label_activer_crayons_prive' => 'Activer crayons pour la partie priv&eacute;e.', # NEW
-       'label_barre_typo' => 'Barre typographique', # NEW
-       'label_clickhide' => 'Un clic en-dehors masque les crayons', # NEW
-       'label_effets' => 'Choix des effets', # NEW
-       'label_espaceprive' => 'Crayons dans le priv&eacute; ?', # NEW
-       'label_exec_autorise' => 'Pages autoris&eacute;es', # NEW
-       'label_filet' => 'Filet', # NEW
-       'label_message' => 'Obtenir un message', # NEW
-       'label_msg_abandon' => 'Sur abandon', # NEW
-       'label_msg_no_change' => 'Si pas de changement', # NEW
-       'label_reduire_logo' => 'R&eacute;duire les logos', # NEW
-       'label_yellow_fade' => 'Fade', # NEW
-       'legend_controleur_hyperlien' => 'Hyperlien', # NEW
-       'legend_controleur_logo' => 'Choisir un logo&nbsp;:', # NEW
-       'legend_controleur_logo_remplacer' => 'Remplacer ce logo', # NEW
-       'legend_controleur_qui' => 'Qui ?', # NEW
-       'legend_controleur_vignette' => 'Choisir une vignette&nbsp;:', # NEW
-       'legend_controleur_vignette_remplacer' => 'Remplacer cette vignette', # NEW
-       'legend_editer_prive' => '&Eacute;diter l\'espace priv&eacute; (exp&eacute;rimental)', # NEW
-       'legend_introduction_article' => 'Texte introductif de l\'article', # NEW
+       'explication_exec_autorise' => 'Pages autorisées à la modification
+               (?exec=...) : (, pour séparer les exec).', # MODIF
+       'explication_reduire_logo' => 'Réduire le logo s’il dépasse
+               la taille maximale indiquee en pixels. Exemple : 100. (0 = jamais)', # MODIF
 
        // M
-       'message_image_obligatoire' => 'Il faut choisir une image', # NEW
-       'messages' => 'Messages', # NEW
        'modifie_par_ailleurs' => 'Alterado em outro lugar',
 
        // N
-       'non_autorise' => 'N&atilde;o autorizado',
-       'non_implemente' => 'N&atilde;o implementado',
+       'non_autorise' => 'Não autorizado',
+       'non_implemente' => 'Não implementado',
 
        // P
-       'pas_de_modification' => 'Sem modifica&ccedil;&atilde;o',
+       'pas_de_modification' => 'Sem modificação',
        'pas_de_valeur' => 'Sem valor',
 
        // S
-       'sauvegarder' => 'Fazer c&oacute;pia de seguran&ccedil;a das altera&ccedil;&otilde;es?',
-       'svp_copier_coller' => 'Desculpe, copie/cole as suas altera&ccedil;&otilde;es e recomece',
-
-       // T
-       'titre_config_crayons' => 'Configurer les crayons', # NEW
-       'titre_crayons' => 'Crayons', # NEW
-
-       // U
-       'update_impossible' => 'La mise &agrave; jour a &eacute;chou&eacute;.', # NEW
+       'sauvegarder' => 'Fazer cópia de segurança das alterações?',
+       'svp_copier_coller' => 'Desculpe, copie/cole as suas alterações e recomece',
 
        // V
        'veuillez_patienter' => 'Aguarde, por favor...'
index 857c8e6..0cfdfd5 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 // This is a SPIP language file  --  Ceci est un fichier langue de SPIP
-// extrait automatiquement de http://www.spip.net/trad-lang/
+// extrait automatiquement de http://trad.spip.net/tradlang_module/crayons?lang_cible=ro
 // ** ne pas modifier le fichier **
 
 if (!defined('_ECRIRE_INC_VERSION')) return;
@@ -8,12 +8,8 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // A
-       'activation_barre_impossible' => 'Un autre plugin interdit l\'usage du porte-plume dans l\'espace public.', # NEW
        'annuler' => 'Anulati',
 
-       // B
-       'bouton_supprimer' => 'Supprimer', # NEW
-
        // D
        'deja_modifie' => 'Deja modificat',
        'donnees_mal_formatees' => 'Date rau formatate',
@@ -22,39 +18,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'editer' => 'Editati',
        'editer_@type@_@id@' => 'Editati @type@ @id@ in intregime',
        'editer_tout' => 'Editati totul',
-       'effets' => 'Effets', # NEW
-       'explication_exec_autorise' => 'Pages autorisées à la modification\r
-               (?exec=...) : (, pour séparer les exec - * pour toutes).', # NEW
-       'explication_introduction_article' => 'L\'introduction d\'un article affiche le descriptif de l\'article, sinon affiche ses 600 premiers caractères (chapeau puis texte).', # NEW
-       'explication_reduire_logo' => 'Réduire le logo s\'il dépasse\r
-               la taille maximale indiquée en pixels. Exemple : 100. (0 = jamais)', # NEW
-
-       // L
-       'label_activer_barre_typo' => 'Activer la barre typographique dans les crayons ?', # NEW
-       'label_activer_crayons_prive' => 'Activer crayons pour la partie privée.', # NEW
-       'label_barre_typo' => 'Barre typographique', # NEW
-       'label_clickhide' => 'Un clic en-dehors masque les crayons', # NEW
-       'label_effets' => 'Choix des effets', # NEW
-       'label_espaceprive' => 'Crayons dans le privé ?', # NEW
-       'label_exec_autorise' => 'Pages autorisées', # NEW
-       'label_filet' => 'Filet', # NEW
-       'label_message' => 'Obtenir un message', # NEW
-       'label_msg_abandon' => 'Sur abandon', # NEW
-       'label_msg_no_change' => 'Si pas de changement', # NEW
-       'label_reduire_logo' => 'Réduire les logos', # NEW
-       'label_yellow_fade' => 'Fade', # NEW
-       'legend_controleur_hyperlien' => 'Hyperlien', # NEW
-       'legend_controleur_logo' => 'Choisir un logo :', # NEW
-       'legend_controleur_logo_remplacer' => 'Remplacer ce logo', # NEW
-       'legend_controleur_qui' => 'Qui ?', # NEW
-       'legend_controleur_vignette' => 'Choisir une vignette :', # NEW
-       'legend_controleur_vignette_remplacer' => 'Remplacer cette vignette', # NEW
-       'legend_editer_prive' => 'Éditer l\'espace privé (expérimental)', # NEW
-       'legend_introduction_article' => 'Texte introductif de l\'article', # NEW
 
        // M
-       'message_image_obligatoire' => 'Il faut choisir une image', # NEW
-       'messages' => 'Messages', # NEW
        'modifie_par_ailleurs' => 'Modificat de altfel',
 
        // N
@@ -69,13 +34,6 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'sauvegarder' => 'Salvati modificarile ?',
        'svp_copier_coller' => 'Ne pare rau, copiati/lipiti schimbarile dvs. si reincepeti',
 
-       // T
-       'titre_config_crayons' => 'Configurer les crayons', # NEW
-       'titre_crayons' => 'Crayons', # NEW
-
-       // U
-       'update_impossible' => 'La mise à jour a échoué.', # NEW
-
        // V
        'veuillez_patienter' => 'Va rugam sa asteptati'
 );
index e710dcf..685e6f1 100644 (file)
@@ -23,10 +23,10 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'editer_@type@_@id@' => 'Редактировать @type@ @id@ полностью',
        'editer_tout' => 'Редактировать полностью',
        'effets' => 'Эффекты',
-       'explication_exec_autorise' => 'Страницы, на которых можно редактировать информацию   (?exec=...) : (, разделитель между страницами. * для всех страниц).',
-       'explication_introduction_article' => 'Вводная статьи выводит информацию из поля "введение". Если оно пустое, товыводится первые 600 символов текста статьи.',
+       'explication_exec_autorise' => 'Страницы, на которых можно редактировать информацию   (?exec=...) : (, разделитель между страницами. * для всех страниц).', # MODIF
+       'explication_introduction_article' => 'Вводная статьи выводит информацию из поля "введение". Если оно пустое, товыводится первые 600 символов текста статьи.', # MODIF
        'explication_reduire_logo' => 'Уменьшать логотипы если их размер превышает 
-  максимальный размер (в пикселях) Например: 100. (0 = никогда)',
+  максимальный размер (в пикселях) Например: 100. (0 = никогда)', # MODIF
 
        // I
        'info_experimental' => 'Экспериментальная опция',
index 62d801d..67ac8e7 100644 (file)
@@ -8,6 +8,7 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // A
+       'absence_cle_primaire' => 'Bez primárneho kľúča!',
        'activation_barre_impossible' => 'Iný zásuvný modul bráni použitiu porte-plume na verejne prístupnej stránke.',
        'annuler' => 'Zrušiť',
 
@@ -24,10 +25,10 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'editer_tout' => 'Upravovať ako celok',
        'effets' => 'Efekty',
        'explication_exec_autorise' => 'Stránky, na ktorých je povolené vykonávať zmeny
-  (?exec=...): (, na oddelenie viacerých stránok, * pre všetky).',
-       'explication_introduction_article' => 'Ako úvod článku sa zobrazí popis článku, ak nejaký existuje, v opačnom prípade sa zobrazí prvých 600 znakov (úvodného odseku a textu).',
+  (?exec=...): (, na oddelenie viacerých stránok, exec -* pre všetky).',
+       'explication_introduction_article' => 'Úvod článku zobrazí opis článku, ak nejaký existuje, inak sa zobrazí prvých 600 znakov (perex, potom text).',
        'explication_reduire_logo' => 'Zmenšiť veľkosť loga, ak presahuje
-  maximálnu veľkosť (v pixeloch). Príklad: 100 (0 = nikdy).',
+  maximálnu veľkosť zadanú v pixeloch. Príklad: 100. (0 = nezmenšovať).',
 
        // I
        'info_experimental' => 'Experimentálny',
@@ -47,6 +48,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'label_reduire_logo' => 'Zmenšiť logá',
        'label_upload_document' => 'Povoliť pridávanie súborov pomocou farbičky article.texte',
        'label_yellow_fade' => 'Tieň',
+       'legend_controleur_fichier_remplacer' => 'Premiestniť tento dokument "@extension@"',
        'legend_controleur_hyperlien' => 'Hypertextový odkaz',
        'legend_controleur_logo' => 'Vyberte logo:',
        'legend_controleur_logo_remplacer' => 'Nahradiť toto logo',
index b2cb909..3e39ca4 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 // This is a SPIP language file  --  Ceci est un fichier langue de SPIP
-// extrait automatiquement de http://www.spip.net/trad-lang/
+// extrait automatiquement de http://trad.spip.net/tradlang_module/crayons?lang_cible=sv
 // ** ne pas modifier le fichier **
 
 if (!defined('_ECRIRE_INC_VERSION')) return;
@@ -8,12 +8,8 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // A
-       'activation_barre_impossible' => 'Un autre plugin interdit l\'usage du porte-plume dans l\'espace public.', # NEW
        'annuler' => 'Ångra',
 
-       // B
-       'bouton_supprimer' => 'Supprimer', # NEW
-
        // D
        'deja_modifie' => 'Redan ändrat',
        'donnees_mal_formatees' => 'Felaktigt format på data',
@@ -22,39 +18,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'editer' => 'Editera',
        'editer_@type@_@id@' => 'Editera hela @type@ @id@',
        'editer_tout' => 'Editera allt',
-       'effets' => 'Effets', # NEW
-       'explication_exec_autorise' => 'Pages autorisées à la modification\r
-               (?exec=...) : (, pour séparer les exec - * pour toutes).', # NEW
-       'explication_introduction_article' => 'L\'introduction d\'un article affiche le descriptif de l\'article, sinon affiche ses 600 premiers caractères (chapeau puis texte).', # NEW
-       'explication_reduire_logo' => 'Réduire le logo s\'il dépasse\r
-               la taille maximale indiquée en pixels. Exemple : 100. (0 = jamais)', # NEW
-
-       // L
-       'label_activer_barre_typo' => 'Activer la barre typographique dans les crayons ?', # NEW
-       'label_activer_crayons_prive' => 'Activer crayons pour la partie privée.', # NEW
-       'label_barre_typo' => 'Barre typographique', # NEW
-       'label_clickhide' => 'Un clic en-dehors masque les crayons', # NEW
-       'label_effets' => 'Choix des effets', # NEW
-       'label_espaceprive' => 'Crayons dans le privé ?', # NEW
-       'label_exec_autorise' => 'Pages autorisées', # NEW
-       'label_filet' => 'Filet', # NEW
-       'label_message' => 'Obtenir un message', # NEW
-       'label_msg_abandon' => 'Sur abandon', # NEW
-       'label_msg_no_change' => 'Si pas de changement', # NEW
-       'label_reduire_logo' => 'Réduire les logos', # NEW
-       'label_yellow_fade' => 'Fade', # NEW
-       'legend_controleur_hyperlien' => 'Hyperlien', # NEW
-       'legend_controleur_logo' => 'Choisir un logo :', # NEW
-       'legend_controleur_logo_remplacer' => 'Remplacer ce logo', # NEW
-       'legend_controleur_qui' => 'Qui ?', # NEW
-       'legend_controleur_vignette' => 'Choisir une vignette :', # NEW
-       'legend_controleur_vignette_remplacer' => 'Remplacer cette vignette', # NEW
-       'legend_editer_prive' => 'Éditer l\'espace privé (expérimental)', # NEW
-       'legend_introduction_article' => 'Texte introductif de l\'article', # NEW
 
        // M
-       'message_image_obligatoire' => 'Il faut choisir une image', # NEW
-       'messages' => 'Messages', # NEW
        'modifie_par_ailleurs' => 'Någon annan har förändrat artikeln sedan du öppnade den',
 
        // N
@@ -69,13 +34,6 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'sauvegarder' => 'Spara förändringarna?',
        'svp_copier_coller' => 'Ledsen, kopiera/klistra in dina förändringar och försök igen',
 
-       // T
-       'titre_config_crayons' => 'Configurer les crayons', # NEW
-       'titre_crayons' => 'Crayons', # NEW
-
-       // U
-       'update_impossible' => 'La mise à jour a échoué.', # NEW
-
        // V
        'veuillez_patienter' => 'Söker ...'
 );
index ec8270f..8ebba7b 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 // This is a SPIP language file  --  Ceci est un fichier langue de SPIP
-// extrait automatiquement de http://www.spip.net/trad-lang/
+// extrait automatiquement de http://trad.spip.net/tradlang_module/crayons?lang_cible=tr
 // ** ne pas modifier le fichier **
 
 if (!defined('_ECRIRE_INC_VERSION')) return;
@@ -8,12 +8,8 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // A
-       'activation_barre_impossible' => 'Un autre plugin interdit l\'usage du porte-plume dans l\'espace public.', # NEW
        'annuler' => 'İptal et',
 
-       // B
-       'bouton_supprimer' => 'Supprimer', # NEW
-
        // D
        'deja_modifie' => 'Zaten değiştirilmiş',
        'donnees_mal_formatees' => 'Kötü formatlanmış veriler',
@@ -22,39 +18,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'editer' => 'Düzenle',
        'editer_@type@_@id@' => '@type@ @id@ tümünü düzenle',
        'editer_tout' => 'Hepsini düzenle',
-       'effets' => 'Effets', # NEW
-       'explication_exec_autorise' => 'Pages autorisées à la modification\r
-               (?exec=...) : (, pour séparer les exec - * pour toutes).', # NEW
-       'explication_introduction_article' => 'L\'introduction d\'un article affiche le descriptif de l\'article, sinon affiche ses 600 premiers caractères (chapeau puis texte).', # NEW
-       'explication_reduire_logo' => 'Réduire le logo s\'il dépasse\r
-               la taille maximale indiquée en pixels. Exemple : 100. (0 = jamais)', # NEW
-
-       // L
-       'label_activer_barre_typo' => 'Activer la barre typographique dans les crayons ?', # NEW
-       'label_activer_crayons_prive' => 'Activer crayons pour la partie privée.', # NEW
-       'label_barre_typo' => 'Barre typographique', # NEW
-       'label_clickhide' => 'Un clic en-dehors masque les crayons', # NEW
-       'label_effets' => 'Choix des effets', # NEW
-       'label_espaceprive' => 'Crayons dans le privé ?', # NEW
-       'label_exec_autorise' => 'Pages autorisées', # NEW
-       'label_filet' => 'Filet', # NEW
-       'label_message' => 'Obtenir un message', # NEW
-       'label_msg_abandon' => 'Sur abandon', # NEW
-       'label_msg_no_change' => 'Si pas de changement', # NEW
-       'label_reduire_logo' => 'Réduire les logos', # NEW
-       'label_yellow_fade' => 'Fade', # NEW
-       'legend_controleur_hyperlien' => 'Hyperlien', # NEW
-       'legend_controleur_logo' => 'Choisir un logo :', # NEW
-       'legend_controleur_logo_remplacer' => 'Remplacer ce logo', # NEW
-       'legend_controleur_qui' => 'Qui ?', # NEW
-       'legend_controleur_vignette' => 'Choisir une vignette :', # NEW
-       'legend_controleur_vignette_remplacer' => 'Remplacer cette vignette', # NEW
-       'legend_editer_prive' => 'Éditer l\'espace privé (expérimental)', # NEW
-       'legend_introduction_article' => 'Texte introductif de l\'article', # NEW
 
        // M
-       'message_image_obligatoire' => 'Il faut choisir une image', # NEW
-       'messages' => 'Messages', # NEW
        'modifie_par_ailleurs' => 'Başkaları tarafından değiştirilmiş',
 
        // N
@@ -69,13 +34,6 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'sauvegarder' => 'Değişiklikler kaydedilsin mi ?',
        'svp_copier_coller' => 'Üzgünüm, değişikliklerinizi kesin/yapıştırın ve tekrar başlayın',
 
-       // T
-       'titre_config_crayons' => 'Configurer les crayons', # NEW
-       'titre_crayons' => 'Crayons', # NEW
-
-       // U
-       'update_impossible' => 'La mise à jour a échoué.', # NEW
-
        // V
        'veuillez_patienter' => 'Lütfen sabrediniz...'
 );
index d9e3100..fb81ae5 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 // This is a SPIP language file  --  Ceci est un fichier langue de SPIP
-// extrait automatiquement de http://www.spip.net/trad-lang/
+// extrait automatiquement de http://trad.spip.net/tradlang_module/crayons?lang_cible=tw
 // ** ne pas modifier le fichier **
 
 if (!defined('_ECRIRE_INC_VERSION')) return;
@@ -8,12 +8,8 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // A
-       'activation_barre_impossible' => 'Un autre plugin interdit l\'usage du porte-plume dans l\'espace public.', # NEW
        'annuler' => '取消',
 
-       // B
-       'bouton_supprimer' => 'Supprimer', # NEW
-
        // D
        'deja_modifie' => '已經修改過',
        'donnees_mal_formatees' => '資料格式不正確',
@@ -22,39 +18,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'editer' => '編輯',
        'editer_@type@_@id@' => '完整編輯 @type@ @id@',
        'editer_tout' => '編輯全部',
-       'effets' => 'Effets', # NEW
-       'explication_exec_autorise' => 'Pages autorisées à la modification\r
-               (?exec=...) : (, pour séparer les exec - * pour toutes).', # NEW
-       'explication_introduction_article' => 'L\'introduction d\'un article affiche le descriptif de l\'article, sinon affiche ses 600 premiers caractères (chapeau puis texte).', # NEW
-       'explication_reduire_logo' => 'Réduire le logo s\'il dépasse\r
-               la taille maximale indiquée en pixels. Exemple : 100. (0 = jamais)', # NEW
-
-       // L
-       'label_activer_barre_typo' => 'Activer la barre typographique dans les crayons ?', # NEW
-       'label_activer_crayons_prive' => 'Activer crayons pour la partie privée.', # NEW
-       'label_barre_typo' => 'Barre typographique', # NEW
-       'label_clickhide' => 'Un clic en-dehors masque les crayons', # NEW
-       'label_effets' => 'Choix des effets', # NEW
-       'label_espaceprive' => 'Crayons dans le privé ?', # NEW
-       'label_exec_autorise' => 'Pages autorisées', # NEW
-       'label_filet' => 'Filet', # NEW
-       'label_message' => 'Obtenir un message', # NEW
-       'label_msg_abandon' => 'Sur abandon', # NEW
-       'label_msg_no_change' => 'Si pas de changement', # NEW
-       'label_reduire_logo' => 'Réduire les logos', # NEW
-       'label_yellow_fade' => 'Fade', # NEW
-       'legend_controleur_hyperlien' => 'Hyperlien', # NEW
-       'legend_controleur_logo' => 'Choisir un logo :', # NEW
-       'legend_controleur_logo_remplacer' => 'Remplacer ce logo', # NEW
-       'legend_controleur_qui' => 'Qui ?', # NEW
-       'legend_controleur_vignette' => 'Choisir une vignette :', # NEW
-       'legend_controleur_vignette_remplacer' => 'Remplacer cette vignette', # NEW
-       'legend_editer_prive' => 'Éditer l\'espace privé (expérimental)', # NEW
-       'legend_introduction_article' => 'Texte introductif de l\'article', # NEW
 
        // M
-       'message_image_obligatoire' => 'Il faut choisir une image', # NEW
-       'messages' => 'Messages', # NEW
        'modifie_par_ailleurs' => '已經被修改過',
 
        // N
@@ -69,13 +34,6 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'sauvegarder' => '儲存修改過的資料 ?',
        'svp_copier_coller' => '對不起,我們建議您複製/貼上您的修改',
 
-       // T
-       'titre_config_crayons' => 'Configurer les crayons', # NEW
-       'titre_crayons' => 'Crayons', # NEW
-
-       // U
-       'update_impossible' => 'La mise à jour a échoué.', # NEW
-
        // V
        'veuillez_patienter' => '請稍後...'
 );
index 8659fa7..c82b8f6 100644 (file)
@@ -8,12 +8,8 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // A
-       'activation_barre_impossible' => 'Un autre plugin interdit l\'usage du porte-plume dans l\'espace public.', # NEW
        'annuler' => '取消', # MODIF
 
-       // B
-       'bouton_supprimer' => 'Supprimer', # NEW
-
        // D
        'deja_modifie' => '已经修改', # MODIF
        'donnees_mal_formatees' => '数据格式化错误', # MODIF
@@ -23,14 +19,6 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'editer_@type@_@id@' => '编辑@type@@id@所有内容', # MODIF
        'editer_tout' => '编辑所有内容', # MODIF
        'effets' => 'Effets', # NEW
-       'explication_exec_autorise' => 'Pages autorisées à la modification
-               (?exec=...) : (, pour séparer les exec).', # NEW
-       'explication_introduction_article' => 'L\'introduction d\'un article affiche le descriptif de l\'article, sinon affiche ses 600 premiers caractères (chapeau puis texte).', # NEW
-       'explication_reduire_logo' => 'Réduire le logo s\'il dépasse
-               la taille maximale indiquee en pixels. Exemple : 100. (0 = jamais)', # NEW
-
-       // I
-       'info_experimental' => 'Expérimental', # NEW
 
        // L
        'label_activer_barre_typo' => 'Activer la barre typographique dans les crayons ?', # NEW
@@ -45,20 +33,10 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'label_msg_abandon' => 'Sur abandon', # NEW
        'label_msg_no_change' => 'Si pas de changement', # NEW
        'label_reduire_logo' => 'Réduire les logos', # NEW
-       'label_upload_document' => 'Autoriser l\'ajout de documents par glisser/déposer sur le crayon article.texte', # NEW
        'label_yellow_fade' => 'Fade', # NEW
-       'legend_controleur_hyperlien' => 'Hyperlien', # NEW
-       'legend_controleur_logo' => 'Choisir un logo :', # NEW
-       'legend_controleur_logo_remplacer' => 'Remplacer ce logo', # NEW
-       'legend_controleur_qui' => 'Qui ?', # NEW
-       'legend_controleur_vignette' => 'Choisir une vignette :', # NEW
-       'legend_controleur_vignette_remplacer' => 'Remplacer cette vignette', # NEW
-       'legend_documents' => 'Upload de documents', # NEW
-       'legend_editer_prive' => 'Éditer l\'espace privé (expérimental)',
-       'legend_introduction_article' => 'Texte introductif de l\'article', # NEW
+       'legend_editer_prive' => 'Éditer l’espace privé (expérimental)',
 
        // M
-       'message_image_obligatoire' => 'Il faut choisir une image', # NEW
        'messages' => 'Messages', # NEW
        'modifie_par_ailleurs' => '被别人修改', # MODIF
 
@@ -76,7 +54,6 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // T
        'titre_config_crayons' => 'Configurer les crayons', # NEW
-       'titre_crayons' => 'Crayons', # NEW
 
        // U
        'update_impossible' => 'La mise à jour a échoué.', # NEW
index d9e3100..1c510b6 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 // This is a SPIP language file  --  Ceci est un fichier langue de SPIP
-// extrait automatiquement de http://www.spip.net/trad-lang/
+// extrait automatiquement de http://trad.spip.net/tradlang_module/crayons?lang_cible=zh_tw
 // ** ne pas modifier le fichier **
 
 if (!defined('_ECRIRE_INC_VERSION')) return;
@@ -8,12 +8,8 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // A
-       'activation_barre_impossible' => 'Un autre plugin interdit l\'usage du porte-plume dans l\'espace public.', # NEW
        'annuler' => '取消',
 
-       // B
-       'bouton_supprimer' => 'Supprimer', # NEW
-
        // D
        'deja_modifie' => '已經修改過',
        'donnees_mal_formatees' => '資料格式不正確',
@@ -22,39 +18,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'editer' => '編輯',
        'editer_@type@_@id@' => '完整編輯 @type@ @id@',
        'editer_tout' => '編輯全部',
-       'effets' => 'Effets', # NEW
-       'explication_exec_autorise' => 'Pages autorisées à la modification\r
-               (?exec=...) : (, pour séparer les exec - * pour toutes).', # NEW
-       'explication_introduction_article' => 'L\'introduction d\'un article affiche le descriptif de l\'article, sinon affiche ses 600 premiers caractères (chapeau puis texte).', # NEW
-       'explication_reduire_logo' => 'Réduire le logo s\'il dépasse\r
-               la taille maximale indiquée en pixels. Exemple : 100. (0 = jamais)', # NEW
-
-       // L
-       'label_activer_barre_typo' => 'Activer la barre typographique dans les crayons ?', # NEW
-       'label_activer_crayons_prive' => 'Activer crayons pour la partie privée.', # NEW
-       'label_barre_typo' => 'Barre typographique', # NEW
-       'label_clickhide' => 'Un clic en-dehors masque les crayons', # NEW
-       'label_effets' => 'Choix des effets', # NEW
-       'label_espaceprive' => 'Crayons dans le privé ?', # NEW
-       'label_exec_autorise' => 'Pages autorisées', # NEW
-       'label_filet' => 'Filet', # NEW
-       'label_message' => 'Obtenir un message', # NEW
-       'label_msg_abandon' => 'Sur abandon', # NEW
-       'label_msg_no_change' => 'Si pas de changement', # NEW
-       'label_reduire_logo' => 'Réduire les logos', # NEW
-       'label_yellow_fade' => 'Fade', # NEW
-       'legend_controleur_hyperlien' => 'Hyperlien', # NEW
-       'legend_controleur_logo' => 'Choisir un logo :', # NEW
-       'legend_controleur_logo_remplacer' => 'Remplacer ce logo', # NEW
-       'legend_controleur_qui' => 'Qui ?', # NEW
-       'legend_controleur_vignette' => 'Choisir une vignette :', # NEW
-       'legend_controleur_vignette_remplacer' => 'Remplacer cette vignette', # NEW
-       'legend_editer_prive' => 'Éditer l\'espace privé (expérimental)', # NEW
-       'legend_introduction_article' => 'Texte introductif de l\'article', # NEW
 
        // M
-       'message_image_obligatoire' => 'Il faut choisir une image', # NEW
-       'messages' => 'Messages', # NEW
        'modifie_par_ailleurs' => '已經被修改過',
 
        // N
@@ -69,13 +34,6 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'sauvegarder' => '儲存修改過的資料 ?',
        'svp_copier_coller' => '對不起,我們建議您複製/貼上您的修改',
 
-       // T
-       'titre_config_crayons' => 'Configurer les crayons', # NEW
-       'titre_crayons' => 'Crayons', # NEW
-
-       // U
-       'update_impossible' => 'La mise à jour a échoué.', # NEW
-
        // V
        'veuillez_patienter' => '請稍後...'
 );
index 4398114..0357c88 100644 (file)
@@ -1,19 +1,28 @@
 <traduction module="paquet-crayons" gestionnaire="salvatore" url="http://trad.spip.net" source="svn://zone.spip.org/spip-zone/_plugins_/crayons/lang/" reference="fr">
-       <langue code="ar" />
-       <langue code="de" />
-       <langue code="en" />
-       <langue code="es" url="http://trad.spip.net/tradlang_module/paquet-crayons?lang_cible=es">
+       <langue code="ar" url="http://trad.spip.net/tradlang_module/paquet-crayons?lang_cible=ar" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+       </langue>
+       <langue code="de" url="http://trad.spip.net/tradlang_module/paquet-crayons?lang_cible=de" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+       </langue>
+       <langue code="en" url="http://trad.spip.net/tradlang_module/paquet-crayons?lang_cible=en" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+       </langue>
+       <langue code="es" url="http://trad.spip.net/tradlang_module/paquet-crayons?lang_cible=es" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="dani" lien="http://trad.spip.net/auteur/dani" />
        </langue>
-       <langue code="fr" />
-       <langue code="it" />
-       <langue code="nl" url="http://trad.spip.net/tradlang_module/paquet-crayons?lang_cible=nl">
+       <langue code="fr" url="http://trad.spip.net/tradlang_module/paquet-crayons?lang_cible=fr" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+       </langue>
+       <langue code="fr_tu" url="http://trad.spip.net/tradlang_module/paquet-crayons?lang_cible=fr_tu" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Cerf" lien="http://trad.spip.net/auteur/cerf" />
+       </langue>
+       <langue code="it" url="http://trad.spip.net/tradlang_module/paquet-crayons?lang_cible=it" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+       </langue>
+       <langue code="nl" url="http://trad.spip.net/tradlang_module/paquet-crayons?lang_cible=nl" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Hanjo" lien="http://trad.spip.net/auteur/hanjo" />
                <traducteur nom="Suske" lien="http://trad.spip.net/auteur/suske" />
        </langue>
-       <langue code="ru" url="http://trad.spip.net/tradlang_module/paquet-crayons?lang_cible=ru">
+       <langue code="ru" url="http://trad.spip.net/tradlang_module/paquet-crayons?lang_cible=ru" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="Serge Markitanenko" lien="http://trad.spip.net/auteur/serge-markitanenko" />
        </langue>
-       <langue code="sk" url="http://trad.spip.net/tradlang_module/paquet-crayons?lang_cible=sk">
+       <langue code="sk" url="http://trad.spip.net/tradlang_module/paquet-crayons?lang_cible=sk" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="jaro" lien="http://trad.spip.net/auteur/jaro" />
        </langue>
 </traduction>
diff --git a/www/plugins/crayons/lang/paquet-crayons_fr_tu.php b/www/plugins/crayons/lang/paquet-crayons_fr_tu.php
new file mode 100644 (file)
index 0000000..e011659
--- /dev/null
@@ -0,0 +1,16 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/paquet-crayons?lang_cible=fr_tu
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // C
+       'crayons_description' => 'Édition rapide depuis les pages publiques du site.',
+       'crayons_nom' => 'Crayons',
+       'crayons_slogan' => 'Édition rapide depuis les pages publiques du site'
+);
+
+?>
index 52bac09..d31690d 100644 (file)
@@ -8,9 +8,9 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // C
-       'crayons_description' => 'Snel bewerken van de publieke pagina\'s van de site.',
-       'crayons_nom' => 'Potloden',
-       'crayons_slogan' => 'Snel bewerken van de publieke pagina\'s van de site.'
+       'crayons_description' => 'Snelle aanpassing vanaf de publieke pagina’s van de site.',
+       'crayons_nom' => 'Krijtjes',
+       'crayons_slogan' => 'Snel bewerken vanaf de publieke pagina’s van de site.'
 );
 
 ?>
index 2130b72..06d97de 100644 (file)
@@ -1,4 +1,4 @@
 #ENV{erreur}
-<BOUCLE_d(DOCUMENTS){tous}{id_document}>
+<BOUCLE_d(DOCUMENTS){id_document}{tout}>
 &lt;doc#ID_DOCUMENT&gt; #TITRE - [(#LOGO_DOCUMENT|liens_absolus)]
 </BOUCLE_d>
index df6437f..d3725ba 100644 (file)
@@ -1,11 +1,11 @@
 <paquet\r
        prefix="crayons"\r
        categorie="edition"\r
-       version="1.16.1"\r
+       version="1.20.0"\r
        etat="stable"\r
-       compatibilite="[1.9.0;*]"\r
+       compatibilite="[1.9.0;3.*.*]"\r
        logo="images/crayon-32.png"\r
-       documentation="http://www.spip-contrib.net/Les-Crayons"\r
+       documentation="http://contrib.spip.net/Les-Crayons"\r
 >\r
        <nom>Crayons</nom>\r
        \r
index 33c1c67..b0a96ae 100644 (file)
@@ -16,7 +16,7 @@
                &#169; 2006-2013 - GNU/GPL\r
        </licence>\r
        <version>\r
-       1.16.1\r
+       1.20.0\r
        </version>\r
        <etat>\r
        stable\r
@@ -34,7 +34,7 @@ _ <code><h1 class="#EDIT{titre} &#1593;&#1604;&#1575;&#1605;&#1575;&#1578; &#157
        [ru]Позволяет редактировать информацию прямо на сайте, не заходя в административную часть.\r
        </multi>\r
        </description>\r
-       <lien>http://www.spip-contrib.net/Les-Crayons</lien>\r
+       <lien>http://contrib.spip.net/Les-Crayons</lien>\r
        <prefix>\r
        Crayons\r
        </prefix>\r
@@ -53,7 +53,7 @@ _ <code><h1 class="#EDIT{titre} &#1593;&#1604;&#1575;&#1605;&#1575;&#1578; &#157
        </pipeline>\r
        <chemin dir='' />\r
        <categorie>edition</categorie>\r
-       <necessite id="SPIP" version="[1.9.0;3.0.0]" />\r
+       <necessite id="SPIP" version="[1.9.0;3.99.99]" />\r
        <!-- utilise id="cfg" version="[1.14.1;]" / -->\r
        <traduire gestionnaire="salvatore" module="crayons" reference="fr" />\r
 </plugin>\r
index 7ffcffa..75eae3d 100644 (file)
@@ -1,10 +1,10 @@
 <svn_revision>
 <text_version>
 Origine: file:///home/svn/repository/spip-zone/_plugins_/crayons
-Revision: 73111
-Dernier commit: 2013-05-31 10:42:21 +0200 
+Revision: 85059
+Dernier commit: 2014-10-08 16:00:22 +0200 
 </text_version>
 <origine>file:///home/svn/repository/spip-zone/_plugins_/crayons</origine>
-<revision>73111</revision>
-<commit>2013-05-31 10:42:21 +0200 </commit>
+<revision>85059</revision>
+<commit>2014-10-08 16:00:22 +0200 </commit>
 </svn_revision>
\ No newline at end of file
index ffa6c8a..fa9e19e 100644 (file)
@@ -1,4 +1,11 @@
 <?php
+/**
+ * Crayons 
+ * plugin for spip 
+ * (c) Fil, toggg 2006-2013
+ * licence GPL
+ *
+ */
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
index 5262113..5cf10fc 100644 (file)
@@ -20,4 +20,4 @@
 })]
 </BOUCLE_a>
 
-[<small>(#NOTES)</small>]
+[<div class="notes">(#NOTES)</div>]
index 163d7f3..4dc25c2 100644 (file)
@@ -4,7 +4,7 @@
 
 ]
 
-<BOUCLE_d(DOCUMENTS){id_document}>
+<BOUCLE_d(DOCUMENTS){id_document}{tout}>
 
 [(#VAL{<img}|concat{#ID_DOCUMENT}|concat{>}|propre)]
 
diff --git a/www/plugins/enluminures_typographiques_v3/lang/enlumtypo.xml b/www/plugins/enluminures_typographiques_v3/lang/enlumtypo.xml
new file mode 100644 (file)
index 0000000..0ee9187
--- /dev/null
@@ -0,0 +1,13 @@
+<traduction module="enlumtypo" gestionnaire="salvatore" url="http://trad.spip.net" source="svn://zone.spip.org/spip-zone/_plugins_/porte_plume_extras/enluminures_typographiques_v3/lang/" reference="fr">
+       <langue code="ar" url="http://trad.spip.net/tradlang_module/enlumtypo?lang_cible=ar" total="27" traduits="26" relire="0" modifs="0" nouveaux="1" pourcent="96.30">
+       </langue>
+       <langue code="en" url="http://trad.spip.net/tradlang_module/enlumtypo?lang_cible=en" total="27" traduits="27" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Hanjo" lien="http://trad.spip.net/auteur/hanjo" />
+       </langue>
+       <langue code="es" url="http://trad.spip.net/tradlang_module/enlumtypo?lang_cible=es" total="27" traduits="14" relire="0" modifs="0" nouveaux="13" pourcent="51.85">
+       </langue>
+       <langue code="fr" url="http://trad.spip.net/tradlang_module/enlumtypo?lang_cible=fr" total="27" traduits="27" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+       </langue>
+       <langue code="it" url="http://trad.spip.net/tradlang_module/enlumtypo?lang_cible=it" total="27" traduits="14" relire="0" modifs="0" nouveaux="13" pourcent="51.85">
+       </langue>
+</traduction>
index a54972a..97137ab 100644 (file)
@@ -1,46 +1,45 @@
-<?php\r
-// This is a SPIP language file  --  Ceci est un fichier langue de SPIP\r
-if (!defined("_ECRIRE_INC_VERSION")) return;\r
-\r
-$GLOBALS[$GLOBALS['idx_lang']] = array(\r
-\r
-// Aide des boutons supplémentaires de la barre typo\r
-'barre_intertitre2' => '{2{&#1593;&#1606;&#1608;&#1575;&#1606; &#1601;&#1602;&#1585;&#1577; &#1605;&#1587;&#1578;&#1608;&#1609; 2}2}',\r
-'barre_intertitre3' => '{3{&#1593;&#1606;&#1608;&#1575;&#1606; &#1601;&#1602;&#1585;&#1577; &#1605;&#1587;&#1578;&#1608;&#1609; 3}3}',\r
-'barre_miseenevidence' => '[*&#1573;&#1576;&#1585;&#1575;&#1586;*]',\r
-'barre_miseenevidence2' => '[**&#1573;&#1576;&#1585;&#1575;&#1586;*] &#1575;&#1604;&#1606;&#1589; (&#1604;&#1608;&#1606; &#1570;&#1582;&#1585;)',\r
-\r
-'barre_exposant' => '&#1578;&#1581;&#1608;&#1610;&#1604; &#1575;&#1604;&#1609;\r
- &lt;sup&gt;&#1606;&#1589; &#1601;&#1608;&#1602;&#1610;&lt;/sup&gt;',\r
\r
- 'barre_indice' => '&#1578;&#1581;&#1608;&#1610;&#1604; &#1575;&#1604;&#1609;\r
-&lt;sub&gt;&#1606;&#1589; &#1587;&#1601;&#1604;&#1610;&lt;/sub&gt;',\r
\r
-'barre_petitescapitales' => '&#1578;&#1581;&#1608;&#1610;&#1604; &#1575;&#1604;&#1609; &lt;sc&gt;&#1581;&#1585;&#1608;&#1601; &#1603;&#1576;&#1610;&#1585;&#1577; &#1605;&#1589;&#1594;&#1585;&#1577;&lt;/sc&gt;',\r
-'barre_centrer' => '[|&#1578;&#1608;&#1587;&#1610;&#1591;|] &#1575;&#1604;&#1601;&#1602;&#1585;&#1577;',\r
-'barre_alignerdroite' => '&#1605;&#1581;&#1575;&#1584;&#1575;&#1577; &#1575;&#1604;&#1609; [/&#1575;&#1604;&#1610;&#1605;&#1610;&#1606;/]',\r
-'barre_alignergauche' => '&#1605;&#1581;&#1575;&#1584;&#1575;&#1577; &#1575;&#1604;&#1609; [!&#1575;&#1604;&#1610;&#1587;&#1575;&#1585;!]',\r
-'barre_encadrer' => '&#1608;&#1590;&#1593; &#1601;&#1610; [(&#1573;&#1591;&#1575;&#1585;)]',\r
-\r
-'barre_barre' => '&lt;del&gt;&#1588;&#1591;&#1576;&lt;/del&gt; &#1575;&#1604;&#1606;&#1589;',\r
-\r
-'barre_avances' => '&#1575;&#1604;&#1575;&#1578;&#1580;&#1575;&#1607;&#1548; &#1575;&#1604;&#1575;&#1578;&#1580;&#1575;&#1607;!',\r
-'barre_boutonsavances' => '&#1573;&#1583;&#1575;&#1585;&#1577; &#1573;&#1590;&#1575;&#1601;&#1610;&#1577; &#1604;&#1604;&#1605;&#1581;&#1575;&#1584;&#1575;&#1577; &#1604;&#1604;&#1575;&#1587;&#1578;&#1582;&#1583;&#1575;&#1605; &#1576;&#1578;&#1593;&#1602;&#1604;',\r
-'barre_tableau' => '&#1573;&#1583;&#1585;&#1575;&#1580; &#1580;&#1583;&#1608;&#1604; &#1571;&#1608; &#1578;&#1593;&#1583;&#1610;&#1604; &#1580;&#1583;&#1608;&#1604; (&#1578;&#1581;&#1583;&#1610;&#1583;&#1607; &#1571;&#1608;&#1604;&#1575;&#1611;)',\r
-\r
-'barre_formatages_speciaux' => '&#1578;&#1606;&#1587;&#1610;&#1602;&#1575;&#1578; &#1582;&#1575;&#1589;&#1577;',\r
-'barre_code' => '&#1578;&#1606;&#1587;&#1610;&#1602; &lt;code&gt;&#1603;&#1585;&#1605;&#1608;&#1586; &#1576;&#1585;&#1605;&#1580;&#1610;&#1577;&lt;/code&gt;',\r
-'barre_cadre' => '&#1608;&#1590;&#1593; &#1601;&#1610; &lt;cadre&gt;&#1573;&#1591;&#1575;&#1585;&lt;/cadre&gt;',\r
-'barre_poesie' => '&lt;poesie&gt;&#1588;&#1593;&#1585;&lt;/poesie&gt;',\r
-\r
-'cfg_puces' => '&#1605;&#1593;&#1575;&#1604;&#1580;&#1577; &#1575;&#1604;&#1604;&#1608;&#1575;&#1574;&#1581;',\r
-'cfg_titraille' => '&#1593;&#1606;&#1575;&#1608;&#1610;&#1606;',\r
-'cfg_insertcss' => '&#1575;&#1583;&#1585;&#1575;&#1580; &#1608;&#1585;&#1602;&#1577; &#1575;&#1606;&#1605;&#1575;&#1591;',\r
-\r
-'tableau_enregistrer' => '&#1581;&#1601;&#1592;',\r
-'tableau_prem_ligne' => '&#1575;&#1604;&#1587;&#1591;&#1585; &#1575;&#1604;&#1571;&#1608;&#1604;',\r
-'tableau_resume' => '&#1575;&#1604;&#1582;&#1604;&#1575;&#1589;&#1577;',\r
-'tableau_titre' => '&#1575;&#1604;&#1593;&#1606;&#1608;&#1575;&#1606;'\r
-\r
-);\r
-?>\r
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/enlumtypo?lang_cible=ar
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // B
+       'barre_alignerdroite' => 'محاذاة الى [/اليمين/]',
+       'barre_alignergauche' => 'محاذاة الى [!اليسار!]',
+       'barre_avances' => 'الاتجاه، الاتجاه!',
+       'barre_barre' => '&lt;del&gt;شطب&lt;/del&gt; النص',
+       'barre_boutonsavances' => 'إدارة إضافية للمحاذاة للاستخدام بتعقل',
+       'barre_cadre' => 'وضع في &lt;cadre&gt;إطار&lt;/cadre&gt;',
+       'barre_centrer' => '[|توسيط|] الفقرة',
+       'barre_code' => 'تنسيق &lt;code&gt;كرموز برمجية&lt;/code&gt;',
+       'barre_encadrer' => 'وضع في [(إطار)]',
+       'barre_exposant' => 'تحويل الى
+ &lt;sup&gt;نص فوقي&lt;/sup&gt;',
+       'barre_formatages_speciaux' => 'تنسيقات خاصة',
+       'barre_indice' => 'تحويل الى
+&lt;sub&gt;نص سفلي&lt;/sub&gt;',
+       'barre_intertitre2' => '{2{عنوان فقرة مستوى 2}2}',
+       'barre_intertitre3' => '{3{عنوان فقرة مستوى 3}3}',
+       'barre_miseenevidence' => '[*إبراز*]',
+       'barre_miseenevidence2' => '[**إبراز*] النص (لون آخر)',
+       'barre_petitescapitales' => 'تحويل الى &lt;sc&gt;حروف كبيرة مصغرة&lt;/sc&gt;',
+       'barre_poesie' => '&lt;poesie&gt;شعر&lt;/poesie&gt;',
+       'barre_tableau' => 'إدراج جدول أو تعديل جدول (تحديده أولاً)',
+
+       // C
+       'cfg_insertcss' => 'ادراج ورقة انماط',
+       'cfg_puces' => 'معالجة اللوائح',
+       'cfg_titraille' => 'عناوين',
+
+       // T
+       'tableau_enregistrer' => 'حفظ',
+       'tableau_prem_ligne' => 'السطر الأول',
+       'tableau_resume' => 'الخلاصة',
+       'tableau_titre' => 'العنوان'
+);
+
+?>
index 5c1d65f..7a29343 100644 (file)
@@ -1,44 +1,44 @@
-<?php\r
-// This is a SPIP language file  --  Ceci est un fichier langue de SPIP\r
-if (!defined("_ECRIRE_INC_VERSION")) return;\r
-\r
-$GLOBALS[$GLOBALS['idx_lang']] = array(\r
-\r
-// Aide des boutons supplémentaires de la barre typo\r
-'barre_intertitre2' => 'Turn into a {2{2nd-level subtitle}2}',\r
-'barre_intertitre3' => 'Turn into a {3{3rd-level subtitle}3}',\r
-'barre_miseenevidence' => '[*Emphasize*] the text',\r
-'barre_miseenevidence2' => '[**Emphasize*] the text(2nd colour)',\r
-\r
-'barre_exposant' => 'Superscript',\r
-\r
-'barre_indice' => 'Subscript',\r
-\r
-'barre_petitescapitales' => 'Small caps',\r
-'barre_centrer' => '[|Centre|] the paragraph',\r
-'barre_alignerdroite' => '[/Right-align/] the paragraph',\r
-'barre_alignergauche' => '[!left-align!] the paragraph',\r
-'barre_encadrer' => '[(Place a border)] round the paragraph',\r
-\r
-'barre_barre' => '&lt;del&gt;Strikethrough&lt;/del&gt;',\r
-\r
-'barre_avances' => 'Meaning, not apparence!',\r
-'barre_boutonsavances' => 'Extra justifications, use with caution!',\r
-'barre_tableau' => 'Insert/modify (select it first) a table',\r
-\r
-'barre_formatages_speciaux' => 'Special formats',\r
-'barre_code' => 'Turn into &lt;code&gt;programming code&lt;/code&gt;',\r
-'barre_cadre' => 'Put in a &lt;cadre&gt;text box&lt;/cadre&gt;',\r
-'barre_poesie' => 'display as &lt;poesie&gt;poetry&lt;/poesie&gt;',\r
-\r
-'cfg_puces' => 'Bullets',\r
-'cfg_titraille' => 'Headings',\r
-'cfg_insertcss' => 'Insert CSS',\r
-\r
-'tableau_enregistrer' => 'Save',\r
-'tableau_prem_ligne' => 'First row',\r
-'tableau_resume' => 'Summary',\r
-'tableau_titre' => 'Title'\r
-\r
-);\r
-?>\r
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/enlumtypo?lang_cible=en
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // B
+       'barre_alignerdroite' => '[/Right-align/] the paragraph',
+       'barre_alignergauche' => '[!left-align!] the paragraph',
+       'barre_avances' => 'Meaning, not apparence!',
+       'barre_barre' => '&lt;del&gt;Strikethrough&lt;/del&gt;',
+       'barre_boutonsavances' => 'Extra justifications, use with caution!',
+       'barre_cadre' => 'Put in a &lt;cadre&gt;text box&lt;/cadre&gt;',
+       'barre_centrer' => '[|Centre|] the paragraph',
+       'barre_code' => 'Turn into &lt;code&gt;programming code&lt;/code&gt;',
+       'barre_encadrer' => '[(Place a border)] round the paragraph',
+       'barre_exposant' => 'Superscript',
+       'barre_formatages_speciaux' => 'Special formats',
+       'barre_indice' => 'Subscript',
+       'barre_intertitre2' => 'Turn into a {2{2nd-level subtitle}2}',
+       'barre_intertitre3' => 'Turn into a {3{3rd-level subtitle}3}',
+       'barre_miseenevidence' => '[*Emphasize*] the text',
+       'barre_miseenevidence2' => '[**Emphasize*] the text(2nd colour)',
+       'barre_petitescapitales' => 'Small caps',
+       'barre_poesie' => 'display as &lt;poesie&gt;poetry&lt;/poesie&gt;',
+       'barre_tableau' => 'Insert/modify (select it first) a table',
+
+       // C
+       'cfg_insertcss' => 'Insert CSS',
+       'cfg_puces' => 'Bullets',
+       'cfg_titraille' => 'Headings',
+       'configuration_typoenluminee' => 'Typographical Enlightments',
+
+       // T
+       'tableau_enregistrer' => 'Save',
+       'tableau_prem_ligne' => 'First row',
+       'tableau_resume' => 'Summary',
+       'tableau_titre' => 'Title'
+);
+
+?>
index e3dafac..fa3bd55 100644 (file)
@@ -1,27 +1,29 @@
-<?php\r
-// This is a SPIP language file  --  Esto es un archivo de idioma SPIP\r
-if (!defined("_ECRIRE_INC_VERSION")) return;\r
-\r
-$GLOBALS[$GLOBALS['idx_lang']] = array(\r
-\r
-// Aide des boutons supplémentaires de la barre typo\r
-'barre_intertitre2' => 'Transformar en {2{intert&iacute;tulos nivel dos}2}',\r
-'barre_intertitre3' => 'Transformar en {3{intert&iacute;tulos nivel tres}3}',\r
-'barre_miseenevidence' => 'Poner el texto en [*evidencia*]',\r
-'barre_exposant' => 'Poner el texto en &lt;sup&gt;potencia&lt;/sup&gt;',\r
-'barre_petitescapitales' => 'Poner el texto en &lt;sc&gt;may&uacute;sculas peque&ntilde;as&lt;/sc&gt;',\r
-'barre_centrer' => '[|Centrar|] el p&aacute;rrafo',\r
-'barre_alignerdroite' => '[/Al&iacute;nea a la derecha/] el p&aacute;rrafo',\r
-'barre_encadrer' => '[(Encuadrar)] el p&aacute;rrafo',\r
-\r
-'barre_poesie' => 'Mettre en forme comme une &lt;poesie&gt;po&eacute;sie&lt;/poesie&gt;',\r
-\r
-'barre_avances' => 'Du sens, du sens&nbsp;!',\r
-'barre_boutonsavances' => 'Mises en sens suppl&eacute;mentaires, &agrave; utiliser avec mod&eacute;ration et discernement&nbsp;!',\r
-\r
-'cfg_puces' => 'Traitement des puces',\r
-'cfg_titraille' => 'Titraille',\r
-'cfg_insertcss' => 'Insertion CSS'\r
-\r
-);\r
-?>\r
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/enlumtypo?lang_cible=es
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // B
+       'barre_alignerdroite' => '[/Alínea a la derecha/] el párrafo',
+       'barre_avances' => 'Du sens, du sens !',
+       'barre_boutonsavances' => 'Mises en sens supplémentaires, à utiliser avec modération et discernement !',
+       'barre_centrer' => '[|Centrar|] el párrafo',
+       'barre_encadrer' => '[(Encuadrar)] el párrafo',
+       'barre_exposant' => 'Poner el texto en &lt;sup&gt;potencia&lt;/sup&gt;',
+       'barre_intertitre2' => 'Transformar en {2{intertítulos nivel dos}2}',
+       'barre_intertitre3' => 'Transformar en {3{intertítulos nivel tres}3}',
+       'barre_miseenevidence' => 'Poner el texto en [*evidencia*]',
+       'barre_petitescapitales' => 'Poner el texto en &lt;sc&gt;mayúsculas pequeñas&lt;/sc&gt;',
+       'barre_poesie' => 'Mettre en forme comme une &lt;poesie&gt;poésie&lt;/poesie&gt;',
+
+       // C
+       'cfg_insertcss' => 'Insertion CSS',
+       'cfg_puces' => 'Traitement des puces',
+       'cfg_titraille' => 'Titraille'
+);
+
+?>
index 669838e..1f77bf2 100644 (file)
@@ -1,45 +1,42 @@
-<?php\r
-// This is a SPIP language file  --  Ceci est un fichier langue de SPIP\r
-if (!defined("_ECRIRE_INC_VERSION")) return;\r
-\r
-$GLOBALS[$GLOBALS['idx_lang']] = array(\r
-\r
-// Aide des boutons supplémentaires de la barre typo\r
-'barre_intertitre2' => 'Transformer en {{{**intertitre niveau deux}}}',\r
-'barre_intertitre3' => 'Transformer en {{{***intertitre niveau trois}}}',\r
-'barre_miseenevidence' => 'Mettre le texte en [*&eacute;vidence*]',\r
-'barre_miseenevidence2' => 'Mettre le texte en [**&eacute;vidence*] (2e couleur)',\r
-\r
-'barre_exposant' => 'Mettre le texte en &lt;sup&gt;exposant&lt;/sup&gt;',\r
-\r
-'barre_indice' => 'Mettre le texte en &lt;sub&gt;indice&lt;/sub&gt;',\r
-\r
-'barre_petitescapitales' => 'Mettre le texte en &lt;sc&gt;petites capitales&lt;/sc&gt;',\r
-'barre_centrer' => '[|Centrer|] le paragraphe',\r
-'barre_alignerdroite' => '[/Aligne &agrave; droite/] le paragraphe',\r
-'barre_alignergauche' => '[!Aligne &agrave; gauche!] le paragraphe',\r
-'barre_encadrer' => '[(Encadrer)] le paragraphe',\r
-\r
-'barre_barre' => '&lt;del&gt;Barrer&lt;/del&gt; le texte',\r
-\r
-'barre_avances' => 'Du sens, du sens&nbsp;!',\r
-'barre_boutonsavances' => 'Mises en sens suppl&eacute;mentaires, &agrave; utiliser avec mod&eacute;ration et discernement&nbsp;!',\r
-'barre_tableau' => 'Ins&eacute;rer/modifier (le s&eacute;lectionner avant) un tableau',\r
-\r
-'barre_formatages_speciaux' => 'Formatage sp&eacute;ciaux',\r
-'barre_code' => 'Mettre en forme un &lt;code&gt;code informatique&lt;/code&gt;',\r
-'barre_cadre' => 'Placer dans une &lt;cadre&gt;zone de saisie de texte&lt;/cadre&gt;',\r
-'barre_poesie' => 'Mettre en forme comme une &lt;poesie&gt;po&eacute;sie&lt;/poesie&gt;',\r
-\r
-'cfg_puces' => 'Traitement des puces',\r
-'cfg_titraille' => 'Titraille',\r
-'cfg_insertcss' => 'Insertion CSS',\r
-'configuration_typoenluminee' => 'Enluminures Typographiques',\r
-\r
-'tableau_enregistrer' => 'Enregistrer',\r
-'tableau_prem_ligne' => 'Premi&egrave;re ligne',\r
-'tableau_resume' => 'R&eacute;sum&eacute;',\r
-'tableau_titre' => 'Titre'\r
-\r
-);\r
-?>\r
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// Fichier source, a modifier dans svn://zone.spip.org/spip-zone/_plugins_/porte_plume_extras/enluminures_typographiques_v3/lang/
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // B
+       'barre_alignerdroite' => '[/Aligne à droite/] le paragraphe',
+       'barre_alignergauche' => '[!Aligne à gauche !] le paragraphe',
+       'barre_avances' => 'Du sens, du sens !',
+       'barre_barre' => '&lt;del&gt;Barrer&lt;/del&gt; le texte',
+       'barre_boutonsavances' => 'Mises en sens supplémentaires, à utiliser avec modération et discernement !',
+       'barre_cadre' => 'Placer dans une &lt;cadre&gt;zone de saisie de texte&lt;/cadre&gt;',
+       'barre_centrer' => '[|Centrer|] le paragraphe',
+       'barre_code' => 'Mettre en forme un &lt;code&gt;code informatique&lt;/code&gt;',
+       'barre_encadrer' => '[(Encadrer)] le paragraphe',
+       'barre_exposant' => 'Mettre le texte en &lt;sup&gt;exposant&lt;/sup&gt;',
+       'barre_formatages_speciaux' => 'Formatage spéciaux',
+       'barre_indice' => 'Mettre le texte en &lt;sub&gt;indice&lt;/sub&gt;',
+       'barre_intertitre2' => 'Transformer en {{{**intertitre niveau deux}}}',
+       'barre_intertitre3' => 'Transformer en {{{***intertitre niveau trois}}}',
+       'barre_miseenevidence' => 'Mettre le texte en [*évidence*]',
+       'barre_miseenevidence2' => 'Mettre le texte en [**évidence*] (2e couleur)',
+       'barre_petitescapitales' => 'Mettre le texte en &lt;sc&gt;petites capitales&lt;/sc&gt;',
+       'barre_poesie' => 'Mettre en forme comme une &lt;poesie&gt;poésie&lt;/poesie&gt;',
+       'barre_tableau' => 'Insérer/modifier (le sélectionner avant) un tableau',
+
+       // C
+       'cfg_insertcss' => 'Insertion CSS',
+       'cfg_puces' => 'Traitement des puces',
+       'cfg_titraille' => 'Titraille',
+       'configuration_typoenluminee' => 'Enluminures Typographiques',
+
+       // T
+       'tableau_enregistrer' => 'Enregistrer',
+       'tableau_prem_ligne' => 'Première ligne',
+       'tableau_resume' => 'Résumé',
+       'tableau_titre' => 'Titre'
+);
+
+?>
index 39a60a8..c666476 100644 (file)
@@ -1,27 +1,29 @@
-<?php\r
-// This is a SPIP language file  --  Ceci est un fichier langue de SPIP\r
-if (!defined("_ECRIRE_INC_VERSION")) return;\r
-\r
-$GLOBALS[$GLOBALS['idx_lang']] = array(\r
-\r
-// Aide des boutons supplémentaires de la barre typo\r
-'barre_intertitre2' => 'Converti in {2{sottotitolo 2o-livello}2}',\r
-'barre_intertitre3' => 'Converti in {3{sottotitolo 3o-livello}3}',\r
-'barre_miseenevidence' => '[*Evidenziare*] il testo',\r
-'barre_exposant' => 'Sovrimpressione',\r
-'barre_petitescapitales' => 'Maiuscoletto',\r
-'barre_centrer' => '[|Centrare|] il paragrafo',\r
-'barre_alignerdroite' => '[/allinea a destra/] il paragrafo',\r
-'barre_encadrer' => '[(Riquadro)] attorno al paragrafo',\r
-\r
-'barre_poesie' => 'stile poetico',\r
-\r
-'barre_avances' => 'Allineamento&nbsp;!',\r
-'barre_boutonsavances' => 'Formattazione supplementare, utilizzare con moderazione e discernimento&nbsp;!',\r
-\r
-'cfg_puces' => 'Traitement des puces',\r
-'cfg_titraille' => 'Titraille',\r
-'cfg_insertcss' => 'Insertion CSS'\r
-\r
-);\r
-?>
\ No newline at end of file
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/enlumtypo?lang_cible=it
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // B
+       'barre_alignerdroite' => '[/allinea a destra/] il paragrafo',
+       'barre_avances' => 'Allineamento !',
+       'barre_boutonsavances' => 'Formattazione supplementare, utilizzare con moderazione e discernimento !',
+       'barre_centrer' => '[|Centrare|] il paragrafo',
+       'barre_encadrer' => '[(Riquadro)] attorno al paragrafo',
+       'barre_exposant' => 'Sovrimpressione',
+       'barre_intertitre2' => 'Converti in {2{sottotitolo 2o-livello}2}',
+       'barre_intertitre3' => 'Converti in {3{sottotitolo 3o-livello}3}',
+       'barre_miseenevidence' => '[*Evidenziare*] il testo',
+       'barre_petitescapitales' => 'Maiuscoletto',
+       'barre_poesie' => 'stile poetico',
+
+       // C
+       'cfg_insertcss' => 'Insertion CSS',
+       'cfg_puces' => 'Traitement des puces',
+       'cfg_titraille' => 'Titraille'
+);
+
+?>
index 047b319..817ac36 100644 (file)
@@ -1,18 +1,18 @@
 <paquet
        prefix="typoenluminee"
        categorie="edition"
-       version="3.3.2"
+       version="3.4.3"
        etat="stable"
-       compatibilite="[2.0.3;3.0.99]"
+       compatibilite="[2.0.3;3.0.*]"
        logo="prive/themes/spip/images/typoenluminee-32.png"
-       documentation="http://www.spip-contrib.net/Enluminures-typographiques-V3-pour-SPIP-2-avec"
+       documentation="http://contrib.spip.net/Enluminures-typographiques-V3-pour-SPIP-2-avec"
 >      
 
        <nom>Enluminures typographiques</nom>
        <!-- Plein de raccourcis pour la mise en forme ! -->
 
-       <auteur lien="http://www.spip-contrib.net/_Jacques-PYRAT_">Jacques</auteur>
-       <auteur lien="http://www.spip-contrib.net/_Francois-Schreuer_">François</auteur>
+       <auteur lien="http://contrib.spip.net/_Jacques-PYRAT_">Jacques</auteur>
+       <auteur lien="http://contrib.spip.net/_Francois-Schreuer_">François</auteur>
 
        <copyright>2007</copyright>
 
@@ -20,6 +20,7 @@
 
        <pipeline nom="pre_propre" inclure="typoenluminee.php" />
        <pipeline nom="post_propre" inclure="typoenluminee.php" />
+       <pipeline nom="pre_liens" inclure="typoenluminee.php" />
        <pipeline nom="pre_typo" inclure="typoenluminee.php" />
        <pipeline nom="post_typo" inclure="typoenluminee.php" />
        <pipeline nom="nettoyer_raccourcis_typo" inclure="typoenluminee.php" />
@@ -32,4 +33,4 @@
        <menu nom="configurer_typoenluminee" titre="enlumtypo:configuration_typoenluminee" parent="menu_squelette" icone="images/typoenluminee-16.png" />
 
        <necessite nom="porte_plume" compatibilite="[1.2.2;[" />
-</paquet>
+</paquet>
\ No newline at end of file
index aba71e0..e9c09ec 100644 (file)
@@ -1,10 +1,10 @@
 <plugin>\r
        <nom>Enluminures typographiques</nom>\r
        <slogan>Plein de raccourcis pour la mise en forme !</slogan>\r
-       <auteur>[Jacques->http://www.spip-contrib.net/_Jacques-PYRAT_], &#224; partir des raccourcis mis en place par [Fran&#231;ois->http://www.spip-contrib.net/_Francois-Schreuer_]</auteur>\r
+       <auteur>[Jacques->http://contrib.spip.net/_Jacques-PYRAT_], &#224; partir des raccourcis mis en place par [Fran&#231;ois->http://contrib.spip.net/_Francois-Schreuer_]</auteur>\r
        <licence>&#169; 2007 GNU/GPL</licence>\r
-       <lien>http://www.spip-contrib.net/Enluminures-typographiques-V3-pour-SPIP-2-avec</lien>\r
-       <version>3.3.2</version>\r
+       <lien>http://contrib.spip.net/Enluminures-typographiques-V3-pour-SPIP-2-avec</lien>\r
+       <version>3.4.3</version>\r
        <etat>stable</etat>\r
        <description>Ce plugin ajoute des raccourcis typographiques et des boutons au porte plume. Par exemple :\r
 -* Paragraphes :\r
@@ -23,6 +23,7 @@
        </description>\r
        <prefix>typoenluminee</prefix>\r
        <icon>img_pack/moinecopiste.gif</icon>\r
+       <options>typoenluminee_options.php</options>\r
 \r
        <pipeline>\r
                <nom>pre_propre</nom>\r
                <nom>post_propre</nom>\r
                <inclure>typoenluminee.php</inclure>\r
        </pipeline>\r
+       <pipeline>\r
+               <nom>pre_liens</nom>\r
+               <inclure>typoenluminee.php</inclure>\r
+       </pipeline>\r
        <pipeline>\r
                <nom>pre_typo</nom>\r
                <inclure>typoenluminee.php</inclure>\r
index 9924c51..c935c88 100644 (file)
@@ -1,10 +1,10 @@
 <svn_revision>
 <text_version>
 Origine: file:///home/svn/repository/spip-zone/_plugins_/porte_plume_extras/enluminures_typographiques_v3
-Revision: 66428
-Dernier commit: 2012-10-02 11:00:02 +0200 
+Revision: 84614
+Dernier commit: 2014-09-14 23:33:31 +0200 
 </text_version>
 <origine>file:///home/svn/repository/spip-zone/_plugins_/porte_plume_extras/enluminures_typographiques_v3</origine>
-<revision>66428</revision>
-<commit>2012-10-02 11:00:02 +0200 </commit>
+<revision>84614</revision>
+<commit>2014-09-14 23:33:31 +0200 </commit>
 </svn_revision>
\ No newline at end of file
index 82bcfc9..377da47 100644 (file)
@@ -96,8 +96,8 @@ function typoenluminee_pre_propre($texte) {
                /* 5 */         $chercher_raccourcis[]="/(^|[^{])[{][{][{]\*\*(.*)[}][}][}]($|[^}])/SUms";\r
                /* 3 */         $chercher_raccourcis[]="/(^|[^{])[{][{][{]\*(.*)[}][}][}]($|[^}])/SUms";\r
                /* 1 */         $chercher_raccourcis[]="/(^|[^{])[{][{][{](.*)[}][}][}]($|[^}])/SUms";\r
-               /* 11 */        $chercher_raccourcis[]="/\{(§|§)\{/S"; # § Pour gerer l'unicode aussi !\r
-               /* 12 */        $chercher_raccourcis[]="/\}(§|§)\}/S"; # ne pas sauvergarder ce fichier en utf8 !\r
+               /* 11 */        $chercher_raccourcis[]="/\{(|§)\{/S"; # § Pour gerer l'unicode aussi !\r
+               /* 12 */        $chercher_raccourcis[]="/\}(|§)\}/S"; # ne pas sauvergarder ce fichier en utf8 !\r
 \r
                /* 9b */        $remplacer_raccourcis[]="\$1\n\n$debut_intertitre_5\$2$fin_intertitre_5\n\n\$3";\r
                /*  9 */        $remplacer_raccourcis[]="\$1\n\n$debut_intertitre_4\$2$fin_intertitre_4\n\n\$3";\r
@@ -113,7 +113,8 @@ function typoenluminee_pre_propre($texte) {
        // ou n est un nombre en intertitres avec des etoiles type {{{* (avec n etoiles)\r
        // {1{ sera converti en {{{* ; {2{ sera converti en {{{** ; etc.\r
        // Ne faire la recherche que s'il y a au moins un titre ancienne mode a convertir\r
-       if (strpos($texte, '{2{')!==false\r
+       if (strpos($texte, '{1{')!==false\r\r
+               OR strpos($texte, '{2{')!==false\r
                OR strpos($texte, '{3{')!==false\r
                OR strpos($texte, '{4{')!==false\r
                OR strpos($texte, '{5{')!==false) {\r
@@ -158,6 +159,15 @@ function typoenluminee_post_propre($texte) {
        return $texte;\r
 }\r
 \r
+function typoenluminee_pre_liens($texte) {\r
+       if (!isset($GLOBALS['barre_typo_pas_de_fork_typo']) OR $GLOBALS['barre_typo_pas_de_fork_typo'] === true)\r
+               return $texte;\r
+\r
+       $texte = str_replace('<-->','&harr;',$texte);\r
+       $texte = str_replace('-->','&rarr;',$texte);\r
+\r
+       return $texte;\r
+}\r
 \r
 function typoenluminee_pre_typo($texte) {\r
        if(!$texte) return $texte;\r
@@ -197,8 +207,6 @@ function typoenluminee_pre_typo($texte) {
                $texte =  preg_replace('/^-\s+/m','-* ',$texte);\r
        }\r
 \r
-       $texte = str_replace('<-->','&harr;',$texte);\r
-       $texte = str_replace('-->','&rarr;',$texte);\r
        $texte = str_replace('<--','&larr;',$texte);\r
        $texte = str_replace('<==>','&hArr;',$texte);\r
        $texte = str_replace('==>','&rArr;',$texte);\r
@@ -208,7 +216,6 @@ function typoenluminee_pre_typo($texte) {
        $texte = str_ireplace('(tm)','&trade;',$texte);\r
        $texte = str_replace('...','&hellip;',$texte);\r
        $texte = preg_replace($chercher_raccourcis, $remplacer_raccourcis, $texte);\r
-       \r
        /*\r
                Cas particulier pour le gras\r
                Il ne faut pas traiter la mise en gras ici si le texte contient un tableau\r
@@ -244,6 +251,7 @@ function typoenluminee_post_typo($texte) {
        // Raccourci typographique <sc></sc>\r
        $texte = str_replace('<sc>', '<span class="caps">', $texte);\r
        $texte = str_replace('</sc>', '</span>', $texte);\r
+       $texte = acronymes_traiter_raccourcis($texte);\r
        return $texte;\r
 }\r
 \r
@@ -255,4 +263,24 @@ function typoenluminee_nettoyer_raccourcis_typo($texte){
        return $texte;\r
 }\r
 \r
+// traite les raccourcis de la forme [SNCF|societe nationale...]\r
+// reprise du plugin acronymes\r
+if (!function_exists('acronymes_traiter_raccourcis')) {\r
+       function acronymes_traiter_raccourcis($letexte){\r
+               $pattern="{\[([^\|\]-]+)\|([^\|\]-]+)\]}";\r
+               preg_match_all ($pattern, $letexte, $tagMatches, PREG_SET_ORDER);\r
+               $textMatches = preg_split ($pattern, $letexte);\r
+\r
+               $tag_attr=array();\r
+               foreach ($tagMatches as $key => $value) {\r
+                       $tag_attr[]="<acronym title='".texte_backend($value[2])."'>".$value[1]."</acronym>";\r
+               }\r
+               for ($i = 0; $i < count ($textMatches); $i ++) {\r
+                       $textMatches [$i] = $textMatches [$i] . $tag_attr [$i];\r
+               }\r
+               return implode ("", $textMatches);\r
+       }\r
+}\r
+\r
+\r
 ?>
\ No newline at end of file
diff --git a/www/plugins/enluminures_typographiques_v3/typoenluminee_options.php b/www/plugins/enluminures_typographiques_v3/typoenluminee_options.php
new file mode 100644 (file)
index 0000000..9f2dce0
--- /dev/null
@@ -0,0 +1,11 @@
+<?php\r
+if (!defined("_ECRIRE_INC_VERSION")) return;\r
+\r
+// autoriser les tag <b>, <i>, <em>, <sc> et <br />\r
+// dans le nom/signature d'un auteur.\r
+// par défaut, <multi> est toujours autorisé.\r
+// Cf : http://www.spip.net/fr_article5666.html\r
+// Cf : http://core.spip.org/projects/spip/repository/revisions/21016 à 21018\r
+if (!defined('_TAGS_NOM_AUTEUR'))  define('_TAGS_NOM_AUTEUR', 'b, i, em, sc, br');\r
+\r
+?>
\ No newline at end of file
index e8ed065..3ae51b6 100644 (file)
@@ -4,8 +4,9 @@
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>[(#ENV*{sujet})]</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-       <style type="text/css">
-               [(#SET{siteColor,[#(#LOGO_SITE_SPIP|couleur_extraire|couleur_eclaircir_si_foncee{168}|sinon{BBB})]})]
+       <style type="text/css">[
+               (#SET{siteColor,[#(#LOGO_SITE_SPIP|couleur_extraire|couleur_foncer_si_claire{88}|couleur_eclaircir_si_foncee{168}|sinon{BBB})]})][
+               (#VAL{_COULEUR_EMAILS_HTML}|defined|oui)#SET{siteColor,#VAL{_COULEUR_EMAILS_HTML}|constant}]
                #outlook a {padding: 0;}
                body {width: 100% !important;}
                body {margin: 0;padding: 0;}
index 9c09ca4..7eb2087 100755 (executable)
@@ -328,6 +328,8 @@ function facteur_mail_html2text($html){
        // Remplace tous les liens
        preg_match_all("/\<a href=['\"](.*?)['\"][^>]*>(.*?)<\/a>/ims", $html,$matches,PREG_SET_ORDER);
        $prelinks = $postlinks = array();
+       if (!function_exists('url_absolue'))
+               include_spip('inc/filtres');
        foreach ($matches as $k => $match){
                $link = "@@@link$k@@@";
                $url = str_replace("&amp;","&",$match[1]);
@@ -339,7 +341,8 @@ function facteur_mail_html2text($html){
                        // texte + url
                        $prelinks[$match[0]] = $match[2] . " ($link)";
                }
-               $postlinks[$link] = $url;
+               // passer l'url en absolu dans le texte sinon elle n'est pas clicable ni utilisable
+               $postlinks[$link] = url_absolue($url);
        }
        $html = str_replace(array_keys($prelinks), array_values($prelinks),$html);
 
index 261c7c1..66b28a0 100644 (file)
@@ -53,8 +53,10 @@ function inc_envoyer_mail($destinataire, $sujet, $corps, $from = "", $headers =
                $repondre_a = $corps['repondre_a'];\r
                $adresse_erreur = $corps['adresse_erreur'];\r
                $headers = (isset($corps['headers'])?$corps['headers']:$headers);\r
-               if (is_string($headers))\r
+               if (is_string($headers)){\r
                        $headers = array_map('trim',explode("\n",$headers));\r
+                       $headers = array_filter($headers);\r
+               }\r
        }\r
        // si $corps est une chaine -> compat avec la fonction native SPIP\r
        // gerer le cas ou le corps est du html avec un Content-Type: text/html dans les headers\r
@@ -68,8 +70,8 @@ function inc_envoyer_mail($destinataire, $sujet, $corps, $from = "", $headers =
                                AND strpos($corps,"<")!==false // eviter les tests suivants si possible\r
                                AND $ttrim = trim($corps)\r
                                AND substr($ttrim,0,1)=="<"\r
-                         AND substr($ttrim,-1,1)==">"\r
-                         AND stripos($ttrim,"</html>")!==false){\r
+                               AND substr($ttrim,-1,1)==">"\r
+                               AND stripos($ttrim,"</html>")!==false){\r
 \r
                                if(!strlen($sujet)){\r
                                        // dans ce cas on ruse un peu : extraire le sujet du title\r
@@ -98,6 +100,7 @@ function inc_envoyer_mail($destinataire, $sujet, $corps, $from = "", $headers =
                                $message_texte  = nettoyer_caracteres_mail($corps);\r
                }\r
                $headers = array_map('trim',explode("\n",$headers));\r
+               $headers = array_filter($headers);\r
        }\r
        $sujet = nettoyer_titre_email($sujet);\r
 \r
@@ -123,10 +126,17 @@ function inc_envoyer_mail($destinataire, $sujet, $corps, $from = "", $headers =
        // c'est un format standard dans l'envoi de mail\r
        // les passer au format array pour phpMailer\r
        // mais ne pas casser si on a deja un array en entree\r
+       // si aucun destinataire du courriel on renvoie false (eviter les warning PHP)\r
        if (is_array($destinataire))\r
                $destinataire = implode(", ",$destinataire);\r
-       $destinataire = array_map('trim',explode(",",$destinataire));\r
-       \r
+\r
+       if(strlen($destinataire) > 0)\r
+               $destinataire = array_map('trim',explode(",",$destinataire));\r
+       else {\r
+               spip_log("Aucune adresse email de destination valable pour l'envoi du courriel.", 'mail.' . _LOG_ERREUR);\r
+               return false;\r
+       }\r
+\r
        // On crée l'objet Facteur (PHPMailer) pour le manipuler ensuite\r
        $facteur = new Facteur($destinataire, $sujet, $message_html, $message_texte);\r
        \r
@@ -134,10 +144,10 @@ function inc_envoyer_mail($destinataire, $sujet, $corps, $from = "", $headers =
        if (empty($from) AND empty($facteur->From)) {\r
                $from = $GLOBALS['meta']["email_envoi"];\r
                if (empty($from) OR !email_valide($from)) {\r
-                       spip_log("Meta email_envoi invalide. Le mail sera probablement vu comme spam.");\r
+                       spip_log("Meta email_envoi invalide. Le mail sera probablement vu comme spam.", 'mail.' . _LOG_ERREUR);\r
                        $from = $destinataire;\r
                }\r
-       }\r
+       } \r
 \r
        // "Marie Toto <Marie@toto.com>"\r
        if (preg_match(",^([^<>\"]*)<([^<>\"]+)>$,i",$from,$m)){\r
@@ -178,7 +188,7 @@ function inc_envoyer_mail($destinataire, $sujet, $corps, $from = "", $headers =
                        $facteur->AddBCC($bcc);\r
        }\r
        \r
-       // S'il y a des copies cachées à envoyer\r
+       // S'il y a une adresse de reply-to\r
        if ($repondre_a){\r
                if (is_array($repondre_a))\r
                        foreach ($repondre_a as $courriel)\r
@@ -204,11 +214,18 @@ function inc_envoyer_mail($destinataire, $sujet, $corps, $from = "", $headers =
                $facteur->Sender = $adresse_erreur;\r
 \r
        // si entetes personalises : les ajouter\r
-       // bug : semble ecraser les autres headers. A debug si on veut le rendre fonctionnel\r
-       //if (!empty($headers)) {\r
-       //      foreach($headers as $h)\r
-       //              $facteur->AddCustomHeader($h);\r
-       //}\r
+       // attention aux collisions : si on utilise l'option cc de $corps\r
+       // et qu'on envoie en meme temps un header Cc: xxx, yyy\r
+       // on aura 2 lignes Cc: dans les headers\r
+       if (!empty($headers)) {\r
+               foreach($headers as $h){\r
+                       // verifions le format correct : il faut au moins un ":" dans le header\r
+                       // et on filtre le Content-Type: qui sera de toute facon fourni par facteur\r
+                       if (strpos($h,":")!==false\r
+                         AND strncmp($h,"Content-Type:",13)!==0)\r
+                               $facteur->AddCustomHeader($h);\r
+               }\r
+       }\r
        \r
        // On passe dans un pipeline pour modifier tout le facteur avant l'envoi\r
        $facteur = pipeline('facteur_pre_envoi', $facteur);\r
@@ -217,7 +234,7 @@ function inc_envoyer_mail($destinataire, $sujet, $corps, $from = "", $headers =
        $head = $facteur->CreateHeader();\r
 \r
        // Et c'est parti on envoie enfin\r
-       spip_log("mail via facteur\n$head"."Destinataire:".print_r($destinataire,true),'mail');\r
+       spip_log("mail via facteur\n$head"."Destinataire:".print_r($destinataire,true),'mail.' . _LOG_ERREUR);\r
        spip_log("mail\n$head"."Destinataire:".print_r($destinataire,true),'facteur');\r
        $retour = $facteur->Send();\r
        \r
index 7c442cc..72ff96a 100644 (file)
@@ -1,12 +1,12 @@
 <paquet\r
        prefix="facteur"\r
        categorie="communication"\r
-       version="3.0.7"\r
+       version="3.0.13"\r
        etat="stable"\r
        compatibilite="[3.0.0;3.0.*]"\r
        logo="prive/themes/spip/images/facteur-32.png"\r
        schema="1.1"\r
-       documentation="http://www.spip-contrib.net/Facteur"\r
+       documentation="http://contrib.spip.net/Facteur"\r
 >      \r
        \r
        <nom>Facteur</nom>\r
@@ -19,4 +19,4 @@
        <pipeline nom="recuperer_fond" inclure="facteur_pipelines.php" />\r
        \r
        <menu nom="configurer_facteur" titre="facteur:configuration_facteur" parent="menu_configuration" icone="images/facteur-16.png" />\r
-</paquet>\r
+</paquet>
\ No newline at end of file
index 70c899c..3669571 100644 (file)
@@ -1,10 +1,10 @@
 <svn_revision>
 <text_version>
 Origine: file:///home/svn/repository/spip-zone/_plugins_/facteur/trunk
-Revision: 80884
-Dernier commit: 2014-02-19 06:02:06 +0100 
+Revision: 84587
+Dernier commit: 2014-09-13 14:12:08 +0200 
 </text_version>
 <origine>file:///home/svn/repository/spip-zone/_plugins_/facteur/trunk</origine>
-<revision>80884</revision>
-<commit>2014-02-19 06:02:06 +0100 </commit>
+<revision>84587</revision>
+<commit>2014-09-13 14:12:08 +0200 </commit>
 </svn_revision>
\ No newline at end of file
diff --git a/www/plugins/formidable/action/dupliquer_formulaire.php b/www/plugins/formidable/action/dupliquer_formulaire.php
new file mode 100644 (file)
index 0000000..90a5f15
--- /dev/null
@@ -0,0 +1,70 @@
+<?php
+
+// Sécurité
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+include_spip('inc/config');
+
+/**
+ * Dupliquer un formulaire
+ * @param unknown_type $arg
+ * @return unknown_type
+ */
+function action_dupliquer_formulaire_dist($arg=null) {
+       if (is_null($arg)){
+               $securiser_action = charger_fonction('securiser_action', 'inc');
+               $arg = $securiser_action();
+       }
+       $id_formulaire = intval($arg);
+
+       // Si le formulaire existe bien
+       if ($id_formulaire > 0 and $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id_formulaire)){
+               include_spip('action/editer_formulaire');
+               // On enlève les champs inutiles
+               unset($formulaire['id_formulaire']);
+               // On modifie un peu le titre
+               $formulaire['titre'] = $formulaire['titre'].' '._T('formidable:formulaires_dupliquer_copie');
+               // On s'assure que l'identifiant n'existe pas déjà
+               $formulaire['identifiant'] = $formulaire['identifiant'].'_'.time();
+               // On insère un nouveau formulaire
+               $id_formulaire = insert_formulaire();
+               // Si ça a marché on modifie les champs de base
+               if ($id_formulaire > 0 and !($erreur = formulaire_set($id_formulaire, $formulaire))){
+                       // Et ensuite les saisies et les traitements
+                       $ok = sql_updateq(
+                               'spip_formulaires',
+                               array(
+                                       'saisies' => $formulaire['saisies'],
+                                       'traitements' => $formulaire['traitements']
+                               ),
+                               'id_formulaire = '.$id_formulaire
+                       );
+                       // Tout a fonctionné. En fonction de la config, on attribue l'auteur courant
+                       $auteurs = lire_config('formidable/analyse/auteur');
+                       if ($auteurs == 'on') {
+                               if ($id_auteur = session_get('id_auteur')) {
+                                       // association (par défaut) du formulaire et de l'auteur courant
+                                       objet_associer(array('formulaire'=>$id_formulaire), array('auteur'=>$id_auteur));
+                               }
+                       }
+                       // Et on redirige vers la vue
+                       $redirect = parametre_url(generer_url_ecrire('formulaire'), 'id_formulaire', $id_formulaire, '&');
+               }
+               // Sinon on reste sur la page qui liste tout
+               else{
+                       $redirect = generer_url_ecrire('formulaires');
+               }
+       }
+
+       // Si on a précisé une direction on va plutôt là
+       if (_request('redirect')) {
+               $redirect = parametre_url(urldecode(_request('redirect')),
+                       'id_formulaire', $id_formulaire, '&') . $erreur;
+       }
+       
+       // On redirige
+       include_spip('inc/headers');
+       redirige_par_entete($redirect);
+}
+
+?>
diff --git a/www/plugins/formidable/action/editer_formulaire.php b/www/plugins/formidable/action/editer_formulaire.php
new file mode 100644 (file)
index 0000000..13ec60a
--- /dev/null
@@ -0,0 +1,113 @@
+<?php
+
+// Sécurité
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+/**
+ * Action de création / Modification d'un formulaire
+ * @param unknown_type $arg
+ * @return unknown_type
+ */
+function action_editer_formulaire_dist($arg=null) {
+       if (is_null($arg)){
+               $securiser_action = charger_fonction('securiser_action', 'inc');
+               $arg = $securiser_action();
+       }
+
+       // si id_formulaire n'est pas un nombre, c'est une creation
+       if (!$id_formulaire = intval($arg)) {
+               $id_formulaire = formulaire_inserer();
+       }
+
+       // Enregistre l'envoi dans la BD
+       if ($id_formulaire > 0) $err = formulaire_modifier($id_formulaire);
+
+       if (_request('redirect')) {
+               $redirect = parametre_url(urldecode(_request('redirect')),
+                       'id_formulaire', $id_formulaire, '&') . $err;
+
+               include_spip('inc/headers');
+               redirige_par_entete($redirect);
+       }
+       else
+               return array($id_formulaire,$err);
+}
+
+/**
+ * Crée un nouveau formulaire et retourne son ID
+ *
+ * @return int id_formulaire
+ */
+function formulaire_inserer() {
+       $champs = array(
+               'statut' => 'prop',
+               'date_creation' => date('Y-m-d H:i:s'),
+       );
+       // Envoyer aux plugins
+       $champs = pipeline('pre_insertion',
+               array(
+                       'args' => array(
+                               'table' => 'spip_formulaires',
+                       ),
+                       'data' => $champs
+               )
+       );
+       $id_formulaire = sql_insertq("spip_formulaires", $champs);
+
+       pipeline('post_insertion',
+               array(
+                       'args' => array(
+                               'table' => 'spip_formulaires',
+                               'id_objet' => $id_formulaire
+                       ),
+                       'data' => $champs
+               )
+       );
+
+       return $id_formulaire;
+}
+
+/**
+ * Appelle la fonction de modification d'un formulaire
+ *
+ * @param int $id_formulaire
+ * @param array|null $set
+ * @return string
+ */
+function formulaire_modifier($id_formulaire, $set=null) {
+       include_spip('inc/modifier');
+       include_spip('inc/filtres');
+       $err = '';
+
+       $c = collecter_requests(
+               // white list
+               objet_info('formulaire','champs_editables'),
+               // black list
+               array('statut'),
+               // donnees eventuellement fournies
+               $set
+       );
+
+
+       $invalideur = "id='id_formulaire/$id_formulaire'";
+       if ($err = objet_modifier_champs('formulaire', $id_formulaire,
+               array(
+                       'nonvide' => array('titre' => _T('info_sans_titre')),
+                       'invalideur' => $invalideur,
+               ),
+               $c))
+               return $err;
+
+       // Modification de statut, changement de rubrique ?
+       $c = collecter_requests(array('statut'),array(),$set);
+       include_spip("action/editer_objet");
+       $err = objet_instituer('formulaire',$id_formulaire, $c);
+
+       return $err;
+}
+
+
+
+function revision_formulaire($id_formulaire, $c=false) { return formulaire_modifier($id_formulaire, $c);}
+function insert_formulaire() { return formulaire_inserer();}
+function formulaire_set($id_formulaire, $set=null) {   return formulaire_modifier($id_formulaire, $set);}
diff --git a/www/plugins/formidable/action/exporter_analyse_reponses.php b/www/plugins/formidable/action/exporter_analyse_reponses.php
new file mode 100755 (executable)
index 0000000..a4e7e92
--- /dev/null
@@ -0,0 +1,108 @@
+<?php
+
+// Sécurité
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+/*
+ * Exporter l'analyse des réponses d'un formulaire
+ * @param unknown_type $arg
+ * @return unknown_type
+ */
+function action_exporter_analyse_reponses_dist($arg=null) {
+       if (is_null($arg)){
+               $securiser_action = charger_fonction('securiser_action', 'inc');
+               $arg = $securiser_action();
+       }
+
+       // on ne fait des choses seulements si le formulaire existe et qu'il a des enregistrements
+       $ok = false;
+       if (
+               $id_formulaire = intval($arg)
+               and $formulaire = sql_fetsel('*','spip_formulaires','id_formulaire = '.$id_formulaire)
+               and $reponses = sql_allfetsel('*', 'spip_formulaires_reponses', 'id_formulaire = '.$id_formulaire.' and statut = '.sql_quote('publie'))
+       ) {
+               include_spip('inc/saisies');
+               include_spip('classes/facteur');
+               include_spip('inc/filtres');
+        $reponses_completes = array();
+        
+        $saisies = saisies_lister_par_nom(unserialize($formulaire['saisies']), false);
+        
+        // exclure les champs non analysés
+        $traitement = unserialize($formulaire['traitements']);
+        foreach (explode("|",$traitement['enregistrement']['analyse_exclure_champs']) as $exclure){
+            unset($saisies[$exclure]);
+        }
+               $res = sql_select(
+            array('nom, valeur'),
+
+            'spip_formulaires_reponses_champs AS FRC,
+            spip_formulaires_reponses AS FR,
+            spip_formulaires AS F',
+
+            "FRC.id_formulaires_reponse=FR.id_formulaires_reponse
+            AND FR.statut='publie'
+            AND F.id_formulaire=FR.id_formulaire
+            AND F.id_formulaire=$id_formulaire"
+        );
+
+        $valeurs = array();
+        while($r = sql_fetch($res)) {
+            $valeurs[$r['nom']][] = is_array(unserialize($r['valeur']))
+                ? unserialize($r['valeur'])
+                : $r['valeur'];
+        }
+
+        foreach ($saisies as $nom=>$saisie){
+            $valeur = sql_getfetsel(
+                'valeur',
+                'spip_formulaires_reponses_champs',
+                'id_formulaires_reponse = '.intval($reponse['id_formulaires_reponse']).' and nom = '.sql_quote($nom)
+            );
+            if (is_array(unserialize($valeur)))
+                $valeur = unserialize($valeur);
+
+            $reponse_complete[] = formidable_analyser_saisie($saisie, $valeurs, 0, true);
+        }
+
+        $colonnes = array(_T('formidable:champs'), _T('formidable:sans_reponses'));
+        foreach($reponse_complete as $reponses) {
+            foreach($reponses as $key => $reponse) {
+                if ($key == 'header' || $key == 'sans_reponse') continue;
+                if (in_array($key, $colonnes) == false)
+                    array_push($colonnes, $key);
+            }
+        }
+
+        $csv = array();
+        foreach($reponse_complete as $reponses) {
+            foreach($colonnes as $colonne) {
+                $csv[$reponses['header']][$colonne] =
+                    isset($reponses[$colonne])
+                        ? $reponses[$colonne]
+                        : '';
+            }
+            $csv[$reponses['header']][_T('formidable:champs')] = $reponses['header'];
+            $csv[$reponses['header']][_T('formidable:sans_reponses')]
+                = $reponses['formidable:sans_reponse'];
+        }
+
+        $cpt_ligne = 1;
+        $reponses_completes = array();
+        $reponses_completes[0] = $colonnes;
+        foreach($csv as $ligne => $colonnes) {
+            $cpt_colonne = 0;
+            foreach($colonnes as $colonne) {
+                $reponses_completes[$cpt_ligne][$cpt_colonne++] = $colonne;
+            }
+            $cpt_ligne++;
+        }
+
+               if ($reponses_completes and $exporter_csv = charger_fonction('exporter_csv', 'inc/', true)){
+                       $exporter_csv('analyses-formulaire-'.$formulaire['identifiant'], $reponses_completes);
+                       exit();
+               }
+       }
+}
+
+?>
diff --git a/www/plugins/formidable/action/exporter_formulaire.php b/www/plugins/formidable/action/exporter_formulaire.php
new file mode 100644 (file)
index 0000000..8b5e662
--- /dev/null
@@ -0,0 +1,24 @@
+<?php
+
+// Sécurité
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+function action_exporter_formulaire_dist($arg=null){
+       include_spip('inc/formidable');
+       if (is_null($arg)){
+               $securiser_action = charger_fonction('securiser_action', 'inc');
+               $arg = $securiser_action();
+       }
+       
+       list($id_formulaire, $type_export) = preg_split('/[\W]/', $arg);
+       
+       if ($id_formulaire > 0
+               and $type_export
+               and $types_echange = echanges_formulaire_lister_disponibles()
+               and $exporter = $types_echange['exporter'][$type_export]
+       ){
+               $exporter($id_formulaire);
+       }
+}
+
+?>
diff --git a/www/plugins/formidable/action/exporter_formulaires_reponses.php b/www/plugins/formidable/action/exporter_formulaires_reponses.php
new file mode 100644 (file)
index 0000000..2330710
--- /dev/null
@@ -0,0 +1,85 @@
+<?php
+
+// Sécurité
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+/*
+ * Exporter toutes les réponses d'un formulaire
+ * @param unknown_type $arg
+ * @return unknown_type
+ */
+function action_exporter_formulaires_reponses_dist($arg=null) {
+       if (is_null($arg)){
+               $securiser_action = charger_fonction('securiser_action', 'inc');
+               $arg = $securiser_action();
+       }
+
+       // on ne fait des choses seulements si le formulaire existe et qu'il a des enregistrements
+       $ok = false;
+       if (
+               $id_formulaire = intval($arg)
+               and $formulaire = sql_fetsel('*','spip_formulaires','id_formulaire = '.$id_formulaire)
+               and $reponses = sql_allfetsel('*', 'spip_formulaires_reponses', 'id_formulaire = '.$id_formulaire.' and statut = '.sql_quote('publie'))
+       ) {
+               include_spip('inc/saisies');
+               include_spip('classes/facteur');
+               include_spip('inc/filtres');
+               $reponses_completes = array();
+               
+               // La première ligne des titres
+               $titres = array(_T('public:date'), _T('formidable:reponses_auteur'), _T('formidable:reponses_ip'));
+               $saisies = saisies_lister_par_nom(unserialize($formulaire['saisies']), false);
+               foreach ($saisies as $nom=>$saisie){
+                       $options = $saisie['options'];
+                       $titres[] = sinon($options['label_case'], sinon($options['label'], $nom));
+               }
+               $reponses_completes[] = $titres;
+               
+               // On parcourt chaque réponse
+               foreach ($reponses as $reponse){
+                       // Est-ce qu'il y a un auteur avec un nom
+                       $nom_auteur = '';
+                       if ($id_auteur = intval($reponse['id_auteur'])){
+                               $nom_auteur = sql_getfetsel('nom', 'spip_auteurs', 'id_auteur = '.$id_auteur);
+                       }
+                       if (!$nom_auteur) $nom_auteur = '';
+                       
+                       // Le début de la réponse avec les infos (date, auteur, etc)
+                       $reponse_complete = array($reponse['date'], $nom_auteur, $reponse['ip']);
+                       
+                       // Ensuite tous les champs
+                       foreach ($saisies as $nom=>$saisie){
+                               $valeur = sql_getfetsel(
+                                       'valeur',
+                                       'spip_formulaires_reponses_champs',
+                                       'id_formulaires_reponse = '.intval($reponse['id_formulaires_reponse']).' and nom = '.sql_quote($nom)
+                               );
+                               if (is_array(unserialize($valeur)))
+                                       $valeur = unserialize($valeur);
+                               $reponse_complete[] = Facteur::html2text(
+                                       recuperer_fond(
+                                               'saisies-vues/_base',
+                                               array_merge(
+                                                       array(
+                                                               'valeur_uniquement' => 'oui',
+                                                               'type_saisie' => $saisie['saisie'],
+                                                               'valeur' => $valeur
+                                                       ),
+                                                       $saisie['options']
+                                               )
+                                       )
+                               );
+                       }
+                       
+                       // On ajoute la ligne à l'ensemble des réponses
+                       $reponses_completes[] = $reponse_complete;
+               }
+               
+               if ($reponses_completes and $exporter_csv = charger_fonction('exporter_csv', 'inc/', true)){
+                       $exporter_csv('reponses-formulaire-'.$formulaire['identifiant'], $reponses_completes);
+                       exit();
+               }
+       }
+}
+
+?>
diff --git a/www/plugins/formidable/action/supprimer_formulaire.php b/www/plugins/formidable/action/supprimer_formulaire.php
new file mode 100644 (file)
index 0000000..36fafcc
--- /dev/null
@@ -0,0 +1,28 @@
+<?php
+
+// Sécurité
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+/**
+ * Action de suppression d'un formulaire
+ * @param int $arg
+ * @return unknown_type
+ */
+function action_supprimer_formulaire_dist($arg=null) {
+       if (is_null($arg)){
+               $securiser_action = charger_fonction('securiser_action', 'inc');
+               $arg = $securiser_action();
+       }
+
+       // si id_formulaire n'est pas un nombre, on ne fait rien
+       if ($id_formulaire = intval($arg)) {
+
+               $set = array('statut'=>'poubelle');
+               include_spip("action/editer_formulaire");
+               formulaire_modifier($id_formulaire,$set);
+
+       }
+
+}
+
+?>
diff --git a/www/plugins/formidable/action/supprimer_formulaires_reponse.php b/www/plugins/formidable/action/supprimer_formulaires_reponse.php
new file mode 100644 (file)
index 0000000..5f8759e
--- /dev/null
@@ -0,0 +1,28 @@
+<?php
+
+// Sécurité
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+/**
+ * Action de suppression d'une réponse
+ * @param int $arg
+ * @return unknown_type
+ */
+function action_supprimer_formulaires_reponse_dist($arg=null) {
+       if (is_null($arg)){
+               $securiser_action = charger_fonction('securiser_action', 'inc');
+               $arg = $securiser_action();
+       }
+
+       // si id_formulaires_reponse n'est pas un nombre, on ne fait rien
+       if ($id_formulaires_reponse = intval($arg)) {
+
+               include_spip("action/editer_objet");
+               $set = array('statut'=>'refuse');
+               objet_modifier('formulaires_reponse',$id_formulaires_reponse,$set);
+
+       }
+       
+}
+
+?>
diff --git a/www/plugins/formidable/action/vider_formulaire.php b/www/plugins/formidable/action/vider_formulaire.php
new file mode 100644 (file)
index 0000000..41de12a
--- /dev/null
@@ -0,0 +1,37 @@
+<?php
+
+// Sécurité
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+/*
+ * Action de suppression des réponses à un formulaire
+ * @param int $arg
+ * @return unknown_type
+ */
+function action_vider_formulaire_dist($arg=null) {
+       if (is_null($arg)){
+               $securiser_action = charger_fonction('securiser_action', 'inc');
+               $arg = $securiser_action();
+       }
+
+       // si id_formulaires_reponse n'est pas un nombre, on ne fait rien
+       if ($id_formulaire = intval($arg)) {
+               // On supprime les réponse (statut => poubelle
+               $ok = sql_update(
+                       'spip_formulaires_reponses',
+                       array('statut' => sql_quote('poubelle')),
+                       'id_formulaire = '.$id_formulaire
+               );
+       }
+       
+       if ($ok) {
+               /* on n'a plus de réponses à montrer, retour vers la page du formulaire */
+               if (!$redirect = _request('redirect'))
+                       $redirect = parametre_url(generer_url_ecrire('formulaire'), 'id_formulaire', $id_formulaire);
+               
+               include_spip('inc/headers');
+               redirige_par_entete(str_replace("&amp;","&",urldecode($redirect)));
+       }
+}
+
+?>
diff --git a/www/plugins/formidable/base/formidable_tables.php b/www/plugins/formidable/base/formidable_tables.php
new file mode 100644 (file)
index 0000000..5ab76da
--- /dev/null
@@ -0,0 +1,233 @@
+<?php
+
+/**
+ * Déclarations relatives à la base de données
+ * 
+ * @package SPIP\Formidable\Pipelines
+**/
+
+// Sécurité
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+/**
+ * Déclarer les interfaces des tables de formidable pour le compilateur
+ * 
+ * @pipeline declarer_tables_interfaces
+ * 
+ * @param array $interfaces
+ *     Déclarations d'interface pour le compilateur
+ * @return array
+ *     Déclarations d'interface pour le compilateur
+**/
+function formidable_declarer_tables_interfaces($interfaces) {
+       // 'spip_' dans l'index de $tables_principales
+       $interfaces['table_des_tables']['formulaires'] = 'formulaires';
+       $interfaces['table_des_tables']['formulaires_reponses'] = 'formulaires_reponses';
+       $interfaces['table_des_tables']['formulaires_reponses_champs'] = 'formulaires_reponses_champs';
+
+       $interfaces['tables_jointures']['spip_formulaires'][] = 'formulaires_liens';
+       $interfaces['tables_jointures']['spip_articles'][] = 'formulaires_liens';
+       $interfaces['tables_jointures']['spip_rubriques'][] = 'formulaires_liens';
+
+       $interfaces['table_des_traitements']['MESSAGE_RETOUR']['formulaires']= _TRAITEMENT_RACCOURCIS;
+       $interfaces['table_des_traitements']['URL_REDIRECT']['formulaires']= 'vider_url(%s)';
+
+
+       return $interfaces;
+}
+
+/**
+ * Déclarer les objets éditoriaux des formulaires
+ *
+ * @pipeline declarer_tables_objets_sql
+ * @param array $tables
+ *     Description des tables
+ * @return array
+ *     Description complétée des tables
+ */
+function formidable_declarer_tables_objets_sql($tables) {
+       include_spip('inc/config');
+       $tables['spip_formulaires'] = array(
+               'type'=>'formulaire',
+               'titre' => "titre, '' AS lang",
+               'date' => 'date_creation',
+               'principale' => 'oui',
+               'texte_modifier' => 'formidable:editer_modifier_formulaire',
+               'info_aucun_objet'=> 'formidable:info_aucun_formulaire',
+               'info_1_objet' => 'formidable:info_1_formulaire',
+               'info_nb_objets' => 'formidable:info_nb_formulaires',
+
+               'champs_editables' => array('titre', 'identifiant', 'descriptif','message_retour', 'saisies', 'traitements', 'public','apres','url_redirect','resume_reponse'),
+               'champs_versionnes' => array('titre', 'identifiant', 'descriptif','message_retour', 'saisies', 'traitements', 'public','apres','url_redirect','resume_reponse'),
+               'field' => array(
+                       "id_formulaire" => "bigint(21) NOT NULL",
+                       "identifiant" => "varchar(200)",
+                       "titre" => "text NOT NULL default ''",
+                       "descriptif" => "text",
+                       "message_retour" => "text NOT NULL default ''",
+                       "saisies" => "longtext NOT NULL default ''",
+                       "traitements" => "text NOT NULL default ''",
+                       "public" => "enum('non', 'oui') DEFAULT 'non' NOT NULL",
+                       "apres" => "varchar(12) NOT NULL default ''",
+                       "url_redirect" => "varchar(255)",
+                       "statut" => "varchar(10) NOT NULL default ''",
+                       "resume_reponse" => "text NOT NULL default ''",
+                       "date_creation" => "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'",
+                       "maj" => "timestamp",
+               ),
+               'key' => array(
+                       "PRIMARY KEY" => "id_formulaire"
+               ),
+               'join'=> array(
+                       'id_formulaire' => 'id_formulaire'
+               ),
+               'statut'=> array(
+                       array(
+                               'champ' => 'statut',
+                               'publie' => 'publie',
+                               'previsu' => 'publie,prop',
+                               'exception' => array('statut', 'tout'),
+                       )
+               ),
+               'texte_changer_statut' => 'formidable:changer_statut',
+               'rechercher_champs' => array(
+                 'titre' => 5, 'descriptif' => 3
+               ),
+               'statut_titres' => array(
+                       'prop'=>'info_article_propose',
+                       'publie'=>'info_article_publie',
+                       'refuse'=>'formidable:info_formulaire_refuse',
+                       'poubelle'=>'info_article_supprime'
+               ),
+               'statut_textes_instituer' => array(
+                       'prop' => 'texte_statut_propose_evaluation',
+                       'publie' => 'texte_statut_publie',
+                       'refuse'=>'formidable:texte_statut_refuse',
+                       'poubelle' => 'texte_statut_poubelle',
+               ),
+               'page' => (lire_config('formidable/analyse/activer_pages')=='on') ? 'formulaire' : false,
+
+       );
+
+       $tables['spip_formulaires_reponses'] = array(
+               'type'=>'formulaires_reponse',
+               'titre' => "'' AS titre, '' AS lang",
+               'date' => 'date',
+               'principale' => 'oui',
+               'info_aucun_objet'=> 'formidable:info_aucune_reponse',
+               'info_1_objet' => 'formidable:info_1_reponse',
+               'info_nb_objets' => 'formidable:info_nb_reponses',
+
+               'field' => array(
+                       "id_formulaires_reponse" => "bigint(21) NOT NULL",
+                       "id_formulaire" => "bigint(21) NOT NULL default 0",
+                       "date" => "datetime NOT NULL default '0000-00-00 00:00:00'",
+                       "ip" => "varchar(255) NOT NULL default ''",
+                       "id_auteur" => "bigint(21) NOT NULL default 0",
+                       "cookie" => "varchar(255) NOT NULL default ''",
+                       "statut" => "varchar(10) NOT NULL default ''",
+                       "maj" => "timestamp"
+               ),
+               'key' => array(
+                       "PRIMARY KEY" => "id_formulaires_reponse",
+                       "KEY id_formulaire" => "id_formulaire",
+                       "KEY id_auteur" => "id_auteur",
+                       "KEY cookie" => "cookie"
+               ),
+               'join' => array(
+                       'id_formulaires_reponse' => 'id_formulaires_reponse',
+                       'id_formulaire' => 'id_formulaire',
+                       'id_auteur' => 'id_auteur'
+               ),
+               'statut'=> array(
+                       array(
+                               'champ' => 'statut',
+                               'publie' => 'publie',
+                               'previsu' => 'publie,prop',
+                               'exception' => array('statut', 'tout'),
+                       )
+               ),
+               'texte_changer_statut' => 'formulaires_reponse:changer_statut',
+               'rechercher_champs' => array('ip'=>1),
+               'rechercher_jointures' => array(
+                       'formulaires_reponses_champ' => array('valeur' => 4),
+               ),
+               'statut_titres' => array(
+                       'prop'=>'formidable:info_reponse_proposee',
+                       'publie'=>'formidable:info_reponse_publiee',
+                       'refuse'=>'formidable:info_reponse_supprimee'
+               ),
+               'statut_textes_instituer' => array(
+                       'prop' => 'formidable:texte_statut_propose_evaluation',
+                       'publie' => 'formidable:texte_statut_publie',
+                       'refuse' => 'formidable:texte_statut_poubelle',
+               ),
+       );
+       return $tables;
+}
+
+/**
+ * Déclarer les tables principales de formidable
+ *
+ * @pipeline declarer_tables_principales
+ * @param array $tables_principales
+ *     Description des tables
+ * @return array
+ *     Description complétée des tables
+**/
+function formidable_declarer_tables_principales($tables_principales){
+
+       // Table formulaires_reponses_champs 
+       $formulaires_reponses_champs = array(
+               "id_formulaires_reponses_champ" => "bigint(21) NOT NULL",
+               "id_formulaires_reponse" => "bigint(21) NOT NULL default 0",
+               "nom" => "varchar(255) NOT NULL default ''",
+               "valeur" => "text NOT NULL DEFAULT ''",
+               "maj" => "timestamp"
+       );
+       $formulaires_reponses_champs_cles = array(
+               "PRIMARY KEY" => "id_formulaires_reponses_champ",
+               "KEY id_formulaires_reponse" => "id_formulaires_reponse",
+               "KEY nom" => "nom",
+               "UNIQUE reponse" => "id_formulaires_reponse,nom",
+       );
+       $tables_principales['spip_formulaires_reponses_champs'] = array(
+               'field' => &$formulaires_reponses_champs,
+               'key' => &$formulaires_reponses_champs_cles
+       );
+       
+       return $tables_principales;
+}
+
+/**
+ * Déclarer les tables auxiliaires de formidable
+ *
+ * @pipeline declarer_tables_auxiliaires
+ * @param array $tables_auxiliaires
+ *     Description des tables
+ * @return array
+ *     Description complétée des tables
+**/
+function formidable_declarer_tables_auxiliaires($tables_auxiliaires){
+       $formulaires_liens = array(
+               "id_formulaire" => "bigint(21) DEFAULT '0' NOT NULL",
+               "id_objet"      => "bigint(21) DEFAULT '0' NOT NULL",
+               "objet" => "VARCHAR (25) DEFAULT '' NOT NULL"
+       );
+
+       $formulaires_liens_cles = array(
+               "PRIMARY KEY" => "id_formulaire,id_objet,objet",
+               "KEY id_formulaire" => "id_formulaire"
+       );
+       
+       $tables_auxiliaires['spip_formulaires_liens'] = array(
+               'field' => &$formulaires_liens,
+               'key' => &$formulaires_liens_cles
+       );
+       
+       return $tables_auxiliaires;
+}
+
+
+
+?>
diff --git a/www/plugins/formidable/css/formidable_analyse.css.html b/www/plugins/formidable/css/formidable_analyse.css.html
new file mode 100644 (file)
index 0000000..3a82a97
--- /dev/null
@@ -0,0 +1,90 @@
+.formidable_analyse .stat {width:70%;}
+
+.progress-bar {
+       background-color: #f1f1f1;
+       height: 20px;
+       padding: 1px;
+       margin: 2px 0;
+       -moz-border-radius: 5px;
+       -webkit-border-radius: 5px;
+       border-radius: 5px;
+       -moz-box-shadow: 0 1px 4px #eee inset, 0 1px 0 #bbb;
+       -webkit-box-shadow: 0 1px 4px #eee inset, 0 1px 0 #bbb;
+       box-shadow: 0 1px 4px #eee inset, 0 1px 0 #bbb;
+       position:relative; /* pour le strong du texte */
+}
+
+.progress-bar strong {
+       color:#000;
+       padding:0 .5em;
+       -webkit-moz-text-shadow: 0 1px 1px #fff;
+       -moz-text-shadow: 0 1px 1px #fff;
+       text-shadow: 0 1px 1px #fff;
+       position:absolute;
+       top:2px;
+       left:0;
+}
+.progress-bar strong small {font-size:90%; font-weight:normal;}
+
+.progress-bar span {
+       background-color: #bbb;
+         background-image: -webkit-gradient(linear, left top, left bottom, from(#bbb), to(#777));
+         background-image: -webkit-linear-gradient(top, #bbb, #777);
+         background-image: -moz-linear-gradient(top, #bbb, #777);
+         background-image: -ms-linear-gradient(top, #bbb, #777);
+         background-image: -o-linear-gradient(top, #bbb, #777);
+         background-image: linear-gradient(top, #bbb, #777); 
+       display: inline-block;
+       height: 100%;
+       -moz-border-radius: 3px;
+       -webkit-border-radius: 3px;
+       border-radius: 3px;
+       -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, .5) inset;
+       -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, .5) inset;
+       box-shadow: 0 1px 0 rgba(255, 255, 255, .5) inset;
+        -webkit-transition: width 2s ease-in-out;
+        -moz-transition: width 2s ease-in-out;
+        -ms-transition: width 2s ease-in-out;
+        -o-transition: width 2s ease-in-out;
+        transition: width 2s ease-in-out;    
+}
+
+.progress-bar.gray span {
+       background-color: #bbb;
+         background-image: -webkit-gradient(linear, left top, left bottom, from(#bbb), to(#777));
+         background-image: -webkit-linear-gradient(top, #bbb, #777);
+         background-image: -moz-linear-gradient(top, #bbb, #777);
+         background-image: -ms-linear-gradient(top, #bbb, #777);
+         background-image: -o-linear-gradient(top, #bbb, #777);
+         background-image: linear-gradient(top, #bbb, #777); 
+}
+
+.progress-bar.blue span {
+       background-color: #34c2e3;
+         background-image: -webkit-gradient(linear, left top, left bottom, from(#34c2e3), to(#13ACD1));
+         background-image: -webkit-linear-gradient(top, #34c2e3, #13ACD1);
+         background-image: -moz-linear-gradient(top, #34c2e3, #13ACD1);
+         background-image: -ms-linear-gradient(top, #34c2e3, #13ACD1);
+         background-image: -o-linear-gradient(top, #34c2e3, #13ACD1);
+         background-image: linear-gradient(top, #34c2e3, #13ACD1);  
+}
+
+.progress-bar.orange span {
+         background-color: #fecf23;
+         background-image: -webkit-gradient(linear, left top, left bottom, from(#fecf23), to(#fd9215));
+         background-image: -webkit-linear-gradient(top, #fecf23, #fd9215);
+         background-image: -moz-linear-gradient(top, #fecf23, #fd9215);
+         background-image: -ms-linear-gradient(top, #fecf23, #fd9215);
+         background-image: -o-linear-gradient(top, #fecf23, #fd9215);
+         background-image: linear-gradient(top, #fecf23, #fd9215);  
+}      
+
+.progress-bar.green span {
+         background-color: #a5df41;
+         background-image: -webkit-gradient(linear, left top, left bottom, from(#a5df41), to(#4ca916));
+         background-image: -webkit-linear-gradient(top, #a5df41, #4ca916);
+         background-image: -moz-linear-gradient(top, #a5df41, #4ca916);
+         background-image: -ms-linear-gradient(top, #a5df41, #4ca916);
+         background-image: -o-linear-gradient(top, #a5df41, #4ca916);
+         background-image: linear-gradient(top, #a5df41, #4ca916);  
+}
diff --git a/www/plugins/formidable/echanger/formulaire/forms.php b/www/plugins/formidable/echanger/formulaire/forms.php
new file mode 100644 (file)
index 0000000..97650d4
--- /dev/null
@@ -0,0 +1,376 @@
+<?php\r
+\r
+// Sécurité\r
+if (!defined("_ECRIRE_INC_VERSION")) return;\r
+\r
+// Importation d'un formulaire forms&table\r
+\r
+function echanger_formulaire_forms_importer_dist($fichier){\r
+       include_spip('inc/xml');\r
+       $arbre = spip_xml_load($fichier, false);\r
+       \r
+       if ($arbre and is_array($arbre) and isset($arbre['forms'])){\r
+               foreach($arbre['forms'] as $forms){\r
+                       foreach ($forms['form'] as $form){\r
+                               $formulaire = array();\r
+\r
+                               $form_source = array(\r
+                                       'id_form' => intval(trim(spip_xml_aplatit($form['id_form']))),\r
+                                       'titre' => trim(spip_xml_aplatit($form['titre'])),\r
+                                       'descriptif' => trim(spip_xml_aplatit($form['descriptif'])),\r
+                                       'texte' => trim(spip_xml_aplatit($form['texte'])),\r
+                                       'email' => unserialize(trim(spip_xml_aplatit($form['email']))),\r
+                                       'moderation' => trim(spip_xml_aplatit($form['moderation'])),\r
+                                       'modifiable' => trim(spip_xml_aplatit($form['modifiable'])),\r
+                                       'multiple' => trim(spip_xml_aplatit($form['multiple'])),\r
+                                       'champconfirm' => trim(spip_xml_aplatit($form['champconfirm'])),\r
+                               );\r
+\r
+                               // configurer le formulaire (titre etc)\r
+                               forms_configure_formulaire($form_source,$formulaire);\r
+\r
+                               // ajouter les champs de saisies\r
+                               foreach($form['fields'] as $fields){\r
+                                       foreach($fields['field'] as $field){\r
+                                               $champ = array(\r
+                                                       'champ'=>trim(spip_xml_aplatit($field['champ'])),\r
+                                                       'titre'=>trim(spip_xml_aplatit($field['titre'])),\r
+                                                       'type'=>trim(spip_xml_aplatit($field['type'])),\r
+                                                       'obligatoire'=>trim(spip_xml_aplatit($field['obligatoire'])),\r
+                                                       'taille'=>trim(spip_xml_aplatit($field['taille'])),\r
+                                                       'extra_info'=>trim(spip_xml_aplatit($field['extra_info'])),\r
+                                                       'aide'=>trim(spip_xml_aplatit($field['aide'])),\r
+                                                       'saisie'=>trim(spip_xml_aplatit($field['saisie'])),\r
+                                               );\r
+\r
+                                               // Les choix pour les types select et multiple\r
+                                               if(isset($field['les_choix']) and is_array($field['les_choix'])){\r
+                                                       $champ['choix'] = array();\r
+                                                       foreach($field['les_choix'] as $les_choix){\r
+                                                               foreach($les_choix['un_choix'] as $un_choix){\r
+                                                                       $champ['choix'][] = array(\r
+                                                                               'choix'=>trim(spip_xml_aplatit($un_choix['choix'])),\r
+                                                                               'titre'=>trim(spip_xml_aplatit($un_choix['titre'])),\r
+                                                                       );\r
+                                                               }\r
+                                                       }\r
+                                               }\r
+\r
+                                               if ($saisie = forms_champ_vers_saisie($champ))\r
+                                                       $formulaire['saisies'][] = $saisie;\r
+                                       }\r
+                               }\r
+                               \r
+                               // les traitements\r
+                               forms_configure_traitement_formulaire($form_source,$formulaire);\r
+                               $id_formulaire = forms_importe_en_base($formulaire);\r
+                       }\r
+               }\r
+       }\r
+       \r
+       if ($id_formulaire){\r
+               return $id_formulaire;\r
+       }\r
+       else{\r
+               return _T('formidable:erreur_importer_forms');\r
+       }\r
+}\r
+\r
+/**\r
+ * Importer le tableau $formulaire en base\r
+ * @param array $formulaire\r
+ * @return bool|int\r
+ */\r
+function forms_importe_en_base($formulaire){\r
+       include_spip('action/editer_formulaire');\r
+       // On insère un nouveau formulaire\r
+       // cas utilise par l'installation/import f&t\r
+       if (isset($formulaire['id_formulaire']) AND !sql_countsel("spip_formulaires","id_formulaire=".intval($formulaire['id_formulaire']))){\r
+               $champs = array(\r
+                       'id_formulaire' => $formulaire['id_formulaire'],\r
+                       'statut' => 'prop',\r
+                       'date_creation' => date('Y-m-d H:i:s'),\r
+               );\r
+               // Envoyer aux plugins\r
+               $champs = pipeline('pre_insertion',\r
+                       array(\r
+                               'args' => array(\r
+                                       'table' => 'spip_formulaires',\r
+                               ),\r
+                               'data' => $champs\r
+                       )\r
+               );\r
+               $id_formulaire = sql_insertq("spip_formulaires", $champs);\r
+\r
+               pipeline('post_insertion',\r
+                       array(\r
+                               'args' => array(\r
+                                       'table' => 'spip_formulaires',\r
+                                       'id_objet' => $id_formulaire\r
+                               ),\r
+                               'data' => $champs\r
+                       )\r
+               );\r
+       }\r
+       else\r
+               $id_formulaire = formulaire_inserer();\r
+\r
+       $formulaire['saisies'] = forms_regroupe_saisies_fieldset($formulaire['saisies']);\r
+\r
+       if (is_array($formulaire['saisies']))\r
+               $formulaire['saisies'] = serialize($formulaire['saisies']);\r
+       if (is_array($formulaire['traitements']))\r
+               $formulaire['traitements'] = serialize($formulaire['traitements']);\r
+\r
+       // si l'identifiant existe deja (multiples imports du meme form)\r
+       // le dater\r
+       if (sql_countsel("spip_formulaires","identifiant=".sql_quote($formulaire['identifiant']))){\r
+               $formulaire['identifiant'] .= "_".date('Ymd_His');\r
+       }\r
+\r
+       // Si ok on modifie les champs de base\r
+       if ($id_formulaire>0\r
+               AND !($erreur = formulaire_modifier($id_formulaire, $formulaire))){\r
+\r
+               return $id_formulaire;\r
+       }\r
+\r
+       return false;\r
+}\r
+\r
+/**\r
+ * Configuration de l'objet formulaire formidable a partir du form f&t\r
+ * @param array $form\r
+ * @param array $formulaire\r
+ */\r
+function forms_configure_formulaire($form,&$formulaire){\r
+\r
+       // Le titre\r
+       $formulaire['titre'] = ($form['titre'] ? $form['titre'] : _T('info_sans_titre'));\r
+\r
+       // Generer un identifiant\r
+       // si id_form fourni, on s'en sert\r
+       if (isset($form['id_form'])){\r
+               $formulaire['identifiant'] = "form_import_".$form['id_form'];\r
+       }\r
+       else {\r
+               $formulaire['identifiant'] = "form_import_".preg_replace(",\W,","_",strtolower($formulaire['titre']));\r
+       }\r
+\r
+       // Le descriptif\r
+       $formulaire['descriptif'] = (isset($form['descriptif']) ? $form['descriptif'] : '');\r
+\r
+       // Le message de retour si ok\r
+       $formulaire['message_retour'] = (isset($form['texte']) ? $form['texte'] : '');\r
+\r
+       if (!isset($formulaire['traitements']))\r
+               $formulaire['traitements'] = array();\r
+\r
+       if (!isset($formulaire['saisies']))\r
+               $formulaire['saisies'] = array();\r
+}\r
+\r
+/**\r
+ * Configurer les traitements\r
+ *\r
+ * @param array $form\r
+ * @param array $formulaire\r
+ */\r
+function forms_configure_traitement_formulaire($form,&$formulaire){\r
+       // Le traitement email\r
+       if ($form['champconfirm']){\r
+               if (!isset($formulaire['traitements']['email']))\r
+                       $formulaire['traitements']['email'] = array();\r
+               $formulaire['traitements']['email']['champ_courriel_destinataire_form'] = $form['champconfirm'];\r
+       }\r
+\r
+       // $form['email'] est possiblement serialize\r
+       if (is_string($form['email']) AND $a=unserialize($form['email']))\r
+               $form['email'] = $a;\r
+       if (is_array($form['email'])){\r
+\r
+               if ($email_defaut = $form['email']['defaut']){\r
+                       if (!isset($formulaire['traitements']['email']))\r
+                               $formulaire['traitements']['email'] = array();\r
+                       $formulaire['traitements']['email']['destinataires_plus'] = $email_defaut;\r
+               }\r
+\r
+               // TODO email route : feature qui n'existe pas dans formidable\r
+               if ($route = $form['email']['route']){\r
+\r
+               }\r
+       }\r
+\r
+       // Le traitement enregistrement : toujours\r
+       $formulaire['traitements']['enregistrement'] = array(\r
+               'moderation' => ($form['moderation'] == 'priori') ? 'priori' : 'posteriori',\r
+               'modifiable' => ($form['modifiable'] == 'oui') ? 'on' : '',\r
+               'multiple' => ($form['multiple'] == 'non') ? '' : 'on'\r
+       );\r
+\r
+}\r
+\r
+\r
+/**\r
+ * On a genere un fieldset pour chaque separateur de f&t\r
+ * il faut le peupler avec les saisies qui le suivent\r
+ *\r
+ * @param array $saisies\r
+ * @return array\r
+ */\r
+function forms_regroupe_saisies_fieldset($saisies){\r
+       $s = array();\r
+       $ins = &$s;\r
+\r
+       foreach($saisies as $k=>$saisie){\r
+               if ($saisie['saisie']=='fieldset'){\r
+                       if (!isset($saisies[$k]['saisies']))\r
+                               $saisies[$k]['saisies'] = array();\r
+                       $ins = &$saisies[$k]['saisies'];\r
+                       $s[] = &$saisies[$k];\r
+               }\r
+               else\r
+                       $ins[] = &$saisies[$k];\r
+       }\r
+\r
+       return $s;\r
+}\r
+\r
+/**\r
+ * Transforme un champ f&t en Saisie\r
+ * @param array $champ\r
+ *   string champ\r
+ *   string titre\r
+ *   string type\r
+ *   string obligatoire\r
+ *   string taille\r
+ *   string aide\r
+ *   string extra_info\r
+ *   string saisie oui/non\r
+ *   array choix\r
+ *     string choix\r
+ *     string titre\r
+ * @return array|bool\r
+ */\r
+function forms_champ_vers_saisie($champ){\r
+\r
+       // Le truc par défaut\r
+       $saisie = array(\r
+               'saisie' => 'input',\r
+               'options' => array('size'=>40)\r
+       );\r
+\r
+       // On essaye de traduire tous les types de champs\r
+       $type = $champ['type'];\r
+       switch ($type){\r
+               case 'texte':\r
+                       $saisie['saisie'] = 'textarea';\r
+                       unset($saisie['options']['size']);\r
+                       $saisie['options']['rows'] = 5;\r
+                       $saisie['options']['cols'] = 40;\r
+                       break;\r
+               case 'password':\r
+                       $saisie['options']['type'] = 'password';\r
+                       break;\r
+               case 'date':\r
+                       $saisie['saisie'] = 'date';\r
+                       $saisie['verifier'] = array(\r
+                               'type' => 'date'\r
+                       );\r
+                       break;\r
+               case 'num':\r
+               case 'monnaie':\r
+                       if (!isset($champ['taille']) OR !intval($taille = $champ['taille'])){\r
+                               $saisie['verifier'] = array(\r
+                                       'type' => 'entier'\r
+                               );\r
+                       }\r
+                       else {\r
+                               $saisie['verifier'] = array(\r
+                                       'type' => 'decimal'\r
+                               );\r
+                               $saisie['verifier']['options'] = array('nb_decimales' => $taille);\r
+                       }\r
+                       break;\r
+               case 'email':\r
+                       $saisie['verifier'] = array(\r
+                               'type' => 'email'\r
+                       );\r
+                       break;\r
+               case 'telephone':\r
+                       $saisie['verifier'] = array(\r
+                               'type' => 'telephone'\r
+                       );\r
+                       break;\r
+               case 'select':\r
+                       unset($saisie['options']['size']);\r
+                       $liste = $champ['extra_info'];\r
+                       if ($liste == 'radio')\r
+                               $saisie['saisie'] = 'radio';\r
+                       else\r
+                               $saisie['saisie'] = 'selection';\r
+                       break;\r
+               case 'multiple':\r
+                       $saisie['saisie'] = 'checkbox';\r
+                       unset($saisie['options']['size']);\r
+                       break;\r
+               case 'mot':\r
+                       $saisie['saisie'] = 'mot';\r
+                       $saisie['options']['id_groupe'] = $champ['extra_info'];\r
+                       unset($saisie['options']['size']);\r
+                       break;\r
+               case 'textestatique':\r
+                       $saisie['saisie'] = 'explication';\r
+                       unset($saisie['options']['size']);\r
+                       $saisie['options']['texte'] = $champ['titre'];\r
+                       unset($champ['titre']);\r
+                       unset($champ['aide']);\r
+                       break;\r
+               case 'separateur':\r
+                       $saisie['saisie'] = 'fieldset';\r
+                       $saisie['saisies'] = array();\r
+                       unset($saisie['options']['size']);\r
+                       break;\r
+               case 'fichier':\r
+                       // TODO saisie file NIY\r
+                       $saisie = null;\r
+                       break;\r
+       }\r
+\r
+       // On continue seulement si on a toujours une saisie\r
+       if (!$saisie)\r
+               return false;\r
+\r
+       // Les choix pour les types select et multiple\r
+       if(isset($champ['choix']) and is_array($champ['choix'])){\r
+               $saisie['options']['datas'] = array();\r
+               foreach($champ['choix'] as $un_choix){\r
+                       $choix = $un_choix['choix'];\r
+                       $titre = $un_choix['titre'];\r
+                       $saisie['options']['datas'][$choix] = $titre;\r
+               }\r
+       }\r
+\r
+       // Le nom\r
+       $saisie['options']['nom'] = $champ['champ'];\r
+\r
+       // Le label\r
+       if (isset($champ['titre']) AND $champ['titre'])\r
+               $saisie['options']['label'] = $champ['titre'];\r
+\r
+       // Obligatoire\r
+       if (isset($champ['obligatoire']) AND $champ['obligatoire'] == 'oui')\r
+               $saisie['options']['obligatoire'] = 'on';\r
+\r
+       // Explication éventuelle\r
+       if (isset($champ['aide']) AND $explication = $champ['aide'])\r
+               $saisie['options']['explication'] = $explication;\r
+\r
+       if (isset($champ['saisie']) AND $champ['saisie']=='non'){\r
+               $saisie['options']['disable'] = 'on';\r
+               // masquer en JS, fallback\r
+               $saisie['options']['afficher_si'] = 'false';\r
+       }\r
+\r
+       return $saisie;\r
+}\r
diff --git a/www/plugins/formidable/echanger/formulaire/wcs.php b/www/plugins/formidable/echanger/formulaire/wcs.php
new file mode 100644 (file)
index 0000000..4151a5a
--- /dev/null
@@ -0,0 +1,174 @@
+<?php
+
+// Sécurité
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+function echanger_formulaire_wcs_importer_dist($fichier){
+       include_spip('inc/xml');
+       include_spip('inc/filtres');
+       include_spip('inc/saisies');
+       $arbre = spip_xml_load($fichier, false);
+       
+       if ($arbre and is_array($arbre) and isset($arbre['formdef'])){
+               foreach($arbre['formdef'] as $form){
+                       $formulaire = array();
+                       
+                       // Le titre
+                       $titre = filtrer_entites(trim(spip_xml_aplatit($form['name'])));
+                       $formulaire['titre'] = $titre ? $titre : _T('info_sans_titre');
+                       
+                       // On vérifie que l'identifiant n'existe pas déjà
+                               $formulaire['identifiant'] = str_replace('-', '_', trim(spip_xml_aplatit($form['url_name'])));
+                               $deja = sql_getfetsel(
+                                       'id_formulaire',
+                                       'spip_formulaires',
+                                       'identifiant = '.sql_quote($formulaire['identifiant'])
+                               );
+                               if ($deja)
+                                       $formulaire['identifiant'] = $formulaire['identifiant'].'_'.time();
+                       
+                       // Les champs
+                       $formulaire['saisies'] = array();
+                       // Par défaut le conteneur c'est le formulaire
+                       $conteneur =& $formulaire;
+                       foreach($form['fields'] as $fields){
+                               foreach($fields['field'] as $field){
+                                       $changer_conteneur = false;
+                                       
+                                       // Le truc par défaut
+                                       $saisie = array(
+                                               'saisie' => 'input',
+                                               'options' => array('size'=>40)
+                                       );
+                                       
+                                       // Le label
+                                       $saisie['options']['label'] = filtrer_entites(trim(spip_xml_aplatit($field['label'])));
+                                       
+                                       // On essaye de traduire tous les types de champs
+                                       $type = trim(spip_xml_aplatit($field['type']));
+                                       switch ($type){
+                                               case 'string':
+                                                       if ($size = intval(trim(spip_xml_aplatit($field['size'])))){
+                                                               $saisie['options']['maxlength'] = $size;
+                                                               $saisie['verifier'] = array(
+                                                                       'type' => 'taille',
+                                                                       'options' => array('max'=>$size)
+                                                               );
+                                                       }
+                                                       break;
+                                               case 'text':
+                                                       $saisie['saisie'] = 'textarea';
+                                                       unset($saisie['options']['size']);
+                                                       $saisie['options']['rows'] = 5;
+                                                       $saisie['options']['cols'] = 40;
+                                                       if ($rows = intval(trim(spip_xml_aplatit($field['rows'])))){
+                                                               $saisie['options']['rows'] = $rows;
+                                                       }
+                                                       if ($cols = intval(trim(spip_xml_aplatit($field['cols'])))){
+                                                               $saisie['options']['cols'] = $cols;
+                                                       }
+                                                       break;
+                                               case 'date':
+                                                       $saisie['verifier'] = array(
+                                                               'type' => 'date'
+                                                       );
+                                                       break;
+                                               case 'email':
+                                                       $saisie['verifier'] = array(
+                                                               'type' => 'email'
+                                                       );
+                                                       break;
+                                               case 'item':
+                                                       unset($saisie['options']['size']);
+                                                       $saisie['saisie'] = 'selection';
+                                                       $saisie['options']['cacher_option_intro'] = 'on';
+                                                       break;
+                                               case 'bool':
+                                                       unset($saisie['options']['size']);
+                                                       $saisie['saisie'] = 'case';
+                                                       $saisie['options']['label_case'] = $saisie['options']['label'];
+                                                       unset($saisie['options']['label']);
+                                                       break;
+                                               case 'multiple':
+                                                       $saisie['saisie'] = 'checkbox';
+                                                       unset($saisie['options']['size']);
+                                                       break;
+                                               case 'comment':
+                                                       $saisie['saisie'] = 'explication';
+                                                       $saisie['options']['texte'] = $saisie['options']['label'];
+                                                       unset($saisie['options']['label']);
+                                                       break;
+                                               case 'page':
+                                                       $saisie['saisie'] = 'fieldset';
+                                                       unset($saisie['options']['size']);
+                                                       $saisie['saisies'] = array();
+                                                       $changer_conteneur = true;
+                                                       // On remet le conteneur au niveau du formulaire
+                                                       $conteneur =& $formulaire;
+                                                       break;
+                                               case 'subtitle':
+                                               case 'file':
+                                                       $saisie = null;
+                                       }
+                                       
+                                       // On continue seulement si on a toujours une saisie
+                                       if ($saisie){
+                                               // Les choix pour les types select
+                                               if(isset($field['items']) and is_array($field['items'])){
+                                                       $saisie['options']['datas'] = array();
+                                                       foreach($field['items'] as $items){
+                                                               foreach($items['item'] as $cle=>$item){
+                                                                       $titre = filtrer_entites(trim($item));
+                                                                       $saisie['options']['datas']['choix_'.$cle] = $titre;
+                                                               }
+                                                       }
+                                               }
+                                       
+                                               // Le nom
+                                               $saisie['options']['nom'] = saisies_generer_nom($formulaire['saisies'], $saisie['saisie']);
+                                       
+                                               // Obligatoire
+                                               if (trim(spip_xml_aplatit($field['required'])) == 'True')
+                                                       $saisie['options']['obligatoire'] = 'on';
+                                       
+                                               // Explication éventuelle
+                                               if ($explication = trim(spip_xml_aplatit($field['hint'])))
+                                                       $saisie['options']['explication'] = $explication;
+                                       
+                                               // On ajoute enfin la saisie
+                                               $conteneur['saisies'][] = $saisie;
+                                               
+                                               // Faut-il changer de conteneur ?
+                                               if ($changer_conteneur){
+                                                       $conteneur =& $conteneur['saisies'][count($conteneur['saisies'])-1];
+                                               }
+                                       }
+                               }
+                       }
+                       
+                       include_spip('action/editer_formulaire');
+                       // On insère un nouveau formulaire
+                       $id_formulaire = formulaire_inserer();
+                       // Si ça a marché on transforme les tableaux et on modifie les champs
+                       if ($id_formulaire > 0){
+                               if (is_array($formulaire['saisies'])){
+                                       $formulaire['saisies'] = serialize($formulaire['saisies']);
+                               }
+                               if (is_array($formulaire['traitements'])){
+                                       $formulaire['traitements'] = serialize($formulaire['traitements']);
+                               }
+                               
+                               $erreur = formulaire_modifier($id_formulaire, $formulaire);
+                       }
+               }
+       }
+       
+       if ($id_formulaire and !$erreur){
+               return $id_formulaire;
+       }
+       else{
+               return _T('formidable:erreur_importer_yaml').' : '.$erreur;
+       }
+}
+
+?>
diff --git a/www/plugins/formidable/echanger/formulaire/yaml.php b/www/plugins/formidable/echanger/formulaire/yaml.php
new file mode 100644 (file)
index 0000000..061f66d
--- /dev/null
@@ -0,0 +1,81 @@
+<?php
+
+// Sécurité
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+function echanger_formulaire_yaml_exporter_dist($id_formulaire){
+       include_spip('base/abstract_sql');
+       include_spip('inc/yaml');
+       $id_formulaire = intval($id_formulaire);
+       $export = '';
+       
+       if ($id_formulaire > 0){
+               // On récupère le formulaire
+               $formulaire = sql_fetsel(
+                       '*',
+                       'spip_formulaires',
+                       'id_formulaire = '.$id_formulaire
+               );
+               
+               // On décompresse les trucs sérialisés
+               $formulaire['saisies'] = unserialize($formulaire['saisies']);
+               $formulaire['traitements'] = unserialize($formulaire['traitements']);
+               
+               // On envode en yaml
+               $export = yaml_encode($formulaire);
+       }
+       
+       Header("Content-Type: text/x-yaml;");
+       Header('Content-Disposition: attachment; filename=formulaire-'.$formulaire['identifiant'].'.yaml');
+       Header("Content-Length: ".strlen($export));
+       echo $export;
+       exit();
+}
+
+function echanger_formulaire_yaml_importer_dist($fichier){
+       $yaml = '';
+       lire_fichier($fichier, $yaml);
+       // Si on a bien recupere une chaine on tente de la decoder
+       if ($yaml){
+               include_spip('inc/yaml');
+               $formulaire = yaml_decode($yaml);
+               // Si le decodage marche on importe alors le contenu
+               if (is_array($formulaire)){
+                       include_spip('action/editer_formulaire');
+                       // On enlève les champs inutiles
+                       unset($formulaire['id_formulaire']);
+                       // On vérifie que l'identifiant n'existe pas déjà
+                       $deja = sql_getfetsel(
+                               'id_formulaire',
+                               'spip_formulaires',
+                               'identifiant = '.sql_quote($formulaire['identifiant'])
+                       );
+                       if ($deja){
+                               $formulaire['identifiant'] .= '_'.date('Ymd_His');
+                       }
+                       
+                       // On insère un nouveau formulaire
+                       $id_formulaire = formulaire_inserer();
+                       // Si ça a marché on transforme les tableaux et on modifie les champs
+                       if ($id_formulaire > 0){
+                               if (is_array($formulaire['saisies'])){
+                                       $formulaire['saisies'] = serialize($formulaire['saisies']);
+                               }
+                               if (is_array($formulaire['traitements'])){
+                                       $formulaire['traitements'] = serialize($formulaire['traitements']);
+                               }
+                               
+                               $erreur = formulaire_modifier($id_formulaire, $formulaire);
+                       }
+               }
+       }
+       
+       if ($id_formulaire and !$erreur){
+               return $id_formulaire;
+       }
+       else{
+               return _T('formidable:erreur_importer_yaml').' : '.$erreur;
+       }
+}
+
+?>
diff --git a/www/plugins/formidable/exec/puce_statut_formulaires.php b/www/plugins/formidable/exec/puce_statut_formulaires.php
new file mode 100644 (file)
index 0000000..6aadef3
--- /dev/null
@@ -0,0 +1,57 @@
+<?php
+
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+/**
+ * Gestion des puces d'action rapide de formulaires
+ *
+ * @package SPIP\Formidable\Puce_statut
+**/
+
+include_spip('inc/presentation');
+
+/**
+ * Gestion de l'affichage ajax des puces d'action rapide de formulaires
+ *
+ * Récupère l'identifiant id et le type d'objet dans les données postées
+ * et appelle la fonction de traitement de cet exec.
+ * 
+ * @see exec_puce_statut_formulaires_args()
+ * @return string Code HTML
+**/
+function exec_puce_statut_formulaires_dist()
+{
+       exec_puce_statut_formulaires_args(_request('id'),  _request('type'));
+}
+
+/**
+ * Traitement de l'affichage ajax des puces d'action rapide
+ *
+ * Appelle la fonction de traitement des puces statuts
+ * après avoir retrouvé le statut en cours de l'objet
+ * et son parent s'il en a un
+ * 
+ * @param int $id
+ *     Identifiant de l'objet
+ * @param string $type
+ *     Type d'objet
+ * @return string Code HTML
+**/
+function exec_puce_statut_formulaires_args($id, $type)
+{
+       if (in_array($type,array('formulaires','formulaires_reponse'))) {
+               $table = table_objet_sql($type);
+               $prim = id_table_objet($type);
+               $id = intval($id);
+               $r = sql_fetsel("id_formulaire,statut", "$table", "$prim=$id");
+               $statut = $r['statut'];
+               $id_formulaire = $r['id_formulaire'];
+       } else {
+               $id_formulaire = intval($id);
+               $statut = 'prop'; // arbitraire
+       }
+       $puce_statut = charger_fonction('puce_statut', 'inc');
+       ajax_retour($puce_statut($id,$statut,$id_formulaire,$type, true));
+}
+
+?>
diff --git a/www/plugins/formidable/formidable_administrations.php b/www/plugins/formidable/formidable_administrations.php
new file mode 100644 (file)
index 0000000..428fe29
--- /dev/null
@@ -0,0 +1,345 @@
+<?php
+
+/**
+ * Fichier gérant l'installation et désinstallation du plugin
+ *
+ * @package SPIP\Formidable\Installation
+**/
+
+// Sécurité
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+/**
+ * Installation/maj des tables de formidable...
+ *
+ * @param string $nom_meta_base_version
+ *     Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
+ * @param string $version_cible
+ *     Version du schéma de données dans ce plugin (déclaré dans paquet.xml)
+ * @return void
+ */
+function formidable_upgrade($nom_meta_base_version, $version_cible){
+       // Création des tables
+       include_spip('base/create');
+       include_spip('base/abstract_sql');
+
+       $maj = array();
+       $maj['create'] = array(
+               array('maj_tables',array(
+                       'spip_formulaires',
+                       'spip_formulaires_reponses',
+                       'spip_formulaires_reponses_champs',
+                       'spip_formulaires_liens')),
+               array('formidable_importer_forms'),
+               array('formidable_importer_forms_donnees'),
+               array('formidable_associer_forms'),
+       );
+
+       // Ajout du choix de ce qu'on affiche à la fin des traitements
+       $maj['0.4.0'] = array(array('maj_tables',array('spip_formulaires')));
+       // Ajout d'une URL de redirection
+       $maj['0.5.0'] = array(array('maj_tables',array('spip_formulaires')));
+       // Modif du type du message de retour pour pouvoir mettre plus de chose
+       $maj['0.5.1'] = array(array('sql_alter','TABLE spip_formulaires CHANGE message_retour message_retour text NOT NULL default ""'));
+       // Passer le champ saisies en longtext pour permettre d'y stocker des formulaires longs
+       $maj['0.5.2'] = array(array('sql_alter','TABLE spip_formulaires CHANGE saisies saisies longtext NOT NULL default ""'));
+       // Ajouter un champ date de création
+       $maj['0.5.3'] = array(array('sql_alter','TABLE spip_formulaires ADD date_crea datetime NOT NULL DEFAULT "0000-00-00 00:00:00"'));
+       // Renommer la date de création (pas d'abbréviations dans les noms)
+       $maj['0.5.5'] = array(array('sql_alter','TABLE spip_formulaires CHANGE date_crea date_creation datetime NOT NULL DEFAULT "0000-00-00 00:00:00"'));
+
+       // statut publie sur les formulaires sans statut
+       $maj['0.5.6'] = array(
+               array('sql_updateq','spip_formulaires',array('statut'=>'publie'),"statut=".sql_quote('')),
+       );
+
+       $maj['0.6.0'] = array(
+               array('sql_alter','TABLE spip_formulaires_reponses_champs RENAME TO spip_formulaires_reponses_champs_bad'),
+               array('maj_tables',array('spip_formulaires_reponses_champs')),
+               array('formidable_transferer_reponses_champs'),
+               array('sql_drop_table','spip_formulaires_reponses_champs_bad'),
+       );
+       $maj['0.6.1'] = array(
+               array('formidable_unifier_reponses_champs'),
+       );
+       $maj['0.6.3'] = array(
+               array('sql_alter','TABLE spip_formulaires_reponses_champs ADD UNIQUE reponse (id_formulaires_reponse,nom)'),
+       );
+       $maj['0.6.4'] = array(
+               // champ resume_reponse
+               array('maj_tables',array('spip_formulaires')),
+       );
+
+       include_spip('base/upgrade');
+       maj_plugin($nom_meta_base_version, $version_cible, $maj);
+}
+
+
+function formidable_unifier_reponses_champs(){
+
+       $rows = sql_allfetsel("DISTINCT id_formulaires_reponses_champ,id_formulaires_reponse,nom,count(id_formulaires_reponse) AS N","spip_formulaires_reponses_champs",'nom LIKE '.sql_quote('multiple%').' OR nom LIKE '.sql_quote('mot%'),'concat( id_formulaires_reponse, nom )','id_formulaires_reponse','0,100','N>1');
+       do {
+
+
+               foreach($rows as $row){
+
+                       #var_dump($row);
+
+                       // pour chaque reponse on recupere tous les champs
+                       $reponse = sql_allfetsel("*","spip_formulaires_reponses_champs","id_formulaires_reponse=".intval($row['id_formulaires_reponse']));
+                       spip_log("id_formulaires_reponse ".$row['id_formulaires_reponse'],"formidable_unifier_reponses_champs"._LOG_INFO_IMPORTANTE);
+                       // on les reinsere un par un dans la nouvelle table propre
+                       $data = array();
+                       foreach($reponse as $champ){
+                               $data[$champ['nom']][] = $champ;
+                       }
+
+                       foreach($data as $nom=>$champs){
+                               if (count($champs)>1){
+                                       #var_dump($champs);
+                                       $keep = $champs[0]['id_formulaires_reponses_champ'];
+                                       $delete = array();
+                                       $valeurs = array();
+                                       foreach($champs as $champ){
+                                               $valeurs[] = $champ['valeur'];
+                                               if ($champ['id_formulaires_reponses_champ']!==$keep)
+                                                       $delete[] = $champ['id_formulaires_reponses_champ'];
+                                       }
+                                       $valeurs = serialize($valeurs);
+                                       #var_dump($valeurs);
+                                       #var_dump($keep);
+                                       #var_dump($delete);
+                                       sql_updateq('spip_formulaires_reponses_champs',array('valeur'=>$valeurs),'id_formulaires_reponses_champ='.intval($keep));
+                                       sql_delete('spip_formulaires_reponses_champs',sql_in('id_formulaires_reponses_champ',$delete));
+                                       //die();
+                               }
+                       }
+                       #var_dump($data);
+                       //die('nothing?');
+
+                       if (time()>_TIME_OUT)
+                               return;
+               }
+
+               if (time()>_TIME_OUT)
+                       return;
+
+       }
+       while ($rows = sql_allfetsel("DISTINCT id_formulaires_reponses_champ,id_formulaires_reponse,nom,count( id_formulaires_reponse ) AS N","spip_formulaires_reponses_champs",'nom LIKE '.sql_quote('multiple%').' OR nom LIKE '.sql_quote('mot%'),'concat( id_formulaires_reponse, nom )','id_formulaires_reponse','0,100','N>1'));
+       //die('fini?');
+}
+
+
+function formidable_transferer_reponses_champs(){
+
+       $rows = sql_allfetsel("DISTINCT id_formulaires_reponse","spip_formulaires_reponses_champs_bad",'','id_formulaires_reponse','','0,100');
+       do {
+
+               foreach($rows as $row){
+
+                       // pour chaque reponse on recupere tous les champs
+                       $reponse = sql_allfetsel("*","spip_formulaires_reponses_champs_bad","id_formulaires_reponse=".intval($row['id_formulaires_reponse']));
+                       // on les reinsere un par un dans la nouvelle table propre
+                       foreach($reponse as $champ){
+                               sql_insertq("spip_formulaires_reponses_champs",$champ);
+                       }
+                       // et on les vire de la mauvaise
+                       sql_delete("spip_formulaires_reponses_champs_bad","id_formulaires_reponse=".intval($row['id_formulaires_reponse']));
+
+                       if (time()>_TIME_OUT)
+                               return;
+               }
+
+               if (time()>_TIME_OUT)
+                       return;
+
+       }
+       while ($rows = sql_allfetsel("DISTINCT id_formulaires_reponse","spip_formulaires_reponses_champs_bad",'','id_formulaires_reponse','','0,100'));
+
+}
+
+
+/**
+ * Désinstallation/suppression des tables de formidable
+ *
+ * @param string $nom_meta_base_version
+ *     Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
+ * @return void
+ */
+function formidable_vider_tables($nom_meta_base_version){
+
+       include_spip('inc/meta');
+       include_spip('base/abstract_sql');
+
+       // On efface les tables du plugin
+       sql_drop_table('spip_formulaires');
+       sql_drop_table('spip_formulaires_reponses');
+       sql_drop_table('spip_formulaires_reponses_champs');
+       sql_drop_table('spip_formulaires_liens');
+
+       // on efface les champs d'import de f&t si il y a lieu
+       $trouver_table = charger_fonction("trouver_table","base");
+       if ($trouver_table('spip_forms')){
+               sql_alter("TABLE spip_forms DROP id_formulaire");
+       }
+       if ($trouver_table('spip_forms_donnees')){
+               sql_alter("TABLE spip_forms_donnees DROP id_formulaires_reponse");
+       }
+
+
+       // On efface la version entregistrée
+       effacer_meta($nom_meta_base_version);
+}
+
+/**
+ * Associer les <formXX> issus de f&t aux articles concernes
+ */
+function formidable_associer_forms(){
+       include_spip("inc/rechercher");
+       include_spip("inc/editer_liens");
+       $forms = sql_allfetsel("*","spip_formulaires","identifiant REGEXP ".sql_quote('^form[0-9]+$'));
+       foreach($forms as $form){
+               if (!sql_countsel("spip_formulaires_liens","id_formulaire=".intval($form['id_formulaire']))){
+                       $articles = array();
+                       $id = $form['identifiant'];
+                       #var_dump($id);
+                       $res = recherche_en_base("/<{$id}[>|]/","article");
+                       #var_dump($res);
+                       if (count($res) AND isset($res['article'])){
+                               foreach($res['article'] as $id_article=>$details){
+                                       $articles[] = $id_article;
+                               }
+                       }
+                       #var_dump($form['id_formulaire']);
+                       #var_dump($articles);
+                       objet_associer(array('formulaire'=>array($form['id_formulaire'])),array('article'=>$articles));
+               }
+               if (time()>_TIME_OUT)
+                       return;
+       }
+}
+
+/**
+ * Importer les formulaires de f&t
+ */
+function formidable_importer_forms(){
+       $trouver_table = charger_fonction("trouver_table","base");
+       if ($trouver_table('spip_forms')){
+               sql_alter("TABLE spip_forms ADD id_formulaire bigint(21) NOT NULL DEFAULT 0");
+
+               include_spip("echanger/formulaire/forms");
+
+               $forms = sql_allfetsel("*","spip_forms",'id_formulaire=0 AND type_form='.sql_quote('')." OR type_form=".sql_quote('sondage'),'','id_form');
+               foreach($forms as $form){
+                       $formulaire = array();
+                       // configurer le formulaire (titre etc)
+                       forms_configure_formulaire($form,$formulaire);
+
+                       // identifiant formXX puisqu'on est en installation, pas de risque de conflits
+                       // et facilite la migration de modele
+                       $formulaire['identifiant'] = "form".$form['id_form'];
+                       // on peut faire ca aussi puisqu'on est a l'installation
+                       $formulaire['id_formulaire'] = $form['id_form'];
+
+                       $fields = sql_allfetsel("*","spip_forms_champs","id_form=".intval($form['id_form']),"","rang");
+                       foreach($fields as $field){
+                               $choix = sql_allfetsel("*","spip_forms_champs_choix","id_form=".intval($form['id_form'])." AND champ=".sql_quote($field['champ']),'','rang');
+                               if (count($choix))
+                                       $field['choix'] = $choix;
+
+                               if ($saisie = forms_champ_vers_saisie($field))
+                                       $formulaire['saisies'][] = $saisie;
+                       }
+
+                       // les traitements
+                       forms_configure_traitement_formulaire($form,$formulaire);
+
+                       // si ce formulaire a des reponses on le met en publie
+                       if (sql_countsel("spip_forms_donnees","id_form=".intval($form['id_form'])))
+                               $formulaire['statut'] = 'publie';
+
+                       $id_formulaire = forms_importe_en_base($formulaire);
+                       spip_log("Import spip_forms #".$form['id_form']." en spip_formulaires #$id_formulaire","maj"._LOG_INFO_IMPORTANTE);
+
+                       sql_update('spip_forms',array('id_formulaire'=>$id_formulaire),'id_form='.intval($form['id_form']));
+
+                       if (time()>_TIME_OUT)
+                               return;
+               }
+
+       }
+
+       include_spip("inc/drapeau_edition");
+       debloquer_tous($GLOBALS['visiteur_session']['id_auteur']);
+}
+
+function formidable_importer_forms_donnees(){
+       $trouver_table = charger_fonction("trouver_table","base");
+       if ($trouver_table('spip_forms')){
+               sql_alter("TABLE spip_forms_donnees ADD id_formulaires_reponse bigint(21) NOT NULL DEFAULT 0");
+
+               // 2 champs de plus pour ne pas perdre des donnees
+               sql_alter("TABLE spip_formulaires_reponses ADD url varchar(255) NOT NULL default ''");
+               sql_alter("TABLE spip_formulaires_reponses ADD confirmation varchar(10) NOT NULL default ''");
+
+               // table de correspondance id_form=>id_formulaire
+               $rows = sql_allfetsel("id_form,id_formulaire","spip_forms","id_formulaire>0");
+               $trans = array();
+               foreach($rows as $row)
+                       $trans[$row['id_form']] = $row['id_formulaire'];
+
+               $rows = sql_allfetsel("*","spip_forms_donnees",sql_in('id_form',array_keys($trans))." AND id_formulaires_reponse=0",'','id_donnee','0,100');
+               do {
+
+                       foreach($rows as $row){
+
+                               #var_dump($row);
+                               $reponse = array(
+                                       "id_formulaires_reponse"=>$row['id_donnee'], // conserver le meme id par facilite (on est sur une creation de base)
+                                       "id_formulaire" => $trans[$row['id_form']],
+                                       "date" => $row["date"],
+                                       "ip" => $row["ip"],
+                                       "id_auteur" => $row["id_auteur"],
+                                       "cookie" => $row["cookie"],
+                                       "statut" => $row["statut"],
+                                       "url" => $row["url"],
+                                       "confirmation" => $row["confirmation"],
+                               );
+
+                               #var_dump($reponse);
+                               $id_formulaires_reponse = sql_insertq("spip_formulaires_reponses",$reponse);
+                               #var_dump($id_formulaires_reponse);
+                               if ($id_formulaires_reponse){
+                                       $donnees = sql_allfetsel("$id_formulaires_reponse as id_formulaires_reponse,champ as nom,valeur","spip_forms_donnees_champs","id_donnee=".intval($row['id_donnee']));
+                                       $data = array();
+                                       foreach($donnees AS $donnee){
+                                               $data[$donnee['nom']][] = $donnee;
+                                       }
+                                       $ins = array();
+                                       foreach($data as $nom=>$valeurs){
+                                               if (count($valeurs)==1)
+                                                       $ins[] = reset($valeurs);
+                                               else {
+                                                       $v = array();
+                                                       foreach($valeurs as $valeur)
+                                                               $v[] = $valeur['valeur'];
+                                                       $valeurs[0]['valeur'] = serialize($v);
+                                                       $ins[] = $valeurs[0];
+                                               }
+                                       }
+                                       sql_insertq_multi("spip_formulaires_reponses_champs",$ins);
+                                       // et on marque la donnee pour ne pas la rejouer
+                                       sql_update("spip_forms_donnees",array("id_formulaires_reponse"=>$id_formulaires_reponse),"id_donnee=".intval($row['id_donnee']));
+                               }
+                               if (time()>_TIME_OUT)
+                                       return;
+                       }
+
+                       if (time()>_TIME_OUT)
+                               return;
+
+               } while ($rows = sql_allfetsel("*","spip_forms_donnees",sql_in('id_form',array_keys($trans))." AND id_formulaires_reponse=0",'','id_donnee','0,100'));
+
+       }
+
+}
diff --git a/www/plugins/formidable/formidable_autorisations.php b/www/plugins/formidable/formidable_autorisations.php
new file mode 100644 (file)
index 0000000..91b3ed6
--- /dev/null
@@ -0,0 +1,263 @@
+<?php
+
+/**
+ * Déclaration des autorisations
+ *
+ * @package SPIP\Formidable\Autorisations
+**/
+
+// Sécurité
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+include_spip('action/editer_liens');
+include_spip('inc/config');
+
+/**
+ * Autorisation par auteur et par formulaire
+ *
+ * Seuls les auteurs associés à un formulaire peuvent y accéder
+ *
+ * @param  int   $id        id du formulaire à tester
+ * @param  int   $id_auteur id de l'auteur à tester, si ==0 => auteur courant
+ * @return bool  true s'il a le droit, false sinon
+ *
+*/
+function formidable_autoriser_par_auteur($id, $id_auteur = 0) {
+       if ($id == 0) return true;
+
+       $retour = false;
+
+       if ($id_auteur == 0)
+               $id_auteur = session_get('id_auteur');
+
+       if ($id_auteur == null) {
+               $retour = false;
+       } else {
+               $autorisations = objet_trouver_liens(array('formulaire'=>$id),array('auteur'=>$id_auteur));
+               $retour = count($autorisations) > 0;
+       }
+
+       return $retour;
+}
+
+/**
+ * Réponses à un formulaire éditable par un auteur
+ *
+ * Est-on en présence d'un auteur qui tente de modifier les réponses d'un formulaire
+ * et que Formidable est configuré pour prendre en compte les auteurs
+ * et que les auteurs sont en droit de modifier les réponses de leurs formulaires ?
+ *
+ * @param  array  $qui   Description de l'auteur demandant l'autorisation
+ * @return bool  true s'il a le droit, false sinon
+ *
+*/
+function formidable_auteur_admin_reponse($qui) {
+       // L'auteur peut-il administrer les réponses ?
+       $admin_reponses_auteur = lire_config('formidable/analyse/admin_reponses_auteur');
+       $auteurs = lire_config('formidable/analyse/auteur');
+       $is_admin = (isset($qui['statut']) and $qui['statut'] == '0minirezo');
+       $retour = ($is_admin or (($auteurs == 'on') and ($admin_reponses_auteur == 'on')));
+
+       return $retour;
+}
+
+/**
+ * Fonction d'appel pour le pipeline
+ * @pipeline autoriser
+ */
+function formidable_autoriser(){}
+
+/**
+ * Autorisation d'éditer un formulaire formidable
+ *
+ * Seuls les admins peuvent éditer les formulaires
+ *
+ * @param  string $faire Action demandée
+ * @param  string $type  Type d'objet sur lequel appliquer l'action
+ * @param  int    $id    Identifiant de l'objet
+ * @param  array  $qui   Description de l'auteur demandant l'autorisation
+ * @param  array  $opt   Options de cette autorisation
+ * @return bool          true s'il a le droit, false sinon
+**/
+function autoriser_formulaire_editer_dist($faire, $type, $id, $qui, $opt){
+       $auteurs = lire_config('formidable/analyse/auteur');
+
+       /* administrateur ? */
+       if (isset($qui['statut']) and $qui['statut'] <= '0minirezo' and (!$qui['restreint']))
+               return true;
+
+       /* Test des autorisations par auteur */
+       if ($auteurs == 'on') {
+               return formidable_autoriser_par_auteur($id);
+       } else {
+               /* dans un else car la config 'auteurs' doit primer sur l'admin restreint */
+               if ($GLOBALS['formulaires']['autoriser_admin_restreint'])
+                       return true;
+               else
+                       return false;
+       }
+}
+
+/**
+ * Autorisation de voir la liste des formulaires formidable
+ *
+ *  Admins et rédacteurs peuvent voir les formulaires existants
+ *
+ * @param  string $faire Action demandée
+ * @param  string $type  Type d'objet sur lequel appliquer l'action
+ * @param  int    $id    Identifiant de l'objet
+ * @param  array  $qui   Description de l'auteur demandant l'autorisation
+ * @param  array  $opt   Options de cette autorisation
+ * @return bool          true s'il a le droit, false sinon
+**/
+function autoriser_formulaires_menu_dist($faire, $type, $id, $qui, $opt){
+    if (isset($qui['statut']) and $qui['statut'] <= '1comite') return true;
+    else return false;
+}
+
+
+/**
+ * Autorisation de répondre à un formidable formidable
+ *
+ * On peut répondre à un formulaire si :
+ * - c'est un formulaire classique
+ * - on enregistre et que multiple = oui
+ * - on enregistre et que multiple = non et que la personne n'a pas répondu encore
+ * - on enregistre et que multiple = non et que modifiable = oui
+ *
+ * @param  string $faire Action demandée
+ * @param  string $type  Type d'objet sur lequel appliquer l'action
+ * @param  int    $id    Identifiant de l'objet
+ * @param  array  $qui   Description de l'auteur demandant l'autorisation
+ * @param  array  $opt   Options de cette autorisation
+ * @return bool          true s'il a le droit, false sinon
+**/
+function autoriser_formulaire_repondre_dist($faire, $type, $id, $qui, $opt){
+// On regarde si il y a déjà le formulaire dans les options
+    if (isset($options['formulaire']))
+        $formulaire = $options['formulaire'];
+    // Sinon on va le chercher
+    else{
+        $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id);
+    }
+
+    $traitements = unserialize($formulaire['traitements']);
+
+    // S'il n'y a pas d'enregistrement, c'est forcément bon
+    if (!($options = $traitements['enregistrement']))
+        return true;
+    // Sinon faut voir les options
+    else{
+        // Si multiple = oui c'est bon
+        if ($options['multiple'])
+            return true;
+        else{
+            // Si c'est modifiable, c'est bon
+            if ($options['modifiable'])
+                return true;
+            else{
+                include_spip('inc/formidable');
+                // Si la personne n'a jamais répondu, c'est bon
+                if (!formidable_verifier_reponse_formulaire($id))
+                    return true;
+                else
+                    return false;
+            }
+        }
+    }
+}
+
+/**
+ * Autorisation d'associer un nouvel auteur à un formulaire
+ *
+ * mêmes autorisations que pour éditer le formulaire
+ *
+**/
+function autoriser_formulaire_associerauteurs_dist($faire, $type, $id, $qui, $opt) {
+       return autoriser_formulaire_editer_dist($faire, $type, $id, $qui, $opt);
+}
+
+/**
+ * Autorisation de modifier un formulaire
+ *
+ * mêmes autorisations que pour éditer le formulaire
+ *
+**/
+function autoriser_formulaire_modifier_dist($faire, $type, $id, $qui, $opt) {
+       return autoriser_formulaire_editer_dist($faire, $type, $id, $qui, $opt);
+}
+
+
+/**
+ * Autorisation d'instituer une réponse
+ *
+ * On peut modérer une réponse si on est admin
+ *
+ * @param  string $faire Action demandée
+ * @param  string $type  Type d'objet sur lequel appliquer l'action
+ * @param  int    $id    Identifiant de l'objet
+ * @param  array  $qui   Description de l'auteur demandant l'autorisation
+ * @param  array  $opt   Options de cette autorisation
+ * @return bool          true s'il a le droit, false sinon
+**/
+function autoriser_formulairesreponse_instituer_dist($faire, $type, $id, $qui, $opt){
+       return formidable_auteur_admin_reponse($qui);
+}
+
+/**
+ * Autorisation de voir les réponses d'un formulaire formidable
+ *
+ * Au moins rédacteur pour voir les résultats
+ *
+ * @param  string $faire Action demandée
+ * @param  string $type  Type d'objet sur lequel appliquer l'action
+ * @param  int    $id    Identifiant de l'objet
+ * @param  array  $qui   Description de l'auteur demandant l'autorisation
+ * @param  array  $opt   Options de cette autorisation
+ * @return bool          true s'il a le droit, false sinon
+**/
+function autoriser_formulairesreponse_voir_dist($faire, $type, $id, $qui, $opt){
+       return autoriser_formulaire_editer_dist($faire, $type, $id, $qui, $opt);
+}
+
+/**
+ * Autorisation de modifier une réponse d'un formulaire formidable
+ *
+ * suivant la config, un administrateur ou l'auteur du formulaire peuvent
+ * voir les résultats
+ *
+ * @param  string $faire Action demandée
+ * @param  string $type  Type d'objet sur lequel appliquer l'action
+ * @param  int    $id    Identifiant de l'objet
+ * @param  array  $qui   Description de l'auteur demandant l'autorisation
+ * @param  array  $opt   Options de cette autorisation
+ * @return bool          true s'il a le droit, false sinon
+**/
+function autoriser_formulairesreponse_modifier_dist($faire, $type, $id, $qui, $opt){
+    if ($id_formulaire = intval(sql_getfetsel(
+                       'id_formulaire', 'spip_formulaires_reponses', "id_formulaires_reponse=$id"))) {
+
+               $retour = (autoriser_formulaire_editer_dist($faire, $type, $id_formulaire, $qui, $opt)
+                               and formidable_auteur_admin_reponse($qui));
+       }
+       return $retour;
+}
+
+/**
+ * Autorisation de supprimer une réponse d'un formulaire formidable
+ *
+ * Il faut pouvoir modifier les réponses d'un formulaire pour pouvoir les en supprimer
+ *
+ * @param  string $faire Action demandée
+ * @param  string $type  Type d'objet sur lequel appliquer l'action
+ * @param  int    $id    Identifiant de l'objet
+ * @param  array  $qui   Description de l'auteur demandant l'autorisation
+ * @param  array  $opt   Options de cette autorisation
+ * @return bool          true s'il a le droit, false sinon
+**/
+function autoriser_formulairesreponse_supprimer_dist($faire, $type, $id, $qui, $opt) {
+       $retour = autoriser_formulairesreponse_modifier_dist($faire, $type, $id, $qui, $opt);
+       return $retour;
+}
+
+?>
diff --git a/www/plugins/formidable/formidable_fonctions.php b/www/plugins/formidable/formidable_fonctions.php
new file mode 100644 (file)
index 0000000..d3a7524
--- /dev/null
@@ -0,0 +1,134 @@
+<?php
+
+/**
+ * Chargement des fonctions pour les squelettes 
+ *
+ * @package SPIP\Formidable\Fonctions
+**/
+
+include_spip('inc/formidable');
+include_spip('public/formidable_criteres');
+
+/**
+ * #VOIR_REPONSE{checkbox_2} dans une boucle (FORMULAIRES_REPONSES)
+ *
+ * @param Pile $p
+ * @return Pile
+ */
+function balise_VOIR_REPONSE_dist($p) {
+       $nom = interprete_argument_balise(1, $p);
+       if (!$type_retour = interprete_argument_balise(2, $p)) { $type_retour = 'null'; }
+       if (!$sans_reponse = interprete_argument_balise(3, $p)) { $sans_reponse = 'null'; }
+       $id_formulaires_reponse = champ_sql('id_formulaires_reponse', $p);
+       $id_formulaire = champ_sql('id_formulaire', $p);
+       $p->code = "calculer_voir_reponse($id_formulaires_reponse, $id_formulaire, $nom, $type_retour, $sans_reponse)";
+       return $p;
+}
+
+/**
+ * @param int $id_formulaires_reponse
+ * @param int $id_formulaire
+ * @param string $nom
+ * @param string $type_retour
+ *   'brut' : valeur brute
+ *   'valeur_uniquement' : la valeur seulement
+ *   defaut : tout le HTML de la saisie
+ * @param null|string $sans_reponse
+ *   texte affiche si aucune valeur en base pour ce champ
+ * @return array|string
+ */
+function calculer_voir_reponse($id_formulaires_reponse, $id_formulaire, $nom, $type_retour=null, $sans_reponse=null){
+       static $formulaires_saisies = array();
+       static $reponses_valeurs = array();
+       $tenter_unserialize = charger_fonction('tenter_unserialize', 'filtre/');
+       
+       // Si pas déjà présent, on cherche les saisies de ce formulaire
+       if (is_null($formulaires_saisies[$id_formulaire])) {
+               $formulaires_saisies[$id_formulaire] = unserialize(sql_getfetsel('saisies', 'spip_formulaires', 'id_formulaire = '.intval($id_formulaire)));
+       }
+       // Si pas déjà présent, on cherche les valeurs de cette réponse
+       if (is_null($reponses_valeurs[$id_formulaires_reponse])) {
+               if ($champs = sql_allfetsel('nom,valeur', 'spip_formulaires_reponses_champs', 'id_formulaires_reponse = '.intval($id_formulaires_reponse))) {
+                       foreach ($champs as $champ) {
+                               $reponses_valeurs[$id_formulaires_reponse][$champ['nom']] = $tenter_unserialize($champ['valeur']);
+                       }
+               }
+       }
+       
+       // Si on demande la valeur brute, on ne génère rien, on renvoie telle quelle
+       if ($type_retour == 'brut') {
+               return $reponses_valeurs[$id_formulaires_reponse][$nom];
+       }
+       
+       // Si on trouve bien la saisie demandée
+       if ($saisie = saisies_chercher($formulaires_saisies[$id_formulaire], $nom)) {
+               // On génère la vue de cette saisie avec la valeur trouvée précédemment
+               return recuperer_fond(
+                       'saisies-vues/_base',
+                       array_merge(
+                               array(
+                                       'type_saisie' => $saisie['saisie'],
+                                       'valeur' => $reponses_valeurs[$id_formulaires_reponse][$nom],
+                                       'valeur_uniquement' => ($type_retour == 'valeur_uniquement' ? 'oui' : 'non'),
+                                       'sans_reponse' => $sans_reponse,
+                               ),
+                               $saisie['options']
+                       )
+               );
+       }
+}
+
+/**
+ * Afficher le resume d'une reponse selon un modele qui contient des noms de champ "@input_1@ ..."
+ *
+ * @param int $id_formulaires_reponse
+ * @param int $id_formulaire
+ * @param string $resume_reponse
+ * @return string
+ */
+function affiche_resume_reponse($id_formulaires_reponse, $id_formulaire=null, $modele_resume=null){
+       static $modeles_resume = array();
+       static $modeles_vars = array();
+
+       if (is_null($id_formulaire)){
+               $id_formulaire = sql_getfetsel("id_formulaire","spip_formulaires_reponses","id_formulaires_reponse=".intval($id_formulaires_reponse));
+       }
+       if (is_null($modele_resume) AND !isset($modeles_resume[$id_formulaire])){
+               $modeles_resume[$id_formulaire] = sql_getfetsel("resume_reponse","spip_formulaires","id_formulaire=".intval($id_formulaire));
+       }
+       if (is_null($modele_resume))
+               $modele_resume = $modeles_resume[$id_formulaire];
+
+       if (!$modele_resume)
+               return "";
+
+       if (!isset($modeles_vars[$modele_resume])){
+               preg_match_all(",@(.*)@,Uims",$modele_resume,$matches);
+               $modeles_vars[$modele_resume] = $matches[1];
+       }
+
+       $valeurs = array();
+       foreach($modeles_vars[$modele_resume] as $var){
+               $valeur = calculer_voir_reponse($id_formulaires_reponse, $id_formulaire, $var, 'valeur_uniquement', '');
+               $valeur = str_ireplace("</p>","",$valeur); // on ne veut pas du \n de PtoBR, mais on ne veut pas non plus faire un trim
+               $valeur = PtoBR($valeur);
+               if (strpos($valeur,"</li>")){
+                       $valeur = explode("</li>",$valeur);
+                       array_pop($valeur);
+                       $valeur = implode(", ",$valeur);
+               }
+               $valeur = supprimer_tags($valeur);
+               $valeurs["@$var@"] = $valeur;
+       }
+       return pipeline('formidable_affiche_resume_reponse',
+               array(
+                       'args' => array(
+                               'id_formulaire' => $id_formulaire,
+                               'id_formulaires_reponse' => $id_formulaires_reponse,
+                               'modele_resume' => $modele_resume,
+                               'valeurs' => $valeurs,
+                       ),
+                       'data' => str_replace(array_keys($valeurs),array_values($valeurs),$modele_resume),
+               )
+       );
+}
\ No newline at end of file
diff --git a/www/plugins/formidable/formidable_options.php b/www/plugins/formidable/formidable_options.php
new file mode 100644 (file)
index 0000000..e501114
--- /dev/null
@@ -0,0 +1,52 @@
+<?php
+
+/**
+ * Options globales chargées à chaque hit
+ *
+ * @package SPIP\Formidable\Options
+**/
+
+// Sécurité
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+
+/* déclaration des différentes variables utilisées pour effectuer l'anonymisation */
+$GLOBALS['formulaires']['variables_anonymisation'] = array(
+       'remote_user' => '$_SERVER["REMOTE_USER"]',
+       'php_auth_user' => '$_SERVER["PHP_AUTH_USER"]',
+);
+
+/*
+* on se contente d'initialiser si ces variable si elles ne
+* le sont pas dans mes_options.php de l'instance
+*/
+if (isset($GLOBALS['formulaires']['passwd']) == false) {
+       $GLOBALS['formulaires']['passwd'] = array(
+               'interne' => 'palabresecreta',
+       );
+}
+
+if (isset($GLOBALS['formulaires']['autoriser_admin_restreint']) == false) {
+       $GLOBALS['formulaires']['autoriser_admin_restreint'] = false;
+}
+
+if (!function_exists('array_fill_keys')) {
+    /**
+     * Remplit un tableau avec des valeurs, en spécifiant les clés
+     *
+     * Fonction dans PHP 5.2+
+     * @see http://php.net/manual/fr/function.array-fill-keys.php
+     *
+     * @param array $keys
+     *     Tableau de valeurs qui sera utilisé comme clés.
+     * @param mixed $value
+     *     Valeur à utiliser pour remplir le tableau.
+     * @return array
+     *     Le tableau rempli.
+    **/
+    function array_fill_keys($keys, $value){
+        array_combine($keys,array_fill(0,count($keys),$value));
+    }
+}
+
+?>
diff --git a/www/plugins/formidable/formidable_pipelines.php b/www/plugins/formidable/formidable_pipelines.php
new file mode 100644 (file)
index 0000000..71f119d
--- /dev/null
@@ -0,0 +1,186 @@
+<?php
+
+/**
+ * Utilisation de pipelines
+ * 
+ * @package SPIP\Formidable\Pipelines
+**/
+
+// Sécurité
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+
+
+define('_RACCOURCI_MODELE_FORMIDABLE',
+        '(<(formulaire\|formidable|formidable|form)' # <modele
+       .'([0-9]*)\s*' # id
+       .'([|](?:<[^<>]*>|[^>])*)?' # |arguments (y compris des tags <...>)
+       .'>)' # fin du modele >
+       .'\s*(<\/a>)?' # eventuel </a>
+       );
+
+/**
+ * Trouver les liens <form
+ * @param $texte
+ * @return array
+ */
+function formidable_trouve_liens($texte){
+       $formulaires = array();
+       if (preg_match_all(','._RACCOURCI_MODELE_FORMIDABLE.',ims', $texte, $regs, PREG_SET_ORDER)){
+               foreach ($regs as $r) {
+                       $id_formulaire = 0;
+                       if ($r[2]=="formidable")
+                               $id_formulaire = $r[3];
+                       elseif ($r[2]=="form")
+                               $id_formulaire = sql_getfetsel("id_formulaire","spip_formulaires","identifiant=".sql_quote("form".$r[3]));
+                       elseif ($r[2]=="formulaire|formidable"){
+                               $args = ltrim($r[4],"|");
+                               $args = explode("=",$args);
+                               $args = $args[1];
+                               $args = explode("|",$args);
+                               $args = trim(reset($args));
+                               if (is_numeric($args))
+                                       $id_formulaire = intval($args);
+                               else
+                                       $id_formulaire = sql_getfetsel("id_formulaire","spip_formulaires","identifiant=".sql_quote($args));
+                       }
+                       if ($id_formulaire = intval($id_formulaire))
+                               $formulaires[$id_formulaire] = $id_formulaire;
+               }
+       }
+       return $formulaires;
+}
+
+/**
+ * Associer/dissocier les formulaires a un objet qui les utilise (ou ne les utilise plus)
+ * @param $flux
+ * @return mixed
+ */
+function formidable_post_edition($flux){
+       if ($table = $flux['args']['table']
+         AND $id_objet = intval($flux['args']['id_objet'])
+               AND $primary = id_table_objet($table)
+         AND $row = sql_fetsel("*",$table,"$primary=".intval($id_objet))){
+
+               $objet = objet_type($table);
+               $contenu = implode(' ',$row);
+               $formulaires = formidable_trouve_liens($contenu);
+               include_spip("action/editer_liens");
+               $deja = objet_trouver_liens(array("formulaire"=>"*"),array($objet=>$id_objet));
+               $del = array();
+               if (count($deja)){
+                       foreach($deja as $l){
+                               if (isset($formulaires[$l['id_formulaire']]))
+                                       unset($formulaires[$l['id_formulaire']]);
+                               else
+                                       $del[] = $l['id_formulaire'];
+                       }
+               }
+               if (count($formulaires)){
+                       objet_associer(array("formulaire"=>$formulaires),array($objet=>$id_objet));
+               }
+               if (count($del)){
+                       objet_dissocier(array("formulaire"=>$del),array($objet=>$id_objet));
+               }
+       }
+       return $flux;
+}
+
+/**
+ * Afficher les formulaires utilises par un objet
+ * @param $flux
+ * @return mixed
+ */
+function formidable_affiche_droite($flux){
+       if ($e = trouver_objet_exec($flux['args']['exec'])
+               AND isset($e['type'])
+               AND $objet = $e['type']
+               AND isset($flux['args'][$e['id_table_objet']])
+         AND $id = $flux['args'][$e['id_table_objet']]
+         AND sql_countsel("spip_formulaires_liens","objet=".sql_quote($objet)." AND id_objet=".intval($id))){
+
+               $flux['data'] .= recuperer_fond('prive/squelettes/inclure/formulaires_lies',array('objet'=>$objet,'id_objet'=>$id));
+       }
+       return $flux;
+}
+
+/**
+ * Optimiser la base de donnée en enlevant les liens de formulaires supprimés
+ * 
+ * @pipeline optimiser_base_disparus
+ * @param array $flux
+ *     Données du pipeline
+ * @return array
+ *     Données du pipeline
+ */
+function formidable_optimiser_base_disparus($flux){
+       // Les formulaires qui sont à la poubelle
+       $res = sql_select(
+               'id_formulaire AS id',
+               'spip_formulaires',
+               'statut='.sql_quote('poubelle')
+       );
+
+       // On génère la suppression
+       $flux['data'] += optimiser_sansref('spip_formulaires', 'id_formulaire', $res);
+
+
+       # les reponses qui sont associees a un formulaire inexistant
+       $res = sql_select("R.id_formulaire AS id",
+                       "spip_formulaires_reponses AS R
+                       LEFT JOIN spip_formulaires AS F
+                         ON R.id_formulaire=F.id_formulaire",
+                        "R.id_formulaire > 0
+                        AND F.id_formulaire IS NULL");
+
+       $flux['data'] += optimiser_sansref('spip_formulaires_reponses', 'id_formulaire', $res);
+
+
+       // Les réponses qui sont à la poubelle
+       $res = sql_select(
+               'id_formulaires_reponse AS id',
+               'spip_formulaires_reponses',
+               sql_in('statut',array('refuse','poubelle'))
+       );
+       
+       // On génère la suppression
+       $flux['data'] += optimiser_sansref('spip_formulaires_reponses', 'id_formulaires_reponse', $res);
+
+
+       // les champs des reponses associes a une reponse inexistante
+       $res = sql_select("C.id_formulaires_reponse AS id",
+                       "spip_formulaires_reponses_champs AS C
+                       LEFT JOIN spip_formulaires_reponses AS R
+                         ON C.id_formulaires_reponse=R.id_formulaires_reponse",
+                        "C.id_formulaires_reponse > 0
+                        AND R.id_formulaires_reponse IS NULL");
+
+       $flux['data'] += optimiser_sansref('spip_formulaires_reponses_champs', 'id_formulaires_reponse', $res);
+
+       //
+       // CNIL -- Informatique et libertes
+       //
+       // masquer le numero IP des vieilles réponses
+       //
+       ## date de reference = 4 mois
+       ## definir a 0 pour desactiver
+       ## même constante que pour les forums
+       if (!defined('_CNIL_PERIODE')) {
+               define('_CNIL_PERIODE', 3600*24*31*4);
+       }
+       
+       if (_CNIL_PERIODE) {
+               $critere_cnil = 'date<"'.date('Y-m-d', time()-_CNIL_PERIODE).'"'
+                       . ' AND statut != "spam"'
+                       . ' AND (ip LIKE "%.%" OR ip LIKE "%:%")'; # ipv4 ou ipv6
+               $c = sql_countsel('spip_formulaires_reponses', $critere_cnil);
+               if ($c>0) {
+                       spip_log("CNIL: masquer IP de $c réponses anciennes à formidable");
+                       sql_update('spip_formulaires_reponses', array('ip' => 'MD5(ip)'), $critere_cnil);
+               }
+       }
+       
+       return $flux;
+}
+
+?>
\ No newline at end of file
diff --git a/www/plugins/formidable/formulaires/configurer_formidable_analyse.html b/www/plugins/formidable/formulaires/configurer_formidable_analyse.html
new file mode 100644 (file)
index 0000000..9509faa
--- /dev/null
@@ -0,0 +1,47 @@
+<div class="formulaire_spip formulaire_configurer formulaire_#FORM">
+
+       <h3 class="titrem"><:formidable:cfg_titre_parametrages_analyse:></h3>
+
+       [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
+       [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
+
+       <form method="post" action="#ENV{action}">
+       <div>
+               #ACTION_FORMULAIRE{#ENV{action}}
+
+               [(#SAISIE{input,classe,
+                       label=<:formidable:cfg_analyse_classe_label:>,
+                       explication=<:formidable:cfg_analyse_classe_explication:>
+                       })]
+               [(#SAISIE{case,auteur,
+                       li_class='pleine_largeur',
+                       label_case=<:formidable:traiter_enregistrement_option_auteur:>,
+                       explication=<:formidable:traiter_enregistrement_option_auteur_explication:>
+                       })]
+               [(#SAISIE{case,admin_reponses_auteur,
+                       li_class='pleine_largeur',
+                       label_case=<:formidable:admin_reponses_auteur:>,
+                       explication=<:formidable:admin_reponses_auteur_explication:>
+                       })]
+               [(#SAISIE{case,activer_pages,
+                       li_class='pleine_largeur',
+                       label_case=<:formidable:activer_pages_label:>,
+                       explication=<:formidable:activer_pages_explication:>
+                       })]
+
+               <input type="hidden" name="_meta_casier" value="formidable/analyse" />
+               <p class="boutons"><span class="image_loading">&nbsp;</span><input type="submit" class="submit" value="<:bouton_enregistrer:>" /></p>
+       </div>
+       </form>
+       <script type="text/javascript">
+               $(function(){
+                       if (!$('#champ_auteur').prop('checked')) {
+                               $('.editer_admin_reponses_auteur').hide();
+                       }
+                       $('#champ_auteur').change(function() {
+                               if ($(this).is(':checked')) $('.editer_admin_reponses_auteur').show(100);
+                               else $('.editer_admin_reponses_auteur').hide(100);
+                       });
+               });
+       </script>
+</div>
diff --git a/www/plugins/formidable/formulaires/editer_formulaire.html b/www/plugins/formidable/formulaires/editer_formulaire.html
new file mode 100644 (file)
index 0000000..02effa9
--- /dev/null
@@ -0,0 +1,83 @@
+<div class="formulaire_spip formulaire_editer formulaire_#ENV{form}[ formulaire_#ENV{form}-(#ENV{id_formulaire,nouveau})]">
+       [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
+       [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
+       [(#ENV{editable}|oui)
+       <form method='post' action='#ENV{action}' enctype='multipart/form-data'><div>
+               [(#REM) declarer les hidden qui declencheront le service du formulaire 
+               parametre : url d'action ]
+               #ACTION_FORMULAIRE{#ENV{action}}
+               
+               <ul>
+                       #SET{name,titre}#SET{obli,'obligatoire'}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
+                       <li class="editer editer_[(#GET{name})][ (#GET{obli})] multilang[ (#GET{erreurs}|oui)erreur]">
+                               <label for="#GET{name}"><:formidable:editer_titre:></label>[
+                               <span class='erreur_message'>(#GET{erreurs})</span>
+                               ]<input type="text" name="#GET{name}" class="text" value="#ENV*{#GET{name},#GET{defaut}}" id="#GET{name}" [(#HTML5|et{#GET{obli}})required='required']/>
+                       </li>
+                       #SET{name,identifiant}#SET{obli,'obligatoire'}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
+                       <li class="editer editer_[(#GET{name})][ (#GET{obli})] multilang[ (#GET{erreurs}|oui)erreur]">
+                               <label for="#GET{name}"><:formidable:editer_identifiant:></label>[
+                               <span class='erreur_message'>(#GET{erreurs})</span>
+                               ]<input type="text" name="#GET{name}" class="text" value="#ENV*{#GET{name},#GET{defaut}}" id="#GET{name}" [(#HTML5|et{#GET{obli}})required='required']/>
+                               <p class="explication"><:formidable:editer_identifiant_explication:></p>
+                       </li>
+                       #SET{name,message_retour}#SET{obli,''}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
+                       <li class="editer pleine_largeur editer_[(#GET{name})][ (#GET{obli})] multilang[ (#GET{erreurs}|oui)erreur]">
+                               <label for="#GET{name}"><:formidable:editer_message_ok:></label>[
+                               <span class='erreur_message'>(#GET{erreurs})</span>
+                               ]<p class="explication"><:formidable:editer_message_ok_explication:></p>
+                               <textarea name="#GET{name}" class="textarea" rows="5">
+#ENV*{#GET{name},#GET{defaut}}</textarea>
+                       </li>
+                       #SET{name,descriptif}#SET{obli,''}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
+                       <li class="editer pleine_largeur editer_[(#GET{name})][ (#GET{obli})] multilang[ (#GET{erreurs}|oui)erreur]">
+                               <label for="#GET{name}"><:formidable:editer_descriptif:></label>[
+                               <span class='erreur_message'>(#GET{erreurs})</span>
+                               ]<p class="explication"><:formidable:editer_descriptif_explication:></p>
+                               <textarea name="#GET{name}" class="textarea" rows="5">
+#ENV*{#GET{name},#GET{defaut}}</textarea>
+                       </li>
+                       #SET{name,apres}#SET{obli,''}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
+                       <li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
+                               <label for="#GET{name}"><:formidable:editer_apres_label:></label>[
+                               <span class='erreur_message'>(#GET{erreurs})</span>
+                               ]<p class="explication"><:formidable:editer_apres_explication:></p>
+                               <select name="#GET{name}" class="select" id="#GET{name}">
+                                       #SET{val,formulaire}
+                                       <option value="#GET{val}"[(#ENV{#GET{name},#GET{defaut}}|=={#GET{val}}|oui)selected="selected"]><:formidable:editer_apres_choix_formulaire:></option>
+                                       #SET{val,valeurs}
+                                       <option value="#GET{val}"[(#ENV{#GET{name},#GET{defaut}}|=={#GET{val}}|oui)selected="selected"]><:formidable:editer_apres_choix_valeurs:></option>
+                                       #SET{val,stats}
+                                       <option value="#GET{val}"[(#ENV{#GET{name},#GET{defaut}}|=={#GET{val}}|oui)selected="selected"]><:formidable:editer_apres_choix_stats:></option>
+                                       #SET{val,rien}
+                                       <option value="#GET{val}"[(#ENV{#GET{name},#GET{defaut}}|=={#GET{val}}|oui)selected="selected"]><:formidable:editer_apres_choix_rien:></option>
+                                       #SET{val,redirige}
+                                       <option value="#GET{val}"[(#ENV{#GET{name},#GET{defaut}}|=={#GET{val}}|oui)selected="selected"]><:formidable:editer_apres_choix_redirige:></option>
+                               </select>
+                       </li>
+                       #SET{name,url_redirect}#SET{obli,''}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
+                       <li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
+                               <label for="#GET{name}"><:formidable:editer_redirige_url:></label>[
+                               <span class='erreur_message'>(#GET{erreurs})</span>
+                               ]<input type="text" name="#GET{name}" class="text" value="#ENV*{#GET{name},#GET{defaut}}" id="#GET{name}" [(#HTML5|et{#GET{obli}})required='required']/>
+                               <p class="explication"><:formidable:editer_redirige_url_explication:></p>
+                       </li>
+                       #SET{name,resume_reponse}#SET{obli,''}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
+                       <li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
+                               <label for="#GET{name}"><:formidable:editer_resume_reponse:></label>[
+                               <span class='erreur_message'>(#GET{erreurs})</span>
+                               ]<input type="text" name="#GET{name}" class="text" value="#ENV*{#GET{name},#GET{defaut}}" id="#GET{name}" [(#HTML5|et{#GET{obli}})required='required']/>
+                               <p class="explication"><:formidable:editer_resume_reponse_explication:></p>
+                       </li>
+               </ul>
+               
+               [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
+               <!--extra-->
+               
+               <p class='boutons'>
+                       <span class='image_loading'></span>
+                       <input type='submit' class='submit' name="enregistrer" value='<:bouton_enregistrer:>' />
+               </p>
+       </div></form>
+       ]
+</div>
diff --git a/www/plugins/formidable/formulaires/editer_formulaire.php b/www/plugins/formidable/formulaires/editer_formulaire.php
new file mode 100644 (file)
index 0000000..724c55f
--- /dev/null
@@ -0,0 +1,75 @@
+<?php
+
+// Sécurité
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+include_spip('inc/saisies');
+include_spip('action/editer_liens');
+include_spip('inc/config');
+
+function formulaires_editer_formulaire_charger($id_formulaire, $nouveau){
+       $id_formulaire = intval($nouveau?0:$id_formulaire);
+       include_spip('inc/editer');
+
+       // Est-ce qu'on a le droit ?
+       if (!autoriser('editer', 'formulaire', $id_formulaire)){
+               $contexte = array();
+               $contexte['editable'] = false;
+               $contexte['message_erreur'] = _T('formidable:erreur_autorisation');
+       }
+       else
+               $contexte = formulaires_editer_objet_charger('formulaire', $id_formulaire,0,0,'','');
+       unset($contexte['id_formulaire']);
+       
+       return $contexte;
+}
+
+function formulaires_editer_formulaire_verifier($id_formulaire, $nouveau){
+       $id_formulaire = intval($nouveau?0:$id_formulaire);
+       $erreurs = array();
+
+       include_spip('inc/editer');
+       $erreurs = formulaires_editer_objet_verifier('formulaire',$id_formulaire,array('titre','identifiant'));
+
+       if (!isset($erreurs['identifiant'])){
+               $identifiant = _request('identifiant');
+               // format de l'identifiant
+               if (!preg_match("/^[\w]+$/",$identifiant))
+                       $erreurs['identifiant'] = _T('formidable:erreur_identifiant_format');
+               // unicite de l'identifiant
+               elseif (sql_getfetsel('id_formulaire', 'spip_formulaires', 'identifiant = '.sql_quote($identifiant).' AND id_formulaire != '.intval($id_formulaire)))
+                       $erreurs['identifiant'] = _T('formidable:erreur_identifiant');
+       }
+
+       return $erreurs;
+}
+
+function formulaires_editer_formulaire_traiter($id_formulaire, $nouveau){
+       include_spip('inc/editer');
+       $id_formulaire = $id_formulaire ? $id_formulaire : $nouveau;
+       $retours = formulaires_editer_objet_traiter('formulaire', $id_formulaire);
+       
+       // S'il n'y a pas d'erreur et que le formulaire est bien là
+       if (!$retours['message_erreur'] and $retours['id_formulaire'] > 0){
+               // Si c'était un nouveau on reste sur l'édition
+               if (!intval($id_formulaire) and $nouveau == 'oui'){
+                       // Tout a fonctionné. En fonction de la config, on attribue l'auteur courant
+                       $auteurs = lire_config('formidable/analyse/auteur');
+                       if ($auteurs == 'on') {
+                               if ($id_auteur = session_get('id_auteur')) {
+                                       // association (par défaut) du formulaire et de l'auteur courant
+                                       objet_associer(array('formulaire'=>$retours['id_formulaire']), array('auteur'=>$id_auteur));
+                               }
+                       }
+                       $retours['redirect'] = parametre_url(generer_url_ecrire('formulaire_edit'), 'id_formulaire', $retours['id_formulaire'], '&');
+               }
+               // Sinon on redirige vers la page de visualisation
+               else{
+                       $retours['redirect'] = parametre_url(generer_url_ecrire('formulaire'), 'id_formulaire', $retours['id_formulaire'], '&');
+               }
+       }
+       
+       return $retours;
+}
+
+?>
diff --git a/www/plugins/formidable/formulaires/editer_formulaire_champs.html b/www/plugins/formidable/formulaires/editer_formulaire_champs.html
new file mode 100644 (file)
index 0000000..7e1145d
--- /dev/null
@@ -0,0 +1,56 @@
+
+<div class="formulaire_spip formulaire_editer formulaire_#ENV{form}[ formulaire_#ENV{form}-(#ENV{id,nouveau})]">
+       <p class="explication message_saisies_modifiees"><strong><:saisies:construire_attention_enregistrer:></strong></p>
+       [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
+       [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
+       
+       [(#ENV*{message_erreur}|non)
+       <div class="ajax">
+               #FORMULAIRE_CONSTRUIRE_FORMULAIRE{#ENV{saisie_id}, #ENV{_saisies}}
+       </div>
+       ]
+
+       [(#ENV{editable}|oui)
+       <form method="post" action="#ENV{action}" enctype="multipart/form-data"><div>
+               [(#REM) declarer les hidden qui declencheront le service du formulaire 
+               parametre : url d'action ]
+               #ACTION_FORMULAIRE{#ENV{action}}
+
+               <p class="boutons">
+                       <span class='image_loading'></span>
+
+                       [(#ENV*{message_erreur}|oui)
+                       <input type='submit' class='submit' name="annulation" value='<:bouton_annuler|attribut_html:>' />
+                       <input type='submit' class='submit' name="enregistrer_confirmation" value='<:bouton_enregistrer|attribut_html:>' />
+                       ]
+                       [(#ENV*{message_erreur}|non)
+                       <input type='submit' class='submit revert' name="revert" value='<:formidable:bouton_revert_formulaire|attribut_html:>'
+                              onclick="return confirm('<:saisies:construire_reinitialiser_confirmer:>')" />
+                       <input type='submit' class='submit' name="enregistrer" value='<:bouton_enregistrer|attribut_html:>' />
+                       ]
+
+               </p>
+       </div></form>
+       ]
+</div>
+<style>
+       .formulaire_edit .formulaire_editer_formulaire_champs .message_reinitialiser,
+       .formulaire_edit .formulaire_editer_formulaire_champs #reinitialiser {display: none;}
+
+       .formulaire_spip .message_saisies_modifiees,input.revert {display: none;}
+       .modifie .message_saisies_modifiees,.modifie input.revert {display: block;}
+</style>
+<script type="text/javascript">
+       function update_modif_saisies(){
+               var is_modified = jQuery('.formulaire_[(#ENV{form})] .formulaire_construire_formulaire').is('.modifie');
+               if (is_modified)
+                       jQuery('.formulaire_#ENV{form}').addClass('modifie');
+               else
+                       jQuery('.formulaire_#ENV{form}').removeClass('modifie');
+       }
+       jQuery(function(){
+               update_modif_saisies();
+               onAjaxLoad(update_modif_saisies);
+               jQuery('.formulaire_[(#ENV{form})] .formulaire_construire_formulaire').bind('modifsaisies',update_modif_saisies);
+       });
+</script>
diff --git a/www/plugins/formidable/formulaires/editer_formulaire_champs.php b/www/plugins/formidable/formulaires/editer_formulaire_champs.php
new file mode 100644 (file)
index 0000000..1e825d1
--- /dev/null
@@ -0,0 +1,123 @@
+<?php
+
+// Sécurité
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+
+function formulaires_editer_formulaire_champs_charger($id_formulaire){
+       $contexte = array();
+       $id_formulaire = intval($id_formulaire);
+       
+       // On teste si le formulaire existe
+       if ($id_formulaire
+               and $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id_formulaire)
+               and autoriser('editer', 'formulaire', $id_formulaire)
+       ){
+               $saisies = unserialize($formulaire['saisies']);
+               if (!is_array($saisies)) $saisies = array();
+               $contexte['_saisies'] = $saisies;
+               $contexte['id'] = $id_formulaire;
+               $contexte['saisie_id'] = "formidable_$id_formulaire";
+       }
+       
+       return $contexte;
+}
+
+function formulaires_editer_formulaire_champs_verifier($id_formulaire){
+       include_spip('inc/saisies');
+       $erreurs = array();
+       
+       // Si c'est pas une confirmation ni une annulation
+       if (!_request('enregistrer_confirmation')
+               AND !($annulation = _request('annulation'))){
+               // On récupère le formulaire dans la session
+               $saisies_nouvelles = session_get("constructeur_formulaire_formidable_$id_formulaire");
+       
+               // On récupère les anciennes saisies
+               $saisies_anciennes = unserialize(sql_getfetsel(
+                       'saisies',
+                       'spip_formulaires',
+                       'id_formulaire = '.$id_formulaire
+               ));
+       
+               // On compare
+               $comparaison = saisies_comparer($saisies_anciennes, $saisies_nouvelles);
+       
+               // S'il y a des suppressions, on demande confirmation avec attention
+               if ($comparaison['supprimees'])
+                       $erreurs['message_erreur'] = _T('saisies:construire_attention_supprime');
+       }
+       // Si on annule on génère une erreur bidon juste pour réafficher le formulaire
+       elseif ($annulation){
+               $erreurs['pouetpouet'] = true;
+       }
+       
+       return $erreurs;
+}
+
+function formulaires_editer_formulaire_champs_traiter($id_formulaire){
+       include_spip('inc/saisies');
+       $retours = array();
+       $id_formulaire = intval($id_formulaire);
+
+       if (_request('revert')){
+               session_set("constructeur_formulaire_formidable_$id_formulaire");
+               $retours = array('editable'=>true);
+       }
+
+       if (_request('enregistrer') OR _request('enregistrer_confirmation')){
+               // On récupère le formulaire dans la session
+               $saisies_nouvelles = session_get("constructeur_formulaire_formidable_$id_formulaire");
+
+               // On récupère les anciennes saisies
+               $saisies_anciennes = unserialize(sql_getfetsel(
+                       'saisies',
+                       'spip_formulaires',
+                       'id_formulaire = '.$id_formulaire
+               ));
+
+               // On envoie les nouvelles dans la table dans la table
+               $ok = sql_updateq(
+                       'spip_formulaires',
+                       array(
+                               'saisies' => serialize($saisies_nouvelles)
+                       ),
+                       'id_formulaire = '.$id_formulaire
+               );
+
+               // Si c'est bon on appelle d'éventuelles fonctions d'update des traitements puis on renvoie vers la config des traitements
+               if ($ok){
+                       // On va chercher les traitements
+                       $traitements = unserialize(sql_getfetsel(
+                               'traitements',
+                               'spip_formulaires',
+                               'id_formulaire = '.$id_formulaire
+                       ));
+
+                       // Pour chaque traitements on regarde s'i y a une fonction d'update
+                       if (is_array($traitements))
+                               foreach ($traitements as $type_traitement => $traitement){
+                                       if ($update = charger_fonction('update', "traiter/$type_traitement", true)){
+                                               $update($id_formulaire, $traitement, $saisies_anciennes, $saisies_nouvelles);
+                                       }
+                               }
+
+                       // On redirige vers la config suivante
+                       $retours['redirect'] = parametre_url(
+                               parametre_url(
+                                       parametre_url(
+                                               generer_url_ecrire('formulaire_edit')
+                                               , 'id_formulaire', $id_formulaire
+                                       )
+                                       , 'configurer', 'traitements'
+                               )
+                               , 'avertissement', 'oui'
+                       );
+               }
+       }
+
+       
+       return $retours;
+}
+
+?>
diff --git a/www/plugins/formidable/formulaires/editer_formulaire_traitements.html b/www/plugins/formidable/formulaires/editer_formulaire_traitements.html
new file mode 100644 (file)
index 0000000..07bf8dd
--- /dev/null
@@ -0,0 +1,56 @@
+<div class="formulaire_spip formulaire_editer formulaire_#ENV{form}[ formulaire_#ENV{form}-(#ENV{id,nouveau})]">
+       [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
+       [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
+       
+       [(#ENV{editable}|oui)
+       <form method="post" action="#ENV{action}" enctype="multipart/form-data"><div>
+               [(#REM) declarer les hidden qui declencheront le service du formulaire 
+               parametre : url d'action ]
+               #ACTION_FORMULAIRE{#ENV{action}}
+               
+               <ul>
+                       #GENERER_SAISIES{#ENV{_configurer_traitements}}
+               </ul>
+               
+               [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
+               <!--extra-->
+               
+               <p class="boutons"><span class="image_loading"></span><input type="submit" class="submit" value="<:bouton_enregistrer:>" /></p>
+       </div></form>
+       <script type="text/javascript">
+               jQuery(function(){
+                       // On commence par cacher toutes les options
+                       jQuery('.options_traiter,.suite').hide()
+                               .each(function(){
+                                       var me = this;
+                                       var check = jQuery(me).prev().find('input.checkbox');
+                                       check.bind('change',function(){
+                                               if (check.is(':checked')){
+                                                       jQuery(me).show('fast');
+                                                       check.closest('.editer').addClass('hover');
+                                               }
+                                               else {
+                                                       jQuery(me).hide('fast');
+                                                       check.closest('.editer').removeClass('hover');
+                                               }
+                                       })
+                                       // force update
+                                       .trigger('change');
+                               })
+                               .find('h3').hide();
+               });
+       </script>
+       <style>
+               .options_traiter {margin-left: 50px;border-bottom: 1px solid #ddd;}
+               .suite {margin-left: 50px;}
+               input.checkbox+label {font-weight: normal;}
+               input.checkbox+label strong {font-weight: normal;}
+               input.checkbox:checked+label {font-weight: bold;}
+               input.checkbox:checked+label strong {font-weight: bold;}
+               input.radio+label {font-weight: normal;}
+               input.radio+label strong {font-weight: normal;}
+               input.radio:checked+label {font-weight: bold;}
+               input.radio:checked+label strong {font-weight: bold;}
+       </style>
+       ]
+</div>
diff --git a/www/plugins/formidable/formulaires/editer_formulaire_traitements.php b/www/plugins/formidable/formulaires/editer_formulaire_traitements.php
new file mode 100644 (file)
index 0000000..274a01d
--- /dev/null
@@ -0,0 +1,114 @@
+<?php
+
+// Sécurité
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+include_spip('inc/formidable');
+
+function formulaires_editer_formulaire_traitements_charger($id_formulaire){
+       $contexte = array();
+       $id_formulaire = intval($id_formulaire);
+       
+       // On teste si le formulaire existe
+       if ($id_formulaire
+               and $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id_formulaire)
+               and autoriser('editer', 'formulaire', $id_formulaire)
+       ){
+               $traitements = unserialize($formulaire['traitements']);
+               $saisies = unserialize($formulaire['saisies']);
+               if (!is_array($traitements)) $traitements = array();
+               if (!is_array($saisies)) $saisies = array();
+               $contexte['traitements'] = $traitements;
+               $contexte['traitements_choisis'] = array_keys($traitements);
+               $contexte['formulaire'] = _T_ou_typo($saisies, 'multi');
+               $contexte['id'] = $id_formulaire;
+               
+               $traitements_disponibles = traitements_lister_disponibles();
+               $configurer_traitements = array();
+               foreach ($traitements_disponibles as $type_traitement => $traitement){
+                       $configurer_traitements[] = array(
+                               'saisie' => 'checkbox',
+                               'options' => array(
+                                       'nom' => 'traitements_choisis',
+                                       'label' => $traitement['titre'],
+                                       'datas' => array(
+                                               $type_traitement => $traitement['description']
+                                       )
+                               )
+                       );
+                       $configurer_traitements[] = array(
+                               'saisie' => 'fieldset',
+                               'options' => array(
+                                       'nom' => 'options',
+                                       'label' => $traitement['titre'],
+                                       'li_class' => "$type_traitement options_traiter"
+                               ),
+                               'saisies' => saisies_transformer_noms($traitement['options'], '/^.*$/', "traitements[$type_traitement][\\0]")
+                       );
+               }
+               $contexte['_configurer_traitements'] = $configurer_traitements;
+
+               // Si on demande un avertissement et qu'il y a déjà des traitements de configurés
+               if (_request('avertissement') == 'oui')
+                       $contexte['message_ok'] = $traitements ? _T('formidable:traitements_avertissement_modification') : _T('formidable:traitements_avertissement_creation');
+       }
+       else{
+               $contexte['editable'] = false;
+       }
+       
+       // On enlève l'éventuel avertissement pour le prochain envoi
+       $contexte['action'] = parametre_url(self(), 'avertissement', '');
+       
+       return $contexte;
+}
+
+function formulaires_editer_formulaire_traitements_verifier($id_formulaire){
+       include_spip('inc/saisies');
+       $erreurs = array();
+       $traitements_disponibles = traitements_lister_disponibles();
+       
+       // On regarde quels traitements sont demandés
+       $traitements_choisis = _request('traitements_choisis');
+       
+       if (is_array($traitements_choisis))
+               foreach ($traitements_choisis as $type_traitement){
+                       $erreurs = array_merge($erreurs, saisies_verifier(saisies_transformer_noms($traitements_disponibles[$type_traitement]['options'], '/^.*$/', "traitements[$type_traitement][\\0]")));
+               }
+       
+       return $erreurs;
+}
+
+function formulaires_editer_formulaire_traitements_traiter($id_formulaire){
+       $retours = array();
+       $id_formulaire = intval($id_formulaire);
+       
+       // On récupère tout le tableau des traitements
+       $traitements = _request('traitements');
+       // On ne garde que les morceaux qui correspondent aux traitements choisis
+       $traitements_choisis = _request('traitements_choisis');
+       if (!$traitements_choisis) $traitements_choisis = array();
+       $traitements_choisis = array_flip($traitements_choisis);
+       $traitements = array_intersect_key($traitements, $traitements_choisis);
+       
+       // Et on l'enregistre tel quel
+       $ok = sql_updateq(
+               'spip_formulaires',
+               array(
+                       'traitements' => serialize($traitements)
+               ),
+               'id_formulaire = '.$id_formulaire
+       );
+       
+       // On va sur la page de visualisation quand c'est fini
+       if ($ok){
+               $retours['redirect'] = parametre_url(generer_url_ecrire('formulaire'), 'id_formulaire', $id_formulaire);
+       }
+       else{
+               $retours['editable'] = true;
+               $retours['message_erreur'] = _T('formidable:erreur_base');
+       }
+       
+       return $retours;
+}
+
+?>
diff --git a/www/plugins/formidable/formulaires/formidable.html b/www/plugins/formidable/formulaires/formidable.html
new file mode 100644 (file)
index 0000000..fd5da5b
--- /dev/null
@@ -0,0 +1,51 @@
+<BOUCLE_remplacer_le_formulaire(CONDITION){si #ENV{_remplacer_formulaire}}>\r
+       [(#REM) Afficher du HTML si prévu par un plugin ou pour les stats ]\r
+       [(#ENV**{_remplacer_formulaire})]\r
+</BOUCLE_remplacer_le_formulaire>\r
+<BOUCLE_formulaire(FORMULAIRES){id_formulaire=#ENV{id}}>\r
+       [(#SET{enregistrement,[(#TRAITEMENTS**|unserialize|table_valeur{'enregistrement'})]})]\r
+       [(#SET{anonymiser,[(#GET{enregistrement}|table_valeur{'anonymiser'})]})]\r
+       [(#GET{anonymiser}|=={on}|oui)<h3><:formidable:formulaire_anonyme_explication:></h3>]\r
+</BOUCLE_formulaire>\r
+<div class="formulaire_spip formulaire_[(#ENV{form})] formulaire_#ENV{form}_[(#ENV{_formidable}|table_valeur{id_formulaire})] formulaire_#ENV{form}_[(#ENV{_formidable}|table_valeur{identifiant})][ formulaire_#ENV{form}-(#ENV{id,nouveau})]" id="[formulaire_#ENV{form}-(#ENV{id,nouveau})]">\r
+       [<h3 class="titrem"><span>(#ENV{_titre})</span></h3>]\r
+       [<div class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok}|propre)</div>]\r
+       [<div class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur}|propre)</div>]\r
+\r
+       [(#ENV{editable}|oui)\r
+               [(#ENV{_saisies}|et{#ENV{_saisies}|count}|oui)\r
+    <form method='post' action='[(#ENV{action}|ancre_url{[formulaire_#ENV{form}-(#ENV{id,nouveau})]})]' enctype='multipart/form-data'><div>\r
+        [(#REM) declarer les hidden qui declencheront le service du formulaire\r
+        parametre : url d'action ]\r
+        #ACTION_FORMULAIRE{#ENV{action}}\r
+\r
+        <ul>\r
+            #GENERER_SAISIES{#ENV{_saisies}}\r
+            <li style="display:none;">\r
+                <label for="mechantrobot-#ENV{id}"><:antispam_champ_vide:></label>\r
+                <input type="text" id="mechantrobot-#ENV{id}" name="mechantrobot" value="#ENV{mechantrobot}" />\r
+            </li>\r
+        </ul>\r
+\r
+        [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]\r
+        <!--extra-->\r
+\r
+             <INCLURE{fond=formulaires/inc-formidable-boutons} />\r
+    </div></form>\r
+    ]\r
+               [(#ENV{_saisies}|et{#ENV{_saisies}|count}|non)\r
+                       <p class="notice"><:formidable:formulaires_aucun_champ:></p>\r
+               ]\r
+       ]\r
+       [(#ENV{editable}|non)\r
+               [(#ENV{formidable_afficher_apres}|=={valeurs}|oui)\r
+                       #VOIR_SAISIES{#ENV*{_saisies},#ENV}\r
+               ]\r
+               [(#ENV{formidable_afficher_apres}|=={rien}|oui)\r
+               ]\r
+               [(#ENV{formidable_afficher_apres}|=={stats}|oui)\r
+                       #MODELE{formulaire_analyse,id_formulaire=#ENV{id}}\r
+               ]\r
+  ]\r
+</div>\r
+<//B_remplacer_le_formulaire>\r
diff --git a/www/plugins/formidable/formulaires/formidable.php b/www/plugins/formidable/formulaires/formidable.php
new file mode 100644 (file)
index 0000000..b497ef0
--- /dev/null
@@ -0,0 +1,367 @@
+<?php
+
+/**
+ * Gestion de l'affichage et traitement d'un formulaire Formidable
+ *
+ * @package SPIP\Formidable\Formulaires
+ **/
+
+// Sécurité
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+include_spip('inc/formidable');
+include_spip('inc/saisies');
+include_spip('base/abstract_sql');
+include_spip('inc/autoriser');
+
+function formidable_id_formulaire($id){
+       // on utilise une static pour etre sur que si l'appel dans verifier() passe, celui dans traiter() passera aussi
+       // meme si entre temps on perds la base
+       static $id_formulaires = array();
+       if (isset($id_formulaires[$id]))
+               return $id_formulaires[$id];
+
+    if (is_numeric($id))
+               $where = 'id_formulaire = ' . intval($id);
+       elseif (is_string($id))
+               $where = 'identifiant = ' . sql_quote($id);
+       else
+               return 0;
+
+       $id_formulaire = intval(sql_getfetsel('id_formulaire','spip_formulaires',$where));
+
+       if ($id_formulaire
+               AND !test_espace_prive()
+         AND !objet_test_si_publie("formulaire",$id_formulaire))
+               return $id_formulaires[$id] = 0;
+
+       return $id_formulaires[$id] = $id_formulaire;
+}
+
+/**
+ * Chargement du formulaire CVT de Formidable.
+ *
+ * Genere le formulaire dont l'identifiant (numerique ou texte est indique)
+ *
+ * @param int|string $id
+ *     Identifiant numerique ou textuel du formulaire formidable
+ * @param array $valeurs
+ *     Valeurs par défauts passées au contexte du formulaire
+ *     Exemple : array('hidden_1' => 3) pour que champ identifie "@hidden_1@" soit prerempli
+ * @param int|bool $id_formulaires_reponse
+ *     Identifiant d'une réponse pour forcer la reedition de cette reponse spécifique
+ *
+ * @return array
+ *     Contexte envoyé au squelette HTML du formulaire.
+ **/
+function formulaires_formidable_charger($id, $valeurs = array(), $id_formulaires_reponse = false){
+       $contexte = array();
+
+       // On peut donner soit un id soit un identifiant
+       if (!$id_formulaire = formidable_id_formulaire($id))
+               return;
+
+       // On cherche si le formulaire existe
+       if ($formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = ' . intval($id_formulaire))){
+               // On ajoute un point d'entrée avec les infos de ce formulaire
+               // pour d'eventuels plugins qui en ont l'utilité
+               $contexte['_formidable'] = $formulaire;
+
+               // Est-ce que la personne a le droit de répondre ?
+               if (autoriser('repondre', 'formulaire', $formulaire['id_formulaire'], null, array('formulaire' => $formulaire))){
+                       $saisies = unserialize($formulaire['saisies']);
+                       $traitements = unserialize($formulaire['traitements']);
+
+                       // On déclare les champs avec les valeurs par défaut
+                       $contexte = array_merge(saisies_lister_valeurs_defaut($saisies), $contexte);
+                       $contexte['mechantrobot'] = '';
+                       // On ajoute le formulaire complet
+                       $contexte['_saisies'] = $saisies;
+
+                       $contexte['id'] = $formulaire['id_formulaire'];
+                       $contexte['_hidden'] = '<input type="hidden" name="id_formulaire" value="' . $contexte['id'] . '"/>';
+
+                       // S'il y a des valeurs par défaut dans l'appel, alors on pré-remplit
+                       if ($valeurs){
+                               // Si c'est une chaine on essaye de la parser
+                               if (is_string($valeurs)){
+                                       $liste = explode(',', $valeurs);
+                                       $liste = array_map('trim', $liste);
+                                       $valeurs = array();
+                                       foreach ($liste as $i => $cle_ou_valeur){
+                                               if ($i%2==0)
+                                                       $valeurs[$liste[$i]] = $liste[$i+1];
+                                       }
+                               }
+
+                               // Si on a un tableau, alors on écrase avec les valeurs données depuis l'appel
+                               if ($valeurs and is_array($valeurs)){
+                                       $contexte = array_merge($contexte, $valeurs);
+                               }
+                       }
+
+                       // Si on passe un identifiant de reponse, on edite cette reponse si elle existe
+                       if ($id_formulaires_reponse = intval($id_formulaires_reponse)){
+                               $contexte = formidable_definir_contexte_avec_reponse($contexte, $id_formulaires_reponse, $ok);
+                               if ($ok == false){
+                                       $contexte['editable'] = false;
+                                       $contexte['message_erreur'] = _T('formidable:traiter_enregistrement_erreur_edition_reponse_inexistante');
+                               }
+                       } else {
+
+                               // calcul des paramètres d'anonymisation
+                               $options = isset($traitements['enregistrement']) ? $traitements['enregistrement'] : null;
+
+                               $anonymisation = (isset($options['anonymiser']) && $options['anonymiser']==true)
+                                       ? isset($options['anonymiser_variable']) ? $options['anonymiser_variable'] : ''
+                                       : '';
+
+                               // Si multiple = non mais que c'est modifiable, alors on va chercher
+                               // la dernière réponse si elle existe
+                               if ($options
+                                       and !$options['multiple']
+                                       and $options['modifiable']
+                                       and $reponses = formidable_verifier_reponse_formulaire($formulaire['id_formulaire'], $options['identification'], $anonymisation)
+                               ){
+                                       $id_formulaires_reponse = array_pop($reponses);
+                                       $contexte = formidable_definir_contexte_avec_reponse($contexte, $id_formulaires_reponse, $ok);
+                               }
+
+                       }
+               } else {
+                       $contexte['editable'] = false;
+                       // le formulaire a déjà été répondu.
+                       // peut être faut il afficher les statistiques des réponses
+                       if ($formulaire['apres']=='stats'){
+                               // Nous sommes face à un sondage auquel on a déjà répondu !
+                               // On remplace complètement l'affichage du formulaire
+                               // par un affichage du résultat de sondage !
+                               $contexte['_remplacer_formulaire'] = recuperer_fond('modeles/formulaire_analyse', array(
+                                       'id_formulaire' => $formulaire['id_formulaire'],
+                               ));
+                       } else {
+                               $contexte['message_erreur'] = _T('formidable:traiter_enregistrement_erreur_deja_repondu');
+                       }
+               }
+       } else {
+               $contexte['editable'] = false;
+               $contexte['message_erreur'] = _T('formidable:erreur_inexistant');
+       }
+       if (!isset($contexte['_hidden'])){
+               $contexte['_hidden'] = '';
+       }
+       $contexte['_hidden'] .= "\n" . '<input type="hidden" name="formidable_afficher_apres' /*.$formulaire['id_formulaire']*/ . '" value="' . $formulaire['apres'] . '"/>'; // marche pas
+
+       $contexte['formidable_afficher_apres'] = $formulaire['apres'];
+
+       return $contexte;
+}
+
+
+/**
+ * Vérification du formulaire CVT de Formidable.
+ *
+ * Pour chaque champ posté, effectue les vérifications demandées par
+ * les saisies et retourne éventuellement les erreurs de saisie.
+ *
+ * @param int|string $id
+ *     Identifiant numerique ou textuel du formulaire formidable
+ * @param array $valeurs
+ *     Valeurs par défauts passées au contexte du formulaire
+ *     Exemple : array('hidden_1' => 3) pour que champ identifie "@hidden_1@" soit prerempli
+ * @param int|bool $id_formulaires_reponse
+ *     Identifiant d'une réponse pour forcer la reedition de cette reponse spécifique
+ *
+ * @return array
+ *     Tableau des erreurs
+ **/
+function formulaires_formidable_verifier($id, $valeurs = array(), $id_formulaires_reponse = false){
+       $erreurs = array();
+
+       // On peut donner soit un id soit un identifiant
+       if (!$id_formulaire = formidable_id_formulaire($id)){
+
+               $erreurs['message_erreur'] = _T('formidable:erreur_base');
+
+       }
+       else {
+
+               // Sale bête !
+               if (_request('mechantrobot')!=''){
+                       $erreurs['hahahaha'] = 'hahahaha';
+                       return $erreurs;
+               }
+
+               $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = ' . intval($id_formulaire));
+               $saisies = unserialize($formulaire['saisies']);
+
+               $erreurs = saisies_verifier($saisies);
+
+               if ($erreurs and !isset($erreurs['message_erreur']))
+                       $erreurs['message_erreur'] = _T('formidable:erreur_generique');
+
+       }
+
+       return $erreurs;
+}
+
+
+/**
+ * Traitement du formulaire CVT de Formidable.
+ *
+ * Exécute les traitements qui sont indiqués dans la configuration des
+ * traitements de ce formulaire formidable.
+ *
+ * Une fois fait, gère le retour après traitements des saisies en fonction
+ * de ce qui a été configuré dans le formulaire, par exemple :
+ * - faire réafficher le formulaire,
+ * - faire afficher les saisies
+ * - rediriger sur une autre page...
+ *
+ * @param int|string $id
+ *     Identifiant numerique ou textuel du formulaire formidable
+ * @param array $valeurs
+ *     Valeurs par défauts passées au contexte du formulaire
+ *     Exemple : array('hidden_1' => 3) pour que champ identifie "@hidden_1@" soit prerempli
+ * @param int|bool $id_formulaires_reponse
+ *     Identifiant d'une réponse pour forcer la reedition de cette reponse spécifique
+ *
+ * @return array
+ *     Tableau des erreurs
+ **/
+function formulaires_formidable_traiter($id, $valeurs = array(), $id_formulaires_reponse = false){
+       $retours = array();
+
+       // POST Mortem de securite : on log le $_POST pour ne pas le perdre si quelque chose se passe mal
+       include_spip("inc/json");
+       $post = json_encode($_POST);
+       spip_log($post,"formidable_post"._LOG_INFO_IMPORTANTE);
+
+       // On peut donner soit un id soit un identifiant
+       if (!$id_formulaire = formidable_id_formulaire($id))
+               return array('message_erreur'=>_T('formidable:erreur_base'));
+
+       $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = ' . $id_formulaire);
+       $traitements = unserialize($formulaire['traitements']);
+
+       // selon le choix, le formulaire se remet en route à la fin ou non
+       $retours['editable'] = ($formulaire['apres']=='formulaire');
+       $retours['formidable_afficher_apres'] = $formulaire['apres'];
+       $retours['id_formulaire'] = $id_formulaire;
+
+       // Si on a une redirection valide
+       if (($formulaire['apres']=="redirige") AND ($formulaire['url_redirect']!="")){
+               refuser_traiter_formulaire_ajax();
+               // traiter les raccourcis artX, brX
+               include_spip("inc/lien");
+               $url_redirect = typer_raccourci($formulaire['url_redirect']);
+               if (count($url_redirect)>2){
+                       $url_redirect = $url_redirect[0] . $url_redirect[2];
+               } else {
+                       $url_redirect = $formulaire['url_redirect']; // URL classique
+               }
+
+               $retours['redirect'] = $url_redirect;
+       }
+
+       // les traitements deja faits se notent ici
+       // pour etre sur de ne pas etre appeles 2 fois
+       // ainsi si un traitement A a besoin d'un traitement B,
+       // et que B n'est pas fait quand il est appele, il peut rendre la main sans rien faire au premier coup
+       // et sera rappele au second tour
+       $retours['traitements'] = array();
+       $erreur_texte = "";
+
+       // Si on a des traitements
+       if (is_array($traitements) and !empty($traitements)){
+               $maxiter = 5;
+               do {
+                       foreach ($traitements as $type_traitement => $options){
+                               // si traitement deja appele, ne pas le relancer
+                               if (!isset($retours['traitements'][$type_traitement])){
+                                 if ($appliquer_traitement = charger_fonction($type_traitement, 'traiter/', true)){
+                                               $retours = $appliquer_traitement(
+                                                       array(
+                                                               'formulaire' => $formulaire,
+                                                               'options' => $options,
+                                                       'id_formulaire' => $id_formulaire,
+                                                       'valeurs' => $valeurs,
+                                                       'id_formulaires_reponse' => $id_formulaires_reponse,
+                                                       ),
+                                                       $retours
+                                               );
+                                       }
+                                       else {
+                                               // traitement introuvable, ne pas retenter
+                                               $retours['traitements'][$type_traitement] = true;
+                                       }
+                               }
+                       }
+               }
+               while (count($retours['traitements'])<count($traitements) AND $maxiter--);
+
+               // si on ne peut pas traiter correctement, alerter le webmestre
+               if (count($retours['traitements'])<count($traitements)){
+                       $erreur_texte = "Impossible de traiter correctement le formulaire $id\n"
+                               . "Traitements attendus :".implode(',',array_keys($traitements))."\n"
+                               . "Traitements realises :".implode(',',array_keys($retours['traitements']))."\n";
+               }
+
+               // Si on a personnalisé le message de retour, c'est lui qui est affiché uniquement
+               if ($formulaire['message_retour']){
+                       $retours['message_ok'] = _T_ou_typo($formulaire['message_retour']);
+               }
+       }
+       else {
+               $retours['message_erreur'] = _T('formidable:retour_aucun_traitement');
+       }
+
+       // si aucun traitement, alerter le webmestre pour ne pas perdre les donnees
+       if (!$erreur_texte AND !count($retours['traitements'])){
+               $erreur_texte = "Aucun traitement pour le formulaire $id\n";
+       }
+
+       if ($erreur_texte){
+               $erreur_sujet = "[ERREUR] Traitement Formulaire $id";
+               // dumper la saisie pour ne pas la perdre
+               $erreur_texte .= "\n".var_export($_REQUEST,true);
+               $envoyer_mail = charger_fonction("envoyer_mail","inc");
+               $envoyer_mail($GLOBALS['meta']['email_webmaster'],$erreur_sujet,$erreur_texte);
+       }
+       unset($retours['traitements']);
+
+       return $retours;
+}
+
+
+/**
+ * Ajoute dans le contexte les elements
+ * donnés par une reponse de formulaire indiquée
+ *
+ * @param array $contexte
+ *     Contexte pour le squelette HTML du formulaire
+ * @param int $id_formulaires_reponse
+ *     Identifiant de réponse
+ * @param bool $ok
+ *     La reponse existe bien ?
+ * @return array $contexte
+ *     Contexte complète des nouvelles informations
+ *
+ **/
+function formidable_definir_contexte_avec_reponse($contexte, $id_formulaires_reponse, &$ok){
+       // On va chercher tous les champs
+       $champs = sql_allfetsel(
+               'nom, valeur',
+               'spip_formulaires_reponses_champs',
+               'id_formulaires_reponse = ' . $id_formulaires_reponse
+       );
+       $ok = count($champs) ? true : false;
+
+       // On remplit le contexte avec
+       foreach ($champs as $champ){
+               $test_array = unserialize($champ['valeur']);
+               $contexte[$champ['nom']] = is_array($test_array) ? $test_array : $champ['valeur'];
+       }
+
+       return $contexte;
+}
diff --git a/www/plugins/formidable/formulaires/importer_formulaire.html b/www/plugins/formidable/formulaires/importer_formulaire.html
new file mode 100644 (file)
index 0000000..139193d
--- /dev/null
@@ -0,0 +1,31 @@
+<div class="formulaire_spip formulaire_#ENV{form}[ formulaire_#ENV{form}-(#ENV{id})]">
+       <h3 class="titrem"><:formidable:importer_formulaire:></h3>
+       [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
+       [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
+       
+       [(#ENV{editable}|oui)
+       <form method="post" action="#ENV{action}" enctype="multipart/form-data"><div>
+               [(#REM) declarer les hidden qui declencheront le service du formulaire 
+               parametre : url d'action ]
+               #ACTION_FORMULAIRE{#ENV{action}}
+               
+               <ul>
+                       [(#SAISIE{selection, type_import,
+                               label=<:formidable:importer_formulaire_format_label:>,
+                               datas=#ENV{_types_import},
+                               defaut=yaml,
+                               cacher_option_intro=oui})]
+                       
+                       [(#SAISIE{input, fichier,
+                               label=<:formidable:importer_formulaire_fichier_label:>,
+                               type=file,
+                               size=6})]
+               </ul>
+               
+               [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
+               <!--extra-->
+               
+               <p class="boutons"><span class="image_loading"></span><input type="submit" class="submit" value="<:bouton_telecharger:>" /></p>
+       </div></form>
+       ]
+</div>
diff --git a/www/plugins/formidable/formulaires/importer_formulaire.php b/www/plugins/formidable/formulaires/importer_formulaire.php
new file mode 100644 (file)
index 0000000..9ecfa15
--- /dev/null
@@ -0,0 +1,68 @@
+<?php
+
+// Sécurité
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+include_spip('inc/formidable');
+include_spip('inc/config');
+
+function formulaires_importer_formulaire_charger(){
+       
+       $contexte = array();
+       
+       // On va chercher toutes les fonctions d'importation existantes
+       $types_echange = echanges_formulaire_lister_disponibles();
+       $types_import = array();
+       foreach ($types_echange['importer'] as $type=>$fonction){
+               $types_import[$type] = _T("formidable:echanger_formulaire_${type}_importer");
+       }
+       
+       $contexte['_types_import'] = $types_import;
+       
+       return $contexte;
+}
+
+function formulaires_importer_formulaire_verifier(){
+       $erreurs = array();
+       
+       return $erreurs;
+}
+
+function formulaires_importer_formulaire_traiter(){
+       $retours = array();
+       
+       if (!$_FILES['fichier']['error']){
+               $type_import = _request('type_import');
+               $fichier = $_FILES['fichier']['tmp_name'];
+       
+               $importer = charger_fonction('importer', "echanger/formulaire/$type_import", true);
+
+               try {
+                       $erreur_ou_id = $importer($fichier);
+               }
+               catch (Exception $e){
+                       $erreur_ou_id = $e->getMessage();
+               }
+
+               if (!is_numeric($erreur_ou_id)){
+                       $retours['message_erreur'] = $erreur_ou_id;
+                       $retours['editable'] = true;
+               }
+               else{
+                       $id_formulaire = intval($erreur_ou_id);
+                       // Tout a fonctionné. En fonction de la config, on attribue l'auteur courant
+                       $auteurs = lire_config('formidable/analyse/auteur');
+                       if ($auteurs == 'on') {
+                               if ($id_auteur = session_get('id_auteur')) {
+                                       // association (par défaut) du formulaire et de l'auteur courant
+                                       objet_associer(array('formulaire'=>$id_formulaire), array('auteur'=>$id_auteur));
+                               }
+                       }
+                       $retours['redirect'] = generer_url_ecrire('formulaire', "id_formulaire=$id_formulaire");
+               }
+       }
+       
+       return $retours;
+}
+
+?>
diff --git a/www/plugins/formidable/formulaires/inc-formidable-boutons.html b/www/plugins/formidable/formulaires/inc-formidable-boutons.html
new file mode 100644 (file)
index 0000000..5381699
--- /dev/null
@@ -0,0 +1,4 @@
+<p class='boutons'>
+    <span class='image_loading'></span>
+    <input type='submit' class='submit' value='<:bouton_valider:>' />
+</p>
diff --git a/www/plugins/formidable/icones_barre/formulaire.png b/www/plugins/formidable/icones_barre/formulaire.png
new file mode 100644 (file)
index 0000000..0cf4900
Binary files /dev/null and b/www/plugins/formidable/icones_barre/formulaire.png differ
diff --git a/www/plugins/formidable/images/formidable-128.png b/www/plugins/formidable/images/formidable-128.png
new file mode 100644 (file)
index 0000000..8d6b21c
Binary files /dev/null and b/www/plugins/formidable/images/formidable-128.png differ
diff --git a/www/plugins/formidable/images/formidable-24.png b/www/plugins/formidable/images/formidable-24.png
new file mode 100644 (file)
index 0000000..c8c577f
Binary files /dev/null and b/www/plugins/formidable/images/formidable-24.png differ
diff --git a/www/plugins/formidable/images/formidable-64.png b/www/plugins/formidable/images/formidable-64.png
new file mode 100644 (file)
index 0000000..80d5ab8
Binary files /dev/null and b/www/plugins/formidable/images/formidable-64.png differ
diff --git a/www/plugins/formidable/images/formidable.svg b/www/plugins/formidable/images/formidable.svg
new file mode 100644 (file)
index 0000000..5baf77e
--- /dev/null
@@ -0,0 +1,1104 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg:svg
+   xmlns:i="http://ns.adobe.com/AdobeIllustrator/10.0/"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64px"
+   height="64px"
+   id="svg9991"
+   sodipodi:version="0.32"
+   inkscape:version="0.47pre4 r22446"
+   sodipodi:docname="formidable.svg"
+   inkscape:export-filename="/home/vincent/public_html/collectivite/plugins/formidable/images/formidable-128.png"
+   inkscape:export-xdpi="180"
+   inkscape:export-ydpi="180"
+   version="1.1">
+  <svg:defs
+     id="defs9993">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 32 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="64 : 32 : 1"
+       inkscape:persp3d-origin="32 : 21.333333 : 1"
+       id="perspective227" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       id="linearGradient9806">
+      <svg:stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop9808" />
+      <svg:stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop9810" />
+    </svg:linearGradient>
+    <svg:radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient9806"
+       id="radialGradient9812"
+       cx="24.35099"
+       cy="41.591846"
+       fx="24.35099"
+       fy="41.591846"
+       r="19.136078"
+       gradientTransform="matrix(1,0,0,0.242494,0,31.50606)"
+       gradientUnits="userSpaceOnUse" />
+    <svg:linearGradient
+       id="XMLID_3_"
+       gradientUnits="userSpaceOnUse"
+       x1="26.2524"
+       y1="34.8477"
+       x2="26.2524"
+       y2="32.5825">
+      <svg:stop
+         offset="0"
+         style="stop-color:#EF2929"
+         id="stop227" />
+      <svg:stop
+         offset="1"
+         style="stop-color:#A40000"
+         id="stop229" />
+    </svg:linearGradient>
+    <svg:linearGradient
+       id="path2756_1_"
+       gradientUnits="userSpaceOnUse"
+       x1="-4.2974"
+       y1="72.0352"
+       x2="-4.2974"
+       y2="69.3176"
+       gradientTransform="matrix(1.1501,0,0,-1.1501,31.1956,114.7217)">
+      <svg:stop
+         offset="0"
+         style="stop-color:#555753"
+         id="stop215" />
+      <svg:stop
+         offset="0.1275"
+         style="stop-color:#484C4A"
+         id="stop217" />
+      <svg:stop
+         offset="0.3459"
+         style="stop-color:#393E3F"
+         id="stop219" />
+      <svg:stop
+         offset="0.6043"
+         style="stop-color:#313638"
+         id="stop221" />
+      <svg:stop
+         offset="1"
+         style="stop-color:#2E3436"
+         id="stop223" />
+    </svg:linearGradient>
+    <svg:radialGradient
+       id="path2327_1_"
+       cx="169.5005"
+       cy="-40.2339"
+       r="9.5353"
+       gradientTransform="matrix(0.788,0,0,-0.788,-109.0825,-6.0314)"
+       gradientUnits="userSpaceOnUse">
+      <svg:stop
+         offset="0"
+         style="stop-color:#E9B96E"
+         id="stop199" />
+      <svg:stop
+         offset="1"
+         style="stop-color:#C17D11"
+         id="stop201" />
+    </svg:radialGradient>
+    <svg:linearGradient
+       id="XMLID_2_"
+       gradientUnits="userSpaceOnUse"
+       x1="-25.979"
+       y1="-10.6646"
+       x2="-18.7339"
+       y2="-10.6646"
+       gradientTransform="matrix(0.4034,-0.1906,0.427,0.9042,34.7974,24.8318)">
+      <svg:stop
+         offset="0"
+         style="stop-color:#C17D11"
+         id="stop186" />
+      <svg:stop
+         offset="0.2735"
+         style="stop-color:#BD7A10"
+         id="stop188" />
+      <svg:stop
+         offset="0.5694"
+         style="stop-color:#B0700C"
+         id="stop190" />
+      <svg:stop
+         offset="0.8747"
+         style="stop-color:#9A6105"
+         id="stop192" />
+      <svg:stop
+         offset="1"
+         style="stop-color:#8F5902"
+         id="stop194" />
+    </svg:linearGradient>
+    <svg:linearGradient
+       id="XMLID_1_"
+       gradientUnits="userSpaceOnUse"
+       x1="-25.4316"
+       y1="-10.5493"
+       x2="-18.1875"
+       y2="-10.5493"
+       gradientTransform="matrix(-0.4034,-0.1906,-0.427,0.9042,17.9775,24.8318)">
+      <svg:stop
+         offset="0"
+         style="stop-color:#C17D11"
+         id="stop173" />
+      <svg:stop
+         offset="0.2735"
+         style="stop-color:#BD7A10"
+         id="stop175" />
+      <svg:stop
+         offset="0.5694"
+         style="stop-color:#B0700C"
+         id="stop177" />
+      <svg:stop
+         offset="0.8747"
+         style="stop-color:#9A6105"
+         id="stop179" />
+      <svg:stop
+         offset="1"
+         style="stop-color:#8F5902"
+         id="stop181" />
+    </svg:linearGradient>
+    <svg:linearGradient
+       id="path4173_1_"
+       gradientUnits="userSpaceOnUse"
+       x1="65.4673"
+       y1="21.7046"
+       x2="65.4673"
+       y2="15.4519"
+       gradientTransform="matrix(1,0,0,-1,-34.4082,61.0186)">
+      <svg:stop
+         offset="0"
+         style="stop-color:#FFFFFF"
+         id="stop163" />
+      <svg:stop
+         offset="1"
+         style="stop-color:#C9C9C9"
+         id="stop165" />
+    </svg:linearGradient>
+    <svg:linearGradient
+       id="path29441_5_"
+       gradientUnits="userSpaceOnUse"
+       x1="-764.8428"
+       y1="70.6904"
+       x2="-768.0942"
+       y2="65.1441"
+       gradientTransform="matrix(-0.9772,0,0,-0.9959,-719.1876,75.5817)">
+      <svg:stop
+         offset="0"
+         style="stop-color:#F5F5F5"
+         id="stop80" />
+      <svg:stop
+         offset="1"
+         style="stop-color:#E9E9E9"
+         id="stop82" />
+    </svg:linearGradient>
+    <svg:linearGradient
+       id="path29441_4_"
+       gradientUnits="userSpaceOnUse"
+       x1="-776.0811"
+       y1="62.5264"
+       x2="-779.3325"
+       y2="56.9801"
+       gradientTransform="matrix(-0.9772,0,0,-0.9959,-719.1876,75.5817)">
+      <svg:stop
+         offset="0"
+         style="stop-color:#F5F5F5"
+         id="stop71" />
+      <svg:stop
+         offset="1"
+         style="stop-color:#E9E9E9"
+         id="stop73" />
+    </svg:linearGradient>
+    <svg:linearGradient
+       id="rect29408_3_"
+       gradientUnits="userSpaceOnUse"
+       x1="35.4419"
+       y1="63.6533"
+       x2="40.9202"
+       y2="57.2008"
+       gradientTransform="matrix(1.0076,0,0,-0.9876,-21.8209,64.5593)">
+      <svg:stop
+         offset="0"
+         style="stop-color:#F5F5F5"
+         id="stop62" />
+      <svg:stop
+         offset="1"
+         style="stop-color:#E9E9E9"
+         id="stop64" />
+    </svg:linearGradient>
+    <svg:linearGradient
+       id="path29441_3_"
+       gradientUnits="userSpaceOnUse"
+       x1="-777.9102"
+       y1="48.9697"
+       x2="-781.1614"
+       y2="43.4239"
+       gradientTransform="matrix(-0.9772,0,0,-0.9959,-719.1876,75.5817)">
+      <svg:stop
+         offset="0"
+         style="stop-color:#F5F5F5"
+         id="stop53" />
+      <svg:stop
+         offset="1"
+         style="stop-color:#E9E9E9"
+         id="stop55" />
+    </svg:linearGradient>
+    <svg:linearGradient
+       id="rect29408_2_"
+       gradientUnits="userSpaceOnUse"
+       x1="29.3257"
+       y1="53.0791"
+       x2="34.8039"
+       y2="46.6266"
+       gradientTransform="matrix(1.0076,0,0,-0.9876,-21.8209,64.5593)">
+      <svg:stop
+         offset="0"
+         style="stop-color:#F5F5F5"
+         id="stop44" />
+      <svg:stop
+         offset="1"
+         style="stop-color:#E9E9E9"
+         id="stop46" />
+    </svg:linearGradient>
+    <svg:linearGradient
+       id="path4370_1_"
+       gradientUnits="userSpaceOnUse"
+       x1="-695.4531"
+       y1="-64.7212"
+       x2="-696.7315"
+       y2="-64.0704"
+       gradientTransform="matrix(-0.9777,0.2101,-0.2101,-0.9777,-658.7002,129.0211)">
+      <svg:stop
+         offset="0"
+         style="stop-color:#000000"
+         id="stop36" />
+      <svg:stop
+         offset="1"
+         style="stop-color:#000000"
+         id="stop38" />
+    </svg:linearGradient>
+    <svg:linearGradient
+       id="path4368_1_"
+       gradientUnits="userSpaceOnUse"
+       x1="95.3657"
+       y1="95.0371"
+       x2="97.3309"
+       y2="94.6373"
+       gradientTransform="matrix(0.9834,0.1816,0.1816,-0.9834,-95.5652,121.2474)">
+      <svg:stop
+         offset="0"
+         style="stop-color:#000000"
+         id="stop30" />
+      <svg:stop
+         offset="1"
+         style="stop-color:#000000"
+         id="stop32" />
+    </svg:linearGradient>
+    <svg:radialGradient
+       id="path2329_1_"
+       cx="46.8472"
+       cy="-100.144"
+       r="13.5656"
+       gradientTransform="matrix(1,0,0,-0.6819,-21.9902,-29.6113)"
+       gradientUnits="userSpaceOnUse">
+      <svg:stop
+         offset="0"
+         style="stop-color:#729FCF"
+         id="stop23" />
+      <svg:stop
+         offset="1"
+         style="stop-color:#3465A4"
+         id="stop25" />
+    </svg:radialGradient>
+    <svg:radialGradient
+       id="XMLID_5_"
+       cx="23.436"
+       cy="33.9185"
+       r="19.7892"
+       gradientTransform="matrix(0.5861,1.37e-2,1.37e-2,0.6642,-2.6747,12.0504)"
+       gradientUnits="userSpaceOnUse">
+      <svg:stop
+         offset="0"
+         style="stop-color:#E9B96E"
+         id="stop14" />
+      <svg:stop
+         offset="1"
+         style="stop-color:#C17D11"
+         id="stop16" />
+    </svg:radialGradient>
+    <svg:foreignObject
+       id="foreignObject7"
+       height="1"
+       width="1"
+       y="0"
+       x="0"
+       requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/">
+      <i:pgfRef
+         xlink:href="#adobe_illustrator_pgf" />
+    </svg:foreignObject>
+    <svg:radialGradient
+       inkscape:collect="always"
+       xlink:href="#XMLID_5_"
+       id="radialGradient266885"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5861,1.37e-2,1.37e-2,0.6642,-2.6747,12.0504)"
+       cx="23.436"
+       cy="33.9185"
+       r="19.7892" />
+    <svg:radialGradient
+       inkscape:collect="always"
+       xlink:href="#path2329_1_"
+       id="radialGradient266887"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,-0.6819,-21.9902,-29.6113)"
+       cx="46.8472"
+       cy="-100.144"
+       r="13.5656" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#path4368_1_"
+       id="linearGradient266889"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9834,0.1816,0.1816,-0.9834,-95.5652,121.2474)"
+       x1="95.3657"
+       y1="95.0371"
+       x2="97.3309"
+       y2="94.6373" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#path4370_1_"
+       id="linearGradient266891"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9777,0.2101,-0.2101,-0.9777,-658.7002,129.0211)"
+       x1="-695.4531"
+       y1="-64.7212"
+       x2="-696.7315"
+       y2="-64.0704" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#path4173_1_"
+       id="linearGradient266903"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,-1,-34.4082,61.0186)"
+       x1="65.4673"
+       y1="21.7046"
+       x2="65.4673"
+       y2="15.4519" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#XMLID_1_"
+       id="linearGradient266905"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.4034,-0.1906,-0.427,0.9042,17.9775,24.8318)"
+       x1="-25.4316"
+       y1="-10.5493"
+       x2="-18.1875"
+       y2="-10.5493" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#XMLID_2_"
+       id="linearGradient266907"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.4034,-0.1906,0.427,0.9042,34.7974,24.8318)"
+       x1="-25.979"
+       y1="-10.6646"
+       x2="-18.7339"
+       y2="-10.6646" />
+    <svg:radialGradient
+       inkscape:collect="always"
+       xlink:href="#path2327_1_"
+       id="radialGradient266909"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.788,0,0,-0.788,-109.0825,-6.0314)"
+       cx="169.5005"
+       cy="-40.2339"
+       r="9.5353" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#path2756_1_"
+       id="linearGradient266911"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.1501,0,0,-1.1501,31.1956,114.7217)"
+       x1="-4.2974"
+       y1="72.0352"
+       x2="-4.2974"
+       y2="69.3176" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#XMLID_3_"
+       id="linearGradient266913"
+       gradientUnits="userSpaceOnUse"
+       x1="26.2524"
+       y1="34.8477"
+       x2="26.2524"
+       y2="32.5825" />
+    <svg:radialGradient
+       id="radialGradient2174"
+       cx="46.847198"
+       cy="-100.144"
+       r="13.5656"
+       gradientTransform="matrix(1,0,0,-0.6819,-21.9902,-29.6113)"
+       gradientUnits="userSpaceOnUse">
+      <svg:stop
+         offset="0"
+         style="stop-color:#729FCF"
+         id="stop2176" />
+      <svg:stop
+         offset="1"
+         style="stop-color:#3465A4"
+         id="stop2178" />
+    </svg:radialGradient>
+    <svg:linearGradient
+       id="linearGradient2182"
+       gradientUnits="userSpaceOnUse"
+       x1="95.3657"
+       y1="95.037102"
+       x2="97.330902"
+       y2="94.637299"
+       gradientTransform="matrix(0.9834,0.1816,0.1816,-0.9834,-95.5652,121.2474)">
+      <svg:stop
+         offset="0"
+         style="stop-color:#000000"
+         id="stop2184" />
+      <svg:stop
+         offset="1"
+         style="stop-color:#000000"
+         id="stop2186" />
+    </svg:linearGradient>
+    <svg:linearGradient
+       id="linearGradient2189"
+       gradientUnits="userSpaceOnUse"
+       x1="-695.45312"
+       y1="-64.721199"
+       x2="-696.73151"
+       y2="-64.070396"
+       gradientTransform="matrix(-0.9777,0.2101,-0.2101,-0.9777,-658.7002,129.0211)">
+      <svg:stop
+         offset="0"
+         style="stop-color:#000000"
+         id="stop2191" />
+      <svg:stop
+         offset="1"
+         style="stop-color:#000000"
+         id="stop2193" />
+    </svg:linearGradient>
+    <namedview
+       zoom="9.8994949"
+       pageopacity="0.0"
+       pageshadow="2"
+       showpageshadow="false"
+       borderopacity="0.17254902"
+       pagecolor="#ffffff"
+       bordercolor="#666666"
+       cy="24.622653"
+       showgrid="false"
+       current-layer="layer1"
+       cx="25.799661"
+       window-y="167"
+       document-units="px"
+       window-width="770"
+       grid-bbox="true"
+       window-height="695"
+       window-x="472" />
+    <svg:linearGradient
+       id="linearGradient2280"
+       gradientUnits="userSpaceOnUse"
+       x1="65.4673"
+       y1="21.704599"
+       x2="65.4673"
+       y2="15.4519"
+       gradientTransform="matrix(1,0,0,-1,-34.4082,61.0186)">
+      <svg:stop
+         offset="0"
+         style="stop-color:#FFFFFF"
+         id="stop2282" />
+      <svg:stop
+         offset="1"
+         style="stop-color:#C9C9C9"
+         id="stop2284" />
+    </svg:linearGradient>
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#path4173_1_"
+       id="linearGradient266966"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.7587571,0,0,-1.7587571,-73.922013,79.170666)"
+       x1="65.4673"
+       y1="21.7046"
+       x2="65.4673"
+       y2="15.4519" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#path4370_1_"
+       id="linearGradient267038"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.7195361,0.36951432,-0.36951432,-1.7195361,-1171.8999,198.77048)"
+       x1="-695.4531"
+       y1="-64.7212"
+       x2="-696.7315"
+       y2="-64.0704" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#path4368_1_"
+       id="linearGradient267041"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.7295622,0.31939001,0.31939001,-1.7295622,-181.4823,185.09853)"
+       x1="95.3657"
+       y1="95.0371"
+       x2="97.3309"
+       y2="94.6373" />
+    <svg:radialGradient
+       inkscape:collect="always"
+       xlink:href="#path2329_1_"
+       id="radialGradient267045"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.758757,0,0,-1.1992961,-52.081768,-80.225303)"
+       cx="46.8472"
+       cy="-100.144"
+       r="13.5656" />
+    <svg:radialGradient
+       inkscape:collect="always"
+       xlink:href="#XMLID_5_"
+       id="radialGradient267053"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5861,1.37e-2,1.37e-2,0.6642,-2.6747,12.0504)"
+       cx="23.436"
+       cy="33.9185"
+       r="19.7892" />
+    <svg:radialGradient
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5861,1.37e-2,1.37e-2,0.6642,-2.6747,12.0504)"
+       r="19.7892"
+       cy="33.918499"
+       cx="23.436001"
+       id="radialGradient2166">
+      <svg:stop
+         id="stop2168"
+         style="stop-color:#E9B96E"
+         offset="0" />
+      <svg:stop
+         id="stop2170"
+         style="stop-color:#C17D11"
+         offset="1" />
+    </svg:radialGradient>
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#XMLID_1_"
+       id="linearGradient267061"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.4034,-0.1906,-0.427,0.9042,17.9775,24.8318)"
+       x1="-25.4316"
+       y1="-10.5493"
+       x2="-18.1875"
+       y2="-10.5493" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#XMLID_2_"
+       id="linearGradient267063"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.4034,-0.1906,0.427,0.9042,34.7974,24.8318)"
+       x1="-25.979"
+       y1="-10.6646"
+       x2="-18.7339"
+       y2="-10.6646" />
+    <svg:radialGradient
+       inkscape:collect="always"
+       xlink:href="#path2327_1_"
+       id="radialGradient267065"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.788,0,0,-0.788,-109.0825,-6.0314)"
+       cx="169.5005"
+       cy="-40.2339"
+       r="9.5353" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#path2756_1_"
+       id="linearGradient267067"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.1501,0,0,-1.1501,31.1956,114.7217)"
+       x1="-4.2974"
+       y1="72.0352"
+       x2="-4.2974"
+       y2="69.3176" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#XMLID_3_"
+       id="linearGradient267069"
+       gradientUnits="userSpaceOnUse"
+       x1="26.2524"
+       y1="34.8477"
+       x2="26.2524"
+       y2="32.5825" />
+    <svg:radialGradient
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.788,0,0,-0.788,-109.0825,-6.0314)"
+       r="9.5353003"
+       cy="-40.233898"
+       cx="169.5005"
+       id="radialGradient2315">
+      <svg:stop
+         id="stop2317"
+         style="stop-color:#E9B96E"
+         offset="0" />
+      <svg:stop
+         id="stop2319"
+         style="stop-color:#C17D11"
+         offset="1" />
+    </svg:radialGradient>
+    <svg:linearGradient
+       gradientTransform="matrix(1.1501,0,0,-1.1501,31.1956,114.7217)"
+       y2="69.317596"
+       x2="-4.2974"
+       y1="72.035202"
+       x1="-4.2974"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2329">
+      <svg:stop
+         id="stop2331"
+         style="stop-color:#555753"
+         offset="0" />
+      <svg:stop
+         id="stop2333"
+         style="stop-color:#484C4A"
+         offset="0.1275" />
+      <svg:stop
+         id="stop2335"
+         style="stop-color:#393E3F"
+         offset="0.3459" />
+      <svg:stop
+         id="stop2337"
+         style="stop-color:#313638"
+         offset="0.6043" />
+      <svg:stop
+         id="stop2339"
+         style="stop-color:#2E3436"
+         offset="1" />
+    </svg:linearGradient>
+    <svg:linearGradient
+       y2="32.5825"
+       x2="26.252399"
+       y1="34.847698"
+       x1="26.252399"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2342">
+      <svg:stop
+         id="stop2344"
+         style="stop-color:#EF2929"
+         offset="0" />
+      <svg:stop
+         id="stop2346"
+         style="stop-color:#A40000"
+         offset="1" />
+    </svg:linearGradient>
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#XMLID_3_"
+       id="linearGradient267084"
+       gradientUnits="userSpaceOnUse"
+       x1="26.2524"
+       y1="34.8477"
+       x2="26.2524"
+       y2="32.5825"
+       gradientTransform="matrix(2.7108449,0,0,2.7108449,-38.9913,-41.797214)" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#path2756_1_"
+       id="linearGradient267087"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.1177432,0,0,-3.1177432,45.575138,269.19554)"
+       x1="-4.2974"
+       y1="72.0352"
+       x2="-4.2974"
+       y2="69.3176" />
+    <svg:radialGradient
+       inkscape:collect="always"
+       xlink:href="#path2327_1_"
+       id="radialGradient267097"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.136146,0,0,-2.136146,-334.697,-58.147403)"
+       cx="169.5005"
+       cy="-40.2339"
+       r="9.5353" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#XMLID_1_"
+       id="linearGradient267114"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.4034,-0.1906,-0.427,0.9042,17.9775,24.8318)"
+       x1="-25.4316"
+       y1="-10.5493"
+       x2="-18.1875"
+       y2="-10.5493" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#XMLID_2_"
+       id="linearGradient267116"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.4034,-0.1906,0.427,0.9042,34.7974,24.8318)"
+       x1="-25.979"
+       y1="-10.6646"
+       x2="-18.7339"
+       y2="-10.6646" />
+    <svg:linearGradient
+       id="linearGradient2289"
+       gradientUnits="userSpaceOnUse"
+       x1="-25.431601"
+       y1="-10.5493"
+       x2="-18.1875"
+       y2="-10.5493"
+       gradientTransform="matrix(-0.4034,-0.1906,-0.427,0.9042,17.9775,24.8318)">
+      <svg:stop
+         offset="0"
+         style="stop-color:#C17D11"
+         id="stop2291" />
+      <svg:stop
+         offset="0.2735"
+         style="stop-color:#BD7A10"
+         id="stop2293" />
+      <svg:stop
+         offset="0.5694"
+         style="stop-color:#B0700C"
+         id="stop2295" />
+      <svg:stop
+         offset="0.8747"
+         style="stop-color:#9A6105"
+         id="stop2297" />
+      <svg:stop
+         offset="1"
+         style="stop-color:#8F5902"
+         id="stop2299" />
+    </svg:linearGradient>
+    <svg:linearGradient
+       id="linearGradient2302"
+       gradientUnits="userSpaceOnUse"
+       x1="-25.979"
+       y1="-10.6646"
+       x2="-18.7339"
+       y2="-10.6646"
+       gradientTransform="matrix(0.4034,-0.1906,0.427,0.9042,34.7974,24.8318)">
+      <svg:stop
+         offset="0"
+         style="stop-color:#C17D11"
+         id="stop2304" />
+      <svg:stop
+         offset="0.2735"
+         style="stop-color:#BD7A10"
+         id="stop2306" />
+      <svg:stop
+         offset="0.5694"
+         style="stop-color:#B0700C"
+         id="stop2308" />
+      <svg:stop
+         offset="0.8747"
+         style="stop-color:#9A6105"
+         id="stop2310" />
+      <svg:stop
+         offset="1"
+         style="stop-color:#8F5902"
+         id="stop2312" />
+    </svg:linearGradient>
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#XMLID_2_"
+       id="linearGradient267131"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0935548,-0.51668813,1.15753,2.4511451,55.339053,25.517944)"
+       x1="-25.979"
+       y1="-10.6646"
+       x2="-18.7339"
+       y2="-10.6646" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#XMLID_1_"
+       id="linearGradient267134"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0935548,-0.51668813,-1.15753,2.4511451,9.74292,25.517944)"
+       x1="-25.4316"
+       y1="-10.5493"
+       x2="-18.1875"
+       y2="-10.5493" />
+    <inkscape:perspective
+       id="perspective3062"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective3076"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective3090"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective3104"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective3118"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#XMLID_1_"
+       id="linearGradient3017"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0935548,-0.51668813,-1.15753,2.4511451,9.74292,25.517944)"
+       x1="-25.4316"
+       y1="-10.5493"
+       x2="-18.1875"
+       y2="-10.5493" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#XMLID_2_"
+       id="linearGradient3019"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0935548,-0.51668813,1.15753,2.4511451,55.339053,25.517944)"
+       x1="-25.979"
+       y1="-10.6646"
+       x2="-18.7339"
+       y2="-10.6646" />
+    <svg:radialGradient
+       inkscape:collect="always"
+       xlink:href="#path2327_1_"
+       id="radialGradient3021"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.136146,0,0,-2.136146,-334.697,-58.147403)"
+       cx="169.5005"
+       cy="-40.2339"
+       r="9.5353" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#path2756_1_"
+       id="linearGradient3023"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.1177432,0,0,-3.1177432,45.575138,269.19554)"
+       x1="-4.2974"
+       y1="72.0352"
+       x2="-4.2974"
+       y2="69.3176" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#XMLID_3_"
+       id="linearGradient3025"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.7108449,0,0,2.7108449,-38.9913,-41.797214)"
+       x1="26.2524"
+       y1="34.8477"
+       x2="26.2524"
+       y2="32.5825" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#XMLID_3_"
+       id="linearGradient3030"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.7108449,0,0,2.7108449,-39.169171,-41.746948)"
+       x1="26.2524"
+       y1="34.8477"
+       x2="26.2524"
+       y2="32.5825" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#path2756_1_"
+       id="linearGradient3033"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.1177432,0,0,-3.1177432,45.397267,269.24581)"
+       x1="-4.2974"
+       y1="72.0352"
+       x2="-4.2974"
+       y2="69.3176" />
+    <svg:radialGradient
+       inkscape:collect="always"
+       xlink:href="#path2327_1_"
+       id="radialGradient3040"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.136146,0,0,-2.136146,-334.87487,-58.097137)"
+       cx="169.5005"
+       cy="-40.2339"
+       r="9.5353" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#XMLID_2_"
+       id="linearGradient3043"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0935548,-0.51668813,1.15753,2.4511451,55.161182,25.56821)"
+       x1="-25.979"
+       y1="-10.6646"
+       x2="-18.7339"
+       y2="-10.6646" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#XMLID_1_"
+       id="linearGradient3046"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0935548,-0.51668813,-1.15753,2.4511451,9.5650493,25.56821)"
+       x1="-25.4316"
+       y1="-10.5493"
+       x2="-18.1875"
+       y2="-10.5493" />
+  </svg:defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="24.999168"
+     inkscape:cy="36.55781"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     inkscape:window-width="867"
+     inkscape:window-height="669"
+     inkscape:window-x="246"
+     inkscape:window-y="112"
+     inkscape:window-maximized="0" />
+  <svg:metadata
+     id="metadata9996">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </svg:metadata>
+  <svg:g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <svg:image
+       y="0.52496314"
+       x="79.286026"
+       id="image3064"
+       height="13.594464"
+       width="13.594464"
+       xlink:href="file:///usr/share/icons/gnome/24x24/stock/form/stock_form-combobox.png" />
+    <svg:path
+       d="m 41.665519,9.108502 c -1.867773,3.960546 -1.612951,8.007839 0.5747,9.04338 2.187651,1.032832 5.478619,-1.341865 7.349101,-5.302413 1.867773,-3.9605434 1.612955,-8.0051252 -0.574701,-9.0406662 -2.190363,-1.032836 -5.481326,1.3391575 -7.3491,5.2996992 z"
+       id="path183"
+       style="fill:url(#linearGradient3046);stroke:#8f5902;stroke-width:2.36402392;stroke-miterlimit:4;stroke-dasharray:none" />
+    <svg:path
+       d="m 22.33177,9.1057907 c 1.867773,3.9578363 1.612957,8.0078393 -0.574698,9.0406703 -2.187649,1.03283 -5.478616,-1.341867 -7.349099,-5.302413 -1.867773,-3.9605449 -1.612953,-8.005125 0.5747,-9.0379564 2.187648,-1.032836 5.475904,1.3391576 7.349097,5.2996991 z"
+       id="path196"
+       style="fill:url(#linearGradient3043);stroke:#8f5902;stroke-width:2.36402392;stroke-miterlimit:4;stroke-dasharray:none" />
+    <svg:path
+       style="fill:url(#radialGradient3040);stroke:#8f5902;stroke-width:2.36402392;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+       d="m 55.477275,30.694962 c 0.0055,12.968683 -10.499103,29.735262 -23.465076,29.74068 -12.963262,0.0055 -23.4840487,-16.750309 -23.4894717,-29.716283 0,-0.0081 0,-0.01641 0,-0.02447 C 8.5146273,17.726208 19.021832,7.2081281 31.990516,7.1999959 44.951062,7.1944459 55.471855,17.701807 55.477275,30.667783 c 0,0.01095 0,0.01896 0,0.02705 z"
+       cx="31.112698"
+       type="arc"
+       rx="8.6620579"
+       cy="19.008621"
+       ry="8.6620579"
+       id="path2327" />
+    <svg:path
+       style="opacity:0.12660002;fill:none;stroke:#ffffff;stroke-width:2.36402392;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+       d="m 52.590227,30.694962 c 0.0055,11.374707 -9.211453,26.850921 -20.580738,26.856344 -11.369282,0.0056 -20.599712,-15.459951 -20.605135,-26.834653 0,-0.0081 0,-0.01356 0,-0.02158 -0.0055,-11.374705 9.211452,-20.602421 20.583451,-20.607842 11.366569,-0.0055 20.596998,9.208739 20.602422,20.586154 0,0.0081 0,0.01356 0,0.02158 z"
+       enable-background="new    "
+       cx="31.112698"
+       type="arc"
+       rx="8.6620579"
+       cy="19.008621"
+       ry="8.6620579"
+       id="path3834" />
+    <svg:g
+       id="g205"
+       transform="matrix(2.7108452,0,0,2.7108452,-39.169172,-41.746951)">
+      <svg:ellipse
+         style="fill:#8f5902"
+         sodipodi:ry="0.54100001"
+         sodipodi:rx="1.041"
+         sodipodi:cy="29.219"
+         sodipodi:cx="24.940001"
+         id="ellipse207"
+         ry="0.54100001"
+         rx="1.041"
+         cy="29.219"
+         cx="24.940001"
+         transform="matrix(0.8505,0.526,-0.526,0.8505,19.0996,-8.7499)"
+         d="m 25.981001,29.219 c 0,0.298786 -0.466072,0.541 -1.041,0.541 -0.574929,0 -1.041,-0.242214 -1.041,-0.541 0,-0.298786 0.466071,-0.541 1.041,-0.541 0.574928,0 1.041,0.242214 1.041,0.541 z" />
+      <svg:ellipse
+         style="fill:#8f5902"
+         sodipodi:ry="0.54100001"
+         sodipodi:rx="1.0420001"
+         sodipodi:cy="29.219"
+         sodipodi:cx="27.565001"
+         id="ellipse209"
+         ry="0.54100001"
+         rx="1.0420001"
+         cy="29.219"
+         cx="27.565001"
+         transform="matrix(-0.8506,0.5258,-0.5258,-0.8506,66.3766,39.5785)"
+         d="m 28.607001,29.219 c 0,0.298786 -0.46652,0.541 -1.042,0.541 -0.575481,0 -1.042001,-0.242214 -1.042001,-0.541 0,-0.298786 0.46652,-0.541 1.042001,-0.541 0.57548,0 1.042,0.242214 1.042,0.541 z" />
+    </svg:g>
+    <svg:path
+       style="fill:url(#linearGradient3033);stroke:#2e3436;stroke-width:0.67771125;stroke-linecap:round;stroke-linejoin:round"
+       d="m 22.70858,43.845272 c 0.09486,5.055726 4.209941,9.463561 9.292779,9.463561 5.07741,0 9.192476,-4.407835 9.287353,-9.463561 l -18.580132,0 0,0 z"
+       nodetypes="cscc"
+       id="path2756" />
+    <svg:path
+       style="fill:url(#linearGradient3030);stroke:#a40000;stroke-width:0.67771125;stroke-linecap:round;stroke-linejoin:round"
+       id="path231"
+       d="m 33.009791,46.447685 -1.434034,1.989758 -0.872894,-1.962651 c -2.4994,0.393071 -4.489161,1.935545 -5.109946,3.922592 1.678014,1.772894 4.003921,2.908737 6.581934,2.908737 2.399098,0 4.578618,-0.99217 6.22681,-2.564457 -0.504216,-2.201206 -2.66476,-3.930725 -5.39187,-4.293979 z" />
+    <svg:image
+       y="12.687449"
+       x="11.29285"
+       id="image3078"
+       height="25.508533"
+       width="25.508533"
+       xlink:href="file:///usr/share/icons/gnome/24x24/stock/form/stock_form-checkbox.png" />
+    <svg:image
+       y="14.403575"
+       x="30.422155"
+       id="image3092"
+       height="22.700869"
+       width="22.700869"
+       xlink:href="file:///usr/share/icons/gnome/24x24/stock/form/stock_form-radio.png" />
+    <svg:image
+       y="-3.2308276"
+       x="-44.282436"
+       id="image3106"
+       height="16.103373"
+       width="16.103373"
+       xlink:href="file:///usr/share/icons/gnome/24x24/stock/form/stock_form-text-box.png" />
+    <svg:image
+       y="43.025379"
+       x="73.367607"
+       id="image3120"
+       height="14.591788"
+       width="14.591788"
+       xlink:href="file:///usr/share/icons/gnome/24x24/stock/form/stock_form-design-mode.png" />
+  </svg:g>
+</svg:svg>
diff --git a/www/plugins/formidable/images/formulaire-24.png b/www/plugins/formidable/images/formulaire-24.png
new file mode 100644 (file)
index 0000000..ff847d0
Binary files /dev/null and b/www/plugins/formidable/images/formulaire-24.png differ
diff --git a/www/plugins/formidable/images/formulaire-action-ajouter.png b/www/plugins/formidable/images/formulaire-action-ajouter.png
new file mode 100644 (file)
index 0000000..8aef295
Binary files /dev/null and b/www/plugins/formidable/images/formulaire-action-ajouter.png differ
diff --git a/www/plugins/formidable/images/formulaire-analyse-24.png b/www/plugins/formidable/images/formulaire-analyse-24.png
new file mode 100644 (file)
index 0000000..9965646
Binary files /dev/null and b/www/plugins/formidable/images/formulaire-analyse-24.png differ
diff --git a/www/plugins/formidable/images/formulaire-config-auteurs-24.png b/www/plugins/formidable/images/formulaire-config-auteurs-24.png
new file mode 100644 (file)
index 0000000..30f5ec5
Binary files /dev/null and b/www/plugins/formidable/images/formulaire-config-auteurs-24.png differ
diff --git a/www/plugins/formidable/images/formulaire-config-champs-24.png b/www/plugins/formidable/images/formulaire-config-champs-24.png
new file mode 100644 (file)
index 0000000..0d77271
Binary files /dev/null and b/www/plugins/formidable/images/formulaire-config-champs-24.png differ
diff --git a/www/plugins/formidable/images/formulaire-config-traitements-24.png b/www/plugins/formidable/images/formulaire-config-traitements-24.png
new file mode 100644 (file)
index 0000000..f362e72
Binary files /dev/null and b/www/plugins/formidable/images/formulaire-config-traitements-24.png differ
diff --git a/www/plugins/formidable/images/formulaire-dupliquer-24.png b/www/plugins/formidable/images/formulaire-dupliquer-24.png
new file mode 100644 (file)
index 0000000..a4ec44f
Binary files /dev/null and b/www/plugins/formidable/images/formulaire-dupliquer-24.png differ
diff --git a/www/plugins/formidable/images/formulaire-editer-24.png b/www/plugins/formidable/images/formulaire-editer-24.png
new file mode 100644 (file)
index 0000000..0bb3e26
Binary files /dev/null and b/www/plugins/formidable/images/formulaire-editer-24.png differ
diff --git a/www/plugins/formidable/images/formulaire-exporter-24.png b/www/plugins/formidable/images/formulaire-exporter-24.png
new file mode 100644 (file)
index 0000000..3350857
Binary files /dev/null and b/www/plugins/formidable/images/formulaire-exporter-24.png differ
diff --git a/www/plugins/formidable/images/formulaire-nouveau-48.png b/www/plugins/formidable/images/formulaire-nouveau-48.png
new file mode 100644 (file)
index 0000000..a0c803e
Binary files /dev/null and b/www/plugins/formidable/images/formulaire-nouveau-48.png differ
diff --git a/www/plugins/formidable/images/formulaire-reponse-24.png b/www/plugins/formidable/images/formulaire-reponse-24.png
new file mode 100644 (file)
index 0000000..1bbdb51
Binary files /dev/null and b/www/plugins/formidable/images/formulaire-reponse-24.png differ
diff --git a/www/plugins/formidable/images/formulaire-reponse-supprimer-24.png b/www/plugins/formidable/images/formulaire-reponse-supprimer-24.png
new file mode 100644 (file)
index 0000000..897c63e
Binary files /dev/null and b/www/plugins/formidable/images/formulaire-reponse-supprimer-24.png differ
diff --git a/www/plugins/formidable/images/formulaire-reponses-24.png b/www/plugins/formidable/images/formulaire-reponses-24.png
new file mode 100644 (file)
index 0000000..ec0a2b0
Binary files /dev/null and b/www/plugins/formidable/images/formulaire-reponses-24.png differ
diff --git a/www/plugins/formidable/images/formulaire-reponses-exporter-24.png b/www/plugins/formidable/images/formulaire-reponses-exporter-24.png
new file mode 100644 (file)
index 0000000..94d0cec
Binary files /dev/null and b/www/plugins/formidable/images/formulaire-reponses-exporter-24.png differ
diff --git a/www/plugins/formidable/images/formulaire-reponses-supprimer-24.png b/www/plugins/formidable/images/formulaire-reponses-supprimer-24.png
new file mode 100644 (file)
index 0000000..f491594
Binary files /dev/null and b/www/plugins/formidable/images/formulaire-reponses-supprimer-24.png differ
diff --git a/www/plugins/formidable/images/formulaire-supprimer-24.png b/www/plugins/formidable/images/formulaire-supprimer-24.png
new file mode 100644 (file)
index 0000000..1819e5e
Binary files /dev/null and b/www/plugins/formidable/images/formulaire-supprimer-24.png differ
diff --git a/www/plugins/formidable/inc/formidable.php b/www/plugins/formidable/inc/formidable.php
new file mode 100644 (file)
index 0000000..e55bd6a
--- /dev/null
@@ -0,0 +1,380 @@
+<?php
+
+// Sécurité
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+/*
+ * Liste tous les traitements configurables (ayant une description)
+ *
+ * @return array Un tableau listant des saisies et leurs options
+ */
+function traitements_lister_disponibles(){
+    static $traitements = null;
+
+    if (is_null($traitements)){
+        $traitements = array();
+        $liste = find_all_in_path('traiter/', '.+[.]yaml$');
+               ksort($liste);
+               
+        if (count($liste)){
+            foreach ($liste as $fichier=>$chemin){
+                $type_traitement = preg_replace(',[.]yaml$,i', '', $fichier);
+                $dossier = str_replace($fichier, '', $chemin);
+                // On ne garde que les traitements qui ont bien la fonction
+                if (charger_fonction($type_traitement, 'traiter', true)
+                    and (
+                        is_array($traitement = traitements_charger_infos($type_traitement))
+                    )
+                ){
+                    $traitements[$type_traitement] = $traitement;
+                }
+            }
+        }
+    }
+
+    return $traitements;
+}
+
+/**
+ * Charger les informations contenues dans le yaml d'un traitement
+ *
+ * @param string $type_saisie Le type de la saisie
+ * @return array Un tableau contenant le YAML décodé
+ */
+function traitements_charger_infos($type_traitement){
+    include_spip('inc/yaml');
+    $fichier = find_in_path("traiter/$type_traitement.yaml");
+    $traitement = yaml_decode_file($fichier);
+
+    if (is_array($traitement)) {
+        $traitement += array('titre' => '', 'description' => '', 'icone' => '');
+        $traitement['titre'] = $traitement['titre'] ? _T_ou_typo($traitement['titre']) : $type_traitement;
+        $traitement['description'] = $traitement['description'] ? _T_ou_typo($traitement['description']) : '';
+        $traitement['icone'] = $traitement['icone'] ? find_in_path($traitement['icone']) : '';
+    }
+    return $traitement;
+}
+
+/*
+ * Liste tous les types d'échanges (export et import) existant pour les formulaires
+ *
+ * @return array Retourne un tableau listant les types d'échanges
+ */
+function echanges_formulaire_lister_disponibles(){
+    // On va chercher toutes les fonctions existantes
+    $liste = find_all_in_path('echanger/formulaire/', '.+[.]php$');
+    $types_echange = array('exporter'=>array(), 'importer'=>array());
+    if (count($liste)){
+        foreach ($liste as $fichier=>$chemin){
+            $type_echange = preg_replace(',[.]php$,i', '', $fichier);
+            $dossier = str_replace($fichier, '', $chemin);
+            // On ne garde que les échanges qui ont bien la fonction
+            if ($f = charger_fonction('exporter', "echanger/formulaire/$type_echange", true)){
+                $types_echange['exporter'][$type_echange] = $f;
+            }
+            if ($f = charger_fonction('importer', "echanger/formulaire/$type_echange", true)){
+                $types_echange['importer'][$type_echange] = $f;
+            }
+        }
+    }
+    return $types_echange;
+}
+
+/*
+ * Génère le nom du cookie qui sera utilisé par le plugin lors d'une réponse
+ * par un visiteur non-identifié.
+ *
+ * @param int $id_formulaire L'identifiant du formulaire
+ * @return string Retourne le nom du cookie
+ */
+function formidable_generer_nom_cookie($id_formulaire){
+    return $GLOBALS['cookie_prefix'].'cookie_formidable_'.$id_formulaire;
+}
+
+/*
+ * Vérifie si le visiteur a déjà répondu à un formulaire
+ *
+ * @param int $id_formulaire L'identifiant du formulaire
+ * @param string $choix_identification Comment verifier une reponse. Priorite sur 'cookie' ou sur 'id_auteur'
+ * @param string $anonymisation : vaut '' si le formulaire n'est pas anonymisé, sinon c'est la variable d'anonymisation
+ * @return unknown_type Retourne un tableau contenant les id des réponses si elles existent, sinon false
+ */
+function formidable_verifier_reponse_formulaire($id_formulaire, $choix_identification='cookie', $anonymisation=''){
+    global $auteur_session;
+    $id_auteur = $auteur_session ? intval($auteur_session['id_auteur']) : 0;
+    $nom_cookie = formidable_generer_nom_cookie($id_formulaire);
+    $cookie = isset($_COOKIE[$nom_cookie]) ? $_COOKIE[$nom_cookie] : false;
+
+    $anonymiser = ($anonymisation == '') ? false : true;
+    if ($anonymiser) $anonymiser_variable = $anonymisation;
+
+    // traitement de l'anonymisation
+    if ($anonymiser) {
+        // mod de l'id_auteur
+        $variables_anonymisation =
+                $GLOBALS['formulaires']['variables_anonymisation'][$anonymiser_variable];
+        $id = eval("return $variables_anonymisation;");
+        $id_auteur = formidable_scramble($id, $id_formulaire);
+    }
+    // ni cookie ni id, on ne peut rien faire
+    if (!$cookie and !$id_auteur) {
+        return false;
+    }
+
+    // priorite sur le cookie
+    if ($choix_identification == 'cookie' or !$choix_identification) {
+        if ($cookie)
+            $where = '(cookie='.sql_quote($cookie).($id_auteur ? ' OR id_auteur='.$id_auteur.')' : ')');
+        else
+            $where = 'id_auteur='.$id_auteur;
+    }
+
+    // sinon sur l'id_auteur
+    else {
+        if ($id_auteur)
+            $where = 'id_auteur='.$id_auteur;
+        else
+            $where = '(cookie='.sql_quote($cookie).($id_auteur ? ' OR id_auteur='.$id_auteur.')' : ')');
+    }
+
+    $reponses = sql_allfetsel(
+        'id_formulaires_reponse',
+        'spip_formulaires_reponses',
+        array(
+            array('=', 'id_formulaire', intval($id_formulaire)),
+            array('=', 'statut', sql_quote('publie')),
+            $where
+        ),
+        '',
+        'date'
+    );
+
+    if (is_array($reponses))
+        return array_map('reset', $reponses);
+    else
+        return false;
+}
+
+/*
+ * Génère la vue d'analyse de toutes les réponses à une saisie
+ *
+ * @param array $saisie Un tableau décrivant une saisie
+ * @param array $env L'environnement, contenant normalement la réponse à la saisie
+ * @return string Retour le HTML des vues
+ */
+function formidable_analyser_saisie($saisie, $valeurs=array(), $reponses_total=0, $format_brut=false) {
+    // Si le paramètre n'est pas bon ou que c'est un conteneur, on génère du vide
+    if (!is_array($saisie) or (isset($saisie['saisies']) and $saisie['saisies']))
+        return '';
+
+    $contexte = array('reponses_total'=>$reponses_total);
+
+    // On sélectionne le type de saisie
+    $contexte['type_saisie'] = $saisie['saisie'];
+
+    // Peut-être des transformations à faire sur les options textuelles
+    $options = $saisie['options'];
+    foreach ($options as $option => $valeur){
+        $options[$option] = _T_ou_typo($valeur, 'multi');
+    }
+
+    // On ajoute les options propres à la saisie
+    $contexte = array_merge($contexte, $options);
+
+    // On récupère toutes les valeurs du champ
+    if (isset($valeurs[$contexte['nom']]) and $valeurs[$contexte['nom']] and is_array($valeurs[$contexte['nom']])){
+        $contexte['valeurs'] = $valeurs[$contexte['nom']];
+    }
+    else{
+        $contexte['valeurs'] = array();
+    }
+
+    // On génère la saisie
+    if ($format_brut) {
+        return analyser_saisie($contexte);
+    } else {
+        return recuperer_fond(
+            'saisies-analyses/_base',
+            $contexte
+        );
+    }
+}
+
+/*
+ * Renvoie une ligne de réponse sous la forme d'un tableau
+ *
+ * @param array $saisie Un tableau décrivant une saisie
+ * @return array Tableau contenant une ligne
+ */
+function analyser_saisie($saisie) {
+    if (!isset($saisie['type_saisie']) or $saisie['type_saisie'] == '')
+        return '';
+
+    $ligne = array();
+
+    switch($saisie['type_saisie']) {
+        case 'selecteur_rubrique' :
+        case 'selecteur_rubrique_article' :
+        case 'selecteur_article' :
+            $ligne['plein'] = count(array_filter($saisie['valeurs']));
+            $ligne['vide'] = count(array_diff_key($saisie['valeurs']
+                , array_filter($saisie['valeurs'])));
+        break;
+        case 'radio' :
+        case 'selection' :
+        case 'selection_multiple' :
+        case 'choix_couleur':
+        case 'checkbox' :
+            $stats = array();
+            foreach($saisie['valeurs'] as $valeur) {
+                if (is_array($valeur)) {
+                    foreach($valeur as $choix) {
+                        if (isset($stats["choix-$choix"]))
+                            $stats["choix-$choix"]++;
+                        else $stats["choix-$choix"] = 1;
+                    }
+                } else {
+                    if (isset($stats["choix-$valeur"]))
+                            $stats["choix-$valeur"]++;
+                        else $stats["choix-$valeur"] = 1;
+                }
+            }
+            $datas = is_string($saisie['datas'])
+                ? saisies_chaine2tableau(saisies_aplatir_chaine($saisie['datas']))
+                : $saisie['datas'];
+            foreach($datas as $key => $val) {
+                $nb = (isset($stats["choix-$key"]))
+                    ? $stats["choix-$key"]
+                    : 0;
+                $ligne[$val] = $nb;
+            }
+        break;
+        case 'destinataires' :
+            $stats = array();
+            foreach($saisie['valeurs'] as $valeur) {
+                foreach($valeur as $choix) {
+                    if (isset($stats["choix-$choix"]))
+                        $stats["choix-$choix"]++;
+                    else $stats["choix-$choix"] = 1;
+                }
+            }
+            foreach($stats as $key => $val) {
+                $key = str_replace('choix-', '', $key);
+                if ($key == '') $key = '<valeur vide>';
+                $auteur = sql_getfetsel('nom','spip_auteurs',"id_auteur=$key");
+                $ligne[$auteur] = $val;
+            }
+        break;
+    }
+
+    $vide = 0;
+    foreach($saisie['valeurs'] as $valeur) {
+        if ($valeur == '') $vide++;
+        switch($saisie['type_saisie']) {
+            case 'case' :
+            case 'oui_non' :
+                if(isset($ligne['oui']) == false) $ligne['oui'] = 0;
+                if(isset($ligne['non']) == false) $ligne['non'] = 0;
+                if ($valeur) $ligne['oui']++; else $ligne['non']++;
+            break;
+            case 'input' :
+            case 'hidden' :
+            case 'explication' :
+            break;
+        }
+    }
+    $ligne['sans_reponse'] = $vide;
+    $ligne['header'] = $saisie['label'] != ''
+        ? $saisie['label']
+        : $saisie['type_saisie'];
+
+    return $ligne;
+}
+
+
+/**
+ * Tente de déserialiser un texte
+ *
+ * Si le paramètre est un tableau, retourne le tableau,
+ * Si c'est une chaîne, tente de la désérialiser, sinon
+ * retourne la chaîne.
+ *
+ * @filtre
+ *
+ * @param string|array $texte
+ *     Le texte (possiblement sérializé) ou un tableau
+ * @return array|string
+ *     Tableau, texte désérializé ou texte
+**/
+function filtre_tenter_unserialize_dist($texte) {
+    if (is_array($texte)) {
+        return $texte;
+    }
+    if ($tmp = @unserialize($texte)) {
+        return $tmp;
+    }
+    return $texte;
+}
+
+
+/**
+ * Retourne un texte du nombre de réponses
+ *
+ * @param int $nb
+ *     Nombre de réponses
+ * @return string
+ *     Texte indiquant le nombre de réponses
+**/
+function titre_nb_reponses($nb) {
+    if (!$nb) return _T('formidable:reponse_aucune');
+    if ($nb == 1) return _T('formidable:reponse_une');
+    return _T('formidable:reponses_nb', array('nb' => $nb));
+}
+
+/**
+ * Transforme le hash MD5 en une valeur numérique unique
+ *
+ * trouvé ici : http://stackoverflow.com/questions/1422725/represent-md5-hash-as-an-integer
+ * @param string $hex_str La valeur alphanumérique à transformer
+ * @return string Valeur numérique
+*/
+function md5_hex_to_dec($hex_str) {
+    $arr = str_split($hex_str, 4);
+    foreach ($arr as $grp) {
+        $dec[] = str_pad(hexdec($grp), 5, '0', STR_PAD_LEFT);
+    }
+
+    /* on s'assure que $result ne commence pas par un zero */
+    $result = implode('', $dec);
+    for ($cpt = 0 ; $cpt < strlen($result) ; $cpt++) {
+        if ($result[$cpt] != '0') break;
+    }
+    $result = substr($result, $cpt);
+    return $result;
+}
+
+/**
+ * Transforme un login en une valeur numérique de 19 caractères
+ *
+ * NOTE: il devient impossible de retrouver la valeur d'origine car le HASH
+ * est coupé à 19cars et est donc incomplet. L'unicité n'est pas garantie mais
+ * les chances pour que deux logins tombent sur le même HASH sont de 1 sur
+ * 10 milliards de milliards
+ * A la fin, on recherche et supprime les éventuels zéros de début
+ * @param string $login Login à transformer
+ * @param string $id_form ID du formulaire concerné
+ * @param string $passwd Chaîne 'secrète' ajoutée au login et id_formulaire pour éviter
+ *  les recoupements d'identité entre plusieurs formulaires
+ * @return string Un nombre de 19 chiffres
+*/
+function formidable_scramble($login, $id_form, $passwd = '') {
+    if ($passwd == '')
+        $passwd = $GLOBALS['formulaires']['passwd']['interne'];
+    $login_md5 = md5("$login$passwd$id_form");
+    $login_num = md5_hex_to_dec($login_md5);
+    $login_num = substr($login_num, 0, 19);
+
+    return $login_num;
+}
+
+?>
diff --git a/www/plugins/formidable/inc/rechercher_joints_formulaires_reponse_formulaires_reponses_champ.php b/www/plugins/formidable/inc/rechercher_joints_formulaires_reponse_formulaires_reponses_champ.php
new file mode 100644 (file)
index 0000000..f526be0
--- /dev/null
@@ -0,0 +1,14 @@
+<?php
+
+// Sécurité
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+function inc_rechercher_joints_formulaires_reponse_formulaires_reponses_champ_dist($table,$table_liee,$ids_trouves, $serveur){
+
+       $cle_depart =  "id_formulaires_reponse";
+       $cle_arrivee =  "id_formulaires_reponse";
+
+       $s = sql_select("DISTINCT R.$cle_depart", "spip_formulaires_reponses AS R JOIN spip_formulaires_reponses_champs AS C ON C.id_formulaires_reponse=R.id_formulaires_reponse", sql_in("C.id_formulaires_reponses_champ", $ids_trouves), '','','','',$serveur);
+
+       return array($cle_depart, $cle_arrivee, $s);
+}
\ No newline at end of file
diff --git a/www/plugins/formidable/lang/formidable.xml b/www/plugins/formidable/lang/formidable.xml
new file mode 100644 (file)
index 0000000..ae4fba2
--- /dev/null
@@ -0,0 +1,24 @@
+<traduction module="formidable" gestionnaire="salvatore" url="http://trad.spip.net" source="svn://zone.spip.org/spip-zone/_plugins_/formidable/trunk/lang/" reference="fr">
+       <langue code="de" url="http://trad.spip.net/tradlang_module/formidable?lang_cible=de" total="179" traduits="97" relire="0" modifs="4" nouveaux="78" pourcent="54.19">
+               <traducteur nom="kent1" lien="http://trad.spip.net/auteur/kent1" />
+       </langue>
+       <langue code="en" url="http://trad.spip.net/tradlang_module/formidable?lang_cible=en" total="179" traduits="165" relire="1" modifs="0" nouveaux="13" pourcent="92.18">
+               <traducteur nom="Benitron" lien="http://trad.spip.net/auteur/benitron" />
+               <traducteur nom="kent1" lien="http://trad.spip.net/auteur/kent1" />
+               <traducteur nom="Paolo" lien="http://trad.spip.net/auteur/paolo" />
+               <traducteur nom="twelf" lien="http://trad.spip.net/auteur/twelf" />
+       </langue>
+       <langue code="es" url="http://trad.spip.net/tradlang_module/formidable?lang_cible=es" total="179" traduits="175" relire="0" modifs="0" nouveaux="4" pourcent="97.77">
+               <traducteur nom="severo" lien="http://trad.spip.net/auteur/severo" />
+               <traducteur nom="tin" lien="http://trad.spip.net/auteur/tin" />
+       </langue>
+       <langue code="fr" url="http://trad.spip.net/tradlang_module/formidable?lang_cible=fr" total="179" traduits="179" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+       </langue>
+       <langue code="it" url="http://trad.spip.net/tradlang_module/formidable?lang_cible=it" total="179" traduits="114" relire="0" modifs="3" nouveaux="62" pourcent="63.69">
+               <traducteur nom="kent1" lien="http://trad.spip.net/auteur/kent1" />
+       </langue>
+       <langue code="sk" url="http://trad.spip.net/tradlang_module/formidable?lang_cible=sk" total="179" traduits="135" relire="0" modifs="3" nouveaux="41" pourcent="75.42">
+               <traducteur nom="jaro" lien="http://trad.spip.net/auteur/jaro" />
+               <traducteur nom="kent1" lien="http://trad.spip.net/auteur/kent1" />
+       </langue>
+</traduction>
diff --git a/www/plugins/formidable/lang/formidable_de.php b/www/plugins/formidable/lang/formidable_de.php
new file mode 100644 (file)
index 0000000..2ca93c2
--- /dev/null
@@ -0,0 +1,132 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/formidable?lang_cible=de
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // A
+       'analyse_avec_reponse' => 'Ausgefüllte Antworten',
+       'analyse_exporter' => 'Analyse exportieren',
+       'analyse_longueur_moyenne' => 'Durchschnittliche Anzahl Worte',
+       'analyse_sans_reponse' => 'Leere Antworten',
+
+       // B
+       'bouton_formulaires' => 'Formulare',
+
+       // C
+       'champs' => 'Felder',
+
+       // E
+       'echanger_formulaire_forms_importer' => 'Forms & Tables (.xml)',
+       'echanger_formulaire_wcs_importer' => 'W.C.S. (.wcs)',
+       'echanger_formulaire_yaml_importer' => 'Formidable (.yaml)',
+       'editer_descriptif' => 'Beschreibung',
+       'editer_descriptif_explication' => 'Eine Beschreibung des Formulars für das Backend.',
+       'editer_identifiant' => 'Bezeichnung',
+       'editer_identifiant_explication' => 'Gegen sie eine Bezeichnung an, mit dem sie das Formular ansprechen können.',
+       'editer_menu_champs' => 'Felder konfigurieren',
+       'editer_menu_formulaire' => 'Formular konfigurieren',
+       'editer_menu_traitements' => 'Verarbeitung konfigurieren',
+       'editer_message_ok' => 'Bestätigungstext',
+       'editer_message_ok_explication' => 'Sie können die Nachricht festlegen, die nach dem Absenden des Formulars angezeigt wird.',
+       'editer_modifier_formulaire' => 'Formular ändern',
+       'editer_nouveau' => 'Neues Formular',
+       'editer_titre' => 'Titel',
+       'erreur_autorisation' => 'Sie sind nicht berechtigt, die Formulare der Website zu ändern.',
+       'erreur_base' => 'Beim Speichern ist ein technischer Fehler aufgetreten.',
+       'erreur_generique' => 'Die Felder enthalten Fehler. Bitte überprüfen sie ihre Eingaben.',
+       'erreur_identifiant' => 'Diese Bezeichnung wird bereits verwendet.',
+       'erreur_importer_forms' => 'Fehler beim Importieren des Formulars aus Forms&Tables',
+       'erreur_importer_wcs' => 'Fehler beim Importieren des Formulars aus W.C.S',
+       'erreur_importer_yaml' => 'Fehler beim Importieren des Formulars aus YAML',
+       'erreur_inexistant' => 'Formular nicht vorhanden.',
+
+       // F
+       'formulaire_anonyme_explication' => 'Diese Form ist anonym, dh die Identität des Benutzers nicht registriert ist.', # MODIF
+       'formulaires_aucun' => 'Kein Formular vorhanden.',
+       'formulaires_dupliquer' => 'Formular kopieren',
+       'formulaires_dupliquer_copie' => '(Kopie)',
+       'formulaires_introduction' => 'Erstellen und bearbeiten sie Formulare für ihre Website.',
+       'formulaires_nouveau' => 'Neues Formular anlegen',
+       'formulaires_supprimer' => 'Formular löschen',
+       'formulaires_supprimer_confirmation' => 'Achtung - alle Daten aus dem Formular werden ebenfalls gelöscht. Sind sie sicher, dass sie das Formular löschen wollen?',
+       'formulaires_tous' => 'Alle Formulare',
+
+       // I
+       'importer_formulaire' => 'Formular importieren',
+       'importer_formulaire_fichier_label' => 'Dateien importeieren',
+       'importer_formulaire_format_label' => 'Format der Datei',
+
+       // R
+       'reponse_intro' => '@auteur@ hat auf das Formular geantwortet @formulaire@',
+       'reponse_numero' => 'Antwort Nummer:',
+       'reponse_statut' => 'Diese Antwort ist:',
+       'reponse_supprimer' => 'Diese Antwort löschen',
+       'reponse_supprimer_confirmation' => 'Wollen sie diese Antwor wirklich löschen?',
+       'reponses_analyse' => 'Analyse der Antworten',
+       'reponses_anonyme' => 'Anonym',
+       'reponses_auteur' => 'Nutzer',
+       'reponses_exporter' => 'Antworten exportieren',
+       'reponses_ip' => 'IP-Adresse',
+       'reponses_liste' => 'Liste der Antworten',
+       'reponses_liste_prop' => 'Nicht freigegebene Antworten',
+       'reponses_liste_publie' => 'Alle freigegebenen Antworten',
+       'reponses_voir_detail' => 'Antwort anzeigen',
+       'retour_aucun_traitement' => 'Ihre Antwort wurde gesendet, jedoch wurde keine Verarbeitungsoption für das Formular festgelegt. Deshalb geschieht mit den Daten aus diesem Formular überhaupt nichts. :)',
+
+       // S
+       'sans_reponses' => 'Unbeantwortet',
+
+       // T
+       'traitements_aide_memoire' => 'Merkzettel:',
+       'traitements_avertissement_creation' => 'Die Änderungen der Felder des Formulars wurden erfolgreich gespeichert. Jetzt können sie festlege, welche Verarbeitungsschritte nach dem Senden des Formulars ausgef',
+       'traitements_avertissement_modification' => 'Die Änderungen der Felder des Formulars wurden erfolgreich gespeichert. <strong>Manche Verarbeitungsoptionen müssen entsprechend neu konfiguriert werden.</strong>',
+       'traitements_champ_aucun' => 'Kein',
+       'traiter_email_description' => 'Sendet das Ergebnis des Formulars an eine Empfängerliste.',
+       'traiter_email_horodatage' => 'Formular "@formulaire@" am @date@ um @heure@ gesendet.',
+       'traiter_email_message_erreur' => 'Beim Versenden des Formulars ist ein Fehler aufgetreten.',
+       'traiter_email_message_ok' => 'Ihre Nachricht wurde per Mail gesendet.',
+       'traiter_email_option_activer_accuse_label' => 'Empfangsbestätigung',
+       'traiter_email_option_activer_accuse_label_case' => 'Ebenfalls eine Empfangsbestätigung an Absender senden.',
+       'traiter_email_option_destinataires_explication' => 'Legen sie das Feld fest, das die Empfängeradresse enthält.',
+       'traiter_email_option_destinataires_label' => 'Empfänger',
+       'traiter_email_option_destinataires_plus_explication' => 'Eine kommagetrennte Empfängerliste.',
+       'traiter_email_option_destinataires_plus_label' => 'Weitere Empfänger',
+       'traiter_email_option_envoyeur_courriel_explication' => 'Legen sie das Feld fest, das die Absenderadresse enthält.',
+       'traiter_email_option_envoyeur_courriel_label' => 'Absenderadresse',
+       'traiter_email_option_envoyeur_nom_explication' => 'Definieren sie den Namen mit Hilf der @raccourcis@ (siehe Merkzettel). Wenn sie nichts eintragen, wird der Name der Website verwendet.',
+       'traiter_email_option_envoyeur_nom_label' => 'Name des Absenders',
+       'traiter_email_option_sujet_accuse_label' => 'Betreff der Empfangsbestätigung',
+       'traiter_email_option_sujet_explication' => 'Definieren sie den Betreff mit Hilf der @raccourcis@. Wenn sie das Feld freilassen, wird der Inhalt automatisch erstellt.',
+       'traiter_email_option_sujet_label' => 'Betreff der Nachricht',
+       'traiter_email_page' => '<a href="@url@">Aus der Seite</a>.',
+       'traiter_email_sujet' => '@nom@ hat ihnen geschrieben.',
+       'traiter_email_sujet_accuse' => 'Danke für ihre Antwort.',
+       'traiter_email_titre' => 'Per Mail senden',
+       'traiter_email_url_enregistrement' => 'Sie könen die Antworten <a href="@url@">auf dieser Seite verwalten</a>.',
+       'traiter_enregistrement_description' => 'Einträge in das Formular in der Datenbank speichern',
+       'traiter_enregistrement_erreur_base' => 'Beim Speichern in der Datenbank ist ein Fehler aufgetreten',
+       'traiter_enregistrement_erreur_deja_repondu' => 'Sie haben dieses Formular bereits ausgefüllt.',
+       'traiter_enregistrement_option_anonymiser_explication' => 'Stellen die Ergebnisse der anonymen Form (nicht halten Trace-Kennung der Befragten).', # MODIF
+       'traiter_enregistrement_option_anonymiser_label' => 'Anonymisierter Form',
+       'traiter_enregistrement_option_anonymiser_variable_explication' => 'Welches System Variable verwendet, um einen einzelnen Wert für jeden Autor ohne Offenlegung seiner Identität zu berechnen.',
+       'traiter_enregistrement_option_anonymiser_variable_label' => 'Variable aus dem anonymisierter Form.',
+       'traiter_enregistrement_option_choix_select_label' => 'Wählen eine Variable von denen zur Verfügung.',
+       'traiter_enregistrement_option_moderation_label' => 'Moderation',
+       'traiter_enregistrement_option_modifiable_explication' => 'Sollen die Besucher ihre Antworten nachträglich &aauml;ndern können?', # MODIF
+       'traiter_enregistrement_option_modifiable_label' => 'Antworten editierbar',
+       'traiter_enregistrement_option_multiple_explication' => 'Darf die gleiche Person das Formular mehrmals ausfüllen und absenden?', # MODIF
+       'traiter_enregistrement_option_multiple_label' => 'Mehrfache Antworten',
+       'traiter_enregistrement_titre' => 'Ergebnisse speichern',
+
+       // V
+       'voir_exporter' => 'Formular exportieren',
+       'voir_numero' => 'Formular Nummer:',
+       'voir_reponses' => 'Antworten anzeigen',
+       'voir_traitements' => 'Verarbeitungsoptionen'
+);
+
+?>
diff --git a/www/plugins/formidable/lang/formidable_en.php b/www/plugins/formidable/lang/formidable_en.php
new file mode 100644 (file)
index 0000000..fa28a98
--- /dev/null
@@ -0,0 +1,203 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/formidable?lang_cible=en
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // A
+       'analyse_avec_reponse' => 'Non-empty answers',
+       'analyse_exclure_champs_label' => 'Fields to exclude',
+       'analyse_exporter' => 'Export analysis',
+       'analyse_longueur_moyenne' => 'Average number in words length',
+       'analyse_nb_reponses_total' => '@nb@ people responded to this form.',
+       'analyse_sans_reponse' => 'Stayed unanswered',
+       'analyse_une_reponse_total' => 'One person responded to this form.',
+       'analyse_zero_reponse_total' => 'No one responded to this form.',
+       'aucun_traitement' => 'No treatment',
+
+       // B
+       'bouton_formulaires' => 'Forms',
+       'bouton_revert_formulaire' => 'Back to the last saved version',
+
+       // C
+       'cfg_analyse_classe_explication' => 'You can specify CSS classes that will be added on the container of each graph, such as 
+<code>gray</code>,<code>blue</code>,
+               <code>orange</code>, <code>green</code> or whatever you like!',
+       'cfg_analyse_classe_label' => 'CSS class of the progress bar',
+       'cfg_titre_page_configurer_formidable' => 'Configure Formidable',
+       'cfg_titre_parametrages_analyse' => 'Settings in the answers analysis',
+       'champs' => 'Fields',
+       'changer_statut' => 'This form is:',
+
+       // E
+       'echanger_formulaire_forms_importer' => 'Forms & Tables (.xml)',
+       'echanger_formulaire_wcs_importer' => 'W.C.S. (.wcs)',
+       'echanger_formulaire_yaml_importer' => 'Formidable (.yaml)',
+       'editer_apres_choix_formulaire' => 'The form, again',
+       'editer_apres_choix_redirige' => 'Redirect to a new address',
+       'editer_apres_choix_rien' => 'Nothing',
+       'editer_apres_choix_stats' => 'Answers statistics',
+       'editer_apres_choix_valeurs' => 'The entered values',
+       'editer_apres_explication' => 'After validation, display instead of the form:',
+       'editer_apres_label' => 'Display then',
+       'editer_descriptif' => 'Description',
+       'editer_descriptif_explication' => 'An explanation of the form for the private area.',
+       'editer_identifiant' => 'Login',
+       'editer_identifiant_explication' => 'Give a single textual identifier that allows you to call the form more easily.',
+       'editer_menu_auteurs' => 'Configure authors',
+       'editer_menu_champs' => 'Configure the fields',
+       'editer_menu_formulaire' => 'Configure the form',
+       'editer_menu_traitements' => 'Configure the treatments',
+       'editer_message_ok' => 'Return message',
+       'editer_message_ok_explication' => 'You can customize the message that will be displayed to the user after submitting a valid form.',
+       'editer_modifier_formulaire' => 'Modify the form',
+       'editer_nouveau' => 'New form',
+       'editer_redirige_url' => 'Forwarding address after validation',
+       'editer_redirige_url_explication' => 'Leave blank if you want to stay on the same page',
+       'editer_titre' => 'Title',
+       'erreur_autorisation' => 'You do not have the right to edit the website forms',
+       'erreur_base' => 'An error occurred as the data was being saved.',
+       'erreur_generique' => 'There are errors in the fields below. Please check.',
+       'erreur_identifiant' => 'This login is already used.',
+       'erreur_importer_forms' => 'Error while importing the Forms&Tables form',
+       'erreur_importer_wcs' => 'Error while importing the W.C.S form',
+       'erreur_importer_yaml' => 'Error while importing the YAML file',
+       'erreur_inexistant' => 'This form doesn’t exist.',
+
+       // F
+       'formulaire_anonyme_explication' => 'This form is anonymous; meaning that the user’s identity won’t be recorded.',
+       'formulaires_aucun' => 'There is no form for now',
+       'formulaires_dupliquer' => 'Duplicate the form',
+       'formulaires_dupliquer_copie' => '(copy)',
+       'formulaires_introduction' => 'Create and configure forms on your site here.',
+       'formulaires_nouveau' => 'Create a new form',
+       'formulaires_supprimer' => 'Delete the form',
+       'formulaires_supprimer_confirmation' => 'Beware, it will also remove all the results. Are you sure you want to delete this form?',
+       'formulaires_tous' => 'All forms',
+
+       // I
+       'identification_par_cookie' => 'By cookie',
+       'identification_par_id_auteur' => 'By login (id_auteur) of the authenticated person',
+       'importer_formulaire' => 'Import a form',
+       'importer_formulaire_fichier_label' => 'File to import',
+       'importer_formulaire_format_label' => 'File format',
+       'info_1_formulaire' => '1 form',
+       'info_1_reponse' => '1 answer',
+       'info_aucun_formulaire' => 'No form',
+       'info_aucune_reponse' => 'No answer',
+       'info_formulaire_refuse' => 'Archived',
+       'info_formulaire_utilise_par' => 'Form used by:',
+       'info_nb_formulaires' => '@nb@ forms',
+       'info_nb_reponses' => '@nb@ answers',
+       'info_reponse_proposee' => 'To moderate',
+       'info_reponse_proposees' => 'To moderate',
+       'info_reponse_publiee' => 'Validated',
+       'info_reponse_publiees' => 'Validated',
+       'info_reponse_supprimee' => 'Deleted',
+       'info_reponse_supprimees' => 'Deleted',
+       'info_reponse_toutes' => 'All',
+       'info_utilise_1_formulaire' => 'Form used:',
+       'info_utilise_nb_formulaires' => 'Forms used:',
+
+       // M
+       'modele_label_formulaire_formidable' => 'Which form ?',
+       'modele_nom_formulaire' => 'one form',
+
+       // N
+       'noisette_label_afficher_titre_formulaire' => 'Dispaly the title of the form ?',
+       'noisette_label_identifiant' => 'Form to display :',
+       'noisette_nom_noisette_formulaire' => 'Form',
+
+       // R
+       'reponse_aucune' => 'No answer',
+       'reponse_intro' => '@auteur@ answered to the form @formulaire@',
+       'reponse_numero' => 'Answer number :',
+       'reponse_statut' => 'This answer is :',
+       'reponse_supprimer' => 'Delete this reply',
+       'reponse_supprimer_confirmation' => 'Do you really wish to delete this reply?',
+       'reponse_une' => '1 reply',
+       'reponses_analyse' => 'Answer analysis',
+       'reponses_anonyme' => 'Anonymous',
+       'reponses_auteur' => 'User',
+       'reponses_exporter' => 'Export the answers',
+       'reponses_ip' => 'IP address',
+       'reponses_liste' => 'Answers list',
+       'reponses_liste_prop' => 'Answers pending for validation',
+       'reponses_liste_publie' => 'All validated answers',
+       'reponses_nb' => '@nb@ answers',
+       'reponses_supprimer' => 'Delete all the answers to this form',
+       'reponses_voir_detail' => 'See the answer',
+       'retour_aucun_traitement' => 'Your reply was accepted. But as the function of the form has not yet been configured, nothing was done with your data!',
+
+       // S
+       'sans_reponses' => 'Unanswered',
+
+       // T
+       'texte_statut_poubelle' => 'deleted',
+       'texte_statut_propose_evaluation' => 'proposed',
+       'texte_statut_publie' => 'validated',
+       'texte_statut_refuse' => 'archived',
+       'titre_cadre_raccourcis' => 'Shortcuts',
+       'titre_formulaires_archives' => 'Archives',
+       'titre_reponses' => 'Answers',
+       'traitements_actives' => 'Activated treatments',
+       'traitements_aide_memoire' => 'List of shortcuts:',
+       'traitements_avertissement_creation' => 'Changes to the form fields have been successfully saved. You can now define which treatments will be performed when using the form.',
+       'traitements_avertissement_modification' => 'Changes to the form fields have been successfully saved. <strong>Some treatments may need to be reconfigured accordingly.</ strong>',
+       'traitements_champ_aucun' => 'None',
+       'traiter_email_description' => 'Post the form results by email to a list of recipients.',
+       'traiter_email_horodatage' => 'Form "@formulaire@" sent on @date@ at @heure@.',
+       'traiter_email_message_erreur' => 'An error occurred when sending the email.',
+       'traiter_email_message_ok' => 'Your message has been successfully sent by email.',
+       'traiter_email_option_activer_accuse_label' => 'Acknowledgement of receipt',
+       'traiter_email_option_activer_accuse_label_case' => 'Also send an email to the sender with a confirmation message.',
+       'traiter_email_option_destinataires_explication' => 'Choose the field that corresponds to the message recipients.',
+       'traiter_email_option_destinataires_label' => 'Recipients',
+       'traiter_email_option_destinataires_plus_explication' => 'A list of addresses separated by commas.',
+       'traiter_email_option_destinataires_plus_label' => 'Extra recipients',
+       'traiter_email_option_envoyeur_courriel_explication' => 'Select the field that will contain the email address of the sender.',
+       'traiter_email_option_envoyeur_courriel_label' => 'Sender Email',
+       'traiter_email_option_envoyeur_nom_explication' => 'Build this name using the @raccourcis@ (see the notes). If you enter nothing, it will be the name of the site.',
+       'traiter_email_option_envoyeur_nom_label' => 'Name of sender',
+       'traiter_email_option_sujet_accuse_label' => 'Subject of the acknowledgement of receipt',
+       'traiter_email_option_sujet_explication' => 'Build topic using @raccourcis@. If you enter nothing, the subject will be built automatically.',
+       'traiter_email_option_sujet_label' => 'Message subject',
+       'traiter_email_option_vrai_envoyeur_explication' => 'Some SMTP servers do not allow to use arbitrary email for the "From" field. For this reason Formidable inserts the default email sender in the "Reply-To". Tick here to insert the email in the "From" field.',
+       'traiter_email_option_vrai_envoyeur_label' => 'Insert email of the sender in the "From" field',
+       'traiter_email_page' => '<a href="@url@">From this page</a>.',
+       'traiter_email_sujet' => '@nom@ has written to you.',
+       'traiter_email_sujet_accuse' => 'Thank you for you reply.',
+       'traiter_email_titre' => 'Send by email',
+       'traiter_email_url_enregistrement' => 'You can manage the answers <a href="@url@">on this page</a>.',
+       'traiter_enregistrement_description' => 'Saves the form results in the database',
+       'traiter_enregistrement_erreur_base' => 'An error occurred while writing to the database',
+       'traiter_enregistrement_erreur_deja_repondu' => 'You have already filled in this form.',
+       'traiter_enregistrement_erreur_edition_reponse_inexistante' => 'The answer to edit can not be found.',
+       'traiter_enregistrement_message_ok' => 'Thanks. Your answers have been correctly saved', # RELIRE
+       'traiter_enregistrement_option_anonymiser_explication' => 'Results anonymous (don’t keep any tracks of user who have answered).',
+       'traiter_enregistrement_option_anonymiser_label' => 'Anonymize form',
+       'traiter_enregistrement_option_anonymiser_variable_explication' => 'What system variable used to calculate a single value for each author without revealing his identity.',
+       'traiter_enregistrement_option_anonymiser_variable_label' => 'Variable from witch the form will be anonymized',
+       'traiter_enregistrement_option_auteur' => 'Link authors to the forms',
+       'traiter_enregistrement_option_auteur_explication' => 'Bind one or more authors to a form. If activated, this option prevents anyone except the author(s) to access form’s configuration or results.',
+       'traiter_enregistrement_option_choix_select_label' => 'Select a variable from the available',
+       'traiter_enregistrement_option_identification_explication' => 'If the answers can be changed, which method is used first to know the answer to modify ?',
+       'traiter_enregistrement_option_identification_label' => 'Identification',
+       'traiter_enregistrement_option_moderation_label' => 'Moderation',
+       'traiter_enregistrement_option_modifiable_explication' => 'Editable: Visitors can change their answers afterwards.',
+       'traiter_enregistrement_option_modifiable_label' => 'Answers can be modified',
+       'traiter_enregistrement_option_multiple_explication' => 'Multiple: A single person may answer several times.',
+       'traiter_enregistrement_option_multiple_label' => 'Multiple answers',
+       'traiter_enregistrement_titre' => 'Record the results',
+
+       // V
+       'voir_exporter' => 'Export the form',
+       'voir_numero' => 'Form number :',
+       'voir_reponses' => 'See the answers',
+       'voir_traitements' => 'Treatments'
+);
+
+?>
diff --git a/www/plugins/formidable/lang/formidable_es.php b/www/plugins/formidable/lang/formidable_es.php
new file mode 100644 (file)
index 0000000..072d1a1
--- /dev/null
@@ -0,0 +1,211 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/formidable?lang_cible=es
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // A
+       'admin_reponses_auteur' => 'Autorizar a l@s autores de los formularios a modificar las respuestas',
+       'admin_reponses_auteur_explication' => 'Solo l@s administradores pueden normalmente modificar las respuestas a un formulario (a la papelera, publicada, propuesta para evaluación). Esta opción permite a un·a autor·a de formulario modificar el estatus (con el riesgo de distorsionar eventuales estadísticas).',
+       'analyse_avec_reponse' => 'Respuestas no vacías',
+       'analyse_exclure_champs_explication' => 'Ingresar el nombre de los campos a excluir del análisis, separados por unos <code>|</code>. No poner los <code>@</code>.',
+       'analyse_exclure_champs_label' => 'Campos a excluir',
+       'analyse_exporter' => 'Exportar análisis',
+       'analyse_longueur_moyenne' => 'Longitud media de las palabras',
+       'analyse_nb_reponses_total' => '@nb@ personas han respondido a este formulario. ',
+       'analyse_sans_reponse' => 'Sin respuesta',
+       'analyse_une_reponse_total' => 'Una persona ha respondido a este formulario. ',
+       'analyse_zero_reponse_total' => 'Nadie ha respondido a este formulario.',
+       'aucun_traitement' => 'Ningún tratamiento',
+
+       // B
+       'bouton_formulaires' => 'Formularios',
+       'bouton_revert_formulaire' => 'Volver a la última versión grabada',
+
+       // C
+       'cfg_analyse_classe_explication' => 'Puede especificar clases CSS que se añadirán en el envase de cada gráfico, tales como: <code>gray</code>,<code>blue</code>,
+               <code>orange</code>, <code>green</code> o las que quieras!',
+       'cfg_analyse_classe_label' => 'Clase CSS de la barra de progreso',
+       'cfg_titre_page_configurer_formidable' => 'Configurar Formidable',
+       'cfg_titre_parametrages_analyse' => 'Configuración en el análisis de respuestas',
+       'champs' => 'Campos',
+       'changer_statut' => 'Este formulario es:',
+
+       // E
+       'echanger_formulaire_forms_importer' => 'Forms & Tables (.xml)',
+       'echanger_formulaire_wcs_importer' => 'W.C.S. (.wcs)',
+       'echanger_formulaire_yaml_importer' => 'Formidable (.yaml)',
+       'editer_apres_choix_formulaire' => 'El formulario, de nuevo',
+       'editer_apres_choix_redirige' => 'Redirigir a una nueva dirección',
+       'editer_apres_choix_rien' => 'Nada',
+       'editer_apres_choix_stats' => 'Estadísticas de respuesta',
+       'editer_apres_choix_valeurs' => 'Los valores ingresados',
+       'editer_apres_explication' => 'Después de la validación, mostrar en lugar del formulario:',
+       'editer_apres_label' => 'Mostrar a continuación',
+       'editer_descriptif' => 'Descripción',
+       'editer_descriptif_explication' => 'Una explicación del formulario para la zona privada.',
+       'editer_identifiant' => 'Nombre de usuario',
+       'editer_identifiant_explication' => 'Da un único identificador textual que permita llamar al formulario de manera más sencilla',
+       'editer_menu_auteurs' => 'Configurar l@s autor@s',
+       'editer_menu_champs' => 'Configurar los campos',
+       'editer_menu_formulaire' => 'Configurar el formulario',
+       'editer_menu_traitements' => 'Configurar los tratamientos',
+       'editer_message_ok' => 'Mensaje de respuesta',
+       'editer_message_ok_explication' => 'Puedes personalizar el mensaje que se mostrará al usuario después de enviar un formulario válido.',
+       'editer_modifier_formulaire' => 'Modificar el formulario',
+       'editer_nouveau' => 'Nuevo formulario',
+       'editer_redirige_url' => 'Dirección de reenvío después de la validación',
+       'editer_redirige_url_explication' => 'Dejar en blanco si quieres permanecer en la misma página',
+       'editer_titre' => 'Título',
+       'erreur_autorisation' => 'No tienes permisos para editar los formularios web',
+       'erreur_base' => 'Se ha producido un error técnico mientras se salvavan los datos.',
+       'erreur_generique' => 'Hay errores en los campos a continuación. Por favor, comprueba. ',
+       'erreur_identifiant' => 'El nombre de usuario ya está siendo utilizado.',
+       'erreur_identifiant_format' => 'El identificador solo puede contener cifras, letras y el carácter "_"',
+       'erreur_importer_forms' => 'Error durante la importación de Forms&Tables',
+       'erreur_importer_wcs' => 'Error durante la importación del formulario W.C.S',
+       'erreur_importer_yaml' => 'Error durante la importación del archivo YAML',
+       'erreur_inexistant' => 'Este formulario no existe. ',
+
+       // F
+       'formulaire_anonyme_explication' => 'Este formulario es anónimo; significa que que la identidad del usuario no será guardada. ',
+       'formulaires_aucun' => 'Todavía no existe ningún formulario.',
+       'formulaires_aucun_champ' => 'Todavía este formulario no contiene ningún campo.',
+       'formulaires_dupliquer' => 'Duplicar el formulario',
+       'formulaires_dupliquer_copie' => '(copia)',
+       'formulaires_introduction' => 'Crea y configura los formularios de tu sitio aquí.',
+       'formulaires_nouveau' => 'Crea un nuevo formulario',
+       'formulaires_supprimer' => 'Eliminar el formulario. ',
+       'formulaires_supprimer_confirmation' => 'Atención, también se eliminarán todos los resultados. ¿Está seguro de que desea eliminar este formulario?',
+       'formulaires_tous' => 'Todos los formularios',
+
+       // I
+       'identification_par_cookie' => 'Por cookie',
+       'identification_par_id_auteur' => 'Por el identificador (id_auteur) de la persona autenticada',
+       'importer_formulaire' => 'Importar un formulario',
+       'importer_formulaire_fichier_label' => 'Archivo a importar',
+       'importer_formulaire_format_label' => 'Formato de archivo',
+       'info_1_formulaire' => '1 formulario',
+       'info_1_reponse' => '1 respuesta',
+       'info_aucun_formulaire' => 'Ningún formulario',
+       'info_aucune_reponse' => 'Ninguna respuesta',
+       'info_formulaire_refuse' => 'Archivado',
+       'info_formulaire_utilise_par' => 'Formulario utilizado por:',
+       'info_nb_formulaires' => '@nb@ formularios',
+       'info_nb_reponses' => '@nb@ respuestas',
+       'info_reponse_proposee' => 'A moderar',
+       'info_reponse_proposees' => 'A moderar',
+       'info_reponse_publiee' => 'Validada',
+       'info_reponse_publiees' => 'Validadas',
+       'info_reponse_supprimee' => 'Borrada',
+       'info_reponse_supprimees' => 'Borradas',
+       'info_reponse_toutes' => 'Todas',
+       'info_utilise_1_formulaire' => 'Formulario utilizado:',
+       'info_utilise_nb_formulaires' => 'Formularios utilizados:',
+
+       // M
+       'modele_label_formulaire_formidable' => '¿Cuál formulario?',
+       'modele_nom_formulaire' => 'un formulario',
+
+       // N
+       'noisette_label_afficher_titre_formulaire' => '¿Mostrar el título del formulario? ',
+       'noisette_label_identifiant' => 'Formulario a mostrar:',
+       'noisette_nom_noisette_formulaire' => 'Formulario',
+
+       // R
+       'reponse_aucune' => 'Ninguna respuesta',
+       'reponse_intro' => '@auteur@ respondió el formulario @formulaire@',
+       'reponse_numero' => 'Respuesta numéro:',
+       'reponse_statut' => 'Esta respuesta es:',
+       'reponse_supprimer' => 'Eliminar esta respuesta',
+       'reponse_supprimer_confirmation' => '¿Estás seguro de que deseas eliminar esta respuesta?',
+       'reponse_une' => '1 respuesta',
+       'reponses_analyse' => 'Analizar las respuestas',
+       'reponses_anonyme' => 'Anónimo',
+       'reponses_auteur' => 'Usuario',
+       'reponses_exporter' => 'Exportar las respuestas',
+       'reponses_ip' => 'Dirección IP',
+       'reponses_liste' => 'Lista de respuestas',
+       'reponses_liste_prop' => 'Respuestas pendientes de validación',
+       'reponses_liste_publie' => 'Todas las respuestas validadas',
+       'reponses_nb' => '@nb@ respuestas',
+       'reponses_supprimer' => 'Borrar todas las respuestas a este formulario',
+       'reponses_supprimer_confirmation' => '¿Confirma la supresión de todas las respuestas a este formulario?',
+       'reponses_voir_detail' => 'Ver la respuesta',
+       'retour_aucun_traitement' => 'Su respuesta ha sido enviada, pero ningún tratamiento ha sido definido para este formulario. ¡No se hizo nada con sus datos!',
+
+       // S
+       'sans_reponses' => 'Sin respuesta',
+
+       // T
+       'texte_statut_poubelle' => 'borrada',
+       'texte_statut_propose_evaluation' => 'propuesta',
+       'texte_statut_publie' => 'validada',
+       'texte_statut_refuse' => 'archivado',
+       'titre_cadre_raccourcis' => 'Accesos directos',
+       'titre_formulaires_archives' => 'Archivos',
+       'titre_reponses' => 'Respuestas',
+       'traitements_actives' => 'Tratamientos activados',
+       'traitements_aide_memoire' => 'Ayuda memoria: ',
+       'traitements_avertissement_creation' => 'Los cambios en los campos del formulario se han guardado correctamente. Ahora puedes definir que tratamientos se llevarán a cabo cuando se utilice el formulario.',
+       'traitements_avertissement_modification' => 'Los cambios en los campos del formulario se han guardado correctamente. <strong>Algunos tratamientos pueden necesitar ser reconfigurados en consecuencia. </strong>',
+       'traitements_champ_aucun' => 'Ninguno',
+       'traiter_email_description' => 'Publicar los resultados del formulario por correo electrónico a una lista de destinatarios.',
+       'traiter_email_horodatage' => 'Formulario "@formulaire@" publicado el @date@ a las @heure@.',
+       'traiter_email_message_erreur' => 'Se ha producido un error al enviar el correo electrónico. ',
+       'traiter_email_message_ok' => 'Tu mensaje ha sido enviado por correo electrónico.',
+       'traiter_email_option_activer_accuse_label' => 'Acuse de recibo',
+       'traiter_email_option_activer_accuse_label_case' => 'También enviar un correo electrónico al remitente con un mensaje de confirmación.',
+       'traiter_email_option_destinataires_champ_form_explication' => 'Si uno de sus campos es una dirección de correo electrónico y si desea mandar el formulario a esta dirección, seleccione el campo.',
+       'traiter_email_option_destinataires_champ_form_label' => 'Destinatario presente en uno de los campos de los formularios',
+       'traiter_email_option_destinataires_explication' => 'Elige el campo que corresponde a los destinatarios del mensaje.',
+       'traiter_email_option_destinataires_label' => 'Destinatarios',
+       'traiter_email_option_destinataires_plus_explication' => 'Una lista de direcciones separadas por coma',
+       'traiter_email_option_destinataires_plus_label' => 'Destinatarios extra',
+       'traiter_email_option_envoyeur_courriel_explication' => 'Selecciona el campo que contendrá la dirección de correo electrónico del remitente.',
+       'traiter_email_option_envoyeur_courriel_label' => 'Enviar email',
+       'traiter_email_option_envoyeur_nom_explication' => 'Construye este nombre usando los @raccourcis@ (usa la ayuda memoria). Si lo dejas en blanco se usará el nombre del sitio. ',
+       'traiter_email_option_envoyeur_nom_label' => 'Nombre del remitente',
+       'traiter_email_option_sujet_accuse_label' => 'Asunto del acuse de recibo. ',
+       'traiter_email_option_sujet_explication' => 'Construye este asunto usando los @raccourcis@ (usa la ayuda memoria). Si lo dejas en blanco se usará uno por defecto. ',
+       'traiter_email_option_sujet_label' => 'Asunto del mensaje',
+       'traiter_email_option_vrai_envoyeur_explication' => 'Algunos servidores SMTP no permiten el uso de un correo electrónico arbitrario para el campo "From". Por esta razón Formidable inserta  por defecto el correo del remitente en el campo "Reply-to". Marca aquí para insertarlo en el campo "From".',
+       'traiter_email_option_vrai_envoyeur_label' => 'Inserta el correo del remitente en el campo "From"',
+       'traiter_email_page' => '<a href="@url@">Desde esta página</a>.',
+       'traiter_email_sujet' => '@nom@ ha escrito a usted.',
+       'traiter_email_sujet_accuse' => 'Gracias por su respuesta. ',
+       'traiter_email_titre' => 'Enviar por correo electrónico',
+       'traiter_email_url_enregistrement' => 'Puede gestionar las respuestas <a href="@url@">desde esta página</a>.',
+       'traiter_enregistrement_description' => 'Salvar los resultados del formulario en una base de datos',
+       'traiter_enregistrement_erreur_base' => 'Se ha producido un error técnico mientras se escribía en la base de datos',
+       'traiter_enregistrement_erreur_deja_repondu' => 'Usted ya ha respondido a este formulario.',
+       'traiter_enregistrement_erreur_edition_reponse_inexistante' => 'La respuesta a editar no puso ser encontrada. ',
+       'traiter_enregistrement_message_ok' => 'Gracias. Sus respuestas fueron grabadas.',
+       'traiter_enregistrement_option_anonymiser_explication' => 'Resultados anónimos (no mantener ningún tipo de datos de los usuarios que han respondido).',
+       'traiter_enregistrement_option_anonymiser_label' => 'Anonimizar el formulario',
+       'traiter_enregistrement_option_anonymiser_variable_explication' => '¿Qué variable de sistema utilizará para calcular un valor único para cada autor sin revelar su identidad ?',
+       'traiter_enregistrement_option_anonymiser_variable_label' => 'Variable del formulario que anonimiza',
+       'traiter_enregistrement_option_auteur' => 'Utilizar l@s autor@s para los formularios',
+       'traiter_enregistrement_option_auteur_explication' => 'Atribuir un@ o vari@s autor@s a un formulario. Si esta opción esta activada, solo l@s autor@s de un formulario podrán acceder a sus datos.',
+       'traiter_enregistrement_option_choix_select_label' => 'Seleccione una variable de las disponibles',
+       'traiter_enregistrement_option_identification_explication' => '¿Si las respuestas se pueden modificar, cuál es el método para usar en primer lugar para conocer la respuesta a modificar?',
+       'traiter_enregistrement_option_identification_label' => 'Identificación',
+       'traiter_enregistrement_option_ip_label' => 'Grabar las IPs (ocultadas después de un tiempo de guardia)',
+       'traiter_enregistrement_option_moderation_label' => 'Moderación',
+       'traiter_enregistrement_option_modifiable_explication' => 'Modificable: Los visitantes pueden cambiar sus respuestas con posterioridad.',
+       'traiter_enregistrement_option_modifiable_label' => 'Respuestas modificables',
+       'traiter_enregistrement_option_multiple_explication' => 'Multiple: Una misma persona puede responder varias veces el formulario.',
+       'traiter_enregistrement_option_multiple_label' => 'Respuestas múltiples',
+       'traiter_enregistrement_titre' => 'Registra los resultados',
+
+       // V
+       'voir_exporter' => 'Exportar el formulario',
+       'voir_numero' => 'Formulario número:',
+       'voir_reponses' => 'Ver las respuesta',
+       'voir_traitements' => 'Tratamientos'
+);
+
+?>
diff --git a/www/plugins/formidable/lang/formidable_fr.php b/www/plugins/formidable/lang/formidable_fr.php
new file mode 100644 (file)
index 0000000..eaeed40
--- /dev/null
@@ -0,0 +1,214 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// Fichier source, a modifier dans svn://zone.spip.org/spip-zone/_plugins_/formidable/trunk/lang/
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // A
+       'activer_pages_explication' => 'Par défaut, les pages publiques des formulaires ne sont pas autorisées',
+       'activer_pages_label' => 'Autoriser la création de pages publique pour les formulaires',
+       'admin_reponses_auteur' => 'Autoriser les auteurs des formulaires à modifier les réponses',
+       'admin_reponses_auteur_explication' => 'Seul les administrateurs peuvent normalement modifier les réponses apportées à un formulaire (à la poubelle, publiée, proposé à l’évaluation). Cette option permet à un auteur d’un formulaire d’en modifier le statut (au risque de fausser d’éventuelles statistiques).',
+       'analyse_avec_reponse' => 'Réponses non-vide',
+       'analyse_exclure_champs_explication' => 'Mettre le nom des champs à exclure dans l’analyse, séparé par des <code>|</code>. Ne pas mettre les <code>@</code>.',
+       'analyse_exclure_champs_label' => 'Champs à exclure',
+       'analyse_exporter' => 'Exporter l’analyse',
+       'analyse_longueur_moyenne' => 'Longueur moyenne en nombre de mots',
+       'analyse_nb_reponses_total' => '@nb@ personnes ont répondu à ce formulaire.',
+       'analyse_sans_reponse' => 'Laissés blanc',
+       'analyse_une_reponse_total' => 'Une personne a répondu à ce formulaire.',
+       'analyse_zero_reponse_total' => 'Aucune personne n’a répondu à ce formulaire.',
+       'aucun_traitement' => 'Aucun traitement',
+
+       // B
+       'bouton_formulaires' => 'Formulaires',
+       'bouton_revert_formulaire' => 'Revenir à la dernière version enregistrée',
+
+       // C
+       'cfg_analyse_classe_explication' => 'Vous pouvez indiquer des classes CSS qui seront ajoutées
+               sur le conteneur de chaque graphique, tel que <code>gray</code>,<code>blue</code>,
+               <code>orange</code>, <code>green</code> ou tout ce qui vous plairait !',
+       'cfg_analyse_classe_label' => 'Classe CSS de la barre de progression',
+       'cfg_titre_page_configurer_formidable' => 'Configurer Formidable',
+       'cfg_titre_parametrages_analyse' => 'Paramétrages de l’analyse des réponses',
+       'champs' => 'Champs',
+       'changer_statut' => 'Ce formulaire est :',
+
+       // E
+       'echanger_formulaire_forms_importer' => 'Forms & Tables (.xml)',
+       'echanger_formulaire_wcs_importer' => 'W.C.S. (.wcs)',
+       'echanger_formulaire_yaml_importer' => 'Formidable (.yaml)',
+       'editer_apres_choix_formulaire' => 'Le formulaire, à nouveau',
+       'editer_apres_choix_redirige' => 'Rediriger vers une nouvelle adresse',
+       'editer_apres_choix_rien' => 'Rien du tout',
+       'editer_apres_choix_stats' => 'Les statistiques des réponses',
+       'editer_apres_choix_valeurs' => 'Les valeurs saisies',
+       'editer_apres_explication' => 'Après validation, afficher à la place du formulaire :',
+       'editer_apres_label' => 'Afficher ensuite',
+       'editer_descriptif' => 'Descriptif',
+       'editer_descriptif_explication' => 'Une explication du formulaire destinée à l’espace privé.',
+       'editer_identifiant' => 'Identifiant',
+       'editer_identifiant_explication' => 'Donnez un identifiant textuel unique qui vous permettra d’appeler plus facilement le formulaire.',
+       'editer_menu_auteurs' => 'Configurer les auteurs',
+       'editer_menu_champs' => 'Configurer les champs',
+       'editer_menu_formulaire' => 'Configurer le formulaire',
+       'editer_menu_traitements' => 'Configurer les traitements',
+       'editer_message_ok' => 'Message de retour',
+       'editer_message_ok_explication' => 'Vous pouvez personnaliser le message qui sera affiché à l’utilisateur après l’envoi d’un formulaire valide.',
+       'editer_modifier_formulaire' => 'Modifier le formulaire',
+       'editer_nouveau' => 'Nouveau formulaire',
+       'editer_redirige_url' => 'Adresse de redirection après validation',
+       'editer_redirige_url_explication' => 'Laissez vide si vous souhaitez rester sur la même page',
+       'editer_resume_reponse' => 'Affichage résumé de la réponse',
+       'editer_resume_reponse_explication' => 'Cette chaîne sera utilisée pour afficher un résumé de chaque réponse dans les listes. Les champs comme <tt>@input_1@</tt> seront remplacés comme indiqué par l’aide mémoire ci-contre.',
+       'editer_titre' => 'Titre',
+       'erreur_autorisation' => 'Vous n’avez pas le droit d’éditer les formulaires du site.',
+       'erreur_base' => 'Une erreur technique est survenue durant l’enregistrement.',
+       'erreur_generique' => 'Il y a des erreurs dans les champs ci-dessous, veuillez vérifier votre envoi.',
+       'erreur_identifiant' => 'Cet identifiant est déjà utilisé.',
+       'erreur_identifiant_format' => 'L’identifiant ne peut contenir que des chiffres, lettres et le caractère "_"',
+       'erreur_importer_forms' => 'Erreur durant l’importation du formulaire Forms&Tables',
+       'erreur_importer_wcs' => 'Erreur durant l’importation du formulaire W.C.S',
+       'erreur_importer_yaml' => 'Erreur durant l’importation du fichier YAML',
+       'erreur_inexistant' => 'Le formulaire n’existe pas.',
+
+       // F
+       'formulaire_anonyme_explication' => 'Ce formulaire est anonyme, c’est à dire que l’identité de l’utilisateur n’est pas enregistrée.',
+       'formulaires_aucun' => 'Il n’y a pour l’instant aucun formulaire.',
+       'formulaires_aucun_champ' => 'Il n’y a pour l’instant aucun champ de saisie pour ce formulaire.',
+       'formulaires_dupliquer' => 'Dupliquer le formulaire',
+       'formulaires_dupliquer_copie' => '(copie)',
+       'formulaires_introduction' => 'Créez et configurez ici les formulaires de votre site.',
+       'formulaires_nouveau' => 'Créer un nouveau formulaire',
+       'formulaires_supprimer' => 'Supprimer le formulaire',
+       'formulaires_supprimer_confirmation' => 'Attention, cela supprimera aussi tous les résultats. Êtes-vous sûr de vouloir supprimer ce formulaire ?',
+       'formulaires_tous' => 'Tous les formulaires',
+
+       // I
+       'identification_par_cookie' => 'Par cookie',
+       'identification_par_id_auteur' => 'Par l’identifiant (id_auteur) de la personne authentifiée',
+       'importer_formulaire' => 'Importer un formulaire',
+       'importer_formulaire_fichier_label' => 'Fichier à importer',
+       'importer_formulaire_format_label' => 'Format du fichier',
+       'info_1_formulaire' => '1 formulaire',
+       'info_1_reponse' => '1 réponse',
+       'info_aucun_formulaire' => 'Aucun formulaire',
+       'info_aucune_reponse' => 'Aucune réponse',
+       'info_formulaire_refuse' => 'Archivé',
+       'info_formulaire_utilise_par' => 'Formulaire utilisé par :',
+       'info_nb_formulaires' => '@nb@ formulaires',
+       'info_nb_reponses' => '@nb@ réponses',
+       'info_reponse_proposee' => 'À modérer',
+       'info_reponse_proposees' => 'À modérer',
+       'info_reponse_publiee' => 'Validée',
+       'info_reponse_publiees' => 'Validées',
+       'info_reponse_supprimee' => 'Supprimée',
+       'info_reponse_supprimees' => 'Supprimées',
+       'info_reponse_toutes' => 'Toutes',
+       'info_utilise_1_formulaire' => 'Formulaire utilisé :',
+       'info_utilise_nb_formulaires' => 'Formulaires utilisés :',
+
+       // M
+       'modele_label_formulaire_formidable' => 'Quel formulaire ?',
+       'modele_nom_formulaire' => 'un formulaire',
+
+       // N
+       'noisette_label_afficher_titre_formulaire' => 'Afficher le titre du formulaire ?',
+       'noisette_label_identifiant' => 'Formulaire à afficher :',
+       'noisette_nom_noisette_formulaire' => 'Formulaire',
+
+       // R
+       'reponse_aucune' => 'Aucune réponse',
+       'reponse_intro' => '@auteur@ a répondu au formulaire @formulaire@',
+       'reponse_numero' => 'Réponse numéro :',
+       'reponse_statut' => 'Cette réponse est :',
+       'reponse_supprimer' => 'Supprimer cette réponse',
+       'reponse_supprimer_confirmation' => 'Êtes-vous sûr de vouloir supprimer cette réponse ?',
+       'reponse_une' => '1 réponse',
+       'reponses_analyse' => 'Analyse des réponses',
+       'reponses_anonyme' => 'Anonyme',
+       'reponses_auteur' => 'Utilisateur',
+       'reponses_exporter' => 'Exporter les réponses',
+       'reponses_ip' => 'Adresse IP',
+       'reponses_liste' => 'Liste des réponses',
+       'reponses_liste_prop' => 'Réponses en attente de validation',
+       'reponses_liste_publie' => 'Toutes les réponses validées',
+       'reponses_nb' => '@nb@ réponses',
+       'reponses_supprimer' => 'Supprimer toutes les réponses à ce formulaire',
+       'reponses_supprimer_confirmation' => 'Êtes-vous sûr de vouloir supprimer toutes les réponses à ce formulaire ?',
+       'reponses_voir_detail' => 'Voir la réponse',
+       'retour_aucun_traitement' => 'Votre réponse a bien été envoyée, mais aucun traitement n’a été défini pour ce formulaire. Il ne fait donc rien. :)',
+
+       // S
+       'sans_reponses' => 'Sans réponse',
+
+       // T
+       'texte_statut_poubelle' => 'supprimée',
+       'texte_statut_propose_evaluation' => 'proposée',
+       'texte_statut_publie' => 'validée',
+       'texte_statut_refuse' => 'archivé',
+       'titre_cadre_raccourcis' => 'Raccourcis',
+       'titre_formulaires_archives' => 'Archives',
+       'titre_reponses' => 'Réponses',
+       'traitements_actives' => 'Traitements activés',
+       'traitements_aide_memoire' => 'Aide mémoire :',
+       'traitements_avertissement_creation' => 'Les modifications sur les champs du formulaire ont été enregistrées avec succès. Vous pouvez maintenant définir quels traitements seront effectués lors de l’utilisation du formulaire.',
+       'traitements_avertissement_modification' => 'Les modifications sur les champs du formulaire ont été enregistrées avec succès. <strong>Certains traitements doivent peut-être être reconfigurés en conséquence.</strong>',
+       'traitements_champ_aucun' => 'Aucun',
+       'traiter_email_description' => 'Poste le résultat du formulaire par courriel à une liste de destinataires.',
+       'traiter_email_horodatage' => 'Formulaire "@formulaire@" posté le @date@ à @heure@.',
+       'traiter_email_message_erreur' => 'Une erreur est survenue lors de l’envoi du courriel.',
+       'traiter_email_message_ok' => 'Votre message a bien été envoyé par courriel.',
+       'traiter_email_option_activer_accuse_label' => 'Accusé de réception',
+       'traiter_email_option_activer_accuse_label_case' => 'Envoyer aussi un courriel à l’adresse de l’envoyeur avec un message de confirmation.',
+       'traiter_email_option_destinataires_champ_form_explication' => 'Si un de vos champ est une adresse email et que vous souhaitez envoyer le formulaire à cette adresse, sélectionnez le champ.',
+       'traiter_email_option_destinataires_champ_form_label' => 'Destinaire présent dans un des champ des formulaires',
+       'traiter_email_option_destinataires_explication' => 'Choisissez le champ qui correspondra aux destinataires du message.',
+       'traiter_email_option_destinataires_label' => 'Destinataires',
+       'traiter_email_option_destinataires_plus_explication' => 'Une liste d’adresses séparées par des virgules.',
+       'traiter_email_option_destinataires_plus_label' => 'Destinataires supplémentaires',
+       'traiter_email_option_envoyeur_courriel_explication' => 'Choisissez le champ qui contiendra le courriel de l’envoyeur.',
+       'traiter_email_option_envoyeur_courriel_label' => 'Courriel de l’envoyeur',
+       'traiter_email_option_envoyeur_nom_explication' => 'Construisez ce nom à l’aide des @raccourcis@ (cf. l’aide mémoire). Si vous ne mettez rien, ce sera le nom du site.',
+       'traiter_email_option_envoyeur_nom_label' => 'Nom de l’envoyeur',
+       'traiter_email_option_sujet_accuse_label' => 'Sujet de l’accusé de réception',
+       'traiter_email_option_sujet_explication' => 'Construisez le sujet à l’aide des @raccourcis@. Si vous ne mettez rien, le sujet sera construit automatiquement.',
+       'traiter_email_option_sujet_label' => 'Sujet du message',
+       'traiter_email_option_vrai_envoyeur_explication' => 'Certains serveurs SMTP ne permettent pas d’utiliser un courriel arbitraire pour le champ "From". Pour cette raison Formidable insère par défaut le courriel de l’envoyeur dans le champ "Reply-To". Cocher ici pour insèrer le courriel dans le champ "From".',
+       'traiter_email_option_vrai_envoyeur_label' => 'Insérer le courriel de l’envoyeur dans le champ "From"',
+       'traiter_email_page' => '<a href="@url@">Depuis cette page</a>.',
+       'traiter_email_sujet' => '@nom@ vous a écrit.',
+       'traiter_email_sujet_accuse' => 'Merci de votre réponse.',
+       'traiter_email_titre' => 'Envoyer par courriel',
+       'traiter_email_url_enregistrement' => 'Vous pouvez gérer les réponses <a href="@url@">sur cette page</a>.',
+       'traiter_enregistrement_description' => 'Enregistre les résultats du formulaire dans la base de données',
+       'traiter_enregistrement_erreur_base' => 'Une erreur technique est survenue durant l’enregistrement en base de données',
+       'traiter_enregistrement_erreur_deja_repondu' => 'Vous avez déjà répondu à ce formulaire.',
+       'traiter_enregistrement_erreur_edition_reponse_inexistante' => 'La réponse à éditer est introuvable.',
+       'traiter_enregistrement_message_ok' => 'Merci. Vos réponses ont bien été enregistrées',
+       'traiter_enregistrement_option_anonymiser_explication' => 'Résultats anonymes (ne pas garder de traces de l’identifiant des personnes ayant répondu).',
+       'traiter_enregistrement_option_anonymiser_label' => 'Anonymiser le formulaire',
+       'traiter_enregistrement_option_anonymiser_variable_explication' => 'Quelle variable système utiliser pour calculer une valeur unique pour chaque auteur sans pour autant révéler son identité.',
+       'traiter_enregistrement_option_anonymiser_variable_label' => 'Variable à partir de laquelle anonymiser le formulaire',
+       'traiter_enregistrement_option_auteur' => 'Utiliser les auteurs pour les formulaires',
+       'traiter_enregistrement_option_auteur_explication' => 'Attribuer un ou plusieurs auteurs à un formulaire. Si cette option est activée, seuls les auteurs d’un formulaire pourront accéder à leurs données.',
+       'traiter_enregistrement_option_choix_select_label' => 'Choisir une variable parmi celles proposées',
+       'traiter_enregistrement_option_identification_explication' => 'Si les réponses sont modifiables, quel procédé utiliser en priorité pour connaitre la réponse à modifier ?',
+       'traiter_enregistrement_option_identification_label' => 'Identification',
+       'traiter_enregistrement_option_ip_label' => 'Enregistrer les IPs (masquées après un délai de garde)',
+       'traiter_enregistrement_option_moderation_label' => 'Modération',
+       'traiter_enregistrement_option_modifiable_explication' => 'Modifiable : Les visiteurs peuvent modifier leurs réponses après coup.',
+       'traiter_enregistrement_option_modifiable_label' => 'Réponses modifiables',
+       'traiter_enregistrement_option_multiple_explication' => 'Multiple : Une même personne peut répondre plusieurs fois.',
+       'traiter_enregistrement_option_multiple_label' => 'Réponses multiples',
+       'traiter_enregistrement_titre' => 'Enregistrer les résultats',
+
+       // V
+       'voir_exporter' => 'Exporter le formulaire',
+       'voir_numero' => 'Formulaire numéro :',
+       'voir_reponses' => 'Voir les réponses',
+       'voir_traitements' => 'Traitements'
+);
+
+?>
diff --git a/www/plugins/formidable/lang/formidable_it.php b/www/plugins/formidable/lang/formidable_it.php
new file mode 100644 (file)
index 0000000..c20ae86
--- /dev/null
@@ -0,0 +1,152 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/formidable?lang_cible=it
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // A
+       'analyse_avec_reponse' => 'Risposte non vuote',
+       'analyse_exporter' => 'Esporta l’analisi',
+       'analyse_longueur_moyenne' => 'Lunghezza media in numero di parole',
+       'analyse_sans_reponse' => 'Risposte vuote',
+
+       // B
+       'bouton_formulaires' => 'Moduli',
+
+       // C
+       'champs' => 'Campi',
+
+       // E
+       'echanger_formulaire_forms_importer' => 'Forms & Tables (.xml)',
+       'echanger_formulaire_wcs_importer' => 'W.C.S. (.wcs)',
+       'echanger_formulaire_yaml_importer' => 'Formidable (.yaml)',
+       'editer_apres_choix_formulaire' => 'Il modulo, nuovamente',
+       'editer_apres_choix_redirige' => 'Redirigi verso un nuovo indirizzo',
+       'editer_apres_choix_rien' => 'Assolutamente niente',
+       'editer_apres_choix_valeurs' => 'I valori immessi',
+       'editer_apres_explication' => 'Dopo la validazione, mostra al posto del modulo:',
+       'editer_apres_label' => 'Mostra di seguito',
+       'editer_descriptif' => 'Descrizione',
+       'editer_descriptif_explication' => 'Una spiegazione del modulo destinata allo spazio redazionale.',
+       'editer_identifiant' => 'Identificativo',
+       'editer_identifiant_explication' => 'Fornisci un identificativo testuale unico che ti permetterà di richiamare più facilmente il modulo.',
+       'editer_menu_champs' => 'Configura i campi',
+       'editer_menu_formulaire' => 'Configura il modulo',
+       'editer_menu_traitements' => 'Configura i trattamenti',
+       'editer_message_ok' => 'Messaggio di risposta',
+       'editer_message_ok_explication' => 'Puoi personalizzare il messaggio che sarà mostrato all’utente dopo l’invio di un modulo valido.',
+       'editer_modifier_formulaire' => 'Modifica il modulo',
+       'editer_nouveau' => 'Nuovo modulo',
+       'editer_redirige_url' => 'Indirizzo di redirezione dopo la validazione',
+       'editer_redirige_url_explication' => 'Lascia vuoto se desideri restare sulla stessa pagina',
+       'editer_titre' => 'Titolo',
+       'erreur_autorisation' => 'Non hai i permessi per la modifica dei moduli del sito.',
+       'erreur_base' => 'Un problema tecnico si è verificato rurante il salvataggio.',
+       'erreur_generique' => 'Ci sono degli errori nei campi di seguito, si prega di verificare i dati.',
+       'erreur_identifiant' => 'Questo identificativo è già utilizzato.',
+       'erreur_importer_forms' => 'Errore durante l’importazione del modulo Forms&Tables',
+       'erreur_importer_wcs' => 'Errore durante l’importazione del modulo W.C.S',
+       'erreur_importer_yaml' => 'Errore durante l’importazione del modulo YAML',
+       'erreur_inexistant' => 'Il modulo non esiste.',
+
+       // F
+       'formulaires_aucun' => 'Al momento non è presente alcun modulo.',
+       'formulaires_dupliquer' => 'Duplica il modulo',
+       'formulaires_dupliquer_copie' => '(copia)',
+       'formulaires_introduction' => 'Crea e configura qui i moduli del tuo sito.',
+       'formulaires_nouveau' => 'Crea un nuovo modulo',
+       'formulaires_supprimer' => 'Elimina il modulo',
+       'formulaires_supprimer_confirmation' => 'Attenzione, si sta per eliminare anche tutte le risposte. Sei sicuro di voler eliminare il modulo?',
+       'formulaires_tous' => 'Tutti i moduli',
+
+       // I
+       'identification_par_cookie' => 'Con i cookie',
+       'identification_par_id_auteur' => 'con l’identificativo (id_auteur) dell’utente autentificato',
+       'importer_formulaire' => 'Importa un modulo',
+       'importer_formulaire_fichier_label' => 'File da importare',
+       'importer_formulaire_format_label' => 'Formato del file',
+
+       // M
+       'modele_label_formulaire_formidable' => 'Quale modulo?',
+       'modele_nom_formulaire' => 'un modulo',
+
+       // N
+       'noisette_label_afficher_titre_formulaire' => 'Mostro il titolo del modulo?',
+       'noisette_label_identifiant' => 'Modulo da mostrare:',
+       'noisette_nom_noisette_formulaire' => 'Modulo',
+
+       // R
+       'reponse_intro' => '@auteur@ ha risposto al modulo @formulaire@',
+       'reponse_numero' => 'Risposta numero:',
+       'reponse_statut' => 'Questa risposta è:',
+       'reponse_supprimer' => 'Elimina questa risposta',
+       'reponse_supprimer_confirmation' => 'Sei sicuro di voler eliminare questa risposta?',
+       'reponses_analyse' => 'Analisi delle risposte',
+       'reponses_anonyme' => 'Anonimo',
+       'reponses_auteur' => 'Utente',
+       'reponses_exporter' => 'Esporta le risposte',
+       'reponses_ip' => 'Indirizzo IP',
+       'reponses_liste' => 'Elenco delle risposte',
+       'reponses_liste_prop' => 'Risposte in attesa di validazione',
+       'reponses_liste_publie' => 'Tutte le risposte valide',
+       'reponses_voir_detail' => 'Vedi la risposta',
+       'retour_aucun_traitement' => 'La risposta è stata correttamente inviata. Grazie :)',
+
+       // S
+       'sans_reponses' => 'Senza risposta',
+
+       // T
+       'traitements_aide_memoire' => 'Promemoria:',
+       'traitements_avertissement_creation' => 'Le modifiche ai campi del modulo sono state registrate con successo. Ora puoi definire quali trattamenti saranno effettuati all’atto dell’invio del modulo.',
+       'traitements_avertissement_modification' => 'La modifiche ai campi del modulo sono state registrate con successo. <strong>Alcuni trattamenti devono forse essere riconfigurati di conseguenza.</strong>',
+       'traitements_champ_aucun' => 'Nessuno',
+       'traiter_email_description' => 'Invia il risultato del modulo per posta a un elenco di destinatari.',
+       'traiter_email_horodatage' => 'Modulo "@formulaire@" inviato il @date@ alle @heure@.',
+       'traiter_email_message_erreur' => 'Si è verificato un errore all’atto dell’invio dell’email.',
+       'traiter_email_message_ok' => 'Il tuo messaggio è stato inviato per posta elettronica.',
+       'traiter_email_option_activer_accuse_label' => 'Conferma di ricezione',
+       'traiter_email_option_activer_accuse_label_case' => 'Invia anche una email all’indirizzo del mittente con un messaggio di conferma.',
+       'traiter_email_option_destinataires_explication' => 'Scegli il campo che corrisponde al destinatario del messaggio.',
+       'traiter_email_option_destinataires_label' => 'Destinatari',
+       'traiter_email_option_destinataires_plus_explication' => 'Un elenco di indirizzi separati da virgole.',
+       'traiter_email_option_destinataires_plus_label' => 'Destinatari supplementari',
+       'traiter_email_option_envoyeur_courriel_explication' => 'Scegli il campo che contiene l’indirizzo dell’utente.',
+       'traiter_email_option_envoyeur_courriel_label' => 'Indirizzo del mittente',
+       'traiter_email_option_envoyeur_nom_explication' => 'Costruisci questo nome grazie all’aiuto dei @segnaposto@ (vedi il promemoria). Se non inserisci nulla, verrà inserito il nome del sito.',
+       'traiter_email_option_envoyeur_nom_label' => 'Nome del mittente',
+       'traiter_email_option_sujet_accuse_label' => 'Oggetto della conferma di ricezione',
+       'traiter_email_option_sujet_explication' => 'Costruisci l’oggetto grazie all’aiuto dei @segnaposto@. Se non inserisci nulla, l’oggetto verrà generato automaticamente.',
+       'traiter_email_option_sujet_label' => 'Oggetto del messaggio',
+       'traiter_email_page' => '<a href="@url@">Da questa pagina</a>.',
+       'traiter_email_sujet' => '@nom@ ti ha scritto.',
+       'traiter_email_sujet_accuse' => 'Grazie per aver risposto.',
+       'traiter_email_titre' => 'Invia per posta',
+       'traiter_email_url_enregistrement' => 'Puoi gestire le risposte <a href="@url@">su questa pagina</a>.',
+       'traiter_enregistrement_description' => 'Salva i risultati del modulo nella base dati',
+       'traiter_enregistrement_erreur_base' => 'Si è verificato un errore tecnico durante il salvataggio in database',
+       'traiter_enregistrement_erreur_deja_repondu' => 'Hai già risposto a questo modulo.',
+       'traiter_enregistrement_erreur_edition_reponse_inexistante' => 'La risposta da modificare non esiste.',
+       'traiter_enregistrement_option_anonymiser_explication' => 'Fare i risultati di forma anonima (non conservare traccia di identificazione degli intervistati).', # MODIF
+       'traiter_enregistrement_option_anonymiser_label' => 'Modo anonimo',
+       'traiter_enregistrement_option_anonymiser_variable_explication' => 'Quale variabile di sistema utilizzato per calcolare un singolo valore per ogni autore, senza rivelare la propria identità.',
+       'traiter_enregistrement_option_anonymiser_variable_label' => 'Variabile da cui la forma anonima',
+       'traiter_enregistrement_option_identification_explication' => 'Se le risposte sono modificabili, quale procedura si dovrà utilizzare in priorità per individuare la risposta da modificare?',
+       'traiter_enregistrement_option_identification_label' => 'Identificazione',
+       'traiter_enregistrement_option_moderation_label' => 'Moderazione',
+       'traiter_enregistrement_option_modifiable_explication' => 'Gli utenti possono modificare le loro risposte dopo aver inviato il modulo?', # MODIF
+       'traiter_enregistrement_option_modifiable_label' => 'Risposte modificabili',
+       'traiter_enregistrement_option_multiple_explication' => 'Un utente può risposndere più al modulo?', # MODIF
+       'traiter_enregistrement_option_multiple_label' => 'Risposte multiple',
+       'traiter_enregistrement_titre' => 'Registra i risultati',
+
+       // V
+       'voir_exporter' => 'Esporta il modulo',
+       'voir_numero' => 'Modulo numero:',
+       'voir_reponses' => 'Vedi le risposte',
+       'voir_traitements' => 'Trattamenti'
+);
+
+?>
diff --git a/www/plugins/formidable/lang/formidable_sk.php b/www/plugins/formidable/lang/formidable_sk.php
new file mode 100644 (file)
index 0000000..41bb947
--- /dev/null
@@ -0,0 +1,175 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/formidable?lang_cible=sk
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // A
+       'analyse_avec_reponse' => 'Neprázdne odpovede',
+       'analyse_exporter' => 'Exportovať analýzu',
+       'analyse_longueur_moyenne' => 'Priemerná dĺžka vyjadrená počtom slov',
+       'analyse_nb_reponses_total' => '@nb@ ľudia odpovedali na tento formulár.',
+       'analyse_sans_reponse' => 'Nevyplnené',
+       'analyse_une_reponse_total' => 'Na tento formulár odpovedal jeden človek.',
+       'analyse_zero_reponse_total' => 'Na tento formulár neodpovedal žiaden človek.',
+       'aucun_traitement' => 'Žiadne spracovanie',
+
+       // B
+       'bouton_formulaires' => 'Formuláre',
+
+       // C
+       'cfg_analyse_classe_explication' => 'Môžete zadať triedy CSS, ktoré budú pridané 
+               na každý graf ako <code>sivý,</code> <code>modrý,</code>
+               <code>oranžový,</code> <code>zelený</code> alebo akýkoľvek iný stĺpec!',
+       'cfg_analyse_classe_label' => 'Trieda CSS stĺpca dokončenia úkonu',
+       'cfg_titre_page_configurer_formidable' => 'Nastaviť Formidable',
+       'cfg_titre_parametrages_analyse' => 'Nastavenia analýzy odpovedí',
+       'champs' => 'Pol’a',
+
+       // E
+       'echanger_formulaire_forms_importer' => 'formuláre Forms & Tables (.xml)',
+       'echanger_formulaire_wcs_importer' => 'W.C.S. (.wcs)',
+       'echanger_formulaire_yaml_importer' => 'Formidable (.yaml)',
+       'editer_apres_choix_formulaire' => 'Formulár, znova',
+       'editer_apres_choix_redirige' => 'Presmerovať na novú adresu',
+       'editer_apres_choix_rien' => 'Vôbec nič',
+       'editer_apres_choix_stats' => 'Štatistiky odpovedí',
+       'editer_apres_choix_valeurs' => 'Zadané hodnoty',
+       'editer_apres_explication' => 'Po potvrdení namiesto formulára zobraziť:',
+       'editer_apres_label' => 'Zobraziť potom',
+       'editer_descriptif' => 'Opis',
+       'editer_descriptif_explication' => 'Vysvetlivka formulára pre súkromnú zónu.',
+       'editer_identifiant' => 'Identifikátor',
+       'editer_identifiant_explication' => 'Zadajte jedinečný textový identifikátor, ktorý vám umožní rýchlo vyvolať formulár.',
+       'editer_menu_auteurs' => 'Nastaviť autorov',
+       'editer_menu_champs' => 'Nastaviť polia',
+       'editer_menu_formulaire' => 'Nastaviť formulár',
+       'editer_menu_traitements' => 'Nastaviť funkcie',
+       'editer_message_ok' => 'Správa spätnej väzby',
+       'editer_message_ok_explication' => 'Môžete upraviť správu, ktorá sa používateľovi zobrazí po odoslaní platného formulára.',
+       'editer_modifier_formulaire' => 'Upraviť formulár',
+       'editer_nouveau' => 'Nový formulár',
+       'editer_redirige_url' => 'Adresa presmerovania po potvrdení',
+       'editer_redirige_url_explication' => 'Nevypĺňajte, ak chcete zostať na rovnakej stránke',
+       'editer_titre' => 'Názov',
+       'erreur_autorisation' => 'Na úpravu formulárov na tejto stránke nemáte dostatočné práva.',
+       'erreur_base' => 'Počas ukladania sa vyskytla technická chyba.',
+       'erreur_generique' => 'V týchto poliach sú chyby, prosím, skontrolujte ich pred odoslaním.',
+       'erreur_identifiant' => 'Tento identifikátor sa už používa.',
+       'erreur_importer_forms' => 'Chyba počas nahrávania formulára Forms&Tables',
+       'erreur_importer_wcs' => 'Chyba počas nahrávania formulára W.C.S',
+       'erreur_importer_yaml' => 'Chyba počas nahrávania súboru YAML',
+       'erreur_inexistant' => 'Formulár neexistuje.',
+
+       // F
+       'formulaire_anonyme_explication' => 'Tento formulár je anonymný, tzn., že záznamy o identite používateľov sa neukladajú.',
+       'formulaires_aucun' => 'Momentálne tu nie je žiaden formulár.',
+       'formulaires_dupliquer' => 'Skopírovať formulár',
+       'formulaires_dupliquer_copie' => '(kópia)',
+       'formulaires_introduction' => 'Tu vytvoríte a nastavíte formuláre pre svoju stránku.',
+       'formulaires_nouveau' => 'Vytvoriť nový formulár',
+       'formulaires_supprimer' => 'Odstrániť formulár',
+       'formulaires_supprimer_confirmation' => 'Pozor, takto vymažete všetky výsledky. Určite chcete odstrániť tento formulár?',
+       'formulaires_tous' => 'Všetky formuláre',
+
+       // I
+       'identification_par_cookie' => 'Podľa cookie',
+       'identification_par_id_auteur' => 'Podľa identifikátora (id_auteur) prihláseného človeka',
+       'importer_formulaire' => 'Nahrať formulár',
+       'importer_formulaire_fichier_label' => 'Súbor, ktorý sa má nahrať',
+       'importer_formulaire_format_label' => 'Formát súboru',
+
+       // M
+       'modele_label_formulaire_formidable' => 'Aký formulár?',
+       'modele_nom_formulaire' => 'jeden formulár',
+
+       // N
+       'noisette_label_afficher_titre_formulaire' => 'Zobraziť nadpis formulára?',
+       'noisette_label_identifiant' => 'Formulár, ktorý sa má zobraziť:',
+       'noisette_nom_noisette_formulaire' => 'Formulár',
+
+       // R
+       'reponse_aucune' => 'Žiadna odpoveď',
+       'reponse_intro' => '@auteur@ vyplnil(a) formulár @formulaire@',
+       'reponse_numero' => 'Odpoveď číslo:',
+       'reponse_statut' => 'Táto odpoveď je:',
+       'reponse_supprimer' => 'Odstrániť túto odpoveď',
+       'reponse_supprimer_confirmation' => 'Určite chcete vymazať túto odpoveď?',
+       'reponse_une' => '1 odpoveď',
+       'reponses_analyse' => 'Analýza odpovedí',
+       'reponses_anonyme' => 'Anonym',
+       'reponses_auteur' => 'Používateľ',
+       'reponses_exporter' => 'Exportovať odpovede',
+       'reponses_ip' => 'IP adresa',
+       'reponses_liste' => 'Zoznam odpovedí',
+       'reponses_liste_prop' => 'Odpovede čakajúce na potvrdenie',
+       'reponses_liste_publie' => 'Všetky platné odpovede',
+       'reponses_nb' => '@nb@ odpovedí',
+       'reponses_voir_detail' => 'Zobraziť odpoveď',
+       'retour_aucun_traitement' => 'Vaša odpoveď bola odoslaná, ale k tomuto formuláru nebola definovaná žiadna funkcia. Nič neurobí. :-)',
+
+       // S
+       'sans_reponses' => 'Neriešiteľný',
+
+       // T
+       'titre_cadre_raccourcis' => 'Skratky',
+       'traitements_actives' => 'Aktívne spracovanie',
+       'traitements_aide_memoire' => 'Pomocná pamäť:',
+       'traitements_avertissement_creation' => 'Zmeny polí formulára boli úspešne uložené. Teraz môžete určiť, aké funkcie sa použijú pri spracúvaní formulára.',
+       'traitements_avertissement_modification' => 'Zmeny v poliach formulára boli úspešne uložené. <strong>Niektoré funkcie možno budú musieť byť kvôli ním prestavené.</strong>',
+       'traitements_champ_aucun' => 'Žiadne',
+       'traiter_email_description' => 'Výstup z formulára odošle na e-mailové adresy príjemcov.',
+       'traiter_email_horodatage' => 'Formulár "@formulaire@" odoslaný @date@ o @heure@.',
+       'traiter_email_message_erreur' => 'Pri odosielaní e-mailu sa vyskytla chyba.',
+       'traiter_email_message_ok' => 'Vaša správa bola odoslaná.',
+       'traiter_email_option_activer_accuse_label' => 'Potvrdenie o prijatí správy',
+       'traiter_email_option_activer_accuse_label_case' => 'Poslať e-mail aj na adresu odosielateľa so žiadosťou o potvrdenie.',
+       'traiter_email_option_destinataires_explication' => 'Vyberte si pole, v ktorom budú príjemcovia správy.',
+       'traiter_email_option_destinataires_label' => 'Príjemcovia',
+       'traiter_email_option_destinataires_plus_explication' => 'Zoznam adries oddelený čiarkami.',
+       'traiter_email_option_destinataires_plus_label' => 'Ďalší príjemcovia',
+       'traiter_email_option_envoyeur_courriel_explication' => 'Vyberte si pole, ktoré bude obsahovať e-mailovú adresu odosielateľa.',
+       'traiter_email_option_envoyeur_courriel_label' => 'E-mail odosielateľa',
+       'traiter_email_option_envoyeur_nom_explication' => 'Vytvorte názov pomocou @raccourcis@ (prečítajte si pomocníka). Ak neurobíte nič, bude tým názvom názov stránky.',
+       'traiter_email_option_envoyeur_nom_label' => 'Meno odosielateľa',
+       'traiter_email_option_sujet_accuse_label' => 'Predmet potvrdenia o prijatí',
+       'traiter_email_option_sujet_explication' => 'Vytvorte predmet pomocou @raccourcis@. Ak neurobíte nič, predmet bude vytvorený automaticky.',
+       'traiter_email_option_sujet_label' => 'Predmet správy',
+       'traiter_email_option_vrai_envoyeur_explication' => 'Niektoré servery SMTP neumožňujú používať ľubovoľný e-mail pre pole "From" (Od koho). Z tohto dôvodu Formidable podľa predvolených nastavení vkladá e-mail odosielateľa do poľa "Reply-To". Ak chcete, aby bol vložený do poľa "From", zaškrtnite túto možnosť tu.',
+       'traiter_email_option_vrai_envoyeur_label' => 'Vložiť e-mail odosielateľa do poľa "From" (= "Od koho")',
+       'traiter_email_page' => '<a href="@url@">Z tejto stránky.</a>',
+       'traiter_email_sujet' => '@nom@ vám napísal(a).',
+       'traiter_email_sujet_accuse' => 'Ďakujeme vám za odpoveď.',
+       'traiter_email_titre' => 'Poslať e-mailom',
+       'traiter_email_url_enregistrement' => 'Riadiť odpovede môžete <a href="@url@">na tejto stránke.</a>',
+       'traiter_enregistrement_description' => 'Uloží výsledky z formulára do databázy',
+       'traiter_enregistrement_erreur_base' => 'Počas ukladania do databázy sa vyskytla technická chyba',
+       'traiter_enregistrement_erreur_deja_repondu' => 'Tento formulár ste už vyplnili.',
+       'traiter_enregistrement_erreur_edition_reponse_inexistante' => 'Odpoveď, ktorú chcete upraviť, sa nedá nájsť.',
+       'traiter_enregistrement_option_anonymiser_explication' => 'Vypísať výsledky anonymného formulára(nenechávať si záznamy identifikujúce respondentov).', # MODIF
+       'traiter_enregistrement_option_anonymiser_label' => 'Anonymizované podobe',
+       'traiter_enregistrement_option_anonymiser_variable_explication' => 'Čo systémová premenná slúži na výpočet jednej hodnoty pre každého autora, bez toho, aby odhalil svoju identitu.',
+       'traiter_enregistrement_option_anonymiser_variable_label' => 'Premenná, z ktorých anonymizujú formulár',
+       'traiter_enregistrement_option_auteur' => 'Použiť mená autorov vo formulároch',
+       'traiter_enregistrement_option_auteur_explication' => 'K formuláru priradiť jedného autora alebo viacerých. Ak aktivujete túto možnosť, k údajom formulára budú mať prístup len autori formulára.',
+       'traiter_enregistrement_option_choix_select_label' => 'Vyberte premennú, ktorá z dostupnej',
+       'traiter_enregistrement_option_identification_explication' => 'Ak sa odpovede dajú upraviť, aký spôsob sa použije ako prvý, aby sa zistilo, či sa odpoveď menila?',
+       'traiter_enregistrement_option_identification_label' => 'Identifikácia',
+       'traiter_enregistrement_option_moderation_label' => 'Kontrola',
+       'traiter_enregistrement_option_modifiable_explication' => 'Môžu návštevníci potom upraviť svoje odpovede?', # MODIF
+       'traiter_enregistrement_option_modifiable_label' => 'Odpovede, ktoré sa dajú upraviť',
+       'traiter_enregistrement_option_multiple_explication' => 'Môže ten istý človek odpovedať na formulár viackrát?', # MODIF
+       'traiter_enregistrement_option_multiple_label' => 'Duplicitné odpovede',
+       'traiter_enregistrement_titre' => 'Uložiť výsledky',
+
+       // V
+       'voir_exporter' => 'Exportovať formulár',
+       'voir_numero' => 'Formulár číslo:',
+       'voir_reponses' => 'Zobraziť odpovede',
+       'voir_traitements' => 'Funkcie'
+);
+
+?>
diff --git a/www/plugins/formidable/lang/formulaire_fr.php b/www/plugins/formidable/lang/formulaire_fr.php
new file mode 100644 (file)
index 0000000..f6663cd
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// Fichier source, a modifier dans svn://zone.spip.org/spip-zone/_plugins_/formidable/trunk/lang/
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+       // I
+       'icone_creer_formulaire' => 'Créer un nouveau formulaire',
+
+       // M
+       'modifier_formulaire' => 'Modifier ce formulaire',
+
+       // T
+       'titre_formulaires' => 'Formulaires',
+       'titre_logo_formulaire' => 'Logo de ce formulaire',
+       'titre_formulaire' => 'Formulaire',
+
+);
diff --git a/www/plugins/formidable/lang/formulaires_reponse_fr.php b/www/plugins/formidable/lang/formulaires_reponse_fr.php
new file mode 100644 (file)
index 0000000..108f4e2
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// Fichier source, a modifier dans svn://zone.spip.org/spip-zone/_plugins_/formidable/trunk/lang/
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+       // I
+       'icone_creer_formulaire' => 'Créer une nouvelle réponse de formulaire',
+
+       // M
+       'modifier_formulaire' => 'Modifier cette réponse de formulaire',
+
+       'changer_statut' => 'Cette réponse de formulaire est :',
+
+       // F
+       'formulaires_reponse_numero' => 'Réponse de formulaire n°@nb@',
+
+       // R
+       'reponses_donnees' => 'Réponses données :',
+
+       // T
+       'titre_formulaires_reponses' => 'Réponses de formulaire',
+       'titre_logo_formulaires_reponse' => 'Logo de cette réponse de formulaire',
+       'titre_formulaires_reponse' => 'Réponse de formulaire',
+
+
+);
diff --git a/www/plugins/formidable/lang/paquet-formidable.xml b/www/plugins/formidable/lang/paquet-formidable.xml
new file mode 100644 (file)
index 0000000..800e0bb
--- /dev/null
@@ -0,0 +1,7 @@
+<traduction module="paquet-formidable" gestionnaire="salvatore" url="http://trad.spip.net" source="svn://zone.spip.org/spip-zone/_plugins_/formidable/trunk/lang/" reference="fr">
+       <langue code="es" url="http://trad.spip.net/tradlang_module/paquet-formidable?lang_cible=es" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="severo" lien="http://trad.spip.net/auteur/severo" />
+       </langue>
+       <langue code="fr" url="http://trad.spip.net/tradlang_module/paquet-formidable?lang_cible=fr" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+       </langue>
+</traduction>
diff --git a/www/plugins/formidable/lang/paquet-formidable_es.php b/www/plugins/formidable/lang/paquet-formidable_es.php
new file mode 100644 (file)
index 0000000..e16d5c4
--- /dev/null
@@ -0,0 +1,15 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/paquet-formidable?lang_cible=es
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // F
+       'formidable_description' => 'Creación de formularios con una interfaz gráfica y configuración de los procesamientos asociados (enviar por correo electrónico, grabar las respuestas, etc.)',
+       'formidable_slogan' => 'Generador de formularios'
+);
+
+?>
diff --git a/www/plugins/formidable/lang/paquet-formidable_fr.php b/www/plugins/formidable/lang/paquet-formidable_fr.php
new file mode 100644 (file)
index 0000000..3647950
--- /dev/null
@@ -0,0 +1,13 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// Fichier source, a modifier dans svn://zone.spip.org/spip-zone/_plugins_/formidable/trunk/lang/
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // F
+       'formidable_description' => 'Création de formulaires avec une interface graphique et configuration des traitements associés (envoyer par courriel, enregistrer les réponses, etc).',
+       'formidable_slogan' => 'Générateur de formulaires'
+);
+
+?>
diff --git a/www/plugins/formidable/modeles/form.html b/www/plugins/formidable/modeles/form.html
new file mode 100644 (file)
index 0000000..ac7460c
--- /dev/null
@@ -0,0 +1,12 @@
+<BOUCLE_fet(FORMS){id_form}{si #PLUGIN{forms}}>
+#FORMS
+</BOUCLE_fet>
+<BOUCLE_f(FORMULAIRES){identifiant=form#ID}{0,1}>#SET{titre,#TITRE}[(#REM|test_espace_prive|oui)
+#FORMULAIRE_FORMIDABLE{#ID_FORMULAIRE,#ARRAY{_titre,#TITRE}}
+]</BOUCLE_f>
+<div><?php
+/* une fonction qui produit du php qui ne sera execute qu'au service final de la page */
+echo executer_balise_dynamique('FORMULAIRE_FORMIDABLE',[(#LISTE{form#ID,#ARRAY{_titre,#GET{titre}}}|var_export{true})],array('','','','','[(#ENV{lang}|texte_script)]'));
+?></div>
+<//B_f>
+<//B_fet>
\ No newline at end of file
diff --git a/www/plugins/formidable/modeles/formidable.html b/www/plugins/formidable/modeles/formidable.html
new file mode 100644 (file)
index 0000000..7de83ad
--- /dev/null
@@ -0,0 +1,8 @@
+<BOUCLE_f(FORMULAIRES){id_formulaire=#ID}{si #REM|test_espace_prive}>
+#FORMULAIRE_FORMIDABLE{#ID_FORMULAIRE}
+</BOUCLE_f>
+<div><?php
+/* une fonction qui produit du php qui ne sera execute qu'au service final de la page */
+echo executer_balise_dynamique('FORMULAIRE_FORMIDABLE',[(#LISTE{#ENV{id}}|array_merge{#ENV{args}}|var_export{true})],array('','','','','[(#ENV{lang}|texte_script)]'));
+?></div>
+<//B_f>
\ No newline at end of file
diff --git a/www/plugins/formidable/modeles/formulaire_aide_memoire.html b/www/plugins/formidable/modeles/formulaire_aide_memoire.html
new file mode 100644 (file)
index 0000000..3c6077a
--- /dev/null
@@ -0,0 +1,17 @@
+<BOUCLE_formulaire(FORMULAIRES){id_formulaire}{tout}>
+       <strong><:formidable:traitements_aide_memoire:></strong>
+       <dl>
+               <dt>@nom_site_spip@</dt>
+               <dd><:info_nom_site:></dd>
+       </dl>
+       
+       <BOUCLE_champs(POUR){tableau #SAISIES*|unserialize|saisies_lister_par_nom{0}}>
+       [(#SET{label, [(#VALEUR|table_valeur{options}|table_valeur{label})]})]
+       [(#SET{label_case, [(#VALEUR|table_valeur{options}|table_valeur{label_case})]})]
+       
+       <dl>
+               <dt>@#CLE@</dt>
+               [<dd>(#GET{label}|sinon{#GET{label_case}})</dd>]
+       </dl>
+       </BOUCLE_champs>
+</BOUCLE_formulaire>
diff --git a/www/plugins/formidable/modeles/formulaire_analyse.html b/www/plugins/formidable/modeles/formulaire_analyse.html
new file mode 100644 (file)
index 0000000..95c9390
--- /dev/null
@@ -0,0 +1,68 @@
+<BOUCLE_formulaire(FORMULAIRES){id_formulaire}>
+#SET{exclure_champs,#TRAITEMENTS|unserialize|table_valeur{enregistrement}|table_valeur{analyse_exclure_champs}|explode{|}}
+<div class='formidable_analyse'>
+[(#REM) On fait un tableau qui contient toutes les réponses, classées par champ, sauf pour les champs qui sont à ne pas prendre en compte ]
+#SET{valeurs,#ARRAY}
+#SET{reponses_total,0}
+<BOUCLE_reponses(FORMULAIRES_REPONSES){id_formulaire}>
+<BOUCLE_champs(FORMULAIRES_REPONSES_CHAMPS){id_formulaires_reponse}{nom ?= #ENV{nom}}{!nom IN #GET{exclure_champs}}>
+#SET_MERGE{liste_valeurs, #GET{valeurs}|table_valeur{#NOM}|sinon{#ARRAY}, #ARRAY{0,#VALEUR|tenter_unserialize}}
+#SET_MERGE{valeurs, #ARRAY{#NOM,#GET{liste_valeurs}}}
+</BOUCLE_champs>
+</BOUCLE_reponses>
+#SET{reponses_total,#TOTAL_BOUCLE}
+<strong class='nombre_reponse'>
+       [(#TOTAL_BOUCLE|singulier_ou_pluriel{formidable:reponse_une,formidable:reponses_nb})]
+</strong>
+</B_reponses>
+       <strong class='nombre_reponse'><:formidable:reponse_aucune:></strong>
+<//B_reponses>
+
+<BOUCLE_saisies(POUR){tableau #SAISIES|unserialize|saisies_lister_par_nom}>
+[(#VAL{saisie}|array_key_exists{#VALEUR}|oui)
+  [(#CLE|=={#ENV{nom,#CLE}}|oui)
+       [(#CLE|in_array{#GET{exclure_champs}}|non)
+        [(#VALEUR|formidable_analyser_saisie{#GET{valeurs}, #GET{reponses_total}})]
+    ]
+  ]
+]
+</BOUCLE_saisies>
+
+</div><!-- formidable_analyse -->
+<script type='text/javascript'>
+(function($){
+$(document).ready(function(){
+       /* Récupérer tous les tableaux d'analyse non décorés */
+       $('.formidable_analyse table:not(.stat_done)').each(function() {
+               $(this).addClass('stat_done');
+               /* Le tableau contient le nombre total d'élément. On parcours chaque valeur */
+               $nbtotal = $(this).data('nombre');
+               $(this).find('td.stat').each(function(){
+                       $val = $(this).html();
+                       /* Certaines valeurs sont a ignorer (les moyennes) */
+                       $ignore = $(this).is('.ignore');
+                       if (!$ignore) {
+                               /* Calcul du pourcentage */
+                               $taux = Math.round($val/$nbtotal*100);
+                               /* On affiche le nombre de réponses */
+                               $reponses = $(this).attr('title');
+                               if (!parseInt($val) || ($reponses === undefined)) {
+                                       $reponses = '';
+                               } else {
+                                       $reponses = "<small> - " + $reponses + "</small>";
+                               }
+                               $text = "\
+                               <div class='[(#CONFIG{formidable/analyse/classe}) ]progress-bar'>\
+                                       <span></span><strong>" + $taux + "%" + $reponses + "</strong>\
+                               </div>";
+                               $(this).html($text).find('span').width($taux + '%');
+                       }
+               });
+       });
+});
+})(jQuery);
+</script>
+<style type='text/css'>
+<INCLURE{fond=css/formidable_analyse.css} />
+</style>
+</BOUCLE_formulaire>
\ No newline at end of file
diff --git a/www/plugins/formidable/modeles/formulaire_formidable.yaml b/www/plugins/formidable/modeles/formulaire_formidable.yaml
new file mode 100644 (file)
index 0000000..79dc4e9
--- /dev/null
@@ -0,0 +1,20 @@
+nom: '<:formidable:modele_nom_formulaire:>'
+logo: 'images/formulaire-24.png'
+icone_barre: 'formulaire.png'
+parametres:
+  -
+    saisie: 'hidden'
+    options:
+      nom: 'modele'
+      defaut: 'formulaire'
+  -
+    saisie: 'hidden'
+    options:
+      nom: 'variante'
+      defaut: 'formidable'
+  -
+    saisie: 'formulaire_formidable'
+    options:
+      nom: 'id'
+      label: '<:formidable:modele_label_formulaire_formidable:>'
+      cacher_option_intro: 'oui'
\ No newline at end of file
diff --git a/www/plugins/formidable/modeles/formulaires_reponse.html b/www/plugins/formidable/modeles/formulaires_reponse.html
new file mode 100644 (file)
index 0000000..02d78a0
--- /dev/null
@@ -0,0 +1,12 @@
+<BOUCLE_reponse(FORMULAIRES_REPONSES){tout}{id_formulaires_reponse}>
+
+#SET{valeurs,#ARRAY}
+<BOUCLE_champs(FORMULAIRES_REPONSES_CHAMPS){id_formulaires_reponse}>
+#SET_MERGE{valeurs,#ARRAY{#NOM,#VALEUR|tenter_unserialize}}
+</BOUCLE_champs>
+
+<BOUCLE_formulaire(FORMULAIRES){id_formulaire}>
+#VOIR_SAISIES{(#SAISIES|unserialize), #GET{valeurs}}
+</BOUCLE_formulaire>
+
+</BOUCLE_reponse>
diff --git a/www/plugins/formidable/noisettes/formulaire_formidable.html b/www/plugins/formidable/noisettes/formulaire_formidable.html
new file mode 100644 (file)
index 0000000..95f7a4c
--- /dev/null
@@ -0,0 +1,2 @@
+<BOUCLE_formulaire(FORMULAIRES){identifiant}{0,1}>[(#ENV{afficher_titre_formulaire}|oui)[<h2 class="h2">(#TITRE|typo)</h2>]]</BOUCLE_formulaire>\r
+<div class="ajax">#FORMULAIRE_FORMIDABLE{#ENV{identifiant}}</div>
\ No newline at end of file
diff --git a/www/plugins/formidable/noisettes/formulaire_formidable.yaml b/www/plugins/formidable/noisettes/formulaire_formidable.yaml
new file mode 100644 (file)
index 0000000..dd6679c
--- /dev/null
@@ -0,0 +1,15 @@
+nom: '<:formidable:noisette_nom_noisette_formulaire:>'\r
+icon: 'images/formulaire-24.png'\r
+parametres:\r
+  -\r
+    saisie: 'formulaire_formidable'\r
+    options:\r
+      nom: 'identifiant'\r
+      label: '<:formidable:noisette_label_identifiant:>'\r
+      cacher_option_intro: 'oui'\r
+  -\r
+    saisie: 'oui_non'\r
+    options:\r
+      nom: 'afficher_titre_formulaire'\r
+      label: '<:formidable:noisette_label_afficher_titre_formulaire:>'\r
+      defaut: ''
\ No newline at end of file
diff --git a/www/plugins/formidable/notifications/formulaire_accuse.html b/www/plugins/formidable/notifications/formulaire_accuse.html
new file mode 100644 (file)
index 0000000..559a130
--- /dev/null
@@ -0,0 +1,7 @@
+
+[(#ENV*{message_retour}|propre)]
+
+#VOIR_SAISIES{#ENV*{saisies}, #ENV*{valeurs}}
+
+---
+<p><:envoi_via_le_site:> <a href="#URL_SITE_SPIP">#NOM_SITE_SPIP</a></p>
diff --git a/www/plugins/formidable/notifications/formulaire_email.html b/www/plugins/formidable/notifications/formulaire_email.html
new file mode 100644 (file)
index 0000000..9f3b5e9
--- /dev/null
@@ -0,0 +1,18 @@
+
+<p>
+       #SET{date, #VAL{d/m/Y}|date}
+       #SET{heure, #VAL{H:i:s}|date}
+       <:formidable:traiter_email_horodatage{formulaire=#ENV*{titre}, date=#GET{date}, heure=#GET{heure}}:>
+       <br/>
+       #SET{url, #SELF{&,true}|url_absolue}
+       <:formidable:traiter_email_page{url=#GET{url}}:>
+</p>
+
+#VOIR_SAISIES{#ENV*{saisies}, #ENV*{valeurs}}
+
+---
+<p><:envoi_via_le_site:> <a href="#URL_SITE_SPIP">#NOM_SITE_SPIP</a></p>
+[(#ENV*{traitements}|table_valeur{enregistrement}|oui)
+#SET{url, #URL_ECRIRE{formulaires_reponses}|parametre_url{id_formulaire, #ENV{id_formulaire}}|url_absolue}
+<p><:formidable:traiter_email_url_enregistrement{url=#GET{url}}:></p>
+]
diff --git a/www/plugins/formidable/paquet.xml b/www/plugins/formidable/paquet.xml
new file mode 100644 (file)
index 0000000..5b18bb0
--- /dev/null
@@ -0,0 +1,39 @@
+<paquet
+       prefix="formidable"
+       categorie="communication"
+       version="2.7.1"
+       etat="stable"
+       compatibilite="[3.0.0;3.0.*]"
+       logo="images/formidable-64.png"
+       schema="0.6.4"
+       documentation="http://contrib.spip.net/Formidable-le-generateur-de-formulaires"
+>
+
+       <nom>Formidable</nom>
+       <!-- Générateur de formulaires -->
+
+       <auteur>RastaPopoulos</auteur>
+       <auteur lien="http://www.ldd.fr">Les Développements Durables</auteur>
+
+       <licence lien="http://www.gnu.org/licenses/gpl-3.0.html">GPL 3</licence>
+
+       <pipeline nom="formidable_affiche_resume_reponse" action="" />
+
+       <pipeline nom="autoriser" inclure="formidable_autorisations.php" />
+       <pipeline nom="declarer_tables_objets_sql" inclure="base/formidable_tables.php" />
+       <pipeline nom="declarer_tables_principales" inclure="base/formidable_tables.php" />
+       <pipeline nom="declarer_tables_auxiliaires" inclure="base/formidable_tables.php" />
+       <pipeline nom="declarer_tables_interfaces" inclure="base/formidable_tables.php" />
+
+       <pipeline nom="affiche_droite" inclure="formidable_pipelines.php" />
+       <pipeline nom="post_edition" inclure="formidable_pipelines.php" />
+       <pipeline nom="optimiser_base_disparus" inclure="formidable_pipelines.php" />
+
+       <necessite nom="spip_bonux" compatibilite="[3.0.0;[" />
+       <necessite nom="saisies" compatibilite="[1.40.3;[" />
+       <necessite nom="verifier" compatibilite="[0.1.0;[" />
+       <necessite nom="yaml" compatibilite="[1.5.0;[" />
+       <necessite nom="facteur" compatibilite="[3.0.3;[" />
+
+       <menu nom="formulaires" titre="formidable:bouton_formulaires" parent="menu_edition" icone="images/formulaire-16.png" />
+</paquet>
\ No newline at end of file
diff --git a/www/plugins/formidable/prive/objets/contenu/formulaire.html b/www/plugins/formidable/prive/objets/contenu/formulaire.html
new file mode 100644 (file)
index 0000000..52facde
--- /dev/null
@@ -0,0 +1,19 @@
+<BOUCLE_formulaire(FORMULAIRES){id_formulaire}{tout}>
+<div class="champ contenu_descriptif[ (#DESCRIPTIF*|strlen|?{'',vide})]">
+       <div class='label'><:info_descriptif:></div>
+       <div dir='#LANG_DIR' class='#EDIT{descriptif} descriptif'>[(#DESCRIPTIF|image_reduire{500,0})]</div>
+</div>
+<div class="champ contenu_message_retour[ (#MESSAGE_RETOUR*|strlen|?{'',vide})]">
+       <div class='label'><:formidable:editer_message_ok:></div>
+       <div dir='#LANG_DIR' class='#EDIT{message_retour} message_retour'>[(#MESSAGE_RETOUR|image_reduire{500,0})]</div>
+</div>
+<div class="champ contenu_apres[ (#APRES*|strlen|?{'',vide})]">
+       <div class='label'><:formidable:editer_apres_label:></div>
+       <div dir='#LANG_DIR' class='#EDIT{apres} apres'>[(#VAL{formidable:editer_apres_choix_}|concat{#APRES}|_T)]</div>
+</div>
+<div class="champ contenu_url_redirect[ (#URL_REDIRECT*|strlen|?{'',vide})]">
+       <div class='label'><:formidable:editer_redirige_url:></div>
+       <div dir='#LANG_DIR' class='#EDIT{url_redirect} url_redirect'>#URL_REDIRECT</div>
+</div>
+
+</BOUCLE_formulaire>
diff --git a/www/plugins/formidable/prive/objets/contenu/formulaires_reponse.html b/www/plugins/formidable/prive/objets/contenu/formulaires_reponse.html
new file mode 100644 (file)
index 0000000..30bccf4
--- /dev/null
@@ -0,0 +1,27 @@
+<BOUCLE_formulaires_reponse(FORMULAIRES_REPONSES){tout}{id_formulaires_reponse}>
+<div class="champ contenu_auteur[ (#ID_AUTEUR*|strlen|?{'',vide})]">
+       <div class='label'><:auteur:></div>
+       <div dir='#LANG_DIR'>
+               [(#ID_AUTEUR|>{0}|oui)
+                       <a href="[(#INFO_URL{auteur,#ID_AUTEUR})]">[(#INFO_TITRE{auteur,#ID_AUTEUR})]</a>
+               ]
+               [(#ID_AUTEUR|>{0}|non)
+                       <:formidable:reponses_anonyme:>
+               ]
+       </div>
+</div>
+<div class="champ contenu_formulaire[ (#ID_FORMULAIRE*|strlen|?{'',vide})]">
+       <div class='label'><:formulaire:titre_formulaire:></div>
+       <div dir='#LANG_DIR'>
+               <a href="[(#URL_ECRIRE{formulaire,id_formulaire=#ID_FORMULAIRE})]">
+                       [(#INFO_TITRE{formulaire,#ID_FORMULAIRE})]
+               </a>
+       </div>
+</div>
+<div class="champ contenu_date[ (#DATE*|strlen|?{'',vide})]">
+       <div class='label'><:date:></div>
+       <div dir='#LANG_DIR'>
+               [(#DATE|affdate_jourcourt|concat{#DATE|affdate{", H:i"}})]
+       </div>
+</div>
+</BOUCLE_formulaires_reponse>
diff --git a/www/plugins/formidable/prive/objets/infos/formulaire.html b/www/plugins/formidable/prive/objets/infos/formulaire.html
new file mode 100644 (file)
index 0000000..474ce7b
--- /dev/null
@@ -0,0 +1,8 @@
+<BOUCLE_formulaire(FORMULAIRES){id_formulaire=#ENV{id}}{statut?}>
+<div class='infos'>
+<div class='numero'><:formidable:voir_numero:><p>#ID_FORMULAIRE</p></div>
+
+[(#FORMULAIRE_INSTITUER_OBJET{formulaire,#ID_FORMULAIRE})]
+
+</div>
+</BOUCLE_formulaire>
\ No newline at end of file
diff --git a/www/plugins/formidable/prive/objets/infos/formulaires_reponse.html b/www/plugins/formidable/prive/objets/infos/formulaires_reponse.html
new file mode 100644 (file)
index 0000000..e085931
--- /dev/null
@@ -0,0 +1,8 @@
+<BOUCLE_formulaires_reponse(FORMULAIRES_REPONSES){id_formulaires_reponse=#ENV{id}}{statut?}>
+<div class='infos'>
+<div class='numero'><:formidable:reponse_numero:><p>#ID_FORMULAIRES_REPONSE</p></div>
+
+[(#FORMULAIRE_INSTITUER_OBJET{formulaires_reponse,#ID_FORMULAIRES_REPONSE})]
+
+</div>
+</BOUCLE_formulaires_reponse>
\ No newline at end of file
diff --git a/www/plugins/formidable/prive/objets/liste/formulaires.html b/www/plugins/formidable/prive/objets/liste/formulaires.html
new file mode 100644 (file)
index 0000000..19456e9
--- /dev/null
@@ -0,0 +1,39 @@
+[(#SET{defaut_tri,#ARRAY{
+       date,-1,
+       titre,1,
+       id_formulaire,-1
+}})
+]<B_formulaires>
+#ANCRE_PAGINATION
+<div class="liste-objets formulaires">
+<table class="spip liste">
+[<caption><strong class="caption">(#ENV*{titre,#GRAND_TOTAL|singulier_ou_pluriel{formidable:info_1_formulaire,formidable:info_nb_formulaires}})</strong></caption>]
+       <thead>
+               <tr class="first_row">
+                       <th class="statut" scope='col'></th>
+                       <th class="titre" scope='col'>[(#TRI{titre,<:formidable:editer_titre:>,ajax})]</th>
+                       <th class="identifiant" scope='col'>[(#TRI{identifiant,<:formidable:editer_identifiant:>,ajax})]</th>
+                       <th class="reponses" scope='col'>[(#TRI{compteur_formulaires_reponses,<:formidable:titre_reponses:>,ajax})]</th>
+                       <th class="id_formulaire id" scope='col'>[(#TRI{id_formulaire,<:info_numero_abbreviation:>,ajax})]</th>
+               </tr>
+       </thead>
+       <tbody>
+       <BOUCLE_formulaires(FORMULAIRES){id_formulaire?}{statut?}{compteur_left formulaires_reponses}{tri #ENV{par,compteur_formulaires_reponses},#GET{defaut_tri}}{recherche?}{pagination #ENV{nb,10}}>
+               <tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})][ (#EXPOSE|unique)]">
+                       <td class="statut">[(#STATUT|puce_statut{formulaire,#ID_FORMULAIRE})]</td>
+                       <td class="titre"><a href="[(#ID_FORMULAIRE|generer_url_entite{formulaire})]">#TITRE</a></td>
+                       <td class="identifiant">#IDENTIFIANT</td>
+                       <td class="reponses">[<a href="#URL_ECRIRE{formulaires_reponses,id_formulaire=#ID_FORMULAIRE}">(#COMPTEUR{formulaires_reponses}|?{#COMPTEUR{formulaires_reponses},''})</a>]</td>
+                       <td class="id_formulaire id">[(#AUTORISER{modifier,formulaire,#ID_FORMULAIRE}|?{
+                                                       <a href="[(#URL_ECRIRE{formulaire_edit,id_formulaire=#ID_FORMULAIRE})]">#ID_FORMULAIRE</a>,
+                                                       #ID_FORMULAIRE
+                                               })]</td>
+               </tr>
+       </BOUCLE_formulaires>
+       </tbody>
+</table>
+[<p class="pagination">(#PAGINATION{prive})</p>]
+</div>
+</B_formulaires>[
+<div class="liste-objets formulaires"><strong class="caption">(#ENV*{sinon,''})</strong></div>
+]<//B_formulaires>
diff --git a/www/plugins/formidable/prive/objets/liste/formulaires_reponses.html b/www/plugins/formidable/prive/objets/liste/formulaires_reponses.html
new file mode 100644 (file)
index 0000000..cba23de
--- /dev/null
@@ -0,0 +1,44 @@
+[(#SET{defaut_tri,#ARRAY{
+       date,-1,
+       titre,1,
+       id_formulaires_reponse,1
+}})
+]<B_reponses>
+#ANCRE_PAGINATION
+<div class="liste-objets formulaires_reponses">
+<table class="liste spip">
+[<caption><strong class="caption">(#ENV*{titre,#GRAND_TOTAL|singulier_ou_pluriel{formidable:info_1_reponse,formidable:info_nb_reponses}})</strong></caption>]
+       <thead>
+               <tr class="first_row">
+                       <th class="statut" scope='col'>[(#TRI{statut,<span>#</span>,ajax})]</th>
+                       <th class="date" scope='col'>[(#TRI{date,<:date:>,ajax})]</th>
+                       <th class="resume" scope='col'></th>
+                       <th class="auteur" scope='col'>[(#TRI{id_auteur,<:formidable:reponses_auteur:>,ajax})]</th>
+                       <th class="id" scope='col'>[(#TRI{id_formulaires_reponse,<:info_numero_abbreviation:>,ajax})]</th>
+               </tr>
+       </thead>
+       <tbody>
+       <BOUCLE_reponses(FORMULAIRES_REPONSES){id_formulaire?}{id_formulaires_reponse?}{id_auteur?}{statut?}{recherche?}{tri #ENV{par,date},#GET{defaut_tri}}{pagination #ENV{nb,10}}>
+               <tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]">
+                       <td class="statut">[(#ID_FORMULAIRES_REPONSE|puce_changement_statut{#STATUT, #ID_FORMULAIRE, formulaires_reponse})]</td>
+                       <td class="date">[(#DATE|affdate_jourcourt|concat{#DATE|affdate{", H:i"}})]</td>
+                       <td class="resume">[(#ID_FORMULAIRES_REPONSE|affiche_resume_reponse{#ID_FORMULAIRE}|sinon{[<a href="(#URL_ECRIRE{formulaires_reponse,id_formulaires_reponse=#ID_FORMULAIRES_REPONSE})"><:formidable:reponses_voir_detail:></a>]})]</td>
+                       <td class="auteur">
+                               <BOUCLE_auteur(AUTEURS){id_auteur}{tout}>
+                               <a href="[(#ID_AUTEUR|generer_url_entite{auteur})]">#NOM</a>
+                               </BOUCLE_auteur>
+                               [(#IP|match{\W}|?{#IP,#IP|couper{8}})]
+                               <//B_auteur>
+                       </td>
+                       <td class="id_formulaire id">
+                               <a href="[(#URL_ECRIRE{formulaires_reponse,id_formulaires_reponse=#ID_FORMULAIRES_REPONSE})]">#ID_FORMULAIRES_REPONSE</a>
+                       </td>
+               </tr>
+       </BOUCLE_reponses>
+       </tbody>
+</table>
+[<p class="pagination">(#PAGINATION{prive})</p>]
+</div>
+</B_reponses>[
+<div class="liste-objets formulaires_reponses"><strong class="caption">(#ENV*{sinon,''})</strong></div>
+]<//B_reponses>
diff --git a/www/plugins/formidable/prive/squelettes/contenu/configurer_formidable.html b/www/plugins/formidable/prive/squelettes/contenu/configurer_formidable.html
new file mode 100644 (file)
index 0000000..df8aa01
--- /dev/null
@@ -0,0 +1,7 @@
+[(#AUTORISER{configurer,_fsondage}|sinon_interdire_acces)]
+
+<h1 class="grostitre"><:formidable:cfg_titre_page_configurer_formidable:></h1>
+
+<div class="ajax">
+       #FORMULAIRE_CONFIGURER_FORMIDABLE_ANALYSE
+</div>
diff --git a/www/plugins/formidable/prive/squelettes/contenu/formulaire.html b/www/plugins/formidable/prive/squelettes/contenu/formulaire.html
new file mode 100644 (file)
index 0000000..34980af
--- /dev/null
@@ -0,0 +1,45 @@
+<BOUCLE_formulaire(FORMULAIRES){id_formulaire}{tout}>\r
+[(#BOITE_OUVRIR{\r
+       [(#AUTORISER{editer, formulaire, #ID_FORMULAIRE}|oui)\r
+               [(#URL_ECRIRE{formulaire_edit,id_formulaire=#ID_FORMULAIRE}\r
+                       |icone_verticale{<:formidable:editer_modifier_formulaire:>,formulaire,formulaire-editer-24,right})]\r
+       ]\r
+       [<h1>(#TITRE|sinon{<:info_sans_titre:>})[(#CHEMIN_IMAGE{formulaire-24.png}|balise_img{formulaire,cadre-icone})]</h1>]\r
+       [<strong class="soustitre">(#IDENTIFIANT)</strong>]\r
+,simple fiche_objet})]\r
+\r
+\r
+       <!--affiche_milieu-->\r
+\r
+       <div id="wysiwyg">\r
+       <INCLURE{fond=prive/objets/contenu/formulaire,id=#ID_FORMULAIRE,id_formulaire=#ID_FORMULAIRE,virtuel=oui,ajax=wysiwyg,wysiwyg=1}>\r
+       </div>\r
+\r
+       #SET{traitements_disponibles, #VAL|traitements_lister_disponibles}\r
+       [(#BOITE_OUVRIR{#CHEMIN_IMAGE{formulaire-config-traitements-24.png}\r
+               |balise_img{'',cadre-icone}\r
+               |concat{<:formidable:traitements_actives:>},'simple traitements'})]\r
+       <B_traitements>\r
+               <ul class='spip'>\r
+                       <BOUCLE_traitements(POUR){tableau #TRAITEMENTS|unserialize|sinon{#ARRAY}}>\r
+                               <li>[(#GET{traitements_disponibles}|table_valeur{#CLE}|table_valeur{titre})]</li>\r
+                       </BOUCLE_traitements>\r
+               </ul>\r
+       </B_traitements>\r
+               <p><:formidable:aucun_traitement:></p>\r
+       <//B_traitements>\r
+       #BOITE_FERMER\r
+\r
+       #FORMULAIRE_FORMIDABLE{#ID_FORMULAIRE}\r
+\r
+       #PIPELINE{afficher_complement_objet,#ARRAY{args,#ARRAY{type,formulaire,id,#ID_FORMULAIRE},data,'<div class="nettoyeur"></div>'}}\r
+\r
+#BOITE_FERMER\r
+\r
+#SET{enfants,''}\r
+[(#VAL{formulaire}|concat{-enfants}|trouver_fond{prive/objets/contenu/}|oui)\r
+       [(#SET{enfants,[(#INCLURE{fond=prive/objets/contenu/formulaire-enfants,id_objet,env})]})]\r
+]\r
+[(#PIPELINE{affiche_enfants,[(#ARRAY{args,#ARRAY{objet,formulaire,id_objet,#ID_FORMULAIRE},data,#GET{enfants}})]})]\r
+\r
+</BOUCLE_formulaire>\r
diff --git a/www/plugins/formidable/prive/squelettes/contenu/formulaire_edit.html b/www/plugins/formidable/prive/squelettes/contenu/formulaire_edit.html
new file mode 100644 (file)
index 0000000..2594009
--- /dev/null
@@ -0,0 +1,41 @@
+#SET{objet,formulaire}
+#SET{id_objet,#VAL{id_formulaire}|_request|intval}
+<BOUCLE_autoriser(CONDITION){si #AUTORISER{editer, formulaire, #GET{id_objet}}}>
+#SET{redirect,#ENV{redirect}|sinon{#ENV{lier_trad,#GET{id_objet}}|?{#ENV{lier_trad,#GET{id_objet}}|generer_url_entite{#GET{objet}},#GET{id_rubrique}|?{#GET{id_rubrique}|generer_url_entite{rubrique},#URL_ECRIRE{rubriques}}}}}
+       
+<script type="text/javascript">/*<![CDATA[*/
+if (window.jQuery){
+function debloquer_prive(){ jQuery('input[required], textarea[required], select[required]').removeAttr('required'); }
+jQuery('document').ready(debloquer_prive);
+onAjaxLoad(debloquer_prive);
+}
+/*]]>*/</script>
+<div class='cadre-formulaire-editer'>
+<div class="entete-formulaire">
+       [(#GET{id_objet}|oui)
+       [(#GET{redirect}|icone_verticale{[(#GET{objet}|objet_info{texte_retour}|_T)],#GET{objet}|objet_info{icone_objet},'',left retour[(#ENV{retourajax,''}|oui)ajax preload]})]
+       ]
+       [
+               [(#GET{objet}|objet_info{#GET{id_objet}|?{texte_modifier,texte_creer}}|_T)]
+               <h1>(#ENV{titre,#INFO_TITRE{#GET{objet},#GET{id_objet}}|sinon{#ENV{nouveau}|=={oui}|?{<:formidable:editer_nouveau:>,#VAL{id_menu}|_request}}})</h1>
+       ]
+</div>
+       #SET{configurer,formulaire}
+       <BOUCLE_formulaire(FORMULAIRES){id_formulaire=#GET{id_objet}}{tout}>
+               #SET{configurer,#ENV{configurer}|in_array{#LISTE{formulaire,champs,traitements,auteurs}}|?{#ENV{configurer},champs}}
+       </BOUCLE_formulaire>
+       
+       [(#GET{configurer}|=={formulaire}|oui)
+               #FORMULAIRE_EDITER_FORMULAIRE{#GET{id_objet}, #VAL{nouveau}|_request|sinon{''}}
+       ]
+       [(#GET{configurer}|=={auteurs}|oui)
+               #FORMULAIRE_EDITER_LIENS{formulaires,#GET{id_objet},auteurs}
+       ]
+       [(#GET{configurer}|=={champs}|oui)
+               #FORMULAIRE_EDITER_FORMULAIRE_CHAMPS{#ENV{id_formulaire}}
+       ]
+       [(#GET{configurer}|=={traitements}|oui)
+               #FORMULAIRE_EDITER_FORMULAIRE_TRAITEMENTS{#ENV{id_formulaire}}
+       ]
+</div>
+</BOUCLE_autoriser>
diff --git a/www/plugins/formidable/prive/squelettes/contenu/formulaires.html b/www/plugins/formidable/prive/squelettes/contenu/formulaires.html
new file mode 100644 (file)
index 0000000..8381bc1
--- /dev/null
@@ -0,0 +1,14 @@
+#FORMULAIRE_RECHERCHE_ECRIRE{#SELF,ajax}
+<h1 class="grostitre"><:formidable:bouton_formulaires:></h1>
+
+<INCLURE{fond=prive/objets/liste/formulaires,nb=#ENV{nb,25},statut=#LISTE{prop,publie},env,ajax,sinon=<:formidable:formulaires_aucun:>} />
+
+[(#AUTORISER{editer, formulaire}|oui)
+[(#URL_ECRIRE{formulaire_edit}
+       |parametre_url{nouveau,oui}
+       |icone_verticale{<:formulaire:icone_creer_formulaire:>,formulaire,formulaire-nouveau-48,right})]
+]
+
+[<div class="nettoyeur"></div>
+<h3><:formidable:titre_formulaires_archives:></h3>
+(#INCLURE{fond=prive/objets/liste/formulaires,nb=#ENV{nb,10},statut=refuse,par=id_formulaire,env,ajax})]
\ No newline at end of file
diff --git a/www/plugins/formidable/prive/squelettes/contenu/formulaires_analyse.html b/www/plugins/formidable/prive/squelettes/contenu/formulaires_analyse.html
new file mode 100644 (file)
index 0000000..f9536dc
--- /dev/null
@@ -0,0 +1,24 @@
+<BOUCLE_formulaire(FORMULAIRES){id_formulaire}{tout}>
+<BOUCLE_autoriser(CONDITION){si #AUTORISER{voir, formulaires_reponse, #ID_FORMULAIRE}}>
+[(#BOITE_OUVRIR{'','simple'})]
+        [(#URL_ECRIRE{formulaire}|parametre_url{id_formulaire,#ID_FORMULAIRE}|icone_verticale{<:retour:>,formulaire,formulaire-24,left})]
+
+       [<h4><:formidable:reponses_analyse:></h4>
+       <h1>(#TITRE|sinon{<:info_sans_titre:>})</h1>]
+
+       [(#BOITE_OUVRIR{'','simple'})]  
+       <BOUCLE_reponses(FORMULAIRES_REPONSES){id_formulaire}>
+       </BOUCLE_reponses>
+       <strong>[(#_reponses:TOTAL_BOUCLE
+               |singulier_ou_pluriel{formidable:analyse_une_reponse_total,formidable:analyse_nb_reponses_total})]</strong>
+       </B_reponses>
+       <strong><:formidable:analyse_zero_reponse_total:></strong>
+       <//B_reponses>
+       #BOITE_FERMER
+#BOITE_FERMER
+
+[(#BOITE_OUVRIR{'','simple'})]
+#INCLURE{fond=modeles/formulaire_analyse,id_formulaire}
+#BOITE_FERMER
+</BOUCLE_autoriser>
+</BOUCLE_formulaire>
diff --git a/www/plugins/formidable/prive/squelettes/contenu/formulaires_reponse.html b/www/plugins/formidable/prive/squelettes/contenu/formulaires_reponse.html
new file mode 100644 (file)
index 0000000..04575fc
--- /dev/null
@@ -0,0 +1,33 @@
+<BOUCLE_formulaires_reponse(FORMULAIRES_REPONSES){tout}{id_formulaires_reponse}>
+<BOUCLE_autoriser(CONDITION){si #AUTORISER{voir, formulaires_reponse, #ID_FORMULAIRE}}>
+[(#BOITE_OUVRIR{
+       <h1><:formulaires_reponse:formulaires_reponse_numero{nb=#ID_FORMULAIRES_REPONSE}:></h1>
+,simple fiche_objet})]
+
+
+<!--affiche_milieu-->
+
+<div id="wysiwyg">
+<INCLURE{fond=prive/objets/contenu/formulaires_reponse,
+       id=#ID_FORMULAIRES_REPONSE,
+       id_formulaires_reponse=#ID_FORMULAIRES_REPONSE,
+       virtuel=oui,ajax=wysiwyg,wysiwyg=1} />
+</div>
+
+<div class='nettoyeur'></div>
+[(#BOITE_OUVRIR{<h3><:formulaires_reponse:reponses_donnees:></h3>,reponses})]
+#INCLURE{fond=modeles/formulaires_reponse,id_formulaires_reponse}
+#BOITE_FERMER
+
+#PIPELINE{afficher_complement_objet,#ARRAY{args,#ARRAY{type,formulaires_reponse,id,#ID_FORMULAIRES_REPONSE},data,'<div class="nettoyeur"></div>'}}
+
+#BOITE_FERMER
+
+#SET{enfants,''}
+[(#VAL{formulaires_reponse}|concat{-enfants}|trouver_fond{prive/objets/contenu/}|oui)
+       [(#SET{enfants,[(#INCLURE{fond=prive/objets/contenu/formulaires_reponse-enfants,id_objet,env})]})]
+]
+[(#PIPELINE{affiche_enfants,[(#ARRAY{args,#ARRAY{objet,formulaires_reponse,id_objet,#ID_FORMULAIRES_REPONSE},data,#GET{enfants}})]})]
+
+</BOUCLE_autoriser>
+</BOUCLE_formulaires_reponse>
diff --git a/www/plugins/formidable/prive/squelettes/contenu/formulaires_reponses.html b/www/plugins/formidable/prive/squelettes/contenu/formulaires_reponses.html
new file mode 100644 (file)
index 0000000..67c886c
--- /dev/null
@@ -0,0 +1,15 @@
+<BOUCLE_formulaire(FORMULAIRES){id_formulaire}{tout}>
+<BOUCLE_autoriser(CONDITION){si #AUTORISER{voir, formulaires_reponse, #ID_FORMULAIRE}}>
+[(#BOITE_OUVRIR{'','simple'})]
+       [(#URL_ECRIRE{formulaire}|parametre_url{id_formulaire,#ID_FORMULAIRE}|icone_verticale{<:retour:>,formulaire,formulaire-24,left})]
+       
+       <h4><:formidable:voir_reponses:></h4>
+       <h1>#TITRE</h1>
+#BOITE_FERMER
+
+#FORMULAIRE_RECHERCHE_ECRIRE{#SELF,ajax}
+<h2><:formidable:reponses_liste:></h2>
+<INCLURE{fond=prive/squelettes/inclure/formulaires_reponses-filtres,env,ajax} />
+
+</BOUCLE_autoriser>
+</BOUCLE_formulaire>
diff --git a/www/plugins/formidable/prive/squelettes/extra/formulaire.html b/www/plugins/formidable/prive/squelettes/extra/formulaire.html
new file mode 100644 (file)
index 0000000..0b375c6
--- /dev/null
@@ -0,0 +1,24 @@
+<BOUCLE_formulaire(FORMULAIRES){id_formulaire}{tout}>
+<!--#extra-->
+[(#BOITE_OUVRIR{<:formidable:titre_cadre_raccourcis:>,'raccourcis'})]
+       [(#AUTORISER{editer, formulaire}|oui)
+       [(#URL_ACTION_AUTEUR{dupliquer_formulaire, #ID_FORMULAIRE}|icone_horizontale{<:formidable:formulaires_dupliquer:>,formulaire-dupliquer-24})]
+       ]
+       <BOUCLE_exports(POUR){tableau #VAL|echanges_formulaire_lister_disponibles|table_valeur{exporter}}>
+       [(#URL_ACTION_AUTEUR{exporter_formulaire,#ID_FORMULAIRE-#CLE}|icone_horizontale{[<:formidable:voir_exporter:> ((#CLE))],formulaire-exporter-24})]
+       </BOUCLE_exports>
+#BOITE_FERMER
+
+
+<B_liens>
+[(#BOITE_OUVRIR{<:formidable:info_formulaire_utilise_par:>,'simple formidable_liens'})]
+<ul class="liste-items">
+<BOUCLE_liens(formulaires_liens){id_formulaire}>[
+       <li class="item"><a href="[(#ID_OBJET|generer_url_entite{#OBJET})]">[(#CHEMIN_IMAGE{[(#OBJET|objet_info{icone_objet})-16]}|balise_img{[(#OBJET|objet_info{texte_objet}|_T)],'icone-objet'})](#INFO_TITRE{#OBJET,#ID_OBJET})</a></li>
+]</BOUCLE_liens>
+</ul>
+#BOITE_FERMER
+</B_liens>
+
+<!--/#extra-->
+</BOUCLE_formulaire>
diff --git a/www/plugins/formidable/prive/squelettes/extra/formulaire_edit.html b/www/plugins/formidable/prive/squelettes/extra/formulaire_edit.html
new file mode 100644 (file)
index 0000000..ac6dc57
--- /dev/null
@@ -0,0 +1,11 @@
+<BOUCLE_formulaire(FORMULAIRES) {id_formulaire}{tout}>
+#SET{configurer,#ENV{configurer}|in_array{#LISTE{formulaire,champs,traitements,auteurs}}|?{#ENV{configurer},champs}}
+
+<!--#extra-->
+[(#GET{configurer}|in_array{#LISTE{formulaire,traitements,champs}}|oui)
+#BOITE_OUVRIR{'','info'}
+       #INCLURE{fond=modeles/formulaire_aide_memoire, id_formulaire=#ID_FORMULAIRE}
+#BOITE_FERMER
+]
+<!--/#extra-->
+</BOUCLE_formulaire>
diff --git a/www/plugins/formidable/prive/squelettes/extra/formulaires_analyse.html b/www/plugins/formidable/prive/squelettes/extra/formulaires_analyse.html
new file mode 100755 (executable)
index 0000000..6c2c020
--- /dev/null
@@ -0,0 +1,8 @@
+<BOUCLE_formulaire(FORMULAIRES){id_formulaire}{tout}>
+<BOUCLE_autoriser(CONDITION){si #AUTORISER{voir, formulaires_analyse}}>
+[(#BOITE_OUVRIR{<:formidable:titre_cadre_raccourcis:>,'info'})]
+[(#URL_ACTION_AUTEUR{exporter_analyse_reponses,#ID_FORMULAIRE}
+    |icone_horizontale{<:formidable:analyse_exporter:>,formulaire-analyse-24})]
+#BOITE_FERMER
+</BOUCLE_autoriser>
+</BOUCLE_formulaire>
diff --git a/www/plugins/formidable/prive/squelettes/extra/formulaires_reponses.html b/www/plugins/formidable/prive/squelettes/extra/formulaires_reponses.html
new file mode 100644 (file)
index 0000000..b0719a3
--- /dev/null
@@ -0,0 +1,16 @@
+<BOUCLE_formulaire(FORMULAIRES){id_formulaire}{tout}>
+[(#SET{ouvre_boite,[(#AUTORISER{voir, formulaires_reponse, #ID_FORMULAIRE}|ou{#AUTORISER{modifier, formulaires_reponse, #ID_FORMULAIRE}})]})]
+[(#GET{ouvre_boite}|oui)[(#BOITE_OUVRIR{<:formidable:titre_cadre_raccourcis:>,'info'})]]
+
+<BOUCLE_autoriser_1(CONDITION){si #AUTORISER{voir, formulaires_reponse}}>
+[(#URL_ACTION_AUTEUR{exporter_formulaires_reponses,#ID_FORMULAIRE}
+       |icone_horizontale{<:formidable:reponses_exporter:>,formulaire,formulaire-reponses-exporter-24,center})]
+</BOUCLE_autoriser_1>
+
+<BOUCLE_autoriser_2(CONDITION){si #AUTORISER{editer, formulaires,#ID_FORMULAIRE}}>
+[(#URL_ACTION_AUTEUR{vider_formulaire,#ID_FORMULAIRE}
+       |icone_horizontale{<:formidable:reponses_supprimer:>,formulaire,formulaire-reponses-supprimer-24,'',onclick="return confirm('<:formidable:reponses_supprimer_confirmation:>');"})]
+</BOUCLE_autoriser_2>
+
+[(#GET{ouvre_boite}|oui)#BOITE_FERMER]
+</BOUCLE_formulaire>
diff --git a/www/plugins/formidable/prive/squelettes/hierarchie/formulaire.html b/www/plugins/formidable/prive/squelettes/hierarchie/formulaire.html
new file mode 100644 (file)
index 0000000..a89f8d8
--- /dev/null
@@ -0,0 +1,3 @@
+<!-- hierarchie -->
+<a href="#URL_ECRIRE{formulaires}"><:formulaire:titre_formulaires:></a> &gt;
+<strong class="on">[(#INFO_TITRE{formulaire,#ID_FORMULAIRE}|sinon{<:formidable:editer_nouveau:>})]</strong>
diff --git a/www/plugins/formidable/prive/squelettes/hierarchie/formulaire_edit.html b/www/plugins/formidable/prive/squelettes/hierarchie/formulaire_edit.html
new file mode 100644 (file)
index 0000000..a89f8d8
--- /dev/null
@@ -0,0 +1,3 @@
+<!-- hierarchie -->
+<a href="#URL_ECRIRE{formulaires}"><:formulaire:titre_formulaires:></a> &gt;
+<strong class="on">[(#INFO_TITRE{formulaire,#ID_FORMULAIRE}|sinon{<:formidable:editer_nouveau:>})]</strong>
diff --git a/www/plugins/formidable/prive/squelettes/hierarchie/formulaires.html b/www/plugins/formidable/prive/squelettes/hierarchie/formulaires.html
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/www/plugins/formidable/prive/squelettes/hierarchie/formulaires_analyse.html b/www/plugins/formidable/prive/squelettes/hierarchie/formulaires_analyse.html
new file mode 100644 (file)
index 0000000..506697d
--- /dev/null
@@ -0,0 +1,7 @@
+<BOUCLE_formulaire(FORMULAIRES){id_formulaire}{statut?}>
+<BOUCLE_autoriser(CONDITION){si #AUTORISER{voir, formulaires_reponse,#ID_FORMULAIRE}}>
+<a href="#URL_ECRIRE{formulaires}"><:formulaire:titre_formulaires:></a> &gt;
+<a href="[(#URL_ECRIRE{formulaire}|parametre_url{id_formulaire,#ID_FORMULAIRE})]">#TITRE</a> &gt;
+<strong class="on"><:formidable:reponses_analyse:></strong>
+</BOUCLE_autoriser>
+</BOUCLE_formulaire>
diff --git a/www/plugins/formidable/prive/squelettes/hierarchie/formulaires_reponse.html b/www/plugins/formidable/prive/squelettes/hierarchie/formulaires_reponse.html
new file mode 100644 (file)
index 0000000..391c4aa
--- /dev/null
@@ -0,0 +1,6 @@
+<BOUCLE_formulaire(FORMULAIRES_REPONSES){id_formulaires_reponse}{statut?}>
+<a href="#URL_ECRIRE{formulaires}"><:formulaire:titre_formulaires:></a> &gt;
+<a href="[(#URL_ECRIRE{formulaire}|parametre_url{id_formulaire,#ID_FORMULAIRE})]">#INFO_TITRE{formulaire,#ID_FORMULAIRE}</a> &gt;
+<a class="on" href="[(#URL_ECRIRE{formulaires_reponses}|parametre_url{id_formulaire,#ID_FORMULAIRE})]"><:formidable:voir_reponses:></a> &gt;
+<strong class="on"><:formulaires_reponse:titre_formulaires_reponse:></strong>
+</BOUCLE_formulaire>
diff --git a/www/plugins/formidable/prive/squelettes/hierarchie/formulaires_reponses.html b/www/plugins/formidable/prive/squelettes/hierarchie/formulaires_reponses.html
new file mode 100644 (file)
index 0000000..f6c093e
--- /dev/null
@@ -0,0 +1,5 @@
+<BOUCLE_formulaire(FORMULAIRES){id_formulaire}{statut?}>
+<a href="#URL_ECRIRE{formulaires}"><:formulaire:titre_formulaires:></a> &gt;
+<a href="[(#URL_ECRIRE{formulaire}|parametre_url{id_formulaire,#ID_FORMULAIRE})]">#INFO_TITRE{formulaire,#ID_FORMULAIRE}</a> &gt;
+<strong class="on"><:formidable:voir_reponses:></strong>
+</BOUCLE_formulaire>
diff --git a/www/plugins/formidable/prive/squelettes/inclure/formulaires_lies.html b/www/plugins/formidable/prive/squelettes/inclure/formulaires_lies.html
new file mode 100644 (file)
index 0000000..d153a66
--- /dev/null
@@ -0,0 +1,9 @@
+<B_liens>
+[(#BOITE_OUVRIR{[(#TOTAL_BOUCLE|singulier_ou_pluriel{formidable:info_utilise_1_formulaire,formidable:info_utilise_nb_formulaires})],'simple formidable_liens'})]
+<ul class="liste-items">
+<BOUCLE_liens(formulaires_liens){id_objet}{objet}>[
+       <li class="item"><a href="[(#ID_FORMULAIRE|generer_url_entite{formulaire})]">[(#CHEMIN_IMAGE{[(#VAL{formulaire}|objet_info{icone_objet})-16]}|balise_img{[(#VAL{formulaire}|objet_info{texte_objet}|_T)],'icone-objet'})](#INFO_TITRE{formulaire,#ID_FORMULAIRE})</a></li>
+]</BOUCLE_liens>
+</ul>
+#BOITE_FERMER
+</B_liens>
\ No newline at end of file
diff --git a/www/plugins/formidable/prive/squelettes/inclure/formulaires_reponses-filtres.html b/www/plugins/formidable/prive/squelettes/inclure/formulaires_reponses-filtres.html
new file mode 100644 (file)
index 0000000..d6f327c
--- /dev/null
@@ -0,0 +1,9 @@
+<div class='onglets_simple clearfix'>
+       <ul>
+               <li>[(#SELF|parametre_url{statut|id_formulaires_reponse,'XXX'}|replace{XXX,''}|lien_ou_expose{<:formidable:info_reponse_toutes:>,[(#ENV{statut}|non|et{#ENV{id_formulaires_reponse,''}|non})],ajax})]</li>
+               <li>[(#SELF|parametre_url{statut,'prop'}|lien_ou_expose{<:formidable:info_reponse_proposees:>,#ENV{statut}|=={prop},ajax})]</li>
+               <li>[(#SELF|parametre_url{statut,'publie'}|lien_ou_expose{<:formidable:info_reponse_publiees:>,#ENV{statut}|=={publie},ajax})]</li>
+               <li>[(#SELF|parametre_url{statut,'refuse'}|lien_ou_expose{<:formidable:info_reponse_supprimees:>,#ENV{statut}|=={refuse},ajax})]</li>
+       </ul>
+</div>
+<INCLURE{fond=prive/objets/liste/formulaires_reponses, env, ajax, nb=#ENV{nb,30}, sinon=<:formidable:info_aucune_reponse:>} />
\ No newline at end of file
diff --git a/www/plugins/formidable/prive/squelettes/navigation/formulaire.html b/www/plugins/formidable/prive/squelettes/navigation/formulaire.html
new file mode 100644 (file)
index 0000000..c30ccdd
--- /dev/null
@@ -0,0 +1,49 @@
+<BOUCLE_formulaire(FORMULAIRES){id_formulaire}{tout}>
+#BOITE_OUVRIR{'','info'}
+#PIPELINE{boite_infos,#ARRAY{data,'',args,#ARRAY{'type','formulaire','id',#ENV{id_formulaire}}}}
+
+[(#AUTORISER{editer, formulaire, #ID_FORMULAIRE}|oui)
+
+[(#URL_ECRIRE{formulaire_edit}
+       |parametre_url{id_formulaire, #ID_FORMULAIRE}
+       |parametre_url{configurer,formulaire}
+       |parametre_url{avertissement,''}
+       |icone_horizontale{<:formidable:editer_menu_formulaire:>,formulaire-editer-24})]
+
+[(#CONFIG{formidable/analyse/auteur}|=={on}|oui)[(#URL_ECRIRE{formulaire_edit}
+       |parametre_url{id_formulaire, #ID_FORMULAIRE}
+       |parametre_url{configurer,auteurs}
+       |parametre_url{avertissement,''}
+       |icone_horizontale{<:formidable:editer_menu_auteurs:>,formulaire-config-auteurs-24})]
+]
+
+[(#URL_ECRIRE{formulaire_edit}
+       |parametre_url{id_formulaire, #ID_FORMULAIRE}
+       |parametre_url{configurer,champs}
+       |parametre_url{avertissement,''}
+       |icone_horizontale{<:formidable:editer_menu_champs:>,formulaire-config-champs-24})]
+
+[(#URL_ECRIRE{formulaire_edit}
+       |parametre_url{id_formulaire, #ID_FORMULAIRE}
+       |parametre_url{configurer,traitements}
+       |parametre_url{avertissement,''}
+       |icone_horizontale{<:formidable:editer_menu_traitements:>,formulaire-config-traitements-24})]
+
+]
+
+<BOUCLE_resultats(FORMULAIRES_REPONSES){id_formulaire} {statut!=poubelle} />
+[(#TOTAL_BOUCLE|oui)
+       [(#AUTORISER{voir,formulaires_reponse,#ID_FORMULAIRE}|oui)
+       <div class='navigation_resultats'>
+       [(#URL_ECRIRE{formulaires_reponses}
+               |parametre_url{id_formulaire, #ID_FORMULAIRE}
+               |icone_horizontale{#TOTAL_BOUCLE|singulier_ou_pluriel{formidable:info_1_reponse,formidable:info_nb_reponses},formulaire-reponses-24})]
+       [(#URL_ECRIRE{formulaires_analyse}
+               |parametre_url{id_formulaire, #ID_FORMULAIRE}
+               |icone_horizontale{<:formidable:reponses_analyse:>,formulaire-analyse-24})]
+       </div>]
+]
+<//B_resultats>
+
+#BOITE_FERMER
+</BOUCLE_formulaire>
diff --git a/www/plugins/formidable/prive/squelettes/navigation/formulaire_edit.html b/www/plugins/formidable/prive/squelettes/navigation/formulaire_edit.html
new file mode 100644 (file)
index 0000000..de4ee77
--- /dev/null
@@ -0,0 +1,28 @@
+<BOUCLE_formulaire(FORMULAIRES){id_formulaire}{tout}>
+#BOITE_OUVRIR{'','info'}
+#PIPELINE{boite_infos,#ARRAY{data,'',args,#ARRAY{'type','formulaire','id',#ENV{id_formulaire}}}}
+
+[(#SELF
+       |parametre_url{configurer,formulaire}
+       |parametre_url{avertissement,''}
+       |icone_horizontale{<:formidable:editer_menu_formulaire:>,formulaire-editer-24})]
+
+[(#CONFIG{formidable/analyse/auteur}|=={on}|oui)[(#SELF
+       |parametre_url{configurer,auteurs}
+       |parametre_url{avertissement,''}
+       |icone_horizontale{<:formidable:editer_menu_auteurs:>,formulaire-config-auteurs-24})]
+]
+
+[(#SELF
+       |parametre_url{configurer,champs}
+       |parametre_url{avertissement,''}
+       |icone_horizontale{<:formidable:editer_menu_champs:>,formulaire-config-champs-24})]
+
+[(#SELF
+       |parametre_url{configurer,traitements}
+       |parametre_url{avertissement,''}
+       |icone_horizontale{<:formidable:editer_menu_traitements:>,formulaire-config-traitements-24})]
+
+#BOITE_FERMER
+
+</BOUCLE_formulaire>
diff --git a/www/plugins/formidable/prive/squelettes/navigation/formulaires.html b/www/plugins/formidable/prive/squelettes/navigation/formulaires.html
new file mode 100644 (file)
index 0000000..890cfd3
--- /dev/null
@@ -0,0 +1,6 @@
+#BOITE_OUVRIR{'',info}
+<:formidable:formulaires_introduction:>
+#BOITE_FERMER
+[(#AUTORISER{editer, formulaire}|oui)
+       #FORMULAIRE_IMPORTER_FORMULAIRE
+]
diff --git a/www/plugins/formidable/prive/squelettes/navigation/formulaires_analyse.html b/www/plugins/formidable/prive/squelettes/navigation/formulaires_analyse.html
new file mode 100644 (file)
index 0000000..900ae76
--- /dev/null
@@ -0,0 +1,12 @@
+<BOUCLE_formulaire(FORMULAIRES){id_formulaire}{tout}>
+<BOUCLE_autoriser(CONDITION){si #AUTORISER{voir, formulaires_reponse, #ENV{id_formulaire}}}>
+#BOITE_OUVRIR{'','info'}
+#PIPELINE{boite_infos,#ARRAY{data,'',args,#ARRAY{'type','formulaire','id',#ENV{id_formulaire}}}}
+
+[(#URL_ECRIRE{formulaires_reponses}|parametre_url{id_formulaire,#ID_FORMULAIRE}|icone_horizontale{<:formidable:reponses_liste:>,formulaire-reponses-24})]
+
+[(#SELF|icone_horizontale{<:formidable:reponses_analyse:>,formulaire-analyse-24})]
+
+#BOITE_FERMER
+</BOUCLE_autoriser>
+</BOUCLE_formulaire>
diff --git a/www/plugins/formidable/prive/squelettes/navigation/formulaires_reponse.html b/www/plugins/formidable/prive/squelettes/navigation/formulaires_reponse.html
new file mode 100644 (file)
index 0000000..e75a0d6
--- /dev/null
@@ -0,0 +1,15 @@
+<BOUCLE_formulaires_reponse(FORMULAIRES_REPONSES){tout}{id_formulaires_reponse}>
+<BOUCLE_autoriser(CONDITION){si #AUTORISER{voir, formulaires_reponse, #ID_FORMULAIRE}}>
+[(#BOITE_OUVRIR{'','info'})]
+
+       [(#PIPELINE{boite_infos,#ARRAY{data,'',
+               args,#ARRAY{'type','formulaires_reponse','id',#ENV{id_formulaires_reponse}}}})]
+
+       [(#URL_ECRIRE{formulaires_analyse}
+               |parametre_url{id_formulaire,#ID_FORMULAIRE}
+               |icone_horizontale{<:formidable:reponses_analyse:>,formulaire-analyse-24})]
+
+#BOITE_FERMER
+
+</BOUCLE_autoriser>
+</BOUCLE_formulaires_reponse>
diff --git a/www/plugins/formidable/prive/squelettes/navigation/formulaires_reponses.html b/www/plugins/formidable/prive/squelettes/navigation/formulaires_reponses.html
new file mode 100644 (file)
index 0000000..366fd37
--- /dev/null
@@ -0,0 +1,12 @@
+<BOUCLE_formulaire(FORMULAIRES){id_formulaire}{tout}>
+<BOUCLE_autoriser(CONDITION){si #AUTORISER{voir, formulaires_reponse, #ID_FORMULAIRE}}>
+#BOITE_OUVRIR{'','info'}
+#PIPELINE{boite_infos,#ARRAY{data,'',args,#ARRAY{'type','formulaire','id',#ENV{id_formulaire}}}}
+
+[(#SELF|icone_horizontale{<:formidable:reponses_liste:>,formulaire,formulaire-reponses-24,left})]
+
+[(#URL_ECRIRE{formulaires_analyse}|parametre_url{id_formulaire,#ID_FORMULAIRE}|icone_horizontale{<:formidable:reponses_analyse:>,formulaire-analyse-24})]
+
+#BOITE_FERMER
+</BOUCLE_autoriser>
+</BOUCLE_formulaire>
diff --git a/www/plugins/formidable/prive/style_prive_plugin_formidable.html b/www/plugins/formidable/prive/style_prive_plugin_formidable.html
new file mode 100644 (file)
index 0000000..cc4e9a4
--- /dev/null
@@ -0,0 +1,46 @@
+[(#REM)<style>]
+#SET{claire,#ENV{couleur_claire,edf3fe}}
+#SET{foncee,#ENV{couleur_foncee,3874b0}}
+
+body .formidable_analyse .progress-bar span {
+       background-color: ##GET{claire};
+         background-image: -webkit-gradient(linear, left top, left bottom, from(##GET{claire}), to(##GET{foncee}));
+         background-image: -webkit-linear-gradient(top, ##GET{claire}, ##GET{foncee});
+         background-image: -moz-linear-gradient(top, ##GET{claire}, ##GET{foncee});
+         background-image: -ms-linear-gradient(top, ##GET{claire}, ##GET{foncee});
+         background-image: -o-linear-gradient(top, ##GET{claire}, ##GET{foncee});
+         background-image: linear-gradient(top, ##GET{claire}, ##GET{foncee}); 
+}
+
+#navigation .navigation_resultats {
+       margin-top:1em;
+       padding-top:1em;
+       border-top:1px solid #eee;
+}
+
+#contenu .box.traitements ul.spip {margin-bottom:0;}
+
+#contenu .liste-objets.formulaires_reponses tr > .date {width:auto;}
+#contenu .liste-objets.formulaires_reponses tr > .auteur {width:auto;}
+
+.formulaire #wysiwyg .contenu_message_retour .label { display: block;}
+.formulaire #wysiwyg .contenu_apres .label { display: inline;}
+.formulaire #wysiwyg .contenu_url_redirect .label { display: inline;}
+.formulaire #wysiwyg .contenu_apres .apres { display: inline;}
+.formulaire #wysiwyg .contenu_url_redirect .url_redirect { display: inline;}
+
+.formulaire_edit .formulaire_editer_formulaire_champs .editer.saisies_disponibles {border-top:1px solid #ccc;padding-top:15px;margin-top: 15px;}
+.formulaire_edit .formulaire_editer_formulaire_champs .submit.revert {float: left;color: #8A1F11;opacity: 0.9;}
+
+.formulaires_reponse #contenu #wysiwyg {margin-top:1em;}
+.formulaires_reponse #contenu #wysiwyg .label {
+       width:140px; float:left; display:block;
+}
+.formulaires_reponse #contenu .fiche_objet .reponses .inner { border:none; }
+.formulaires_reponse #contenu .fiche_objet .reponses .hd {
+    padding-bottom: 3px; margin-bottom:10px; border-bottom:1px solid #ccc;
+}
+
+.formidable_liens .liste-items {margin: 0}
+.formidable_liens .liste-items .item {padding:2px 0;}
+.formidable_liens .liste-items .icone-objet {float:#ENV{left};margin-#ENV{right}:5px;}
\ No newline at end of file
diff --git a/www/plugins/formidable/prive/themes/basic/images/formulaire-16.png b/www/plugins/formidable/prive/themes/basic/images/formulaire-16.png
new file mode 100644 (file)
index 0000000..8ca21ea
Binary files /dev/null and b/www/plugins/formidable/prive/themes/basic/images/formulaire-16.png differ
diff --git a/www/plugins/formidable/prive/themes/spip/images/formulaire-16.png b/www/plugins/formidable/prive/themes/spip/images/formulaire-16.png
new file mode 100644 (file)
index 0000000..8ca21ea
Binary files /dev/null and b/www/plugins/formidable/prive/themes/spip/images/formulaire-16.png differ
diff --git a/www/plugins/formidable/prive/themes/spip/images/formulaire-24.png b/www/plugins/formidable/prive/themes/spip/images/formulaire-24.png
new file mode 100644 (file)
index 0000000..ff847d0
Binary files /dev/null and b/www/plugins/formidable/prive/themes/spip/images/formulaire-24.png differ
diff --git a/www/plugins/formidable/prive/themes/spip/images/formulaires_reponse-24.png b/www/plugins/formidable/prive/themes/spip/images/formulaires_reponse-24.png
new file mode 100644 (file)
index 0000000..ec0a2b0
Binary files /dev/null and b/www/plugins/formidable/prive/themes/spip/images/formulaires_reponse-24.png differ
diff --git a/www/plugins/formidable/public/formidable_criteres.php b/www/plugins/formidable/public/formidable_criteres.php
new file mode 100644 (file)
index 0000000..38d7d96
--- /dev/null
@@ -0,0 +1,64 @@
+<?php
+
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+       // {tri_donnee champ}
+/**
+ * Depuis la boucle FORMULAIRES_REPONSES, trier les résulats en fonction d'un champ
+ * de la table FORMULAIRES_REPONSES_CHAMPS
+ * {tri_selon_donnee} 
+ *
+ * @global array $exceptions_des_tables
+ * @param string $idb
+ * @param array $boucles
+ * @param <type> $crit
+ * 
+ * Auteurs :
+ * Antoine Pitrou
+ * Cedric Morin
+ * Renato
+ * @ 2005,2006 - Distribue sous licence GNU/GPL
+ */
+
+function critere_tri_selon_donnee_dist($idb, &$boucles, $crit) { // Garder cette fontion pour compatibilité
+       critere_tri_selon_reponse_dist($idb, $boucles, $crit) ;
+}
+function critere_tri_selon_reponse_dist($idb, &$boucles, $crit) {
+
+       $boucle = &$boucles[$idb];
+       $t = $boucle->id_table;
+       
+       if ($t=='formulaires_reponses'){
+               $not = $crit->not;
+               $_quoi = calculer_liste($crit->param[0], array(), $boucles, $boucles[$idb]->id_parent);
+               $k = count($boucle->join)+1;
+               $boucle->join[$k]= array($t,'id_formulaires_reponse');
+               $boucle->from["L$k"]= 'spip_formulaires_reponses_champs';
+               $op = array("'='", "'L$k.nom'", "sql_quote(".$_quoi.")");
+               $boucle->where[]= array("'?'","!in_array($_quoi,array('date','id_formulaires_reponse'))",$op,"''");
+               $boucle->order[]= "(in_array($_quoi,array('date','id_formulaires_reponse'))?'$t.'.$_quoi:(strncmp($_quoi,'date_',5)==0?'STR_TO_DATE(L$k.valeur,\'%d/%m/%Y\')':'L$k.valeur'))".($not?".' DESC'":"");
+       }
+}
+
+// {recherche_donnee} ou {recherche_donnee susan}
+// Intégralement pompé et adapté de Forms&Tables
+function critere_recherche_reponse_dist($idb, &$boucles, $crit) {
+       global $table_des_tables;
+       $boucle = &$boucles[$idb];
+       $t = $boucle->id_table;
+       if ($t=='formulaires_reponses'){
+               if (isset($crit->param[0]))
+                       $_quoi = calculer_liste($crit->param[0], array(), $boucles, $boucles[$idb]->id_parent);
+               else
+                       $_quoi = '@$Pile[0]["recherche"]';
+
+               $k = count($boucle->join)+1;
+               $boucle->join[$k]= array($t,'id_formulaires_reponse');
+               $boucle->from["L$k"]= 'spip_formulaires_reponses_champs';
+               $op = array("'LIKE'","'L$k.valeur'","sql_quote(strpos($_quoi,'%')===false?'%'.".$_quoi.".'%':$_quoi)");
+               $boucle->where[]= array("'?'",$_quoi,$op,"''");
+       }
+}
+
+
+?>
diff --git a/www/plugins/formidable/puce_statut/formulaires_reponse.php b/www/plugins/formidable/puce_statut/formulaires_reponse.php
new file mode 100644 (file)
index 0000000..0efc6f9
--- /dev/null
@@ -0,0 +1,92 @@
+<?php
+
+/**
+ * Gestion des puces d'action rapide de formulaires
+ *
+ * @package SPIP\Formidable\Puce_statut
+**/
+
+/**
+ * Gestion des puces statuts des formulaires
+ * 
+ * Retourne le contenu d'une puce avec changement de statut possible
+ * si on en a l'autorisation, sinon simplement l'image de la puce
+ *
+ * @param int $id
+ *     Identifiant de l'objet
+ * @param string $statut
+ *     Statut actuel de l'objet
+ * @param int $id_parent
+ *     Identifiant du parent, un formulaire
+ * @param string $type
+ *     Type d'objet
+ * @param bool $ajax
+ *     Indique s'il ne faut renvoyer que le coeur du menu car on est
+ *     dans une requete ajax suite à un post de changement rapide
+ * @param bool $menu_rapide
+ *     Indique si l'on peut changer le statut, ou si on l'affiche simplement
+ * @return string
+ *     Code HTML de l'image de puce de statut à insérer (et du menu de changement si présent)
+**/
+function puce_statut_formulaires_reponse_dist($id, $statut, $id_parent, $type='article', $ajax = false, $menu_rapide=_ACTIVER_PUCE_RAPIDE) {
+
+       $src = statut_image($type, $statut);
+       if (!$src)
+               return $src;
+
+       if (!$id
+         OR !_SPIP_AJAX
+         OR !$menu_rapide
+         OR !autoriser('instituer', $type, $id)) {
+         $ajax_node ='';
+       }
+       else
+               $ajax_node = " class='imgstatut$type$id'";
+
+       $inser_puce = http_img_pack($src,statut_titre($type, $statut),$ajax_node);
+
+       if (!$ajax_node)
+               return $inser_puce;
+
+       $table = table_objet_sql($type);
+       $desc = lister_tables_objets_sql($table);
+       if (!isset($desc['statut_textes_instituer']))
+               return $inser_puce;
+
+       $coord = array_flip(array_keys($desc['statut_textes_instituer']));
+       if (!isset($coord[$statut]))
+               return $inser_puce;
+
+       $unit = 8/*widh de img*/+4/*padding*/;
+       $margin = 4; /* marge a gauche + droite */
+       $zero = 1 /*border*/ + $margin/2 + 2 /*padding*/;
+       $clip = $zero+ ($unit*$coord[$statut]);
+       if ($ajax){
+
+               $width = $unit*count($desc['statut_textes_instituer'])+$margin;
+               $out = "<span class='puce_objet_fixe $type'>"
+               . $inser_puce
+               . "</span>"
+               . "<span class='puce_objet_popup $type statutdecal$type$id' style='width:{$width}px;margin-left:-{$clip}px;'>";
+               $i=0;
+               foreach($desc['statut_textes_instituer'] as $s=>$t){
+                       $out .= afficher_script_statut($id, $type, -$zero-$i++*$unit, statut_image($type,$s), $s, _T($t));
+               }
+               $out .= "</span>";
+               return $out;
+       }
+       else {
+
+               $nom = "puce_statut_";
+         $action = generer_url_ecrire('puce_statut_formulaires',"",true);
+         $action = "if (!this.puce_loaded) { this.puce_loaded = true; prepare_selec_statut(this, '$nom', '$type', '$id', '$action'); }";
+         $over = " onmouseover=\"$action\"";
+
+               $lang_dir = lang_dir(isset($GLOBALS['lang_objet']) ? $GLOBALS['lang_objet'] : "");
+               return  "<span class='puce_objet $type' id='$nom$type$id' dir='$lang_dir'$over>"
+               . $inser_puce
+               . '</span>';
+       }
+}
+
+
diff --git a/www/plugins/formidable/saisies-analyses/_base.html b/www/plugins/formidable/saisies-analyses/_base.html
new file mode 100644 (file)
index 0000000..7c9a8ab
--- /dev/null
@@ -0,0 +1,32 @@
+<div class="cadre cadre-liste analyser analyser_#ENV{nom} saisie_#ENV{type_saisie}">
+<table class="liste" cellspacing="0" cellpadding="2" border="0" style="width:100%;" data-nombre="#ENV{reponses_total}">
+[<caption class="titrem"><strong class="caption">(#ENV{label_case,#ENV{label,#ENV{nom}}})</strong></caption>]
+       <tbody>
+       [(#CHEMIN{saisies-analyses/#ENV{type_saisie}.html}|oui)
+               #INCLURE{fond=saisies-analyses/#ENV{type_saisie},env}
+       ]
+       [(#CHEMIN{saisies-analyses/#ENV{type_saisie}.html}|non)
+               #SET{plein,#ENV{valeurs}|array_filter}
+               #SET{vide,#ENV{valeurs}|array_diff_key{#GET{plein}}}
+               [(#GET{plein}|count|>{0}|oui)
+                       #SET{moyenne,#VAL{str_word_count}|array_map{#GET{plein}}|array_sum|div{#GET{plein}|count}}
+               ]
+               [(#GET{plein}|count|>{0}|non)
+                       #SET{moyenne,0}
+               ]
+               <tr class="tr_liste row_odd vide">
+                       <td class="choix"><:formidable:analyse_sans_reponse:></td>
+                       <td class="stat"[ title="(#GET{vide}|count|titre_nb_reponses|attribut_html)"]>[(#GET{vide}|count)]</td>
+               </tr>
+               <tr class="tr_liste row_even plein">
+                       <td class="choix"><:formidable:analyse_avec_reponse:></td>
+                       <td class="stat"[ title="(#GET{plein}|count|titre_nb_reponses|attribut_html)"]>[(#GET{plein}|count)]</td>
+               </tr>
+               <tr class="tr_liste row_odd moyenne">
+                       <td class="choix"><:formidable:analyse_longueur_moyenne:></td>
+                       <td class="stat ignore">#GET{moyenne}</td>
+               </tr>
+       ]
+       </tbody>
+</table>
+</div>
diff --git a/www/plugins/formidable/saisies-analyses/case.html b/www/plugins/formidable/saisies-analyses/case.html
new file mode 100644 (file)
index 0000000..51a9faf
--- /dev/null
@@ -0,0 +1,27 @@
+#SET{oui,0}
+#SET{non,0}
+<BOUCLE_reponses(POUR){tableau #ENV{valeurs}}>
+       [(#VALEUR|oui)
+               #SET{oui,#GET{oui}|plus{1}}
+       ]
+       [(#VALEUR|non)
+               #SET{non,#GET{non}|plus{1}}
+       ]
+</BOUCLE_reponses>
+
+<tr class="tr_liste">
+       <td class="choix"><:item_oui:></td>
+       <td class="stat"[ title="(#GET{oui}|titre_nb_reponses|attribut_html)"]>#GET{oui}</td>
+</tr>
+<tr class="tr_liste">
+       <td class="choix"><:item_non:></td>
+       <td class="stat"[ title="(#GET{non}|titre_nb_reponses|attribut_html)"]>#GET{non}</td>
+</tr>
+
+#SET{diff, #ENV{reponses_total}|moins{#ENV{valeurs}|count}}
+[(#GET{diff}|>{0}|oui)
+<tr class="tr_liste">
+       <td class="choix"><:saisies:vue_sans_reponse:></td>
+       <td class="stat"[ title="(#GET{diff}|titre_nb_reponses|attribut_html)"]>#GET{diff}</td>
+</tr>
+]
diff --git a/www/plugins/formidable/saisies-analyses/checkbox.html b/www/plugins/formidable/saisies-analyses/checkbox.html
new file mode 100644 (file)
index 0000000..ad682ae
--- /dev/null
@@ -0,0 +1,26 @@
+#SET{stats,#ARRAY}
+<BOUCLE_reponses(POUR){tableau #ENV{valeurs}}>
+       <BOUCLE_choix(POUR){tableau #VALEUR}>
+       #SET_MERGE{stats, #ARRAY{choix-#VALEUR, #GET{stats}|table_valeur{choix-#VALEUR}|sinon{0}|plus{1}}}
+       </BOUCLE_choix>
+</BOUCLE_reponses>
+
+[(#REM) datas peut être une chaine qu'on sait décomposer ]
+#SET{datas, #ENV*{datas}}
+#SET{datas, #GET{datas}|is_string|?{(#GET{datas}|saisies_chaine2tableau), #GET{datas}}}
+
+<BOUCLE_datas(POUR){tableau #GET{datas}}>
+[(#SET{nb,[(#GET{stats}|table_valeur{choix-#CLE}|sinon{0})]})]
+<tr class="tr_liste">
+       <td class="choix">#VALEUR</td>
+       <td class="stat"[ title="(#GET{nb}|titre_nb_reponses|attribut_html)"]>#GET{nb}</td>
+</tr>
+</BOUCLE_datas>
+
+#SET{diff, #ENV{reponses_total}|moins{#ENV{valeurs}|count}}
+[(#GET{diff}|>{0}|oui)
+<tr class="tr_liste">
+       <td class="choix"><:saisies:vue_sans_reponse:></td>
+       <td class="stat"[ title="(#GET{diff}|titre_nb_reponses|attribut_html)"]>#GET{diff}</td>
+</tr>
+]
diff --git a/www/plugins/formidable/saisies-analyses/destinataires.html b/www/plugins/formidable/saisies-analyses/destinataires.html
new file mode 100644 (file)
index 0000000..9692d03
--- /dev/null
@@ -0,0 +1,14 @@
+#SET{stats,#ARRAY}
+<BOUCLE_reponses(POUR){tableau #ENV{valeurs}}>
+       <BOUCLE_choix(POUR){tableau #VALEUR}>
+       #SET_MERGE{stats, #ARRAY{auteur-#VALEUR, #GET{stats}|table_valeur{auteur-#VALEUR}|sinon{0}|plus{1}}}
+       </BOUCLE_choix>
+</BOUCLE_reponses>
+
+<BOUCLE_stats(POUR){tableau #GET{stats}}>
+#SET{id_auteur, #CLE|replace{'auteur-', ''}}
+<tr class="tr_liste">
+       <td class="choix"><a href="#INFO_URL{auteur, #GET{id_auteur}}">#INFO_TITRE{auteur, #GET{id_auteur}}</a></td>
+       <td class="stat"[ title="(#VALEUR|titre_nb_reponses|attribut_html)"]>#VALEUR</td>
+</tr>
+</BOUCLE_stats>
diff --git a/www/plugins/formidable/saisies-analyses/explication.html b/www/plugins/formidable/saisies-analyses/explication.html
new file mode 100644 (file)
index 0000000..b97cd65
--- /dev/null
@@ -0,0 +1,4 @@
+<tr class="tr_liste">
+       <td class='choix' colspan='2'>[<div class='explication'>(#ENV{texte}|propre)</div>]</td>
+</tr>
+
diff --git a/www/plugins/formidable/saisies-analyses/oui_non.html b/www/plugins/formidable/saisies-analyses/oui_non.html
new file mode 100644 (file)
index 0000000..51a9faf
--- /dev/null
@@ -0,0 +1,27 @@
+#SET{oui,0}
+#SET{non,0}
+<BOUCLE_reponses(POUR){tableau #ENV{valeurs}}>
+       [(#VALEUR|oui)
+               #SET{oui,#GET{oui}|plus{1}}
+       ]
+       [(#VALEUR|non)
+               #SET{non,#GET{non}|plus{1}}
+       ]
+</BOUCLE_reponses>
+
+<tr class="tr_liste">
+       <td class="choix"><:item_oui:></td>
+       <td class="stat"[ title="(#GET{oui}|titre_nb_reponses|attribut_html)"]>#GET{oui}</td>
+</tr>
+<tr class="tr_liste">
+       <td class="choix"><:item_non:></td>
+       <td class="stat"[ title="(#GET{non}|titre_nb_reponses|attribut_html)"]>#GET{non}</td>
+</tr>
+
+#SET{diff, #ENV{reponses_total}|moins{#ENV{valeurs}|count}}
+[(#GET{diff}|>{0}|oui)
+<tr class="tr_liste">
+       <td class="choix"><:saisies:vue_sans_reponse:></td>
+       <td class="stat"[ title="(#GET{diff}|titre_nb_reponses|attribut_html)"]>#GET{diff}</td>
+</tr>
+]
diff --git a/www/plugins/formidable/saisies-analyses/radio.html b/www/plugins/formidable/saisies-analyses/radio.html
new file mode 100644 (file)
index 0000000..88627d0
--- /dev/null
@@ -0,0 +1,26 @@
+#SET{stats,#ARRAY}
+<BOUCLE_reponses(POUR){tableau #ENV{valeurs}}>
+       [(#VALEUR|oui)
+               #SET_MERGE{stats, #ARRAY{choix-#VALEUR, #GET{stats}|table_valeur{choix-#VALEUR}|sinon{0}|plus{1}}}
+       ]
+</BOUCLE_reponses>
+
+[(#REM) datas peut être une chaine qu'on sait décomposer ]
+#SET{datas, #ENV*{datas}}
+#SET{datas, #GET{datas}|is_string|?{(#GET{datas}|saisies_chaine2tableau), #GET{datas}}}
+
+<BOUCLE_datas(POUR){tableau #GET{datas}}>
+[(#SET{nb,[(#GET{stats}|table_valeur{choix-#CLE}|sinon{0})]})]
+<tr class="tr_liste">
+       <td class="choix">#VALEUR</td>
+       <td class="stat"[ title="(#GET{nb}|titre_nb_reponses|attribut_html)"]>#GET{nb}</td>
+</tr>
+</BOUCLE_datas>
+
+#SET{diff, #ENV{reponses_total}|moins{#ENV{valeurs}|count}}
+[(#GET{diff}|>{0}|oui)
+<tr class="tr_liste">
+       <td class="choix"><:saisies:vue_sans_reponse:></td>
+       <td class="stat"[ title="(#GET{diff}|titre_nb_reponses|attribut_html)"]>#GET{diff}</td>
+</tr>
+]
diff --git a/www/plugins/formidable/saisies-analyses/selecteur_article.html b/www/plugins/formidable/saisies-analyses/selecteur_article.html
new file mode 100644 (file)
index 0000000..35f08b4
--- /dev/null
@@ -0,0 +1,13 @@
+[(#REM) Attention, saisie multiple non testee ]\r
+\r
+#SET{plein,#ENV{valeurs}|array_filter}\r
+#SET{vide,#ENV{valeurs}|array_diff_key{#GET{plein}}}\r
+\r
+<tr class="tr_liste row_odd vide">\r
+   <td class="choix"><:formidable:analyse_sans_reponse:></td>\r
+   <td class="stat">[(#GET{vide}|count)]</td>\r
+</tr>\r
+<tr class="tr_liste row_even plein">\r
+   <td class="choix"><:formidable:analyse_avec_reponse:></td>\r
+   <td class="stat">[(#GET{plein}|count)]</td>\r
+</tr>\r
diff --git a/www/plugins/formidable/saisies-analyses/selecteur_rubrique.html b/www/plugins/formidable/saisies-analyses/selecteur_rubrique.html
new file mode 100644 (file)
index 0000000..35f08b4
--- /dev/null
@@ -0,0 +1,13 @@
+[(#REM) Attention, saisie multiple non testee ]\r
+\r
+#SET{plein,#ENV{valeurs}|array_filter}\r
+#SET{vide,#ENV{valeurs}|array_diff_key{#GET{plein}}}\r
+\r
+<tr class="tr_liste row_odd vide">\r
+   <td class="choix"><:formidable:analyse_sans_reponse:></td>\r
+   <td class="stat">[(#GET{vide}|count)]</td>\r
+</tr>\r
+<tr class="tr_liste row_even plein">\r
+   <td class="choix"><:formidable:analyse_avec_reponse:></td>\r
+   <td class="stat">[(#GET{plein}|count)]</td>\r
+</tr>\r
diff --git a/www/plugins/formidable/saisies-analyses/selecteur_rubrique_article.html b/www/plugins/formidable/saisies-analyses/selecteur_rubrique_article.html
new file mode 100644 (file)
index 0000000..a8ef6ae
--- /dev/null
@@ -0,0 +1,14 @@
+[(#REM) Peut etre ameliore en comptant par exemple le nombre d'article / rubriques \r
+Attention, saisie multiple non testee ]\r
+\r
+#SET{plein,#ENV{valeurs}|array_filter}\r
+#SET{vide,#ENV{valeurs}|array_diff_key{#GET{plein}}}\r
+\r
+<tr class="tr_liste row_odd vide">\r
+   <td class="choix"><:formidable:analyse_sans_reponse:></td>\r
+   <td class="stat">[(#GET{vide}|count)]</td>\r
+</tr>\r
+<tr class="tr_liste row_even plein">\r
+   <td class="choix"><:formidable:analyse_avec_reponse:></td>\r
+   <td class="stat">[(#GET{plein}|count)]</td>\r
+</tr>\r
diff --git a/www/plugins/formidable/saisies-analyses/selection.html b/www/plugins/formidable/saisies-analyses/selection.html
new file mode 100644 (file)
index 0000000..c1b175d
--- /dev/null
@@ -0,0 +1,25 @@
+#SET{stats,#ARRAY}
+<BOUCLE_reponses(POUR){tableau #ENV{valeurs}}>
+       [(#VALEUR|oui)
+               #SET_MERGE{stats, #ARRAY{choix-#VALEUR, #GET{stats}|table_valeur{choix-#VALEUR}|sinon{0}|plus{1}}}
+       ]
+</BOUCLE_reponses>
+
+[(#REM) datas peut être une chaine qu'on sait décomposer ]
+#SET{datas, #ENV{datas}}
+#SET{datas, #GET{datas}|is_string|?{(#GET{datas}|saisies_aplatir_chaine|saisies_chaine2tableau), #GET{datas}}}
+
+<BOUCLE_datas(POUR){tableau #GET{datas}}>
+<tr class="tr_liste">
+       <td class="choix">#VALEUR</td>
+       <td class="stat">[(#GET{stats}|table_valeur{choix-#CLE}|sinon{0})]</td>
+</tr>
+</BOUCLE_datas>
+
+#SET{diff, #ENV{valeurs}|count|moins{#GET{stats}|array_sum}}
+[(#GET{diff}|>{0}|oui)
+<tr class="tr_liste">
+       <td class="choix"><:saisies:vue_sans_reponse:></td>
+       <td class="stat">#GET{diff}</td>
+</tr>
+]
diff --git a/www/plugins/formidable/saisies-analyses/selection_multiple.html b/www/plugins/formidable/saisies-analyses/selection_multiple.html
new file mode 100644 (file)
index 0000000..0f1212a
--- /dev/null
@@ -0,0 +1,25 @@
+#SET{stats,#ARRAY}
+<BOUCLE_reponses(POUR){tableau #ENV{valeurs}}>
+       <BOUCLE_choix(POUR){tableau #VALEUR}>
+       #SET_MERGE{stats, #ARRAY{choix-#VALEUR, #GET{stats}|table_valeur{choix-#VALEUR}|sinon{0}|plus{1}}}
+       </BOUCLE_choix>
+</BOUCLE_reponses>
+
+[(#REM) datas peut être une chaine qu'on sait décomposer ]
+#SET{datas, #ENV{datas}}
+#SET{datas, #GET{datas}|is_string|?{(#GET{datas}|saisies_chaine2tableau), #GET{datas}}}
+
+<BOUCLE_datas(POUR){tableau #GET{datas}}>
+<tr class="tr_liste">
+       <td class="choix">#VALEUR</td>
+       <td class="stat">[(#GET{stats}|table_valeur{choix-#CLE}|sinon{0})]</td>
+</tr>
+</BOUCLE_datas>
+
+#SET{diff, #ENV{reponses_total}|moins{#ENV{valeurs}|count}}
+[(#GET{diff}|>{0}|oui)
+<tr class="tr_liste">
+       <td class="choix"><:saisies:vue_sans_reponse:></td>
+       <td class="stat">#GET{diff}</td>
+</tr>
+]
diff --git a/www/plugins/formidable/saisies-vues/formulaire_formidable.html b/www/plugins/formidable/saisies-vues/formulaire_formidable.html
new file mode 100644 (file)
index 0000000..a9692f8
--- /dev/null
@@ -0,0 +1,5 @@
+<BOUCLE_formulaire(FORMULAIRES){identifiant=#ENV{valeur}}>
+<p>[(#TITRE|typo)] (#IDENTIFIANT)</p>
+</BOUCLE_formulaire>
+<p><:saisies:vue_sans_reponse:></p>
+<//B_formulaire>
\ No newline at end of file
diff --git a/www/plugins/formidable/saisies-vues/formulaire_formidable_multiple.html b/www/plugins/formidable/saisies-vues/formulaire_formidable_multiple.html
new file mode 100644 (file)
index 0000000..9b75a57
--- /dev/null
@@ -0,0 +1,9 @@
+<B_formulaire>
+<ul>
+       <BOUCLE_formulaire(FORMULAIRES){identifiant IN #ENV**{valeur}}>
+       <li class="choix">[(#TITRE|typo)] (#IDENTIFIANT)</li>
+       </BOUCLE_formulaire>
+</ul>
+</B_formulaire>
+<p><:saisies:vue_sans_reponse:></p>
+<//B_formulaire>
\ No newline at end of file
diff --git a/www/plugins/formidable/saisies/champ.html b/www/plugins/formidable/saisies/champ.html
new file mode 100644 (file)
index 0000000..d2ad8d8
--- /dev/null
@@ -0,0 +1,28 @@
+
+<select name="#ENV{nom}" id="champ_#ENV{nom}">
+       <option value=""><:formidable:traitements_champ_aucun:></option>
+       [(#ENV{forcer_type}|non)
+               #SET{tab,#ENV{formulaire}}
+       ]
+       [(#ENV{forcer_type}|oui)
+               [(#SET{tab,[(#ENV{formulaire}|saisies_lister_par_nom{0})]})]
+       ]
+       #SET{padding,0}
+       <BOUCLE_parcours(POUR){tableau #GET{tab}}>
+               #SET{saisie,#VALEUR}
+               <BOUCLE_test_enfants(CONDITION){si #GET{saisie}|table_valeur{saisies}|is_array}>
+               <optgroup style="padding-left:#GET{padding}px" label="[(#GET{saisie}|table_valeur{options}|table_valeur{label}|sinon{#GET{saisie}|table_valeur{options}|table_valeur{nom}})]">
+                               #SET{tab,#GET{saisie}|table_valeur{saisies}}
+                               #SET{padding,#GET{padding}|plus{20}}
+                               <BOUCLE_parcours_recursif(BOUCLE_parcours)/>
+                               #SET{padding,#GET{padding}|moins{20}}
+               </optgroup>
+               </BOUCLE_test_enfants>
+                       <BOUCLE_test_type(CONDITION){si #ENV{forcer_type}|non|ou{#GET{saisie}|table_valeur{saisie}|in_array{#ENV{forcer_type}}}}>
+                       <option value="[(#GET{saisie}|table_valeur{options}|table_valeur{nom})]" style="padding-left:#GET{padding}px" [(#ENV{valeur,#ENV{saisie_a_positionner}}|=={#GET{saisie}|table_valeur{options}|table_valeur{nom}}|oui)selected="selected"]>
+                               [(#GET{saisie}|table_valeur{options}|table_valeur{label}|sinon{#GET{saisie}|table_valeur{options}|table_valeur{nom}})]
+                       </option>
+                       </BOUCLE_test_type>
+               <//B_test_enfants>
+       </BOUCLE_parcours>
+</select>
diff --git a/www/plugins/formidable/saisies/formulaire_formidable.html b/www/plugins/formidable/saisies/formulaire_formidable.html
new file mode 100644 (file)
index 0000000..e8d8bb4
--- /dev/null
@@ -0,0 +1,22 @@
+[(#REM) 
+  Saisie permettant de sélectionner un formulaire par son identifiant
+  
+  ### /!\ boucle POUR (spip Bonux) ###
+       
+  Parametres :
+  - option_intro : chaine de langue de la premiere ligne vide ? (defaut:"")
+  - cacher_option_intro : pas de premier option vide  (defaut:"")
+  - class : classe(s) css ajoutes au select
+  
+  Exemple d'appel :
+       [(#SAISIE{formulaire_formidable,nom,
+               label=<:plugin:label:>,
+       })] 
+]
+
+<select name="#ENV{nom}" id="champ_#ENV{nom}"[ class="(#ENV{class})"][ disabled="(#ENV{disable})"][ readonly="(#ENV{readonly})"]>
+[(#ENV{cacher_option_intro}|non)<option value="">[(#ENV{option_intro})]</option>]
+<BOUCLE_selection(FORMULAIRES){par titre}>
+       <option value="#IDENTIFIANT" [(#IDENTIFIANT|=={#ENV{valeur,#ENV{defaut}}}|oui) selected="selected"]>[(#TITRE|typo)] (#IDENTIFIANT)</option>
+</BOUCLE_selection>
+</select>
diff --git a/www/plugins/formidable/saisies/formulaire_formidable_multiple.html b/www/plugins/formidable/saisies/formulaire_formidable_multiple.html
new file mode 100644 (file)
index 0000000..b8ef7aa
--- /dev/null
@@ -0,0 +1,26 @@
+[(#REM) 
+  Saisie permettant de sélectionner plusieurs formulaires par leur identifiant
+  
+  ### /!\ boucle POUR (spip Bonux) ###
+       
+  Parametres :
+  - option_intro : chaine de langue de la premiere ligne vide ? (defaut:"")
+  - cacher_option_intro : pas de premier option vide  (defaut:"")
+  - class : classe(s) css ajoutes au select
+  
+  Exemple d'appel :
+       [(#SAISIE{formulaire_formidable_multiple,nom,
+               label=<:plugin:label:>,
+       })] 
+]
+
+[(#REM) defaut peut être une chaine (plusieurs valeurs ou pas) qu'on sait décomposer ]
+#SET{defaut, #ENV{defaut}}
+#SET{defaut, #GET{defaut}|is_string|?{(#GET{defaut}|saisies_chaine2tableau), (#GET{defaut}|sinon{#ARRAY})}}
+
+<select name="#ENV{nom}[]" id="champ_#ENV{nom}" multiple="multiple"[ class="(#ENV{class})"][ disabled="(#ENV{disable})"][ readonly="(#ENV{readonly})"]>
+[(#ENV{cacher_option_intro}|non)<option value="">[(#ENV{option_intro})]</option>]
+<BOUCLE_selection(FORMULAIRES){par titre}>
+       <option value="#IDENTIFIANT" [(#IDENTIFIANT|in_array{#ENV{valeur,#GET{defaut}}}|oui) selected="selected"]>[(#TITRE|typo)] (#IDENTIFIANT)</option>
+</BOUCLE_selection>
+</select>
diff --git a/www/plugins/formidable/svn.revision b/www/plugins/formidable/svn.revision
new file mode 100644 (file)
index 0000000..a8c5c23
--- /dev/null
@@ -0,0 +1,10 @@
+<svn_revision>
+<text_version>
+Origine: file:///home/svn/repository/spip-zone/_plugins_/formidable/trunk
+Revision: 84748
+Dernier commit: 2014-09-18 21:39:20 +0200 
+</text_version>
+<origine>file:///home/svn/repository/spip-zone/_plugins_/formidable/trunk</origine>
+<revision>84748</revision>
+<commit>2014-09-18 21:39:20 +0200 </commit>
+</svn_revision>
\ No newline at end of file
diff --git a/www/plugins/formidable/todo.txt b/www/plugins/formidable/todo.txt
new file mode 100644 (file)
index 0000000..4092e6d
--- /dev/null
@@ -0,0 +1,18 @@
+
+À faire :
+---------
++ Ajouter des liens "réponse précédente/suivante" dans la visualisation d'une réponse
++ Afficher une boite listant les formulaires disponibles dans l'édition d'un article
++ Utiliser le plugin CVT multi-pages de Cédric
++ Afficher des pages suivant des conditions (scénarios)
++ Pouvoir attacher des fichiers (et donc les envoyer par mail et les enregistrer en base comme document)
++ Déplacer les saisies en drag-n-drop
++ Ajouter une saisie directement au bon endroit en drag-n-drop
++ Améliorer le texte brut généré à partir du HTML
+
+Idées :
+-------
++ Permettre des messages différents lors de la réédition d'un formulaire (avant et après modification)
++ Permettre de prévisualiser avant soumission le formulaire
++ Premettre d'afficher un formulaire en fonction du statut du visiteur
++ Avoir lors de l'édition des champs du formulaire un bouton «Enregistrer et continuer d'éditer»
diff --git a/www/plugins/formidable/traiter/email.php b/www/plugins/formidable/traiter/email.php
new file mode 100644 (file)
index 0000000..8096a97
--- /dev/null
@@ -0,0 +1,200 @@
+<?php
+
+// Sécurité
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+function traiter_email_dist($args, $retours){
+       $formulaire = $args['formulaire'];
+       $options = $args['options'];
+       $saisies = unserialize($formulaire['saisies']);
+       $traitements = unserialize($formulaire['traitements']);
+       $champs = saisies_lister_champs($saisies);
+       
+       // On récupère les destinataires
+       if ($options['champ_destinataires']){
+               $destinataires = _request($options['champ_destinataires']);
+               if (!is_array($destinataires) and intval($destinataires)){
+                       $destinataires = array($destinataires);
+               }
+               if (is_array($destinataires)){
+                       // On récupère les mails des destinataires
+                       $destinataires = array_map('intval', $destinataires);
+                       $destinataires = sql_allfetsel(
+                               'email',
+                               'spip_auteurs',
+                               sql_in('id_auteur', $destinataires)
+                       );
+                       $destinataires = array_map('reset', $destinataires);
+               }
+       }
+       if (!$destinataires)
+               $destinataires = array();
+       if ($options['champ_courriel_destinataire_form']) {
+               $courriel_champ_form = _request($options['champ_courriel_destinataire_form']);
+               $destinataires[] = $courriel_champ_form;
+       }
+       
+
+       // On ajoute les destinataires en plus
+       if ($options['destinataires_plus']){
+               $destinataires_plus = explode(',', $options['destinataires_plus']);
+               $destinataires_plus = array_map('trim', $destinataires_plus);
+               $destinataires = array_merge($destinataires, $destinataires_plus);
+               $destinataires = array_unique($destinataires);
+       }
+       
+       // On récupère le courriel de l'envoyeur s'il existe
+       if ($options['champ_courriel']){
+               $courriel_envoyeur = _request($options['champ_courriel']);
+       }
+       if (!$courriel_envoyeur) $courriel_envoyeur = '';
+       
+       // Si on a bien des destinataires, on peut continuer
+       if ($destinataires or ($courriel_envoyeur and $options['activer_accuse'])){
+               include_spip('inc/filtres');
+               include_spip('inc/texte');
+               
+               $nom_site_spip = supprimer_tags(typo($GLOBALS['meta']['nom_site']));
+               
+               // On parcourt les champs pour générer le tableau des valeurs
+               $valeurs = array();
+               foreach ($champs as $champ){
+                       $valeurs[$champ] = _request($champ);
+               }
+               
+               // On récupère le nom de l'envoyeur
+               if ($options['champ_nom']){
+                       $a_remplacer = array();
+                       if (preg_match_all('/@[\w]+@/', $options['champ_nom'], $a_remplacer)){
+                               $a_remplacer = $a_remplacer[0];
+                               foreach ($a_remplacer as $cle=>$val) $a_remplacer[$cle] = trim($val, '@');
+                               $a_remplacer = array_flip($a_remplacer);
+                               $a_remplacer = array_intersect_key($valeurs, $a_remplacer);
+                               $a_remplacer = array_merge($a_remplacer, array('nom_site_spip' => $nom_site_spip));
+                       }
+                       $nom_envoyeur = trim(_L($options['champ_nom'], $a_remplacer));
+               }
+               if (!$nom_envoyeur) $nom_envoyeur = $nom_site_spip;
+               
+               // On récupère le sujet s'il existe sinon on le construit
+               if ($options['champ_sujet']){
+                       $a_remplacer = array();
+                       if (preg_match_all('/@[\w]+@/', $options['champ_sujet'], $a_remplacer)){
+                               $a_remplacer = $a_remplacer[0];
+                               foreach ($a_remplacer as $cle=>$val) $a_remplacer[$cle] = trim($val, '@');
+                               $a_remplacer = array_flip($a_remplacer);
+                               $a_remplacer = array_intersect_key($valeurs, $a_remplacer);
+                               $a_remplacer = array_merge($a_remplacer, array('nom_site_spip' => $nom_site_spip));
+                       }
+                       $sujet = trim(_L($options['champ_sujet'], $a_remplacer));
+               }
+               if (!$sujet) $sujet = _T('formidable:traiter_email_sujet', array('nom'=>$nom_envoyeur));
+               $sujet = filtrer_entites($sujet);
+               
+               // Mais quel va donc être le fond ?
+               if (find_in_path('notifications/formulaire_'.$formulaire['identifiant'].'_email.html'))
+                       $notification = 'notifications/formulaire_'.$formulaire['identifiant'].'_email';
+               else
+                       $notification = 'notifications/formulaire_email';
+               
+               // On génère le mail avec le fond
+               $html = recuperer_fond(
+                       $notification,
+                       array(
+                               'id_formulaire' => $args['id_formulaire'],
+                               'titre' => _T_ou_typo($formulaire['titre']),
+                               'traitements' => $traitements,
+                               'saisies' => $saisies,
+                               'valeurs' => $valeurs
+                       )
+               );
+               
+               // On génère le texte brut
+               include_spip('facteur_fonctions');
+               $texte = facteur_mail_html2text($html);
+               
+               // On utilise la forme avancé de Facteur
+               $corps = array(
+                       'html' => $html,
+                       'texte' => $texte,
+                       'nom_envoyeur' => filtrer_entites($nom_envoyeur),
+               );
+               // Si l'utilisateur n'a pas indiqué autrement, on met le courriel de l'envoyeur dans
+               // Reply-To et on laisse le from par defaut de Facteur car sinon ca bloque sur les
+               // SMTP un peu restrictifs.
+               $courriel_from = "";
+               if ($courriel_envoyeur && $options['activer_vrai_envoyeur']){
+                       $courriel_from = $courriel_envoyeur;
+               } else if ($courriel_envoyeur) {
+                       $corps['repondre_a'] = $courriel_envoyeur;
+               }
+               
+               // On envoie enfin le message
+               $envoyer_mail = charger_fonction('envoyer_mail','inc');
+               
+               // On envoie aux destinataires
+               if ($destinataires)
+                       $ok = $envoyer_mail($destinataires, $sujet, $corps, $courriel_from, "X-Originating-IP: ".$GLOBALS['ip']);
+               
+               // Si c'est bon, on envoie l'accusé de réception
+               if ($ok and $courriel_envoyeur and $options['activer_accuse']){
+                       // On récupère le sujet s'il existe sinon on le construit
+                       if ($options['sujet_accuse']){
+                               $a_remplacer = array();
+                               if (preg_match_all('/@[\w]+@/', $options['sujet_accuse'], $a_remplacer)){
+                                       $a_remplacer = $a_remplacer[0];
+                                       foreach ($a_remplacer as $cle=>$val) $a_remplacer[$cle] = trim($val, '@');
+                                       $a_remplacer = array_flip($a_remplacer);
+                                       $a_remplacer = array_intersect_key($valeurs, $a_remplacer);
+                                       $a_remplacer = array_merge($a_remplacer, array('nom_site_spip' => $nom_site_spip));
+                               }
+                               $sujet_accuse = trim(_L($options['sujet_accuse'], $a_remplacer));
+                       }
+                       if (!$sujet_accuse) $sujet_accuse = _T('formidable:traiter_email_sujet_accuse');
+                       $sujet_accuse = filtrer_entites($sujet_accuse);
+                       
+                       // Mais quel va donc être le fond ?
+                       if (find_in_path('notifications/formulaire_'.$formulaire['identifiant'].'_accuse.html'))
+                               $accuse = 'notifications/formulaire_'.$formulaire['identifiant'].'_accuse';
+                       else
+                               $accuse = 'notifications/formulaire_accuse';
+                               
+                       // On génère l'accusé de réception
+                       $html_accuse = recuperer_fond(
+                               $accuse,
+                               array(
+                                       'id_formulaire' => $formulaire['id_formulaire'],
+                                       'titre' => _T_ou_typo($formulaire['titre']),
+                                       'message_retour' => $formulaire['message_retour'],
+                                       'traitements' => $traitements,
+                                       'saisies' => $saisies,
+                                       'valeurs' => $valeurs
+                               )
+                       );
+                       
+                       // On génère le texte brut
+                       $texte = facteur_mail_html2text($html_accuse);
+                       
+                       $corps = array(
+                               'html' => $html_accuse,
+                               'texte' => $texte,
+                               'nom_envoyeur' => filtrer_entites($nom_site_spip),
+                       );
+
+                       $ok = $envoyer_mail($courriel_envoyeur, $sujet_accuse, $corps, $courriel_from, "X-Originating-IP: ".$GLOBALS['ip']);
+               }
+               
+               if ($ok){
+                       $retours['message_ok'] .= "\n"._T('formidable:traiter_email_message_ok');
+               }
+               else{
+                       $retours['message_erreur'] .= "\n"._T('formidable:traiter_email_message_erreur');
+               }
+       }
+       
+       // noter qu'on a deja fait le boulot, pour ne pas risquer double appel
+       $retours['traitements']['email'] = true;
+       return $retours;
+}
+
+?>
diff --git a/www/plugins/formidable/traiter/email.yaml b/www/plugins/formidable/traiter/email.yaml
new file mode 100644 (file)
index 0000000..e731dd1
--- /dev/null
@@ -0,0 +1,64 @@
+
+titre: '<:formidable:traiter_email_titre:>'
+description: '<:formidable:traiter_email_description:>'
+options:
+  -
+    saisie: 'champ'
+    options:
+      nom: 'champ_destinataires'
+      label: '<:formidable:traiter_email_option_destinataires_label:>'
+      explication: '<:formidable:traiter_email_option_destinataires_explication:>'
+      forcer_type: [destinataires,hidden]
+      env: true
+  -
+    saisie: 'champ'
+    options:
+      nom: 'champ_courriel_destinataire_form'
+      label: '<:formidable:traiter_email_option_destinataires_champ_form_label:>'
+      explication: '<:formidable:traiter_email_option_destinataires_champ_form_explication:>'
+      env: true
+  -
+    saisie: 'input'
+    options:
+      nom: 'destinataires_plus'
+      label: '<:formidable:traiter_email_option_destinataires_plus_label:>'
+      explication: '<:formidable:traiter_email_option_destinataires_plus_explication:>'
+    verifier:
+      type: 'email'
+  -
+    saisie: 'champ'
+    options:
+      nom: 'champ_courriel'
+      label: '<:formidable:traiter_email_option_envoyeur_courriel_label:>'
+      explication: '<:formidable:traiter_email_option_envoyeur_courriel_explication:>'
+      env: true
+  -
+    saisie: 'case'
+    options:
+      nom: 'activer_vrai_envoyeur'
+      label_case: '<:formidable:traiter_email_option_vrai_envoyeur_label:>'
+      explication: '<:formidable:traiter_email_option_vrai_envoyeur_explication:>'
+  -
+    saisie: 'input'
+    options:
+      nom: 'champ_nom'
+      label: '<:formidable:traiter_email_option_envoyeur_nom_label:>'
+      explication: '<:formidable:traiter_email_option_envoyeur_nom_explication:>'
+  -
+    saisie: 'input'
+    options:
+      nom: 'champ_sujet'
+      label: '<:formidable:traiter_email_option_sujet_label:>'
+      explication: '<:formidable:traiter_email_option_sujet_explication:>'
+  -
+    saisie: 'case'
+    options:
+      nom: 'activer_accuse'
+      label: '<:formidable:traiter_email_option_activer_accuse_label:>'
+      label_case: '<:formidable:traiter_email_option_activer_accuse_label_case:>'
+  -
+    saisie: 'input'
+    options:
+      nom: 'sujet_accuse'
+      label: '<:formidable:traiter_email_option_sujet_accuse_label:>'
+      explication: '<:formidable:traiter_email_option_sujet_explication:>'
diff --git a/www/plugins/formidable/traiter/enregistrement.php b/www/plugins/formidable/traiter/enregistrement.php
new file mode 100644 (file)
index 0000000..81516f2
--- /dev/null
@@ -0,0 +1,175 @@
+<?php
+
+// Sécurité
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+function traiter_enregistrement_dist($args, $retours){
+    include_spip('inc/formidable');
+    include_spip('base/abstract_sql');
+    $options = $args['options'];
+    $formulaire = $args['formulaire'];
+    $id_formulaire = $args['id_formulaire'];
+    $saisies = unserialize($formulaire['saisies']);
+    $saisies = saisies_lister_par_nom($saisies);
+
+    // La personne a-t-elle un compte ?
+    global $auteur_session;
+    $id_auteur = $auteur_session ? intval($auteur_session['id_auteur']) : 0;
+
+    // traitement de l'anonymisation
+    if ($options['anonymiser'] == 'on') {
+        // mod de l'id_auteur
+        $variables_anonymisation =
+            $GLOBALS['formulaires']['variables_anonymisation'][$options['anonymiser_variable']];
+        $id = eval("return $variables_anonymisation;");
+        $id_auteur = formidable_scramble($id, $id_formulaire);
+    }
+    // On cherche le cookie et sinon on le crée
+    $nom_cookie = formidable_generer_nom_cookie($id_formulaire);
+    if (isset($_COOKIE[$nom_cookie]))
+        $cookie = $_COOKIE[$nom_cookie];
+    else {
+        include_spip("inc/acces");
+        $cookie = creer_uniqid();
+    }
+
+    // On regarde si c'est une modif d'une réponse existante
+    $id_formulaires_reponse = $args['id_formulaires_reponse'];
+
+    // recherche d'éventuelles anciennes réponses
+       $reponses = formidable_verifier_reponse_formulaire(
+                       $id_formulaire, 
+                       $options['identification'], 
+                       ($options['anonymiser'] == 'on') 
+                               ? $options['anonymiser_variable'] 
+                               : false
+       );
+       
+    // pas d'id_formulaires_reponse : on cherche une éventuelle réponse en base
+    if ($id_formulaires_reponse == false) {
+       $traitements_formulaire = unserialize($formulaire['traitements']);
+       
+       if (isset($traitements_formulaire['enregistrement'])) {
+               $options =  $traitements_formulaire['enregistrement'];
+
+                       if (isset($options['multiple']) && $options['multiple'] == ''
+                               && isset($options['modifiable']) && $options['modifiable'] == 'on'
+                                       && is_array($reponses) && count($reponses) > 0) {
+                       $id_formulaires_reponse = max($reponses);
+               }
+       }
+    } else {
+       // vérifier que l'auteur est bien l'auteur de la réponse, si non, on invalide l'id_formulaires_reponse
+       if (in_array($id_formulaires_reponse, $reponses) == false) $id_formulaires_reponse = false;
+    }
+    
+    // Si la moderation est a posteriori ou que la personne est un boss, on publie direct
+    if ($options['moderation'] == 'posteriori' or autoriser('instituer', 'formulaires_reponse', $id_formulaires_reponse, null, array('id_formulaire'=>$id_formulaire, 'nouveau_statut'=>'publie')))
+        $statut='publie';
+    else
+        $statut = 'prop';
+
+    // Si ce n'est pas une modif d'une réponse existante, on crée d'abord la réponse
+    if (!$id_formulaires_reponse){
+        $id_formulaires_reponse = sql_insertq(
+            'spip_formulaires_reponses',
+            array(
+                'id_formulaire' => $id_formulaire,
+                'id_auteur' => $id_auteur,
+                'cookie' => $cookie,
+                'ip' => $args['options']['ip'] == 'on' ? $GLOBALS['ip'] : '',
+                'date' => 'NOW()',
+                'statut' => $statut
+            )
+        );
+        // Si on a pas le droit de répondre plusieurs fois ou que les réponses seront modifiables, il faut poser un cookie
+        if (!$options['multiple'] or $options['modifiable']){
+            include_spip("inc/cookie");
+            // Expiration dans 30 jours
+            spip_setcookie($nom_cookie, $_COOKIE[$nom_cookie] = $cookie, time() + 30 * 24 * 3600);
+        }
+    } else {
+       // simple mise à jour du champ maj de la table spip_formulaires_reponses
+       sql_updateq(
+               'spip_formulaires_reponses', 
+               array('maj' => 'NOW()'), 
+               "id_formulaires_reponse = $id_formulaires_reponse"
+       );
+    }
+
+    // Si l'id n'a pas été créé correctement alors erreur
+    if (!($id_formulaires_reponse > 0)){
+        $retours['message_erreur'] .= "\n<br/>"._T('formidable:traiter_enregistrement_erreur_base');
+    }
+    // Sinon on continue à mettre à jour
+    else{
+        $champs = array();
+        $insertions = array();
+        foreach($saisies as $nom => $saisie){
+            // On ne prend que les champs qui ont effectivement été envoyés par le formulaire
+            if (($valeur = _request($nom)) !== null){
+                $champs[] = $nom;
+                $insertions[] = array(
+                    'id_formulaires_reponse' => $id_formulaires_reponse,
+                    'nom' => $nom,
+                    'valeur' => is_array($valeur) ? serialize($valeur) : $valeur
+                );
+            }
+        }
+
+        // S'il y a bien des choses à modifier
+        if ($champs){
+            // On supprime d'abord les champs
+            sql_delete(
+                'spip_formulaires_reponses_champs',
+                array(
+                    'id_formulaires_reponse = '.$id_formulaires_reponse,
+                    sql_in('nom', $champs)
+                )
+            );
+
+            // Puis on insère les nouvelles valeurs
+            sql_insertq_multi(
+                'spip_formulaires_reponses_champs',
+                $insertions
+            );
+        }
+        $retours['message_ok'] .= "\n"._T('formidable:traiter_enregistrement_message_ok');
+             $retours['id_formulaires_reponse'] = $id_formulaires_reponse;
+    }
+
+    // noter qu'on a deja fait le boulot, pour ne pas risquer double appel
+    $retours['traitements']['enregistrement'] = true;
+    return $retours;
+}
+
+function traiter_enregistrement_update_dist($id_formulaire, $traitement, $saisies_anciennes, $saisies_nouvelles){
+    include_spip('inc/saisies');
+    include_spip('base/abstract_sql');
+    $comparaison = saisies_comparer($saisies_anciennes, $saisies_nouvelles);
+
+    // Si des champs ont été supprimés, il faut supprimer les réponses à ces champs
+    if ($comparaison['supprimees']){
+        // On récupère les réponses du formulaire
+        $reponses = sql_allfetsel(
+            'id_formulaires_reponse',
+            'spip_formulaires_reponses',
+            'id_formulaire = '.$id_formulaire
+        );
+        $reponses = array_map('reset', $reponses);
+
+        // Tous les noms de champs à supprimer
+        $noms = array_keys($comparaison['supprimees']);
+
+        // On supprime
+        sql_delete(
+            'spip_formulaires_reponses_champs',
+            array(
+                sql_in('id_formulaires_reponse', $reponses),
+                sql_in('nom', $noms)
+            )
+        );
+    }
+}
+
+?>
diff --git a/www/plugins/formidable/traiter/enregistrement.yaml b/www/plugins/formidable/traiter/enregistrement.yaml
new file mode 100644 (file)
index 0000000..a5736fa
--- /dev/null
@@ -0,0 +1,69 @@
+
+titre: '<:formidable:traiter_enregistrement_titre:>'
+description: '<:formidable:traiter_enregistrement_description:>'
+options:
+  -
+    saisie: 'case'
+    options:
+      nom: 'multiple'
+      label_case: '<:formidable:traiter_enregistrement_option_multiple_explication:>'
+      defaut: 'on'
+      li_class: 'pleine_largeur'
+  -
+    saisie: 'case'
+    options:
+      nom: 'modifiable'
+      label_case: '<:formidable:traiter_enregistrement_option_modifiable_explication:>'
+      defaut: ''
+      li_class: 'pleine_largeur'
+  -
+    saisie: 'radio'
+    options:
+      nom: 'identification'
+      explication: '<:formidable:traiter_enregistrement_option_identification_explication:>'
+      datas:
+        cookie: '<:formidable:identification_par_cookie:>'
+        id_auteur: '<:formidable:identification_par_id_auteur:>'
+      defaut: 'cookie'
+      li_class: 'suite pleine_largeur'
+  -
+    saisie: 'case'
+    options:
+      nom: 'anonymiser'
+      label_case: '<:formidable:traiter_enregistrement_option_anonymiser_explication:>'
+      defaut: ''
+      li_class: 'pleine_largeur'
+  -
+    saisie: 'selection'
+    options:
+      option_intro: '<:formidable:traiter_enregistrement_option_choix_select_label:>'
+      nom: 'anonymiser_variable'
+      label: '<:formidable:traiter_enregistrement_option_anonymiser_variable_explication:>'
+      datas:
+        remote_user: "Variable serveur : REMOTE_USER"
+        php_auth_user: "Variable serveur : PHP_AUTH_USER"
+      defaut: ''
+      li_class: 'suite pleine_largeur'
+  -
+    saisie: 'case'
+    options:
+      nom: 'ip'
+      label_case: '<:formidable:traiter_enregistrement_option_ip_label:>'
+      defaut: 'on'
+      li_class: 'pleine_largeur'
+  -
+    saisie: 'radio'
+    options:
+      nom: 'moderation'
+      label: '<:formidable:traiter_enregistrement_option_moderation_label:>'
+      datas:
+        posteriori: '<:forum:bouton_radio_modere_posteriori:>'
+        priori: '<:forum:bouton_radio_modere_priori:>'
+      defaut: 'posteriori'
+  -
+    saisie: 'textarea'
+    options:
+      nom: 'analyse_exclure_champs'
+      label: '<:formidable:analyse_exclure_champs_label:>'
+      explication: '<:formidable:analyse_exclure_champs_explication:>'
+      rows: 4
\ No newline at end of file
diff --git a/www/plugins/formidable_1_0/action/dupliquer_formulaire.php b/www/plugins/formidable_1_0/action/dupliquer_formulaire.php
deleted file mode 100644 (file)
index 90a5f15..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-
-// Sécurité
-if (!defined("_ECRIRE_INC_VERSION")) return;
-
-include_spip('inc/config');
-
-/**
- * Dupliquer un formulaire
- * @param unknown_type $arg
- * @return unknown_type
- */
-function action_dupliquer_formulaire_dist($arg=null) {
-       if (is_null($arg)){
-               $securiser_action = charger_fonction('securiser_action', 'inc');
-               $arg = $securiser_action();
-       }
-       $id_formulaire = intval($arg);
-
-       // Si le formulaire existe bien
-       if ($id_formulaire > 0 and $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id_formulaire)){
-               include_spip('action/editer_formulaire');
-               // On enlève les champs inutiles
-               unset($formulaire['id_formulaire']);
-               // On modifie un peu le titre
-               $formulaire['titre'] = $formulaire['titre'].' '._T('formidable:formulaires_dupliquer_copie');
-               // On s'assure que l'identifiant n'existe pas déjà
-               $formulaire['identifiant'] = $formulaire['identifiant'].'_'.time();
-               // On insère un nouveau formulaire
-               $id_formulaire = insert_formulaire();
-               // Si ça a marché on modifie les champs de base
-               if ($id_formulaire > 0 and !($erreur = formulaire_set($id_formulaire, $formulaire))){
-                       // Et ensuite les saisies et les traitements
-                       $ok = sql_updateq(
-                               'spip_formulaires',
-                               array(
-                                       'saisies' => $formulaire['saisies'],
-                                       'traitements' => $formulaire['traitements']
-                               ),
-                               'id_formulaire = '.$id_formulaire
-                       );
-                       // Tout a fonctionné. En fonction de la config, on attribue l'auteur courant
-                       $auteurs = lire_config('formidable/analyse/auteur');
-                       if ($auteurs == 'on') {
-                               if ($id_auteur = session_get('id_auteur')) {
-                                       // association (par défaut) du formulaire et de l'auteur courant
-                                       objet_associer(array('formulaire'=>$id_formulaire), array('auteur'=>$id_auteur));
-                               }
-                       }
-                       // Et on redirige vers la vue
-                       $redirect = parametre_url(generer_url_ecrire('formulaire'), 'id_formulaire', $id_formulaire, '&');
-               }
-               // Sinon on reste sur la page qui liste tout
-               else{
-                       $redirect = generer_url_ecrire('formulaires');
-               }
-       }
-
-       // Si on a précisé une direction on va plutôt là
-       if (_request('redirect')) {
-               $redirect = parametre_url(urldecode(_request('redirect')),
-                       'id_formulaire', $id_formulaire, '&') . $erreur;
-       }
-       
-       // On redirige
-       include_spip('inc/headers');
-       redirige_par_entete($redirect);
-}
-
-?>
diff --git a/www/plugins/formidable_1_0/action/editer_formulaire.php b/www/plugins/formidable_1_0/action/editer_formulaire.php
deleted file mode 100644 (file)
index 2544459..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-<?php
-
-// Sécurité
-if (!defined("_ECRIRE_INC_VERSION")) return;
-
-/**
- * Action de création / Modification d'un formulaire
- * @param unknown_type $arg
- * @return unknown_type
- */
-function action_editer_formulaire_dist($arg=null) {
-       if (is_null($arg)){
-               $securiser_action = charger_fonction('securiser_action', 'inc');
-               $arg = $securiser_action();
-       }
-
-       // si id_formulaire n'est pas un nombre, c'est une creation
-       if (!$id_formulaire = intval($arg)) {
-               $id_formulaire = insert_formulaire();
-       }
-
-       // Enregistre l'envoi dans la BD
-       if ($id_formulaire > 0) $err = formulaire_set($id_formulaire);
-
-       if (_request('redirect')) {
-               $redirect = parametre_url(urldecode(_request('redirect')),
-                       'id_formulaire', $id_formulaire, '&') . $err;
-
-               include_spip('inc/headers');
-               redirige_par_entete($redirect);
-       }
-       else
-               return array($id_formulaire,$err);
-}
-
-/**
- * Crée un nouveau formulaire et retourne son ID
- *
- * @return int id_formulaire
- */
-function insert_formulaire() {
-       // Envoyer aux plugins
-       $champs = pipeline('pre_insertion',
-               array(
-                       'args' => array(
-                               'table' => 'spip_formulaires',
-                       ),
-                       'data' => $champs
-               )
-       );
-       $id_formulaire = sql_insertq("spip_formulaires", array('date_creation' => date('Y-m-d H:i:s')));
-
-       return $id_formulaire;
-}
-
-/**
- * Appelle la fonction de modification d'un formulaire
- *
- * @param int $id_formulaire
- * @param unknown_type $set
- * @return $err
- */
-function formulaire_set($id_formulaire, $set=null) {
-       include_spip('inc/saisies');
-       $err = '';
-
-       $c = array();
-       $champs = saisies_lister_champs($GLOBALS['formulaires']['editer_formulaire']);
-       foreach ($champs as $champ)
-               $c[$champ] = _request($champ,$set);
-
-       include_spip('inc/modifier');
-       revision_formulaire($id_formulaire, $c);
-
-       return $err;
-}
-
-/**
- * Enregistre une révision de formulaire
- *
- * @param int $id_formulaire
- * @param array $c
- * @return
- */
-function revision_formulaire($id_formulaire, $c=false) {
-       $invalideur = "id='id_formulaire/$id_formulaire'";
-
-       modifier_contenu('formulaire', $id_formulaire,
-               array(
-                       'nonvide' => array('titre' => _T('info_sans_titre')),
-                       'invalideur' => $invalideur
-               ),
-               $c);
-
-       return ''; // pas d'erreur
-}
-
-?>
diff --git a/www/plugins/formidable_1_0/action/exporter_analyse_reponses.php b/www/plugins/formidable_1_0/action/exporter_analyse_reponses.php
deleted file mode 100755 (executable)
index a4e7e92..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-<?php
-
-// Sécurité
-if (!defined("_ECRIRE_INC_VERSION")) return;
-
-/*
- * Exporter l'analyse des réponses d'un formulaire
- * @param unknown_type $arg
- * @return unknown_type
- */
-function action_exporter_analyse_reponses_dist($arg=null) {
-       if (is_null($arg)){
-               $securiser_action = charger_fonction('securiser_action', 'inc');
-               $arg = $securiser_action();
-       }
-
-       // on ne fait des choses seulements si le formulaire existe et qu'il a des enregistrements
-       $ok = false;
-       if (
-               $id_formulaire = intval($arg)
-               and $formulaire = sql_fetsel('*','spip_formulaires','id_formulaire = '.$id_formulaire)
-               and $reponses = sql_allfetsel('*', 'spip_formulaires_reponses', 'id_formulaire = '.$id_formulaire.' and statut = '.sql_quote('publie'))
-       ) {
-               include_spip('inc/saisies');
-               include_spip('classes/facteur');
-               include_spip('inc/filtres');
-        $reponses_completes = array();
-        
-        $saisies = saisies_lister_par_nom(unserialize($formulaire['saisies']), false);
-        
-        // exclure les champs non analysés
-        $traitement = unserialize($formulaire['traitements']);
-        foreach (explode("|",$traitement['enregistrement']['analyse_exclure_champs']) as $exclure){
-            unset($saisies[$exclure]);
-        }
-               $res = sql_select(
-            array('nom, valeur'),
-
-            'spip_formulaires_reponses_champs AS FRC,
-            spip_formulaires_reponses AS FR,
-            spip_formulaires AS F',
-
-            "FRC.id_formulaires_reponse=FR.id_formulaires_reponse
-            AND FR.statut='publie'
-            AND F.id_formulaire=FR.id_formulaire
-            AND F.id_formulaire=$id_formulaire"
-        );
-
-        $valeurs = array();
-        while($r = sql_fetch($res)) {
-            $valeurs[$r['nom']][] = is_array(unserialize($r['valeur']))
-                ? unserialize($r['valeur'])
-                : $r['valeur'];
-        }
-
-        foreach ($saisies as $nom=>$saisie){
-            $valeur = sql_getfetsel(
-                'valeur',
-                'spip_formulaires_reponses_champs',
-                'id_formulaires_reponse = '.intval($reponse['id_formulaires_reponse']).' and nom = '.sql_quote($nom)
-            );
-            if (is_array(unserialize($valeur)))
-                $valeur = unserialize($valeur);
-
-            $reponse_complete[] = formidable_analyser_saisie($saisie, $valeurs, 0, true);
-        }
-
-        $colonnes = array(_T('formidable:champs'), _T('formidable:sans_reponses'));
-        foreach($reponse_complete as $reponses) {
-            foreach($reponses as $key => $reponse) {
-                if ($key == 'header' || $key == 'sans_reponse') continue;
-                if (in_array($key, $colonnes) == false)
-                    array_push($colonnes, $key);
-            }
-        }
-
-        $csv = array();
-        foreach($reponse_complete as $reponses) {
-            foreach($colonnes as $colonne) {
-                $csv[$reponses['header']][$colonne] =
-                    isset($reponses[$colonne])
-                        ? $reponses[$colonne]
-                        : '';
-            }
-            $csv[$reponses['header']][_T('formidable:champs')] = $reponses['header'];
-            $csv[$reponses['header']][_T('formidable:sans_reponses')]
-                = $reponses['formidable:sans_reponse'];
-        }
-
-        $cpt_ligne = 1;
-        $reponses_completes = array();
-        $reponses_completes[0] = $colonnes;
-        foreach($csv as $ligne => $colonnes) {
-            $cpt_colonne = 0;
-            foreach($colonnes as $colonne) {
-                $reponses_completes[$cpt_ligne][$cpt_colonne++] = $colonne;
-            }
-            $cpt_ligne++;
-        }
-
-               if ($reponses_completes and $exporter_csv = charger_fonction('exporter_csv', 'inc/', true)){
-                       $exporter_csv('analyses-formulaire-'.$formulaire['identifiant'], $reponses_completes);
-                       exit();
-               }
-       }
-}
-
-?>
diff --git a/www/plugins/formidable_1_0/action/exporter_formulaire.php b/www/plugins/formidable_1_0/action/exporter_formulaire.php
deleted file mode 100644 (file)
index df24083..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-// Sécurité
-if (!defined("_ECRIRE_INC_VERSION")) return;
-
-function action_exporter_formulaire_dist(){
-       include_spip('inc/formidable');
-       if (is_null($arg)){
-               $securiser_action = charger_fonction('securiser_action', 'inc');
-               $arg = $securiser_action();
-       }
-       
-       list($id_formulaire, $type_export) = preg_split('/[\W]/', $arg);
-       
-       if ($id_formulaire > 0
-               and $type_export
-               and $types_echange = echanges_formulaire_lister_disponibles()
-               and $exporter = $types_echange['exporter'][$type_export]
-       ){
-               $exporter($id_formulaire);
-       }
-}
-
-?>
diff --git a/www/plugins/formidable_1_0/action/exporter_formulaires_reponses.php b/www/plugins/formidable_1_0/action/exporter_formulaires_reponses.php
deleted file mode 100644 (file)
index 2330710..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-
-// Sécurité
-if (!defined("_ECRIRE_INC_VERSION")) return;
-
-/*
- * Exporter toutes les réponses d'un formulaire
- * @param unknown_type $arg
- * @return unknown_type
- */
-function action_exporter_formulaires_reponses_dist($arg=null) {
-       if (is_null($arg)){
-               $securiser_action = charger_fonction('securiser_action', 'inc');
-               $arg = $securiser_action();
-       }
-
-       // on ne fait des choses seulements si le formulaire existe et qu'il a des enregistrements
-       $ok = false;
-       if (
-               $id_formulaire = intval($arg)
-               and $formulaire = sql_fetsel('*','spip_formulaires','id_formulaire = '.$id_formulaire)
-               and $reponses = sql_allfetsel('*', 'spip_formulaires_reponses', 'id_formulaire = '.$id_formulaire.' and statut = '.sql_quote('publie'))
-       ) {
-               include_spip('inc/saisies');
-               include_spip('classes/facteur');
-               include_spip('inc/filtres');
-               $reponses_completes = array();
-               
-               // La première ligne des titres
-               $titres = array(_T('public:date'), _T('formidable:reponses_auteur'), _T('formidable:reponses_ip'));
-               $saisies = saisies_lister_par_nom(unserialize($formulaire['saisies']), false);
-               foreach ($saisies as $nom=>$saisie){
-                       $options = $saisie['options'];
-                       $titres[] = sinon($options['label_case'], sinon($options['label'], $nom));
-               }
-               $reponses_completes[] = $titres;
-               
-               // On parcourt chaque réponse
-               foreach ($reponses as $reponse){
-                       // Est-ce qu'il y a un auteur avec un nom
-                       $nom_auteur = '';
-                       if ($id_auteur = intval($reponse['id_auteur'])){
-                               $nom_auteur = sql_getfetsel('nom', 'spip_auteurs', 'id_auteur = '.$id_auteur);
-                       }
-                       if (!$nom_auteur) $nom_auteur = '';
-                       
-                       // Le début de la réponse avec les infos (date, auteur, etc)
-                       $reponse_complete = array($reponse['date'], $nom_auteur, $reponse['ip']);
-                       
-                       // Ensuite tous les champs
-                       foreach ($saisies as $nom=>$saisie){
-                               $valeur = sql_getfetsel(
-                                       'valeur',
-                                       'spip_formulaires_reponses_champs',
-                                       'id_formulaires_reponse = '.intval($reponse['id_formulaires_reponse']).' and nom = '.sql_quote($nom)
-                               );
-                               if (is_array(unserialize($valeur)))
-                                       $valeur = unserialize($valeur);
-                               $reponse_complete[] = Facteur::html2text(
-                                       recuperer_fond(
-                                               'saisies-vues/_base',
-                                               array_merge(
-                                                       array(
-                                                               'valeur_uniquement' => 'oui',
-                                                               'type_saisie' => $saisie['saisie'],
-                                                               'valeur' => $valeur
-                                                       ),
-                                                       $saisie['options']
-                                               )
-                                       )
-                               );
-                       }
-                       
-                       // On ajoute la ligne à l'ensemble des réponses
-                       $reponses_completes[] = $reponse_complete;
-               }
-               
-               if ($reponses_completes and $exporter_csv = charger_fonction('exporter_csv', 'inc/', true)){
-                       $exporter_csv('reponses-formulaire-'.$formulaire['identifiant'], $reponses_completes);
-                       exit();
-               }
-       }
-}
-
-?>
diff --git a/www/plugins/formidable_1_0/action/instituer_formulaires_reponse.php b/www/plugins/formidable_1_0/action/instituer_formulaires_reponse.php
deleted file mode 100644 (file)
index 211057e..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-// Sécurité
-if (!defined("_ECRIRE_INC_VERSION")) return;
-
-/**
- * Action de création / Modification d'un truc
- * @param unknown_type $arg
- * @return unknown_type
- */
-function action_instituer_formulaires_reponse_dist($arg=null) {
-       if (is_null($arg)){
-               $securiser_action = charger_fonction('securiser_action', 'inc');
-               $arg = $securiser_action();
-       }
-
-       list($id_formulaires_reponse, $statut) = preg_split('/\W/', $arg);
-       if (!$statut) return; // impossible mais sait-on jamais
-       
-       $id_formulaires_reponse = intval($id_formulaires_reponse);
-       
-       $ok = sql_updateq(
-               'spip_formulaires_reponses',
-               array(
-                       'statut' => $statut
-               ),
-               'id_formulaires_reponse = '.$id_formulaires_reponse
-       );
-       if (!$ok) $err = 'erreur';
-       
-       return array($id_formulaires_reponse, $err);
-}
-
-?>
diff --git a/www/plugins/formidable_1_0/action/supprimer_formulaire.php b/www/plugins/formidable_1_0/action/supprimer_formulaire.php
deleted file mode 100644 (file)
index 372cebe..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php
-
-// Sécurité
-if (!defined("_ECRIRE_INC_VERSION")) return;
-
-/**
- * Action de suppression d'un formulaire
- * @param int $arg
- * @return unknown_type
- */
-function action_supprimer_formulaire_dist($arg=null) {
-       if (is_null($arg)){
-               $securiser_action = charger_fonction('securiser_action', 'inc');
-               $arg = $securiser_action();
-       }
-
-       // si id_formulaire n'est pas un nombre, on ne fait rien
-       if ($id_formulaire = intval($arg)) {
-               // On supprime le formulaire lui-même
-               $ok = sql_delete(
-                       'spip_formulaires',
-                       'id_formulaire = '.$id_formulaire
-               );
-               
-               if ($ok){
-                       // Si c'est bon, on récupère les réponses pour les supprimer
-                       $reponses = sql_allfetsel(
-                               'id_formulaires_reponse',
-                               'spip_formulaires_reponses',
-                               'id_formulaire = '.$id_formulaire
-                       );
-                       $reponses = $reponses ? array_map('reset', $reponses) : false;
-               
-                       // On supprime les réponses s'il y en a
-                       if ($reponses){
-                               $ok = sql_delete(
-                                       'spip_formulaires_reponses',
-                                       sql_in('id_formulaires_reponse', $reponses)
-                               );
-                       
-                               // Si c'est bon, on supprime les champs des réponses
-                               if ($ok){
-                                       $ok = sql_delete(
-                                               'spip_formulaires_reponses_champs',
-                                               sql_in('id_formulaires_reponse', $reponses)
-                                       );
-                               }
-                       }
-               }
-       }
-       
-       if ($ok){
-               if (!$redirect = _request('redirect'))
-                       $redirect = generer_url_ecrire('formulaires');
-               
-               include_spip('inc/headers');
-               redirige_par_entete(str_replace("&amp;","&",urldecode($redirect)));
-       }
-}
-
-?>
diff --git a/www/plugins/formidable_1_0/action/supprimer_formulaires_reponse.php b/www/plugins/formidable_1_0/action/supprimer_formulaires_reponse.php
deleted file mode 100644 (file)
index 98f106e..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-
-// Sécurité
-if (!defined("_ECRIRE_INC_VERSION")) return;
-
-/**
- * Action de suppression d'une réponse
- * @param int $arg
- * @return unknown_type
- */
-function action_supprimer_formulaires_reponse_dist($arg=null) {
-       if (is_null($arg)){
-               $securiser_action = charger_fonction('securiser_action', 'inc');
-               $arg = $securiser_action();
-       }
-
-       // si id_formulaires_reponse n'est pas un nombre, on ne fait rien
-       if ($id_formulaires_reponse = intval($arg)) {
-               // On récupère l'id_formulaire pour la redirection
-               $id_formulaire = intval(sql_getfetsel(
-                       'id_formulaire',
-                       'spip_formulaires_reponses',
-                       'id_formulaires_reponse = '.$id_formulaires_reponse
-               ));
-               
-               // On supprime la réponse
-               $ok = sql_delete(
-                       'spip_formulaires_reponses',
-                       'id_formulaires_reponse = '.$id_formulaires_reponse
-               );
-               
-               // Si c'est bon, on supprime les champs des réponses
-               if ($ok){
-                       $ok = sql_delete(
-                               'spip_formulaires_reponses_champs',
-                               'id_formulaires_reponse = '.$id_formulaires_reponse
-                       );
-               }
-       }
-       
-       if ($ok){
-               if (!$redirect = _request('redirect'))
-                       $redirect = parametre_url(generer_url_ecrire('formulaires_reponses'), 'id_formulaire', $id_formulaire);
-               
-               include_spip('inc/headers');
-               redirige_par_entete(str_replace("&amp;","&",urldecode($redirect)));
-       }
-}
-
-?>
diff --git a/www/plugins/formidable_1_0/action/vider_formulaire.php b/www/plugins/formidable_1_0/action/vider_formulaire.php
deleted file mode 100644 (file)
index 41de12a..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-// Sécurité
-if (!defined("_ECRIRE_INC_VERSION")) return;
-
-/*
- * Action de suppression des réponses à un formulaire
- * @param int $arg
- * @return unknown_type
- */
-function action_vider_formulaire_dist($arg=null) {
-       if (is_null($arg)){
-               $securiser_action = charger_fonction('securiser_action', 'inc');
-               $arg = $securiser_action();
-       }
-
-       // si id_formulaires_reponse n'est pas un nombre, on ne fait rien
-       if ($id_formulaire = intval($arg)) {
-               // On supprime les réponse (statut => poubelle
-               $ok = sql_update(
-                       'spip_formulaires_reponses',
-                       array('statut' => sql_quote('poubelle')),
-                       'id_formulaire = '.$id_formulaire
-               );
-       }
-       
-       if ($ok) {
-               /* on n'a plus de réponses à montrer, retour vers la page du formulaire */
-               if (!$redirect = _request('redirect'))
-                       $redirect = parametre_url(generer_url_ecrire('formulaire'), 'id_formulaire', $id_formulaire);
-               
-               include_spip('inc/headers');
-               redirige_par_entete(str_replace("&amp;","&",urldecode($redirect)));
-       }
-}
-
-?>
diff --git a/www/plugins/formidable_1_0/base/formidable_tables.php b/www/plugins/formidable_1_0/base/formidable_tables.php
deleted file mode 100644 (file)
index c01c6b0..0000000
+++ /dev/null
@@ -1,189 +0,0 @@
-<?php
-
-/**
- * Déclarations relatives à la base de données
- * 
- * @package SPIP\Formidable\Pipelines
-**/
-
-// Sécurité
-if (!defined('_ECRIRE_INC_VERSION')) return;
-
-/**
- * Déclarer les interfaces des tables de formidable pour le compilateur
- * 
- * @pipeline declarer_tables_interfaces
- * 
- * @param array $interfaces
- *     Déclarations d'interface pour le compilateur
- * @return array
- *     Déclarations d'interface pour le compilateur
-**/
-function formidable_declarer_tables_interfaces($interfaces) {
-       // 'spip_' dans l'index de $tables_principales
-       $interfaces['table_des_tables']['formulaires'] = 'formulaires';
-       $interfaces['table_des_tables']['formulaires_reponses'] = 'formulaires_reponses';
-       $interfaces['table_des_tables']['formulaires_reponses_champs'] = 'formulaires_reponses_champs';
-
-       $interfaces['tables_jointures']['spip_formulaires'][] = 'formulaires_liens';
-       $interfaces['tables_jointures']['spip_articles'][] = 'formulaires_liens';
-       $interfaces['tables_jointures']['spip_rubriques'][] = 'formulaires_liens';
-
-       return $interfaces;
-}
-
-/**
- * Déclarer les objets éditoriaux des formulaires
- *
- * @pipeline declarer_tables_objets_sql
- * @param array $tables
- *     Description des tables
- * @return array
- *     Description complétée des tables
- */
-function formidable_declarer_tables_objets_sql($tables) {
-       $tables['spip_formulaires'] = array(
-               'type'=>'formulaire',
-               'titre' => "titre, '' AS lang",
-               'date' => 'date_creation',
-               'principale' => 'oui',
-               'texte_modifier' => 'formidable:editer_modifier_formulaire',
-               
-               'field' => array(
-                       "id_formulaire" => "bigint(21) NOT NULL",
-                       "identifiant" => "varchar(200)",
-                       "titre" => "text NOT NULL default ''",
-                       "descriptif" => "text",
-                       "message_retour" => "text NOT NULL default ''",
-                       "saisies" => "longtext NOT NULL default ''",
-                       "traitements" => "text NOT NULL default ''",
-                       "public" => "enum('non', 'oui') DEFAULT 'non' NOT NULL",
-                       "statut" => "varchar(10) NOT NULL default ''",
-                       "date_creation" => "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'",
-                       "maj" => "timestamp",
-                       "apres" => "varchar(12) NOT NULL default ''",
-                       "url_redirect" => "varchar(255)"
-               ),
-               'key' => array(
-                       "PRIMARY KEY" => "id_formulaire"
-               ),
-               'join'=> array(
-                       'id_formulaire' => 'id_formulaire'
-               ),
-               'rechercher_champs' => array(
-                 'titre' => 5, 'descriptif' => 3
-               ),
-       );
-
-       $tables['spip_formulaires_reponses'] = array(
-               'type'=>'formulaires_reponse',
-               'titre' => "'' AS titre, '' AS lang",
-               'date' => 'date',
-               'principale' => 'oui',
-
-               'field' => array(
-                       "id_formulaires_reponse" => "bigint(21) NOT NULL",
-                       "id_formulaire" => "bigint(21) NOT NULL default 0",
-                       "date" => "datetime NOT NULL default '0000-00-00 00:00:00'",
-                       "ip" => "varchar(255) NOT NULL default ''",
-                       "id_auteur" => "bigint(21) NOT NULL default 0",
-                       "cookie" => "varchar(255) NOT NULL default ''",
-                       "statut" => "varchar(10) NOT NULL default ''",
-                       "maj" => "timestamp"
-               ),
-               'key' => array(
-                       "PRIMARY KEY" => "id_formulaires_reponse",
-                       "KEY id_formulaire" => "id_formulaire",
-                       "KEY id_auteur" => "id_auteur",
-                       "KEY cookie" => "cookie"
-               ),
-               'join' => array(
-                       'id_formulaires_reponse' => 'id_formulaires_reponse',
-                       'id_formulaire' => 'id_formulaire',
-                       'id_auteur' => 'id_auteur'
-               ),
-               'statut'=> array(
-                       array(
-                               'champ' => 'statut',
-                               'publie' => 'publie',
-                               'previsu' => 'publie,prop',
-                               'exception' => array('statut', 'tout'),
-                       )
-               ),
-               'texte_changer_statut' => 'formulaires_reponse:changer_statut',
-               'statut_titres' => array(
-                       'prop'=>'info_article_propose',
-                       'publie'=>'info_article_publie',
-                       'poubelle'=>'info_article_supprime'
-               ),
-               'statut_textes_instituer' => array(
-                       'prop' => 'texte_statut_propose_evaluation',
-                       'publie' => 'texte_statut_publie',
-                       'refuse' => 'texte_statut_poubelle',
-               ),
-       );
-       return $tables;
-}
-
-/**
- * Déclarer les tables principales de formidable
- *
- * @pipeline declarer_tables_principales
- * @param array $tables_principales
- *     Description des tables
- * @return array
- *     Description complétée des tables
-**/
-function formidable_declarer_tables_principales($tables_principales){
-
-       // Table formulaires_reponses_champs 
-       $formulaires_reponses_champs = array(
-               "id_formulaires_reponse" => "bigint(21) NOT NULL default 0",
-               "nom" => "varchar(255) NOT NULL default ''",
-               "valeur" => "text NOT NULL DEFAULT ''",
-               "maj" => "timestamp"
-       );
-       $formulaires_reponses_champs_cles = array(
-               "PRIMARY KEY" => "id_formulaires_reponse, nom",
-               "KEY id_formulaires_reponse" => "id_formulaires_reponse"
-       );
-       $tables_principales['spip_formulaires_reponses_champs'] = array(
-               'field' => &$formulaires_reponses_champs,
-               'key' => &$formulaires_reponses_champs_cles
-       );
-       
-       return $tables_principales;
-}
-
-/**
- * Déclarer les tables auxiliaires de formidable
- *
- * @pipeline declarer_tables_auxiliaires
- * @param array $tables_auxiliaires
- *     Description des tables
- * @return array
- *     Description complétée des tables
-**/
-function formidable_declarer_tables_auxiliaires($tables_auxiliaires){
-       $formulaires_liens = array(
-               "id_formulaire" => "bigint(21) DEFAULT '0' NOT NULL",
-               "id_objet"      => "bigint(21) DEFAULT '0' NOT NULL",
-               "objet" => "VARCHAR (25) DEFAULT '' NOT NULL"
-       );
-
-       $formulaires_liens_cles = array(
-               "PRIMARY KEY" => "id_formulaire,id_objet,objet",
-               "KEY id_formulaire" => "id_formulaire"
-       );
-       
-       $tables_auxiliaires['spip_formulaires_liens'] = array(
-               'field' => &$formulaires_liens,
-               'key' => &$formulaires_liens_cles
-       );
-       
-       return $tables_auxiliaires;
-}
-
-
-
-?>
diff --git a/www/plugins/formidable_1_0/css/formidable_analyse.css.html b/www/plugins/formidable_1_0/css/formidable_analyse.css.html
deleted file mode 100644 (file)
index 3a82a97..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-.formidable_analyse .stat {width:70%;}
-
-.progress-bar {
-       background-color: #f1f1f1;
-       height: 20px;
-       padding: 1px;
-       margin: 2px 0;
-       -moz-border-radius: 5px;
-       -webkit-border-radius: 5px;
-       border-radius: 5px;
-       -moz-box-shadow: 0 1px 4px #eee inset, 0 1px 0 #bbb;
-       -webkit-box-shadow: 0 1px 4px #eee inset, 0 1px 0 #bbb;
-       box-shadow: 0 1px 4px #eee inset, 0 1px 0 #bbb;
-       position:relative; /* pour le strong du texte */
-}
-
-.progress-bar strong {
-       color:#000;
-       padding:0 .5em;
-       -webkit-moz-text-shadow: 0 1px 1px #fff;
-       -moz-text-shadow: 0 1px 1px #fff;
-       text-shadow: 0 1px 1px #fff;
-       position:absolute;
-       top:2px;
-       left:0;
-}
-.progress-bar strong small {font-size:90%; font-weight:normal;}
-
-.progress-bar span {
-       background-color: #bbb;
-         background-image: -webkit-gradient(linear, left top, left bottom, from(#bbb), to(#777));
-         background-image: -webkit-linear-gradient(top, #bbb, #777);
-         background-image: -moz-linear-gradient(top, #bbb, #777);
-         background-image: -ms-linear-gradient(top, #bbb, #777);
-         background-image: -o-linear-gradient(top, #bbb, #777);
-         background-image: linear-gradient(top, #bbb, #777); 
-       display: inline-block;
-       height: 100%;
-       -moz-border-radius: 3px;
-       -webkit-border-radius: 3px;
-       border-radius: 3px;
-       -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, .5) inset;
-       -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, .5) inset;
-       box-shadow: 0 1px 0 rgba(255, 255, 255, .5) inset;
-        -webkit-transition: width 2s ease-in-out;
-        -moz-transition: width 2s ease-in-out;
-        -ms-transition: width 2s ease-in-out;
-        -o-transition: width 2s ease-in-out;
-        transition: width 2s ease-in-out;    
-}
-
-.progress-bar.gray span {
-       background-color: #bbb;
-         background-image: -webkit-gradient(linear, left top, left bottom, from(#bbb), to(#777));
-         background-image: -webkit-linear-gradient(top, #bbb, #777);
-         background-image: -moz-linear-gradient(top, #bbb, #777);
-         background-image: -ms-linear-gradient(top, #bbb, #777);
-         background-image: -o-linear-gradient(top, #bbb, #777);
-         background-image: linear-gradient(top, #bbb, #777); 
-}
-
-.progress-bar.blue span {
-       background-color: #34c2e3;
-         background-image: -webkit-gradient(linear, left top, left bottom, from(#34c2e3), to(#13ACD1));
-         background-image: -webkit-linear-gradient(top, #34c2e3, #13ACD1);
-         background-image: -moz-linear-gradient(top, #34c2e3, #13ACD1);
-         background-image: -ms-linear-gradient(top, #34c2e3, #13ACD1);
-         background-image: -o-linear-gradient(top, #34c2e3, #13ACD1);
-         background-image: linear-gradient(top, #34c2e3, #13ACD1);  
-}
-
-.progress-bar.orange span {
-         background-color: #fecf23;
-         background-image: -webkit-gradient(linear, left top, left bottom, from(#fecf23), to(#fd9215));
-         background-image: -webkit-linear-gradient(top, #fecf23, #fd9215);
-         background-image: -moz-linear-gradient(top, #fecf23, #fd9215);
-         background-image: -ms-linear-gradient(top, #fecf23, #fd9215);
-         background-image: -o-linear-gradient(top, #fecf23, #fd9215);
-         background-image: linear-gradient(top, #fecf23, #fd9215);  
-}      
-
-.progress-bar.green span {
-         background-color: #a5df41;
-         background-image: -webkit-gradient(linear, left top, left bottom, from(#a5df41), to(#4ca916));
-         background-image: -webkit-linear-gradient(top, #a5df41, #4ca916);
-         background-image: -moz-linear-gradient(top, #a5df41, #4ca916);
-         background-image: -ms-linear-gradient(top, #a5df41, #4ca916);
-         background-image: -o-linear-gradient(top, #a5df41, #4ca916);
-         background-image: linear-gradient(top, #a5df41, #4ca916);  
-}
diff --git a/www/plugins/formidable_1_0/echanger/formulaire/forms.php b/www/plugins/formidable_1_0/echanger/formulaire/forms.php
deleted file mode 100644 (file)
index c74aaef..0000000
+++ /dev/null
@@ -1,175 +0,0 @@
-<?php\r
-\r
-// Sécurité\r
-if (!defined("_ECRIRE_INC_VERSION")) return;\r
-\r
-// Importation d'un formulaire forms&table\r
-\r
-function echanger_formulaire_forms_importer_dist($fichier){\r
-       include_spip('inc/xml');\r
-       $arbre = spip_xml_load($fichier, false);\r
-       \r
-       if ($arbre and is_array($arbre) and isset($arbre['forms'])){\r
-               foreach($arbre['forms'] as $forms){\r
-                       foreach ($forms['form'] as $form){\r
-                               $formulaire = array();\r
-                               \r
-                               // Le titre\r
-                               $titre = trim(spip_xml_aplatit($form['titre']));\r
-                               $formulaire['titre'] = $titre ? $titre : _T('info_sans_titre');\r
-                               \r
-                               // L'identifiant il faut le générer\r
-                               $formulaire['identifiant'] = 'form_'.time();\r
-                               \r
-                               // Le descriptif\r
-                               $descriptif = trim(spip_xml_aplatit($form['descriptif']));\r
-                               $formulaire['descriptif'] = $descriptif ? $descriptif : '';\r
-                               \r
-                               // Le message de retour si ok\r
-                               $message_retour = trim(spip_xml_aplatit($form['texte']));\r
-                               $formulaire['message_retour'] = $message_retour ? $message_retour : '';\r
-\r
-                               // Les champs\r
-                               $formulaire['saisies'] = array();\r
-                               foreach($form['fields'] as $fields){\r
-                                       foreach($fields['field'] as $field){\r
-                                               // Le truc par défaut\r
-                                               $saisie = array(\r
-                                                       'saisie' => 'input',\r
-                                                       'options' => array('size'=>40)\r
-                                               );\r
-                                               \r
-                                               // On essaye de traduire tous les types de champs\r
-                                               $type = trim(spip_xml_aplatit($field['type']));\r
-                                               switch ($type){\r
-                                                       case 'texte':\r
-                                                               $saisie['saisie'] = 'textarea';\r
-                                                               unset($saisie['options']['size']);\r
-                                                               $saisie['options']['rows'] = 5;\r
-                                                               $saisie['options']['cols'] = 40;\r
-                                                               break;\r
-                                                       case 'password':\r
-                                                               $saisie['options']['type'] = 'password';\r
-                                                               break;\r
-                                                       case 'date':\r
-                                                               $saisie['saisie'] = 'date';\r
-                                                               $saisie['verifier'] = array(\r
-                                                                       'type' => 'date'\r
-                                                               );\r
-                                                               break;\r
-                                                       case 'num':\r
-                                                       case 'monnaie':\r
-                                                               $saisie['verifier'] = array(\r
-                                                                       'type' => 'entier'\r
-                                                               );\r
-                                                               if ($taille = trim(spip_xml_aplatit($field['taille'])))\r
-                                                                       $saisie['verifier']['options'] = array('max' => (pow(10, $taille)-1));\r
-                                                               break;\r
-                                                       case 'email':\r
-                                                               $saisie['verifier'] = array(\r
-                                                                       'type' => 'email'\r
-                                                               );\r
-                                                               break;\r
-                                                       case 'telephone':\r
-                                                               $saisie['verifier'] = array(\r
-                                                                       'type' => 'telephone'\r
-                                                               );\r
-                                                               break;\r
-                                                       case 'select':\r
-                                                               unset($saisie['options']['size']);\r
-                                                               $liste = trim(spip_xml_aplatit($field['extra_info']));\r
-                                                               if ($liste == 'radio')\r
-                                                                       $saisie['saisie'] = 'radio';\r
-                                                               else\r
-                                                                       $saisie['saisie'] = 'selection';\r
-                                                               break;\r
-                                                       case 'multiple':\r
-                                                               $saisie['saisie'] = 'checkbox';\r
-                                                               unset($saisie['options']['size']);\r
-                                                               break;\r
-                                                       case 'fichier':\r
-                                                       case 'separateur':\r
-                                                               $saisie = null;\r
-                                               }\r
-                                               \r
-                                               // On continue seulement si on a toujours une saisie\r
-                                               if ($saisie){\r
-                                                       // Les choix pour les types select et multiple\r
-                                                       if(isset($field['les_choix']) and is_array($field['les_choix'])){\r
-                                                               $saisie['options']['datas'] = array();\r
-                                                               foreach($field['les_choix'] as $les_choix){\r
-                                                                       foreach($les_choix['un_choix'] as $un_choix){\r
-                                                                               $choix = trim(spip_xml_aplatit($un_choix['choix']));\r
-                                                                               $titre = trim(spip_xml_aplatit($un_choix['titre']));\r
-                                                                               $saisie['options']['datas'][$choix] = $titre;\r
-                                                                       }\r
-                                                               }\r
-                                                       }\r
-                                               \r
-                                                       // Le nom\r
-                                                       $saisie['options']['nom'] = trim(spip_xml_aplatit($field['champ']));\r
-                                               \r
-                                                       // Le label\r
-                                                       $saisie['options']['label'] = trim(spip_xml_aplatit($field['titre']));\r
-                                               \r
-                                                       // Obligatoire\r
-                                                       if (trim(spip_xml_aplatit($field['obligatoire'])) == 'oui')\r
-                                                               $saisie['options']['obligatoire'] = 'on';\r
-                                               \r
-                                                       // Explication éventuelle\r
-                                                       if ($explication = trim(spip_xml_aplatit($field['aide'])))\r
-                                                               $saisie['options']['explication'] = $explication;\r
-                                               \r
-                                                       // On ajoute enfin la saisie\r
-                                                       $formulaire['saisies'][] = $saisie;\r
-                                               }\r
-                                       }\r
-                               }\r
-                               \r
-                               // Les traitements\r
-                               $formulaire['traitements'] = array();\r
-                               \r
-                               // Le traitement email\r
-                               $config_email = unserialize(trim(spip_xml_aplatit($form['email'])));\r
-                               if (is_array($config_email)){\r
-                                       if ($email_defaut = $config_email['defaut'])\r
-                                               $formulaire['traitements']['email'] = array(\r
-                                                       'destinataires_plus' => $email_defaut\r
-                                               );\r
-                               }\r
-                               \r
-                               // Le traitement enregistrement\r
-                               $formulaire['traitements']['enregistrement'] = array(\r
-                                       'moderation' => (trim(spip_xml_aplatit($form['moderation'])) == 'priori') ? 'priori' : 'posteriori',\r
-                                       'modifiable' => (trim(spip_xml_aplatit($form['modifiable'])) == 'oui') ? 'on' : '',\r
-                                       'multiple' => (trim(spip_xml_aplatit($form['multiple'])) == 'non') ? '' : 'on'\r
-                               );\r
-                               \r
-                               include_spip('action/editer_formulaire');\r
-                               // On insère un nouveau formulaire\r
-                               $id_formulaire = insert_formulaire();\r
-                               // Si ça a marché on modifie les champs de base\r
-                               if ($id_formulaire > 0 and !($erreur = formulaire_set($id_formulaire, $formulaire))){\r
-                                       // Et ensuite les saisies et les traitements\r
-                                       $ok = sql_updateq(\r
-                                               'spip_formulaires',\r
-                                               array(\r
-                                                       'saisies' => serialize($formulaire['saisies']),\r
-                                                       'traitements' => serialize($formulaire['traitements'])\r
-                                               ),\r
-                                               'id_formulaire = '.$id_formulaire\r
-                                       );\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-       \r
-       if ($id_formulaire and $ok){\r
-               return $id_formulaire;\r
-       }\r
-       else{\r
-               return _T('formidable:erreur_importer_forms');\r
-       }\r
-}\r
-\r
-?>\r
diff --git a/www/plugins/formidable_1_0/echanger/formulaire/wcs.php b/www/plugins/formidable_1_0/echanger/formulaire/wcs.php
deleted file mode 100644 (file)
index c12100a..0000000
+++ /dev/null
@@ -1,175 +0,0 @@
-<?php
-
-// Sécurité
-if (!defined("_ECRIRE_INC_VERSION")) return;
-
-function echanger_formulaire_wcs_importer_dist($fichier){
-       include_spip('inc/xml');
-       include_spip('inc/filtres');
-       include_spip('inc/saisies');
-       $arbre = spip_xml_load($fichier, false);
-       
-       if ($arbre and is_array($arbre) and isset($arbre['formdef'])){
-               foreach($arbre['formdef'] as $form){
-                       $formulaire = array();
-                       
-                       // Le titre
-                       $titre = filtrer_entites(trim(spip_xml_aplatit($form['name'])));
-                       $formulaire['titre'] = $titre ? $titre : _T('info_sans_titre');
-                       
-                       // On vérifie que l'identifiant n'existe pas déjà
-                               $formulaire['identifiant'] = str_replace('-', '_', trim(spip_xml_aplatit($form['url_name'])));
-                               $deja = sql_getfetsel(
-                                       'id_formulaire',
-                                       'spip_formulaires',
-                                       'identifiant = '.sql_quote($formulaire['identifiant'])
-                               );
-                               if ($deja)
-                                       $formulaire['identifiant'] = $formulaire['identifiant'].'_'.time();
-                       
-                       // Les champs
-                       $formulaire['saisies'] = array();
-                       // Par défaut le conteneur c'est le formulaire
-                       $conteneur =& $formulaire;
-                       foreach($form['fields'] as $fields){
-                               foreach($fields['field'] as $field){
-                                       $changer_conteneur = false;
-                                       
-                                       // Le truc par défaut
-                                       $saisie = array(
-                                               'saisie' => 'input',
-                                               'options' => array('size'=>40)
-                                       );
-                                       
-                                       // Le label
-                                       $saisie['options']['label'] = filtrer_entites(trim(spip_xml_aplatit($field['label'])));
-                                       
-                                       // On essaye de traduire tous les types de champs
-                                       $type = trim(spip_xml_aplatit($field['type']));
-                                       switch ($type){
-                                               case 'string':
-                                                       if ($size = intval(trim(spip_xml_aplatit($field['size'])))){
-                                                               $saisie['options']['maxlength'] = $size;
-                                                               $saisie['verifier'] = array(
-                                                                       'type' => 'taille',
-                                                                       'options' => array('max'=>$size)
-                                                               );
-                                                       }
-                                                       break;
-                                               case 'text':
-                                                       $saisie['saisie'] = 'textarea';
-                                                       unset($saisie['options']['size']);
-                                                       $saisie['options']['rows'] = 5;
-                                                       $saisie['options']['cols'] = 40;
-                                                       if ($rows = intval(trim(spip_xml_aplatit($field['rows'])))){
-                                                               $saisie['options']['rows'] = $rows;
-                                                       }
-                                                       if ($cols = intval(trim(spip_xml_aplatit($field['cols'])))){
-                                                               $saisie['options']['cols'] = $cols;
-                                                       }
-                                                       break;
-                                               case 'date':
-                                                       $saisie['verifier'] = array(
-                                                               'type' => 'date'
-                                                       );
-                                                       break;
-                                               case 'email':
-                                                       $saisie['verifier'] = array(
-                                                               'type' => 'email'
-                                                       );
-                                                       break;
-                                               case 'item':
-                                                       unset($saisie['options']['size']);
-                                                       $saisie['saisie'] = 'selection';
-                                                       $saisie['options']['cacher_option_intro'] = 'on';
-                                                       break;
-                                               case 'bool':
-                                                       unset($saisie['options']['size']);
-                                                       $saisie['saisie'] = 'case';
-                                                       $saisie['options']['label_case'] = $saisie['options']['label'];
-                                                       unset($saisie['options']['label']);
-                                                       break;
-                                               case 'multiple':
-                                                       $saisie['saisie'] = 'checkbox';
-                                                       unset($saisie['options']['size']);
-                                                       break;
-                                               case 'comment':
-                                                       $saisie['saisie'] = 'explication';
-                                                       $saisie['options']['texte'] = $saisie['options']['label'];
-                                                       unset($saisie['options']['label']);
-                                                       break;
-                                               case 'page':
-                                                       $saisie['saisie'] = 'fieldset';
-                                                       unset($saisie['options']['size']);
-                                                       $saisie['saisies'] = array();
-                                                       $changer_conteneur = true;
-                                                       // On remet le conteneur au niveau du formulaire
-                                                       $conteneur =& $formulaire;
-                                                       break;
-                                               case 'subtitle':
-                                               case 'file':
-                                                       $saisie = null;
-                                       }
-                                       
-                                       // On continue seulement si on a toujours une saisie
-                                       if ($saisie){
-                                               // Les choix pour les types select
-                                               if(isset($field['items']) and is_array($field['items'])){
-                                                       $saisie['options']['datas'] = array();
-                                                       foreach($field['items'] as $items){
-                                                               foreach($items['item'] as $cle=>$item){
-                                                                       $titre = filtrer_entites(trim($item));
-                                                                       $saisie['options']['datas']['choix_'.$cle] = $titre;
-                                                               }
-                                                       }
-                                               }
-                                       
-                                               // Le nom
-                                               $saisie['options']['nom'] = saisies_generer_nom($formulaire['saisies'], $saisie['saisie']);
-                                       
-                                               // Obligatoire
-                                               if (trim(spip_xml_aplatit($field['required'])) == 'True')
-                                                       $saisie['options']['obligatoire'] = 'on';
-                                       
-                                               // Explication éventuelle
-                                               if ($explication = trim(spip_xml_aplatit($field['hint'])))
-                                                       $saisie['options']['explication'] = $explication;
-                                       
-                                               // On ajoute enfin la saisie
-                                               $conteneur['saisies'][] = $saisie;
-                                               
-                                               // Faut-il changer de conteneur ?
-                                               if ($changer_conteneur){
-                                                       $conteneur =& $conteneur['saisies'][count($conteneur['saisies'])-1];
-                                               }
-                                       }
-                               }
-                       }
-                       
-                       include_spip('action/editer_formulaire');
-                       // On insère un nouveau formulaire
-                       $id_formulaire = insert_formulaire();
-                       // Si ça a marché on modifie les champs de base
-                       if ($id_formulaire > 0 and !($erreur = formulaire_set($id_formulaire, $formulaire))){
-                               // Et ensuite les saisies et les traitements
-                               $ok = sql_updateq(
-                                       'spip_formulaires',
-                                       array(
-                                               'saisies' => serialize($formulaire['saisies']),
-                                               'traitements' => serialize($formulaire['traitements'])
-                                       ),
-                                       'id_formulaire = '.$id_formulaire
-                               );
-                       }
-               }
-       }
-       
-       if ($id_formulaire and $ok){
-               return $id_formulaire;
-       }
-       else{
-               return _T('formidable:erreur_importer_wcs');
-       }
-}
-
-?>
diff --git a/www/plugins/formidable_1_0/echanger/formulaire/yaml.php b/www/plugins/formidable_1_0/echanger/formulaire/yaml.php
deleted file mode 100644 (file)
index 162331d..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-
-// Sécurité
-if (!defined("_ECRIRE_INC_VERSION")) return;
-
-function echanger_formulaire_yaml_exporter_dist($id_formulaire){
-       include_spip('base/abstract_sql');
-       include_spip('inc/yaml');
-       $id_formulaire = intval($id_formulaire);
-       $export = '';
-       
-       if ($id_formulaire > 0){
-               // On récupère le formulaire
-               $formulaire = sql_fetsel(
-                       '*',
-                       'spip_formulaires',
-                       'id_formulaire = '.$id_formulaire
-               );
-               
-               // On décompresse les trucs sérialisés
-               $formulaire['saisies'] = unserialize($formulaire['saisies']);
-               $formulaire['traitements'] = unserialize($formulaire['traitements']);
-               
-               // On envode en yaml
-               $export = yaml_encode($formulaire);
-       }
-       
-       Header("Content-Type: text/x-yaml;");
-       Header('Content-Disposition: attachment; filename=formulaire-'.$formulaire['identifiant'].'.yaml');
-       Header("Content-Length: ".strlen($export));
-       echo $export;
-       exit();
-}
-
-function echanger_formulaire_yaml_importer_dist($fichier){
-       $yaml = '';
-       lire_fichier($fichier, $yaml);
-       // Si on a bien recupere une chaine on tente de la decoder
-       if ($yaml){
-               include_spip('inc/yaml');
-               $formulaire = yaml_decode($yaml);
-               // Si le decodage marche on importe alors le contenu
-               if (is_array($formulaire)){
-                       include_spip('action/editer_formulaire');
-                       // On enlève les champs inutiles
-                       unset($formulaire['id_formulaire']);
-                       // On vérifie que l'identifiant n'existe pas déjà
-                       $deja = sql_getfetsel(
-                               'id_formulaire',
-                               'spip_formulaires',
-                               'identifiant = '.sql_quote($formulaire['identifiant'])
-                       );
-                       if ($deja)
-                               $formulaire['identifiant'] = $formulaire['identifiant'].'_'.time();
-                       // On insère un nouveau formulaire
-                       $id_formulaire = insert_formulaire();
-                       // Si ça a marché on modifie les champs de base
-                       if ($id_formulaire > 0 and !($erreur = formulaire_set($id_formulaire, $formulaire))){
-                               // Et ensuite les saisies et les traitements
-                               $ok = sql_updateq(
-                                       'spip_formulaires',
-                                       array(
-                                               'saisies' => serialize($formulaire['saisies']),
-                                               'traitements' => serialize($formulaire['traitements'])
-                                       ),
-                                       'id_formulaire = '.$id_formulaire
-                               );
-                       }
-               }
-       }
-       
-       if ($id_formulaire and $ok){
-               return $id_formulaire;
-       }
-       else{
-               return _T('formidable:erreur_importer_yaml');
-       }
-}
-
-?>
diff --git a/www/plugins/formidable_1_0/exec/puce_statut_formulaires.php b/www/plugins/formidable_1_0/exec/puce_statut_formulaires.php
deleted file mode 100644 (file)
index 6aadef3..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-
-if (!defined("_ECRIRE_INC_VERSION")) return;
-
-/**
- * Gestion des puces d'action rapide de formulaires
- *
- * @package SPIP\Formidable\Puce_statut
-**/
-
-include_spip('inc/presentation');
-
-/**
- * Gestion de l'affichage ajax des puces d'action rapide de formulaires
- *
- * Récupère l'identifiant id et le type d'objet dans les données postées
- * et appelle la fonction de traitement de cet exec.
- * 
- * @see exec_puce_statut_formulaires_args()
- * @return string Code HTML
-**/
-function exec_puce_statut_formulaires_dist()
-{
-       exec_puce_statut_formulaires_args(_request('id'),  _request('type'));
-}
-
-/**
- * Traitement de l'affichage ajax des puces d'action rapide
- *
- * Appelle la fonction de traitement des puces statuts
- * après avoir retrouvé le statut en cours de l'objet
- * et son parent s'il en a un
- * 
- * @param int $id
- *     Identifiant de l'objet
- * @param string $type
- *     Type d'objet
- * @return string Code HTML
-**/
-function exec_puce_statut_formulaires_args($id, $type)
-{
-       if (in_array($type,array('formulaires','formulaires_reponse'))) {
-               $table = table_objet_sql($type);
-               $prim = id_table_objet($type);
-               $id = intval($id);
-               $r = sql_fetsel("id_formulaire,statut", "$table", "$prim=$id");
-               $statut = $r['statut'];
-               $id_formulaire = $r['id_formulaire'];
-       } else {
-               $id_formulaire = intval($id);
-               $statut = 'prop'; // arbitraire
-       }
-       $puce_statut = charger_fonction('puce_statut', 'inc');
-       ajax_retour($puce_statut($id,$statut,$id_formulaire,$type, true));
-}
-
-?>
diff --git a/www/plugins/formidable_1_0/formidable_administrations.php b/www/plugins/formidable_1_0/formidable_administrations.php
deleted file mode 100644 (file)
index bb0b629..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-
-/**
- * Fichier gérant l'installation et désinstallation du plugin
- *
- * @package SPIP\Formidable\Installation
-**/
-
-// Sécurité
-if (!defined("_ECRIRE_INC_VERSION")) return;
-
-/**
- * Installation/maj des tables de formidable...
- *
- * @param string $nom_meta_base_version
- *     Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
- * @param string $version_cible
- *     Version du schéma de données dans ce plugin (déclaré dans paquet.xml)
- * @return void
- */
-function formidable_upgrade($nom_meta_base_version, $version_cible){
-       // Création des tables
-       include_spip('base/create');
-       include_spip('base/abstract_sql');
-
-       $maj = array();
-       $maj['create'] = array(
-               array('maj_tables',array(
-                       'spip_formulaires',
-                       'spip_formulaires_reponses',
-                       'spip_formulaires_reponses_champs',
-                       'spip_formulaires_liens')),
-       );
-       // Ajout du choix de ce qu'on affiche à la fin des traitements
-       $maj['0.4.0'] = array(array('maj_tables',array('spip_formulaires')));
-       // Ajout d'une URL de redirection
-       $maj['0.5.0'] = array(array('maj_tables',array('spip_formulaires')));
-       // Modif du type du message de retour pour pouvoir mettre plus de chose
-       $maj['0.5.1'] = array(array('sql_alter','TABLE spip_formulaires CHANGE message_retour message_retour text NOT NULL default ""'));
-       // Passer le champ saisies en longtext pour permettre d'y stocker des formulaires longs
-       $maj['0.5.2'] = array(array('sql_alter','TABLE spip_formulaires CHANGE saisies saisies longtext NOT NULL default ""'));
-       // Ajouter un champ date de création
-       $maj['0.5.3'] = array(array('sql_alter','TABLE spip_formulaires ADD date_crea datetime NOT NULL DEFAULT "0000-00-00 00:00:00"'));
-       // Renommer la date de création (pas d'abbréviations dans les noms)
-       $maj['0.5.5'] = array(array('sql_alter','TABLE spip_formulaires CHANGE date_crea date_creation datetime NOT NULL DEFAULT "0000-00-00 00:00:00"'));
-
-       include_spip('base/upgrade');
-       maj_plugin($nom_meta_base_version, $version_cible, $maj);
-}
-
-/**
- * Désinstallation/suppression des tables de formidable
- *
- * @param string $nom_meta_base_version
- *     Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
- * @return void
- */
-function formidable_vider_tables($nom_meta_base_version){
-
-       include_spip('inc/meta');
-       include_spip('base/abstract_sql');
-
-       // On efface les tables du plugin
-       sql_drop_table('spip_formulaires');
-       sql_drop_table('spip_formulaires_reponses');
-       sql_drop_table('spip_formulaires_reponses_champs');
-       sql_drop_table('spip_formulaires_liens');
-
-       // On efface la version entregistrée
-       effacer_meta($nom_meta_base_version);
-}
-
-?>
diff --git a/www/plugins/formidable_1_0/formidable_autorisations.php b/www/plugins/formidable_1_0/formidable_autorisations.php
deleted file mode 100644 (file)
index 91b3ed6..0000000
+++ /dev/null
@@ -1,263 +0,0 @@
-<?php
-
-/**
- * Déclaration des autorisations
- *
- * @package SPIP\Formidable\Autorisations
-**/
-
-// Sécurité
-if (!defined("_ECRIRE_INC_VERSION")) return;
-
-include_spip('action/editer_liens');
-include_spip('inc/config');
-
-/**
- * Autorisation par auteur et par formulaire
- *
- * Seuls les auteurs associés à un formulaire peuvent y accéder
- *
- * @param  int   $id        id du formulaire à tester
- * @param  int   $id_auteur id de l'auteur à tester, si ==0 => auteur courant
- * @return bool  true s'il a le droit, false sinon
- *
-*/
-function formidable_autoriser_par_auteur($id, $id_auteur = 0) {
-       if ($id == 0) return true;
-
-       $retour = false;
-
-       if ($id_auteur == 0)
-               $id_auteur = session_get('id_auteur');
-
-       if ($id_auteur == null) {
-               $retour = false;
-       } else {
-               $autorisations = objet_trouver_liens(array('formulaire'=>$id),array('auteur'=>$id_auteur));
-               $retour = count($autorisations) > 0;
-       }
-
-       return $retour;
-}
-
-/**
- * Réponses à un formulaire éditable par un auteur
- *
- * Est-on en présence d'un auteur qui tente de modifier les réponses d'un formulaire
- * et que Formidable est configuré pour prendre en compte les auteurs
- * et que les auteurs sont en droit de modifier les réponses de leurs formulaires ?
- *
- * @param  array  $qui   Description de l'auteur demandant l'autorisation
- * @return bool  true s'il a le droit, false sinon
- *
-*/
-function formidable_auteur_admin_reponse($qui) {
-       // L'auteur peut-il administrer les réponses ?
-       $admin_reponses_auteur = lire_config('formidable/analyse/admin_reponses_auteur');
-       $auteurs = lire_config('formidable/analyse/auteur');
-       $is_admin = (isset($qui['statut']) and $qui['statut'] == '0minirezo');
-       $retour = ($is_admin or (($auteurs == 'on') and ($admin_reponses_auteur == 'on')));
-
-       return $retour;
-}
-
-/**
- * Fonction d'appel pour le pipeline
- * @pipeline autoriser
- */
-function formidable_autoriser(){}
-
-/**
- * Autorisation d'éditer un formulaire formidable
- *
- * Seuls les admins peuvent éditer les formulaires
- *
- * @param  string $faire Action demandée
- * @param  string $type  Type d'objet sur lequel appliquer l'action
- * @param  int    $id    Identifiant de l'objet
- * @param  array  $qui   Description de l'auteur demandant l'autorisation
- * @param  array  $opt   Options de cette autorisation
- * @return bool          true s'il a le droit, false sinon
-**/
-function autoriser_formulaire_editer_dist($faire, $type, $id, $qui, $opt){
-       $auteurs = lire_config('formidable/analyse/auteur');
-
-       /* administrateur ? */
-       if (isset($qui['statut']) and $qui['statut'] <= '0minirezo' and (!$qui['restreint']))
-               return true;
-
-       /* Test des autorisations par auteur */
-       if ($auteurs == 'on') {
-               return formidable_autoriser_par_auteur($id);
-       } else {
-               /* dans un else car la config 'auteurs' doit primer sur l'admin restreint */
-               if ($GLOBALS['formulaires']['autoriser_admin_restreint'])
-                       return true;
-               else
-                       return false;
-       }
-}
-
-/**
- * Autorisation de voir la liste des formulaires formidable
- *
- *  Admins et rédacteurs peuvent voir les formulaires existants
- *
- * @param  string $faire Action demandée
- * @param  string $type  Type d'objet sur lequel appliquer l'action
- * @param  int    $id    Identifiant de l'objet
- * @param  array  $qui   Description de l'auteur demandant l'autorisation
- * @param  array  $opt   Options de cette autorisation
- * @return bool          true s'il a le droit, false sinon
-**/
-function autoriser_formulaires_menu_dist($faire, $type, $id, $qui, $opt){
-    if (isset($qui['statut']) and $qui['statut'] <= '1comite') return true;
-    else return false;
-}
-
-
-/**
- * Autorisation de répondre à un formidable formidable
- *
- * On peut répondre à un formulaire si :
- * - c'est un formulaire classique
- * - on enregistre et que multiple = oui
- * - on enregistre et que multiple = non et que la personne n'a pas répondu encore
- * - on enregistre et que multiple = non et que modifiable = oui
- *
- * @param  string $faire Action demandée
- * @param  string $type  Type d'objet sur lequel appliquer l'action
- * @param  int    $id    Identifiant de l'objet
- * @param  array  $qui   Description de l'auteur demandant l'autorisation
- * @param  array  $opt   Options de cette autorisation
- * @return bool          true s'il a le droit, false sinon
-**/
-function autoriser_formulaire_repondre_dist($faire, $type, $id, $qui, $opt){
-// On regarde si il y a déjà le formulaire dans les options
-    if (isset($options['formulaire']))
-        $formulaire = $options['formulaire'];
-    // Sinon on va le chercher
-    else{
-        $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id);
-    }
-
-    $traitements = unserialize($formulaire['traitements']);
-
-    // S'il n'y a pas d'enregistrement, c'est forcément bon
-    if (!($options = $traitements['enregistrement']))
-        return true;
-    // Sinon faut voir les options
-    else{
-        // Si multiple = oui c'est bon
-        if ($options['multiple'])
-            return true;
-        else{
-            // Si c'est modifiable, c'est bon
-            if ($options['modifiable'])
-                return true;
-            else{
-                include_spip('inc/formidable');
-                // Si la personne n'a jamais répondu, c'est bon
-                if (!formidable_verifier_reponse_formulaire($id))
-                    return true;
-                else
-                    return false;
-            }
-        }
-    }
-}
-
-/**
- * Autorisation d'associer un nouvel auteur à un formulaire
- *
- * mêmes autorisations que pour éditer le formulaire
- *
-**/
-function autoriser_formulaire_associerauteurs_dist($faire, $type, $id, $qui, $opt) {
-       return autoriser_formulaire_editer_dist($faire, $type, $id, $qui, $opt);
-}
-
-/**
- * Autorisation de modifier un formulaire
- *
- * mêmes autorisations que pour éditer le formulaire
- *
-**/
-function autoriser_formulaire_modifier_dist($faire, $type, $id, $qui, $opt) {
-       return autoriser_formulaire_editer_dist($faire, $type, $id, $qui, $opt);
-}
-
-
-/**
- * Autorisation d'instituer une réponse
- *
- * On peut modérer une réponse si on est admin
- *
- * @param  string $faire Action demandée
- * @param  string $type  Type d'objet sur lequel appliquer l'action
- * @param  int    $id    Identifiant de l'objet
- * @param  array  $qui   Description de l'auteur demandant l'autorisation
- * @param  array  $opt   Options de cette autorisation
- * @return bool          true s'il a le droit, false sinon
-**/
-function autoriser_formulairesreponse_instituer_dist($faire, $type, $id, $qui, $opt){
-       return formidable_auteur_admin_reponse($qui);
-}
-
-/**
- * Autorisation de voir les réponses d'un formulaire formidable
- *
- * Au moins rédacteur pour voir les résultats
- *
- * @param  string $faire Action demandée
- * @param  string $type  Type d'objet sur lequel appliquer l'action
- * @param  int    $id    Identifiant de l'objet
- * @param  array  $qui   Description de l'auteur demandant l'autorisation
- * @param  array  $opt   Options de cette autorisation
- * @return bool          true s'il a le droit, false sinon
-**/
-function autoriser_formulairesreponse_voir_dist($faire, $type, $id, $qui, $opt){
-       return autoriser_formulaire_editer_dist($faire, $type, $id, $qui, $opt);
-}
-
-/**
- * Autorisation de modifier une réponse d'un formulaire formidable
- *
- * suivant la config, un administrateur ou l'auteur du formulaire peuvent
- * voir les résultats
- *
- * @param  string $faire Action demandée
- * @param  string $type  Type d'objet sur lequel appliquer l'action
- * @param  int    $id    Identifiant de l'objet
- * @param  array  $qui   Description de l'auteur demandant l'autorisation
- * @param  array  $opt   Options de cette autorisation
- * @return bool          true s'il a le droit, false sinon
-**/
-function autoriser_formulairesreponse_modifier_dist($faire, $type, $id, $qui, $opt){
-    if ($id_formulaire = intval(sql_getfetsel(
-                       'id_formulaire', 'spip_formulaires_reponses', "id_formulaires_reponse=$id"))) {
-
-               $retour = (autoriser_formulaire_editer_dist($faire, $type, $id_formulaire, $qui, $opt)
-                               and formidable_auteur_admin_reponse($qui));
-       }
-       return $retour;
-}
-
-/**
- * Autorisation de supprimer une réponse d'un formulaire formidable
- *
- * Il faut pouvoir modifier les réponses d'un formulaire pour pouvoir les en supprimer
- *
- * @param  string $faire Action demandée
- * @param  string $type  Type d'objet sur lequel appliquer l'action
- * @param  int    $id    Identifiant de l'objet
- * @param  array  $qui   Description de l'auteur demandant l'autorisation
- * @param  array  $opt   Options de cette autorisation
- * @return bool          true s'il a le droit, false sinon
-**/
-function autoriser_formulairesreponse_supprimer_dist($faire, $type, $id, $qui, $opt) {
-       $retour = autoriser_formulairesreponse_modifier_dist($faire, $type, $id, $qui, $opt);
-       return $retour;
-}
-
-?>
diff --git a/www/plugins/formidable_1_0/formidable_fonctions.php b/www/plugins/formidable_1_0/formidable_fonctions.php
deleted file mode 100644 (file)
index c802999..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-/**
- * Chargement des fonctions pour les squelettes 
- *
- * @package SPIP\Formidable\Fonctions
-**/
-
-include_spip('inc/formidable');
-include_spip('public/formidable_criteres');
diff --git a/www/plugins/formidable_1_0/formidable_options.php b/www/plugins/formidable_1_0/formidable_options.php
deleted file mode 100644 (file)
index 3530bbd..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-<?php
-
-/**
- * Options globales chargées à chaque hit
- *
- * @package SPIP\Formidable\Options
-**/
-
-// Sécurité
-if (!defined("_ECRIRE_INC_VERSION")) return;
-
-// On déclare le formulaire pour éditer un formulaire
-$GLOBALS['formulaires']['editer_formulaire'] = array(
-    array(
-        'saisie' => 'input',
-        'options' => array(
-            'nom' => 'titre',
-            'label' => '<:formidable:editer_titre:>',
-            'obligatoire' => 'oui',
-            'class' => 'multilang'
-        )
-    ),
-    array(
-        'saisie' => 'input',
-        'options' => array(
-            'nom' => 'identifiant',
-            'label' => '<:formidable:editer_identifiant:>',
-            'explication' => '<:formidable:editer_identifiant_explication:>',
-            'obligatoire' => 'oui'
-        ),
-        'verifier' => array(
-            'type' => 'regex',
-            'options' => array(
-                'modele' => '/^[\w]+$/'
-            )
-        )
-    ),
-    array(
-        'saisie' => 'textarea',
-        'options' => array(
-            'nom' => 'message_retour',
-            'label' => '<:formidable:editer_message_ok:>',
-            'explication' => '<:formidable:editer_message_ok_explication:>',
-            'rows' => 5,
-            'li_class' => 'editer_texte',
-            'class' => 'multilang'
-        )
-    ),
-    array(
-        'saisie' => 'textarea',
-        'options' => array(
-            'nom' => 'descriptif',
-            'label' => '<:formidable:editer_descriptif:>',
-            'explication' => '<:formidable:editer_descriptif_explication:>',
-            'rows' => 5,
-            'class' => 'multilang'
-        )
-    ),
-    array(
-        'saisie' => 'selection',
-        'options' => array(
-            'nom' => 'apres',
-            'label' => '<:formidable:editer_apres_label:>',
-            'explication' => '<:formidable:editer_apres_explication:>',
-            'datas' => array(
-                'formulaire' => _T('formidable:editer_apres_choix_formulaire'),
-                'valeurs' => _T('formidable:editer_apres_choix_valeurs'),
-                'stats' => _T('formidable:editer_apres_choix_stats'),
-                'rien' => _T('formidable:editer_apres_choix_rien'),
-                'redirige' => _T('formidable:editer_apres_choix_redirige'),
-            ),
-            'defaut' => 'formulaire',
-            'cacher_option_intro' => 'on'
-        )
-    ),
-    array(
-        'saisie' => 'input',
-        'options' => array(
-            'nom' => 'url_redirect',
-            'label' => '<:formidable:editer_redirige_url:>',
-            'explication' => '<:formidable:editer_redirige_url_explication:>',
-            'obligatoire' => 'non'
-        )
-    )
-);
-
-/* déclaration des différentes variables utilisées pour effectuer l'anonymisation */
-$GLOBALS['formulaires']['variables_anonymisation'] = array(
-       'remote_user' => '$_SERVER["REMOTE_USER"]',
-       'php_auth_user' => '$_SERVER["PHP_AUTH_USER"]',
-);
-
-/*
-* on se contente d'initialiser si ces variable si elles ne
-* le sont pas dans mes_options.php de l'instance
-*/
-if (isset($GLOBALS['formulaires']['passwd']) == false) {
-       $GLOBALS['formulaires']['passwd'] = array(
-               'interne' => 'palabresecreta',
-       );
-}
-
-if (isset($GLOBALS['formulaires']['autoriser_admin_restreint']) == false) {
-       $GLOBALS['formulaires']['autoriser_admin_restreint'] = false;
-}
-
-if (!function_exists('array_fill_keys')) {
-    /**
-     * Remplit un tableau avec des valeurs, en spécifiant les clés
-     *
-     * Fonction dans PHP 5.2+
-     * @see http://php.net/manual/fr/function.array-fill-keys.php
-     *
-     * @param array $keys
-     *     Tableau de valeurs qui sera utilisé comme clés.
-     * @param mixed $value
-     *     Valeur à utiliser pour remplir le tableau.
-     * @return array
-     *     Le tableau rempli.
-    **/
-    function array_fill_keys($keys, $value){
-        array_combine($keys,array_fill(0,count($keys),$value));
-    }
-}
-
-?>
diff --git a/www/plugins/formidable_1_0/formidable_pipelines.php b/www/plugins/formidable_1_0/formidable_pipelines.php
deleted file mode 100644 (file)
index d46418a..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-
-/**
- * Utilisation de pipelines
- * 
- * @package SPIP\Formidable\Pipelines
-**/
-
-// Sécurité
-if (!defined("_ECRIRE_INC_VERSION")) return;
-
-
-/**
- * Optimiser la base de donnée en enlevant les liens de formulaires supprimés
- * 
- * @pipeline optimiser_base_disparus
- * @param array $flux
- *     Données du pipeline
- * @return array
- *     Données du pipeline
- */
-function formidable_optimiser_base_disparus($flux){
-       // Les réponses qui sont à la poubelle
-       $res = sql_select(
-               'id_formulaires_reponse AS id',
-               'spip_formulaires_reponses',
-               'statut = '.sql_quote('poubelle')
-       );
-       
-       // On génère la suppression
-       $flux['data'] += optimiser_sansref('spip_formulaires_reponses', 'id_formulaires_reponse', $res);
-       
-               //
-       // CNIL -- Informatique et libertes
-       //
-       // masquer le numero IP des vieilles réponses
-       //
-       ## date de reference = 4 mois
-       ## definir a 0 pour desactiver
-       ## même constante que pour les forums
-       if (!defined('_CNIL_PERIODE')) {
-               define('_CNIL_PERIODE', 3600*24*31*4);
-       }
-       
-       if (_CNIL_PERIODE) {
-               $critere_cnil = 'date<"'.date('Y-m-d', time()-_CNIL_PERIODE).'"'
-                       . ' AND statut != "spam"'
-                       . ' AND (ip LIKE "%.%" OR ip LIKE "%:%")'; # ipv4 ou ipv6
-               $c = sql_countsel('spip_formulaires_reponses', $critere_cnil);
-               if ($c>0) {
-                       spip_log("CNIL: masquer IP de $c réponses anciennes à formidable");
-                       sql_update('spip_formulaires_reponses', array('ip' => 'MD5(ip)'), $critere_cnil);
-               }
-       }
-       
-       return $flux;
-}
-
-?>
\ No newline at end of file
diff --git a/www/plugins/formidable_1_0/formulaires/configurer_formidable_analyse.html b/www/plugins/formidable_1_0/formulaires/configurer_formidable_analyse.html
deleted file mode 100644 (file)
index 36deadc..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-<div class="formulaire_spip formulaire_configurer formulaire_#FORM">
-
-       <h3 class="titrem"><:formidable:cfg_titre_parametrages_analyse:></h3>
-
-       [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
-       [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
-
-       <form method="post" action="#ENV{action}">
-       <div>
-               #ACTION_FORMULAIRE{#ENV{action}}
-
-               [(#SAISIE{input,classe,
-                       label=<:formidable:cfg_analyse_classe_label:>,
-                       explication=<:formidable:cfg_analyse_classe_explication:>
-                       })]
-               [(#SAISIE{oui_non,auteur,
-                       label=<:formidable:traiter_enregistrement_option_auteur:>,
-                       explication=<:formidable:traiter_enregistrement_option_auteur_explication:>
-                       })]
-               [(#SAISIE{oui_non,admin_reponses_auteur,
-                       label=<:formidable:admin_reponses_auteur:>,
-                       explication=<:formidable:admin_reponses_auteur_explication:>
-                       })]
-               <input type="hidden" name="_meta_casier" value="formidable/analyse" />
-               <p class="boutons"><span class="image_loading">&nbsp;</span><input type="submit" class="submit" value="<:bouton_enregistrer:>" /></p>
-       </div>
-       </form>
-       <script type="text/javascript">
-               $(function(){
-                       if ($('#champ_auteur_non').prop('checked')) {
-                               $('.editer_admin_reponses_auteur').hide();
-                       }
-                       $('.editer_auteur input[name="auteur"]').change(function() {
-                               if ($(this).val() == 'on') $('.editer_admin_reponses_auteur').show(100);
-                               else $('.editer_admin_reponses_auteur').hide(100);
-                       });
-               });
-       </script>
-</div>
diff --git a/www/plugins/formidable_1_0/formulaires/editer_formulaire.html b/www/plugins/formidable_1_0/formulaires/editer_formulaire.html
deleted file mode 100644 (file)
index cd8445e..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<div class="formulaire_spip formulaire_editer formulaire_#ENV{form}[ formulaire_#ENV{form}-(#ENV{id_formulaire,nouveau})]">
-       [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
-       [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
-       [(#ENV{editable}|oui)
-       <form method='post' action='#ENV{action}' enctype='multipart/form-data'><div>
-               [(#REM) declarer les hidden qui declencheront le service du formulaire 
-               parametre : url d'action ]
-               #ACTION_FORMULAIRE{#ENV{action}}
-               
-               <ul>
-                       #GENERER_SAISIES{#ENV{_contenu}}
-               </ul>
-               
-               [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
-               <!--extra-->
-               
-               <p class='boutons'>
-                       <span class='image_loading'></span>
-                       <input type='submit' class='submit' value='<:bouton_enregistrer:>' />
-               </p>
-       </div></form>
-       ]
-</div>
diff --git a/www/plugins/formidable_1_0/formulaires/editer_formulaire.php b/www/plugins/formidable_1_0/formulaires/editer_formulaire.php
deleted file mode 100644 (file)
index 5975036..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-
-// Sécurité
-if (!defined("_ECRIRE_INC_VERSION")) return;
-
-include_spip('inc/saisies');
-include_spip('action/editer_liens');
-include_spip('inc/config');
-
-function formulaires_editer_formulaire_charger($id_formulaire, $nouveau){
-       $contexte = array();
-       $editer_formulaire = $GLOBALS['formulaires']['editer_formulaire'];
-       $champs = saisies_lister_champs($editer_formulaire);
-       $id_formulaire = intval($id_formulaire);
-       
-       $contexte['_contenu'] = $editer_formulaire;
-       
-       // Est-ce qu'on a le droit ?
-       if (autoriser('editer', 'formulaire', $id_formulaire)){
-               // Est-ce que le formulaire existe ?
-               if ($id_formulaire > 0 and $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id_formulaire)){
-                       // Alors on pré-remplit avec les valeurs
-                       foreach($champs as $champ)
-                               $contexte[$champ] = $formulaire[$champ];
-                       $contexte['_action'] = array('editer_formulaire', $id_formulaire);
-               }
-               // Sinon si c'est une création
-               elseif ($nouveau == 'oui'){
-                       // On déclare juste les champs
-                       foreach ($champs as $champ)
-                               $contexte[$champ] = '';
-                       $contexte['_action'] = array('editer_formulaire', $nouveau);
-               }
-               // Sinon c'est n'importe quoi
-               else{
-                       $contexte['editable'] = false;
-                       $contexte['message_erreur'] = 'Erreur dans les parametres.';
-               }
-       }
-       else{
-               $contexte['editable'] = false;
-               $contexte['message_erreur'] = _T('formidable:erreur_autorisation');
-       }
-       
-       return $contexte;
-}
-
-function formulaires_editer_formulaire_verifier($id_formulaire, $nouveau){
-       $configurer_formulaire = $GLOBALS['formulaires']['editer_formulaire'];
-       $erreurs = saisies_verifier($configurer_formulaire);
-       // On vérifie l'unicité de l'identifiant
-       if (!$erreurs['identifiant'] and sql_getfetsel('id_formulaire', 'spip_formulaires', 'identifiant = '.sql_quote(_request('identifiant').' and id_formulaire != '.$id_formulaire)))
-               $erreurs['identifiant'] = _T('formidable:erreur_identifiant');
-       return $erreurs;
-}
-
-function formulaires_editer_formulaire_traiter($id_formulaire, $nouveau){
-       include_spip('inc/editer');
-       $id_formulaire = $id_formulaire ? $id_formulaire : $nouveau;
-       $retours = formulaires_editer_objet_traiter('formulaire', $id_formulaire);
-       
-       // S'il n'y a pas d'erreur et que le formulaire est bien là
-       if (!$retours['message_erreur'] and $retours['id_formulaire'] > 0){
-               // Si c'était un nouveau on reste sur l'édition
-               if (!intval($id_formulaire) and $nouveau == 'oui'){
-                       // Tout a fonctionné. En fonction de la config, on attribue l'auteur courant
-                       $auteurs = lire_config('formidable/analyse/auteur');
-                       if ($auteurs == 'on') {
-                               if ($id_auteur = session_get('id_auteur')) {
-                                       // association (par défaut) du formulaire et de l'auteur courant
-                                       objet_associer(array('formulaire'=>$retours['id_formulaire']), array('auteur'=>$id_auteur));
-                               }
-                       }
-                       $retours['redirect'] = parametre_url(generer_url_ecrire('formulaire_edit'), 'id_formulaire', $retours['id_formulaire'], '&');
-               }
-               // Sinon on redirige vers la page de visualisation
-               else{
-                       $retours['redirect'] = parametre_url(generer_url_ecrire('formulaire'), 'id_formulaire', $retours['id_formulaire'], '&');
-               }
-       }
-       
-       return $retours;
-}
-
-?>
diff --git a/www/plugins/formidable_1_0/formulaires/editer_formulaire_champs.html b/www/plugins/formidable_1_0/formulaires/editer_formulaire_champs.html
deleted file mode 100644 (file)
index 8e88ff4..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-
-<div class="formulaire_spip formulaire_editer formulaire_#ENV{form}[ formulaire_#ENV{form}-(#ENV{id,nouveau})]">
-       [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
-       [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
-       
-       [(#ENV*{message_erreur}|non)
-       <div class="ajax">
-               #FORMULAIRE_CONSTRUIRE_FORMULAIRE{formidable_#ENV{id}, #ENV{_saisies}}
-       </div>
-       ]
-
-       [(#ENV{editable}|oui)
-       <form method="post" action="#ENV{action}" enctype="multipart/form-data"><div>
-               [(#REM) declarer les hidden qui declencheront le service du formulaire 
-               parametre : url d'action ]
-               #ACTION_FORMULAIRE{#ENV{action}}
-               
-               <p class="boutons">
-                       <span class="image_loading"></span>
-                       [(#ENV*{message_erreur}|non)
-                       <em class="attention"><:saisies:construire_attention_enregistrer:></em>
-                       <button type="submit" class="submit">
-                               <img src="#CHEMIN{images/formulaire-enregistrer-16.png}" alt="" />
-                               <:bouton_enregistrer:>
-                       </button>
-                       ]
-                       [(#ENV*{message_erreur}|oui)
-                       <button type="submit" class="link" name="annulation" value="oui">
-                               <:bouton_annuler:>
-                       </button>
-                       <button type="submit" class="submit" name="confirmation" value="oui">
-                               <img src="#CHEMIN{images/formulaire-enregistrer-16.png}" alt="" />
-                               <:bouton_enregistrer:>
-                       </button>
-                       ]
-               </p>
-       </div></form>
-       ]
-</div>
diff --git a/www/plugins/formidable_1_0/formulaires/editer_formulaire_champs.php b/www/plugins/formidable_1_0/formulaires/editer_formulaire_champs.php
deleted file mode 100644 (file)
index e999c7b..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-<?php
-
-// Sécurité
-if (!defined("_ECRIRE_INC_VERSION")) return;
-
-
-function formulaires_editer_formulaire_champs_charger($id_formulaire){
-       $contexte = array();
-       $id_formulaire = intval($id_formulaire);
-       
-       // On teste si le formulaire existe
-       if ($id_formulaire
-               and $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id_formulaire)
-               and autoriser('editer', 'formulaire', $id_formulaire)
-       ){
-               $saisies = unserialize($formulaire['saisies']);
-               if (!is_array($saisies)) $saisies = array();
-               $contexte['_saisies'] = $saisies;
-               $contexte['id'] = $id_formulaire;
-       }
-       
-       return $contexte;
-}
-
-function formulaires_editer_formulaire_champs_verifier($id_formulaire){
-       include_spip('inc/saisies');
-       $erreurs = array();
-       
-       // Si c'est pas une confirmation ni une annulation
-       if (!_request('confirmation') and !($annulation = _request('annulation'))){
-               // On récupère le formulaire dans la session
-               $saisies_nouvelles = session_get("constructeur_formulaire_formidable_$id_formulaire");
-       
-               // On récupère les anciennes saisies
-               $saisies_anciennes = unserialize(sql_getfetsel(
-                       'saisies',
-                       'spip_formulaires',
-                       'id_formulaire = '.$id_formulaire
-               ));
-       
-               // On compare
-               $comparaison = saisies_comparer($saisies_anciennes, $saisies_nouvelles);
-       
-               // S'il y a des suppressions, on demande confirmation avec attention
-               if ($comparaison['supprimees'])
-                       $erreurs['message_erreur'] = _T('saisies:construire_attention_supprime');
-       }
-       // Si on annule on génère une erreur bidon juste pour réafficher le formulaire
-       elseif ($annulation){
-               $erreurs['pouetpouet'] = true;
-       }
-       
-       return $erreurs;
-}
-
-function formulaires_editer_formulaire_champs_traiter($id_formulaire){
-       include_spip('inc/saisies');
-       $retours = array();
-       $id_formulaire = intval($id_formulaire);
-       
-       // On récupère le formulaire dans la session
-       $saisies_nouvelles = session_get("constructeur_formulaire_formidable_$id_formulaire");
-       
-       // On récupère les anciennes saisies
-       $saisies_anciennes = unserialize(sql_getfetsel(
-               'saisies',
-               'spip_formulaires',
-               'id_formulaire = '.$id_formulaire
-       ));
-       
-       // On envoie les nouvelles dans la table dans la table
-       $ok = sql_updateq(
-               'spip_formulaires',
-               array(
-                       'saisies' => serialize($saisies_nouvelles)
-               ),
-               'id_formulaire = '.$id_formulaire
-       );
-       
-       // Si c'est bon on appelle d'éventuelles fonctions d'update des traitements puis on renvoie vers la config des traitements
-       if ($ok){
-               // On va chercher les traitements
-               $traitements = unserialize(sql_getfetsel(
-                       'traitements',
-                       'spip_formulaires',
-                       'id_formulaire = '.$id_formulaire
-               ));
-               
-               // Pour chaque traitements on regarde s'i y a une fonction d'update
-               if (is_array($traitements))
-                       foreach ($traitements as $type_traitement => $traitement){
-                               if ($update = charger_fonction('update', "traiter/$type_traitement", true)){
-                                       $update($id_formulaire, $traitement, $saisies_anciennes, $saisies_nouvelles);
-                               }
-                       }
-               
-               // On redirige vers la config suivante
-               $retours['redirect'] = parametre_url(
-                       parametre_url(
-                               parametre_url(
-                                       generer_url_ecrire('formulaire_edit')
-                                       , 'id_formulaire', $id_formulaire
-                               )
-                               , 'configurer', 'traitements'
-                       )
-                       , 'avertissement', 'oui'
-               );
-       }
-       
-       return $retours;
-}
-
-?>
diff --git a/www/plugins/formidable_1_0/formulaires/editer_formulaire_traitements.html b/www/plugins/formidable_1_0/formulaires/editer_formulaire_traitements.html
deleted file mode 100644 (file)
index 31dbc36..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-<div class="formulaire_spip formulaire_editer formulaire_#ENV{form}[ formulaire_#ENV{form}-(#ENV{id,nouveau})]">
-       [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
-       [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
-       
-       [(#ENV{editable}|oui)
-       <form method="post" action="#ENV{action}" enctype="multipart/form-data"><div>
-               [(#REM) declarer les hidden qui declencheront le service du formulaire 
-               parametre : url d'action ]
-               #ACTION_FORMULAIRE{#ENV{action}}
-               
-               <ul>
-                       #GENERER_SAISIES{#ENV{_configurer_traitements}}
-               </ul>
-               
-               [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
-               <!--extra-->
-               
-               <p class="boutons"><span class="image_loading"></span><input type="submit" class="submit" value="<:bouton_enregistrer:>" /></p>
-       </div></form>
-       <script type="text/javascript">
-               $(function(){
-                       // On commence par cacher toutes les options
-                       $('.options_traiter').hide().find('h3').hide();
-                       
-                       // Ensuite on parcourt les traitements choisis
-                       $('.editer_traitements_choisis input')
-                               .each(function(){
-                                       // Si c'est coché on affiche le fieldset d'options
-                                       if ($(this).is(':checked')){
-                                               $('.options_traiter.'+$(this).val()).show();
-                                               $(this).parents('.editer_traitements_choisis').toggleClass('hover');
-                                       }
-                               })
-                               .click(function(){
-                                       $('.options_traiter.'+$(this).val()).slideToggle('fast');
-                                       $(this).parents('.editer_traitements_choisis').toggleClass('hover');
-                               });
-               });
-       </script>
-       ]
-</div>
diff --git a/www/plugins/formidable_1_0/formulaires/editer_formulaire_traitements.php b/www/plugins/formidable_1_0/formulaires/editer_formulaire_traitements.php
deleted file mode 100644 (file)
index 2303ec6..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-<?php
-
-// Sécurité
-if (!defined("_ECRIRE_INC_VERSION")) return;
-
-include_spip('inc/formidable');
-
-function formulaires_editer_formulaire_traitements_charger($id_formulaire){
-       $contexte = array();
-       $id_formulaire = intval($id_formulaire);
-       
-       // On teste si le formulaire existe
-       if ($id_formulaire
-               and $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id_formulaire)
-               and autoriser('editer', 'formulaire', $id_formulaire)
-       ){
-               $traitements = unserialize($formulaire['traitements']);
-               $saisies = unserialize($formulaire['saisies']);
-               if (!is_array($traitements)) $traitements = array();
-               if (!is_array($saisies)) $saisies = array();
-               $contexte['traitements'] = $traitements;
-               $contexte['traitements_choisis'] = array_keys($traitements);
-               $contexte['formulaire'] = _T_ou_typo($saisies, 'multi');
-               $contexte['id'] = $id_formulaire;
-               
-               $traitements_disponibles = traitements_lister_disponibles();
-               $configurer_traitements = array();
-               foreach ($traitements_disponibles as $type_traitement => $traitement){
-                       $configurer_traitements[] = array(
-                               'saisie' => 'checkbox',
-                               'options' => array(
-                                       'nom' => 'traitements_choisis',
-                                       'label' => $traitement['titre'],
-                                       'datas' => array(
-                                               $type_traitement => $traitement['description']
-                                       )
-                               )
-                       );
-                       $configurer_traitements[] = array(
-                               'saisie' => 'fieldset',
-                               'options' => array(
-                                       'nom' => 'options',
-                                       'label' => $traitement['titre'],
-                                       'li_class' => "$type_traitement options_traiter"
-                               ),
-                               'saisies' => saisies_transformer_noms($traitement['options'], '/^.*$/', "traitements[$type_traitement][\\0]")
-                       );
-               }
-               $contexte['_configurer_traitements'] = $configurer_traitements;
-               
-               // Si on demande un avertissement et qu'il y a déjà des traitements de configurés
-               if (_request('avertissement') == 'oui')
-                       $contexte['message_ok'] = $traitements ? _T('formidable:traitements_avertissement_modification') : _T('formidable:traitements_avertissement_creation');
-       }
-       else{
-               $contexte['editable'] = false;
-       }
-       
-       // On enlève l'éventuel avertissement pour le prochain envoi
-       $contexte['action'] = parametre_url(self(), 'avertissement', '');
-       
-       return $contexte;
-}
-
-function formulaires_editer_formulaire_traitements_verifier($id_formulaire){
-       include_spip('inc/saisies');
-       $erreurs = array();
-       $traitements_disponibles = traitements_lister_disponibles();
-       
-       // On regarde quels traitements sont demandés
-       $traitements_choisis = _request('traitements_choisis');
-       
-       if (is_array($traitements_choisis))
-               foreach ($traitements_choisis as $type_traitement){
-                       $erreurs = array_merge($erreurs, saisies_verifier(saisies_transformer_noms($traitements_disponibles[$type_traitement]['options'], '/^.*$/', "traitements[$type_traitement][\\0]")));
-               }
-       
-       return $erreurs;
-}
-
-function formulaires_editer_formulaire_traitements_traiter($id_formulaire){
-       $retours = array();
-       $id_formulaire = intval($id_formulaire);
-       
-       // On récupère tout le tableau des traitements
-       $traitements = _request('traitements');
-       // On ne garde que les morceaux qui correspondent aux traitements choisis
-       $traitements_choisis = _request('traitements_choisis');
-       if (!$traitements_choisis) $traitements_choisis = array();
-       $traitements_choisis = array_flip($traitements_choisis);
-       $traitements = array_intersect_key($traitements, $traitements_choisis);
-       
-       // Et on l'enregistre tel quel
-       $ok = sql_updateq(
-               'spip_formulaires',
-               array(
-                       'traitements' => serialize($traitements)
-               ),
-               'id_formulaire = '.$id_formulaire
-       );
-       
-       // On va sur la page de visualisation quand c'est fini
-       if ($ok){
-               $retours['redirect'] = parametre_url(generer_url_ecrire('formulaire'), 'id_formulaire', $id_formulaire);
-       }
-       else{
-               $retours['editable'] = true;
-               $retours['message_erreur'] = _T('formidable:erreur_base');
-       }
-       
-       return $retours;
-}
-
-?>
diff --git a/www/plugins/formidable_1_0/formulaires/formidable.html b/www/plugins/formidable_1_0/formulaires/formidable.html
deleted file mode 100644 (file)
index e1f5afe..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-<BOUCLE_remplacer_le_formulaire(CONDITION){si #ENV{_remplacer_formulaire}}>\r
-    [(#REM) Afficher du HTML si prévu par un plugin ou pour les stats ]\r
-    [(#ENV**{_remplacer_formulaire})]\r
-</BOUCLE_remplacer_le_formulaire>\r
-<BOUCLE_formulaire(FORMULAIRES){id_formulaire=#ENV{id}}>\r
-       [(#SET{enregistrement,[(#TRAITEMENTS**|unserialize|table_valeur{'enregistrement'})]})]\r
-       [(#SET{anonymiser,[(#GET{enregistrement}|table_valeur{'anonymiser'})]})]\r
-       [(#GET{anonymiser}|=={on}|oui)<h3><:formidable:formulaire_anonyme_explication:></h3>]\r
-</BOUCLE_formulaire>\r
-<div class="formulaire_spip formulaire_#ENV{form}[ formulaire_#ENV{form}-(#ENV{id,nouveau})]">\r
-    [<div class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok}|propre)</div>]\r
-    [<div class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur}|propre)</div>]\r
-\r
-    [(#ENV{editable}|oui)\r
-    <form method='post' action='#ENV{action}' enctype='multipart/form-data'><div>\r
-        [(#REM) declarer les hidden qui declencheront le service du formulaire\r
-        parametre : url d'action ]\r
-        #ACTION_FORMULAIRE{#ENV{action}}\r
-\r
-        <ul>\r
-            #GENERER_SAISIES{#ENV{_saisies}}\r
-            <li style="display:none;">\r
-                <label for="mechantrobot-#ENV{id}"><:antispam_champ_vide:></label>\r
-                <input type="text" id="mechantrobot-#ENV{id}" name="mechantrobot" value="#ENV{mechantrobot}" />\r
-            </li>\r
-        </ul>\r
-\r
-        [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]\r
-        <!--extra-->\r
-\r
-        <p class='boutons'>\r
-            <span class='image_loading'></span>\r
-            <input type='submit' class='submit' value='<:bouton_valider:>' />\r
-        </p>\r
-    </div></form>\r
-    ]\r
-    [(#EDITABLE|non)\r
-        [(#ENV{formidable_afficher_apres}|=={valeurs}|oui)\r
-            #VOIR_SAISIES{#ENV*{_saisies},#ENV}\r
-        ]\r
-        [(#ENV{formidable_afficher_apres}|=={rien}|oui)\r
-        ]\r
-        [(#ENV{formidable_afficher_apres}|=={stats}|oui)\r
-            #MODELE{formulaire_analyse,id_formulaire=#ENV{id}}\r
-        ]\r
-    ]\r
-    <br />\r
-</div>\r
-<//B_remplacer_le_formulaire>\r
diff --git a/www/plugins/formidable_1_0/formulaires/formidable.php b/www/plugins/formidable_1_0/formulaires/formidable.php
deleted file mode 100644 (file)
index 905b4bf..0000000
+++ /dev/null
@@ -1,295 +0,0 @@
-<?php
-
-/**
- * Gestion de l'affichage et traitement d'un formulaire Formidable
- *
- * @package SPIP\Formidable\Formulaires
-**/
-
-// Sécurité
-if (!defined("_ECRIRE_INC_VERSION")) return;
-
-include_spip('inc/formidable');
-include_spip('inc/saisies');
-include_spip('base/abstract_sql');
-include_spip('inc/autoriser');
-
-/**
- * Chargement du formulaire CVT de Formidable.
- *
- * Genere le formulaire dont l'identifiant (numerique ou texte est indique)
- *
- * @param int|string $id_formulaire
- *     Identifiant numerique ou textuel du formulaire formidable
- * @param array $valeurs
- *     Valeurs par défauts passées au contexte du formulaire
- *     Exemple : array('hidden_1' => 3) pour que champ identifie "@hidden_1@" soit prerempli
- * @param int|bool $id_formulaires_reponse
- *     Identifiant d'une réponse pour forcer la reedition de cette reponse spécifique
- *
- * @return array
- *     Contexte envoyé au squelette HTML du formulaire.
-**/
-function formulaires_formidable_charger($id_formulaire, $valeurs=array(), $id_formulaires_reponse=false){
-    $contexte = array();
-
-    // On peut donner soit un id soit un identifiant
-    if (intval($id_formulaire) > 0)
-        $where = 'id_formulaire = '.intval($id_formulaire);
-    elseif (is_string($id_formulaire))
-        $where = 'identifiant = '.sql_quote($id_formulaire);
-    else
-        return;
-
-    // On cherche si le formulaire existe
-    if ($formulaire = sql_fetsel('*', 'spip_formulaires', $where)) {
-        // On ajoute un point d'entrée avec les infos de ce formulaire
-        // pour d'eventuels plugins qui en ont l'utilité
-        $contexte['_formidable'] = $formulaire;
-        
-        // Est-ce que la personne a le droit de répondre ?
-        if (autoriser('repondre', 'formulaire', $formulaire['id_formulaire'], null, array('formulaire'=>$formulaire))){
-            $saisies = unserialize($formulaire['saisies']);
-            $traitements = unserialize($formulaire['traitements']);
-            
-            // On déclare les champs avec les valeurs par défaut
-            $contexte = array_merge(saisies_lister_valeurs_defaut($saisies), $contexte);
-            $contexte['mechantrobot'] = '';
-            // On ajoute le formulaire complet
-            $contexte['_saisies'] = $saisies;
-
-            $contexte['id'] = $formulaire['id_formulaire'];
-            $contexte['_hidden'] = '<input type="hidden" name="id_formulaire" value="'.$contexte['id'].'"/>';
-
-            // S'il y a des valeurs par défaut dans l'appel, alors on pré-remplit
-            if ($valeurs){
-                // Si c'est une chaine on essaye de la parser
-                if (is_string($valeurs)){
-                    $liste = explode(',', $valeurs);
-                    $liste = array_map('trim', $liste);
-                    $valeurs = array();
-                    foreach ($liste as $i=>$cle_ou_valeur){
-                        if ($i % 2 == 0)
-                            $valeurs[$liste[$i]] = $liste[$i+1];
-                    }
-                }
-
-                // Si on a un tableau, alors on écrase avec les valeurs données depuis l'appel
-                if ($valeurs and is_array($valeurs)){
-                    $contexte = array_merge($contexte, $valeurs);
-                }
-            }
-
-            // Si on passe un identifiant de reponse, on edite cette reponse si elle existe
-            if ($id_formulaires_reponse = intval($id_formulaires_reponse)) {
-                $contexte = formidable_definir_contexte_avec_reponse($contexte, $id_formulaires_reponse, $ok);
-                if ($ok) {
-                    // On ajoute un hidden pour dire que c'est une modif
-                    $contexte['_hidden'] .= "\n".'<input type="hidden" name="deja_enregistre_'.$formulaire['id_formulaire'].'" value="'.$id_formulaires_reponse.'"/>';
-                } else {
-                    $contexte['editable'] = false;
-                    $contexte['message_erreur'] = _T('formidable:traiter_enregistrement_erreur_edition_reponse_inexistante');
-                }
-            } else {
-
-                // calcul des paramètres d'anonymisation
-                               $options = isset($traitements['enregistrement']) ? $traitements['enregistrement'] : null;
-
-                $anonymisation = (isset($options['anonymiser']) && $options['anonymiser'] == true)
-                    ? isset($options['anonymiser_variable']) ? $options['anonymiser_variable'] : ''
-                    : '';
-
-                // Si multiple = non mais que c'est modifiable, alors on va chercher
-                // la dernière réponse si elle existe
-                if ($options
-                    and !$options['multiple']
-                    and $options['modifiable']
-                    and $reponses = formidable_verifier_reponse_formulaire($formulaire['id_formulaire'], $options['identification'], $anonymisation)
-                ){
-                    $id_formulaires_reponse = array_pop($reponses);
-                    $contexte = formidable_definir_contexte_avec_reponse($contexte, $id_formulaires_reponse, $ok);
-
-                    // On ajoute un hidden pour dire que c'est une modif
-                    $contexte['_hidden'] .= "\n".'<input type="hidden" name="deja_enregistre_'.$formulaire['id_formulaire'].'" value="'.$id_formulaires_reponse.'"/>';
-                }
-
-            }
-        }
-        else{
-            $contexte['editable'] = false;
-            // le formulaire a déjà été répondu.
-            // peut être faut il afficher les statistiques des réponses
-            if ($formulaire['apres'] == 'stats') {
-                // Nous sommes face à un sondage auquel on a déjà répondu !
-                // On remplace complètement l'affichage du formulaire
-                // par un affichage du résultat de sondage !
-                $contexte['_remplacer_formulaire'] = recuperer_fond('modeles/formulaire_analyse', array(
-                    'id_formulaire' => $formulaire['id_formulaire'],
-                ));
-            } else {
-                $contexte['message_erreur'] = _T('formidable:traiter_enregistrement_erreur_deja_repondu');
-            }
-        }
-    }
-    else{
-        $contexte['editable'] = false;
-        $contexte['message_erreur'] = _T('formidable:erreur_inexistant');
-    }
-    if (!isset($contexte['_hidden'])) {
-        $contexte['_hidden'] = '';
-    }
-    $contexte['_hidden'] .= "\n".'<input type="hidden" name="formidable_afficher_apres'/*.$formulaire['id_formulaire']*/.'" value="'.$formulaire['apres'].'"/>';// marche pas
-
-    $contexte['formidable_afficher_apres']=$formulaire['apres'];
-
-    return $contexte;
-}
-
-
-/**
- * Vérification du formulaire CVT de Formidable.
- *
- * Pour chaque champ posté, effectue les vérifications demandées par
- * les saisies et retourne éventuellement les erreurs de saisie.
- *
- * @param int|string $id_formulaire
- *     Identifiant numerique ou textuel du formulaire formidable
- * @param array $valeurs
- *     Valeurs par défauts passées au contexte du formulaire
- *     Exemple : array('hidden_1' => 3) pour que champ identifie "@hidden_1@" soit prerempli
- * @param int|bool $id_formulaires_reponse
- *     Identifiant d'une réponse pour forcer la reedition de cette reponse spécifique
- *
- * @return array
- *     Tableau des erreurs
-**/
-function formulaires_formidable_verifier($id_formulaire, $valeurs=array(), $id_formulaires_reponse=false){
-    $erreurs = array();
-
-    // Sale bête !
-    if (_request('mechantrobot') != ''){
-        $erreurs['hahahaha'] = 'hahahaha';
-        return $erreurs;
-    }
-
-    $id_formulaire = intval(_request('id_formulaire'));
-    $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id_formulaire);
-    $saisies = unserialize($formulaire['saisies']);
-
-    $erreurs = saisies_verifier($saisies);
-
-    if ($erreurs and !isset($erreurs['message_erreur']))
-        $erreurs['message_erreur'] = _T('formidable:erreur_generique');
-
-    return $erreurs;
-}
-
-
-/**
- * Traitement du formulaire CVT de Formidable.
- *
- * Exécute les traitements qui sont indiqués dans la configuration des
- * traitements de ce formulaire formidable.
- *
- * Une fois fait, gère le retour après traitements des saisies en fonction
- * de ce qui a été configuré dans le formulaire, par exemple :
- * - faire réafficher le formulaire,
- * - faire afficher les saisies
- * - rediriger sur une autre page...
- *
- * @param int|string $id_formulaire
- *     Identifiant numerique ou textuel du formulaire formidable
- * @param array $valeurs
- *     Valeurs par défauts passées au contexte du formulaire
- *     Exemple : array('hidden_1' => 3) pour que champ identifie "@hidden_1@" soit prerempli
- * @param int|bool $id_formulaires_reponse
- *     Identifiant d'une réponse pour forcer la reedition de cette reponse spécifique
- *
- * @return array
- *     Tableau des erreurs
-**/
-function formulaires_formidable_traiter($id_formulaire, $valeurs=array(), $id_formulaires_reponse=false){
-       $retours = array();
-    $id_formulaire = intval(_request('id_formulaire'));
-    $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id_formulaire);
-    $traitements = unserialize($formulaire['traitements']);
-
-    // selon le choix, le formulaire se remet en route à la fin ou non
-    $retours['editable'] = ($formulaire['apres']=='formulaire');
-    $retours['formidable_afficher_apres'] = $formulaire['apres'];
-
-    // Si on a une redirection valide
-    if (($formulaire['apres']== "redirige") AND ($formulaire['url_redirect']!="")) {
-        refuser_traiter_formulaire_ajax();
-        // traiter les raccourcis artX, brX
-        include_spip("inc/lien");
-        $url_redirect = typer_raccourci($formulaire['url_redirect']);
-        if (count($url_redirect)>2) {
-            $url_redirect = $url_redirect[0].$url_redirect[2];
-        } else {
-            $url_redirect = $formulaire['url_redirect'];      // URL classique
-        }
-
-        $retours['redirect'] = $url_redirect;
-    }
-
-    // Si on a des traitements
-    if (is_array($traitements) and !empty($traitements)) {
-        foreach($traitements as $type_traitement=>$options){
-            if ($appliquer_traitement = charger_fonction($type_traitement, 'traiter/', true)) {
-                $retours = $appliquer_traitement(
-                    array(
-                        'formulaire' => $formulaire,
-                        'options' => $options
-                    ),
-                    $retours
-                );
-            }
-        }
-
-        // Si on a personnalisé le message de retour, c'est lui qui est affiché uniquement
-        if ($formulaire['message_retour']) {
-            $retours['message_ok'] = _T_ou_typo($formulaire['message_retour']);
-        }
-    }
-    else{
-        $retours['message_ok'] = _T('formidable:retour_aucun_traitement');
-    }
-
-    return $retours;
-}
-
-
-/**
- * Ajoute dans le contexte les elements
- * donnés par une reponse de formulaire indiquée
- *
- * @param array $contexte
- *     Contexte pour le squelette HTML du formulaire
- * @param int $id_formulaires_reponse
- *     Identifiant de réponse
- * @param bool $ok
- *     La reponse existe bien ?
- * @return array $contexte
- *     Contexte complète des nouvelles informations
- *
-**/
-function formidable_definir_contexte_avec_reponse($contexte, $id_formulaires_reponse, &$ok) {
-    // On va chercher tous les champs
-    $champs = sql_allfetsel(
-        'nom, valeur',
-        'spip_formulaires_reponses_champs',
-        'id_formulaires_reponse = '.$id_formulaires_reponse
-    );
-    $ok = count($champs) ? true : false;
-
-    // On remplit le contexte avec
-    foreach ($champs as $champ){
-        $test_array = unserialize($champ['valeur']);
-        $contexte[$champ['nom']] = is_array($test_array) ? $test_array : $champ['valeur'];
-    }
-
-    return $contexte;
-}
-
-?>
diff --git a/www/plugins/formidable_1_0/formulaires/importer_formulaire.html b/www/plugins/formidable_1_0/formulaires/importer_formulaire.html
deleted file mode 100644 (file)
index 139193d..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<div class="formulaire_spip formulaire_#ENV{form}[ formulaire_#ENV{form}-(#ENV{id})]">
-       <h3 class="titrem"><:formidable:importer_formulaire:></h3>
-       [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
-       [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
-       
-       [(#ENV{editable}|oui)
-       <form method="post" action="#ENV{action}" enctype="multipart/form-data"><div>
-               [(#REM) declarer les hidden qui declencheront le service du formulaire 
-               parametre : url d'action ]
-               #ACTION_FORMULAIRE{#ENV{action}}
-               
-               <ul>
-                       [(#SAISIE{selection, type_import,
-                               label=<:formidable:importer_formulaire_format_label:>,
-                               datas=#ENV{_types_import},
-                               defaut=yaml,
-                               cacher_option_intro=oui})]
-                       
-                       [(#SAISIE{input, fichier,
-                               label=<:formidable:importer_formulaire_fichier_label:>,
-                               type=file,
-                               size=6})]
-               </ul>
-               
-               [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
-               <!--extra-->
-               
-               <p class="boutons"><span class="image_loading"></span><input type="submit" class="submit" value="<:bouton_telecharger:>" /></p>
-       </div></form>
-       ]
-</div>
diff --git a/www/plugins/formidable_1_0/formulaires/importer_formulaire.php b/www/plugins/formidable_1_0/formulaires/importer_formulaire.php
deleted file mode 100644 (file)
index be0759f..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-
-// Sécurité
-if (!defined("_ECRIRE_INC_VERSION")) return;
-
-include_spip('inc/formidable');
-include_spip('inc/config');
-
-function formulaires_importer_formulaire_charger(){
-       
-       $contexte = array();
-       
-       // On va chercher toutes les fonctions d'importation existantes
-       $types_echange = echanges_formulaire_lister_disponibles();
-       $types_import = array();
-       foreach ($types_echange['importer'] as $type=>$fonction){
-               $types_import[$type] = _T("formidable:echanger_formulaire_${type}_importer");
-       }
-       
-       $contexte['_types_import'] = $types_import;
-       
-       return $contexte;
-}
-
-function formulaires_importer_formulaire_verifier(){
-       $erreurs = array();
-       
-       return $erreurs;
-}
-
-function formulaires_importer_formulaire_traiter(){
-       $retours = array();
-       
-       if (!$_FILES['fichier']['error']){
-               $type_import = _request('type_import');
-               $fichier = $_FILES['fichier']['tmp_name'];
-       
-               $importer = charger_fonction('importer', "echanger/formulaire/$type_import", true);
-               $erreur_ou_id = $importer($fichier);
-               
-               if (!is_numeric($erreur_ou_id)){
-                       $retours['message_erreur'] = $erreur;
-                       $retours['editable'] = true;
-               }
-               else{
-                       $id_formulaire = intval($erreur_ou_id);
-                       // Tout a fonctionné. En fonction de la config, on attribue l'auteur courant
-                       $auteurs = lire_config('formidable/analyse/auteur');
-                       if ($auteurs == 'on') {
-                               if ($id_auteur = session_get('id_auteur')) {
-                                       // association (par défaut) du formulaire et de l'auteur courant
-                                       objet_associer(array('formulaire'=>$id_formulaire), array('auteur'=>$id_auteur));
-                               }
-                       }
-                       $retours['redirect'] = generer_url_ecrire('formulaire', "id_formulaire=$id_formulaire");
-               }
-       }
-       
-       return $retours;
-}
-
-?>
diff --git a/www/plugins/formidable_1_0/icones_barre/formulaire.png b/www/plugins/formidable_1_0/icones_barre/formulaire.png
deleted file mode 100644 (file)
index 0cf4900..0000000
Binary files a/www/plugins/formidable_1_0/icones_barre/formulaire.png and /dev/null differ
diff --git a/www/plugins/formidable_1_0/images/formidable-128.png b/www/plugins/formidable_1_0/images/formidable-128.png
deleted file mode 100644 (file)
index 8d6b21c..0000000
Binary files a/www/plugins/formidable_1_0/images/formidable-128.png and /dev/null differ
diff --git a/www/plugins/formidable_1_0/images/formidable-24.png b/www/plugins/formidable_1_0/images/formidable-24.png
deleted file mode 100644 (file)
index c8c577f..0000000
Binary files a/www/plugins/formidable_1_0/images/formidable-24.png and /dev/null differ
diff --git a/www/plugins/formidable_1_0/images/formidable-64.png b/www/plugins/formidable_1_0/images/formidable-64.png
deleted file mode 100644 (file)
index 80d5ab8..0000000
Binary files a/www/plugins/formidable_1_0/images/formidable-64.png and /dev/null differ
diff --git a/www/plugins/formidable_1_0/images/formidable.svg b/www/plugins/formidable_1_0/images/formidable.svg
deleted file mode 100644 (file)
index 5baf77e..0000000
+++ /dev/null
@@ -1,1104 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg:svg
-   xmlns:i="http://ns.adobe.com/AdobeIllustrator/10.0/"
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="64px"
-   height="64px"
-   id="svg9991"
-   sodipodi:version="0.32"
-   inkscape:version="0.47pre4 r22446"
-   sodipodi:docname="formidable.svg"
-   inkscape:export-filename="/home/vincent/public_html/collectivite/plugins/formidable/images/formidable-128.png"
-   inkscape:export-xdpi="180"
-   inkscape:export-ydpi="180"
-   version="1.1">
-  <svg:defs
-     id="defs9993">
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="0 : 32 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="64 : 32 : 1"
-       inkscape:persp3d-origin="32 : 21.333333 : 1"
-       id="perspective227" />
-    <svg:linearGradient
-       inkscape:collect="always"
-       id="linearGradient9806">
-      <svg:stop
-         style="stop-color:#000000;stop-opacity:1;"
-         offset="0"
-         id="stop9808" />
-      <svg:stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop9810" />
-    </svg:linearGradient>
-    <svg:radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient9806"
-       id="radialGradient9812"
-       cx="24.35099"
-       cy="41.591846"
-       fx="24.35099"
-       fy="41.591846"
-       r="19.136078"
-       gradientTransform="matrix(1,0,0,0.242494,0,31.50606)"
-       gradientUnits="userSpaceOnUse" />
-    <svg:linearGradient
-       id="XMLID_3_"
-       gradientUnits="userSpaceOnUse"
-       x1="26.2524"
-       y1="34.8477"
-       x2="26.2524"
-       y2="32.5825">
-      <svg:stop
-         offset="0"
-         style="stop-color:#EF2929"
-         id="stop227" />
-      <svg:stop
-         offset="1"
-         style="stop-color:#A40000"
-         id="stop229" />
-    </svg:linearGradient>
-    <svg:linearGradient
-       id="path2756_1_"
-       gradientUnits="userSpaceOnUse"
-       x1="-4.2974"
-       y1="72.0352"
-       x2="-4.2974"
-       y2="69.3176"
-       gradientTransform="matrix(1.1501,0,0,-1.1501,31.1956,114.7217)">
-      <svg:stop
-         offset="0"
-         style="stop-color:#555753"
-         id="stop215" />
-      <svg:stop
-         offset="0.1275"
-         style="stop-color:#484C4A"
-         id="stop217" />
-      <svg:stop
-         offset="0.3459"
-         style="stop-color:#393E3F"
-         id="stop219" />
-      <svg:stop
-         offset="0.6043"
-         style="stop-color:#313638"
-         id="stop221" />
-      <svg:stop
-         offset="1"
-         style="stop-color:#2E3436"
-         id="stop223" />
-    </svg:linearGradient>
-    <svg:radialGradient
-       id="path2327_1_"
-       cx="169.5005"
-       cy="-40.2339"
-       r="9.5353"
-       gradientTransform="matrix(0.788,0,0,-0.788,-109.0825,-6.0314)"
-       gradientUnits="userSpaceOnUse">
-      <svg:stop
-         offset="0"
-         style="stop-color:#E9B96E"
-         id="stop199" />
-      <svg:stop
-         offset="1"
-         style="stop-color:#C17D11"
-         id="stop201" />
-    </svg:radialGradient>
-    <svg:linearGradient
-       id="XMLID_2_"
-       gradientUnits="userSpaceOnUse"
-       x1="-25.979"
-       y1="-10.6646"
-       x2="-18.7339"
-       y2="-10.6646"
-       gradientTransform="matrix(0.4034,-0.1906,0.427,0.9042,34.7974,24.8318)">
-      <svg:stop
-         offset="0"
-         style="stop-color:#C17D11"
-         id="stop186" />
-      <svg:stop
-         offset="0.2735"
-         style="stop-color:#BD7A10"
-         id="stop188" />
-      <svg:stop
-         offset="0.5694"
-         style="stop-color:#B0700C"
-         id="stop190" />
-      <svg:stop
-         offset="0.8747"
-         style="stop-color:#9A6105"
-         id="stop192" />
-      <svg:stop
-         offset="1"
-         style="stop-color:#8F5902"
-         id="stop194" />
-    </svg:linearGradient>
-    <svg:linearGradient
-       id="XMLID_1_"
-       gradientUnits="userSpaceOnUse"
-       x1="-25.4316"
-       y1="-10.5493"
-       x2="-18.1875"
-       y2="-10.5493"
-       gradientTransform="matrix(-0.4034,-0.1906,-0.427,0.9042,17.9775,24.8318)">
-      <svg:stop
-         offset="0"
-         style="stop-color:#C17D11"
-         id="stop173" />
-      <svg:stop
-         offset="0.2735"
-         style="stop-color:#BD7A10"
-         id="stop175" />
-      <svg:stop
-         offset="0.5694"
-         style="stop-color:#B0700C"
-         id="stop177" />
-      <svg:stop
-         offset="0.8747"
-         style="stop-color:#9A6105"
-         id="stop179" />
-      <svg:stop
-         offset="1"
-         style="stop-color:#8F5902"
-         id="stop181" />
-    </svg:linearGradient>
-    <svg:linearGradient
-       id="path4173_1_"
-       gradientUnits="userSpaceOnUse"
-       x1="65.4673"
-       y1="21.7046"
-       x2="65.4673"
-       y2="15.4519"
-       gradientTransform="matrix(1,0,0,-1,-34.4082,61.0186)">
-      <svg:stop
-         offset="0"
-         style="stop-color:#FFFFFF"
-         id="stop163" />
-      <svg:stop
-         offset="1"
-         style="stop-color:#C9C9C9"
-         id="stop165" />
-    </svg:linearGradient>
-    <svg:linearGradient
-       id="path29441_5_"
-       gradientUnits="userSpaceOnUse"
-       x1="-764.8428"
-       y1="70.6904"
-       x2="-768.0942"
-       y2="65.1441"
-       gradientTransform="matrix(-0.9772,0,0,-0.9959,-719.1876,75.5817)">
-      <svg:stop
-         offset="0"
-         style="stop-color:#F5F5F5"
-         id="stop80" />
-      <svg:stop
-         offset="1"
-         style="stop-color:#E9E9E9"
-         id="stop82" />
-    </svg:linearGradient>
-    <svg:linearGradient
-       id="path29441_4_"
-       gradientUnits="userSpaceOnUse"
-       x1="-776.0811"
-       y1="62.5264"
-       x2="-779.3325"
-       y2="56.9801"
-       gradientTransform="matrix(-0.9772,0,0,-0.9959,-719.1876,75.5817)">
-      <svg:stop
-         offset="0"
-         style="stop-color:#F5F5F5"
-         id="stop71" />
-      <svg:stop
-         offset="1"
-         style="stop-color:#E9E9E9"
-         id="stop73" />
-    </svg:linearGradient>
-    <svg:linearGradient
-       id="rect29408_3_"
-       gradientUnits="userSpaceOnUse"
-       x1="35.4419"
-       y1="63.6533"
-       x2="40.9202"
-       y2="57.2008"
-       gradientTransform="matrix(1.0076,0,0,-0.9876,-21.8209,64.5593)">
-      <svg:stop
-         offset="0"
-         style="stop-color:#F5F5F5"
-         id="stop62" />
-      <svg:stop
-         offset="1"
-         style="stop-color:#E9E9E9"
-         id="stop64" />
-    </svg:linearGradient>
-    <svg:linearGradient
-       id="path29441_3_"
-       gradientUnits="userSpaceOnUse"
-       x1="-777.9102"
-       y1="48.9697"
-       x2="-781.1614"
-       y2="43.4239"
-       gradientTransform="matrix(-0.9772,0,0,-0.9959,-719.1876,75.5817)">
-      <svg:stop
-         offset="0"
-         style="stop-color:#F5F5F5"
-         id="stop53" />
-      <svg:stop
-         offset="1"
-         style="stop-color:#E9E9E9"
-         id="stop55" />
-    </svg:linearGradient>
-    <svg:linearGradient
-       id="rect29408_2_"
-       gradientUnits="userSpaceOnUse"
-       x1="29.3257"
-       y1="53.0791"
-       x2="34.8039"
-       y2="46.6266"
-       gradientTransform="matrix(1.0076,0,0,-0.9876,-21.8209,64.5593)">
-      <svg:stop
-         offset="0"
-         style="stop-color:#F5F5F5"
-         id="stop44" />
-      <svg:stop
-         offset="1"
-         style="stop-color:#E9E9E9"
-         id="stop46" />
-    </svg:linearGradient>
-    <svg:linearGradient
-       id="path4370_1_"
-       gradientUnits="userSpaceOnUse"
-       x1="-695.4531"
-       y1="-64.7212"
-       x2="-696.7315"
-       y2="-64.0704"
-       gradientTransform="matrix(-0.9777,0.2101,-0.2101,-0.9777,-658.7002,129.0211)">
-      <svg:stop
-         offset="0"
-         style="stop-color:#000000"
-         id="stop36" />
-      <svg:stop
-         offset="1"
-         style="stop-color:#000000"
-         id="stop38" />
-    </svg:linearGradient>
-    <svg:linearGradient
-       id="path4368_1_"
-       gradientUnits="userSpaceOnUse"
-       x1="95.3657"
-       y1="95.0371"
-       x2="97.3309"
-       y2="94.6373"
-       gradientTransform="matrix(0.9834,0.1816,0.1816,-0.9834,-95.5652,121.2474)">
-      <svg:stop
-         offset="0"
-         style="stop-color:#000000"
-         id="stop30" />
-      <svg:stop
-         offset="1"
-         style="stop-color:#000000"
-         id="stop32" />
-    </svg:linearGradient>
-    <svg:radialGradient
-       id="path2329_1_"
-       cx="46.8472"
-       cy="-100.144"
-       r="13.5656"
-       gradientTransform="matrix(1,0,0,-0.6819,-21.9902,-29.6113)"
-       gradientUnits="userSpaceOnUse">
-      <svg:stop
-         offset="0"
-         style="stop-color:#729FCF"
-         id="stop23" />
-      <svg:stop
-         offset="1"
-         style="stop-color:#3465A4"
-         id="stop25" />
-    </svg:radialGradient>
-    <svg:radialGradient
-       id="XMLID_5_"
-       cx="23.436"
-       cy="33.9185"
-       r="19.7892"
-       gradientTransform="matrix(0.5861,1.37e-2,1.37e-2,0.6642,-2.6747,12.0504)"
-       gradientUnits="userSpaceOnUse">
-      <svg:stop
-         offset="0"
-         style="stop-color:#E9B96E"
-         id="stop14" />
-      <svg:stop
-         offset="1"
-         style="stop-color:#C17D11"
-         id="stop16" />
-    </svg:radialGradient>
-    <svg:foreignObject
-       id="foreignObject7"
-       height="1"
-       width="1"
-       y="0"
-       x="0"
-       requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/">
-      <i:pgfRef
-         xlink:href="#adobe_illustrator_pgf" />
-    </svg:foreignObject>
-    <svg:radialGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_5_"
-       id="radialGradient266885"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5861,1.37e-2,1.37e-2,0.6642,-2.6747,12.0504)"
-       cx="23.436"
-       cy="33.9185"
-       r="19.7892" />
-    <svg:radialGradient
-       inkscape:collect="always"
-       xlink:href="#path2329_1_"
-       id="radialGradient266887"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,-0.6819,-21.9902,-29.6113)"
-       cx="46.8472"
-       cy="-100.144"
-       r="13.5656" />
-    <svg:linearGradient
-       inkscape:collect="always"
-       xlink:href="#path4368_1_"
-       id="linearGradient266889"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.9834,0.1816,0.1816,-0.9834,-95.5652,121.2474)"
-       x1="95.3657"
-       y1="95.0371"
-       x2="97.3309"
-       y2="94.6373" />
-    <svg:linearGradient
-       inkscape:collect="always"
-       xlink:href="#path4370_1_"
-       id="linearGradient266891"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.9777,0.2101,-0.2101,-0.9777,-658.7002,129.0211)"
-       x1="-695.4531"
-       y1="-64.7212"
-       x2="-696.7315"
-       y2="-64.0704" />
-    <svg:linearGradient
-       inkscape:collect="always"
-       xlink:href="#path4173_1_"
-       id="linearGradient266903"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,-1,-34.4082,61.0186)"
-       x1="65.4673"
-       y1="21.7046"
-       x2="65.4673"
-       y2="15.4519" />
-    <svg:linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_1_"
-       id="linearGradient266905"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.4034,-0.1906,-0.427,0.9042,17.9775,24.8318)"
-       x1="-25.4316"
-       y1="-10.5493"
-       x2="-18.1875"
-       y2="-10.5493" />
-    <svg:linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_2_"
-       id="linearGradient266907"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4034,-0.1906,0.427,0.9042,34.7974,24.8318)"
-       x1="-25.979"
-       y1="-10.6646"
-       x2="-18.7339"
-       y2="-10.6646" />
-    <svg:radialGradient
-       inkscape:collect="always"
-       xlink:href="#path2327_1_"
-       id="radialGradient266909"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.788,0,0,-0.788,-109.0825,-6.0314)"
-       cx="169.5005"
-       cy="-40.2339"
-       r="9.5353" />
-    <svg:linearGradient
-       inkscape:collect="always"
-       xlink:href="#path2756_1_"
-       id="linearGradient266911"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.1501,0,0,-1.1501,31.1956,114.7217)"
-       x1="-4.2974"
-       y1="72.0352"
-       x2="-4.2974"
-       y2="69.3176" />
-    <svg:linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_3_"
-       id="linearGradient266913"
-       gradientUnits="userSpaceOnUse"
-       x1="26.2524"
-       y1="34.8477"
-       x2="26.2524"
-       y2="32.5825" />
-    <svg:radialGradient
-       id="radialGradient2174"
-       cx="46.847198"
-       cy="-100.144"
-       r="13.5656"
-       gradientTransform="matrix(1,0,0,-0.6819,-21.9902,-29.6113)"
-       gradientUnits="userSpaceOnUse">
-      <svg:stop
-         offset="0"
-         style="stop-color:#729FCF"
-         id="stop2176" />
-      <svg:stop
-         offset="1"
-         style="stop-color:#3465A4"
-         id="stop2178" />
-    </svg:radialGradient>
-    <svg:linearGradient
-       id="linearGradient2182"
-       gradientUnits="userSpaceOnUse"
-       x1="95.3657"
-       y1="95.037102"
-       x2="97.330902"
-       y2="94.637299"
-       gradientTransform="matrix(0.9834,0.1816,0.1816,-0.9834,-95.5652,121.2474)">
-      <svg:stop
-         offset="0"
-         style="stop-color:#000000"
-         id="stop2184" />
-      <svg:stop
-         offset="1"
-         style="stop-color:#000000"
-         id="stop2186" />
-    </svg:linearGradient>
-    <svg:linearGradient
-       id="linearGradient2189"
-       gradientUnits="userSpaceOnUse"
-       x1="-695.45312"
-       y1="-64.721199"
-       x2="-696.73151"
-       y2="-64.070396"
-       gradientTransform="matrix(-0.9777,0.2101,-0.2101,-0.9777,-658.7002,129.0211)">
-      <svg:stop
-         offset="0"
-         style="stop-color:#000000"
-         id="stop2191" />
-      <svg:stop
-         offset="1"
-         style="stop-color:#000000"
-         id="stop2193" />
-    </svg:linearGradient>
-    <namedview
-       zoom="9.8994949"
-       pageopacity="0.0"
-       pageshadow="2"
-       showpageshadow="false"
-       borderopacity="0.17254902"
-       pagecolor="#ffffff"
-       bordercolor="#666666"
-       cy="24.622653"
-       showgrid="false"
-       current-layer="layer1"
-       cx="25.799661"
-       window-y="167"
-       document-units="px"
-       window-width="770"
-       grid-bbox="true"
-       window-height="695"
-       window-x="472" />
-    <svg:linearGradient
-       id="linearGradient2280"
-       gradientUnits="userSpaceOnUse"
-       x1="65.4673"
-       y1="21.704599"
-       x2="65.4673"
-       y2="15.4519"
-       gradientTransform="matrix(1,0,0,-1,-34.4082,61.0186)">
-      <svg:stop
-         offset="0"
-         style="stop-color:#FFFFFF"
-         id="stop2282" />
-      <svg:stop
-         offset="1"
-         style="stop-color:#C9C9C9"
-         id="stop2284" />
-    </svg:linearGradient>
-    <svg:linearGradient
-       inkscape:collect="always"
-       xlink:href="#path4173_1_"
-       id="linearGradient266966"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.7587571,0,0,-1.7587571,-73.922013,79.170666)"
-       x1="65.4673"
-       y1="21.7046"
-       x2="65.4673"
-       y2="15.4519" />
-    <svg:linearGradient
-       inkscape:collect="always"
-       xlink:href="#path4370_1_"
-       id="linearGradient267038"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.7195361,0.36951432,-0.36951432,-1.7195361,-1171.8999,198.77048)"
-       x1="-695.4531"
-       y1="-64.7212"
-       x2="-696.7315"
-       y2="-64.0704" />
-    <svg:linearGradient
-       inkscape:collect="always"
-       xlink:href="#path4368_1_"
-       id="linearGradient267041"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.7295622,0.31939001,0.31939001,-1.7295622,-181.4823,185.09853)"
-       x1="95.3657"
-       y1="95.0371"
-       x2="97.3309"
-       y2="94.6373" />
-    <svg:radialGradient
-       inkscape:collect="always"
-       xlink:href="#path2329_1_"
-       id="radialGradient267045"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.758757,0,0,-1.1992961,-52.081768,-80.225303)"
-       cx="46.8472"
-       cy="-100.144"
-       r="13.5656" />
-    <svg:radialGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_5_"
-       id="radialGradient267053"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5861,1.37e-2,1.37e-2,0.6642,-2.6747,12.0504)"
-       cx="23.436"
-       cy="33.9185"
-       r="19.7892" />
-    <svg:radialGradient
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5861,1.37e-2,1.37e-2,0.6642,-2.6747,12.0504)"
-       r="19.7892"
-       cy="33.918499"
-       cx="23.436001"
-       id="radialGradient2166">
-      <svg:stop
-         id="stop2168"
-         style="stop-color:#E9B96E"
-         offset="0" />
-      <svg:stop
-         id="stop2170"
-         style="stop-color:#C17D11"
-         offset="1" />
-    </svg:radialGradient>
-    <svg:linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_1_"
-       id="linearGradient267061"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.4034,-0.1906,-0.427,0.9042,17.9775,24.8318)"
-       x1="-25.4316"
-       y1="-10.5493"
-       x2="-18.1875"
-       y2="-10.5493" />
-    <svg:linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_2_"
-       id="linearGradient267063"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4034,-0.1906,0.427,0.9042,34.7974,24.8318)"
-       x1="-25.979"
-       y1="-10.6646"
-       x2="-18.7339"
-       y2="-10.6646" />
-    <svg:radialGradient
-       inkscape:collect="always"
-       xlink:href="#path2327_1_"
-       id="radialGradient267065"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.788,0,0,-0.788,-109.0825,-6.0314)"
-       cx="169.5005"
-       cy="-40.2339"
-       r="9.5353" />
-    <svg:linearGradient
-       inkscape:collect="always"
-       xlink:href="#path2756_1_"
-       id="linearGradient267067"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.1501,0,0,-1.1501,31.1956,114.7217)"
-       x1="-4.2974"
-       y1="72.0352"
-       x2="-4.2974"
-       y2="69.3176" />
-    <svg:linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_3_"
-       id="linearGradient267069"
-       gradientUnits="userSpaceOnUse"
-       x1="26.2524"
-       y1="34.8477"
-       x2="26.2524"
-       y2="32.5825" />
-    <svg:radialGradient
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.788,0,0,-0.788,-109.0825,-6.0314)"
-       r="9.5353003"
-       cy="-40.233898"
-       cx="169.5005"
-       id="radialGradient2315">
-      <svg:stop
-         id="stop2317"
-         style="stop-color:#E9B96E"
-         offset="0" />
-      <svg:stop
-         id="stop2319"
-         style="stop-color:#C17D11"
-         offset="1" />
-    </svg:radialGradient>
-    <svg:linearGradient
-       gradientTransform="matrix(1.1501,0,0,-1.1501,31.1956,114.7217)"
-       y2="69.317596"
-       x2="-4.2974"
-       y1="72.035202"
-       x1="-4.2974"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient2329">
-      <svg:stop
-         id="stop2331"
-         style="stop-color:#555753"
-         offset="0" />
-      <svg:stop
-         id="stop2333"
-         style="stop-color:#484C4A"
-         offset="0.1275" />
-      <svg:stop
-         id="stop2335"
-         style="stop-color:#393E3F"
-         offset="0.3459" />
-      <svg:stop
-         id="stop2337"
-         style="stop-color:#313638"
-         offset="0.6043" />
-      <svg:stop
-         id="stop2339"
-         style="stop-color:#2E3436"
-         offset="1" />
-    </svg:linearGradient>
-    <svg:linearGradient
-       y2="32.5825"
-       x2="26.252399"
-       y1="34.847698"
-       x1="26.252399"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient2342">
-      <svg:stop
-         id="stop2344"
-         style="stop-color:#EF2929"
-         offset="0" />
-      <svg:stop
-         id="stop2346"
-         style="stop-color:#A40000"
-         offset="1" />
-    </svg:linearGradient>
-    <svg:linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_3_"
-       id="linearGradient267084"
-       gradientUnits="userSpaceOnUse"
-       x1="26.2524"
-       y1="34.8477"
-       x2="26.2524"
-       y2="32.5825"
-       gradientTransform="matrix(2.7108449,0,0,2.7108449,-38.9913,-41.797214)" />
-    <svg:linearGradient
-       inkscape:collect="always"
-       xlink:href="#path2756_1_"
-       id="linearGradient267087"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(3.1177432,0,0,-3.1177432,45.575138,269.19554)"
-       x1="-4.2974"
-       y1="72.0352"
-       x2="-4.2974"
-       y2="69.3176" />
-    <svg:radialGradient
-       inkscape:collect="always"
-       xlink:href="#path2327_1_"
-       id="radialGradient267097"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.136146,0,0,-2.136146,-334.697,-58.147403)"
-       cx="169.5005"
-       cy="-40.2339"
-       r="9.5353" />
-    <svg:linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_1_"
-       id="linearGradient267114"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.4034,-0.1906,-0.427,0.9042,17.9775,24.8318)"
-       x1="-25.4316"
-       y1="-10.5493"
-       x2="-18.1875"
-       y2="-10.5493" />
-    <svg:linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_2_"
-       id="linearGradient267116"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4034,-0.1906,0.427,0.9042,34.7974,24.8318)"
-       x1="-25.979"
-       y1="-10.6646"
-       x2="-18.7339"
-       y2="-10.6646" />
-    <svg:linearGradient
-       id="linearGradient2289"
-       gradientUnits="userSpaceOnUse"
-       x1="-25.431601"
-       y1="-10.5493"
-       x2="-18.1875"
-       y2="-10.5493"
-       gradientTransform="matrix(-0.4034,-0.1906,-0.427,0.9042,17.9775,24.8318)">
-      <svg:stop
-         offset="0"
-         style="stop-color:#C17D11"
-         id="stop2291" />
-      <svg:stop
-         offset="0.2735"
-         style="stop-color:#BD7A10"
-         id="stop2293" />
-      <svg:stop
-         offset="0.5694"
-         style="stop-color:#B0700C"
-         id="stop2295" />
-      <svg:stop
-         offset="0.8747"
-         style="stop-color:#9A6105"
-         id="stop2297" />
-      <svg:stop
-         offset="1"
-         style="stop-color:#8F5902"
-         id="stop2299" />
-    </svg:linearGradient>
-    <svg:linearGradient
-       id="linearGradient2302"
-       gradientUnits="userSpaceOnUse"
-       x1="-25.979"
-       y1="-10.6646"
-       x2="-18.7339"
-       y2="-10.6646"
-       gradientTransform="matrix(0.4034,-0.1906,0.427,0.9042,34.7974,24.8318)">
-      <svg:stop
-         offset="0"
-         style="stop-color:#C17D11"
-         id="stop2304" />
-      <svg:stop
-         offset="0.2735"
-         style="stop-color:#BD7A10"
-         id="stop2306" />
-      <svg:stop
-         offset="0.5694"
-         style="stop-color:#B0700C"
-         id="stop2308" />
-      <svg:stop
-         offset="0.8747"
-         style="stop-color:#9A6105"
-         id="stop2310" />
-      <svg:stop
-         offset="1"
-         style="stop-color:#8F5902"
-         id="stop2312" />
-    </svg:linearGradient>
-    <svg:linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_2_"
-       id="linearGradient267131"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.0935548,-0.51668813,1.15753,2.4511451,55.339053,25.517944)"
-       x1="-25.979"
-       y1="-10.6646"
-       x2="-18.7339"
-       y2="-10.6646" />
-    <svg:linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_1_"
-       id="linearGradient267134"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0935548,-0.51668813,-1.15753,2.4511451,9.74292,25.517944)"
-       x1="-25.4316"
-       y1="-10.5493"
-       x2="-18.1875"
-       y2="-10.5493" />
-    <inkscape:perspective
-       id="perspective3062"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <inkscape:perspective
-       id="perspective3076"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <inkscape:perspective
-       id="perspective3090"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <inkscape:perspective
-       id="perspective3104"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <inkscape:perspective
-       id="perspective3118"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <svg:linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_1_"
-       id="linearGradient3017"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0935548,-0.51668813,-1.15753,2.4511451,9.74292,25.517944)"
-       x1="-25.4316"
-       y1="-10.5493"
-       x2="-18.1875"
-       y2="-10.5493" />
-    <svg:linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_2_"
-       id="linearGradient3019"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.0935548,-0.51668813,1.15753,2.4511451,55.339053,25.517944)"
-       x1="-25.979"
-       y1="-10.6646"
-       x2="-18.7339"
-       y2="-10.6646" />
-    <svg:radialGradient
-       inkscape:collect="always"
-       xlink:href="#path2327_1_"
-       id="radialGradient3021"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.136146,0,0,-2.136146,-334.697,-58.147403)"
-       cx="169.5005"
-       cy="-40.2339"
-       r="9.5353" />
-    <svg:linearGradient
-       inkscape:collect="always"
-       xlink:href="#path2756_1_"
-       id="linearGradient3023"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(3.1177432,0,0,-3.1177432,45.575138,269.19554)"
-       x1="-4.2974"
-       y1="72.0352"
-       x2="-4.2974"
-       y2="69.3176" />
-    <svg:linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_3_"
-       id="linearGradient3025"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.7108449,0,0,2.7108449,-38.9913,-41.797214)"
-       x1="26.2524"
-       y1="34.8477"
-       x2="26.2524"
-       y2="32.5825" />
-    <svg:linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_3_"
-       id="linearGradient3030"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.7108449,0,0,2.7108449,-39.169171,-41.746948)"
-       x1="26.2524"
-       y1="34.8477"
-       x2="26.2524"
-       y2="32.5825" />
-    <svg:linearGradient
-       inkscape:collect="always"
-       xlink:href="#path2756_1_"
-       id="linearGradient3033"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(3.1177432,0,0,-3.1177432,45.397267,269.24581)"
-       x1="-4.2974"
-       y1="72.0352"
-       x2="-4.2974"
-       y2="69.3176" />
-    <svg:radialGradient
-       inkscape:collect="always"
-       xlink:href="#path2327_1_"
-       id="radialGradient3040"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.136146,0,0,-2.136146,-334.87487,-58.097137)"
-       cx="169.5005"
-       cy="-40.2339"
-       r="9.5353" />
-    <svg:linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_2_"
-       id="linearGradient3043"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.0935548,-0.51668813,1.15753,2.4511451,55.161182,25.56821)"
-       x1="-25.979"
-       y1="-10.6646"
-       x2="-18.7339"
-       y2="-10.6646" />
-    <svg:linearGradient
-       inkscape:collect="always"
-       xlink:href="#XMLID_1_"
-       id="linearGradient3046"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0935548,-0.51668813,-1.15753,2.4511451,9.5650493,25.56821)"
-       x1="-25.4316"
-       y1="-10.5493"
-       x2="-18.1875"
-       y2="-10.5493" />
-  </svg:defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1"
-     inkscape:cx="24.999168"
-     inkscape:cy="36.55781"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:document-units="px"
-     inkscape:grid-bbox="true"
-     inkscape:window-width="867"
-     inkscape:window-height="669"
-     inkscape:window-x="246"
-     inkscape:window-y="112"
-     inkscape:window-maximized="0" />
-  <svg:metadata
-     id="metadata9996">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </svg:metadata>
-  <svg:g
-     id="layer1"
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer">
-    <svg:image
-       y="0.52496314"
-       x="79.286026"
-       id="image3064"
-       height="13.594464"
-       width="13.594464"
-       xlink:href="file:///usr/share/icons/gnome/24x24/stock/form/stock_form-combobox.png" />
-    <svg:path
-       d="m 41.665519,9.108502 c -1.867773,3.960546 -1.612951,8.007839 0.5747,9.04338 2.187651,1.032832 5.478619,-1.341865 7.349101,-5.302413 1.867773,-3.9605434 1.612955,-8.0051252 -0.574701,-9.0406662 -2.190363,-1.032836 -5.481326,1.3391575 -7.3491,5.2996992 z"
-       id="path183"
-       style="fill:url(#linearGradient3046);stroke:#8f5902;stroke-width:2.36402392;stroke-miterlimit:4;stroke-dasharray:none" />
-    <svg:path
-       d="m 22.33177,9.1057907 c 1.867773,3.9578363 1.612957,8.0078393 -0.574698,9.0406703 -2.187649,1.03283 -5.478616,-1.341867 -7.349099,-5.302413 -1.867773,-3.9605449 -1.612953,-8.005125 0.5747,-9.0379564 2.187648,-1.032836 5.475904,1.3391576 7.349097,5.2996991 z"
-       id="path196"
-       style="fill:url(#linearGradient3043);stroke:#8f5902;stroke-width:2.36402392;stroke-miterlimit:4;stroke-dasharray:none" />
-    <svg:path
-       style="fill:url(#radialGradient3040);stroke:#8f5902;stroke-width:2.36402392;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
-       d="m 55.477275,30.694962 c 0.0055,12.968683 -10.499103,29.735262 -23.465076,29.74068 -12.963262,0.0055 -23.4840487,-16.750309 -23.4894717,-29.716283 0,-0.0081 0,-0.01641 0,-0.02447 C 8.5146273,17.726208 19.021832,7.2081281 31.990516,7.1999959 44.951062,7.1944459 55.471855,17.701807 55.477275,30.667783 c 0,0.01095 0,0.01896 0,0.02705 z"
-       cx="31.112698"
-       type="arc"
-       rx="8.6620579"
-       cy="19.008621"
-       ry="8.6620579"
-       id="path2327" />
-    <svg:path
-       style="opacity:0.12660002;fill:none;stroke:#ffffff;stroke-width:2.36402392;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
-       d="m 52.590227,30.694962 c 0.0055,11.374707 -9.211453,26.850921 -20.580738,26.856344 -11.369282,0.0056 -20.599712,-15.459951 -20.605135,-26.834653 0,-0.0081 0,-0.01356 0,-0.02158 -0.0055,-11.374705 9.211452,-20.602421 20.583451,-20.607842 11.366569,-0.0055 20.596998,9.208739 20.602422,20.586154 0,0.0081 0,0.01356 0,0.02158 z"
-       enable-background="new    "
-       cx="31.112698"
-       type="arc"
-       rx="8.6620579"
-       cy="19.008621"
-       ry="8.6620579"
-       id="path3834" />
-    <svg:g
-       id="g205"
-       transform="matrix(2.7108452,0,0,2.7108452,-39.169172,-41.746951)">
-      <svg:ellipse
-         style="fill:#8f5902"
-         sodipodi:ry="0.54100001"
-         sodipodi:rx="1.041"
-         sodipodi:cy="29.219"
-         sodipodi:cx="24.940001"
-         id="ellipse207"
-         ry="0.54100001"
-         rx="1.041"
-         cy="29.219"
-         cx="24.940001"
-         transform="matrix(0.8505,0.526,-0.526,0.8505,19.0996,-8.7499)"
-         d="m 25.981001,29.219 c 0,0.298786 -0.466072,0.541 -1.041,0.541 -0.574929,0 -1.041,-0.242214 -1.041,-0.541 0,-0.298786 0.466071,-0.541 1.041,-0.541 0.574928,0 1.041,0.242214 1.041,0.541 z" />
-      <svg:ellipse
-         style="fill:#8f5902"
-         sodipodi:ry="0.54100001"
-         sodipodi:rx="1.0420001"
-         sodipodi:cy="29.219"
-         sodipodi:cx="27.565001"
-         id="ellipse209"
-         ry="0.54100001"
-         rx="1.0420001"
-         cy="29.219"
-         cx="27.565001"
-         transform="matrix(-0.8506,0.5258,-0.5258,-0.8506,66.3766,39.5785)"
-         d="m 28.607001,29.219 c 0,0.298786 -0.46652,0.541 -1.042,0.541 -0.575481,0 -1.042001,-0.242214 -1.042001,-0.541 0,-0.298786 0.46652,-0.541 1.042001,-0.541 0.57548,0 1.042,0.242214 1.042,0.541 z" />
-    </svg:g>
-    <svg:path
-       style="fill:url(#linearGradient3033);stroke:#2e3436;stroke-width:0.67771125;stroke-linecap:round;stroke-linejoin:round"
-       d="m 22.70858,43.845272 c 0.09486,5.055726 4.209941,9.463561 9.292779,9.463561 5.07741,0 9.192476,-4.407835 9.287353,-9.463561 l -18.580132,0 0,0 z"
-       nodetypes="cscc"
-       id="path2756" />
-    <svg:path
-       style="fill:url(#linearGradient3030);stroke:#a40000;stroke-width:0.67771125;stroke-linecap:round;stroke-linejoin:round"
-       id="path231"
-       d="m 33.009791,46.447685 -1.434034,1.989758 -0.872894,-1.962651 c -2.4994,0.393071 -4.489161,1.935545 -5.109946,3.922592 1.678014,1.772894 4.003921,2.908737 6.581934,2.908737 2.399098,0 4.578618,-0.99217 6.22681,-2.564457 -0.504216,-2.201206 -2.66476,-3.930725 -5.39187,-4.293979 z" />
-    <svg:image
-       y="12.687449"
-       x="11.29285"
-       id="image3078"
-       height="25.508533"
-       width="25.508533"
-       xlink:href="file:///usr/share/icons/gnome/24x24/stock/form/stock_form-checkbox.png" />
-    <svg:image
-       y="14.403575"
-       x="30.422155"
-       id="image3092"
-       height="22.700869"
-       width="22.700869"
-       xlink:href="file:///usr/share/icons/gnome/24x24/stock/form/stock_form-radio.png" />
-    <svg:image
-       y="-3.2308276"
-       x="-44.282436"
-       id="image3106"
-       height="16.103373"
-       width="16.103373"
-       xlink:href="file:///usr/share/icons/gnome/24x24/stock/form/stock_form-text-box.png" />
-    <svg:image
-       y="43.025379"
-       x="73.367607"
-       id="image3120"
-       height="14.591788"
-       width="14.591788"
-       xlink:href="file:///usr/share/icons/gnome/24x24/stock/form/stock_form-design-mode.png" />
-  </svg:g>
-</svg:svg>
diff --git a/www/plugins/formidable_1_0/images/formulaire-24.png b/www/plugins/formidable_1_0/images/formulaire-24.png
deleted file mode 100644 (file)
index ff847d0..0000000
Binary files a/www/plugins/formidable_1_0/images/formulaire-24.png and /dev/null differ
diff --git a/www/plugins/formidable_1_0/images/formulaire-action-ajouter.png b/www/plugins/formidable_1_0/images/formulaire-action-ajouter.png
deleted file mode 100644 (file)
index 8aef295..0000000
Binary files a/www/plugins/formidable_1_0/images/formulaire-action-ajouter.png and /dev/null differ
diff --git a/www/plugins/formidable_1_0/images/formulaire-analyse-24.png b/www/plugins/formidable_1_0/images/formulaire-analyse-24.png
deleted file mode 100644 (file)
index 9965646..0000000
Binary files a/www/plugins/formidable_1_0/images/formulaire-analyse-24.png and /dev/null differ
diff --git a/www/plugins/formidable_1_0/images/formulaire-config-auteurs-24.png b/www/plugins/formidable_1_0/images/formulaire-config-auteurs-24.png
deleted file mode 100644 (file)
index 30f5ec5..0000000
Binary files a/www/plugins/formidable_1_0/images/formulaire-config-auteurs-24.png and /dev/null differ
diff --git a/www/plugins/formidable_1_0/images/formulaire-config-champs-24.png b/www/plugins/formidable_1_0/images/formulaire-config-champs-24.png
deleted file mode 100644 (file)
index 0d77271..0000000
Binary files a/www/plugins/formidable_1_0/images/formulaire-config-champs-24.png and /dev/null differ
diff --git a/www/plugins/formidable_1_0/images/formulaire-config-traitements-24.png b/www/plugins/formidable_1_0/images/formulaire-config-traitements-24.png
deleted file mode 100644 (file)
index f362e72..0000000
Binary files a/www/plugins/formidable_1_0/images/formulaire-config-traitements-24.png and /dev/null differ
diff --git a/www/plugins/formidable_1_0/images/formulaire-dupliquer-24.png b/www/plugins/formidable_1_0/images/formulaire-dupliquer-24.png
deleted file mode 100644 (file)
index a4ec44f..0000000
Binary files a/www/plugins/formidable_1_0/images/formulaire-dupliquer-24.png and /dev/null differ
diff --git a/www/plugins/formidable_1_0/images/formulaire-editer-24.png b/www/plugins/formidable_1_0/images/formulaire-editer-24.png
deleted file mode 100644 (file)
index 0bb3e26..0000000
Binary files a/www/plugins/formidable_1_0/images/formulaire-editer-24.png and /dev/null differ
diff --git a/www/plugins/formidable_1_0/images/formulaire-exporter-24.png b/www/plugins/formidable_1_0/images/formulaire-exporter-24.png
deleted file mode 100644 (file)
index 3350857..0000000
Binary files a/www/plugins/formidable_1_0/images/formulaire-exporter-24.png and /dev/null differ
diff --git a/www/plugins/formidable_1_0/images/formulaire-nouveau-48.png b/www/plugins/formidable_1_0/images/formulaire-nouveau-48.png
deleted file mode 100644 (file)
index a0c803e..0000000
Binary files a/www/plugins/formidable_1_0/images/formulaire-nouveau-48.png and /dev/null differ
diff --git a/www/plugins/formidable_1_0/images/formulaire-reponse-24.png b/www/plugins/formidable_1_0/images/formulaire-reponse-24.png
deleted file mode 100644 (file)
index 1bbdb51..0000000
Binary files a/www/plugins/formidable_1_0/images/formulaire-reponse-24.png and /dev/null differ
diff --git a/www/plugins/formidable_1_0/images/formulaire-reponse-supprimer-24.png b/www/plugins/formidable_1_0/images/formulaire-reponse-supprimer-24.png
deleted file mode 100644 (file)
index 897c63e..0000000
Binary files a/www/plugins/formidable_1_0/images/formulaire-reponse-supprimer-24.png and /dev/null differ
diff --git a/www/plugins/formidable_1_0/images/formulaire-reponses-24.png b/www/plugins/formidable_1_0/images/formulaire-reponses-24.png
deleted file mode 100644 (file)
index ec0a2b0..0000000
Binary files a/www/plugins/formidable_1_0/images/formulaire-reponses-24.png and /dev/null differ
diff --git a/www/plugins/formidable_1_0/images/formulaire-reponses-exporter-24.png b/www/plugins/formidable_1_0/images/formulaire-reponses-exporter-24.png
deleted file mode 100644 (file)
index 94d0cec..0000000
Binary files a/www/plugins/formidable_1_0/images/formulaire-reponses-exporter-24.png and /dev/null differ
diff --git a/www/plugins/formidable_1_0/images/formulaire-reponses-supprimer-24.png b/www/plugins/formidable_1_0/images/formulaire-reponses-supprimer-24.png
deleted file mode 100644 (file)
index f491594..0000000
Binary files a/www/plugins/formidable_1_0/images/formulaire-reponses-supprimer-24.png and /dev/null differ
diff --git a/www/plugins/formidable_1_0/images/formulaire-supprimer-24.png b/www/plugins/formidable_1_0/images/formulaire-supprimer-24.png
deleted file mode 100644 (file)
index 1819e5e..0000000
Binary files a/www/plugins/formidable_1_0/images/formulaire-supprimer-24.png and /dev/null differ
diff --git a/www/plugins/formidable_1_0/inc/formidable.php b/www/plugins/formidable_1_0/inc/formidable.php
deleted file mode 100644 (file)
index fceec6c..0000000
+++ /dev/null
@@ -1,379 +0,0 @@
-<?php
-
-// Sécurité
-if (!defined("_ECRIRE_INC_VERSION")) return;
-
-/*
- * Liste tous les traitements configurables (ayant une description)
- *
- * @return array Un tableau listant des saisies et leurs options
- */
-function traitements_lister_disponibles(){
-    static $traitements = null;
-
-    if (is_null($traitements)){
-        $traitements = array();
-        $liste = find_all_in_path('traiter/', '.+[.]yaml$');
-
-        if (count($liste)){
-            foreach ($liste as $fichier=>$chemin){
-                $type_traitement = preg_replace(',[.]yaml$,i', '', $fichier);
-                $dossier = str_replace($fichier, '', $chemin);
-                // On ne garde que les traitements qui ont bien la fonction
-                if (charger_fonction($type_traitement, 'traiter', true)
-                    and (
-                        is_array($traitement = traitements_charger_infos($type_traitement))
-                    )
-                ){
-                    $traitements[$type_traitement] = $traitement;
-                }
-            }
-        }
-    }
-
-    return $traitements;
-}
-
-/**
- * Charger les informations contenues dans le yaml d'un traitement
- *
- * @param string $type_saisie Le type de la saisie
- * @return array Un tableau contenant le YAML décodé
- */
-function traitements_charger_infos($type_traitement){
-    include_spip('inc/yaml');
-    $fichier = find_in_path("traiter/$type_traitement.yaml");
-    $traitement = yaml_decode_file($fichier);
-
-    if (is_array($traitement)) {
-        $traitement += array('titre' => '', 'description' => '', 'icone' => '');
-        $traitement['titre'] = $traitement['titre'] ? _T_ou_typo($traitement['titre']) : $type_traitement;
-        $traitement['description'] = $traitement['description'] ? _T_ou_typo($traitement['description']) : '';
-        $traitement['icone'] = $traitement['icone'] ? find_in_path($traitement['icone']) : '';
-    }
-    return $traitement;
-}
-
-/*
- * Liste tous les types d'échanges (export et import) existant pour les formulaires
- *
- * @return array Retourne un tableau listant les types d'échanges
- */
-function echanges_formulaire_lister_disponibles(){
-    // On va chercher toutes les fonctions existantes
-    $liste = find_all_in_path('echanger/formulaire/', '.+[.]php$');
-    $types_echange = array('exporter'=>array(), 'importer'=>array());
-    if (count($liste)){
-        foreach ($liste as $fichier=>$chemin){
-            $type_echange = preg_replace(',[.]php$,i', '', $fichier);
-            $dossier = str_replace($fichier, '', $chemin);
-            // On ne garde que les échanges qui ont bien la fonction
-            if ($f = charger_fonction('exporter', "echanger/formulaire/$type_echange", true)){
-                $types_echange['exporter'][$type_echange] = $f;
-            }
-            if ($f = charger_fonction('importer', "echanger/formulaire/$type_echange", true)){
-                $types_echange['importer'][$type_echange] = $f;
-            }
-        }
-    }
-    return $types_echange;
-}
-
-/*
- * Génère le nom du cookie qui sera utilisé par le plugin lors d'une réponse
- * par un visiteur non-identifié.
- *
- * @param int $id_formulaire L'identifiant du formulaire
- * @return string Retourne le nom du cookie
- */
-function formidable_generer_nom_cookie($id_formulaire){
-    return $GLOBALS['cookie_prefix'].'cookie_formidable_'.$id_formulaire;
-}
-
-/*
- * Vérifie si le visiteur a déjà répondu à un formulaire
- *
- * @param int $id_formulaire L'identifiant du formulaire
- * @param string $choix_identification Comment verifier une reponse. Priorite sur 'cookie' ou sur 'id_auteur'
- * @param string $anonymisation : vaut '' si le formulaire n'est pas anonymisé, sinon c'est la variable d'anonymisation
- * @return unknown_type Retourne un tableau contenant les id des réponses si elles existent, sinon false
- */
-function formidable_verifier_reponse_formulaire($id_formulaire, $choix_identification='cookie', $anonymisation=''){
-    global $auteur_session;
-    $id_auteur = $auteur_session ? intval($auteur_session['id_auteur']) : 0;
-    $nom_cookie = formidable_generer_nom_cookie($id_formulaire);
-    $cookie = isset($_COOKIE[$nom_cookie]) ? $_COOKIE[$nom_cookie] : false;
-
-    $anonymiser = ($anonymisation == '') ? false : true;
-    if ($anonymiser) $anonymiser_variable = $anonymisation;
-
-    // traitement de l'anonymisation
-    if ($anonymiser) {
-        // mod de l'id_auteur
-        $variables_anonymisation =
-                $GLOBALS['formulaires']['variables_anonymisation'][$anonymiser_variable];
-        $id = eval("return $variables_anonymisation;");
-        $id_auteur = formidable_scramble($id);
-    }
-    // ni cookie ni id, on ne peut rien faire
-    if (!$cookie and !$id_auteur) {
-        return false;
-    }
-
-    // priorite sur le cookie
-    if ($choix_identification == 'cookie' or !$choix_identification) {
-        if ($cookie)
-            $where = '(cookie='.sql_quote($cookie).($id_auteur ? ' OR id_auteur='.$id_auteur.')' : ')');
-        else
-            $where = 'id_auteur='.$id_auteur;
-    }
-
-    // sinon sur l'id_auteur
-    else {
-        if ($id_auteur)
-            $where = 'id_auteur='.$id_auteur;
-        else
-            $where = '(cookie='.sql_quote($cookie).($id_auteur ? ' OR id_auteur='.$id_auteur.')' : ')');
-    }
-
-    $reponses = sql_allfetsel(
-        'id_formulaires_reponse',
-        'spip_formulaires_reponses',
-        array(
-            array('=', 'id_formulaire', intval($id_formulaire)),
-            array('=', 'statut', sql_quote('publie')),
-            $where
-        ),
-        '',
-        'date'
-    );
-
-    if (is_array($reponses))
-        return array_map('reset', $reponses);
-    else
-        return false;
-}
-
-/*
- * Génère la vue d'analyse de toutes les réponses à une saisie
- *
- * @param array $saisie Un tableau décrivant une saisie
- * @param array $env L'environnement, contenant normalement la réponse à la saisie
- * @return string Retour le HTML des vues
- */
-function formidable_analyser_saisie($saisie, $valeurs=array(), $reponses_total=0, $format_brut=false) {
-    // Si le paramètre n'est pas bon ou que c'est un conteneur, on génère du vide
-    if (!is_array($saisie) or (isset($saisie['saisies']) and $saisie['saisies']))
-        return '';
-
-    $contexte = array('reponses_total'=>$reponses_total);
-
-    // On sélectionne le type de saisie
-    $contexte['type_saisie'] = $saisie['saisie'];
-
-    // Peut-être des transformations à faire sur les options textuelles
-    $options = $saisie['options'];
-    foreach ($options as $option => $valeur){
-        $options[$option] = _T_ou_typo($valeur, 'multi');
-    }
-
-    // On ajoute les options propres à la saisie
-    $contexte = array_merge($contexte, $options);
-
-    // On récupère toutes les valeurs du champ
-    if (isset($valeurs[$contexte['nom']]) and $valeurs[$contexte['nom']] and is_array($valeurs[$contexte['nom']])){
-        $contexte['valeurs'] = $valeurs[$contexte['nom']];
-    }
-    else{
-        $contexte['valeurs'] = array();
-    }
-
-    // On génère la saisie
-    if ($format_brut) {
-        return analyser_saisie($contexte);
-    } else {
-        return recuperer_fond(
-            'saisies-analyses/_base',
-            $contexte
-        );
-    }
-}
-
-/*
- * Renvoie une ligne de réponse sous la forme d'un tableau
- *
- * @param array $saisie Un tableau décrivant une saisie
- * @return array Tableau contenant une ligne
- */
-function analyser_saisie($saisie) {
-    if (!isset($saisie['type_saisie']) or $saisie['type_saisie'] == '')
-        return '';
-
-    $ligne = array();
-
-    switch($saisie['type_saisie']) {
-        case 'selecteur_rubrique' :
-        case 'selecteur_rubrique_article' :
-        case 'selecteur_article' :
-            $ligne['plein'] = count(array_filter($saisie['valeurs']));
-            $ligne['vide'] = count(array_diff_key($saisie['valeurs']
-                , array_filter($saisie['valeurs'])));
-        break;
-        case 'radio' :
-        case 'selection' :
-        case 'selection_multiple' :
-        case 'choix_couleur':
-        case 'checkbox' :
-            $stats = array();
-            foreach($saisie['valeurs'] as $valeur) {
-                if (is_array($valeur)) {
-                    foreach($valeur as $choix) {
-                        if (isset($stats["choix-$choix"]))
-                            $stats["choix-$choix"]++;
-                        else $stats["choix-$choix"] = 1;
-                    }
-                } else {
-                    if (isset($stats["choix-$valeur"]))
-                            $stats["choix-$valeur"]++;
-                        else $stats["choix-$valeur"] = 1;
-                }
-            }
-            $datas = is_string($saisie['datas'])
-                ? saisies_chaine2tableau(saisies_aplatir_chaine($saisie['datas']))
-                : $saisie['datas'];
-            foreach($datas as $key => $val) {
-                $nb = (isset($stats["choix-$key"]))
-                    ? $stats["choix-$key"]
-                    : 0;
-                $ligne[$val] = $nb;
-            }
-        break;
-        case 'destinataires' :
-            $stats = array();
-            foreach($saisie['valeurs'] as $valeur) {
-                foreach($valeur as $choix) {
-                    if (isset($stats["choix-$choix"]))
-                        $stats["choix-$choix"]++;
-                    else $stats["choix-$choix"] = 1;
-                }
-            }
-            foreach($stats as $key => $val) {
-                $key = str_replace('choix-', '', $key);
-                if ($key == '') $key = '<valeur vide>';
-                $auteur = sql_getfetsel('nom','spip_auteurs',"id_auteur=$key");
-                $ligne[$auteur] = $val;
-            }
-        break;
-    }
-
-    $vide = 0;
-    foreach($saisie['valeurs'] as $valeur) {
-        if ($valeur == '') $vide++;
-        switch($saisie['type_saisie']) {
-            case 'case' :
-            case 'oui_non' :
-                if(isset($ligne['oui']) == false) $ligne['oui'] = 0;
-                if(isset($ligne['non']) == false) $ligne['non'] = 0;
-                if ($valeur) $ligne['oui']++; else $ligne['non']++;
-            break;
-            case 'input' :
-            case 'hidden' :
-            case 'explication' :
-            break;
-        }
-    }
-    $ligne['sans_reponse'] = $vide;
-    $ligne['header'] = $saisie['label'] != ''
-        ? $saisie['label']
-        : $saisie['type_saisie'];
-
-    return $ligne;
-}
-
-
-/**
- * Tente de déserialiser un texte
- *
- * Si le paramètre est un tableau, retourne le tableau,
- * Si c'est une chaîne, tente de la désérialiser, sinon
- * retourne la chaîne.
- *
- * @filtre
- *
- * @param string|array $texte
- *     Le texte (possiblement sérializé) ou un tableau
- * @return array|string
- *     Tableau, texte désérializé ou texte
-**/
-function filtre_tenter_unserialize_dist($texte) {
-    if (is_array($texte)) {
-        return $texte;
-    }
-    if ($tmp = @unserialize($texte)) {
-        return $tmp;
-    }
-    return $texte;
-}
-
-
-/**
- * Retourne un texte du nombre de réponses
- *
- * @param int $nb
- *     Nombre de réponses
- * @return string
- *     Texte indiquant le nombre de réponses
-**/
-function titre_nb_reponses($nb) {
-    if (!$nb) return _T('formidable:reponse_aucune');
-    if ($nb == 1) return _T('formidable:reponse_une');
-    return _T('formidable:reponses_nb', array('nb' => $nb));
-}
-
-/**
- * Transforme le hash MD5 en une valeur numérique unique
- *
- * trouvé ici : http://stackoverflow.com/questions/1422725/represent-md5-hash-as-an-integer
- * @param string $hex_str La valeur alphanumérique à transformer
- * @return string Valeur numérique
-*/
-function md5_hex_to_dec($hex_str) {
-    $arr = str_split($hex_str, 4);
-    foreach ($arr as $grp) {
-        $dec[] = str_pad(hexdec($grp), 5, '0', STR_PAD_LEFT);
-    }
-
-    /* on s'assure que $result ne commence pas par un zero */
-    $result = implode('', $dec);
-    for ($cpt = 0 ; $cpt < strlen($result) ; $cpt++) {
-        if ($result[$cpt] != '0') break;
-    }
-    $result = substr($result, $cpt);
-    return $result;
-}
-
-/**
- * Transforme un login en une valeur numérique de 19 caractères
- *
- * NOTE: il devient impossible de retrouver la valeur d'origine car le HASH
- * est coupé à 19cars et est donc incomplet. L'unicité n'est pas garantie mais
- * les chances pour que deux logins tombent sur le même HASH sont de 1 sur
- * 10 milliards de milliards
- * A la fin, on recherche et supprime les éventuels zéros de début
- * @param string $login Login à transformer
- * @param string $passwd Chaîne 'secrète' ajoutée au login et id_formulaire pour éviter
- *  les recoupements d'identité entre plusieurs formulaires
- * @return string Un nombre de 19 chiffres
-*/
-function formidable_scramble($login, $passwd = '') {
-    $id_form = (isset($flux['args']['id_form']) ? $flux['args']['id_form'] : '');
-    if ($passwd == '')
-        $passwd = $GLOBALS['formulaires']['passwd']['interne'];
-    $login_md5 = md5("$login$passwd$id_form");
-    $login_num = md5_hex_to_dec($login_md5);
-    $login_num = substr($login_num, 0, 19);
-
-    return $login_num;
-}
-
-?>
diff --git a/www/plugins/formidable_1_0/lang/formidable.xml b/www/plugins/formidable_1_0/lang/formidable.xml
deleted file mode 100644 (file)
index 2194e55..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<traduction module="formidable" gestionnaire="salvatore" url="http://trad.spip.net" source="svn://zone.spip.org/spip-zone/_plugins_/formidable/trunk/lang/" reference="fr">
-       <langue code="de" url="http://trad.spip.net/tradlang_module/formidable?lang_cible=de" total="146" traduits="99" relire="0" modifs="2" nouveaux="45" pourcent="67.81">
-               <traducteur nom="kent1" lien="http://trad.spip.net/auteur/kent1" />
-       </langue>
-       <langue code="en" url="http://trad.spip.net/tradlang_module/formidable?lang_cible=en" total="146" traduits="138" relire="0" modifs="0" nouveaux="8" pourcent="94.52">
-               <traducteur nom="Benitron" lien="http://trad.spip.net/auteur/benitron" />
-               <traducteur nom="kent1" lien="http://trad.spip.net/auteur/kent1" />
-               <traducteur nom="Paolo" lien="http://trad.spip.net/auteur/paolo" />
-               <traducteur nom="twelf" lien="http://trad.spip.net/auteur/twelf" />
-       </langue>
-       <langue code="es" url="http://trad.spip.net/tradlang_module/formidable?lang_cible=es" total="146" traduits="135" relire="0" modifs="0" nouveaux="11" pourcent="92.47">
-               <traducteur nom="tin" lien="http://trad.spip.net/auteur/tin" />
-       </langue>
-       <langue code="fr" url="http://trad.spip.net/tradlang_module/formidable?lang_cible=fr" total="146" traduits="146" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
-       </langue>
-       <langue code="it" url="http://trad.spip.net/tradlang_module/formidable?lang_cible=it" total="146" traduits="116" relire="0" modifs="1" nouveaux="29" pourcent="79.45">
-               <traducteur nom="kent1" lien="http://trad.spip.net/auteur/kent1" />
-       </langue>
-       <langue code="sk" url="http://trad.spip.net/tradlang_module/formidable?lang_cible=sk" total="146" traduits="138" relire="0" modifs="0" nouveaux="8" pourcent="94.52">
-               <traducteur nom="jaro" lien="http://trad.spip.net/auteur/jaro" />
-               <traducteur nom="kent1" lien="http://trad.spip.net/auteur/kent1" />
-       </langue>
-</traduction>
diff --git a/www/plugins/formidable_1_0/lang/formidable_de.php b/www/plugins/formidable_1_0/lang/formidable_de.php
deleted file mode 100644 (file)
index 0a1ad91..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-<?php
-// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
-// extrait automatiquement de http://trad.spip.net/tradlang_module/formidable?lang_cible=de
-// ** ne pas modifier le fichier **
-
-if (!defined('_ECRIRE_INC_VERSION')) return;
-
-$GLOBALS[$GLOBALS['idx_lang']] = array(
-
-       // A
-       'analyse_avec_reponse' => 'Ausgefüllte Antworten',
-       'analyse_exporter' => 'Analyse exportieren',
-       'analyse_longueur_moyenne' => 'Durchschnittliche Anzahl Worte',
-       'analyse_sans_reponse' => 'Leere Antworten',
-
-       // B
-       'bouton_formulaires' => 'Formulare',
-
-       // C
-       'champs' => 'Felder',
-
-       // E
-       'echanger_formulaire_forms_importer' => 'Forms & Tables (.xml)',
-       'echanger_formulaire_wcs_importer' => 'W.C.S. (.wcs)',
-       'echanger_formulaire_yaml_importer' => 'Formidable (.yaml)',
-       'editer_descriptif' => 'Beschreibung',
-       'editer_descriptif_explication' => 'Eine Beschreibung des Formulars für das Backend.',
-       'editer_identifiant' => 'Bezeichnung',
-       'editer_identifiant_explication' => 'Gegen sie eine Bezeichnung an, mit dem sie das Formular ansprechen können.',
-       'editer_menu_champs' => 'Felder konfigurieren',
-       'editer_menu_formulaire' => 'Formular konfigurieren',
-       'editer_menu_traitements' => 'Verarbeitung konfigurieren',
-       'editer_message_ok' => 'Bestätigungstext',
-       'editer_message_ok_explication' => 'Sie können die Nachricht festlegen, die nach dem Absenden des Formulars angezeigt wird.',
-       'editer_modifier_formulaire' => 'Formular ändern',
-       'editer_nouveau' => 'Neues Formular',
-       'editer_titre' => 'Titel',
-       'erreur_autorisation' => 'Sie sind nicht berechtigt, die Formulare der Website zu ändern.',
-       'erreur_base' => 'Beim Speichern ist ein technischer Fehler aufgetreten.',
-       'erreur_generique' => 'Die Felder enthalten Fehler. Bitte überprüfen sie ihre Eingaben.',
-       'erreur_identifiant' => 'Diese Bezeichnung wird bereits verwendet.',
-       'erreur_importer_forms' => 'Fehler beim Importieren des Formulars aus Forms&Tables',
-       'erreur_importer_wcs' => 'Fehler beim Importieren des Formulars aus W.C.S',
-       'erreur_importer_yaml' => 'Fehler beim Importieren des Formulars aus YAML',
-       'erreur_inexistant' => 'Formular nicht vorhanden.',
-
-       // F
-       'formulaire_anonyme_explication' => 'Diese Form ist anonym, dh die Identität des Benutzers nicht registriert ist.', # MODIF
-       'formulaires_aucun' => 'Kein Formular vorhanden.',
-       'formulaires_dupliquer' => 'Formular kopieren',
-       'formulaires_dupliquer_copie' => '(Kopie)',
-       'formulaires_introduction' => 'Erstellen und bearbeiten sie Formulare für ihre Website.',
-       'formulaires_nouveau' => 'Neues Formular anlegen',
-       'formulaires_supprimer' => 'Formular löschen',
-       'formulaires_supprimer_confirmation' => 'Achtung - alle Daten aus dem Formular werden ebenfalls gelöscht. Sind sie sicher, dass sie das Formular löschen wollen?',
-       'formulaires_tous' => 'Alle Formulare',
-
-       // I
-       'importer_formulaire' => 'Formular importieren',
-       'importer_formulaire_fichier_label' => 'Dateien importeieren',
-       'importer_formulaire_format_label' => 'Format der Datei',
-
-       // R
-       'reponse_intro' => '@auteur@ hat auf das Formular geantwortet @formulaire@',
-       'reponse_numero' => 'Antwort Nummer:',
-       'reponse_statut' => 'Diese Antwort ist:',
-       'reponse_supprimer' => 'Diese Antwort löschen',
-       'reponse_supprimer_confirmation' => 'Wollen sie diese Antwor wirklich löschen?',
-       'reponses_analyse' => 'Analyse der Antworten',
-       'reponses_anonyme' => 'Anonym',
-       'reponses_auteur' => 'Nutzer',
-       'reponses_exporter' => 'Antworten exportieren',
-       'reponses_ip' => 'IP-Adresse',
-       'reponses_liste' => 'Liste der Antworten',
-       'reponses_liste_prop' => 'Nicht freigegebene Antworten',
-       'reponses_liste_publie' => 'Alle freigegebenen Antworten',
-       'reponses_voir_detail' => 'Antwort anzeigen',
-       'retour_aucun_traitement' => 'Ihre Antwort wurde gesendet, jedoch wurde keine Verarbeitungsoption für das Formular festgelegt. Deshalb geschieht mit den Daten aus diesem Formular überhaupt nichts. :)',
-
-       // S
-       'sans_reponses' => 'Unbeantwortet',
-
-       // T
-       'traitements_aide_memoire' => 'Merkzettel:',
-       'traitements_avertissement_creation' => 'Die Änderungen der Felder des Formulars wurden erfolgreich gespeichert. Jetzt können sie festlege, welche Verarbeitungsschritte nach dem Senden des Formulars ausgef',
-       'traitements_avertissement_modification' => 'Die Änderungen der Felder des Formulars wurden erfolgreich gespeichert. <strong>Manche Verarbeitungsoptionen müssen entsprechend neu konfiguriert werden.</strong>',
-       'traitements_champ_aucun' => 'Kein',
-       'traiter_email_description' => 'Sendet das Ergebnis des Formulars an eine Empfängerliste.',
-       'traiter_email_horodatage' => 'Formular "@formulaire@" am @date@ um @heure@ gesendet.',
-       'traiter_email_message_erreur' => 'Beim Versenden des Formulars ist ein Fehler aufgetreten.',
-       'traiter_email_message_ok' => 'Ihre Nachricht wurde per Mail gesendet.',
-       'traiter_email_option_activer_accuse_label' => 'Empfangsbestätigung',
-       'traiter_email_option_activer_accuse_label_case' => 'Ebenfalls eine Empfangsbestätigung an Absender senden.',
-       'traiter_email_option_destinataires_explication' => 'Legen sie das Feld fest, das die Empfängeradresse enthält.',
-       'traiter_email_option_destinataires_label' => 'Empfänger',
-       'traiter_email_option_destinataires_plus_explication' => 'Eine kommagetrennte Empfängerliste.',
-       'traiter_email_option_destinataires_plus_label' => 'Weitere Empfänger',
-       'traiter_email_option_envoyeur_courriel_explication' => 'Legen sie das Feld fest, das die Absenderadresse enthält.',
-       'traiter_email_option_envoyeur_courriel_label' => 'Absenderadresse',
-       'traiter_email_option_envoyeur_nom_explication' => 'Definieren sie den Namen mit Hilf der @raccourcis@ (siehe Merkzettel). Wenn sie nichts eintragen, wird der Name der Website verwendet.',
-       'traiter_email_option_envoyeur_nom_label' => 'Name des Absenders',
-       'traiter_email_option_sujet_accuse_label' => 'Betreff der Empfangsbestätigung',
-       'traiter_email_option_sujet_explication' => 'Definieren sie den Betreff mit Hilf der @raccourcis@. Wenn sie das Feld freilassen, wird der Inhalt automatisch erstellt.',
-       'traiter_email_option_sujet_label' => 'Betreff der Nachricht',
-       'traiter_email_page' => '<a href="@url@">Aus der Seite</a>.',
-       'traiter_email_sujet' => '@nom@ hat ihnen geschrieben.',
-       'traiter_email_sujet_accuse' => 'Danke für ihre Antwort.',
-       'traiter_email_titre' => 'Per Mail senden',
-       'traiter_email_url_enregistrement' => 'Sie könen die Antworten <a href="@url@">auf dieser Seite verwalten</a>.',
-       'traiter_enregistrement_description' => 'Einträge in das Formular in der Datenbank speichern',
-       'traiter_enregistrement_erreur_base' => 'Beim Speichern in der Datenbank ist ein Fehler aufgetreten',
-       'traiter_enregistrement_erreur_deja_repondu' => 'Sie haben dieses Formular bereits ausgefüllt.',
-       'traiter_enregistrement_option_anonymiser_explication' => 'Stellen die Ergebnisse der anonymen Form (nicht halten Trace-Kennung der Befragten).', # MODIF
-       'traiter_enregistrement_option_anonymiser_label' => 'Anonymisierter Form',
-       'traiter_enregistrement_option_anonymiser_variable_explication' => 'Welches System Variable verwendet, um einen einzelnen Wert für jeden Autor ohne Offenlegung seiner Identität zu berechnen.',
-       'traiter_enregistrement_option_anonymiser_variable_label' => 'Variable aus dem anonymisierter Form.',
-       'traiter_enregistrement_option_choix_select_label' => 'Wählen eine Variable von denen zur Verfügung.',
-       'traiter_enregistrement_option_moderation_label' => 'Moderation',
-       'traiter_enregistrement_option_modifiable_explication' => 'Sollen die Besucher ihre Antworten nachträglich &aauml;ndern können?',
-       'traiter_enregistrement_option_modifiable_label' => 'Antworten editierbar',
-       'traiter_enregistrement_option_multiple_explication' => 'Darf die gleiche Person das Formular mehrmals ausfüllen und absenden?',
-       'traiter_enregistrement_option_multiple_label' => 'Mehrfache Antworten',
-       'traiter_enregistrement_titre' => 'Ergebnisse speichern',
-
-       // V
-       'voir_exporter' => 'Formular exportieren',
-       'voir_numero' => 'Formular Nummer:',
-       'voir_reponses' => 'Antworten anzeigen',
-       'voir_traitements' => 'Verarbeitungsoptionen'
-);
-
-?>
diff --git a/www/plugins/formidable_1_0/lang/formidable_en.php b/www/plugins/formidable_1_0/lang/formidable_en.php
deleted file mode 100644 (file)
index bee8472..0000000
+++ /dev/null
@@ -1,175 +0,0 @@
-<?php
-// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
-// extrait automatiquement de http://trad.spip.net/tradlang_module/formidable?lang_cible=en
-// ** ne pas modifier le fichier **
-
-if (!defined('_ECRIRE_INC_VERSION')) return;
-
-$GLOBALS[$GLOBALS['idx_lang']] = array(
-
-       // A
-       'analyse_avec_reponse' => 'Non-empty answers',
-       'analyse_exporter' => 'Export analysis',
-       'analyse_longueur_moyenne' => 'Average number in words length',
-       'analyse_nb_reponses_total' => '@nb@ people responded to this form.',
-       'analyse_sans_reponse' => 'Stayed unanswered',
-       'analyse_une_reponse_total' => 'One person responded to this form.',
-       'analyse_zero_reponse_total' => 'No one responded to this form.',
-       'aucun_traitement' => 'No treatment',
-
-       // B
-       'bouton_formulaires' => 'Forms',
-
-       // C
-       'cfg_analyse_classe_explication' => 'You can specify CSS classes that will be added on the container of each graph, such as 
-<code>gray</code>,<code>blue</code>,
-               <code>orange</code>, <code>green</code> or whatever you like!',
-       'cfg_analyse_classe_label' => 'CSS class of the progress bar',
-       'cfg_titre_page_configurer_formidable' => 'Configure Formidable',
-       'cfg_titre_parametrages_analyse' => 'Settings in the answers analysis',
-       'champs' => 'Fields',
-
-       // E
-       'echanger_formulaire_forms_importer' => 'Forms & Tables (.xml)',
-       'echanger_formulaire_wcs_importer' => 'W.C.S. (.wcs)',
-       'echanger_formulaire_yaml_importer' => 'Formidable (.yaml)',
-       'editer_apres_choix_formulaire' => 'The form, again',
-       'editer_apres_choix_redirige' => 'Redirect to a new address',
-       'editer_apres_choix_rien' => 'Nothing',
-       'editer_apres_choix_stats' => 'Answers statistics',
-       'editer_apres_choix_valeurs' => 'The entered values',
-       'editer_apres_explication' => 'After validation, display instead of the form:',
-       'editer_apres_label' => 'Display then',
-       'editer_descriptif' => 'Description',
-       'editer_descriptif_explication' => 'An explanation of the form for the private area.',
-       'editer_identifiant' => 'Login',
-       'editer_identifiant_explication' => 'Give a single textual identifier that allows you to call the form more easily.',
-       'editer_menu_auteurs' => 'Configure authors',
-       'editer_menu_champs' => 'Configure the fields',
-       'editer_menu_formulaire' => 'Configure the form',
-       'editer_menu_traitements' => 'Configure the treatments',
-       'editer_message_ok' => 'Return message',
-       'editer_message_ok_explication' => 'You can customize the message that will be displayed to the user after submitting a valid form.',
-       'editer_modifier_formulaire' => 'Modify the form',
-       'editer_nouveau' => 'New form',
-       'editer_redirige_url' => 'Forwarding address after validation',
-       'editer_redirige_url_explication' => 'Leave blank if you want to stay on the same page',
-       'editer_titre' => 'Title',
-       'erreur_autorisation' => 'You do not have the right to edit the website forms',
-       'erreur_base' => 'An error occurred as the data was being saved.',
-       'erreur_generique' => 'There are errors in the fields below. Please check.',
-       'erreur_identifiant' => 'This login is already used.',
-       'erreur_importer_forms' => 'Error while importing the Forms&Tables form',
-       'erreur_importer_wcs' => 'Error while importing the W.C.S form',
-       'erreur_importer_yaml' => 'Error while importing the YAML file',
-       'erreur_inexistant' => 'This form doesn’t exist.',
-
-       // F
-       'formulaire_anonyme_explication' => 'This form is anonymous; meaning that the user’s identity won’t be recorded.',
-       'formulaires_aucun' => 'There is no form for now',
-       'formulaires_dupliquer' => 'Duplicate the form',
-       'formulaires_dupliquer_copie' => '(copy)',
-       'formulaires_introduction' => 'Create and configure forms on your site here.',
-       'formulaires_nouveau' => 'Create a new form',
-       'formulaires_supprimer' => 'Delete the form',
-       'formulaires_supprimer_confirmation' => 'Beware, it will also remove all the results. Are you sure you want to delete this form?',
-       'formulaires_tous' => 'All forms',
-
-       // I
-       'identification_par_cookie' => 'By cookie',
-       'identification_par_id_auteur' => 'By login (id_auteur) of the authenticated person',
-       'importer_formulaire' => 'Import a form',
-       'importer_formulaire_fichier_label' => 'File to import',
-       'importer_formulaire_format_label' => 'File format',
-
-       // M
-       'modele_label_formulaire_formidable' => 'Which form ?',
-       'modele_nom_formulaire' => 'One form',
-
-       // N
-       'noisette_label_afficher_titre_formulaire' => 'Dispaly the title of the form ?',
-       'noisette_label_identifiant' => 'Form to display :',
-       'noisette_nom_noisette_formulaire' => 'Form',
-
-       // R
-       'reponse_aucune' => 'No answer',
-       'reponse_intro' => '@auteur@ answered to the form @formulaire@',
-       'reponse_numero' => 'Answer number :',
-       'reponse_statut' => 'This answer is :',
-       'reponse_supprimer' => 'Delete this reply',
-       'reponse_supprimer_confirmation' => 'Do you really wish to delete this reply?',
-       'reponse_une' => '1 reply',
-       'reponses_analyse' => 'Answer analysis',
-       'reponses_anonyme' => 'Anonymous',
-       'reponses_auteur' => 'User',
-       'reponses_exporter' => 'Export the answers',
-       'reponses_ip' => 'IP address',
-       'reponses_liste' => 'Answers list',
-       'reponses_liste_prop' => 'Answers pending for validation',
-       'reponses_liste_publie' => 'All validated answers',
-       'reponses_nb' => '@nb@ answers',
-       'reponses_voir_detail' => 'See the answer',
-       'retour_aucun_traitement' => 'Your reply was accepted. But as the function of the form has not yet been configured, nothing was done with your data!',
-
-       // S
-       'sans_reponses' => 'Unanswered',
-
-       // T
-       'titre_cadre_raccourcis' => 'Shortcuts',
-       'traitements_actives' => 'Activated treatments',
-       'traitements_aide_memoire' => 'List of shortcuts:',
-       'traitements_avertissement_creation' => 'Changes to the form fields have been successfully saved. You can now define which treatments will be performed when using the form.',
-       'traitements_avertissement_modification' => 'Changes to the form fields have been successfully saved. <strong>Some treatments may need to be reconfigured accordingly.</ strong>',
-       'traitements_champ_aucun' => 'None',
-       'traiter_email_description' => 'Post the form results by email to a list of recipients.',
-       'traiter_email_horodatage' => 'Form "@formulaire@" sent on @date@ at @heure@.',
-       'traiter_email_message_erreur' => 'An error occurred when sending the email.',
-       'traiter_email_message_ok' => 'Your message has been successfully sent by email.',
-       'traiter_email_option_activer_accuse_label' => 'Acknowledgement of receipt',
-       'traiter_email_option_activer_accuse_label_case' => 'Also send an email to the sender with a confirmation message.',
-       'traiter_email_option_destinataires_explication' => 'Choose the field that corresponds to the message recipients.',
-       'traiter_email_option_destinataires_label' => 'Recipients',
-       'traiter_email_option_destinataires_plus_explication' => 'A list of addresses separated by commas.',
-       'traiter_email_option_destinataires_plus_label' => 'Extra recipients',
-       'traiter_email_option_envoyeur_courriel_explication' => 'Select the field that will contain the email address of the sender.',
-       'traiter_email_option_envoyeur_courriel_label' => 'Sender Email',
-       'traiter_email_option_envoyeur_nom_explication' => 'Build this name using the @raccourcis@ (see the notes). If you enter nothing, it will be the name of the site.',
-       'traiter_email_option_envoyeur_nom_label' => 'Name of sender',
-       'traiter_email_option_sujet_accuse_label' => 'Subject of the acknowledgement of receipt',
-       'traiter_email_option_sujet_explication' => 'Build topic using @raccourcis@. If you enter nothing, the subject will be built automatically.',
-       'traiter_email_option_sujet_label' => 'Message subject',
-       'traiter_email_option_vrai_envoyeur_explication' => 'Some SMTP servers do not allow to use arbitrary email for the "From" field. For this reason Formidable inserts the default email sender in the "Reply-To". Tick here to insert the email in the "From" field.',
-       'traiter_email_option_vrai_envoyeur_label' => 'Insert email of the sender in the "From" field',
-       'traiter_email_page' => '<a href="@url@">From this page</a>.',
-       'traiter_email_sujet' => '@nom@ has written to you.',
-       'traiter_email_sujet_accuse' => 'Thank you for you reply.',
-       'traiter_email_titre' => 'Send by email',
-       'traiter_email_url_enregistrement' => 'You can manage the answers <a href="@url@">on this page</a>.',
-       'traiter_enregistrement_description' => 'Saves the form results in the database',
-       'traiter_enregistrement_erreur_base' => 'An error occurred while writing to the database',
-       'traiter_enregistrement_erreur_deja_repondu' => 'You have already filled in this form.',
-       'traiter_enregistrement_erreur_edition_reponse_inexistante' => 'The answer to edit can not be found.',
-       'traiter_enregistrement_option_anonymiser_explication' => 'Make the form results anonymous (don’t keep any tracks of user who have answered).',
-       'traiter_enregistrement_option_anonymiser_label' => 'Anonymize form',
-       'traiter_enregistrement_option_anonymiser_variable_explication' => 'What system variable used to calculate a single value for each author without revealing his identity.',
-       'traiter_enregistrement_option_anonymiser_variable_label' => 'Variable from witch the form will be anonymized',
-       'traiter_enregistrement_option_auteur' => 'Link authors to the forms',
-       'traiter_enregistrement_option_auteur_explication' => 'Bind one or more authors to a form. If activated, this option prevents anyone except the author(s) to access form’s configuration or results.',
-       'traiter_enregistrement_option_choix_select_label' => 'Select a variable from the available',
-       'traiter_enregistrement_option_identification_explication' => 'If the answers can be changed, which method is used first to know the answer to modify ?',
-       'traiter_enregistrement_option_identification_label' => 'Identification',
-       'traiter_enregistrement_option_moderation_label' => 'Moderation',
-       'traiter_enregistrement_option_modifiable_explication' => 'May visitors change their answers afterwards?',
-       'traiter_enregistrement_option_modifiable_label' => 'Answers can be modified',
-       'traiter_enregistrement_option_multiple_explication' => 'May a single person answer several times to the form?',
-       'traiter_enregistrement_option_multiple_label' => 'Multiple answers',
-       'traiter_enregistrement_titre' => 'Record the results',
-
-       // V
-       'voir_exporter' => 'Export the form',
-       'voir_numero' => 'Form number :',
-       'voir_reponses' => 'See the answers',
-       'voir_traitements' => 'Treatments'
-);
-
-?>
diff --git a/www/plugins/formidable_1_0/lang/formidable_es.php b/www/plugins/formidable_1_0/lang/formidable_es.php
deleted file mode 100644 (file)
index ff542c6..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-<?php
-// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
-// extrait automatiquement de http://trad.spip.net/tradlang_module/formidable?lang_cible=es
-// ** ne pas modifier le fichier **
-
-if (!defined('_ECRIRE_INC_VERSION')) return;
-
-$GLOBALS[$GLOBALS['idx_lang']] = array(
-
-       // A
-       'analyse_avec_reponse' => 'Respuestas no vacías',
-       'analyse_exporter' => 'Exportar análisis',
-       'analyse_longueur_moyenne' => 'Longitud media de las palabras',
-       'analyse_nb_reponses_total' => '@nb@ personas han respondido a este formulario. ',
-       'analyse_sans_reponse' => 'Sin respuesta',
-       'analyse_une_reponse_total' => 'Una persona ha respondido a este formulario. ',
-       'analyse_zero_reponse_total' => 'Nadie ha respondido a este formulario.',
-       'aucun_traitement' => 'Ningún tratamiento',
-
-       // B
-       'bouton_formulaires' => 'Formularios',
-
-       // C
-       'cfg_analyse_classe_explication' => 'Puede especificar clases CSS que se añadirán en el envase de cada gráfico, tales como: <code>gray</code>,<code>blue</code>,
-               <code>orange</code>, <code>green</code> o las que quieras!',
-       'cfg_analyse_classe_label' => 'Clase CSS de la barra de progreso',
-       'cfg_titre_page_configurer_formidable' => 'Configurar Formidable',
-       'cfg_titre_parametrages_analyse' => 'Configuración en el análisis de respuestas',
-       'champs' => 'Campos',
-
-       // E
-       'echanger_formulaire_forms_importer' => 'Forms & Tables (.xml)',
-       'echanger_formulaire_wcs_importer' => 'W.C.S. (.wcs)',
-       'echanger_formulaire_yaml_importer' => 'Formidable (.yaml)',
-       'editer_apres_choix_formulaire' => 'El formulario, de nuevo',
-       'editer_apres_choix_redirige' => 'Redirigir a una nueva dirección',
-       'editer_apres_choix_rien' => 'Nada',
-       'editer_apres_choix_stats' => 'Estadísticas de respuesta',
-       'editer_apres_choix_valeurs' => 'Los valores ingresados',
-       'editer_apres_explication' => 'Después de la validación, mostrar en lugar del formulario:',
-       'editer_apres_label' => 'Mostrar a continuación',
-       'editer_descriptif' => 'Descripción',
-       'editer_descriptif_explication' => 'Una explicación del formulario para la zona privada.',
-       'editer_identifiant' => 'Nombre de usuario',
-       'editer_identifiant_explication' => 'Da un único identificador textual que permita llamar al formulario de manera más sencilla',
-       'editer_menu_champs' => 'Configurar los campos',
-       'editer_menu_formulaire' => 'Configurar el formulario',
-       'editer_menu_traitements' => 'Configurar los tratamientos',
-       'editer_message_ok' => 'Mensaje de respuesta',
-       'editer_message_ok_explication' => 'Puedes personalizar el mensaje que se mostrará al usuario después de enviar un formulario válido.',
-       'editer_modifier_formulaire' => 'Modificar el formulario',
-       'editer_nouveau' => 'Nuevo formulario',
-       'editer_redirige_url' => 'Dirección de reenvío después de la validación',
-       'editer_redirige_url_explication' => 'Dejar en blanco si quieres permanecer en la misma página',
-       'editer_titre' => 'Título',
-       'erreur_autorisation' => 'No tienes permisos para editar los formularios web',
-       'erreur_base' => 'Se ha producido un error técnico mientras se salvavan los datos.',
-       'erreur_generique' => 'Hay errores en los campos a continuación. Por favor, comprueba. ',
-       'erreur_identifiant' => 'El nombre de usuario ya está siendo utilizado.',
-       'erreur_importer_forms' => 'Error durante la importación de Forms&Tables',
-       'erreur_importer_wcs' => 'Error durante la importación del formulario W.C.S',
-       'erreur_importer_yaml' => 'Error durante la importación del archivo YAML',
-       'erreur_inexistant' => 'Este formulario no existe. ',
-
-       // F
-       'formulaire_anonyme_explication' => 'Este formulario es anónimo; significa que que la identidad del usuario no será guardada. ',
-       'formulaires_aucun' => 'Todavía no existe ningún formulario.',
-       'formulaires_dupliquer' => 'Duplicar el formulario',
-       'formulaires_dupliquer_copie' => '(copia)',
-       'formulaires_introduction' => 'Crea y configura los formularios de tu sitio aquí.',
-       'formulaires_nouveau' => 'Crea un nuevo formulario',
-       'formulaires_supprimer' => 'Eliminar el formulario. ',
-       'formulaires_supprimer_confirmation' => 'Atención, también se eliminarán todos los resultados. ¿Está seguro de que desea eliminar este formulario?',
-       'formulaires_tous' => 'Todos los formularios',
-
-       // I
-       'identification_par_cookie' => 'Por cookie',
-       'identification_par_id_auteur' => 'Por el identificador (id_auteur) de la persona autenticada',
-       'importer_formulaire' => 'Importar un formulario',
-       'importer_formulaire_fichier_label' => 'Archivo a importar',
-       'importer_formulaire_format_label' => 'Formato de archivo',
-
-       // M
-       'modele_label_formulaire_formidable' => '¿Cuál formulario?',
-       'modele_nom_formulaire' => 'un formulario',
-
-       // N
-       'noisette_label_afficher_titre_formulaire' => '¿Mostrar el título del formulario? ',
-       'noisette_label_identifiant' => 'Formulario a mostrar:',
-       'noisette_nom_noisette_formulaire' => 'Formulario',
-
-       // R
-       'reponse_aucune' => 'Ninguna respuesta',
-       'reponse_intro' => '@auteur@ respondió el formulario @formulaire@',
-       'reponse_numero' => 'Respuesta numéro:',
-       'reponse_statut' => 'Esta respuesta es:',
-       'reponse_supprimer' => 'Eliminar esta respuesta',
-       'reponse_supprimer_confirmation' => '¿Estás seguro de que deseas eliminar esta respuesta?',
-       'reponse_une' => '1 respuesta',
-       'reponses_analyse' => 'Analizar las respuestas',
-       'reponses_anonyme' => 'Anónimo',
-       'reponses_auteur' => 'Usuario',
-       'reponses_exporter' => 'Exportar las respuestas',
-       'reponses_ip' => 'Dirección IP',
-       'reponses_liste' => 'Lista de respuestas',
-       'reponses_liste_prop' => 'Respuestas pendientes de validación',
-       'reponses_liste_publie' => 'Todas las respuestas validadas',
-       'reponses_nb' => '@nb@ respuestas',
-       'reponses_voir_detail' => 'Ver la respuesta',
-       'retour_aucun_traitement' => 'Su respuesta ha sido enviada, pero ningún tratamiento ha sido definido para este formulario. ¡No se hizo nada con sus datos!',
-
-       // S
-       'sans_reponses' => 'Sin respuesta',
-
-       // T
-       'titre_cadre_raccourcis' => 'Accesos directos',
-       'traitements_actives' => 'Tratamientos activados',
-       'traitements_aide_memoire' => 'Ayuda memoria: ',
-       'traitements_avertissement_creation' => 'Los cambios en los campos del formulario se han guardado correctamente. Ahora puedes definir que tratamientos se llevarán a cabo cuando se utilice el formulario.',
-       'traitements_avertissement_modification' => 'Los cambios en los campos del formulario se han guardado correctamente. <strong>Algunos tratamientos pueden necesitar ser reconfigurados en consecuencia. </strong>',
-       'traitements_champ_aucun' => 'Ninguno',
-       'traiter_email_description' => 'Publicar los resultados del formulario por correo electrónico a una lista de destinatarios.',
-       'traiter_email_horodatage' => 'Formulario "@formulaire@" publicado el @date@ a las @heure@.',
-       'traiter_email_message_erreur' => 'Se ha producido un error al enviar el correo electrónico. ',
-       'traiter_email_message_ok' => 'Tu mensaje ha sido enviado por correo electrónico.',
-       'traiter_email_option_activer_accuse_label' => 'Acuse de recibo',
-       'traiter_email_option_activer_accuse_label_case' => 'También enviar un correo electrónico al remitente con un mensaje de confirmación.',
-       'traiter_email_option_destinataires_explication' => 'Elige el campo que corresponde a los destinatarios del mensaje.',
-       'traiter_email_option_destinataires_label' => 'Destinatarios',
-       'traiter_email_option_destinataires_plus_explication' => 'Una lista de direcciones separadas por coma',
-       'traiter_email_option_destinataires_plus_label' => 'Destinatarios extra',
-       'traiter_email_option_envoyeur_courriel_explication' => 'Selecciona el campo que contendrá la dirección de correo electrónico del remitente.',
-       'traiter_email_option_envoyeur_courriel_label' => 'Enviar email',
-       'traiter_email_option_envoyeur_nom_explication' => 'Construye este nombre usando los @raccourcis@ (usa la ayuda memoria). Si lo dejas en blanco se usará el nombre del sitio. ',
-       'traiter_email_option_envoyeur_nom_label' => 'Nombre del remitente',
-       'traiter_email_option_sujet_accuse_label' => 'Asunto del acuse de recibo. ',
-       'traiter_email_option_sujet_explication' => 'Construye este asunto usando los @raccourcis@ (usa la ayuda memoria). Si lo dejas en blanco se usará uno por defecto. ',
-       'traiter_email_option_sujet_label' => 'Asunto del mensaje',
-       'traiter_email_option_vrai_envoyeur_explication' => 'Algunos servidores SMTP no permiten el uso de un correo electrónico arbitrario para el campo "From". Por esta razón Formidable inserta  por defecto el correo del remitente en el campo "Reply-to". Marca aquí para insertarlo en el campo "From".',
-       'traiter_email_option_vrai_envoyeur_label' => 'Inserta el correo del remitente en el campo "From"',
-       'traiter_email_page' => '<a href="@url@">Desde esta página</a>.',
-       'traiter_email_sujet' => '@nom@ ha escrito a usted.',
-       'traiter_email_sujet_accuse' => 'Gracias por su respuesta. ',
-       'traiter_email_titre' => 'Enviar por correo electrónico',
-       'traiter_email_url_enregistrement' => 'Puede gestionar las respuestas <a href="@url@">desde esta página</a>.',
-       'traiter_enregistrement_description' => 'Salvar los resultados del formulario en una base de datos',
-       'traiter_enregistrement_erreur_base' => 'Se ha producido un error técnico mientras se escribía en la base de datos',
-       'traiter_enregistrement_erreur_deja_repondu' => 'Usted ya ha respondido a este formulario.',
-       'traiter_enregistrement_erreur_edition_reponse_inexistante' => 'La respuesta a editar no puso ser encontrada. ',
-       'traiter_enregistrement_option_anonymiser_explication' => 'Volver los resultados del formulario anónimos (no mantener ningún tipo de datos de los usuarios que han respondido).',
-       'traiter_enregistrement_option_anonymiser_label' => 'Anonimizar el formulario',
-       'traiter_enregistrement_option_anonymiser_variable_explication' => '¿Qué variable de sistema utilizará para calcular un valor único para cada autor sin revelar su identidad ?',
-       'traiter_enregistrement_option_anonymiser_variable_label' => 'Variable del formulario que anonimiza',
-       'traiter_enregistrement_option_choix_select_label' => 'Seleccione una variable de las disponibles',
-       'traiter_enregistrement_option_identification_explication' => '¿Si las respuestas se pueden modificar, cuál es el método para usar en primer lugar para conocer la respuesta a modificar?',
-       'traiter_enregistrement_option_identification_label' => 'Identificación',
-       'traiter_enregistrement_option_moderation_label' => 'Moderación',
-       'traiter_enregistrement_option_modifiable_explication' => '¿Los visitantes pueden cambiar sus respuestas con posterioridad?',
-       'traiter_enregistrement_option_modifiable_label' => 'Respuestas modificables',
-       'traiter_enregistrement_option_multiple_explication' => '¿Una misma persona puede responder varias veces el formulario?',
-       'traiter_enregistrement_option_multiple_label' => 'Respuestas múltiples',
-       'traiter_enregistrement_titre' => 'Registra los resultados',
-
-       // V
-       'voir_exporter' => 'Exportar el formulario',
-       'voir_numero' => 'Formulario número:',
-       'voir_reponses' => 'Ver las respuesta',
-       'voir_traitements' => 'Tratamientos'
-);
-
-?>
diff --git a/www/plugins/formidable_1_0/lang/formidable_fr.php b/www/plugins/formidable_1_0/lang/formidable_fr.php
deleted file mode 100644 (file)
index 528f75c..0000000
+++ /dev/null
@@ -1,183 +0,0 @@
-<?php
-// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
-// Fichier source, a modifier dans svn://zone.spip.org/spip-zone/_plugins_/formidable/trunk/lang/
-if (!defined('_ECRIRE_INC_VERSION')) return;
-
-$GLOBALS[$GLOBALS['idx_lang']] = array(
-
-       // A
-       'admin_reponses_auteur' => 'Autoriser les auteurs des formulaires à modifier les réponses',
-       'admin_reponses_auteur_explication' => 'Seul les administrateurs peuvent normalement modifier les réponses apportées à un formulaire (à la poubelle, publiée, proposé à l’évaluation). Cette option permet à un auteur d’un formulaire d’en modifier le statut (au risque de fausser d’éventuelles statistiques).',
-       'analyse_avec_reponse' => 'Réponses non-vide',
-       'analyse_exclure_champs_explication' => 'Mettre le nom des champs à exclure dans l’analyse, séparé par des <code>|</code>. Ne pas mettre les <code>@</code>.',
-       'analyse_exclure_champs_label' => 'Champs à exclure',
-       'analyse_exporter' => 'Exporter l’analyse',
-       'analyse_longueur_moyenne' => 'Longueur moyenne en nombre de mots',
-       'analyse_nb_reponses_total' => '@nb@ personnes ont répondu à ce formulaire.',
-       'analyse_sans_reponse' => 'Laissés blanc',
-       'analyse_une_reponse_total' => 'Une personne a répondu à ce formulaire.',
-       'analyse_zero_reponse_total' => 'Aucune personne n’a répondu à ce formulaire.',
-       'aucun_traitement' => 'Aucun traitement',
-
-       // B
-       'bouton_formulaires' => 'Formulaires',
-
-       // C
-       'cfg_analyse_classe_explication' => 'Vous pouvez indiquer des classes CSS qui seront ajoutées
-               sur le conteneur de chaque graphique, tel que <code>gray</code>,<code>blue</code>,
-               <code>orange</code>, <code>green</code> ou tout ce qui vous plairait !',
-       'cfg_analyse_classe_label' => 'Classe CSS de la barre de progression',
-       'cfg_titre_page_configurer_formidable' => 'Configurer Formidable',
-       'cfg_titre_parametrages_analyse' => 'Paramétrages de l’analyse des réponses',
-       'champs' => 'Champs',
-
-       // E
-       'echanger_formulaire_forms_importer' => 'Forms & Tables (.xml)',
-       'echanger_formulaire_wcs_importer' => 'W.C.S. (.wcs)',
-       'echanger_formulaire_yaml_importer' => 'Formidable (.yaml)',
-       'editer_apres_choix_formulaire' => 'Le formulaire, à nouveau',
-       'editer_apres_choix_redirige' => 'Rediriger vers une nouvelle adresse',
-       'editer_apres_choix_rien' => 'Rien du tout',
-       'editer_apres_choix_stats' => 'Les statistiques des réponses',
-       'editer_apres_choix_valeurs' => 'Les valeurs saisies',
-       'editer_apres_explication' => 'Après validation, afficher à la place du formulaire :',
-       'editer_apres_label' => 'Afficher ensuite',
-       'editer_descriptif' => 'Descriptif',
-       'editer_descriptif_explication' => 'Une explication du formulaire destinée à l’espace privé.',
-       'editer_identifiant' => 'Identifiant',
-       'editer_identifiant_explication' => 'Donnez un identifiant textuel unique qui vous permettra d’appeler plus facilement le formulaire.',
-       'editer_menu_auteurs' => 'Configurer les auteurs',
-       'editer_menu_champs' => 'Configurer les champs',
-       'editer_menu_formulaire' => 'Configurer le formulaire',
-       'editer_menu_traitements' => 'Configurer les traitements',
-       'editer_message_ok' => 'Message de retour',
-       'editer_message_ok_explication' => 'Vous pouvez personnaliser le message qui sera affiché à l’utilisateur après l’envoi d’un formulaire valide.',
-       'editer_modifier_formulaire' => 'Modifier le formulaire',
-       'editer_nouveau' => 'Nouveau formulaire',
-       'editer_redirige_url' => 'Adresse de redirection après validation',
-       'editer_redirige_url_explication' => 'Laissez vide si vous souhaitez rester sur la même page',
-       'editer_titre' => 'Titre',
-       'erreur_autorisation' => 'Vous n’avez pas le droit d’éditer les formulaires du site.',
-       'erreur_base' => 'Une erreur technique est survenue durant l’enregistrement.',
-       'erreur_generique' => 'Il y a des erreurs dans les champs ci-dessous, veuillez vérifier votre envoi.',
-       'erreur_identifiant' => 'Cet identifiant est déjà utilisé.',
-       'erreur_importer_forms' => 'Erreur durant l’importation du formulaire Forms&Tables',
-       'erreur_importer_wcs' => 'Erreur durant l’importation du formulaire W.C.S',
-       'erreur_importer_yaml' => 'Erreur durant l’importation du fichier YAML',
-       'erreur_inexistant' => 'Le formulaire n’existe pas.',
-
-       // F
-       'formulaire_anonyme_explication' => 'Ce formulaire est anonyme, c’est à dire que l’identité de l’utilisateur n’est pas enregistrée.',
-       'formulaires_aucun' => 'Il n’y a pour l’instant aucun formulaire.',
-       'formulaires_dupliquer' => 'Dupliquer le formulaire',
-       'formulaires_dupliquer_copie' => '(copie)',
-       'formulaires_introduction' => 'Créez et configurez ici les formulaires de votre site.',
-       'formulaires_nouveau' => 'Créer un nouveau formulaire',
-       'formulaires_supprimer' => 'Supprimer le formulaire',
-       'formulaires_supprimer_confirmation' => 'Attention, cela supprimera aussi tous les résultats. Êtes-vous sûr de vouloir supprimer ce formulaire ?',
-       'formulaires_tous' => 'Tous les formulaires',
-
-       // I
-       'identification_par_cookie' => 'Par cookie',
-       'identification_par_id_auteur' => 'Par l’identifiant (id_auteur) de la personne authentifiée',
-       'importer_formulaire' => 'Importer un formulaire',
-       'importer_formulaire_fichier_label' => 'Fichier à importer',
-       'importer_formulaire_format_label' => 'Format du fichier',
-
-       // M
-       'modele_label_formulaire_formidable' => 'Quel formulaire ?',
-       'modele_nom_formulaire' => 'un formulaire',
-
-       // N
-       'noisette_label_afficher_titre_formulaire' => 'Afficher le titre du formulaire ?',
-       'noisette_label_identifiant' => 'Formulaire à afficher :',
-       'noisette_nom_noisette_formulaire' => 'Formulaire',
-
-       // R
-       'reponse_aucune' => 'Aucune réponse',
-       'reponse_intro' => '@auteur@ a répondu au formulaire @formulaire@',
-       'reponse_numero' => 'Réponse numéro :',
-       'reponse_statut' => 'Cette réponse est :',
-       'reponse_supprimer' => 'Supprimer cette réponse',
-       'reponse_supprimer_confirmation' => 'Êtes-vous sûr de vouloir supprimer cette réponse ?',
-       'reponses_supprimer' => 'Supprimer toutes les réponses à ce formulaire',
-       'reponses_supprimer_confirmation' => 'Êtes-vous sûr de vouloir supprimer toutes les réponses à ce formulaire ?',
-       'reponse_une' => '1 réponse',
-       'reponses_analyse' => 'Analyse des réponses',
-       'reponses_anonyme' => 'Anonyme',
-       'reponses_auteur' => 'Utilisateur',
-       'reponses_exporter' => 'Exporter les réponses',
-       'reponses_ip' => 'Adresse IP',
-       'reponses_liste' => 'Liste des réponses',
-       'reponses_liste_prop' => 'Réponses en attente de validation',
-       'reponses_liste_publie' => 'Toutes les réponses validées',
-       'reponses_nb' => '@nb@ réponses',
-       'reponses_voir_detail' => 'Voir la réponse',
-       'retour_aucun_traitement' => 'Votre réponse a bien été envoyée, mais aucun traitement n’a été défini pour ce formulaire. Il ne fait donc rien. :)',
-
-       // S
-       'sans_reponses' => 'Sans réponse',
-
-       // T
-       'titre_cadre_raccourcis' => 'Raccourcis',
-       'traitements_actives' => 'Traitements activés',
-       'traitements_aide_memoire' => 'Aide mémoire :',
-       'traitements_avertissement_creation' => 'Les modifications sur les champs du formulaire ont été enregistrées avec succès. Vous pouvez maintenant définir quels traitements seront effectués lors de l’utilisation du formulaire.',
-       'traitements_avertissement_modification' => 'Les modifications sur les champs du formulaire ont été enregistrées avec succès. <strong>Certains traitements doivent peut-être être reconfigurés en conséquence.</strong>',
-       'traitements_champ_aucun' => 'Aucun',
-       'traiter_email_description' => 'Poste le résultat du formulaire par courriel à une liste de destinataires.',
-       'traiter_email_horodatage' => 'Formulaire "@formulaire@" posté le @date@ à @heure@.',
-       'traiter_email_message_erreur' => 'Une erreur est survenue lors de l’envoi du courriel.',
-       'traiter_email_message_ok' => 'Votre message a bien été envoyé par courriel.',
-       'traiter_email_option_activer_accuse_label' => 'Accusé de réception',
-       'traiter_email_option_activer_accuse_label_case' => 'Envoyer aussi un courriel à l’adresse de l’envoyeur avec un message de confirmation.',
-       'traiter_email_option_destinataires_champ_form_explication' => 'Si un de vos champ est une adresse email et que vous souhaitez envoyer le formulaire à cette adresse, sélectionnez le champ.',
-       'traiter_email_option_destinataires_champ_form_label' => 'Destinaire présent dans un des champ des formulaires',
-       'traiter_email_option_destinataires_explication' => 'Choisissez le champ qui correspondra aux destinataires du message.',
-       'traiter_email_option_destinataires_label' => 'Destinataires',
-       'traiter_email_option_destinataires_plus_explication' => 'Une liste d’adresses séparées par des virgules.',
-       'traiter_email_option_destinataires_plus_label' => 'Destinataires supplémentaires',
-       'traiter_email_option_envoyeur_courriel_explication' => 'Choisissez le champ qui contiendra le courriel de l’envoyeur.',
-       'traiter_email_option_envoyeur_courriel_label' => 'Courriel de l’envoyeur',
-       'traiter_email_option_envoyeur_nom_explication' => 'Construisez ce nom à l’aide des @raccourcis@ (cf. l’aide mémoire). Si vous ne mettez rien, ce sera le nom du site.',
-       'traiter_email_option_envoyeur_nom_label' => 'Nom de l’envoyeur',
-       'traiter_email_option_sujet_accuse_label' => 'Sujet de l’accusé de réception',
-       'traiter_email_option_sujet_explication' => 'Construisez le sujet à l’aide des @raccourcis@. Si vous ne mettez rien, le sujet sera construit automatiquement.',
-       'traiter_email_option_sujet_label' => 'Sujet du message',
-       'traiter_email_option_vrai_envoyeur_explication' => 'Certains serveurs SMTP ne permettent pas d’utiliser un courriel arbitraire pour le champ "From". Pour cette raison Formidable insère par défaut le courriel de l’envoyeur dans le champ "Reply-To". Cocher ici pour insèrer le courriel dans le champ "From".',
-       'traiter_email_option_vrai_envoyeur_label' => 'Insérer le courriel de l’envoyeur dans le champ "From"',
-       'traiter_email_page' => '<a href="@url@">Depuis cette page</a>.',
-       'traiter_email_sujet' => '@nom@ vous a écrit.',
-       'traiter_email_sujet_accuse' => 'Merci de votre réponse.',
-       'traiter_email_titre' => 'Envoyer par courriel',
-       'traiter_email_url_enregistrement' => 'Vous pouvez gérer les réponses <a href="@url@">sur cette page</a>.',
-       'traiter_enregistrement_description' => 'Enregistre les résultats du formulaire dans la base de données',
-       'traiter_enregistrement_erreur_base' => 'Une erreur technique est survenue durant l’enregistrement en base de données',
-       'traiter_enregistrement_erreur_deja_repondu' => 'Vous avez déjà répondu à ce formulaire.',
-       'traiter_enregistrement_erreur_edition_reponse_inexistante' => 'La réponse à éditer est introuvable.',
-       'traiter_enregistrement_message_ok' => 'Merci. Vos réponses ont bien été enregistrées',
-       'traiter_enregistrement_option_anonymiser_explication' => 'Rendre les résultats du formulaire anonymes (ne pas garder de traces de l’identifiant des personnes ayant répondu).',
-       'traiter_enregistrement_option_anonymiser_label' => 'Anonymiser le formulaire',
-       'traiter_enregistrement_option_anonymiser_variable_explication' => 'Quelle variable système utiliser pour calculer une valeur unique pour chaque auteur sans pour autant révéler son identité.',
-       'traiter_enregistrement_option_anonymiser_variable_label' => 'Variable à partir de laquelle anonymiser le formulaire',
-       'traiter_enregistrement_option_auteur' => 'Utiliser les auteurs pour les formulaires',
-       'traiter_enregistrement_option_auteur_explication' => 'Attribuer un ou plusieurs auteurs à un formulaire. Si cette option est activée, seuls les auteurs d’un formulaire pourront accéder à leurs données.',
-       'traiter_enregistrement_option_choix_select_label' => 'Choisir une variable parmi celles proposées',
-       'traiter_enregistrement_option_identification_explication' => 'Si les réponses sont modifiables, quel procédé utiliser en priorité pour connaitre la réponse à modifier ?',
-       'traiter_enregistrement_option_identification_label' => 'Identification',
-       'traiter_enregistrement_option_ip_label' => 'Enregistrer les IPs (masqués à intervalle régulière)',
-       'traiter_enregistrement_option_moderation_label' => 'Modération',
-       'traiter_enregistrement_option_modifiable_explication' => 'Les visiteurs pourront-ils modifier leurs réponses après coup ?',
-       'traiter_enregistrement_option_modifiable_label' => 'Réponses modifiables',
-       'traiter_enregistrement_option_multiple_explication' => 'Une même personne peut-elle répondre plusieurs fois au formulaire ?',
-       'traiter_enregistrement_option_multiple_label' => 'Réponses multiples',
-       'traiter_enregistrement_titre' => 'Enregistrer les résultats',
-
-       // V
-       'voir_exporter' => 'Exporter le formulaire',
-       'voir_numero' => 'Formulaire numéro :',
-       'voir_reponses' => 'Voir les réponses',
-       'voir_traitements' => 'Traitements'
-);
-
-?>
diff --git a/www/plugins/formidable_1_0/lang/formidable_it.php b/www/plugins/formidable_1_0/lang/formidable_it.php
deleted file mode 100644 (file)
index 3bda8f1..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-<?php
-// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
-// extrait automatiquement de http://trad.spip.net/tradlang_module/formidable?lang_cible=it
-// ** ne pas modifier le fichier **
-
-if (!defined('_ECRIRE_INC_VERSION')) return;
-
-$GLOBALS[$GLOBALS['idx_lang']] = array(
-
-       // A
-       'analyse_avec_reponse' => 'Risposte non vuote',
-       'analyse_exporter' => 'Esporta l’analisi',
-       'analyse_longueur_moyenne' => 'Lunghezza media in numero di parole',
-       'analyse_sans_reponse' => 'Risposte vuote',
-
-       // B
-       'bouton_formulaires' => 'Moduli',
-
-       // C
-       'champs' => 'Campi',
-
-       // E
-       'echanger_formulaire_forms_importer' => 'Forms & Tables (.xml)',
-       'echanger_formulaire_wcs_importer' => 'W.C.S. (.wcs)',
-       'echanger_formulaire_yaml_importer' => 'Formidable (.yaml)',
-       'editer_apres_choix_formulaire' => 'Il modulo, nuovamente',
-       'editer_apres_choix_redirige' => 'Redirigi verso un nuovo indirizzo',
-       'editer_apres_choix_rien' => 'Assolutamente niente',
-       'editer_apres_choix_valeurs' => 'I valori immessi',
-       'editer_apres_explication' => 'Dopo la validazione, mostra al posto del modulo:',
-       'editer_apres_label' => 'Mostra di seguito',
-       'editer_descriptif' => 'Descrizione',
-       'editer_descriptif_explication' => 'Una spiegazione del modulo destinata allo spazio redazionale.',
-       'editer_identifiant' => 'Identificativo',
-       'editer_identifiant_explication' => 'Fornisci un identificativo testuale unico che ti permetterà di richiamare più facilmente il modulo.',
-       'editer_menu_champs' => 'Configura i campi',
-       'editer_menu_formulaire' => 'Configura il modulo',
-       'editer_menu_traitements' => 'Configura i trattamenti',
-       'editer_message_ok' => 'Messaggio di risposta',
-       'editer_message_ok_explication' => 'Puoi personalizzare il messaggio che sarà mostrato all’utente dopo l’invio di un modulo valido.',
-       'editer_modifier_formulaire' => 'Modifica il modulo',
-       'editer_nouveau' => 'Nuovo modulo',
-       'editer_redirige_url' => 'Indirizzo di redirezione dopo la validazione',
-       'editer_redirige_url_explication' => 'Lascia vuoto se desideri restare sulla stessa pagina',
-       'editer_titre' => 'Titolo',
-       'erreur_autorisation' => 'Non hai i permessi per la modifica dei moduli del sito.',
-       'erreur_base' => 'Un problema tecnico si è verificato rurante il salvataggio.',
-       'erreur_generique' => 'Ci sono degli errori nei campi di seguito, si prega di verificare i dati.',
-       'erreur_identifiant' => 'Questo identificativo è già utilizzato.',
-       'erreur_importer_forms' => 'Errore durante l’importazione del modulo Forms&Tables',
-       'erreur_importer_wcs' => 'Errore durante l’importazione del modulo W.C.S',
-       'erreur_importer_yaml' => 'Errore durante l’importazione del modulo YAML',
-       'erreur_inexistant' => 'Il modulo non esiste.',
-
-       // F
-       'formulaires_aucun' => 'Al momento non è presente alcun modulo.',
-       'formulaires_dupliquer' => 'Duplica il modulo',
-       'formulaires_dupliquer_copie' => '(copia)',
-       'formulaires_introduction' => 'Crea e configura qui i moduli del tuo sito.',
-       'formulaires_nouveau' => 'Crea un nuovo modulo',
-       'formulaires_supprimer' => 'Elimina il modulo',
-       'formulaires_supprimer_confirmation' => 'Attenzione, si sta per eliminare anche tutte le risposte. Sei sicuro di voler eliminare il modulo?',
-       'formulaires_tous' => 'Tutti i moduli',
-
-       // I
-       'identification_par_cookie' => 'Con i cookie',
-       'identification_par_id_auteur' => 'con l’identificativo (id_auteur) dell’utente autentificato',
-       'importer_formulaire' => 'Importa un modulo',
-       'importer_formulaire_fichier_label' => 'File da importare',
-       'importer_formulaire_format_label' => 'Formato del file',
-
-       // M
-       'modele_label_formulaire_formidable' => 'Quale modulo?',
-       'modele_nom_formulaire' => 'un modulo',
-
-       // N
-       'noisette_label_afficher_titre_formulaire' => 'Mostro il titolo del modulo?',
-       'noisette_label_identifiant' => 'Modulo da mostrare:',
-       'noisette_nom_noisette_formulaire' => 'Modulo',
-
-       // R
-       'reponse_intro' => '@auteur@ ha risposto al modulo @formulaire@',
-       'reponse_numero' => 'Risposta numero:',
-       'reponse_statut' => 'Questa risposta è:',
-       'reponse_supprimer' => 'Elimina questa risposta',
-       'reponse_supprimer_confirmation' => 'Sei sicuro di voler eliminare questa risposta?',
-       'reponses_analyse' => 'Analisi delle risposte',
-       'reponses_anonyme' => 'Anonimo',
-       'reponses_auteur' => 'Utente',
-       'reponses_exporter' => 'Esporta le risposte',
-       'reponses_ip' => 'Indirizzo IP',
-       'reponses_liste' => 'Elenco delle risposte',
-       'reponses_liste_prop' => 'Risposte in attesa di validazione',
-       'reponses_liste_publie' => 'Tutte le risposte valide',
-       'reponses_voir_detail' => 'Vedi la risposta',
-       'retour_aucun_traitement' => 'La risposta è stata correttamente inviata. Grazie :)',
-
-       // S
-       'sans_reponses' => 'Senza risposta',
-
-       // T
-       'traitements_aide_memoire' => 'Promemoria:',
-       'traitements_avertissement_creation' => 'Le modifiche ai campi del modulo sono state registrate con successo. Ora puoi definire quali trattamenti saranno effettuati all’atto dell’invio del modulo.',
-       'traitements_avertissement_modification' => 'La modifiche ai campi del modulo sono state registrate con successo. <strong>Alcuni trattamenti devono forse essere riconfigurati di conseguenza.</strong>',
-       'traitements_champ_aucun' => 'Nessuno',
-       'traiter_email_description' => 'Invia il risultato del modulo per posta a un elenco di destinatari.',
-       'traiter_email_horodatage' => 'Modulo "@formulaire@" inviato il @date@ alle @heure@.',
-       'traiter_email_message_erreur' => 'Si è verificato un errore all’atto dell’invio dell’email.',
-       'traiter_email_message_ok' => 'Il tuo messaggio è stato inviato per posta elettronica.',
-       'traiter_email_option_activer_accuse_label' => 'Conferma di ricezione',
-       'traiter_email_option_activer_accuse_label_case' => 'Invia anche una email all’indirizzo del mittente con un messaggio di conferma.',
-       'traiter_email_option_destinataires_explication' => 'Scegli il campo che corrisponde al destinatario del messaggio.',
-       'traiter_email_option_destinataires_label' => 'Destinatari',
-       'traiter_email_option_destinataires_plus_explication' => 'Un elenco di indirizzi separati da virgole.',
-       'traiter_email_option_destinataires_plus_label' => 'Destinatari supplementari',
-       'traiter_email_option_envoyeur_courriel_explication' => 'Scegli il campo che contiene l’indirizzo dell’utente.',
-       'traiter_email_option_envoyeur_courriel_label' => 'Indirizzo del mittente',
-       'traiter_email_option_envoyeur_nom_explication' => 'Costruisci questo nome grazie all’aiuto dei @segnaposto@ (vedi il promemoria). Se non inserisci nulla, verrà inserito il nome del sito.',
-       'traiter_email_option_envoyeur_nom_label' => 'Nome del mittente',
-       'traiter_email_option_sujet_accuse_label' => 'Oggetto della conferma di ricezione',
-       'traiter_email_option_sujet_explication' => 'Costruisci l’oggetto grazie all’aiuto dei @segnaposto@. Se non inserisci nulla, l’oggetto verrà generato automaticamente.',
-       'traiter_email_option_sujet_label' => 'Oggetto del messaggio',
-       'traiter_email_page' => '<a href="@url@">Da questa pagina</a>.',
-       'traiter_email_sujet' => '@nom@ ti ha scritto.',
-       'traiter_email_sujet_accuse' => 'Grazie per aver risposto.',
-       'traiter_email_titre' => 'Invia per posta',
-       'traiter_email_url_enregistrement' => 'Puoi gestire le risposte <a href="@url@">su questa pagina</a>.',
-       'traiter_enregistrement_description' => 'Salva i risultati del modulo nella base dati',
-       'traiter_enregistrement_erreur_base' => 'Si è verificato un errore tecnico durante il salvataggio in database',
-       'traiter_enregistrement_erreur_deja_repondu' => 'Hai già risposto a questo modulo.',
-       'traiter_enregistrement_erreur_edition_reponse_inexistante' => 'La risposta da modificare non esiste.',
-       'traiter_enregistrement_option_anonymiser_explication' => 'Fare i risultati di forma anonima (non conservare traccia di identificazione degli intervistati).', # MODIF
-       'traiter_enregistrement_option_anonymiser_label' => 'Modo anonimo',
-       'traiter_enregistrement_option_anonymiser_variable_explication' => 'Quale variabile di sistema utilizzato per calcolare un singolo valore per ogni autore, senza rivelare la propria identità.',
-       'traiter_enregistrement_option_anonymiser_variable_label' => 'Variabile da cui la forma anonima',
-       'traiter_enregistrement_option_identification_explication' => 'Se le risposte sono modificabili, quale procedura si dovrà utilizzare in priorità per individuare la risposta da modificare?',
-       'traiter_enregistrement_option_identification_label' => 'Identificazione',
-       'traiter_enregistrement_option_moderation_label' => 'Moderazione',
-       'traiter_enregistrement_option_modifiable_explication' => 'Gli utenti possono modificare le loro risposte dopo aver inviato il modulo?',
-       'traiter_enregistrement_option_modifiable_label' => 'Risposte modificabili',
-       'traiter_enregistrement_option_multiple_explication' => 'Un utente può risposndere più al modulo?',
-       'traiter_enregistrement_option_multiple_label' => 'Risposte multiple',
-       'traiter_enregistrement_titre' => 'Registra i risultati',
-
-       // V
-       'voir_exporter' => 'Esporta il modulo',
-       'voir_numero' => 'Modulo numero:',
-       'voir_reponses' => 'Vedi le risposte',
-       'voir_traitements' => 'Trattamenti'
-);
-
-?>
diff --git a/www/plugins/formidable_1_0/lang/formidable_sk.php b/www/plugins/formidable_1_0/lang/formidable_sk.php
deleted file mode 100644 (file)
index 33edb66..0000000
+++ /dev/null
@@ -1,175 +0,0 @@
-<?php
-// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
-// extrait automatiquement de http://trad.spip.net/tradlang_module/formidable?lang_cible=sk
-// ** ne pas modifier le fichier **
-
-if (!defined('_ECRIRE_INC_VERSION')) return;
-
-$GLOBALS[$GLOBALS['idx_lang']] = array(
-
-       // A
-       'analyse_avec_reponse' => 'Neprázdne odpovede',
-       'analyse_exporter' => 'Exportovať analýzu',
-       'analyse_longueur_moyenne' => 'Priemerná dĺžka vyjadrená počtom slov',
-       'analyse_nb_reponses_total' => '@nb@ ľudia odpovedali na tento formulár.',
-       'analyse_sans_reponse' => 'Nevyplnené',
-       'analyse_une_reponse_total' => 'Na tento formulár odpovedal jeden človek.',
-       'analyse_zero_reponse_total' => 'Na tento formulár neodpovedal žiaden človek.',
-       'aucun_traitement' => 'Žiadne spracovanie',
-
-       // B
-       'bouton_formulaires' => 'Formuláre',
-
-       // C
-       'cfg_analyse_classe_explication' => 'Môžete zadať triedy CSS, ktoré budú pridané 
-               na každý graf ako <code>sivý,</code> <code>modrý,</code>
-               <code>oranžový,</code> <code>zelený</code> alebo akýkoľvek iný stĺpec!',
-       'cfg_analyse_classe_label' => 'Trieda CSS stĺpca dokončenia úkonu',
-       'cfg_titre_page_configurer_formidable' => 'Nastaviť Formidable',
-       'cfg_titre_parametrages_analyse' => 'Nastavenia analýzy odpovedí',
-       'champs' => 'Pol’a',
-
-       // E
-       'echanger_formulaire_forms_importer' => 'formuláre Forms & Tables (.xml)',
-       'echanger_formulaire_wcs_importer' => 'W.C.S. (.wcs)',
-       'echanger_formulaire_yaml_importer' => 'Formidable (.yaml)',
-       'editer_apres_choix_formulaire' => 'Formulár, znova',
-       'editer_apres_choix_redirige' => 'Presmerovať na novú adresu',
-       'editer_apres_choix_rien' => 'Vôbec nič',
-       'editer_apres_choix_stats' => 'Štatistiky odpovedí',
-       'editer_apres_choix_valeurs' => 'Zadané hodnoty',
-       'editer_apres_explication' => 'Po potvrdení namiesto formulára zobraziť:',
-       'editer_apres_label' => 'Zobraziť potom',
-       'editer_descriptif' => 'Opis',
-       'editer_descriptif_explication' => 'Vysvetlivka formulára pre súkromnú zónu.',
-       'editer_identifiant' => 'Identifikátor',
-       'editer_identifiant_explication' => 'Zadajte jedinečný textový identifikátor, ktorý vám umožní rýchlo vyvolať formulár.',
-       'editer_menu_auteurs' => 'Nastaviť autorov',
-       'editer_menu_champs' => 'Nastaviť polia',
-       'editer_menu_formulaire' => 'Nastaviť formulár',
-       'editer_menu_traitements' => 'Nastaviť funkcie',
-       'editer_message_ok' => 'Správa spätnej väzby',
-       'editer_message_ok_explication' => 'Môžete upraviť správu, ktorá sa používateľovi zobrazí po odoslaní platného formulára.',
-       'editer_modifier_formulaire' => 'Upraviť formulár',
-       'editer_nouveau' => 'Nový formulár',
-       'editer_redirige_url' => 'Adresa presmerovania po potvrdení',
-       'editer_redirige_url_explication' => 'Nevypĺňajte, ak chcete zostať na rovnakej stránke',
-       'editer_titre' => 'Názov',
-       'erreur_autorisation' => 'Na úpravu formulárov na tejto stránke nemáte dostatočné práva.',
-       'erreur_base' => 'Počas ukladania sa vyskytla technická chyba.',
-       'erreur_generique' => 'V týchto poliach sú chyby, prosím, skontrolujte ich pred odoslaním.',
-       'erreur_identifiant' => 'Tento identifikátor sa už používa.',
-       'erreur_importer_forms' => 'Chyba počas nahrávania formulára Forms&Tables',
-       'erreur_importer_wcs' => 'Chyba počas nahrávania formulára W.C.S',
-       'erreur_importer_yaml' => 'Chyba počas nahrávania súboru YAML',
-       'erreur_inexistant' => 'Formulár neexistuje.',
-
-       // F
-       'formulaire_anonyme_explication' => 'Tento formulár je anonymný, tzn., že záznamy o identite používateľov sa neukladajú.',
-       'formulaires_aucun' => 'Momentálne tu nie je žiaden formulár.',
-       'formulaires_dupliquer' => 'Skopírovať formulár',
-       'formulaires_dupliquer_copie' => '(kópia)',
-       'formulaires_introduction' => 'Tu vytvoríte a nastavíte formuláre pre svoju stránku.',
-       'formulaires_nouveau' => 'Vytvoriť nový formulár',
-       'formulaires_supprimer' => 'Odstrániť formulár',
-       'formulaires_supprimer_confirmation' => 'Pozor, takto vymažete všetky výsledky. Určite chcete odstrániť tento formulár?',
-       'formulaires_tous' => 'Všetky formuláre',
-
-       // I
-       'identification_par_cookie' => 'Podľa cookie',
-       'identification_par_id_auteur' => 'Podľa identifikátora (id_auteur) prihláseného človeka',
-       'importer_formulaire' => 'Nahrať formulár',
-       'importer_formulaire_fichier_label' => 'Súbor, ktorý sa má nahrať',
-       'importer_formulaire_format_label' => 'Formát súboru',
-
-       // M
-       'modele_label_formulaire_formidable' => 'Aký formulár?',
-       'modele_nom_formulaire' => 'jeden formulár',
-
-       // N
-       'noisette_label_afficher_titre_formulaire' => 'Zobraziť nadpis formulára?',
-       'noisette_label_identifiant' => 'Formulár, ktorý sa má zobraziť:',
-       'noisette_nom_noisette_formulaire' => 'Formulár',
-
-       // R
-       'reponse_aucune' => 'Žiadna odpoveď',
-       'reponse_intro' => '@auteur@ vyplnil(a) formulár @formulaire@',
-       'reponse_numero' => 'Odpoveď číslo:',
-       'reponse_statut' => 'Táto odpoveď je:',
-       'reponse_supprimer' => 'Odstrániť túto odpoveď',
-       'reponse_supprimer_confirmation' => 'Určite chcete vymazať túto odpoveď?',
-       'reponse_une' => '1 odpoveď',
-       'reponses_analyse' => 'Analýza odpovedí',
-       'reponses_anonyme' => 'Anonym',
-       'reponses_auteur' => 'Používateľ',
-       'reponses_exporter' => 'Exportovať odpovede',
-       'reponses_ip' => 'IP adresa',
-       'reponses_liste' => 'Zoznam odpovedí',
-       'reponses_liste_prop' => 'Odpovede čakajúce na potvrdenie',
-       'reponses_liste_publie' => 'Všetky platné odpovede',
-       'reponses_nb' => '@nb@ odpovedí',
-       'reponses_voir_detail' => 'Zobraziť odpoveď',
-       'retour_aucun_traitement' => 'Vaša odpoveď bola odoslaná, ale k tomuto formuláru nebola definovaná žiadna funkcia. Nič neurobí. :-)',
-
-       // S
-       'sans_reponses' => 'Neriešiteľný',
-
-       // T
-       'titre_cadre_raccourcis' => 'Skratky',
-       'traitements_actives' => 'Aktívne spracovanie',
-       'traitements_aide_memoire' => 'Pomocná pamäť:',
-       'traitements_avertissement_creation' => 'Zmeny polí formulára boli úspešne uložené. Teraz môžete určiť, aké funkcie sa použijú pri spracúvaní formulára.',
-       'traitements_avertissement_modification' => 'Zmeny v poliach formulára boli úspešne uložené. <strong>Niektoré funkcie možno budú musieť byť kvôli ním prestavené.</strong>',
-       'traitements_champ_aucun' => 'Žiadne',
-       'traiter_email_description' => 'Výstup z formulára odošle na e-mailové adresy príjemcov.',
-       'traiter_email_horodatage' => 'Formulár "@formulaire@" odoslaný @date@ o @heure@.',
-       'traiter_email_message_erreur' => 'Pri odosielaní e-mailu sa vyskytla chyba.',
-       'traiter_email_message_ok' => 'Vaša správa bola odoslaná.',
-       'traiter_email_option_activer_accuse_label' => 'Potvrdenie o prijatí správy',
-       'traiter_email_option_activer_accuse_label_case' => 'Poslať e-mail aj na adresu odosielateľa so žiadosťou o potvrdenie.',
-       'traiter_email_option_destinataires_explication' => 'Vyberte si pole, v ktorom budú príjemcovia správy.',
-       'traiter_email_option_destinataires_label' => 'Príjemcovia',
-       'traiter_email_option_destinataires_plus_explication' => 'Zoznam adries oddelený čiarkami.',
-       'traiter_email_option_destinataires_plus_label' => 'Ďalší príjemcovia',
-       'traiter_email_option_envoyeur_courriel_explication' => 'Vyberte si pole, ktoré bude obsahovať e-mailovú adresu odosielateľa.',
-       'traiter_email_option_envoyeur_courriel_label' => 'E-mail odosielateľa',
-       'traiter_email_option_envoyeur_nom_explication' => 'Vytvorte názov pomocou @raccourcis@ (prečítajte si pomocníka). Ak neurobíte nič, bude tým názvom názov stránky.',
-       'traiter_email_option_envoyeur_nom_label' => 'Meno odosielateľa',
-       'traiter_email_option_sujet_accuse_label' => 'Predmet potvrdenia o prijatí',
-       'traiter_email_option_sujet_explication' => 'Vytvorte predmet pomocou @raccourcis@. Ak neurobíte nič, predmet bude vytvorený automaticky.',
-       'traiter_email_option_sujet_label' => 'Predmet správy',
-       'traiter_email_option_vrai_envoyeur_explication' => 'Niektoré servery SMTP neumožňujú používať ľubovoľný e-mail pre pole "From" (Od koho). Z tohto dôvodu Formidable podľa predvolených nastavení vkladá e-mail odosielateľa do poľa "Reply-To". Ak chcete, aby bol vložený do poľa "From", zaškrtnite túto možnosť tu.',
-       'traiter_email_option_vrai_envoyeur_label' => 'Vložiť e-mail odosielateľa do poľa "From" (= "Od koho")',
-       'traiter_email_page' => '<a href="@url@">Z tejto stránky.</a>',
-       'traiter_email_sujet' => '@nom@ vám napísal(a).',
-       'traiter_email_sujet_accuse' => 'Ďakujeme vám za odpoveď.',
-       'traiter_email_titre' => 'Poslať e-mailom',
-       'traiter_email_url_enregistrement' => 'Riadiť odpovede môžete <a href="@url@">na tejto stránke.</a>',
-       'traiter_enregistrement_description' => 'Uloží výsledky z formulára do databázy',
-       'traiter_enregistrement_erreur_base' => 'Počas ukladania do databázy sa vyskytla technická chyba',
-       'traiter_enregistrement_erreur_deja_repondu' => 'Tento formulár ste už vyplnili.',
-       'traiter_enregistrement_erreur_edition_reponse_inexistante' => 'Odpoveď, ktorú chcete upraviť, sa nedá nájsť.',
-       'traiter_enregistrement_option_anonymiser_explication' => 'Vypísať výsledky anonymného formulára(nenechávať si záznamy identifikujúce respondentov).',
-       'traiter_enregistrement_option_anonymiser_label' => 'Anonymizované podobe',
-       'traiter_enregistrement_option_anonymiser_variable_explication' => 'Čo systémová premenná slúži na výpočet jednej hodnoty pre každého autora, bez toho, aby odhalil svoju identitu.',
-       'traiter_enregistrement_option_anonymiser_variable_label' => 'Premenná, z ktorých anonymizujú formulár',
-       'traiter_enregistrement_option_auteur' => 'Použiť mená autorov vo formulároch',
-       'traiter_enregistrement_option_auteur_explication' => 'K formuláru priradiť jedného autora alebo viacerých. Ak aktivujete túto možnosť, k údajom formulára budú mať prístup len autori formulára.',
-       'traiter_enregistrement_option_choix_select_label' => 'Vyberte premennú, ktorá z dostupnej',
-       'traiter_enregistrement_option_identification_explication' => 'Ak sa odpovede dajú upraviť, aký spôsob sa použije ako prvý, aby sa zistilo, či sa odpoveď menila?',
-       'traiter_enregistrement_option_identification_label' => 'Identifikácia',
-       'traiter_enregistrement_option_moderation_label' => 'Kontrola',
-       'traiter_enregistrement_option_modifiable_explication' => 'Môžu návštevníci potom upraviť svoje odpovede?',
-       'traiter_enregistrement_option_modifiable_label' => 'Odpovede, ktoré sa dajú upraviť',
-       'traiter_enregistrement_option_multiple_explication' => 'Môže ten istý človek odpovedať na formulár viackrát?',
-       'traiter_enregistrement_option_multiple_label' => 'Duplicitné odpovede',
-       'traiter_enregistrement_titre' => 'Uložiť výsledky',
-
-       // V
-       'voir_exporter' => 'Exportovať formulár',
-       'voir_numero' => 'Formulár číslo:',
-       'voir_reponses' => 'Zobraziť odpovede',
-       'voir_traitements' => 'Funkcie'
-);
-
-?>
diff --git a/www/plugins/formidable_1_0/lang/formulaire_fr.php b/www/plugins/formidable_1_0/lang/formulaire_fr.php
deleted file mode 100644 (file)
index f6663cd..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
-// Fichier source, a modifier dans svn://zone.spip.org/spip-zone/_plugins_/formidable/trunk/lang/
-if (!defined('_ECRIRE_INC_VERSION')) return;
-
-$GLOBALS[$GLOBALS['idx_lang']] = array(
-       // I
-       'icone_creer_formulaire' => 'Créer un nouveau formulaire',
-
-       // M
-       'modifier_formulaire' => 'Modifier ce formulaire',
-
-       // T
-       'titre_formulaires' => 'Formulaires',
-       'titre_logo_formulaire' => 'Logo de ce formulaire',
-       'titre_formulaire' => 'Formulaire',
-
-);
diff --git a/www/plugins/formidable_1_0/lang/formulaires_reponse_fr.php b/www/plugins/formidable_1_0/lang/formulaires_reponse_fr.php
deleted file mode 100644 (file)
index 108f4e2..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
-// Fichier source, a modifier dans svn://zone.spip.org/spip-zone/_plugins_/formidable/trunk/lang/
-if (!defined('_ECRIRE_INC_VERSION')) return;
-
-$GLOBALS[$GLOBALS['idx_lang']] = array(
-       // I
-       'icone_creer_formulaire' => 'Créer une nouvelle réponse de formulaire',
-
-       // M
-       'modifier_formulaire' => 'Modifier cette réponse de formulaire',
-
-       'changer_statut' => 'Cette réponse de formulaire est :',
-
-       // F
-       'formulaires_reponse_numero' => 'Réponse de formulaire n°@nb@',
-
-       // R
-       'reponses_donnees' => 'Réponses données :',
-
-       // T
-       'titre_formulaires_reponses' => 'Réponses de formulaire',
-       'titre_logo_formulaires_reponse' => 'Logo de cette réponse de formulaire',
-       'titre_formulaires_reponse' => 'Réponse de formulaire',
-
-
-);
diff --git a/www/plugins/formidable_1_0/lang/paquet-formidable.xml b/www/plugins/formidable_1_0/lang/paquet-formidable.xml
deleted file mode 100644 (file)
index d368f2e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<traduction module="paquet-formidable" gestionnaire="salvatore" url="http://trad.spip.net" source="svn://zone.spip.org/spip-zone/_plugins_/formidable/trunk/lang/" reference="fr">
-       <langue code="fr" url="http://trad.spip.net/tradlang_module/paquet-formidable?lang_cible=fr" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
-       </langue>
-</traduction>
diff --git a/www/plugins/formidable_1_0/lang/paquet-formidable_fr.php b/www/plugins/formidable_1_0/lang/paquet-formidable_fr.php
deleted file mode 100644 (file)
index 3647950..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
-// Fichier source, a modifier dans svn://zone.spip.org/spip-zone/_plugins_/formidable/trunk/lang/
-if (!defined('_ECRIRE_INC_VERSION')) return;
-
-$GLOBALS[$GLOBALS['idx_lang']] = array(
-
-       // F
-       'formidable_description' => 'Création de formulaires avec une interface graphique et configuration des traitements associés (envoyer par courriel, enregistrer les réponses, etc).',
-       'formidable_slogan' => 'Générateur de formulaires'
-);
-
-?>
diff --git a/www/plugins/formidable_1_0/modeles/formulaire_aide_memoire.html b/www/plugins/formidable_1_0/modeles/formulaire_aide_memoire.html
deleted file mode 100644 (file)
index c1747f7..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-<BOUCLE_formulaire(FORMULAIRES){id_formulaire}>
-       <strong><:formidable:traitements_aide_memoire:></strong>
-       <dl>
-               <dt>@nom_site_spip@</dt>
-               <dd><:info_nom_site:></dd>
-       </dl>
-       
-       <BOUCLE_champs(POUR){tableau #SAISIES*|unserialize|saisies_lister_par_nom{0}}>
-       [(#SET{label, [(#VALEUR|table_valeur{options}|table_valeur{label})]})]
-       [(#SET{label_case, [(#VALEUR|table_valeur{options}|table_valeur{label_case})]})]
-       
-       <dl>
-               <dt>@#CLE@</dt>
-               [<dd>(#GET{label}|sinon{#GET{label_case}})</dd>]
-       </dl>
-       </BOUCLE_champs>
-</BOUCLE_formulaire>
diff --git a/www/plugins/formidable_1_0/modeles/formulaire_analyse.html b/www/plugins/formidable_1_0/modeles/formulaire_analyse.html
deleted file mode 100644 (file)
index 95c9390..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-<BOUCLE_formulaire(FORMULAIRES){id_formulaire}>
-#SET{exclure_champs,#TRAITEMENTS|unserialize|table_valeur{enregistrement}|table_valeur{analyse_exclure_champs}|explode{|}}
-<div class='formidable_analyse'>
-[(#REM) On fait un tableau qui contient toutes les réponses, classées par champ, sauf pour les champs qui sont à ne pas prendre en compte ]
-#SET{valeurs,#ARRAY}
-#SET{reponses_total,0}
-<BOUCLE_reponses(FORMULAIRES_REPONSES){id_formulaire}>
-<BOUCLE_champs(FORMULAIRES_REPONSES_CHAMPS){id_formulaires_reponse}{nom ?= #ENV{nom}}{!nom IN #GET{exclure_champs}}>
-#SET_MERGE{liste_valeurs, #GET{valeurs}|table_valeur{#NOM}|sinon{#ARRAY}, #ARRAY{0,#VALEUR|tenter_unserialize}}
-#SET_MERGE{valeurs, #ARRAY{#NOM,#GET{liste_valeurs}}}
-</BOUCLE_champs>
-</BOUCLE_reponses>
-#SET{reponses_total,#TOTAL_BOUCLE}
-<strong class='nombre_reponse'>
-       [(#TOTAL_BOUCLE|singulier_ou_pluriel{formidable:reponse_une,formidable:reponses_nb})]
-</strong>
-</B_reponses>
-       <strong class='nombre_reponse'><:formidable:reponse_aucune:></strong>
-<//B_reponses>
-
-<BOUCLE_saisies(POUR){tableau #SAISIES|unserialize|saisies_lister_par_nom}>
-[(#VAL{saisie}|array_key_exists{#VALEUR}|oui)
-  [(#CLE|=={#ENV{nom,#CLE}}|oui)
-       [(#CLE|in_array{#GET{exclure_champs}}|non)
-        [(#VALEUR|formidable_analyser_saisie{#GET{valeurs}, #GET{reponses_total}})]
-    ]
-  ]
-]
-</BOUCLE_saisies>
-
-</div><!-- formidable_analyse -->
-<script type='text/javascript'>
-(function($){
-$(document).ready(function(){
-       /* Récupérer tous les tableaux d'analyse non décorés */
-       $('.formidable_analyse table:not(.stat_done)').each(function() {
-               $(this).addClass('stat_done');
-               /* Le tableau contient le nombre total d'élément. On parcours chaque valeur */
-               $nbtotal = $(this).data('nombre');
-               $(this).find('td.stat').each(function(){
-                       $val = $(this).html();
-                       /* Certaines valeurs sont a ignorer (les moyennes) */
-                       $ignore = $(this).is('.ignore');
-                       if (!$ignore) {
-                               /* Calcul du pourcentage */
-                               $taux = Math.round($val/$nbtotal*100);
-                               /* On affiche le nombre de réponses */
-                               $reponses = $(this).attr('title');
-                               if (!parseInt($val) || ($reponses === undefined)) {
-                                       $reponses = '';
-                               } else {
-                                       $reponses = "<small> - " + $reponses + "</small>";
-                               }
-                               $text = "\
-                               <div class='[(#CONFIG{formidable/analyse/classe}) ]progress-bar'>\
-                                       <span></span><strong>" + $taux + "%" + $reponses + "</strong>\
-                               </div>";
-                               $(this).html($text).find('span').width($taux + '%');
-                       }
-               });
-       });
-});
-})(jQuery);
-</script>
-<style type='text/css'>
-<INCLURE{fond=css/formidable_analyse.css} />
-</style>
-</BOUCLE_formulaire>
\ No newline at end of file
diff --git a/www/plugins/formidable_1_0/modeles/formulaire_formidable.yaml b/www/plugins/formidable_1_0/modeles/formulaire_formidable.yaml
deleted file mode 100644 (file)
index 79dc4e9..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-nom: '<:formidable:modele_nom_formulaire:>'
-logo: 'images/formulaire-24.png'
-icone_barre: 'formulaire.png'
-parametres:
-  -
-    saisie: 'hidden'
-    options:
-      nom: 'modele'
-      defaut: 'formulaire'
-  -
-    saisie: 'hidden'
-    options:
-      nom: 'variante'
-      defaut: 'formidable'
-  -
-    saisie: 'formulaire_formidable'
-    options:
-      nom: 'id'
-      label: '<:formidable:modele_label_formulaire_formidable:>'
-      cacher_option_intro: 'oui'
\ No newline at end of file
diff --git a/www/plugins/formidable_1_0/modeles/formulaires_reponse.html b/www/plugins/formidable_1_0/modeles/formulaires_reponse.html
deleted file mode 100644 (file)
index 02d78a0..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<BOUCLE_reponse(FORMULAIRES_REPONSES){tout}{id_formulaires_reponse}>
-
-#SET{valeurs,#ARRAY}
-<BOUCLE_champs(FORMULAIRES_REPONSES_CHAMPS){id_formulaires_reponse}>
-#SET_MERGE{valeurs,#ARRAY{#NOM,#VALEUR|tenter_unserialize}}
-</BOUCLE_champs>
-
-<BOUCLE_formulaire(FORMULAIRES){id_formulaire}>
-#VOIR_SAISIES{(#SAISIES|unserialize), #GET{valeurs}}
-</BOUCLE_formulaire>
-
-</BOUCLE_reponse>
diff --git a/www/plugins/formidable_1_0/noisettes/formulaire_formidable.html b/www/plugins/formidable_1_0/noisettes/formulaire_formidable.html
deleted file mode 100644 (file)
index 95f7a4c..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-<BOUCLE_formulaire(FORMULAIRES){identifiant}{0,1}>[(#ENV{afficher_titre_formulaire}|oui)[<h2 class="h2">(#TITRE|typo)</h2>]]</BOUCLE_formulaire>\r
-<div class="ajax">#FORMULAIRE_FORMIDABLE{#ENV{identifiant}}</div>
\ No newline at end of file
diff --git a/www/plugins/formidable_1_0/noisettes/formulaire_formidable.yaml b/www/plugins/formidable_1_0/noisettes/formulaire_formidable.yaml
deleted file mode 100644 (file)
index dd6679c..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-nom: '<:formidable:noisette_nom_noisette_formulaire:>'\r
-icon: 'images/formulaire-24.png'\r
-parametres:\r
-  -\r
-    saisie: 'formulaire_formidable'\r
-    options:\r
-      nom: 'identifiant'\r
-      label: '<:formidable:noisette_label_identifiant:>'\r
-      cacher_option_intro: 'oui'\r
-  -\r
-    saisie: 'oui_non'\r
-    options:\r
-      nom: 'afficher_titre_formulaire'\r
-      label: '<:formidable:noisette_label_afficher_titre_formulaire:>'\r
-      defaut: ''
\ No newline at end of file
diff --git a/www/plugins/formidable_1_0/notifications/formulaire_accuse.html b/www/plugins/formidable_1_0/notifications/formulaire_accuse.html
deleted file mode 100644 (file)
index 559a130..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-
-[(#ENV*{message_retour}|propre)]
-
-#VOIR_SAISIES{#ENV*{saisies}, #ENV*{valeurs}}
-
----
-<p><:envoi_via_le_site:> <a href="#URL_SITE_SPIP">#NOM_SITE_SPIP</a></p>
diff --git a/www/plugins/formidable_1_0/notifications/formulaire_email.html b/www/plugins/formidable_1_0/notifications/formulaire_email.html
deleted file mode 100644 (file)
index 9f3b5e9..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-
-<p>
-       #SET{date, #VAL{d/m/Y}|date}
-       #SET{heure, #VAL{H:i:s}|date}
-       <:formidable:traiter_email_horodatage{formulaire=#ENV*{titre}, date=#GET{date}, heure=#GET{heure}}:>
-       <br/>
-       #SET{url, #SELF{&,true}|url_absolue}
-       <:formidable:traiter_email_page{url=#GET{url}}:>
-</p>
-
-#VOIR_SAISIES{#ENV*{saisies}, #ENV*{valeurs}}
-
----
-<p><:envoi_via_le_site:> <a href="#URL_SITE_SPIP">#NOM_SITE_SPIP</a></p>
-[(#ENV*{traitements}|table_valeur{enregistrement}|oui)
-#SET{url, #URL_ECRIRE{formulaires_reponses}|parametre_url{id_formulaire, #ENV{id_formulaire}}|url_absolue}
-<p><:formidable:traiter_email_url_enregistrement{url=#GET{url}}:></p>
-]
diff --git a/www/plugins/formidable_1_0/paquet.xml b/www/plugins/formidable_1_0/paquet.xml
deleted file mode 100644 (file)
index 5fbe62c..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<paquet
-       prefix="formidable"
-       categorie="communication"
-       version="1.9.1"
-       etat="stable"
-       compatibilite="[3.0.0;3.0.*]"
-       logo="images/formidable-64.png"
-       schema="0.5.5"
-       documentation="http://contrib.spip.net/Formidable-le-generateur-de-formulaires"
->
-
-       <nom>Formidable</nom>
-       <!-- Générateur de formulaires -->
-
-       <auteur>RastaPopoulos</auteur>
-       <auteur lien="http://www.ldd.fr">Les Développements Durables</auteur>
-
-       <licence lien="http://www.gnu.org/licenses/gpl-3.0.html">GPL 3</licence>
-
-       <pipeline nom="autoriser" inclure="formidable_autorisations.php" />
-       <pipeline nom="declarer_tables_objets_sql" inclure="base/formidable_tables.php" />
-       <pipeline nom="declarer_tables_principales" inclure="base/formidable_tables.php" />
-       <pipeline nom="declarer_tables_auxiliaires" inclure="base/formidable_tables.php" />
-       <pipeline nom="declarer_tables_interfaces" inclure="base/formidable_tables.php" />
-
-       <pipeline nom="optimiser_base_disparus" inclure="formidable_pipelines.php" />
-
-       <necessite nom="spip_bonux" compatibilite="[1.9.3;[" />
-       <necessite nom="saisies" compatibilite="[1.34.2;[" />
-       <necessite nom="verifier" compatibilite="[0.1;[" />
-       <necessite nom="yaml" compatibilite="[1.1;[" />
-       <necessite nom="facteur" compatibilite="[3.0.3;[" />
-
-       <menu nom="formulaires" titre="formidable:bouton_formulaires" parent="menu_edition" icone="images/formulaire-16.png" />
-</paquet>
\ No newline at end of file
diff --git a/www/plugins/formidable_1_0/prive/objets/contenu/formulaire.html b/www/plugins/formidable_1_0/prive/objets/contenu/formulaire.html
deleted file mode 100644 (file)
index e22434c..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<BOUCLE_formulaire(FORMULAIRES){id_formulaire}>
-<div class="champ contenu_descriptif[ (#DESCRIPTIF*|strlen|?{'',vide})]">
-       <div class='label'><:info_descriptif:></div>
-       <div dir='#LANG_DIR' class='#EDIT{descriptif} descriptif'>[(#DESCRIPTIF|image_reduire{500,0})]</div>
-</div>
-</BOUCLE_formulaire>
diff --git a/www/plugins/formidable_1_0/prive/objets/contenu/formulaires_reponse.html b/www/plugins/formidable_1_0/prive/objets/contenu/formulaires_reponse.html
deleted file mode 100644 (file)
index 30bccf4..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<BOUCLE_formulaires_reponse(FORMULAIRES_REPONSES){tout}{id_formulaires_reponse}>
-<div class="champ contenu_auteur[ (#ID_AUTEUR*|strlen|?{'',vide})]">
-       <div class='label'><:auteur:></div>
-       <div dir='#LANG_DIR'>
-               [(#ID_AUTEUR|>{0}|oui)
-                       <a href="[(#INFO_URL{auteur,#ID_AUTEUR})]">[(#INFO_TITRE{auteur,#ID_AUTEUR})]</a>
-               ]
-               [(#ID_AUTEUR|>{0}|non)
-                       <:formidable:reponses_anonyme:>
-               ]
-       </div>
-</div>
-<div class="champ contenu_formulaire[ (#ID_FORMULAIRE*|strlen|?{'',vide})]">
-       <div class='label'><:formulaire:titre_formulaire:></div>
-       <div dir='#LANG_DIR'>
-               <a href="[(#URL_ECRIRE{formulaire,id_formulaire=#ID_FORMULAIRE})]">
-                       [(#INFO_TITRE{formulaire,#ID_FORMULAIRE})]
-               </a>
-       </div>
-</div>
-<div class="champ contenu_date[ (#DATE*|strlen|?{'',vide})]">
-       <div class='label'><:date:></div>
-       <div dir='#LANG_DIR'>
-               [(#DATE|affdate_jourcourt|concat{#DATE|affdate{", H:i"}})]
-       </div>
-</div>
-</BOUCLE_formulaires_reponse>
diff --git a/www/plugins/formidable_1_0/prive/objets/infos/formulaire.html b/www/plugins/formidable_1_0/prive/objets/infos/formulaire.html
deleted file mode 100644 (file)
index 59afec0..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<BOUCLE_formulaire(FORMULAIRES){id_formulaire=#ENV{id}}{statut?}>
-<div class='infos'>
-<div class='numero'><:formidable:voir_numero:><p>#ID_FORMULAIRE</p></div>
-
-</div>
-</BOUCLE_formulaire>
\ No newline at end of file
diff --git a/www/plugins/formidable_1_0/prive/objets/infos/formulaires_reponse.html b/www/plugins/formidable_1_0/prive/objets/infos/formulaires_reponse.html
deleted file mode 100644 (file)
index 0490842..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<BOUCLE_formulaires_reponse(FORMULAIRES_REPONSES){id_formulaires_reponse=#ENV{id}}{statut?}>
-<div class='infos'>
-<div class='numero'><:formidable:reponse_numero:><p>#ID_FORMULAIRES_REPONSE</p></div>
-
-[(#FORMULAIRE_INSTITUER_OBJET{formulaires_reponses,#ID_FORMULAIRES_REPONSE})]
-
-</div>
-</BOUCLE_formulaires_reponse>
\ No newline at end of file
diff --git a/www/plugins/formidable_1_0/prive/objets/liste/formulaires.html b/www/plugins/formidable_1_0/prive/objets/liste/formulaires.html
deleted file mode 100644 (file)
index f2a8098..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-[(#SET{defaut_tri,#ARRAY{
-       date,-1,
-       titre,1,
-       id_formulaire,1
-}})
-]<B_formulaires>
-#ANCRE_PAGINATION
-<div class="liste-objets formulaires">
-<table class="spip liste">
-[<caption><strong class="caption">(#ENV*{titre})</strong></caption>]
-       <thead>
-               <tr class="first_row">
-                       <th class="id_formulaire id" scope='col'>[(#TRI{id_formulaire,<span>#</span>,ajax})]</th>
-                       <th class="titre" scope='col'>[(#TRI{titre,<:formidable:editer_titre:>,ajax})]</th>
-                       <th class="identifiant" scope='col'>[(#TRI{identifiant,<:formidable:editer_identifiant:>,ajax})]</th>
-                       <th class="action" scope='col'></th>
-               </tr>
-       </thead>
-       <tbody>
-       <BOUCLE_formulaires(FORMULAIRES){statut?}{tri #ENV{order,titre},#GET{defaut_tri}}{pagination #ENV{nb,10}}>
-               <tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})][ (#EXPOSE|unique)]">
-                       <td class="id_formulaire"><:info_numero_abbreviation:>#ID_FORMULAIRE</td>
-                       <td class="titre"><a href="[(#ID_FORMULAIRE|generer_url_entite{formulaire})]">#TITRE</a></td>
-                       <td class="identifiant">#IDENTIFIANT</td>
-                       <td class="action">
-                               [(#AUTORISER{editer, formulaire}|oui)
-                                       [(#BOUTON_ACTION{[(#CHEMIN_IMAGE{formulaire-dupliquer-24.png}
-                                               |balise_img{<:formidable:formulaires_dupliquer:>})],
-                                               #URL_ACTION_AUTEUR{dupliquer_formulaire, #ID_FORMULAIRE},link})]
-                               ]
-                               [(#AUTORISER{editer, formulaire, #ID_FORMULAIRE}|oui)
-                                       [(#BOUTON_ACTION{[(#CHEMIN_IMAGE{formulaire-supprimer-24.png}
-                                               |balise_img{<:formidable:formulaires_supprimer:>})],
-                                               #URL_ACTION_AUTEUR{supprimer_formulaire, #ID_FORMULAIRE},link,<:formidable:formulaires_supprimer_confirmation:>})]
-                               ]
-                       </td>
-               </tr>
-       </BOUCLE_formulaires>
-       </tbody>
-</table>
-[<p class="pagination">(#PAGINATION{prive})</p>]
-</div>
-</B_formulaires>[
-<div class="liste-objets formulaires"><strong class="caption">(#ENV*{sinon,<:formidable:formulaires_aucun:>})</strong></div>
-]<//B_formulaires>
diff --git a/www/plugins/formidable_1_0/prive/objets/liste/formulaires_reponses.html b/www/plugins/formidable_1_0/prive/objets/liste/formulaires_reponses.html
deleted file mode 100644 (file)
index 9d310c0..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-[(#SET{defaut_tri,#ARRAY{
-       date,-1,
-       titre,1,
-       id_formulaires_reponse,1
-}})
-]<B_reponses>
-[(#BOITE_OUVRIR{'','simple'})]
-#ANCRE_PAGINATION
-<div class="liste-objets formulaires_reponses">
-<table class="liste spip">
-[<caption><strong class="caption">(#ENV*{titre})</strong></caption>]
-       <thead>
-               <tr class="first_row">
-                       <th class="statut" scope='col'>[(#TRI{statut,<span>#</span>,ajax})]</th>
-                       <th class="date" scope='col'>[(#TRI{date,<:date:>,ajax})]</th>
-                       <th class="auteur" scope='col'>[(#TRI{id_auteur,<:formidable:reponses_auteur:>,ajax})]</th>
-                       <th class="ip" scope='col'>[(#TRI{ip,<:formidable:reponses_ip:>,ajax})]</th>
-                       <th class="action" scope='col'></th>
-               </tr>
-       </thead>
-       <tbody>
-       <BOUCLE_reponses(FORMULAIRES_REPONSES){id_formulaire}{id_auteur?}{statut?}{tri #ENV{order,date},#GET{defaut_tri}}{pagination #ENV{nb,10}}>
-               <tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]">
-                       <td class="statut">[(#ID_FORMULAIRES_REPONSE|puce_changement_statut{#STATUT, #ID_FORMULAIRE, formulaires_reponse})]</td>
-                       <td class="date">[(#DATE|affdate_jourcourt|concat{#DATE|affdate{", H:i"}})]</td>
-                       <td class="auteur">
-                               <BOUCLE_auteur(AUTEURS){id_auteur}{tout}>
-                               <a href="[(#ID_AUTEUR|generer_url_entite{auteur})]">#NOM</a>
-                               </BOUCLE_auteur>
-                               <:formidable:reponses_anonyme:>
-                               <//B_auteur>
-                       </td>
-                       <td class="ip">#IP</td>
-                       <td class="action">
-                               <a href="[(#URL_ECRIRE{formulaires_reponse}|parametre_url{id_formulaires_reponse,#ID_FORMULAIRES_REPONSE})]" title="<:formidable:reponses_voir_detail:>">
-                                       <img src="#CHEMIN{images/formulaire-reponse-24.png}" alt="<:formidable:reponses_voir_detail:>" />
-                               </a>
-                       </td>
-               </tr>
-       </BOUCLE_reponses>
-       </tbody>
-</table>
-[<p class="pagination">(#PAGINATION{prive})</p>]
-</div>
-#BOITE_FERMER
-</B_reponses>[
-<div class="liste-objets formulaires_reponses"><strong class="caption">(#ENV*{sinon,''})</strong></div>
-]<//B_reponses>
diff --git a/www/plugins/formidable_1_0/prive/squelettes/contenu/configurer_formidable.html b/www/plugins/formidable_1_0/prive/squelettes/contenu/configurer_formidable.html
deleted file mode 100644 (file)
index df8aa01..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-[(#AUTORISER{configurer,_fsondage}|sinon_interdire_acces)]
-
-<h1 class="grostitre"><:formidable:cfg_titre_page_configurer_formidable:></h1>
-
-<div class="ajax">
-       #FORMULAIRE_CONFIGURER_FORMIDABLE_ANALYSE
-</div>
diff --git a/www/plugins/formidable_1_0/prive/squelettes/contenu/formulaire.html b/www/plugins/formidable_1_0/prive/squelettes/contenu/formulaire.html
deleted file mode 100644 (file)
index 6a19dc7..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<BOUCLE_formulaire(FORMULAIRES){id_formulaire}>\r
-[(#BOITE_OUVRIR{\r
-       [(#AUTORISER{editer, formulaire, #ID_FORMULAIRE}|oui)\r
-               [(#URL_ECRIRE{formulaire_edit,id_formulaire=#ID_FORMULAIRE}\r
-                       |icone_verticale{<:formidable:editer_modifier_formulaire:>,formulaire,formulaire-editer-24,right})]\r
-       ]\r
-       [<h1>(#TITRE|sinon{<:info_sans_titre:>})[(#CHEMIN_IMAGE{formulaire-24.png}|balise_img{formulaire,cadre-icone})]</h1>]\r
-,simple fiche_objet})]\r
-\r
-\r
-<!--affiche_milieu-->\r
-\r
-<div id="wysiwyg">\r
-<INCLURE{fond=prive/objets/contenu/formulaire,id=#ID_FORMULAIRE,id_formulaire=#ID_FORMULAIRE,virtuel=oui,ajax=wysiwyg,wysiwyg=1}>\r
-</div>\r
-\r
-       #SET{traitements_disponibles, #VAL|traitements_lister_disponibles}\r
-       [(#BOITE_OUVRIR{#CHEMIN_IMAGE{formulaire-config-traitements-24.png}\r
-               |balise_img{'',cadre-icone}\r
-               |concat{<:formidable:traitements_actives:>},'simple traitements'})]\r
-       <B_traitements>\r
-               <ul class='spip'>\r
-                       <BOUCLE_traitements(POUR){tableau #TRAITEMENTS|unserialize|sinon{#ARRAY}}>\r
-                               <li>[(#GET{traitements_disponibles}|table_valeur{#CLE}|table_valeur{titre})]</li>\r
-                       </BOUCLE_traitements>\r
-               </ul>\r
-       </B_traitements>\r
-               <p><:formidable:aucun_traitement:></p>\r
-       <//B_traitements>\r
-       #BOITE_FERMER\r
-\r
-       #FORMULAIRE_FORMIDABLE{#ID_FORMULAIRE}\r
-\r
-#BOITE_FERMER\r
-</BOUCLE_formulaire>\r
diff --git a/www/plugins/formidable_1_0/prive/squelettes/contenu/formulaire_edit.html b/www/plugins/formidable_1_0/prive/squelettes/contenu/formulaire_edit.html
deleted file mode 100644 (file)
index 853f790..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-#SET{objet,formulaire}
-#SET{id_objet,#VAL{id_formulaire}|_request|intval}
-<BOUCLE_autoriser(CONDITION){si #AUTORISER{editer, formulaire, #GET{id_objet}}}>
-#SET{redirect,#ENV{redirect}|sinon{#ENV{lier_trad,#GET{id_objet}}|?{#ENV{lier_trad,#GET{id_objet}}|generer_url_entite{#GET{objet}},#GET{id_rubrique}|?{#GET{id_rubrique}|generer_url_entite{rubrique},#URL_ECRIRE{rubriques}}}}}
-       
-<script type="text/javascript">/*<![CDATA[*/
-if (window.jQuery){
-function debloquer_prive(){ jQuery('input[required], textarea[required], select[required]').removeAttr('required'); }
-jQuery('document').ready(debloquer_prive);
-onAjaxLoad(debloquer_prive);
-}
-/*]]>*/</script>
-<div class='cadre-formulaire-editer'>
-<div class="entete-formulaire">
-       [(#GET{id_objet}|oui)
-       [(#GET{redirect}|icone_verticale{[(#GET{objet}|objet_info{texte_retour}|_T)],#GET{objet}|objet_info{icone_objet},'',left retour[(#ENV{retourajax,''}|oui)ajax preload]})]
-       ]
-       [
-               [(#GET{objet}|objet_info{#GET{id_objet}|?{texte_modifier,texte_creer}}|_T)]
-               <h1>(#ENV{titre,#INFO_TITRE{#GET{objet},#GET{id_objet}}|sinon{#ENV{nouveau}|=={oui}|?{<:formidable:editer_nouveau:>,#VAL{id_menu}|_request}}})</h1>
-       ]
-</div>
-               #SET{configurer,formulaire}
-               <BOUCLE_formulaire(FORMULAIRES){id_formulaire=#GET{id_objet}}>
-                       #SET{configurer,#ENV{configurer}|in_array{#ARRAY{0,formulaire,1,champs,2,traitements,3,auteurs}}|?{#ENV{configurer},champs}}
-               </BOUCLE_formulaire>
-       
-       [(#GET{configurer}|=={formulaire}|oui)
-               #FORMULAIRE_EDITER_FORMULAIRE{#GET{id_objet}, #VAL{nouveau}|_request|sinon{''}}
-       ]
-       [(#GET{configurer}|=={auteurs}|oui)
-               #FORMULAIRE_EDITER_LIENS{formulaires,#GET{id_objet},auteurs}
-       ]
-       [(#GET{configurer}|=={champs}|oui)
-               #FORMULAIRE_EDITER_FORMULAIRE_CHAMPS{#ENV{id_formulaire}}
-       ]
-       [(#GET{configurer}|=={traitements}|oui)
-               #FORMULAIRE_EDITER_FORMULAIRE_TRAITEMENTS{#ENV{id_formulaire}}
-       ]
-</div>
-</BOUCLE_autoriser>
diff --git a/www/plugins/formidable_1_0/prive/squelettes/contenu/formulaires.html b/www/plugins/formidable_1_0/prive/squelettes/contenu/formulaires.html
deleted file mode 100644 (file)
index 04868ae..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<h1 class="grostitre"><:formidable:bouton_formulaires:></h1>
-<p><:formidable:formulaires_introduction:></p>
-
-<INCLURE{fond=prive/objets/liste/formulaires, titre=<:formulaire:titre_formulaires:>, ajax} />
-
-[(#AUTORISER{editer, formulaire}|oui)
-[(#URL_ECRIRE{formulaire_edit}
-       |parametre_url{nouveau,oui}
-       |icone_verticale{<:formulaire:icone_creer_formulaire:>,formulaire,formulaire-nouveau-48,right})]
-]
diff --git a/www/plugins/formidable_1_0/prive/squelettes/contenu/formulaires_analyse.html b/www/plugins/formidable_1_0/prive/squelettes/contenu/formulaires_analyse.html
deleted file mode 100644 (file)
index bf48ec5..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<BOUCLE_formulaire(FORMULAIRES){id_formulaire}>
-<BOUCLE_autoriser(CONDITION){si #AUTORISER{voir, formulaires_reponse, #ID_FORMULAIRE}}>
-[(#BOITE_OUVRIR{'','simple'})]
-        [(#URL_ECRIRE{formulaire}|parametre_url{id_formulaire,#ID_FORMULAIRE}|icone_verticale{<:retour:>,formulaire,formulaire-24,left})]
-
-       [<h4><:formidable:reponses_analyse:></h4>
-       <h1>(#TITRE|sinon{<:info_sans_titre:>})</h1>]
-
-       [(#BOITE_OUVRIR{'','simple'})]  
-       <BOUCLE_reponses(FORMULAIRES_REPONSES){id_formulaire}>
-       </BOUCLE_reponses>
-       <strong>[(#_reponses:TOTAL_BOUCLE
-               |singulier_ou_pluriel{formidable:analyse_une_reponse_total,formidable:analyse_nb_reponses_total})]</strong>
-       </B_reponses>
-       <strong><:formidable:analyse_zero_reponse_total:></strong>
-       <//B_reponses>
-       #BOITE_FERMER
-#BOITE_FERMER
-
-[(#BOITE_OUVRIR{'','simple'})]
-#INCLURE{fond=modeles/formulaire_analyse,id_formulaire}
-#BOITE_FERMER
-</BOUCLE_autoriser>
-</BOUCLE_formulaire>
diff --git a/www/plugins/formidable_1_0/prive/squelettes/contenu/formulaires_reponse.html b/www/plugins/formidable_1_0/prive/squelettes/contenu/formulaires_reponse.html
deleted file mode 100644 (file)
index 0f8441b..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<BOUCLE_formulaires_reponse(FORMULAIRES_REPONSES){tout}{id_formulaires_reponse}>
-<BOUCLE_autoriser(CONDITION){si #AUTORISER{voir, formulaires_reponse, #ID_FORMULAIRE}}>
-[(#BOITE_OUVRIR{
-       <h1><:formulaires_reponse:formulaires_reponse_numero{nb=#ID_FORMULAIRES_REPONSE}:></h1>
-,simple fiche_objet})]
-
-
-<!--affiche_milieu-->
-
-<div id="wysiwyg">
-<INCLURE{fond=prive/objets/contenu/formulaires_reponse,
-       id=#ID_FORMULAIRES_REPONSE,
-       id_formulaires_reponse=#ID_FORMULAIRES_REPONSE,
-       virtuel=oui,ajax=wysiwyg,wysiwyg=1} />
-</div>
-
-<div class='nettoyeur'></div>
-[(#BOITE_OUVRIR{<h3><:formulaires_reponse:reponses_donnees:></h3>,reponses})]
-#INCLURE{fond=modeles/formulaires_reponse,id_formulaires_reponse}
-#BOITE_FERMER
-
-#BOITE_FERMER
-</BOUCLE_autoriser>
-</BOUCLE_formulaires_reponse>
diff --git a/www/plugins/formidable_1_0/prive/squelettes/contenu/formulaires_reponses.html b/www/plugins/formidable_1_0/prive/squelettes/contenu/formulaires_reponses.html
deleted file mode 100644 (file)
index 78210d5..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-<BOUCLE_formulaire(FORMULAIRES){id_formulaire}>
-<BOUCLE_autoriser(CONDITION){si #AUTORISER{voir, formulaires_reponse, #ID_FORMULAIRE}}>
-[(#BOITE_OUVRIR{'','simple'})]
-       [(#URL_ECRIRE{formulaire}|parametre_url{id_formulaire,#ID_FORMULAIRE}|icone_verticale{<:retour:>,formulaire,formulaire-24,left})]
-       
-       <h4><:formidable:voir_reponses:></h4>
-       <h1>#TITRE</h1>
-#BOITE_FERMER
-
-<INCLURE{fond=prive/objets/liste/formulaires_reponses}{id_formulaire}{statut=prop}{titre=<:formidable:reponses_liste_prop:>}{ajax}>
-
-<INCLURE{fond=prive/objets/liste/formulaires_reponses}{id_formulaire}{statut=publie}{titre=<:formidable:reponses_liste_publie:>}{ajax}>
-
-</BOUCLE_autoriser>
-</BOUCLE_formulaire>
diff --git a/www/plugins/formidable_1_0/prive/squelettes/extra/formulaire.html b/www/plugins/formidable_1_0/prive/squelettes/extra/formulaire.html
deleted file mode 100644 (file)
index ba5812c..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<BOUCLE_formulaire(FORMULAIRES){id_formulaire}>
-<!--#extra-->
-[(#BOITE_OUVRIR{<:formidable:titre_cadre_raccourcis:>,'raccourcis'})]
-       [(#AUTORISER{editer, formulaire}|oui)
-       [(#URL_ACTION_AUTEUR{dupliquer_formulaire, #ID_FORMULAIRE}|icone_horizontale{<:formidable:formulaires_dupliquer:>,formulaire,formulaire-dupliquer-24})]
-       ]
-       [(#AUTORISER{editer, formulaire, #ID_FORMULAIRE}|oui)
-       [(#URL_ACTION_AUTEUR{supprimer_formulaire, #ID_FORMULAIRE}|inserer_attribut{'onclick','return confirm("<:formidable:formulaires_supprimer_confirmation:>");'}
-       |icone_horizontale{<:formidable:formulaires_supprimer:>,formulaire,formulaire-supprimer-24})]
-       ]
-#BOITE_FERMER
-
-[(#BOITE_OUVRIR{<:formidable:voir_exporter:>,'raccourcis'})]
-       <BOUCLE_exports(POUR){tableau #VAL|echanges_formulaire_lister_disponibles|table_valeur{exporter}}>
-       [(#URL_ACTION_AUTEUR{exporter_formulaire,#ID_FORMULAIRE-#CLE}|icone_horizontale{#CLE,formulaire,formulaire-exporter-24})]
-       </BOUCLE_exports>
-#BOITE_FERMER
-<!--/#extra-->
-</BOUCLE_formulaire>
diff --git a/www/plugins/formidable_1_0/prive/squelettes/extra/formulaire_edit.html b/www/plugins/formidable_1_0/prive/squelettes/extra/formulaire_edit.html
deleted file mode 100644 (file)
index f08b98b..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<BOUCLE_formulaire(FORMULAIRES) {id_formulaire}>
-<!--#extra-->
-[(#ENV{configurer}|in_array{#LISTE{traitements,champs}}|oui)
-[(#BOITE_OUVRIR{'','info'})]
-       #INCLURE{fond=modeles/formulaire_aide_memoire, id_formulaire=#ID_FORMULAIRE}
-#BOITE_FERMER
-]
-<!--/#extra-->
-</BOUCLE_formulaire>
\ No newline at end of file
diff --git a/www/plugins/formidable_1_0/prive/squelettes/extra/formulaires_analyse.html b/www/plugins/formidable_1_0/prive/squelettes/extra/formulaires_analyse.html
deleted file mode 100755 (executable)
index 9810f75..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<BOUCLE_formulaire(FORMULAIRES){id_formulaire}>
-<BOUCLE_autoriser(CONDITION){si #AUTORISER{voir, formulaires_analyse}}>
-[(#BOITE_OUVRIR{<:formidable:titre_cadre_raccourcis:>,'info'})]
-[(#URL_ACTION_AUTEUR{exporter_analyse_reponses,#ID_FORMULAIRE}
-    |icone_horizontale{<:formidable:analyse_exporter:>,formulaire,formulaire-analyse-exporter-24,center})]
-#BOITE_FERMER
-</BOUCLE_autoriser>
-</BOUCLE_formulaire>
diff --git a/www/plugins/formidable_1_0/prive/squelettes/extra/formulaires_reponses.html b/www/plugins/formidable_1_0/prive/squelettes/extra/formulaires_reponses.html
deleted file mode 100644 (file)
index 52a9655..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-<BOUCLE_formulaire(FORMULAIRES){id_formulaire}>
-[(#SET{ouvre_boite,[(#AUTORISER{voir, formulaires_reponse, #ID_FORMULAIRE}|ou{#AUTORISER{modifier, formulaires_reponse, #ID_FORMULAIRE}})]})]
-[(#GET{ouvre_boite}|oui)[(#BOITE_OUVRIR{<:formidable:titre_cadre_raccourcis:>,'info'})]]
-
-<BOUCLE_autoriser_1(CONDITION){si #AUTORISER{voir, formulaires_reponse}}>
-[(#URL_ACTION_AUTEUR{exporter_formulaires_reponses,#ID_FORMULAIRE}
-       |icone_horizontale{<:formidable:reponses_exporter:>,formulaire,formulaire-reponses-exporter-24,center})]
-</BOUCLE_autoriser_1>
-
-<BOUCLE_autoriser_2(CONDITION){si #AUTORISER{editer, formulaires,#ID_FORMULAIRE}}>
-[(#URL_ACTION_AUTEUR{vider_formulaire,#ID_FORMULAIRE}
-       |icone_horizontale{<:formidable:reponses_supprimer:>,formulaire,formulaire-reponses-supprimer-24,'',onclick="return confirm('<:formidable:reponses_supprimer_confirmation:>');"})]
-</BOUCLE_autoriser_2>
-
-[(#GET{ouvre_boite}|oui)#BOITE_FERMER]
-</BOUCLE_formulaire>
diff --git a/www/plugins/formidable_1_0/prive/squelettes/hierarchie/formulaire.html b/www/plugins/formidable_1_0/prive/squelettes/hierarchie/formulaire.html
deleted file mode 100644 (file)
index a89f8d8..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<!-- hierarchie -->
-<a href="#URL_ECRIRE{formulaires}"><:formulaire:titre_formulaires:></a> &gt;
-<strong class="on">[(#INFO_TITRE{formulaire,#ID_FORMULAIRE}|sinon{<:formidable:editer_nouveau:>})]</strong>
diff --git a/www/plugins/formidable_1_0/prive/squelettes/hierarchie/formulaire_edit.html b/www/plugins/formidable_1_0/prive/squelettes/hierarchie/formulaire_edit.html
deleted file mode 100644 (file)
index a89f8d8..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<!-- hierarchie -->
-<a href="#URL_ECRIRE{formulaires}"><:formulaire:titre_formulaires:></a> &gt;
-<strong class="on">[(#INFO_TITRE{formulaire,#ID_FORMULAIRE}|sinon{<:formidable:editer_nouveau:>})]</strong>
diff --git a/www/plugins/formidable_1_0/prive/squelettes/hierarchie/formulaires.html b/www/plugins/formidable_1_0/prive/squelettes/hierarchie/formulaires.html
deleted file mode 100644 (file)
index 7fd040a..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-<!-- hierarchie -->
-<strong class="on"><:formulaire:titre_formulaires:></strong>
diff --git a/www/plugins/formidable_1_0/prive/squelettes/hierarchie/formulaires_analyse.html b/www/plugins/formidable_1_0/prive/squelettes/hierarchie/formulaires_analyse.html
deleted file mode 100644 (file)
index 2b19ac6..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<BOUCLE_formulaire(FORMULAIRES){id_formulaire}>
-<BOUCLE_autoriser(CONDITION){si #AUTORISER{voir, formulaires_reponse,#ID_FORMULAIRE}}>
-<a href="#URL_ECRIRE{formulaires}"><:formulaire:titre_formulaires:></a> &gt;
-<a href="[(#URL_ECRIRE{formulaire}|parametre_url{id_formulaire,#ID_FORMULAIRE})]">#TITRE</a> &gt;
-<strong class="on"><:formidable:reponses_analyse:></strong>
-</BOUCLE_autoriser>
-</BOUCLE_formulaire>
diff --git a/www/plugins/formidable_1_0/prive/squelettes/hierarchie/formulaires_reponse.html b/www/plugins/formidable_1_0/prive/squelettes/hierarchie/formulaires_reponse.html
deleted file mode 100644 (file)
index a4ebff6..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<BOUCLE_formulaire(FORMULAIRES_REPONSES){id_formulaires_reponse}>
-<a href="#URL_ECRIRE{formulaires}"><:formulaire:titre_formulaires:></a> &gt;
-<a href="[(#URL_ECRIRE{formulaire}|parametre_url{id_formulaire,#ID_FORMULAIRE})]">#INFO_TITRE{formulaire,#ID_FORMULAIRE}</a> &gt;
-<a class="on" href="[(#URL_ECRIRE{formulaires_reponses}|parametre_url{id_formulaire,#ID_FORMULAIRE})]"><:formidable:voir_reponses:></a> &gt;
-<strong class="on"><:formulaires_reponse:titre_formulaires_reponse:></strong>
-</BOUCLE_formulaire>
diff --git a/www/plugins/formidable_1_0/prive/squelettes/hierarchie/formulaires_reponses.html b/www/plugins/formidable_1_0/prive/squelettes/hierarchie/formulaires_reponses.html
deleted file mode 100644 (file)
index bfe3559..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<BOUCLE_formulaire(FORMULAIRES){id_formulaire}>
-<a href="#URL_ECRIRE{formulaires}"><:formulaire:titre_formulaires:></a> &gt;
-<a href="[(#URL_ECRIRE{formulaire}|parametre_url{id_formulaire,#ID_FORMULAIRE})]">#INFO_TITRE{formulaire,#ID_FORMULAIRE}</a> &gt;
-<strong class="on"><:formidable:voir_reponses:></strong>
-</BOUCLE_formulaire>
diff --git a/www/plugins/formidable_1_0/prive/squelettes/navigation/formulaire.html b/www/plugins/formidable_1_0/prive/squelettes/navigation/formulaire.html
deleted file mode 100644 (file)
index 33b3600..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-<BOUCLE_formulaire(FORMULAIRES){id_formulaire}>
-#BOITE_OUVRIR{'','info'}
-#PIPELINE{boite_infos,#ARRAY{data,'',args,#ARRAY{'type','formulaire','id',#ENV{id_formulaire}}}}
-
-[(#AUTORISER{editer, formulaire, #ID_FORMULAIRE}|oui)
-
-[(#URL_ECRIRE{formulaire_edit}
-       |parametre_url{id_formulaire, #ID_FORMULAIRE}
-       |parametre_url{configurer,formulaire}
-       |parametre_url{avertissement,''}
-       |icone_horizontale{<:formidable:editer_menu_formulaire:>,formulaire,formulaire-editer-24,center})]
-
-[(#CONFIG{formidable/analyse/auteur}|=={on}|oui)[(#URL_ECRIRE{formulaire_edit}
-       |parametre_url{id_formulaire, #ID_FORMULAIRE}
-       |parametre_url{configurer,auteurs}
-       |parametre_url{avertissement,''}
-       |icone_horizontale{<:formidable:editer_menu_auteurs:>,formulaire,formulaire-config-auteurs-24,center})]
-]
-
-[(#URL_ECRIRE{formulaire_edit}
-       |parametre_url{id_formulaire, #ID_FORMULAIRE}
-       |parametre_url{configurer,champs}
-       |parametre_url{avertissement,''}
-       |icone_horizontale{<:formidable:editer_menu_champs:>,formulaire,formulaire-config-champs-24,center})]
-
-[(#URL_ECRIRE{formulaire_edit}
-       |parametre_url{id_formulaire, #ID_FORMULAIRE}
-       |parametre_url{configurer,traitements}
-       |parametre_url{avertissement,''}
-       |icone_horizontale{<:formidable:editer_menu_traitements:>,formulaire,formulaire-config-traitements-24,center})]
-
-]
-
-<BOUCLE_resultats(FORMULAIRES_REPONSES){id_formulaire} {statut!=poubelle} >
-</BOUCLE_resultats>
-
-[(#AUTORISER{voir,formulaires_reponse,#ID_FORMULAIRE}|oui)
-<div class='navigation_resultats'>
-[(#URL_ECRIRE{formulaires_reponses}
-       |parametre_url{id_formulaire, #ID_FORMULAIRE}
-       |icone_horizontale{<:formidable:voir_reponses:> &#40;#TOTAL_BOUCLE&#41;,formulaire,formulaire-reponses-24,center})]
-[(#URL_ECRIRE{formulaires_analyse}
-       |parametre_url{id_formulaire, #ID_FORMULAIRE}
-       |icone_horizontale{<:formidable:reponses_analyse:>,formulaire,formulaire-analyse-24,center})]
-</div>]
-
-</B_resultats>
-
-#BOITE_FERMER
-</BOUCLE_formulaire>
diff --git a/www/plugins/formidable_1_0/prive/squelettes/navigation/formulaire_edit.html b/www/plugins/formidable_1_0/prive/squelettes/navigation/formulaire_edit.html
deleted file mode 100644 (file)
index fbc11c3..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<BOUCLE_formulaire(FORMULAIRES){id_formulaire}>
-#BOITE_OUVRIR{'','info'}
-#PIPELINE{boite_infos,#ARRAY{data,'',args,#ARRAY{'type','formulaire','id',#ENV{id_formulaire}}}}
-
-[(#SELF
-       |parametre_url{configurer,formulaire}
-       |parametre_url{avertissement,''}
-       |icone_horizontale{<:formidable:editer_menu_formulaire:>,formulaire,formulaire-editer-24,center})]
-
-[(#CONFIG{formidable/analyse/auteur}|=={on}|oui)[(#SELF
-       |parametre_url{configurer,auteurs}
-       |parametre_url{avertissement,''}
-       |icone_horizontale{<:formidable:editer_menu_auteurs:>,formulaire,formulaire-config-auteurs-24,center})]
-]
-
-[(#SELF
-       |parametre_url{configurer,champs}
-       |parametre_url{avertissement,''}
-       |icone_horizontale{<:formidable:editer_menu_champs:>,formulaire,formulaire-config-champs-24,center})]
-
-[(#SELF
-       |parametre_url{configurer,traitements}
-       |parametre_url{avertissement,''}
-       |icone_horizontale{<:formidable:editer_menu_traitements:>,formulaire,formulaire-config-traitements-24,center})]
-
-#BOITE_FERMER
-
-</BOUCLE_formulaire>
diff --git a/www/plugins/formidable_1_0/prive/squelettes/navigation/formulaires.html b/www/plugins/formidable_1_0/prive/squelettes/navigation/formulaires.html
deleted file mode 100644 (file)
index ed1bb7c..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-[(#AUTORISER{editer, formulaire}|oui)
-       #FORMULAIRE_IMPORTER_FORMULAIRE
-]
diff --git a/www/plugins/formidable_1_0/prive/squelettes/navigation/formulaires_analyse.html b/www/plugins/formidable_1_0/prive/squelettes/navigation/formulaires_analyse.html
deleted file mode 100644 (file)
index d588f7e..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<BOUCLE_formulaire(FORMULAIRES){id_formulaire}>
-<BOUCLE_autoriser(CONDITION){si #AUTORISER{voir, formulaires_reponse, #ENV{id_formulaire}}}>
-#BOITE_OUVRIR{'','info'}
-#PIPELINE{boite_infos,#ARRAY{data,'',args,#ARRAY{'type','formulaire','id',#ENV{id_formulaire}}}}
-
-[(#URL_ECRIRE{formulaires_reponses}|parametre_url{id_formulaire,#ID_FORMULAIRE}|icone_horizontale{<:formidable:reponses_liste:>,formulaire,formulaire-reponses-24,left})]
-
-[(#SELF|icone_horizontale{<:formidable:reponses_analyse:>,formulaire,formulaire-analyse-24,left})]
-
-#BOITE_FERMER
-</BOUCLE_autoriser>
-</BOUCLE_formulaire>
diff --git a/www/plugins/formidable_1_0/prive/squelettes/navigation/formulaires_reponse.html b/www/plugins/formidable_1_0/prive/squelettes/navigation/formulaires_reponse.html
deleted file mode 100644 (file)
index bc6188b..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-<BOUCLE_formulaires_reponse(FORMULAIRES_REPONSES){tout}{id_formulaires_reponse}>
-<BOUCLE_autoriser(CONDITION){si #AUTORISER{voir, formulaires_reponse, #ID_FORMULAIRE}}>
-[(#BOITE_OUVRIR{'','info'})]
-
-       [(#PIPELINE{boite_infos,#ARRAY{data,'',
-               args,#ARRAY{'type','formulaires_reponse','id',#ENV{id_formulaires_reponse}}}})]
-
-       [(#URL_ECRIRE{formulaires_analyse}
-               |parametre_url{id_formulaire,#ID_FORMULAIRE}
-               |icone_horizontale{<:formidable:reponses_analyse:>,formulaire,formulaire-analyse-24,center})]
-
-#BOITE_FERMER
-
-</BOUCLE_autoriser>
-</BOUCLE_formulaires_reponse>
diff --git a/www/plugins/formidable_1_0/prive/squelettes/navigation/formulaires_reponses.html b/www/plugins/formidable_1_0/prive/squelettes/navigation/formulaires_reponses.html
deleted file mode 100644 (file)
index 001ac20..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<BOUCLE_formulaire(FORMULAIRES){id_formulaire}>
-<BOUCLE_autoriser(CONDITION){si #AUTORISER{voir, formulaires_reponse, #ID_FORMULAIRE}}>
-#BOITE_OUVRIR{'','info'}
-#PIPELINE{boite_infos,#ARRAY{data,'',args,#ARRAY{'type','formulaire','id',#ENV{id_formulaire}}}}
-
-[(#SELF|icone_horizontale{<:formidable:reponses_liste:>,formulaire,formulaire-reponses-24,left})]
-
-[(#URL_ECRIRE{formulaires_analyse}|parametre_url{id_formulaire,#ID_FORMULAIRE}|icone_horizontale{<:formidable:reponses_analyse:>,formulaire,formulaire-analyse-24,left})]
-
-#BOITE_FERMER
-</BOUCLE_autoriser>
-</BOUCLE_formulaire>
diff --git a/www/plugins/formidable_1_0/prive/style_prive_plugin_formidable.html b/www/plugins/formidable_1_0/prive/style_prive_plugin_formidable.html
deleted file mode 100644 (file)
index cbd1cf9..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-#SET{claire,#ENV{couleur_claire,edf3fe}}
-#SET{foncee,#ENV{couleur_foncee,3874b0}}
-
-body .formidable_analyse .progress-bar span {
-       background-color: ##GET{claire};
-         background-image: -webkit-gradient(linear, left top, left bottom, from(##GET{claire}), to(##GET{foncee}));
-         background-image: -webkit-linear-gradient(top, ##GET{claire}, ##GET{foncee});
-         background-image: -moz-linear-gradient(top, ##GET{claire}, ##GET{foncee});
-         background-image: -ms-linear-gradient(top, ##GET{claire}, ##GET{foncee});
-         background-image: -o-linear-gradient(top, ##GET{claire}, ##GET{foncee});
-         background-image: linear-gradient(top, ##GET{claire}, ##GET{foncee}); 
-}
-
-#navigation .navigation_resultats {
-       margin-top:1em;
-       padding-top:1em;
-       border-top:1px solid #eee;
-}
-
-#contenu .box.traitements ul.spip {margin-bottom:0;}
-
-#contenu .liste-objets.formulaires_reponses tr > .date {width:auto;}
-#contenu .liste-objets.formulaires_reponses tr > .auteur {width:auto;}
-
-.formulaires_reponse #contenu #wysiwyg {margin-top:1em;}
-.formulaires_reponse #contenu #wysiwyg .label {
-       width:140px; float:left; display:block;
-}
-.formulaires_reponse #contenu .fiche_objet .reponses .inner { border:none; }
-.formulaires_reponse #contenu .fiche_objet .reponses .hd {
-    padding-bottom: 3px; margin-bottom:10px; border-bottom:1px solid #ccc;
-}
diff --git a/www/plugins/formidable_1_0/prive/themes/basic/images/formulaire-16.png b/www/plugins/formidable_1_0/prive/themes/basic/images/formulaire-16.png
deleted file mode 100644 (file)
index 8ca21ea..0000000
Binary files a/www/plugins/formidable_1_0/prive/themes/basic/images/formulaire-16.png and /dev/null differ
diff --git a/www/plugins/formidable_1_0/prive/themes/spip/images/formulaire-16.png b/www/plugins/formidable_1_0/prive/themes/spip/images/formulaire-16.png
deleted file mode 100644 (file)
index 8ca21ea..0000000
Binary files a/www/plugins/formidable_1_0/prive/themes/spip/images/formulaire-16.png and /dev/null differ
diff --git a/www/plugins/formidable_1_0/prive/themes/spip/images/formulaire-24.png b/www/plugins/formidable_1_0/prive/themes/spip/images/formulaire-24.png
deleted file mode 100644 (file)
index ff847d0..0000000
Binary files a/www/plugins/formidable_1_0/prive/themes/spip/images/formulaire-24.png and /dev/null differ
diff --git a/www/plugins/formidable_1_0/prive/themes/spip/images/formulaires_reponse-24.png b/www/plugins/formidable_1_0/prive/themes/spip/images/formulaires_reponse-24.png
deleted file mode 100644 (file)
index ec0a2b0..0000000
Binary files a/www/plugins/formidable_1_0/prive/themes/spip/images/formulaires_reponse-24.png and /dev/null differ
diff --git a/www/plugins/formidable_1_0/public/formidable_criteres.php b/www/plugins/formidable_1_0/public/formidable_criteres.php
deleted file mode 100644 (file)
index ef2147a..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-
-if (!defined("_ECRIRE_INC_VERSION")) return;
-
-       // {tri_donnee champ}
-/**
- * Depuis la boucle FORMULAIRES_REPONSES, trier les résulats en fonction d'un champ
- * de la table FORMULAIRES_REPONSES_CHAMPS
- * {tri_selon_donnee} 
- *
- * @global array $exceptions_des_tables
- * @param string $idb
- * @param array $boucles
- * @param <type> $crit
- * 
- * Auteurs :
- * Antoine Pitrou
- * Cedric Morin
- * Renato
- * @ 2005,2006 - Distribue sous licence GNU/GPL
- */
-
-function critere_tri_selon_donnee_dist($idb, &$boucles, $crit) { // Garder cette fontion pour compatibilité
-       critere_tri_selon_reponse_dist($idb, $boucles, $crit) ;
-}
-function critere_tri_selon_reponse_dist($idb, &$boucles, $crit) {
-
-       $boucle = &$boucles[$idb];
-       $t = $boucle->id_table;
-       
-       if ($t=='formulaires_reponses'){
-               $not = $crit->not;
-               $_quoi = calculer_liste($crit->param[0], array(), $boucles, $boucles[$idb]->id_parent);
-               $k = count($boucle->join)+1;
-               $boucle->join[$k]= array($t,'id_formulaires_reponse');
-               $boucle->from["L$k"]= 'spip_formulaires_reponses_champs';
-               $op = array("'='", "'L$k.nom'", "_q(".$_quoi.")");
-               $boucle->where[]= array("'?'","!in_array($_quoi,array('date','id_formulaires_reponse'))",$op,"''");
-               $boucle->order[]= "(in_array($_quoi,array('date','id_formulaires_reponse'))?'$t.'.$_quoi:(strncmp($_quoi,'date_',5)==0?'STR_TO_DATE(L$k.valeur,\'%d/%m/%Y\')':'L$k.valeur'))".($not?".' DESC'":"");
-       }
-}
-
-// {recherche_donnee} ou {recherche_donnee susan}
-// Intégralement pompé et adapté de Forms&Tables
-function critere_recherche_reponse_dist($idb, &$boucles, $crit) {
-       global $table_des_tables;
-       $boucle = &$boucles[$idb];
-       $t = $boucle->id_table;
-       if ($t=='formulaires_reponses'){
-               if (isset($crit->param[0]))
-                       $_quoi = calculer_liste($crit->param[0], array(), $boucles, $boucles[$idb]->id_parent);
-               else
-                       $_quoi = '@$Pile[0]["recherche"]';
-
-               $k = count($boucle->join)+1;
-               $boucle->join[$k]= array($t,'id_formulaires_reponse');
-               $boucle->from["L$k"]= 'spip_formulaires_reponses_champs';
-               $op = array("'LIKE'","'L$k.valeur'","_q(strpos($_quoi,'%')===false?'%'.".$_quoi.".'%':$_quoi)");
-               $boucle->where[]= array("'?'",$_quoi,$op,"''");
-       }
-}
-
-
-?>
diff --git a/www/plugins/formidable_1_0/puce_statut/formulaires_reponse.php b/www/plugins/formidable_1_0/puce_statut/formulaires_reponse.php
deleted file mode 100644 (file)
index 0efc6f9..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-<?php
-
-/**
- * Gestion des puces d'action rapide de formulaires
- *
- * @package SPIP\Formidable\Puce_statut
-**/
-
-/**
- * Gestion des puces statuts des formulaires
- * 
- * Retourne le contenu d'une puce avec changement de statut possible
- * si on en a l'autorisation, sinon simplement l'image de la puce
- *
- * @param int $id
- *     Identifiant de l'objet
- * @param string $statut
- *     Statut actuel de l'objet
- * @param int $id_parent
- *     Identifiant du parent, un formulaire
- * @param string $type
- *     Type d'objet
- * @param bool $ajax
- *     Indique s'il ne faut renvoyer que le coeur du menu car on est
- *     dans une requete ajax suite à un post de changement rapide
- * @param bool $menu_rapide
- *     Indique si l'on peut changer le statut, ou si on l'affiche simplement
- * @return string
- *     Code HTML de l'image de puce de statut à insérer (et du menu de changement si présent)
-**/
-function puce_statut_formulaires_reponse_dist($id, $statut, $id_parent, $type='article', $ajax = false, $menu_rapide=_ACTIVER_PUCE_RAPIDE) {
-
-       $src = statut_image($type, $statut);
-       if (!$src)
-               return $src;
-
-       if (!$id
-         OR !_SPIP_AJAX
-         OR !$menu_rapide
-         OR !autoriser('instituer', $type, $id)) {
-         $ajax_node ='';
-       }
-       else
-               $ajax_node = " class='imgstatut$type$id'";
-
-       $inser_puce = http_img_pack($src,statut_titre($type, $statut),$ajax_node);
-
-       if (!$ajax_node)
-               return $inser_puce;
-
-       $table = table_objet_sql($type);
-       $desc = lister_tables_objets_sql($table);
-       if (!isset($desc['statut_textes_instituer']))
-               return $inser_puce;
-
-       $coord = array_flip(array_keys($desc['statut_textes_instituer']));
-       if (!isset($coord[$statut]))
-               return $inser_puce;
-
-       $unit = 8/*widh de img*/+4/*padding*/;
-       $margin = 4; /* marge a gauche + droite */
-       $zero = 1 /*border*/ + $margin/2 + 2 /*padding*/;
-       $clip = $zero+ ($unit*$coord[$statut]);
-       if ($ajax){
-
-               $width = $unit*count($desc['statut_textes_instituer'])+$margin;
-               $out = "<span class='puce_objet_fixe $type'>"
-               . $inser_puce
-               . "</span>"
-               . "<span class='puce_objet_popup $type statutdecal$type$id' style='width:{$width}px;margin-left:-{$clip}px;'>";
-               $i=0;
-               foreach($desc['statut_textes_instituer'] as $s=>$t){
-                       $out .= afficher_script_statut($id, $type, -$zero-$i++*$unit, statut_image($type,$s), $s, _T($t));
-               }
-               $out .= "</span>";
-               return $out;
-       }
-       else {
-
-               $nom = "puce_statut_";
-         $action = generer_url_ecrire('puce_statut_formulaires',"",true);
-         $action = "if (!this.puce_loaded) { this.puce_loaded = true; prepare_selec_statut(this, '$nom', '$type', '$id', '$action'); }";
-         $over = " onmouseover=\"$action\"";
-
-               $lang_dir = lang_dir(isset($GLOBALS['lang_objet']) ? $GLOBALS['lang_objet'] : "");
-               return  "<span class='puce_objet $type' id='$nom$type$id' dir='$lang_dir'$over>"
-               . $inser_puce
-               . '</span>';
-       }
-}
-
-
diff --git a/www/plugins/formidable_1_0/saisies-analyses/_base.html b/www/plugins/formidable_1_0/saisies-analyses/_base.html
deleted file mode 100644 (file)
index 7c9a8ab..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-<div class="cadre cadre-liste analyser analyser_#ENV{nom} saisie_#ENV{type_saisie}">
-<table class="liste" cellspacing="0" cellpadding="2" border="0" style="width:100%;" data-nombre="#ENV{reponses_total}">
-[<caption class="titrem"><strong class="caption">(#ENV{label_case,#ENV{label,#ENV{nom}}})</strong></caption>]
-       <tbody>
-       [(#CHEMIN{saisies-analyses/#ENV{type_saisie}.html}|oui)
-               #INCLURE{fond=saisies-analyses/#ENV{type_saisie},env}
-       ]
-       [(#CHEMIN{saisies-analyses/#ENV{type_saisie}.html}|non)
-               #SET{plein,#ENV{valeurs}|array_filter}
-               #SET{vide,#ENV{valeurs}|array_diff_key{#GET{plein}}}
-               [(#GET{plein}|count|>{0}|oui)
-                       #SET{moyenne,#VAL{str_word_count}|array_map{#GET{plein}}|array_sum|div{#GET{plein}|count}}
-               ]
-               [(#GET{plein}|count|>{0}|non)
-                       #SET{moyenne,0}
-               ]
-               <tr class="tr_liste row_odd vide">
-                       <td class="choix"><:formidable:analyse_sans_reponse:></td>
-                       <td class="stat"[ title="(#GET{vide}|count|titre_nb_reponses|attribut_html)"]>[(#GET{vide}|count)]</td>
-               </tr>
-               <tr class="tr_liste row_even plein">
-                       <td class="choix"><:formidable:analyse_avec_reponse:></td>
-                       <td class="stat"[ title="(#GET{plein}|count|titre_nb_reponses|attribut_html)"]>[(#GET{plein}|count)]</td>
-               </tr>
-               <tr class="tr_liste row_odd moyenne">
-                       <td class="choix"><:formidable:analyse_longueur_moyenne:></td>
-                       <td class="stat ignore">#GET{moyenne}</td>
-               </tr>
-       ]
-       </tbody>
-</table>
-</div>
diff --git a/www/plugins/formidable_1_0/saisies-analyses/case.html b/www/plugins/formidable_1_0/saisies-analyses/case.html
deleted file mode 100644 (file)
index 51a9faf..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-#SET{oui,0}
-#SET{non,0}
-<BOUCLE_reponses(POUR){tableau #ENV{valeurs}}>
-       [(#VALEUR|oui)
-               #SET{oui,#GET{oui}|plus{1}}
-       ]
-       [(#VALEUR|non)
-               #SET{non,#GET{non}|plus{1}}
-       ]
-</BOUCLE_reponses>
-
-<tr class="tr_liste">
-       <td class="choix"><:item_oui:></td>
-       <td class="stat"[ title="(#GET{oui}|titre_nb_reponses|attribut_html)"]>#GET{oui}</td>
-</tr>
-<tr class="tr_liste">
-       <td class="choix"><:item_non:></td>
-       <td class="stat"[ title="(#GET{non}|titre_nb_reponses|attribut_html)"]>#GET{non}</td>
-</tr>
-
-#SET{diff, #ENV{reponses_total}|moins{#ENV{valeurs}|count}}
-[(#GET{diff}|>{0}|oui)
-<tr class="tr_liste">
-       <td class="choix"><:saisies:vue_sans_reponse:></td>
-       <td class="stat"[ title="(#GET{diff}|titre_nb_reponses|attribut_html)"]>#GET{diff}</td>
-</tr>
-]
diff --git a/www/plugins/formidable_1_0/saisies-analyses/checkbox.html b/www/plugins/formidable_1_0/saisies-analyses/checkbox.html
deleted file mode 100644 (file)
index ad682ae..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-#SET{stats,#ARRAY}
-<BOUCLE_reponses(POUR){tableau #ENV{valeurs}}>
-       <BOUCLE_choix(POUR){tableau #VALEUR}>
-       #SET_MERGE{stats, #ARRAY{choix-#VALEUR, #GET{stats}|table_valeur{choix-#VALEUR}|sinon{0}|plus{1}}}
-       </BOUCLE_choix>
-</BOUCLE_reponses>
-
-[(#REM) datas peut être une chaine qu'on sait décomposer ]
-#SET{datas, #ENV*{datas}}
-#SET{datas, #GET{datas}|is_string|?{(#GET{datas}|saisies_chaine2tableau), #GET{datas}}}
-
-<BOUCLE_datas(POUR){tableau #GET{datas}}>
-[(#SET{nb,[(#GET{stats}|table_valeur{choix-#CLE}|sinon{0})]})]
-<tr class="tr_liste">
-       <td class="choix">#VALEUR</td>
-       <td class="stat"[ title="(#GET{nb}|titre_nb_reponses|attribut_html)"]>#GET{nb}</td>
-</tr>
-</BOUCLE_datas>
-
-#SET{diff, #ENV{reponses_total}|moins{#ENV{valeurs}|count}}
-[(#GET{diff}|>{0}|oui)
-<tr class="tr_liste">
-       <td class="choix"><:saisies:vue_sans_reponse:></td>
-       <td class="stat"[ title="(#GET{diff}|titre_nb_reponses|attribut_html)"]>#GET{diff}</td>
-</tr>
-]
diff --git a/www/plugins/formidable_1_0/saisies-analyses/destinataires.html b/www/plugins/formidable_1_0/saisies-analyses/destinataires.html
deleted file mode 100644 (file)
index 9692d03..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#SET{stats,#ARRAY}
-<BOUCLE_reponses(POUR){tableau #ENV{valeurs}}>
-       <BOUCLE_choix(POUR){tableau #VALEUR}>
-       #SET_MERGE{stats, #ARRAY{auteur-#VALEUR, #GET{stats}|table_valeur{auteur-#VALEUR}|sinon{0}|plus{1}}}
-       </BOUCLE_choix>
-</BOUCLE_reponses>
-
-<BOUCLE_stats(POUR){tableau #GET{stats}}>
-#SET{id_auteur, #CLE|replace{'auteur-', ''}}
-<tr class="tr_liste">
-       <td class="choix"><a href="#INFO_URL{auteur, #GET{id_auteur}}">#INFO_TITRE{auteur, #GET{id_auteur}}</a></td>
-       <td class="stat"[ title="(#VALEUR|titre_nb_reponses|attribut_html)"]>#VALEUR</td>
-</tr>
-</BOUCLE_stats>
diff --git a/www/plugins/formidable_1_0/saisies-analyses/explication.html b/www/plugins/formidable_1_0/saisies-analyses/explication.html
deleted file mode 100644 (file)
index 703e6c0..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<tr class="tr_liste">
-       <td class='choix' colspan='2'>[<p class='explication'>(#ENV{texte})</p>]</td>
-</tr>
-
diff --git a/www/plugins/formidable_1_0/saisies-analyses/oui_non.html b/www/plugins/formidable_1_0/saisies-analyses/oui_non.html
deleted file mode 100644 (file)
index 51a9faf..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-#SET{oui,0}
-#SET{non,0}
-<BOUCLE_reponses(POUR){tableau #ENV{valeurs}}>
-       [(#VALEUR|oui)
-               #SET{oui,#GET{oui}|plus{1}}
-       ]
-       [(#VALEUR|non)
-               #SET{non,#GET{non}|plus{1}}
-       ]
-</BOUCLE_reponses>
-
-<tr class="tr_liste">
-       <td class="choix"><:item_oui:></td>
-       <td class="stat"[ title="(#GET{oui}|titre_nb_reponses|attribut_html)"]>#GET{oui}</td>
-</tr>
-<tr class="tr_liste">
-       <td class="choix"><:item_non:></td>
-       <td class="stat"[ title="(#GET{non}|titre_nb_reponses|attribut_html)"]>#GET{non}</td>
-</tr>
-
-#SET{diff, #ENV{reponses_total}|moins{#ENV{valeurs}|count}}
-[(#GET{diff}|>{0}|oui)
-<tr class="tr_liste">
-       <td class="choix"><:saisies:vue_sans_reponse:></td>
-       <td class="stat"[ title="(#GET{diff}|titre_nb_reponses|attribut_html)"]>#GET{diff}</td>
-</tr>
-]
diff --git a/www/plugins/formidable_1_0/saisies-analyses/radio.html b/www/plugins/formidable_1_0/saisies-analyses/radio.html
deleted file mode 100644 (file)
index 88627d0..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-#SET{stats,#ARRAY}
-<BOUCLE_reponses(POUR){tableau #ENV{valeurs}}>
-       [(#VALEUR|oui)
-               #SET_MERGE{stats, #ARRAY{choix-#VALEUR, #GET{stats}|table_valeur{choix-#VALEUR}|sinon{0}|plus{1}}}
-       ]
-</BOUCLE_reponses>
-
-[(#REM) datas peut être une chaine qu'on sait décomposer ]
-#SET{datas, #ENV*{datas}}
-#SET{datas, #GET{datas}|is_string|?{(#GET{datas}|saisies_chaine2tableau), #GET{datas}}}
-
-<BOUCLE_datas(POUR){tableau #GET{datas}}>
-[(#SET{nb,[(#GET{stats}|table_valeur{choix-#CLE}|sinon{0})]})]
-<tr class="tr_liste">
-       <td class="choix">#VALEUR</td>
-       <td class="stat"[ title="(#GET{nb}|titre_nb_reponses|attribut_html)"]>#GET{nb}</td>
-</tr>
-</BOUCLE_datas>
-
-#SET{diff, #ENV{reponses_total}|moins{#ENV{valeurs}|count}}
-[(#GET{diff}|>{0}|oui)
-<tr class="tr_liste">
-       <td class="choix"><:saisies:vue_sans_reponse:></td>
-       <td class="stat"[ title="(#GET{diff}|titre_nb_reponses|attribut_html)"]>#GET{diff}</td>
-</tr>
-]
diff --git a/www/plugins/formidable_1_0/saisies-analyses/selecteur_article.html b/www/plugins/formidable_1_0/saisies-analyses/selecteur_article.html
deleted file mode 100644 (file)
index 35f08b4..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-[(#REM) Attention, saisie multiple non testee ]\r
-\r
-#SET{plein,#ENV{valeurs}|array_filter}\r
-#SET{vide,#ENV{valeurs}|array_diff_key{#GET{plein}}}\r
-\r
-<tr class="tr_liste row_odd vide">\r
-   <td class="choix"><:formidable:analyse_sans_reponse:></td>\r
-   <td class="stat">[(#GET{vide}|count)]</td>\r
-</tr>\r
-<tr class="tr_liste row_even plein">\r
-   <td class="choix"><:formidable:analyse_avec_reponse:></td>\r
-   <td class="stat">[(#GET{plein}|count)]</td>\r
-</tr>\r
diff --git a/www/plugins/formidable_1_0/saisies-analyses/selecteur_rubrique.html b/www/plugins/formidable_1_0/saisies-analyses/selecteur_rubrique.html
deleted file mode 100644 (file)
index 35f08b4..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-[(#REM) Attention, saisie multiple non testee ]\r
-\r
-#SET{plein,#ENV{valeurs}|array_filter}\r
-#SET{vide,#ENV{valeurs}|array_diff_key{#GET{plein}}}\r
-\r
-<tr class="tr_liste row_odd vide">\r
-   <td class="choix"><:formidable:analyse_sans_reponse:></td>\r
-   <td class="stat">[(#GET{vide}|count)]</td>\r
-</tr>\r
-<tr class="tr_liste row_even plein">\r
-   <td class="choix"><:formidable:analyse_avec_reponse:></td>\r
-   <td class="stat">[(#GET{plein}|count)]</td>\r
-</tr>\r
diff --git a/www/plugins/formidable_1_0/saisies-analyses/selecteur_rubrique_article.html b/www/plugins/formidable_1_0/saisies-analyses/selecteur_rubrique_article.html
deleted file mode 100644 (file)
index a8ef6ae..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-[(#REM) Peut etre ameliore en comptant par exemple le nombre d'article / rubriques \r
-Attention, saisie multiple non testee ]\r
-\r
-#SET{plein,#ENV{valeurs}|array_filter}\r
-#SET{vide,#ENV{valeurs}|array_diff_key{#GET{plein}}}\r
-\r
-<tr class="tr_liste row_odd vide">\r
-   <td class="choix"><:formidable:analyse_sans_reponse:></td>\r
-   <td class="stat">[(#GET{vide}|count)]</td>\r
-</tr>\r
-<tr class="tr_liste row_even plein">\r
-   <td class="choix"><:formidable:analyse_avec_reponse:></td>\r
-   <td class="stat">[(#GET{plein}|count)]</td>\r
-</tr>\r
diff --git a/www/plugins/formidable_1_0/saisies-analyses/selection.html b/www/plugins/formidable_1_0/saisies-analyses/selection.html
deleted file mode 100644 (file)
index c1b175d..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-#SET{stats,#ARRAY}
-<BOUCLE_reponses(POUR){tableau #ENV{valeurs}}>
-       [(#VALEUR|oui)
-               #SET_MERGE{stats, #ARRAY{choix-#VALEUR, #GET{stats}|table_valeur{choix-#VALEUR}|sinon{0}|plus{1}}}
-       ]
-</BOUCLE_reponses>
-
-[(#REM) datas peut être une chaine qu'on sait décomposer ]
-#SET{datas, #ENV{datas}}
-#SET{datas, #GET{datas}|is_string|?{(#GET{datas}|saisies_aplatir_chaine|saisies_chaine2tableau), #GET{datas}}}
-
-<BOUCLE_datas(POUR){tableau #GET{datas}}>
-<tr class="tr_liste">
-       <td class="choix">#VALEUR</td>
-       <td class="stat">[(#GET{stats}|table_valeur{choix-#CLE}|sinon{0})]</td>
-</tr>
-</BOUCLE_datas>
-
-#SET{diff, #ENV{valeurs}|count|moins{#GET{stats}|array_sum}}
-[(#GET{diff}|>{0}|oui)
-<tr class="tr_liste">
-       <td class="choix"><:saisies:vue_sans_reponse:></td>
-       <td class="stat">#GET{diff}</td>
-</tr>
-]
diff --git a/www/plugins/formidable_1_0/saisies-analyses/selection_multiple.html b/www/plugins/formidable_1_0/saisies-analyses/selection_multiple.html
deleted file mode 100644 (file)
index 0f1212a..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-#SET{stats,#ARRAY}
-<BOUCLE_reponses(POUR){tableau #ENV{valeurs}}>
-       <BOUCLE_choix(POUR){tableau #VALEUR}>
-       #SET_MERGE{stats, #ARRAY{choix-#VALEUR, #GET{stats}|table_valeur{choix-#VALEUR}|sinon{0}|plus{1}}}
-       </BOUCLE_choix>
-</BOUCLE_reponses>
-
-[(#REM) datas peut être une chaine qu'on sait décomposer ]
-#SET{datas, #ENV{datas}}
-#SET{datas, #GET{datas}|is_string|?{(#GET{datas}|saisies_chaine2tableau), #GET{datas}}}
-
-<BOUCLE_datas(POUR){tableau #GET{datas}}>
-<tr class="tr_liste">
-       <td class="choix">#VALEUR</td>
-       <td class="stat">[(#GET{stats}|table_valeur{choix-#CLE}|sinon{0})]</td>
-</tr>
-</BOUCLE_datas>
-
-#SET{diff, #ENV{reponses_total}|moins{#ENV{valeurs}|count}}
-[(#GET{diff}|>{0}|oui)
-<tr class="tr_liste">
-       <td class="choix"><:saisies:vue_sans_reponse:></td>
-       <td class="stat">#GET{diff}</td>
-</tr>
-]
diff --git a/www/plugins/formidable_1_0/saisies-vues/formulaire_formidable.html b/www/plugins/formidable_1_0/saisies-vues/formulaire_formidable.html
deleted file mode 100644 (file)
index a9692f8..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<BOUCLE_formulaire(FORMULAIRES){identifiant=#ENV{valeur}}>
-<p>[(#TITRE|typo)] (#IDENTIFIANT)</p>
-</BOUCLE_formulaire>
-<p><:saisies:vue_sans_reponse:></p>
-<//B_formulaire>
\ No newline at end of file
diff --git a/www/plugins/formidable_1_0/saisies-vues/formulaire_formidable_multiple.html b/www/plugins/formidable_1_0/saisies-vues/formulaire_formidable_multiple.html
deleted file mode 100644 (file)
index 9b75a57..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<B_formulaire>
-<ul>
-       <BOUCLE_formulaire(FORMULAIRES){identifiant IN #ENV**{valeur}}>
-       <li class="choix">[(#TITRE|typo)] (#IDENTIFIANT)</li>
-       </BOUCLE_formulaire>
-</ul>
-</B_formulaire>
-<p><:saisies:vue_sans_reponse:></p>
-<//B_formulaire>
\ No newline at end of file
diff --git a/www/plugins/formidable_1_0/saisies/champ.html b/www/plugins/formidable_1_0/saisies/champ.html
deleted file mode 100644 (file)
index d2ad8d8..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-
-<select name="#ENV{nom}" id="champ_#ENV{nom}">
-       <option value=""><:formidable:traitements_champ_aucun:></option>
-       [(#ENV{forcer_type}|non)
-               #SET{tab,#ENV{formulaire}}
-       ]
-       [(#ENV{forcer_type}|oui)
-               [(#SET{tab,[(#ENV{formulaire}|saisies_lister_par_nom{0})]})]
-       ]
-       #SET{padding,0}
-       <BOUCLE_parcours(POUR){tableau #GET{tab}}>
-               #SET{saisie,#VALEUR}
-               <BOUCLE_test_enfants(CONDITION){si #GET{saisie}|table_valeur{saisies}|is_array}>
-               <optgroup style="padding-left:#GET{padding}px" label="[(#GET{saisie}|table_valeur{options}|table_valeur{label}|sinon{#GET{saisie}|table_valeur{options}|table_valeur{nom}})]">
-                               #SET{tab,#GET{saisie}|table_valeur{saisies}}
-                               #SET{padding,#GET{padding}|plus{20}}
-                               <BOUCLE_parcours_recursif(BOUCLE_parcours)/>
-                               #SET{padding,#GET{padding}|moins{20}}
-               </optgroup>
-               </BOUCLE_test_enfants>
-                       <BOUCLE_test_type(CONDITION){si #ENV{forcer_type}|non|ou{#GET{saisie}|table_valeur{saisie}|in_array{#ENV{forcer_type}}}}>
-                       <option value="[(#GET{saisie}|table_valeur{options}|table_valeur{nom})]" style="padding-left:#GET{padding}px" [(#ENV{valeur,#ENV{saisie_a_positionner}}|=={#GET{saisie}|table_valeur{options}|table_valeur{nom}}|oui)selected="selected"]>
-                               [(#GET{saisie}|table_valeur{options}|table_valeur{label}|sinon{#GET{saisie}|table_valeur{options}|table_valeur{nom}})]
-                       </option>
-                       </BOUCLE_test_type>
-               <//B_test_enfants>
-       </BOUCLE_parcours>
-</select>
diff --git a/www/plugins/formidable_1_0/saisies/formulaire_formidable.html b/www/plugins/formidable_1_0/saisies/formulaire_formidable.html
deleted file mode 100644 (file)
index e8d8bb4..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-[(#REM) 
-  Saisie permettant de sélectionner un formulaire par son identifiant
-  
-  ### /!\ boucle POUR (spip Bonux) ###
-       
-  Parametres :
-  - option_intro : chaine de langue de la premiere ligne vide ? (defaut:"")
-  - cacher_option_intro : pas de premier option vide  (defaut:"")
-  - class : classe(s) css ajoutes au select
-  
-  Exemple d'appel :
-       [(#SAISIE{formulaire_formidable,nom,
-               label=<:plugin:label:>,
-       })] 
-]
-
-<select name="#ENV{nom}" id="champ_#ENV{nom}"[ class="(#ENV{class})"][ disabled="(#ENV{disable})"][ readonly="(#ENV{readonly})"]>
-[(#ENV{cacher_option_intro}|non)<option value="">[(#ENV{option_intro})]</option>]
-<BOUCLE_selection(FORMULAIRES){par titre}>
-       <option value="#IDENTIFIANT" [(#IDENTIFIANT|=={#ENV{valeur,#ENV{defaut}}}|oui) selected="selected"]>[(#TITRE|typo)] (#IDENTIFIANT)</option>
-</BOUCLE_selection>
-</select>
diff --git a/www/plugins/formidable_1_0/saisies/formulaire_formidable_multiple.html b/www/plugins/formidable_1_0/saisies/formulaire_formidable_multiple.html
deleted file mode 100644 (file)
index b8ef7aa..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-[(#REM) 
-  Saisie permettant de sélectionner plusieurs formulaires par leur identifiant
-  
-  ### /!\ boucle POUR (spip Bonux) ###
-       
-  Parametres :
-  - option_intro : chaine de langue de la premiere ligne vide ? (defaut:"")
-  - cacher_option_intro : pas de premier option vide  (defaut:"")
-  - class : classe(s) css ajoutes au select
-  
-  Exemple d'appel :
-       [(#SAISIE{formulaire_formidable_multiple,nom,
-               label=<:plugin:label:>,
-       })] 
-]
-
-[(#REM) defaut peut être une chaine (plusieurs valeurs ou pas) qu'on sait décomposer ]
-#SET{defaut, #ENV{defaut}}
-#SET{defaut, #GET{defaut}|is_string|?{(#GET{defaut}|saisies_chaine2tableau), (#GET{defaut}|sinon{#ARRAY})}}
-
-<select name="#ENV{nom}[]" id="champ_#ENV{nom}" multiple="multiple"[ class="(#ENV{class})"][ disabled="(#ENV{disable})"][ readonly="(#ENV{readonly})"]>
-[(#ENV{cacher_option_intro}|non)<option value="">[(#ENV{option_intro})]</option>]
-<BOUCLE_selection(FORMULAIRES){par titre}>
-       <option value="#IDENTIFIANT" [(#IDENTIFIANT|in_array{#ENV{valeur,#GET{defaut}}}|oui) selected="selected"]>[(#TITRE|typo)] (#IDENTIFIANT)</option>
-</BOUCLE_selection>
-</select>
diff --git a/www/plugins/formidable_1_0/svn.revision b/www/plugins/formidable_1_0/svn.revision
deleted file mode 100644 (file)
index 0fb1cbf..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<svn_revision>
-<text_version>
-Origine: file:///home/svn/repository/spip-zone/_plugins_/formidable/branches/v1
-Revision: 81164
-Dernier commit: 2014-03-03 23:00:07 +0100 
-</text_version>
-<origine>file:///home/svn/repository/spip-zone/_plugins_/formidable/branches/v1</origine>
-<revision>81164</revision>
-<commit>2014-03-03 23:00:07 +0100 </commit>
-</svn_revision>
\ No newline at end of file
diff --git a/www/plugins/formidable_1_0/todo.txt b/www/plugins/formidable_1_0/todo.txt
deleted file mode 100644 (file)
index 4092e6d..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-
-À faire :
----------
-+ Ajouter des liens "réponse précédente/suivante" dans la visualisation d'une réponse
-+ Afficher une boite listant les formulaires disponibles dans l'édition d'un article
-+ Utiliser le plugin CVT multi-pages de Cédric
-+ Afficher des pages suivant des conditions (scénarios)
-+ Pouvoir attacher des fichiers (et donc les envoyer par mail et les enregistrer en base comme document)
-+ Déplacer les saisies en drag-n-drop
-+ Ajouter une saisie directement au bon endroit en drag-n-drop
-+ Améliorer le texte brut généré à partir du HTML
-
-Idées :
--------
-+ Permettre des messages différents lors de la réédition d'un formulaire (avant et après modification)
-+ Permettre de prévisualiser avant soumission le formulaire
-+ Premettre d'afficher un formulaire en fonction du statut du visiteur
-+ Avoir lors de l'édition des champs du formulaire un bouton «Enregistrer et continuer d'éditer»
diff --git a/www/plugins/formidable_1_0/traiter/email.php b/www/plugins/formidable_1_0/traiter/email.php
deleted file mode 100644 (file)
index aa18eb1..0000000
+++ /dev/null
@@ -1,198 +0,0 @@
-<?php
-
-// Sécurité
-if (!defined("_ECRIRE_INC_VERSION")) return;
-
-function traiter_email_dist($args, $retours){
-       $formulaire = $args['formulaire'];
-       $options = $args['options'];
-       $saisies = unserialize($formulaire['saisies']);
-       $traitements = unserialize($formulaire['traitements']);
-       $champs = saisies_lister_champs($saisies);
-       
-       // On récupère les destinataires
-       if ($options['champ_destinataires']){
-               $destinataires = _request($options['champ_destinataires']);
-               if (!is_array($destinataires) and intval($destinataires)){
-                       $destinataires = array($destinataires);
-               }
-               if (is_array($destinataires)){
-                       // On récupère les mails des destinataires
-                       $destinataires = array_map('intval', $destinataires);
-                       $destinataires = sql_allfetsel(
-                               'email',
-                               'spip_auteurs',
-                               sql_in('id_auteur', $destinataires)
-                       );
-                       $destinataires = array_map('reset', $destinataires);
-               }
-       }
-       if (!$destinataires)
-               $destinataires = array();
-       if ($options['champ_courriel_destinataire_form']) {
-               $courriel_champ_form = _request($options['champ_courriel_destinataire_form']);
-               $destinataires[] = $courriel_champ_form;
-       }
-       
-
-       // On ajoute les destinataires en plus
-       if ($options['destinataires_plus']){
-               $destinataires_plus = explode(',', $options['destinataires_plus']);
-               $destinataires_plus = array_map('trim', $destinataires_plus);
-               $destinataires = array_merge($destinataires, $destinataires_plus);
-               $destinataires = array_unique($destinataires);
-       }
-       
-       // On récupère le courriel de l'envoyeur s'il existe
-       if ($options['champ_courriel']){
-               $courriel_envoyeur = _request($options['champ_courriel']);
-       }
-       if (!$courriel_envoyeur) $courriel_envoyeur = '';
-       
-       // Si on a bien des destinataires, on peut continuer
-       if ($destinataires or ($courriel_envoyeur and $options['activer_accuse'])){
-               include_spip('inc/filtres');
-               include_spip('inc/texte');
-               
-               $nom_site_spip = supprimer_tags(typo($GLOBALS['meta']['nom_site']));
-               
-               // On parcourt les champs pour générer le tableau des valeurs
-               $valeurs = array();
-               foreach ($champs as $champ){
-                       $valeurs[$champ] = _request($champ);
-               }
-               
-               // On récupère le nom de l'envoyeur
-               if ($options['champ_nom']){
-                       $a_remplacer = array();
-                       if (preg_match_all('/@[\w]+@/', $options['champ_nom'], $a_remplacer)){
-                               $a_remplacer = $a_remplacer[0];
-                               foreach ($a_remplacer as $cle=>$val) $a_remplacer[$cle] = trim($val, '@');
-                               $a_remplacer = array_flip($a_remplacer);
-                               $a_remplacer = array_intersect_key($valeurs, $a_remplacer);
-                               $a_remplacer = array_merge($a_remplacer, array('nom_site_spip' => $nom_site_spip));
-                       }
-                       $nom_envoyeur = trim(_L($options['champ_nom'], $a_remplacer));
-               }
-               if (!$nom_envoyeur) $nom_envoyeur = $nom_site_spip;
-               
-               // On récupère le sujet s'il existe sinon on le construit
-               if ($options['champ_sujet']){
-                       $a_remplacer = array();
-                       if (preg_match_all('/@[\w]+@/', $options['champ_sujet'], $a_remplacer)){
-                               $a_remplacer = $a_remplacer[0];
-                               foreach ($a_remplacer as $cle=>$val) $a_remplacer[$cle] = trim($val, '@');
-                               $a_remplacer = array_flip($a_remplacer);
-                               $a_remplacer = array_intersect_key($valeurs, $a_remplacer);
-                               $a_remplacer = array_merge($a_remplacer, array('nom_site_spip' => $nom_site_spip));
-                       }
-                       $sujet = trim(_L($options['champ_sujet'], $a_remplacer));
-               }
-               if (!$sujet) $sujet = _T('formidable:traiter_email_sujet', array('nom'=>$nom_envoyeur));
-               $sujet = filtrer_entites($sujet);
-               
-               // Mais quel va donc être le fond ?
-               if (find_in_path('notifications/formulaire_'.$formulaire['identifiant'].'_email.html'))
-                       $notification = 'notifications/formulaire_'.$formulaire['identifiant'].'_email';
-               else
-                       $notification = 'notifications/formulaire_email';
-               
-               // On génère le mail avec le fond
-               $html = recuperer_fond(
-                       $notification,
-                       array(
-                               'id_formulaire' => $formulaire['id_formulaire'],
-                               'titre' => _T_ou_typo($formulaire['titre']),
-                               'traitements' => $traitements,
-                               'saisies' => $saisies,
-                               'valeurs' => $valeurs
-                       )
-               );
-               
-               // On génère le texte brut
-               include_spip('facteur_fonctions');
-               $texte = facteur_mail_html2text($html);
-               
-               // On utilise la forme avancé de Facteur
-               $corps = array(
-                       'html' => $html,
-                       'texte' => $texte,
-                       'nom_envoyeur' => filtrer_entites($nom_envoyeur),
-               );
-               // Si l'utilisateur n'a pas indiqué autrement, on met le courriel de l'envoyeur dans
-               // Reply-To et on laisse le from par defaut de Facteur car sinon ca bloque sur les
-               // SMTP un peu restrictifs.
-               $courriel_from = "";
-               if ($courriel_envoyeur && $options['activer_vrai_envoyeur']){
-                       $courriel_from = $courriel_envoyeur;
-               } else if ($courriel_envoyeur) {
-                       $corps['repondre_a'] = $courriel_envoyeur;
-               }
-               
-               // On envoie enfin le message
-               $envoyer_mail = charger_fonction('envoyer_mail','inc');
-               
-               // On envoie aux destinataires
-               if ($destinataires)
-                       $ok = $envoyer_mail($destinataires, $sujet, $corps, $courriel_from, "X-Originating-IP: ".$GLOBALS['ip']);
-               
-               // Si c'est bon, on envoie l'accusé de réception
-               if ($ok and $courriel_envoyeur and $options['activer_accuse']){
-                       // On récupère le sujet s'il existe sinon on le construit
-                       if ($options['sujet_accuse']){
-                               $a_remplacer = array();
-                               if (preg_match_all('/@[\w]+@/', $options['sujet_accuse'], $a_remplacer)){
-                                       $a_remplacer = $a_remplacer[0];
-                                       foreach ($a_remplacer as $cle=>$val) $a_remplacer[$cle] = trim($val, '@');
-                                       $a_remplacer = array_flip($a_remplacer);
-                                       $a_remplacer = array_intersect_key($valeurs, $a_remplacer);
-                                       $a_remplacer = array_merge($a_remplacer, array('nom_site_spip' => $nom_site_spip));
-                               }
-                               $sujet_accuse = trim(_L($options['sujet_accuse'], $a_remplacer));
-                       }
-                       if (!$sujet_accuse) $sujet_accuse = _T('formidable:traiter_email_sujet_accuse');
-                       $sujet_accuse = filtrer_entites($sujet_accuse);
-                       
-                       // Mais quel va donc être le fond ?
-                       if (find_in_path('notifications/formulaire_'.$formulaire['identifiant'].'_accuse.html'))
-                               $accuse = 'notifications/formulaire_'.$formulaire['identifiant'].'_accuse';
-                       else
-                               $accuse = 'notifications/formulaire_accuse';
-                               
-                       // On génère l'accusé de réception
-                       $html_accuse = recuperer_fond(
-                               $accuse,
-                               array(
-                                       'id_formulaire' => $formulaire['id_formulaire'],
-                                       'titre' => _T_ou_typo($formulaire['titre']),
-                                       'message_retour' => $formulaire['message_retour'],
-                                       'traitements' => $traitements,
-                                       'saisies' => $saisies,
-                                       'valeurs' => $valeurs
-                               )
-                       );
-                       
-                       // On génère le texte brut
-                       $texte = facteur_mail_html2text($html_accuse);
-                       
-                       $corps = array(
-                               'html' => $html_accuse,
-                               'texte' => $texte,
-                               'nom_envoyeur' => filtrer_entites($nom_site_spip),
-                       );
-
-                       $ok = $envoyer_mail($courriel_envoyeur, $sujet_accuse, $corps, $courriel_from, "X-Originating-IP: ".$GLOBALS['ip']);
-               }
-               
-               if ($ok){
-                       $retours['message_ok'] .= "\n"._T('formidable:traiter_email_message_ok');
-               }
-               else{
-                       $retours['message_erreur'] .= "\n"._T('formidable:traiter_email_message_erreur');
-               }
-       }
-       
-       return $retours;
-}
-
-?>
diff --git a/www/plugins/formidable_1_0/traiter/email.yaml b/www/plugins/formidable_1_0/traiter/email.yaml
deleted file mode 100644 (file)
index d2510ac..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-
-titre: '<:formidable:traiter_email_titre:>'
-description: '<:formidable:traiter_email_description:>'
-options:
-  -
-    saisie: 'champ'
-    options:
-      nom: 'champ_destinataires'
-      label: '<:formidable:traiter_email_option_destinataires_label:>'
-      explication: '<:formidable:traiter_email_option_destinataires_explication:>'
-      forcer_type: [destinataires,hidden]
-      env: true
-  -
-    saisie: 'champ'
-    options:
-      nom: 'champ_courriel_destinataire_form'
-      label: '<:formidable:traiter_email_option_destinataires_champ_form_label:>'
-      explication: '<:formidable:traiter_email_option_destinataires_champ_form_explication:>'
-      env: true
-  -
-    saisie: 'input'
-    options:
-      nom: 'destinataires_plus'
-      label: '<:formidable:traiter_email_option_destinataires_plus_label:>'
-      explication: '<:formidable:traiter_email_option_destinataires_plus_explication:>'
-    verifier:
-      type: 'email'
-  -
-    saisie: 'champ'
-    options:
-      nom: 'champ_courriel'
-      label: '<:formidable:traiter_email_option_envoyeur_courriel_label:>'
-      explication: '<:formidable:traiter_email_option_envoyeur_courriel_explication:>'
-      env: true
-  -
-    saisie: 'case'
-    options:
-      nom: 'activer_vrai_envoyeur'
-      label: '<:formidable:traiter_email_option_vrai_envoyeur_label:>'
-      explication: '<:formidable:traiter_email_option_vrai_envoyeur_explication:>'
-  -
-    saisie: 'input'
-    options:
-      nom: 'champ_nom'
-      label: '<:formidable:traiter_email_option_envoyeur_nom_label:>'
-      explication: '<:formidable:traiter_email_option_envoyeur_nom_explication:>'
-  -
-    saisie: 'input'
-    options:
-      nom: 'champ_sujet'
-      label: '<:formidable:traiter_email_option_sujet_label:>'
-      explication: '<:formidable:traiter_email_option_sujet_explication:>'
-  -
-    saisie: 'case'
-    options:
-      nom: 'activer_accuse'
-      label: '<:formidable:traiter_email_option_activer_accuse_label:>'
-      label_case: '<:formidable:traiter_email_option_activer_accuse_label_case:>'
-  -
-    saisie: 'input'
-    options:
-      nom: 'sujet_accuse'
-      label: '<:formidable:traiter_email_option_sujet_accuse_label:>'
-      explication: '<:formidable:traiter_email_option_sujet_explication:>'
diff --git a/www/plugins/formidable_1_0/traiter/enregistrement.php b/www/plugins/formidable_1_0/traiter/enregistrement.php
deleted file mode 100644 (file)
index 6496789..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-<?php
-
-// Sécurité
-if (!defined("_ECRIRE_INC_VERSION")) return;
-
-function traiter_enregistrement_dist($args, $retours){
-    include_spip('inc/formidable');
-    include_spip('base/abstract_sql');
-    $options = $args['options'];
-    $formulaire = $args['formulaire'];
-    $id_formulaire = intval($formulaire['id_formulaire']);
-    $saisies = unserialize($formulaire['saisies']);
-    $saisies = saisies_lister_par_nom($saisies);
-
-    // La personne a-t-elle un compte ?
-    global $auteur_session;
-    $id_auteur = $auteur_session ? intval($auteur_session['id_auteur']) : 0;
-
-    // traitement de l'anonymisation
-    if ($options['anonymiser'] == 'on') {
-        // mod de l'id_auteur
-        $variables_anonymisation =
-            $GLOBALS['formulaires']['variables_anonymisation'][$options['anonymiser_variable']];
-        $id = eval("return $variables_anonymisation;");
-        $id_auteur = formidable_scramble($id);
-    }
-    // On cherche le cookie et sinon on le crée
-    $nom_cookie = formidable_generer_nom_cookie($id_formulaire);
-    if (isset($_COOKIE[$nom_cookie]))
-        $cookie = $_COOKIE[$nom_cookie];
-    else {
-        include_spip("inc/acces");
-        $cookie = creer_uniqid();
-    }
-
-    // On regarde si c'est une modif d'une réponse existante
-    $id_formulaires_reponse = intval(_request('deja_enregistre_'.$id_formulaire));
-
-    // Si la moderation est a posteriori ou que la personne est un boss, on publie direct
-    if ($options['moderation'] == 'posteriori' or autoriser('instituer', 'formulaires_reponse', $id_formulaires_reponse, null, array('id_formulaire'=>$id_formulaire, 'nouveau_statut'=>'publie')))
-        $statut='publie';
-    else
-        $statut = 'prop';
-
-    // Si ce n'est pas une modif d'une réponse existante, on crée d'abord la réponse
-    if (!$id_formulaires_reponse){
-        $id_formulaires_reponse = sql_insertq(
-            'spip_formulaires_reponses',
-            array(
-                'id_formulaire' => $id_formulaire,
-                'id_auteur' => $id_auteur,
-                'cookie' => $cookie,
-                'ip' => $args['options']['ip'] == 'on' ? $GLOBALS['ip'] : '',
-                'date' => 'NOW()',
-                'statut' => $statut
-            )
-        );
-        // Si on a pas le droit de répondre plusieurs fois ou que les réponses seront modifiables, il faut poser un cookie
-        if (!$options['multiple'] or $options['modifiable']){
-            include_spip("inc/cookie");
-            // Expiration dans 30 jours
-            spip_setcookie($nom_cookie, $_COOKIE[$nom_cookie] = $cookie, time() + 30 * 24 * 3600);
-        }
-    }
-
-    // Si l'id n'a pas été créé correctement alors erreur
-    if (!($id_formulaires_reponse > 0)){
-        $retours['message_erreur'] .= "\n<br/>"._T('formidable:traiter_enregistrement_erreur_base');
-    }
-    // Sinon on continue à mettre à jour
-    else{
-        $champs = array();
-        $insertions = array();
-        foreach($saisies as $nom => $saisie){
-            // On ne prend que les champs qui ont effectivement été envoyés par le formulaire
-            if (($valeur = _request($nom)) !== null){
-                $champs[] = $nom;
-                $insertions[] = array(
-                    'id_formulaires_reponse' => $id_formulaires_reponse,
-                    'nom' => $nom,
-                    'valeur' => is_array($valeur) ? serialize($valeur) : $valeur
-                );
-            }
-        }
-
-        // S'il y a bien des choses à modifier
-        if ($champs){
-            // On supprime d'abord les champs
-            sql_delete(
-                'spip_formulaires_reponses_champs',
-                array(
-                    'id_formulaires_reponse = '.$id_formulaires_reponse,
-                    sql_in('nom', $champs)
-                )
-            );
-
-            // Puis on insère les nouvelles valeurs
-            sql_insertq_multi(
-                'spip_formulaires_reponses_champs',
-                $insertions
-            );
-        }
-        $retours['message_ok'] .= "\n"._T('formidable:traiter_enregistrement_message_ok');
-    }
-    return $retours;
-}
-
-function traiter_enregistrement_update_dist($id_formulaire, $traitement, $saisies_anciennes, $saisies_nouvelles){
-    include_spip('inc/saisies');
-    include_spip('base/abstract_sql');
-    $comparaison = saisies_comparer($saisies_anciennes, $saisies_nouvelles);
-
-    // Si des champs ont été supprimés, il faut supprimer les réponses à ces champs
-    if ($comparaison['supprimees']){
-        // On récupère les réponses du formulaire
-        $reponses = sql_allfetsel(
-            'id_formulaires_reponse',
-            'spip_formulaires_reponses',
-            'id_formulaire = '.$id_formulaire
-        );
-        $reponses = array_map('reset', $reponses);
-
-        // Tous les noms de champs à supprimer
-        $noms = array_keys($comparaison['supprimees']);
-
-        // On supprime
-        sql_delete(
-            'spip_formulaires_reponses_champs',
-            array(
-                sql_in('id_formulaires_reponse', $reponses),
-                sql_in('nom', $noms)
-            )
-        );
-    }
-}
-
-?>
diff --git a/www/plugins/formidable_1_0/traiter/enregistrement.yaml b/www/plugins/formidable_1_0/traiter/enregistrement.yaml
deleted file mode 100644 (file)
index 4cbf1c1..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-
-titre: '<:formidable:traiter_enregistrement_titre:>'
-description: '<:formidable:traiter_enregistrement_description:>'
-options:
-  -
-    saisie: 'oui_non'
-    options:
-      nom: 'multiple'
-      label: '<:formidable:traiter_enregistrement_option_multiple_label:>'
-      explication: '<:formidable:traiter_enregistrement_option_multiple_explication:>'
-      defaut: 'on'
-  -
-    saisie: 'oui_non'
-    options:
-      nom: 'modifiable'
-      label: '<:formidable:traiter_enregistrement_option_modifiable_label:>'
-      explication: '<:formidable:traiter_enregistrement_option_modifiable_explication:>'
-      defaut: ''
-  -
-    saisie: 'radio'
-    options:
-      nom: 'identification'
-      label: '<:formidable:traiter_enregistrement_option_identification_label:>'
-      explication: '<:formidable:traiter_enregistrement_option_identification_explication:>'
-      datas:
-        cookie: '<:formidable:identification_par_cookie:>'
-        id_auteur: '<:formidable:identification_par_id_auteur:>'
-      defaut: 'cookie'
-  -
-    saisie: 'oui_non'
-    options:
-      nom: 'anonymiser'
-      label: '<:formidable:traiter_enregistrement_option_anonymiser_label:>'
-      explication: '<:formidable:traiter_enregistrement_option_anonymiser_explication:>'
-      defaut: ''
-  -
-    saisie: 'selection'
-    options:
-      option_intro: '<:formidable:traiter_enregistrement_option_choix_select_label:>'
-      nom: 'anonymiser_variable'
-      label: '<:formidable:traiter_enregistrement_option_anonymiser_variable_label:>'
-      explication: '<:formidable:traiter_enregistrement_option_anonymiser_variable_explication:>'
-      datas:
-        remote_user: "Variable serveur : REMOTE_USER"
-        php_auth_user: "Variable serveur : PHP_AUTH_USER"
-      defaut: ''
-  -
-    saisie: 'oui_non'
-    options:
-      nom: 'ip'
-      label: '<:formidable:traiter_enregistrement_option_ip_label:>'
-      defaut: 'on'
-  -
-    saisie: 'radio'
-    options:
-      nom: 'moderation'
-      label: '<:formidable:traiter_enregistrement_option_moderation_label:>'
-      datas:
-        posteriori: '<:forum:bouton_radio_modere_posteriori:>'
-        priori: '<:forum:bouton_radio_modere_priori:>'
-      defaut: 'posteriori'
-  -
-    saisie: 'textarea'
-    options:
-      nom: 'analyse_exclure_champs'
-      label: '<:formidable:analyse_exclure_champs_label:>'
-      explication: '<:formidable:analyse_exclure_champs_explication:>'
-      rows: 4
\ No newline at end of file
index 81ac857..56be191 100644 (file)
@@ -16,7 +16,7 @@ function balise_MENUS_AFFICHER_ENTREE_dist($p) {
        
        $p->code =  "(!$id_menus_entree) ? _T('zbug_champ_hors_motif', array('champ'=>'AFFICHER_ENTREE', 'motif'=>'MENUS_ENTREES')) : recuperer_fond(
                'menus/'.$type_entree,
-               array_merge(unserialize($parametres), array($contexte=>true, env=>\$Pile[0]))
+               array_merge(unserialize($parametres), array($contexte=>true, 'env'=>\$Pile[0]))
        )";
        
        return $p;
index 7c82054..1404265 100644 (file)
@@ -24,7 +24,7 @@ function formulaires_configurer_menus_saisies_dist(){
                        'saisie' => 'checkbox',
                        'options' => array(
                                'nom' => 'entrees_masquees',
-                               'explication' => 'Cochez les entrées que vous voulez <strong>masquer</strong> lors de la création d\'un menu.',
+                               'explication' => _T('menus:configurer_entrees_masquees_explication'),
                                'datas' => $data,
                                'li_class' => 'pleine_largeur',
                                'defaut' => lire_config('menus/entrees_masquees',array())
index 47c755f..af0b15c 100644 (file)
@@ -2,17 +2,17 @@
 <BOUCLE_menu(MENUS){id_menu?}{identifiant?}>
        
        <B_entrees>
-       <ul class="menu-liste menu-items nav[ (#CHAMP_SQL{css})]">
-               <BOUCLE_entrees(MENUS_ENTREES){id_menu}{par rang}>
-               #MENUS_AFFICHER_ENTREE
-                       <BOUCLE_sous_menu(MENUS){id_menus_entree}>
+       <ul class="menu-liste menu-items[ (#ENV{class})][(#VAL{_MENUS_EXTRA_CLASS}|defined|oui)[(#VAL{_MENUS_EXTRA_CLASS}|constant)]][ (#CHAMP_SQL{css})]">
+               <BOUCLE_entrees(MENUS_ENTREES){id_menu}{par rang}>#SET{entree,''}
+               [(#MENUS_AFFICHER_ENTREE)#SET{entree,' '}
+                       ]<BOUCLE_sous_menu(MENUS){id_menus_entree}>
                                #INCLURE{fond=inclure/menu, env, id_menu, identifiant}
                        </BOUCLE_sous_menu>
                [(#REM)
                        On ferme le li si le type d'entrée accepte des sous-menus
                        et si on a bien quelque chose dans le li (cas des menus sur Balise SESSION)
-               ][(#TYPE_ENTREE|menus_type_refuser_sous_menu|non)
-                       [(#MENUS_AFFICHER_ENTREE|trim|oui)</li>]
+               ][(#GET{entree}|et{#TYPE_ENTREE|menus_type_refuser_sous_menu|non})
+                       </li>
                ]
                </BOUCLE_entrees>
        </ul>
index a497978..94ca237 100644 (file)
@@ -1,28 +1,40 @@
 <traduction module="menus" gestionnaire="salvatore" url="http://trad.spip.net" source="svn://zone.spip.org/spip-zone/_plugins_/menus/trunk/lang/" reference="fr">
-       <langue code="ar" url="http://trad.spip.net/tradlang_module/menus?lang_cible=ar">
+       <langue code="ar" url="http://trad.spip.net/tradlang_module/menus?lang_cible=ar" total="145" traduits="76" relire="0" modifs="0" nouveaux="69" pourcent="52.41">
                <traducteur nom="George" lien="http://trad.spip.net/auteur/جورج-قندلفت" />
        </langue>
-       <langue code="ca" />
-       <langue code="de" url="http://trad.spip.net/tradlang_module/menus?lang_cible=de">
+       <langue code="ca" url="http://trad.spip.net/tradlang_module/menus?lang_cible=ca" total="145" traduits="81" relire="0" modifs="2" nouveaux="62" pourcent="55.86">
+       </langue>
+       <langue code="de" url="http://trad.spip.net/tradlang_module/menus?lang_cible=de" total="145" traduits="139" relire="0" modifs="2" nouveaux="4" pourcent="95.86">
                <traducteur nom="klaus++" lien="http://trad.spip.net/auteur/klaus" />
        </langue>
-       <langue code="en" url="http://trad.spip.net/tradlang_module/menus?lang_cible=en">
+       <langue code="en" url="http://trad.spip.net/tradlang_module/menus?lang_cible=en" total="145" traduits="145" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Hanjo" lien="http://trad.spip.net/auteur/hanjo" />
                <traducteur nom="kent1" lien="" />
                <traducteur nom="Mark" lien="http://trad.spip.net/auteur/mark" />
                <traducteur nom="RastaPopoulos" lien="" />
                <traducteur nom="Suske" lien="http://trad.spip.net/auteur/suske" />
        </langue>
-       <langue code="es" url="http://trad.spip.net/tradlang_module/menus?lang_cible=es">
+       <langue code="es" url="http://trad.spip.net/tradlang_module/menus?lang_cible=es" total="145" traduits="141" relire="0" modifs="2" nouveaux="2" pourcent="97.24">
                <traducteur nom="dani" lien="http://trad.spip.net/auteur/dani" />
-               <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel" />
+               <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel-s-bujaldon" />
                <traducteur nom="tin" lien="http://trad.spip.net/auteur/tin" />
        </langue>
-       <langue code="fa" url="http://trad.spip.net/tradlang_module/menus?lang_cible=fa">
+       <langue code="fa" url="http://trad.spip.net/tradlang_module/menus?lang_cible=fa" total="145" traduits="136" relire="0" modifs="3" nouveaux="6" pourcent="93.79">
                <traducteur nom="Davood Hossein" lien="http://trad.spip.net/auteur/davood-hossein" />
        </langue>
-       <langue code="fr" />
-       <langue code="it" />
-       <langue code="sk" url="http://trad.spip.net/tradlang_module/menus?lang_cible=sk">
+       <langue code="fr" url="http://trad.spip.net/tradlang_module/menus?lang_cible=fr" total="145" traduits="145" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+       </langue>
+       <langue code="it" url="http://trad.spip.net/tradlang_module/menus?lang_cible=it" total="145" traduits="81" relire="0" modifs="2" nouveaux="62" pourcent="55.86">
+       </langue>
+       <langue code="nl" url="http://trad.spip.net/tradlang_module/menus?lang_cible=nl" total="145" traduits="145" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Hanjo" lien="http://trad.spip.net/auteur/hanjo" />
+               <traducteur nom="mpossoz" lien="http://trad.spip.net/auteur/mpossoz" />
+               <traducteur nom="Suske" lien="http://trad.spip.net/auteur/suske" />
+       </langue>
+       <langue code="ru" url="http://trad.spip.net/tradlang_module/menus?lang_cible=ru" total="145" traduits="46" relire="0" modifs="1" nouveaux="98" pourcent="31.72">
+               <traducteur nom="Serge Markitanenko" lien="http://trad.spip.net/auteur/serge-markitanenko" />
+       </langue>
+       <langue code="sk" url="http://trad.spip.net/tradlang_module/menus?lang_cible=sk" total="145" traduits="141" relire="0" modifs="2" nouveaux="2" pourcent="97.24">
                <traducteur nom="jaro" lien="http://trad.spip.net/auteur/jaro" />
        </langue>
 </traduction>
index c278df2..331959b 100644 (file)
@@ -14,18 +14,6 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'description_menu_accueil' => 'رابط الى الصفحة الأساسية في الموقع.',
        'description_menu_articles_rubrique' => 'عرض لائحة المقالات في قسم.',
        'description_menu_deconnecter' => 'اذا كان هناك زائر متصل، يضيف بنداً يعرض عليه الخروج.',
-       'description_menu_espace_prive' => 'Lien permettant de se connecter au site si on ne l\'est pas déjà, puis d\'aller dans l\'espace privé si l\'on y est autorisé.', # NEW
-       'description_menu_groupes_mots' => 'Affiche automatiquement un menu listant les mots du groupe et les articles liés. Par défaut, affiche la liste des groupes de mots et les mots liés. Si un squelette groupes_mots.html existe, le lien vers le groupe est utilisé.', # NEW
-       'description_menu_lien' => 'Ajoute un lien arbitraire, en interne (URL relative) ou externe (http://...).', # NEW
-       'description_menu_mapage' => 'Si le visiteur est connecté, ajoute un lien vers sa page auteur.', # NEW
-       'description_menu_mots' => 'Affiche automatiquement un menu listant les articles liés au mot clé.', # NEW
-       'description_menu_objet' => 'Crée un lien vers un objet de SPIP : article, rubrique ou autre. Par défaut, l\'entrée aura le titre de l\'objet.', # NEW
-       'description_menu_page_speciale' => 'Ajoute un lien vers un squelette page accessible par une url du type <code>spip.php?page=nom&param1=xx&param2=yyy...</code> Ces pages sont souvent fournies par des plugins.', # NEW
-       'description_menu_page_speciale_zajax' => 'Ajoute un lien vers un bloc d\'une page accessible par une url du type <code>spip.php?page=nom&param1=xx&param2=yyy...</code> Ceci nécéssite une squelette de type Z et le plugin <a href="http://www.spip-contrib.net/MediaBox">médiabox</a>.', # NEW
-       'description_menu_rubriques_articles' => 'Affiche une liste de rubriques et, si on veut, les sous-rubriques et les articles sur plusieurs niveaux. Par défaut, affiche toutes les rubriques depuis la racine, triées par titre (numériquement puis alphabétiquement). Les articles sont placés systématiquement après les rubriques.', # NEW
-       'description_menu_rubriques_completes' => 'Affiche une liste de rubriques et, si on veut, les sous-rubriques sur plusieurs niveaux. Par défaut, affiche toutes les rubriques depuis la racine, triées par titre (numériquement puis alphabétiquement).', # NEW
-       'description_menu_secteurlangue' => 'Cette entrée est spécifique aux sites utilisant un secteur par langue. Elle affiche automatiquement un menu listant les rubriques du secteur correspondant à la langue de la page et, si on veut, les sous-rubriques sur plusieurs niveaux. Par défaut, affiche toutes les rubriques depuis la racine, triées par titre (numériquement puis alphabétiquement).', # NEW
-       'description_menu_texte_libre' => 'Simplement le texte que vous souhaitez, ou un code de langue SPIP (<:...:>)', # NEW
 
        // E
        'editer_menus_editer' => 'تعديل هذه القائمة',
@@ -33,35 +21,20 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'editer_menus_exporter' => 'نقل هذه القائمة',
        'editer_menus_nouveau' => 'إنشاء قائمة جديدة',
        'editer_menus_titre' => 'قوائم الموقع',
-       'entree_afficher_articles' => 'Inclure les articles dans le menu ? (mettre "oui" pour cela)', # NEW
-       'entree_afficher_item_suite' => 'Inclure les articles dans le menu ? (mettre "oui" pour cela)', # NEW
-       'entree_articles_max' => 'Si oui, afficher les articles seulement si la rubrique contient au maximum xx articles ? (mettre le nombre maximum d\'articles, laissez vide pour afficher tous les articles)', # NEW
-       'entree_articles_max_affiches' => 'Si oui, limiter le nombre d\'articles listés à xx maximum (suivis d\'un item "... Tous les articles" comportant un lien vers la rubrique parente) ? (indiquer le nombre maximum d\'articles, laissez vide pour afficher tous les articles)', # NEW
        'entree_aucun' => 'بدون',
        'entree_bloc' => 'كتلة Zpip',
        'entree_choisir' => 'اختر نوع البند الذي تريد إضافته:',
-       'entree_classe_parent' => 'Classe des liens des éléments parents. Cette classe sera rajoutée aux li>a ayant une suite ul/li. Par exemple, si vous saisissez "daddy", cela vous permet d\'utiliser le plugin menu deroulant 2 pour la mise en forme du menu.', # NEW
-       'entree_connexion_objet' => 'Obliger à être connecté (mettre "session") ou déconnecté (mettre "nosession") pour voir l\'objet', # NEW
        'entree_contenu' => 'المحتوى',
-       'entree_css' => 'Classes CSS de l\'entrée (du conteneur)', # NEW
-       'entree_css_lien' => 'Classes CSS du lien', # NEW
        'entree_id_groupe' => 'رقم مجموعة المفاتيح',
        'entree_id_mot' => 'رقم المفتاح',
        'entree_id_objet' => 'رقم',
        'entree_id_rubrique' => 'رقم القسم الحاوي',
-       'entree_id_rubrique_ou_courante' => 'Numéro de la rubrique parente ou "courante" si la rubrique parente est la rubrique courante du contexte', # NEW
-       'entree_id_rubriques_exclues' => 'Numéros des rubriques à exclure, séparés par des virgules', # NEW
-       'entree_id_secteur_exclus' => 'Numéros des secteurs à exclure, séparés par des virgules', # NEW
        'entree_infini' => 'الى ما لا نهاية',
        'entree_mapage' => 'صفحتي الشخصية',
-       'entree_masquer_articles_uniques' => 'Si oui et si une rubrique contient un seul article, le masquer ? (mettre "oui" pour cela)', # NEW
        'entree_niveau' => 'مستوى القوائم الفرعية',
        'entree_nombre_articles' => 'العدد الأقصى للمقالات (صفر افتراضياً)',
        'entree_page' => 'اسم الصفحة',
        'entree_parametres' => 'لائحة المتغيرات',
-       'entree_rubriques_max_affichees' => 'Si oui, limiter le nombre de rubriques listés à xx maximum (suivis d\'un item "... Toutes les rubriques" comportant un lien vers la rubrique parente) ? (indiquer le nombre maximum de rubriques, laissez vide pour afficher toutes les rubriques)', # NEW
-       'entree_sousrub_cond' => 'N\'afficher que les sous-rubriques de la rubrique en cours (mettre "oui", sinon laisser vide)', # NEW
-       'entree_suivant_connexion' => 'Restreindre cette entrée suivant la connexion (mettre "connecte" pour afficher seulement si le visiteur est connecté, "deconnecte" pour le cas contraire, ou laisser vide pour toujours afficher)', # NEW
        'entree_suivant_connexion_connecte' => 'اذا متصل فقط',
        'entree_suivant_connexion_deconnecte' => 'اذا غير متصل فقط',
        'entree_sur_n_articles' => '@n@ مقال معروض',
@@ -70,48 +43,25 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'entree_titre' => 'العنوان',
        'entree_titre_connecter' => 'العنوان للوصول الى استمارة التعريف',
        'entree_titre_prive' => 'العنوان للدخول الى المجال الخاص',
-       'entree_traduction_articles_rubriques' => 'Dans la mesure du possible, afficher les articles de la rubrique dans la langue du contexte (mettre "trad" pour cela)', # NEW
-       'entree_traduction_objet' => 'Dans le cas d\'un article, choisir la traduction en fonction du contexte (mettre "trad" pour cela)', # NEW
-       'entree_tri_alpha' => 'Critère de tri des rubriques (alphabétique). Si vous saisissez "date", le critère ajouté sera {par date} et les rubriques seront triées par date', # NEW
-       'entree_tri_alpha_articles' => 'Critère de tri des articles (alphabétique). Si vous saisissez "date", le critère ajouté sera {par date} et les articles seront triés par date', # NEW
-       'entree_tri_alpha_articles_inverse' => 'Inverser le critère de tri alphabétique ? (mettre "oui" pour cela)', # NEW
-       'entree_tri_alpha_inverse' => 'Inverser le critère de tri alphabétique ? (mettre "oui" pour cela)', # NEW
-       'entree_tri_num' => 'Critère de tri des rubriques (numérique). Si vous saisissez "titre", le critère ajouté sera {par num titre} et les rubriques seront triées par numéro de titre', # NEW
-       'entree_tri_num_articles' => 'Critère de tri des articles (numérique). Si vous saisissez "titre", le critère ajouté sera {par num titre} et les articles seront triés par numéro de titre', # NEW
-       'entree_tri_num_articles_inverse' => 'Inverser le critère de tri numérique ? (mettre "oui" pour cela)', # NEW
-       'entree_tri_num_inverse' => 'Inverser le critère de tri numérique ? (mettre "oui" pour cela)', # NEW
        'entree_type_objet' => 'نوع العنصر',
        'entree_url' => 'العنوان',
-       'entree_url_public' => 'Adresse de retour après la connexion', # NEW
        'erreur_aucun_type' => 'لم يتم العثور على اي نوع بنود.',
        'erreur_autorisation' => 'غير مسموح لك تعديل القوائم.',
-       'erreur_identifiant_deja' => 'Cet identifiant est déjà utilisé par un menu.', # NEW
-       'erreur_identifiant_forme' => 'L\'identifiant ne doit contenir que des lettres, des chiffres ou le caractère souligné.', # NEW
        'erreur_menu_inexistant' => 'لا وجود للقائمة رقم @id@ المطلوبة.',
-       'erreur_mise_a_jour' => 'Une erreur s\'est produite pendant la mise à jour de la base de donnée.', # NEW
-       'erreur_parametres' => 'Il y a une erreur dans les paramètres de la page', # NEW
        'erreur_type_menu' => 'يجب اختيار نوع قوائم',
-       'erreur_type_menu_inexistant' => 'Ce type de menu n\'est pas/plus disponible', # NEW
 
        // F
        'formulaire_ajouter_entree' => 'إضافة بند',
        'formulaire_ajouter_sous_menu' => 'إنشاء قائمة فرعية',
-       'formulaire_css' => 'Classes CSS', # NEW
-       'formulaire_css_explication' => 'Vous pouvez ajouter au menu d\'éventuelles classes CSS supplémentaires.', # NEW
        'formulaire_deplacer_bas' => 'نقل الى الأسفل',
        'formulaire_deplacer_haut' => 'نقل الى الأعلى',
        'formulaire_facultatif' => 'اختياري',
        'formulaire_identifiant' => 'المعرف',
-       'formulaire_identifiant_explication' => 'Donnez un mot-clé unique qui vous permettra d\'appeler votre menu facilement.', # NEW
-       'formulaire_ieconfig_choisir_menus_a_importer' => 'Choisissez quel(s) menu(s) vous souhaitez importer.', # NEW
        'formulaire_ieconfig_importer' => 'جلب',
-       'formulaire_ieconfig_menu_meme_identifiant' => 'ATTENTION : un menu avec le même identifiant existe déjà sur votre votre site !', # NEW
        'formulaire_ieconfig_menus_a_exporter' => 'قوائم للنقل:',
        'formulaire_ieconfig_ne_pas_importer' => 'عدم الجلب',
-       'formulaire_ieconfig_remplacer' => 'Remplacer le menu actuel par le menu importé', # NEW
        'formulaire_ieconfig_renommer' => 'إعادة تسمية هذه القائمة قبل جلبها',
        'formulaire_importer' => 'جلب قائمة',
-       'formulaire_importer_explication' => 'Si vous avez exporté un menu dans un fichier, vous pouvez l\'importer maintenant.', # NEW
        'formulaire_modifier_entree' => 'تعديل هذا البند',
        'formulaire_modifier_menu' => 'تعديل القائمة',
        'formulaire_nouveau' => 'قائمة جديدة',
@@ -123,46 +73,23 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'formulaire_titre' => 'العنوان',
 
        // I
-       'info_afficher_articles' => 'Les articles seront inclus dans le menu.', # NEW
-       'info_articles_max' => 'Seulement si la rubrique contient au plus @max@ articles', # NEW
-       'info_articles_max_affiches' => 'Affichage limité à @max@ articles', # NEW
-       'info_classe_parent' => 'Classe des éléments parents : ', # NEW
-       'info_connexion_obligatoire' => 'Connexion obligatoire', # NEW
-       'info_deconnexion_obligatoire' => 'Uniquement déconnecté', # NEW
-       'info_masquer_articles_uniques' => 'Articles uniques masqués', # NEW
        'info_numero_menu' => 'قائمة رقم:',
-       'info_page_speciale' => 'Lien vers la page « @page@ »', # NEW
-       'info_page_speciale_zajax' => 'Modalbox de la page « @page@ » pour le bloc « @bloc@ &#187', # NEW
        'info_rubrique_courante' => 'القسم الحالي',
-       'info_rubriques_exclues' => ' / sauf rubrique(s) @id_rubriques@', # NEW
-       'info_rubriques_max_affichees' => 'Affichage limité à @max@ rubriques', # NEW
-       'info_secteur_exclus' => ' / sauf secteur(s) @id_secteur@', # NEW
-       'info_sousrub_cond' => 'Seules les sous-rubriques de la rubriques en cours sont affichées.', # NEW
-       'info_tous_groupes_mots' => 'Tous les groupes de mots', # NEW
-       'info_traduction_recuperee' => 'Le contexte décidera de la traduction choisie', # NEW
        'info_tri' => 'فرز الأقسام:',
        'info_tri_alpha' => '(أبجدي)',
        'info_tri_articles' => 'فرز المقالات:',
        'info_tri_num' => '(رقمي)',
 
        // N
-       'noisette_description' => 'Insère un menu défini avec le plugin Menus.', # NEW
        'noisette_label_afficher_titre_menu' => 'عرض عنوان القائمة؟',
-       'noisette_label_identifiant' => 'Menu à afficher :', # NEW
        'noisette_nom_noisette' => 'القائمة',
-       'nom_menu_accueil' => 'Accueil', # NEW
        'nom_menu_articles_rubrique' => 'مقالات قسم',
        'nom_menu_deconnecter' => 'خروج',
-       'nom_menu_espace_prive' => 'Se connecter / lien vers espace privé', # NEW
-       'nom_menu_groupes_mots' => 'Mots-clés et Articles d\'un Groupes de mots', # NEW
        'nom_menu_lien' => 'رابط اعتباطي',
        'nom_menu_mapage' => 'صفحتي',
        'nom_menu_mots' => 'مقالات مفتاح',
        'nom_menu_objet' => 'مقال، قسم او أحد عناصر SPIP الأخرى ',
        'nom_menu_page_speciale' => 'رابط الى صفحة نموذجية',
-       'nom_menu_page_speciale_zajax' => 'Un bloc d\'une page Zpip', # NEW
-       'nom_menu_rubriques_completes' => 'Liste ou arborescence de rubriques et d\'articles (avec beaucoup d\'options)', # NEW
-       'nom_menu_rubriques_evenements' => 'Événements de rubriques', # NEW
        'nom_menu_secteurlangue' => 'أقسام اللغات',
        'nom_menu_texte_libre' => 'نص حرّ',
 
index 53f4403..ffc71c4 100644 (file)
@@ -7,25 +7,18 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
-       // C
-       'confirmer_supprimer_entree' => 'Voulez-vous vraiment supprimer cette entrée ?', # NEW
-
        // D
-       'description_menu_accueil' => 'Enllaç cap a la pàgina d\'inici del lloc.',
-       'description_menu_articles_rubrique' => 'Mostra la llista d\'articles d\'una secció.',
+       'description_menu_accueil' => 'Enllaç cap a la pàgina dinici del lloc.',
+       'description_menu_articles_rubrique' => 'Mostra la llista d’articles d’una secció.',
        'description_menu_deconnecter' => 'Si el visitant està connectat, afegeix una entrada proposant-li la desconnexió.',
-       'description_menu_espace_prive' => 'Enllaç que permet connectar-se al lloc, si encara no ho estem, i després anar a l\'espai privat sempre i quan estiguem autoritzats a fer-ho.',
-       'description_menu_groupes_mots' => 'Mostra automàticament un menú que llista les paraules del grup i els articles lligats. Per defecte, mostra la llista dels grups de paraules i les paraules lligades. Si un esquelet grups_paraules.html existeix, s\'utilitzarà l\'enllaç cap al grup.',
+       'description_menu_espace_prive' => 'Enllaç que permet connectar-se al lloc, si encara no ho estem, i després anar a lespai privat sempre i quan estiguem autoritzats a fer-ho.',
+       'description_menu_groupes_mots' => 'Mostra automàticament un menú que llista les paraules del grup i els articles lligats. Per defecte, mostra la llista dels grups de paraules i les paraules lligades. Si un esquelet grups_paraules.html existeix, s’utilitzarà l’enllaç cap al grup.',
        'description_menu_lien' => 'Afegeix un enllaç arbitrari, intern (URL relativa) o extern (http://...).',
-       'description_menu_mapage' => 'Si el visitant està connectat, afegeix un enllaç cap a la pàgina de l\'autor.',
+       'description_menu_mapage' => 'Si el visitant està connectat, afegeix un enllaç cap a la pàgina de lautor.',
        'description_menu_mots' => 'Mostra automàticament un menú que llista els articles lligats a la paraula clau.',
-       'description_menu_objet' => 'Crea un enllaç cap a un objecte d\'SPIP: article, secció o un altre. Per defecte, l\'entrada tindrà el títol de l\'objecte.',
+       'description_menu_objet' => 'Crea un enllaç cap a un objecte d’SPIP: article, secció o un altre. Per defecte, l’entrada tindrà el títol de l’objecte.',
        'description_menu_page_speciale' => 'Afegeix un enllaç cap a un esquelet accessible per un URL del tipus <code>spip.php?page=nom&param1=xx&param2=yyy...</code> Aquestes pàgines sovint són subministrades per connectors.',
-       'description_menu_page_speciale_zajax' => 'Ajoute un lien vers un bloc d\'une page accessible par une url du type <code>spip.php?page=nom&param1=xx&param2=yyy...</code> Ceci nécéssite une squelette de type Z et le plugin <a href="http://www.spip-contrib.net/MediaBox">médiabox</a>.', # NEW
-       'description_menu_rubriques_articles' => 'Affiche une liste de rubriques et, si on veut, les sous-rubriques et les articles sur plusieurs niveaux. Par défaut, affiche toutes les rubriques depuis la racine, triées par titre (numériquement puis alphabétiquement). Les articles sont placés systématiquement après les rubriques.', # NEW
-       'description_menu_rubriques_completes' => 'Affiche une liste de rubriques et, si on veut, les sous-rubriques sur plusieurs niveaux. Par défaut, affiche toutes les rubriques depuis la racine, triées par titre (numériquement puis alphabétiquement).', # NEW
-       'description_menu_secteurlangue' => 'Aquesta entrada és específica pels llocs que utilitzen un sector per llengua. Mostra automàticament un menú que llista les seccions del sector corresponent a la llengua de la pàgina i, si es vol, les subseccions a diferents nivells. Per defecte, mostra totes les seccions des de l\'arrel, ordenades per títol (numèricament i després alfabèticament).',
-       'description_menu_texte_libre' => 'Simplement le texte que vous souhaitez, ou un code de langue SPIP (<:...:>)', # NEW
+       'description_menu_secteurlangue' => 'Aquesta entrada és específica pels llocs que utilitzen un sector per llengua. Mostra automàticament un menú que llista les seccions del sector corresponent a la llengua de la pàgina i, si es vol, les subseccions a diferents nivells. Per defecte, mostra totes les seccions des de l’arrel, ordenades per títol (numèricament i després alfabèticament).',
 
        // E
        'editer_menus_editer' => 'Modificar aquest menú',
@@ -33,65 +26,35 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'editer_menus_exporter' => 'Exportar aquest menú',
        'editer_menus_nouveau' => 'Creeu un nou menú',
        'editer_menus_titre' => 'Menús del lloc',
-       'entree_afficher_articles' => 'Inclure les articles dans le menu ? (mettre "oui" pour cela)', # NEW
-       'entree_afficher_item_suite' => 'Inclure les articles dans le menu ? (mettre "oui" pour cela)', # NEW
-       'entree_articles_max' => 'Si oui, afficher les articles seulement si la rubrique contient au maximum xx articles ? (mettre le nombre maximum d\'articles, laissez vide pour afficher tous les articles)', # NEW
-       'entree_articles_max_affiches' => 'Si oui, limiter le nombre d\'articles listés à xx maximum (suivis d\'un item "... Tous les articles" comportant un lien vers la rubrique parente) ? (indiquer le nombre maximum d\'articles, laissez vide pour afficher tous les articles)', # NEW
        'entree_aucun' => 'Cap',
-       'entree_bloc' => 'Bloc Zpip', # NEW
-       'entree_choisir' => 'Escolliu el tipus d\'entrada que voleu afegir:',
-       'entree_classe_parent' => 'Classe des liens des éléments parents. Cette classe sera rajoutée aux li>a ayant une suite ul/li. Par exemple, si vous saisissez "daddy", cela vous permet d\'utiliser le plugin menu deroulant 2 pour la mise en forme du menu.', # NEW
-       'entree_connexion_objet' => 'Obliger à être connecté (mettre "session") ou déconnecté (mettre "nosession") pour voir l\'objet', # NEW
-       'entree_contenu' => 'Contenu', # NEW
-       'entree_css' => 'Classes CSS de l\'entrada', # MODIF
-       'entree_css_lien' => 'Classes CSS du lien', # NEW
+       'entree_choisir' => 'Escolliu el tipus d’entrada que voleu afegir:',
+       'entree_css' => 'Classes CSS de l’entrada', # MODIF
        'entree_id_groupe' => 'Número del grup de paraula clau',
        'entree_id_mot' => 'Número de la paraula clau',
        'entree_id_objet' => 'Número',
        'entree_id_rubrique' => 'Número de la secció pare',
-       'entree_id_rubrique_ou_courante' => 'Numéro de la rubrique parente ou "courante" si la rubrique parente est la rubrique courante du contexte', # NEW
-       'entree_id_rubriques_exclues' => 'Numéros des rubriques à exclure, séparés par des virgules', # NEW
-       'entree_id_secteur_exclus' => 'Numéros des secteurs à exclure, séparés par des virgules', # NEW
-       'entree_infini' => 'Fins l\'infinit',
+       'entree_infini' => 'Fins l’infinit',
        'entree_mapage' => 'La meva pàgina personal',
-       'entree_masquer_articles_uniques' => 'Si oui et si une rubrique contient un seul article, le masquer ? (mettre "oui" pour cela)', # NEW
        'entree_niveau' => 'Nivell de les subseccions',
-       'entree_nombre_articles' => 'Número d\'articles com a màxim (0 per defecte)',
+       'entree_nombre_articles' => 'Número darticles com a màxim (0 per defecte)',
        'entree_page' => 'Nom de la pàgina',
        'entree_parametres' => 'Llista dels paràmetres',
-       'entree_rubriques_max_affichees' => 'Si oui, limiter le nombre de rubriques listés à xx maximum (suivis d\'un item "... Toutes les rubriques" comportant un lien vers la rubrique parente) ? (indiquer le nombre maximum de rubriques, laissez vide pour afficher toutes les rubriques)', # NEW
-       'entree_sousrub_cond' => 'N\'afficher que les sous-rubriques de la rubrique en cours (mettre "oui", sinon laisser vide)', # NEW
-       'entree_suivant_connexion' => 'Restreindre cette entrée suivant la connexion (mettre "connecte" pour afficher seulement si le visiteur est connecté, "deconnecte" pour le cas contraire, ou laisser vide pour toujours afficher)', # NEW
-       'entree_suivant_connexion_connecte' => 'seulement si connecté', # NEW
-       'entree_suivant_connexion_deconnecte' => 'seulement si déconnecté', # NEW
        'entree_sur_n_articles' => '@n@ articles mostrat(s)',
        'entree_sur_n_mots' => '@n@ paraules mostrada(es)',
        'entree_sur_n_niveaux' => 'A @n@ nivell(s)',
        'entree_titre' => 'Títol',
-       'entree_titre_connecter' => 'Títol per l\'accés al formulari d\'identificació',
-       'entree_titre_prive' => 'Títol per accedir a l\'espai privat',
-       'entree_traduction_articles_rubriques' => 'Dans la mesure du possible, afficher les articles de la rubrique dans la langue du contexte (mettre "trad" pour cela)', # NEW
-       'entree_traduction_objet' => 'Dans le cas d\'un article, choisir la traduction en fonction du contexte (mettre "trad" pour cela)', # NEW
-       'entree_tri_alpha' => 'Criteri d\'ordenació (alfabètic)', # MODIF
-       'entree_tri_alpha_articles' => 'Critère de tri des articles (alphabétique). Si vous saisissez "date", le critère ajouté sera {par date} et les articles seront triés par date', # NEW
-       'entree_tri_alpha_articles_inverse' => 'Inverser le critère de tri alphabétique ? (mettre "oui" pour cela)', # NEW
-       'entree_tri_alpha_inverse' => 'Inverser le critère de tri alphabétique ? (mettre "oui" pour cela)', # NEW
-       'entree_tri_num' => 'Criteri d\'ordenació (numèric)', # MODIF
-       'entree_tri_num_articles' => 'Critère de tri des articles (numérique). Si vous saisissez "titre", le critère ajouté sera {par num titre} et les articles seront triés par numéro de titre', # NEW
-       'entree_tri_num_articles_inverse' => 'Inverser le critère de tri numérique ? (mettre "oui" pour cela)', # NEW
-       'entree_tri_num_inverse' => 'Inverser le critère de tri numérique ? (mettre "oui" pour cela)', # NEW
-       'entree_type_objet' => 'Tipus d\'objecte',
+       'entree_titre_connecter' => 'Títol per l’accés al formulari d’identificació',
+       'entree_titre_prive' => 'Títol per accedir a l’espai privat',
+       'entree_type_objet' => 'Tipus d’objecte',
        'entree_url' => 'Adreça',
-       'entree_url_public' => 'Adresse de retour après la connexion', # NEW
-       'erreur_aucun_type' => 'No s\'ha trobat cap entrada.',
+       'erreur_aucun_type' => 'No s’ha trobat cap entrada.',
        'erreur_autorisation' => 'No estàs autoritzat per modificar els menús.',
        'erreur_identifiant_deja' => 'Aquest identificador ja es utilitzat per un menú.',
-       'erreur_identifiant_forme' => 'L\'identificador només pot contenir lletres, xifres o el caràcter subratllat.',
+       'erreur_identifiant_forme' => 'Lidentificador només pot contenir lletres, xifres o el caràcter subratllat.',
        'erreur_menu_inexistant' => 'El menú demanat número @id@ no existeix.',
-       'erreur_mise_a_jour' => 'S\'ha produït un error durant l\'actualització de la base de dades .',
+       'erreur_mise_a_jour' => 'S’ha produït un error durant l’actualització de la base de dades .',
        'erreur_parametres' => 'Hi ha un error en els paràmetres de la pàgina',
-       'erreur_type_menu' => 'Has d\'escollir un tipus de menú',
-       'erreur_type_menu_inexistant' => 'Ce type de menu n\'est pas/plus disponible', # NEW
+       'erreur_type_menu' => 'Has d’escollir un tipus de menú',
 
        // F
        'formulaire_ajouter_entree' => 'Afegir una entrada',
@@ -103,15 +66,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'formulaire_facultatif' => 'Facultatiu',
        'formulaire_identifiant' => 'Identificador',
        'formulaire_identifiant_explication' => 'Doneu una paraula clau única que us permetrà cridar fàcilment el vostre menú.',
-       'formulaire_ieconfig_choisir_menus_a_importer' => 'Choisissez quel(s) menu(s) vous souhaitez importer.', # NEW
-       'formulaire_ieconfig_importer' => 'Importer', # NEW
-       'formulaire_ieconfig_menu_meme_identifiant' => 'ATTENTION : un menu avec le même identifiant existe déjà sur votre votre site !', # NEW
-       'formulaire_ieconfig_menus_a_exporter' => 'Menus à exporter :', # NEW
-       'formulaire_ieconfig_ne_pas_importer' => 'Ne pas importer', # NEW
-       'formulaire_ieconfig_remplacer' => 'Remplacer le menu actuel par le menu importé', # NEW
-       'formulaire_ieconfig_renommer' => 'Renommer ce menu avant import', # NEW
        'formulaire_importer' => 'Importar un menú',
-       'formulaire_importer_explication' => 'Si heu exportar un menú a dins d\'un fitxer, ara el podreu importar.',
+       'formulaire_importer_explication' => 'Si heu exportar un menú a dins dun fitxer, ara el podreu importar.',
        'formulaire_modifier_entree' => 'Modificar aquesta entrada',
        'formulaire_modifier_menu' => 'Modificar el menú:',
        'formulaire_nouveau' => 'Nou menú',
@@ -123,52 +79,26 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'formulaire_titre' => 'Títol',
 
        // I
-       'info_afficher_articles' => 'Les articles seront inclus dans le menu.', # NEW
-       'info_articles_max' => 'Seulement si la rubrique contient au plus @max@ articles', # NEW
-       'info_articles_max_affiches' => 'Affichage limité à @max@ articles', # NEW
-       'info_classe_parent' => 'Classe des éléments parents : ', # NEW
-       'info_connexion_obligatoire' => 'Connexion obligatoire', # NEW
-       'info_deconnexion_obligatoire' => 'Uniquement déconnecté', # NEW
-       'info_masquer_articles_uniques' => 'Articles uniques masqués', # NEW
        'info_numero_menu' => 'MENÚ NÚMERO:',
        'info_page_speciale' => 'Enllaç cap a la pàgina «@page@»',
-       'info_page_speciale_zajax' => 'Modalbox de la page « @page@ » pour le bloc « @bloc@ &#187', # NEW
-       'info_rubrique_courante' => 'Rubrique courante', # NEW
-       'info_rubriques_exclues' => ' / sauf rubrique(s) @id_rubriques@', # NEW
-       'info_rubriques_max_affichees' => 'Affichage limité à @max@ rubriques', # NEW
-       'info_secteur_exclus' => ' / sauf secteur(s) @id_secteur@', # NEW
-       'info_sousrub_cond' => 'Seules les sous-rubriques de la rubriques en cours sont affichées.', # NEW
        'info_tous_groupes_mots' => 'Tots els grups de paraules',
-       'info_traduction_recuperee' => 'Le contexte décidera de la traduction choisie', # NEW
        'info_tri' => 'Ordena:', # MODIF
        'info_tri_alpha' => '(alfabètica)',
-       'info_tri_articles' => 'Tri des articles :', # NEW
        'info_tri_num' => '(numèrica)',
 
        // N
-       'noisette_description' => 'Insère un menu défini avec le plugin Menus.', # NEW
-       'noisette_label_afficher_titre_menu' => 'Afficher le titre du menu ?', # NEW
-       'noisette_label_identifiant' => 'Menu à afficher :', # NEW
-       'noisette_nom_noisette' => 'Menu', # NEW
        'nom_menu_accueil' => 'Inici',
-       'nom_menu_articles_rubrique' => 'Articles d\'una secció',
+       'nom_menu_articles_rubrique' => 'Articles duna secció',
        'nom_menu_deconnecter' => 'Desconnectar-se',
-       'nom_menu_espace_prive' => 'Connectar-se / enllaç cap a l\'espai privat',
-       'nom_menu_groupes_mots' => 'Paraules clau i Articles d\'un Grup de paraules',
+       'nom_menu_espace_prive' => 'Connectar-se / enllaç cap a lespai privat',
+       'nom_menu_groupes_mots' => 'Paraules clau i Articles dun Grup de paraules',
        'nom_menu_lien' => 'Enllaç arbitrari',
        'nom_menu_mapage' => 'La meva pàgina',
-       'nom_menu_mots' => 'Articles d\'una Paraula clau',
+       'nom_menu_mots' => 'Articles duna Paraula clau',
        'nom_menu_objet' => 'Article, secció o un altre objecte SPIP',
        'nom_menu_page_speciale' => 'Enllaç cap a una pàgina esquelet',
-       'nom_menu_page_speciale_zajax' => 'Un bloc d\'une page Zpip', # NEW
-       'nom_menu_rubriques_completes' => 'Liste ou arborescence de rubriques et d\'articles (avec beaucoup d\'options)', # NEW
        'nom_menu_rubriques_evenements' => 'Esdeveniments de les seccions',
-       'nom_menu_secteurlangue' => 'Sectors de llengua',
-       'nom_menu_texte_libre' => 'Texte libre', # NEW
-
-       // T
-       'tous_les_articles' => '... Tous les articles', # NEW
-       'toutes_les_rubriques' => '... Toutes les rubriques' # NEW
+       'nom_menu_secteurlangue' => 'Sectors de llengua'
 );
 
 ?>
index 2a21d00..e28ae80 100644 (file)
@@ -21,7 +21,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'description_menu_mots' => 'Zeigt automatisch ein Menü, das die Artikel zum Schlagwort anzeigt.',
        'description_menu_objet' => 'Link zu einem SPIP-Objekt anlegen: Artikel, Rubrik, usw. In der Grundeinstellung trägt der Eintrag den Namen des Objekts.',
        'description_menu_page_speciale' => 'Fügt einen URL zu einer Skelettseite im Format  <code>spip.php?page=nom&param1=xx&param2=yyy...</code> hinzu. Diese Skelette werden von Plugins bereitgestellt',
-       'description_menu_page_speciale_zajax' => 'Fügt einen Link zu einem Block auf einer Seite hinzu, die über einen URL mit der Syntax <code>spip.php?page=nom¶m1=xx¶m2=yyy...</code> erreichbar ist. Dazu sind ein Skelett des Typs Z und das Plugin <a href="http://www.spip-contrib.net/MediaBox">médiabox</a> Voraussetzung.',
+       'description_menu_page_speciale_zajax' => 'Fügt einen Link zu einem Block auf einer Seite hinzu, die über einen URL mit der Syntax <code>spip.php?page=nom¶m1=xx¶m2=yyy...</code> erreichbar ist. Dazu sind ein Skelett des Typs Z und das Plugin <a href="http://contrib.spip.net/MediaBox">médiabox</a> Voraussetzung.',
        'description_menu_rubriques_articles' => 'Zeigt einen Liste der Rubriken und auf Wunsch der Unterrubriken und Artikel als Hierarchie an. In der Grundeinstellung werden alle Rubriken von der obersten Ebene an dargestellt. Sie werden nach Titeln (zuerst numerisch und dann alphabetisch) sortiert. Artikel werden immer hinter den Rubriken angezeigt.',
        'description_menu_rubriques_completes' => 'Zeigt eine Liste der Rubriken und, wenn gewünscht, der Unterrubriken auf mehreren Ebenen an. Die Standardeinstellung zeigt alle Rubriken sortiert nach Titel an (mit Ordnungszahl nummerierte zuerst).',
        'description_menu_secteurlangue' => 'Dieser Eintrag bezieht sich aud die Sites, welche pro Sprache ein Hauptrubrik verwenden. Er zeigt ein Menü mit allen Rubriken des Sektors, die mit der Sprache übereinstimmen, wenn erfordelich auf über mehrere Niveaus. In der Grundeinstelung werden alle Rubriken ab der obersten Ebene nach Titel (numerisch und anschließend alphanumerisch) sortiert angezeigt.',
@@ -36,7 +36,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'entree_afficher_articles' => 'Artikel in das Menü einbeziehen? ("oui" eintragen wenn gewünscht)',
        'entree_afficher_item_suite' => 'Artikel in das Menü einbeziehen? ("oui" eintragen wenn gewünscht)',
        'entree_articles_max' => 'Wenn ja, Artikel nur anzeigen, wenn die Rubrik maximal xx Artikel enthält. (Obergrenze eintragen, leer lassen um alle anzuzeigen)',
-       'entree_articles_max_affiches' => 'Wenn ja, Anzahl der angezeigten Artikel auf xx begrenzen; weitere werden durch den Eintrag "... alle Artikel" ersetzt. (Obergrenze eintragen, leer lassen um alle anzuzeigen)',
+       'entree_articles_max_affiches' => 'Wenn ja, Anzahl der angezeigten Artikel auf xx begrenzen; weitere werden durch den Eintrag "... alle Artikel" ersetzt. (Obergrenze eintragen, leer lassen um alle anzuzeigen)', # MODIF
        'entree_aucun' => 'Keiner',
        'entree_bloc' => 'ZPIP Block',
        'entree_choisir' => 'Wählen sie die Art EIntrag, die sie hinzufügen wollen:',
@@ -59,9 +59,9 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'entree_nombre_articles' => 'Maximale Anzahl Artikel (Standardwert 0)',
        'entree_page' => 'Name der Seite',
        'entree_parametres' => 'Parameterliste',
-       'entree_rubriques_max_affichees' => 'Wenn definiert, dann wird die Zahl der gelisteten Rubriken auf xx begrenzt und von einem Eintrag "... alle Rubriken" abgeschlossen. Obergrenze eintragen oder leer lassen, wenn alle angezeigt werden sollen.',
+       'entree_rubriques_max_affichees' => 'Wenn definiert, dann wird die Zahl der gelisteten Rubriken auf xx begrenzt und von einem Eintrag "... alle Rubriken" abgeschlossen. Obergrenze eintragen oder leer lassen, wenn alle angezeigt werden sollen.', # MODIF
        'entree_sousrub_cond' => 'Nur Unterrubriken der aktuellen Rubrik anzeigen ("oui" eintragen, falls nicht gewünscht leer lassen)',
-       'entree_suivant_connexion' => 'Verhalten des Eintrags in Abhängigkeit vom Verbindungsstatus: "Verbinden" wird nur angezeigt, wenn der Besucher nicht eingelogt ist, anderenfalls wird "Log-Out" angezeit. Freilassen, um den Eintrag immer anzuzeigen.', # MODIF
+       'entree_suivant_connexion' => 'Verhalten des Eintrags in Abhängigkeit vom Verbindungsstatus: Geben Sie "connecte" ein, wenn der Eintrag nur nach dem Einloggen angezeigt werden soll, "deconnecte" nur wenn der Nutzner nicht eingeloggt ist, "admin", wenn der Autor Administrator ist, oder lassen sie das Feld frei, um den Eintrag immer anzuzeigen.',
        'entree_suivant_connexion_connecte' => 'nur wenn verbunden',
        'entree_suivant_connexion_deconnecte' => 'nur wenn nicht verbunden',
        'entree_sur_n_articles' => '@n@ Artikel angezeigt',
@@ -72,14 +72,6 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'entree_titre_prive' => 'Titel für den Redaktionszugang',
        'entree_traduction_articles_rubriques' => 'Wenn möglich Artikel der Rubrik in der Sprache des Kontext anzeigen ("oui" eintragen wenn gewünscht)',
        'entree_traduction_objet' => 'Übersetzung von Artikeln in Abhängigkeit vom Sprachkontext auswählen (für diese EInstellung "trad" eintragen)',
-       'entree_tri_alpha' => 'Sortierung der Rubriken (alphanumerisch). Wenn Sie ein Datum angeben, wird das Kriterium {par date} hinzugefügt. und die Rubriken weden nach Datum sortiert.',
-       'entree_tri_alpha_articles' => 'Sortierung der Artikel (alphanumerisch). Wenn Sie ein Datum angeben, wird das Kriterium {par date} hinzugefügt. und die Artikel weden nach Datum sortiert.',
-       'entree_tri_alpha_articles_inverse' => 'Aplphabetische Sortierung umkehren  (dazu "oui" eingeben) ?',
-       'entree_tri_alpha_inverse' => 'Aplphabetische Sortierung umkehren  (dazu "oui" eingeben) ?',
-       'entree_tri_num' => 'Sortierung der Rubriken (numerisch). Wenn Sie einen Titel angeben, wird das Kriterium {par titre} hinzugefügt und die Rubrieken werden nach Titel sortiert angezeigt.',
-       'entree_tri_num_articles' => 'Sortierung der Rubriken (numerisch). Wenn Sie einen Titel angeben, wird das Kriterium {par titre} hinzugefügt und die Rubrieken werden nach Titel sortiert angezeigt.',
-       'entree_tri_num_articles_inverse' => 'Numerische Reihenfolge umkehren (dazu "oui" eingeben) ?',
-       'entree_tri_num_inverse' => 'Numerische Reihenfolge umkehren (dazu "oui" eingeben) ?',
        'entree_type_objet' => 'Objekttyp',
        'entree_url' => 'Adresse',
        'entree_url_public' => 'Zieladresse nach der Anmeldung',
index ee8adad..a2864d9 100644 (file)
@@ -8,20 +8,22 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // C
+       'configurer_entrees_masquees_explication' => 'Indicate the entries that you want to <strong>hide</strong> during the creation of a menu.',
+       'configurer_titre' => 'Configure the entries of the Menus plugin',
        'confirmer_supprimer_entree' => 'Do you really want delete this entry?',
 
        // D
-       'description_menu_accueil' => 'Link to website\'s home page.',
+       'description_menu_accueil' => 'Link to websites home page.',
        'description_menu_articles_rubrique' => 'Display the list of articles in a section.',
        'description_menu_deconnecter' => 'If the visitor is connected, add an entry offering disconnection.',
-       'description_menu_espace_prive' => 'Link enabling the connection to the site if you aren\'t already connected, and then to enter the private space if you are authorised to do so.',
+       'description_menu_espace_prive' => 'Link enabling the connection to the site if you arent already connected, and then to enter the private space if you are authorised to do so.',
        'description_menu_groupes_mots' => 'Automatically show a menu listing the keyword of the group and the linked articles. By default it shows the list of keyword groups and the keywords within them. If a groupes_mots.html template exists, the link to the group is used.',
        'description_menu_lien' => 'Adds an individually specified link, either an internal one (relative URL), or an external one (http://...).',
        'description_menu_mapage' => 'If visitors are connected, add a link to their author page.',
        'description_menu_mots' => 'Automatically shows a menu listing the articles linked to a keyword.',
        'description_menu_objet' => 'Creates a link to s SPIP object: article, section or other. By default, the entry will bear the the title of the object.',
        'description_menu_page_speciale' => 'Adds a link to a page template using a URL of the form <code>spip.php?page=name&param1=xx&param2=yyy...</code> Such pages are often used by plugins.',
-       'description_menu_page_speciale_zajax' => 'Add a link to a block in a page accessible by a URL of the type <code>spip.php?page=name&param1=xx&param2=yyy...</code> This requires a Z type template and the <a href="http://www.spip-contrib.net/MediaBox">médiabox</a> plugin.',
+       'description_menu_page_speciale_zajax' => 'Add a link to a block in a page accessible by a URL of the type <code>spip.php?page=name&param1=xx&param2=yyy...</code> This requires a Z type template and the <a href="http://contrib.spip.net/MediaBox">médiabox</a> plugin.',
        'description_menu_rubriques_articles' => 'Display a list of sections, optionally including sub-sections and articles nested to several levels. By default, all sections will be displayed starting from the site root and sorted by title (numerically then alphabetically).Articles in a given section will always be listed after any sub-sections.',
        'description_menu_rubriques_completes' => 'Displays a list of topics and, if you want, sub-sections on many levels. By default, displays all entries from the root, sorted by title (alphabetically and numerically).',
        'description_menu_secteurlangue' => 'This entry can be used by sites which have one language per sector. It displays a menu which lists the sections of the sector corresponding to the language of the page, and if desired the subsections to several levels. By default, all sections are shown from the site root, sorted by title (numerically then alphabetically).',
@@ -72,14 +74,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'entree_titre_prive' => 'The title for accessing the private zone',
        'entree_traduction_articles_rubriques' => 'If possible, show the articles of the section in the language of the context (put "trad" for this)',
        'entree_traduction_objet' => 'For an article, select the translation depending on the context (insert "trad" to accomplish this)',
-       'entree_tri_alpha' => 'Sort criterion of the sections (alphabetical). If you type "date", the added criterion will be {par date} (by date) and the sections will be sorted by date',
-       'entree_tri_alpha_articles' => 'Sort criterion of the articles (alphabetical). If you type "date", the added criterion will be {par date} and the article will be sorted by date',
-       'entree_tri_alpha_articles_inverse' => 'Reverse the sorting alphabetically? (put "oui" for this)',
-       'entree_tri_alpha_inverse' => 'Reverse the alphabetical sorting? (put "oui" for this)',
-       'entree_tri_num' => 'Sort criterion of the sections (digital). If you type "titre" (title), the added criterion will be {par num titre} and the sections will be number of the titles',
-       'entree_tri_num_articles' => 'Sort criterion of the articles (digital). If you type "titre" (title), the added criterion will be {par num titre} and the articles will be sorted by number of title',
-       'entree_tri_num_articles_inverse' => 'Reverse the digital sort order? (put "oui" for this)',
-       'entree_tri_num_inverse' => 'Reverse the digital sort order? (put "oui" for this)',
+       'entree_tri' => 'Sort order for sections ("titre" to sort by title, "num titre" to sort by the title number, prefix with an " !"for a reversed sorting)',
+       'entree_tri_articles' => 'Sort order for articles ("titre" to sort by title, "num titre" to sort by the title number, prefix with an " !"for a reversed sorting)',
        'entree_type_objet' => 'Object type',
        'entree_url' => 'URL',
        'entree_url_public' => 'Return address after logging in',
@@ -87,7 +83,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'erreur_autorisation' => 'You are not allowed to modify menus.',
        'erreur_identifiant_deja' => 'This identifier is already used by another menu.',
        'erreur_identifiant_forme' => 'Identifier must contain only letters, digits or underscores.',
-       'erreur_menu_inexistant' => 'Menu number @id@ doesn\'t exist.',
+       'erreur_menu_inexistant' => 'Menu number @id@ doesnt exist.',
        'erreur_mise_a_jour' => 'An error occured during database update.',
        'erreur_parametres' => 'There is an error in the parameters of the page',
        'erreur_type_menu' => 'You need to choose a type of menu',
index dbcaca0..8bbad6b 100644 (file)
@@ -8,6 +8,8 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // C
+       'configurer_entrees_masquees_explication' => 'Marque las entradas que desee <strong>esconder</strong> cuando cree un menú.',
+       'configurer_titre' => 'Configurar las entradas del plugin Menus',
        'confirmer_supprimer_entree' => '¿Quiere realmente eliminar esta entrada?',
 
        // D
@@ -21,7 +23,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'description_menu_mots' => 'Muestra automáticamente un menú que enumera los artículos relacionados con la palabra clave.',
        'description_menu_objet' => 'Crea un enlace a un objeto de SPIP: artículo, sección u otro. De manera predeterminada, la entrada será el título del objeto.',
        'description_menu_page_speciale' => 'Añade un enlace a un esqueleto página accesible para una url del tipo <code>spip.php?page=nom&param1=xx&param2=yyy...</code> Estas páginas se proporcionan a menudo por los plugins.',
-       'description_menu_page_speciale_zajax' => 'Añadir un enlace a un bloque de una página accesible por una url del tipo <code>spip.php?page=nom¶m1=xx¶m2=yyy...</code> Esto requiere un esqueleto de tipo Z y el plugin <a href="http://www.spip-contrib.net/MediaBox"> Mediabox</ a>.',
+       'description_menu_page_speciale_zajax' => 'Añadir un enlace a un bloque de una página accesible por una url del tipo <code>spip.php?page=nom¶m1=xx¶m2=yyy...</code> Esto requiere un esqueleto de tipo Z y el plugin <a href="http://contrib.spip.net/MediaBox"> Mediabox</ a>.',
        'description_menu_rubriques_articles' => 'Muestra una lista de secciones y, si se quiere, subsecciones y artículos en varios niveles. De manera predeterminada, muestra todas las secciones de la raíz, ordenados por título (en orden alfabético y numérico). Los artículos se colocan automáticamente después de las secciones.',
        'description_menu_rubriques_completes' => 'Muestra una lista de secciones y, si se quiere, las subsecciones en varios niveles. Por defecto, muestra todas las secciones desde la raíz, ordenadas por título (numéricamente, y luego alfabéticamente).',
        'description_menu_secteurlangue' => 'Esta entrada es específica de los sitios que utilizan un sector para cada idioma. Se muestra automáticamente un menú con las secciones de la zona correspondiente al idioma de la página y, si se quiere, las sub-secciones en varios niveles. De manera predeterminada, muestra todas las secciones de la raíz, ordenados por título (en orden alfabético y numérico).',
@@ -33,10 +35,10 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'editer_menus_exporter' => 'Exportar el menú',
        'editer_menus_nouveau' => 'Crear un nuevo menú',
        'editer_menus_titre' => 'Menús del sitio',
-       'entree_afficher_articles' => 'Incluir los artículos en en el menú  ? (escribe "oui" para para que ocurra)',
+       'entree_afficher_articles' => 'Incluir los artículos en en el menú ? (escribe "oui" para para que ocurra)',
        'entree_afficher_item_suite' => 'Incluir los artículos en el menu ? (escribe "oui" para esto)',
        'entree_articles_max' => 'Si es así, ¿ver los artículos sólo si la sección contiene como máximo xx artículos? (indicar el máximo número de artículos, o bien dejar en blanco para mostrar todos los artículos)',
-       'entree_articles_max_affiches' => 'Si es así, ¿limitar el número de artículos listados en xx máximo (seguidos de un ítem "... Todos los artículos", con un enlace a la sección padre)? (Indique el número máximo de artículos, dejar en blanco para mostrar todos los artículos)',
+       'entree_articles_max_affiches' => 'Si es así, ¿limitar el número de artículos listados en xx máximo (seguidos de un ítem "... Todos los artículos", con un enlace a la sección padre)? (Indique el número máximo de artículos, dejar en blanco para mostrar todos los artículos)', # MODIF
        'entree_aucun' => 'Ninguno',
        'entree_bloc' => 'Bloquear Zpip',
        'entree_choisir' => 'Seleccione el tipo de entrada que desea añadir:',
@@ -59,7 +61,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'entree_nombre_articles' => 'Número de artículos como máximo (0 por defecto)',
        'entree_page' => 'Nombre de la página',
        'entree_parametres' => 'Lista de parámetros',
-       'entree_rubriques_max_affichees' => 'Si es así, limitar el número de secciones listadas a xx máximo (seguido por una entrada "... Todos las secciones" con un enlace a la sección padre)? (Especifique el número máximo de secciones, dejar en blanco para mostrarlas todas)',
+       'entree_rubriques_max_affichees' => 'Si es así, limitar el número de secciones listadas a xx máximo (seguido por una entrada "... Todos las secciones" con un enlace a la sección padre)? (Especifique el número máximo de secciones, dejar en blanco para mostrarlas todas)', # MODIF
        'entree_sousrub_cond' => 'Mostrar sólo subcategorías de la sección actual (poner "oui", de lo contrario dejar en blanco)',
        'entree_suivant_connexion' => 'Restringir esta entrada según el estado de conexión (poner "connecte" para mostrar sólo si el visitante está conectado, "deconnecte" para el caso contrario, poner "admin" si el autor es administrador o dejar en blanco para mostrar siempre)',
        'entree_suivant_connexion_connecte' => 'sólo si conectado',
@@ -72,14 +74,6 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'entree_titre_prive' => 'Título para acceder al espacio privado',
        'entree_traduction_articles_rubriques' => 'Siempre que sea posible, ver los artículos en la categoría en el idioma del contexto (poner "trad" para esto)',
        'entree_traduction_objet' => 'En el caso de un artículo, seleccione la traducción en función del contexto (poner "trad" para esto)',
-       'entree_tri_alpha' => 'Criterio de orden de secciones (alfabético). Si escribe "date", el criterio será {par date} y los artículos serán ordenados por fecha',
-       'entree_tri_alpha_articles' => 'Criterio de orden de los artículos (alfabético). Si escribe "date", el criterio será {par date} y los artículos serán ordenados por fecha',
-       'entree_tri_alpha_articles_inverse' => 'Invertir el criterio de orden alfabético ? (poner "oui" para esto)',
-       'entree_tri_alpha_inverse' => 'Invertir el criterio de orden alfabético? (poner "oui" para esto)',
-       'entree_tri_num' => 'Criterio de orden de las secciones (numérico). Si escribe "titre", el criterio será {par num titre} y las secciones serán ordenados por fecha',
-       'entree_tri_num_articles' => 'Criterio de orden de los artículos (numérico). Si escribe "titre", el criterio será {par num titre} y los artículos serán ordenados por fecha',
-       'entree_tri_num_articles_inverse' => '¿Invertir el criterio de orden numérico ? (poner "oui" poara esto)',
-       'entree_tri_num_inverse' => '¿Invertir el criterio de orden numérico ? (poner "oui" poara esto)',
        'entree_type_objet' => 'Tipo de objeto',
        'entree_url' => 'Dirección',
        'entree_url_public' => 'Dirección de retorno luego de la conexión',
@@ -148,7 +142,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        // N
        'noisette_description' => 'Inserta un menú definido con el plugin Menús',
        'noisette_label_afficher_titre_menu' => 'Mostrar el título del menú ?',
-       'noisette_label_identifiant' => 'Menú a mostrar  :',
+       'noisette_label_identifiant' => 'Menú a mostrar :',
        'noisette_nom_noisette' => 'Menú',
        'nom_menu_accueil' => 'Inicio',
        'nom_menu_articles_rubrique' => 'Artículos de una sección',
index 6b9a8b5..a29eccf 100644 (file)
@@ -21,11 +21,10 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'description_menu_mots' => 'خودكار يك منوي فهرست تمام مقالات مرتبط با كليدواژه را نشان بده.',
        'description_menu_objet' => 'ايجاد پيوند به چيزهاي اسپيپي: مقاله، بخش يا چيزهاي ديگر. پيش‌گزيده، هر مدخل تيتر آن چيز را داراست.',
        'description_menu_page_speciale' => 'افزودن پيوند به صفحه‌ي اسكلت با استفاده از يوآرال اين فرم <code>spip.php?page=nom&param1=xx&param2=yyy...</code>. چنين صفحه‌هايي اغلب توسط پلاگين‌ها استفاده مي‌شوند.  ',
-       'description_menu_page_speciale_zajax' => 'افزودن يك پيوند به يك بلوك در صفحه‌اي قابل دسترس به وسيله‌ي يك يوآرال از نوع <code>spip.php?page=nom&param1=xx&param2=yyy...</code>. اين مستلزم يك استكلت نوع z و يك پلاگين <a href="http://www.spip-contrib.net/MediaBox">médiabox</a> خواهد بود.  ',
+       'description_menu_page_speciale_zajax' => 'افزودن يك پيوند به يك بلوك در صفحه‌اي قابل دسترس به وسيله‌ي يك يوآرال از نوع <code>spip.php?page=nom&param1=xx&param2=yyy...</code>. اين مستلزم يك استكلت نوع z و يك پلاگين <a href="http://contrib.spip.net/MediaBox">médiabox</a> خواهد بود.  ',
        'description_menu_rubriques_articles' => 'نمايش يك فهرست از بخش‌ها، و اگر مي‌خواهيد، زيربخش‌ها و مقاله‌ها در چندين سطح. 
 به صورت پيش‌گزيده، نمايش تمام بخش‌ها ريشه، مرتب شده بر اساس تيتر(شماره‌اي و بعد الفبايي). مقاله‌ها به طور نظام‌مند بعد از بخش‌ها قرار مي‌گيرند. 
 ',
-       'description_menu_rubriques_completes' => 'Affiche une liste de rubriques et, si on veut, les sous-rubriques sur plusieurs niveaux. Par défaut, affiche toutes les rubriques depuis la racine, triées par titre (numériquement puis alphabétiquement).', # NEW
        'description_menu_secteurlangue' => 'اين مدخل به سايت‌هايي اختصاص دارد كه يك بخش براي زبان دارند. اين مدخل به صورت خودكار منيويي را نشان مي‌دهد كه بخش‌ها آن قسمت منطبق با آن زبان و صفحه، و اگر بخواهند زيربخش‌ها را تا چندين سطح، را فهرست مي‌كنند. به صورت پيش‌گزيده، تمام بخش‌هاي عد از ريشه را، به ترتيب تيتر (طبق شماره و بعد طبق الفا) نشان مي‌دهد. 
 ',
        'description_menu_texte_libre' => 'فقط متني كه دوست داريد، يا يك كد زباني اسپيپ  (<:...:>)',
@@ -41,7 +40,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'entree_articles_max' => 'اگر بله، نمايش مقاله‌ها فقط اگر بخش شامل حداكثر ايكس ايكس مقاله است؟ (عدد مربوط به حداكثر مقاله را بگذاريد، براي نمايش تمام مقاله‌ها، خالي بگذاريد)
 ',
        'entree_articles_max_affiches' => 'در اين صورت، تعداد مقاله‌هاي فهرست شده تا حداكثر xx  محدود شود(بعد از يك فقره «...تمام مقاله‌ها» با يك لينك به بخش‌ والد)؟ (تعداد حداكثر مقاله‌ها را مشخص كنيد ، يا خالي بگذاريد تا تمام مقاله‌ها نشان داده شوند)
-',
+', # MODIF
        'entree_aucun' => 'هيچي',
        'entree_bloc' => 'بلاك ازپيپ (Bloc Zpip)',
        'entree_choisir' => 'نوع مدخلي را كه مي‌خواهيد اضافه كنيد انتخاب نماييد.',
@@ -68,7 +67,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'entree_parametres' => 'فهرست پارامترها',
        'entree_rubriques_max_affichees' => 'در اين صورت، تعداد بخش‌هاي فهرست شده تا حداكثر xx محدود شئذ (در پي فقره‌‌ي . . . «تمام بخش‌ها» با پيوند به بخش والد)؟
 (حداكثر تعداد بخش‌ها را تعيين كنيد، براي نشان دادن تمام آن‌ها خالي بگذاريد)
-',
+', # MODIF
        'entree_sousrub_cond' => 'فقط نمايش زيربخش‌هاي بخش فعلي (بگذاريد «بله»، در غيراينصورت خالي بگذاريد)',
        'entree_suivant_connexion' => 'منحصر سازي مدخل بعدي به اتصال (بگذاريد «اتصال» براي نمايش فقط اگر بازديد كننده متصل باشد، بگذاريد «قطع» براي مورد عكس، يا خالي بگذاريد تا هميشه نشان داده شود).
 ', # MODIF
@@ -82,18 +81,6 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'entree_titre_prive' => 'تيتر براي دسترسي به قسمت شخصي',
        'entree_traduction_articles_rubriques' => 'در صورت امكان، نمايش مقاله‌هاي اين بخش به زبان متن («ترجمه» (trad) را براي اينكار بگذاريد)',
        'entree_traduction_objet' => 'در مور مقاله، ترجمه را در ارتباط با آن متن انتخاب كنيد (براي آن trad را بگذاريد)',
-       'entree_tri_alpha' => ' معيار مرتب كردن بخش‌ها (الفبايي). اگر «تاريخ»"date" را تايپ كنيد، معيار اضافه شده (طبق تاريخ)‌ {par date}خواهد بدو بخش‌ها طبق ترايخ مرتب خواهند شد
-',
-       'entree_tri_alpha_articles' => 'مرتب‌ سازي معيارهاي مقاله‌ها (الفبايي). اگر «تاريخ» را تايپ كنيد، معيار افزوده شده {طبق تاريخ}خواهد بودو مقاله بر اساس تاريخ مرتب خواهد شد
-
-',
-       'entree_tri_alpha_articles_inverse' => 'معكس سازي مرتب‌سازي الفبايي؟ («بله» را براي آن بگذاريد)',
-       'entree_tri_alpha_inverse' => 'معكوس سازي مرتب‌سازي الفبايي؟ (براي آن «بله» بگذاريد)',
-       'entree_tri_num' => 'معيار مرتب كردن بخش‌ها (رقم). اگر «تيتر» را تايپ كنيد، معيار افزوده شده (طبق تيتر) {par num titre}خواهد بود و بخش‌ها بر اساس شماره تيتر‌ها مرتب خواهند شد
-',
-       'entree_tri_num_articles' => 'مرتب‌سازي مقاله‌ها (شماره‌اي). اگر «تيتر» را تايپ كنيد، معيار افزوده شده {طبق تيتر} خواهد بود و مقاله‌ها طبق شماره‌ي تيتر مرتب خواهند شد',
-       'entree_tri_num_articles_inverse' => 'معكوس سازي مرتب‌سازي بخش‌؟ (براي آن «بله» بگذاريد)',
-       'entree_tri_num_inverse' => 'معكوس سازي مرتب‌سازي شماره‌اي؟ (براي آن «بله» بگذاريد)',
        'entree_type_objet' => 'نوع اوبژه',
        'entree_url' => 'نشاني (يو.آر.ال) سايت شما',
        'entree_url_public' => 'نشاني بازگشت بعد از اتصال ',
@@ -177,7 +164,6 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'nom_menu_objet' => 'مقاله، بخش يا ساير چيزهاي اسپيپي ',
        'nom_menu_page_speciale' => 'پيوند به يك صفحه‌ي اسكلت',
        'nom_menu_page_speciale_zajax' => 'يك بلوك از صفحه‌ي ازپيپ',
-       'nom_menu_rubriques_completes' => 'Liste ou arborescence de rubriques et d\'articles (avec beaucoup d\'options)', # NEW
        'nom_menu_rubriques_evenements' => 'برنامه‌هاي مربوط به بخش‌ها',
        'nom_menu_secteurlangue' => 'بخش‌هاي زباني ',
        'nom_menu_texte_libre' => 'متن آزاد',
index 66a59d2..de6733b 100644 (file)
@@ -6,24 +6,26 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // C
-       'confirmer_supprimer_entree' => 'Voulez-vous vraiment supprimer cette entrée ?',
+       'configurer_entrees_masquees_explication' => 'Cochez les entrées que vous souhaitez <strong>masquer</strong> lors de la création d’un menu.',
+       'configurer_titre' => 'Configurer les entrées du plugin Menus',
+       'confirmer_supprimer_entree' => 'Voulez-vous vraiment supprimer cette entrée ?',
 
        // D
-       'description_menu_accueil' => 'Lien vers la page d\'accueil du site.',
-       'description_menu_articles_rubrique' => 'Affiche la liste des articles d\'une rubrique.',
+       'description_menu_accueil' => 'Lien vers la page daccueil du site.',
+       'description_menu_articles_rubrique' => 'Affiche la liste des articles dune rubrique.',
        'description_menu_deconnecter' => 'Si le visiteur est connecté, ajoute une entrée lui proposant la déconnexion.',
-       'description_menu_espace_prive' => 'Lien permettant de se connecter au site si on ne l\'est pas déjà, puis d\'aller dans l\'espace privé si l\'on y est autorisé.',
+       'description_menu_espace_prive' => 'Lien permettant de se connecter au site si on ne l’est pas déjà, puis d’aller dans l’espace privé si l’on y est autorisé.',
        'description_menu_groupes_mots' => 'Affiche automatiquement un menu listant les mots du groupe et les articles liés. Par défaut, affiche la liste des groupes de mots et les mots liés. Si un squelette groupes_mots.html existe, le lien vers le groupe est utilisé.',
        'description_menu_lien' => 'Ajoute un lien arbitraire, en interne (URL relative) ou externe (http://...).',
        'description_menu_mapage' => 'Si le visiteur est connecté, ajoute un lien vers sa page auteur.',
        'description_menu_mots' => 'Affiche automatiquement un menu listant les articles liés au mot clé.',
-       'description_menu_objet' => 'Crée un lien vers un objet de SPIP : article, rubrique ou autre. Par défaut, l\'entrée aura le titre de l\'objet.',
-       'description_menu_page_speciale' => 'Ajoute un lien vers un squelette page accessible par une url du type <code>spip.php?page=nom&param1=xx&param2=yyy...</code> Ces pages sont souvent fournies par des plugins.',
-       'description_menu_page_speciale_zajax' => 'Ajoute un lien vers un bloc d\'une page accessible par une url du type <code>spip.php?page=nom&param1=xx&param2=yyy...</code> Ceci nécéssite une squelette de type Z et le plugin <a href="http://www.spip-contrib.net/MediaBox">médiabox</a>.',
+       'description_menu_objet' => 'Crée un lien vers un objet de SPIP : article, rubrique ou autre. Par défaut, l’entrée aura le titre de l’objet.',
+       'description_menu_page_speciale' => 'Ajoute un lien vers un squelette page accessible par une url du type <code>spip.php ?page=nom&param1=xx&param2=yyy...</code> Ces pages sont souvent fournies par des plugins.',
+       'description_menu_page_speciale_zajax' => 'Ajoute un lien vers un bloc d’une page accessible par une url du type <code>spip.php ?page=nom&param1=xx&param2=yyy...</code> Ceci nécéssite une squelette de type Z et le plugin <a href="http://contrib.spip.net/MediaBox">médiabox</a>.',
        'description_menu_rubriques_articles' => 'Affiche une liste de rubriques et, si on veut, les sous-rubriques et les articles sur plusieurs niveaux. Par défaut, affiche toutes les rubriques depuis la racine, triées par titre (numériquement puis alphabétiquement). Les articles sont placés systématiquement après les rubriques.',
        'description_menu_rubriques_completes' => 'Affiche une liste de rubriques et, si on veut, les sous-rubriques sur plusieurs niveaux. Par défaut, affiche toutes les rubriques depuis la racine, triées par titre (numériquement puis alphabétiquement).',
        'description_menu_secteurlangue' => 'Cette entrée est spécifique aux sites utilisant un secteur par langue. Elle affiche automatiquement un menu listant les rubriques du secteur correspondant à la langue de la page et, si on veut, les sous-rubriques sur plusieurs niveaux. Par défaut, affiche toutes les rubriques depuis la racine, triées par titre (numériquement puis alphabétiquement).',
-       'description_menu_texte_libre' => 'Simplement le texte que vous souhaitez, ou un code de langue SPIP (<:...:>)',
+       'description_menu_texte_libre' => 'Simplement le texte que vous souhaitez, ou un code de langue SPIP (< :... :>)',
 
        // E
        'editer_menus_editer' => 'Modifier ce menu',
@@ -33,15 +35,15 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'editer_menus_titre' => 'Menus du site',
        'entree_afficher_articles' => 'Inclure les articles dans le menu ? (mettre "oui" pour cela)',
        'entree_afficher_item_suite' => 'Inclure les articles dans le menu ? (mettre "oui" pour cela)',
-       'entree_articles_max' => 'Si oui, afficher les articles seulement si la rubrique contient au maximum xx articles ? (mettre le nombre maximum d\'articles, laissez vide pour afficher tous les articles)',
-       'entree_articles_max_affiches' => 'Si oui, limiter le nombre d\'articles listés à xx maximum (suivis d\'un item "... Tous les articles" comportant un lien vers la rubrique parente) ? (indiquer le nombre maximum d\'articles, laissez vide pour afficher tous les articles)',
+       'entree_articles_max' => 'Si oui, afficher les articles seulement si la rubrique contient au maximum xx articles ? (mettre le nombre maximum darticles, laissez vide pour afficher tous les articles)',
+       'entree_articles_max_affiches' => 'Nombre maximum d’articles affichés (suivis d’un lien "... Tous les articles" vers la rubrique parente)',
        'entree_aucun' => 'Aucun',
        'entree_bloc' => 'Bloc Zpip',
-       'entree_choisir' => 'Choisissez le type d\'entrée que vous voulez ajouter :',
-       'entree_classe_parent' => 'Classe des liens des éléments parents. Cette classe sera rajoutée aux li>a ayant une suite ul/li. Par exemple, si vous saisissez "daddy", cela vous permet d\'utiliser le plugin menu deroulant 2 pour la mise en forme du menu.',
-       'entree_connexion_objet' => 'Obliger à être connecté (mettre "session") ou déconnecté (mettre "nosession") pour voir l\'objet',
+       'entree_choisir' => 'Choisissez le type d’entrée que vous voulez ajouter :',
+       'entree_classe_parent' => 'Classe des liens des éléments parents. Cette classe sera rajoutée aux li>a ayant une suite ul/li. Par exemple, si vous saisissez "daddy", cela vous permet dutiliser le plugin menu deroulant 2 pour la mise en forme du menu.',
+       'entree_connexion_objet' => 'Obliger à être connecté (mettre "session") ou déconnecté (mettre "nosession") pour voir lobjet',
        'entree_contenu' => 'Contenu',
-       'entree_css' => 'Classes CSS de l\'entrée (du conteneur)',
+       'entree_css' => 'Classes CSS de lentrée (du conteneur)',
        'entree_css_lien' => 'Classes CSS du lien',
        'entree_id_groupe' => 'Numéro du groupe de mot clé',
        'entree_id_mot' => 'Numéro du mot clé',
@@ -50,57 +52,51 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'entree_id_rubrique_ou_courante' => 'Numéro de la rubrique parente ou "courante" si la rubrique parente est la rubrique courante du contexte',
        'entree_id_rubriques_exclues' => 'Numéros des rubriques à exclure, séparés par des virgules',
        'entree_id_secteur_exclus' => 'Numéros des secteurs à exclure, séparés par des virgules',
-       'entree_infini' => 'À l\'infini',
+       'entree_infini' => 'À linfini',
        'entree_mapage' => 'Ma page perso',
-       'entree_masquer_articles_uniques' => 'Si oui et si une rubrique contient un seul article, le masquer ? (mettre "oui" pour cela)',
+       'entree_masquer_articles_uniques' => 'Si oui et si une rubrique contient un seul article, le masquer ? (mettre "oui" pour cela)',
        'entree_niveau' => 'Niveau des sous-rubriques',
-       'entree_nombre_articles' => 'Nombre d\'articles au maximum (0 par défaut)',
+       'entree_nombre_articles' => 'Nombre darticles au maximum (0 par défaut)',
        'entree_page' => 'Nom de la page',
        'entree_parametres' => 'Liste des paramètres',
-       'entree_rubriques_max_affichees' => 'Si oui, limiter le nombre de rubriques listés à xx maximum (suivis d\'un item "... Toutes les rubriques" comportant un lien vers la rubrique parente) ? (indiquer le nombre maximum de rubriques, laissez vide pour afficher toutes les rubriques)',
-       'entree_sousrub_cond' => 'N\'afficher que les sous-rubriques de la rubrique en cours (mettre "oui", sinon laisser vide)',
-       'entree_suivant_connexion' => 'Restreindre cette entrée suivant la connexion (mettre "connecte" pour afficher seulement si le visiteur est connecté, "deconnecte" pour le cas contraire, mettre "admin" si l\'auteur est administrateur ou laisser vide pour toujours afficher)',
+       'entree_rubriques_max_affichees' => 'Nombre maximum de rubriques affichées (suivies d’un lien "... Toutes les rubriques" vers la rubrique parente)',
+       'entree_sousrub_cond' => 'Nafficher que les sous-rubriques de la rubrique en cours (mettre "oui", sinon laisser vide)',
+       'entree_suivant_connexion' => 'Restreindre cette entrée suivant la connexion (mettre "connecte" pour afficher seulement si le visiteur est connecté, "deconnecte" pour le cas contraire, mettre "admin" si lauteur est administrateur ou laisser vide pour toujours afficher)',
        'entree_suivant_connexion_connecte' => 'seulement si connecté',
        'entree_suivant_connexion_deconnecte' => 'seulement si déconnecté',
        'entree_sur_n_articles' => '@n@ articles affiché(s)',
        'entree_sur_n_mots' => '@n@ mots affiché(s)',
        'entree_sur_n_niveaux' => 'Sur @n@ niveau(x)',
        'entree_titre' => 'Titre',
-       'entree_titre_connecter' => 'Titre pour l\'accès au formulaire d\'identification',
-       'entree_titre_prive' => 'Titre pour accéder à l\'espace privé',
+       'entree_titre_connecter' => 'Titre pour l’accès au formulaire d’identification',
+       'entree_titre_prive' => 'Titre pour accéder à lespace privé',
        'entree_traduction_articles_rubriques' => 'Dans la mesure du possible, afficher les articles de la rubrique dans la langue du contexte (mettre "trad" pour cela)',
-       'entree_traduction_objet' => 'Dans le cas d\'un article, choisir la traduction en fonction du contexte (mettre "trad" pour cela)',
-       'entree_tri_alpha' => 'Critère de tri des rubriques (alphabétique). Si vous saisissez "date", le critère ajouté sera {par date} et les rubriques seront triées par date',
-       'entree_tri_alpha_articles' => 'Critère de tri des articles (alphabétique). Si vous saisissez "date", le critère ajouté sera {par date} et les articles seront triés par date',
-       'entree_tri_alpha_articles_inverse' => 'Inverser le critère de tri alphabétique ? (mettre "oui" pour cela)',
-       'entree_tri_alpha_inverse' => 'Inverser le critère de tri alphabétique ? (mettre "oui" pour cela)',
-       'entree_tri_num' => 'Critère de tri des rubriques (numérique). Si vous saisissez "titre", le critère ajouté sera {par num titre} et les rubriques seront triées par numéro de titre',
-       'entree_tri_num_articles' => 'Critère de tri des articles (numérique). Si vous saisissez "titre", le critère ajouté sera {par num titre} et les articles seront triés par numéro de titre',
-       'entree_tri_num_articles_inverse' => 'Inverser le critère de tri numérique ? (mettre "oui" pour cela)',
-       'entree_tri_num_inverse' => 'Inverser le critère de tri numérique ? (mettre "oui" pour cela)',
-       'entree_type_objet' => 'Type de l\'objet',
+       'entree_traduction_objet' => 'Dans le cas d’un article, choisir la traduction en fonction du contexte (mettre "trad" pour cela)',
+       'entree_tri' => 'Critère de tri des rubriques ("titre" pour trier par titre, "num titre" pour trier par numéro de titre, préfixer par un " !" pour inverser l’ordre)',
+       'entree_tri_articles' => 'Critère de tri des articles ("titre" pour trier par titre, "num titre" pour trier par numéro de titre, préfixer par un " !" pour inverser l’ordre)',
+       'entree_type_objet' => 'Type de l’objet',
        'entree_url' => 'Adresse',
        'entree_url_public' => 'Adresse de retour après la connexion',
-       'erreur_aucun_type' => 'Aucun type d\'entrée n\'a été trouvé.',
-       'erreur_autorisation' => 'Vous n\'êtes pas autorisé à modifier les menus.',
+       'erreur_aucun_type' => 'Aucun type d’entrée n’a été trouvé.',
+       'erreur_autorisation' => 'Vous nêtes pas autorisé à modifier les menus.',
        'erreur_identifiant_deja' => 'Cet identifiant est déjà utilisé par un menu.',
-       'erreur_identifiant_forme' => 'L\'identifiant ne doit contenir que des lettres, des chiffres ou le caractère souligné.',
-       'erreur_menu_inexistant' => 'Le menu demandé numéro @id@ n\'existe pas.',
-       'erreur_mise_a_jour' => 'Une erreur s\'est produite pendant la mise à jour de la base de donnée.',
+       'erreur_identifiant_forme' => 'Lidentifiant ne doit contenir que des lettres, des chiffres ou le caractère souligné.',
+       'erreur_menu_inexistant' => 'Le menu demandé numéro @id@ nexiste pas.',
+       'erreur_mise_a_jour' => 'Une erreur sest produite pendant la mise à jour de la base de donnée.',
        'erreur_parametres' => 'Il y a une erreur dans les paramètres de la page',
        'erreur_type_menu' => 'Vous devez choisir un type de menu',
-       'erreur_type_menu_inexistant' => 'Ce type de menu n\'est pas/plus disponible',
+       'erreur_type_menu_inexistant' => 'Ce type de menu nest pas/plus disponible',
 
        // F
        'formulaire_ajouter_entree' => 'Ajouter une entrée',
        'formulaire_ajouter_sous_menu' => 'Créer un sous-menu',
        'formulaire_css' => 'Classes CSS',
-       'formulaire_css_explication' => 'Vous pouvez ajouter au menu d\'éventuelles classes CSS supplémentaires.',
+       'formulaire_css_explication' => 'Vous pouvez ajouter au menu déventuelles classes CSS supplémentaires.',
        'formulaire_deplacer_bas' => 'Déplacer vers le bas',
        'formulaire_deplacer_haut' => 'Déplacer vers le haut',
        'formulaire_facultatif' => 'Facultatif',
        'formulaire_identifiant' => 'Identifiant',
-       'formulaire_identifiant_explication' => 'Donnez un mot-clé unique qui vous permettra d\'appeler votre menu facilement.',
+       'formulaire_identifiant_explication' => 'Donnez un mot-clé unique qui vous permettra dappeler votre menu facilement.',
        'formulaire_ieconfig_choisir_menus_a_importer' => 'Choisissez quel(s) menu(s) vous souhaitez importer.',
        'formulaire_ieconfig_importer' => 'Importer',
        'formulaire_ieconfig_menu_meme_identifiant' => 'ATTENTION : un menu avec le même identifiant existe déjà sur votre votre site !',
@@ -109,9 +105,9 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'formulaire_ieconfig_remplacer' => 'Remplacer le menu actuel par le menu importé',
        'formulaire_ieconfig_renommer' => 'Renommer ce menu avant import',
        'formulaire_importer' => 'Importer un menu',
-       'formulaire_importer_explication' => 'Si vous avez exporté un menu dans un fichier, vous pouvez l\'importer maintenant.',
+       'formulaire_importer_explication' => 'Si vous avez exporté un menu dans un fichier, vous pouvez limporter maintenant.',
        'formulaire_modifier_entree' => 'Modifier cette entrée',
-       'formulaire_modifier_menu' => 'Modifier le menu :',
+       'formulaire_modifier_menu' => 'Modifier le menu :',
        'formulaire_nouveau' => 'Nouveau menu',
        'formulaire_partie_construction' => 'Construction du menu',
        'formulaire_partie_identification' => 'Identification du menu',
@@ -124,13 +120,13 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'info_afficher_articles' => 'Les articles seront inclus dans le menu.',
        'info_articles_max' => 'Seulement si la rubrique contient au plus @max@ articles',
        'info_articles_max_affiches' => 'Affichage limité à @max@ articles',
-       'info_classe_parent' => 'Classe des éléments parents : ',
+       'info_classe_parent' => 'Classe des éléments parents : ',
        'info_connexion_obligatoire' => 'Connexion obligatoire',
        'info_deconnexion_obligatoire' => 'Uniquement déconnecté',
        'info_masquer_articles_uniques' => 'Articles uniques masqués',
-       'info_numero_menu' => 'MENU NUMÉRO :',
-       'info_page_speciale' => 'Lien vers la page « @page@ »',
-       'info_page_speciale_zajax' => 'Modalbox de la page « @page@ » pour le bloc « @bloc@ &#187',
+       'info_numero_menu' => 'MENU NUMÉRO :',
+       'info_page_speciale' => 'Lien vers la page « @page@ »',
+       'info_page_speciale_zajax' => 'Modalbox de la page « @page@ » pour le bloc « @bloc@ &#187',
        'info_rubrique_courante' => 'Rubrique courante',
        'info_rubriques_exclues' => ' / sauf rubrique(s) @id_rubriques@',
        'info_rubriques_max_affichees' => 'Affichage limité à @max@ rubriques',
@@ -138,9 +134,9 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'info_sousrub_cond' => 'Seules les sous-rubriques de la rubriques en cours sont affichées.',
        'info_tous_groupes_mots' => 'Tous les groupes de mots',
        'info_traduction_recuperee' => 'Le contexte décidera de la traduction choisie',
-       'info_tri' => 'Tri des rubriques :',
+       'info_tri' => 'Tri des rubriques :',
        'info_tri_alpha' => '(alphabétique)',
-       'info_tri_articles' => 'Tri des articles :',
+       'info_tri_articles' => 'Tri des articles :',
        'info_tri_num' => '(numérique)',
 
        // N
@@ -149,17 +145,17 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'noisette_label_identifiant' => 'Menu à afficher :',
        'noisette_nom_noisette' => 'Menu',
        'nom_menu_accueil' => 'Accueil',
-       'nom_menu_articles_rubrique' => 'Articles d\'une rubrique',
+       'nom_menu_articles_rubrique' => 'Articles dune rubrique',
        'nom_menu_deconnecter' => 'Se déconnecter',
        'nom_menu_espace_prive' => 'Se connecter / lien vers espace privé',
-       'nom_menu_groupes_mots' => 'Mots-clés et Articles d\'un Groupes de mots',
+       'nom_menu_groupes_mots' => 'Mots-clés et Articles dun Groupes de mots',
        'nom_menu_lien' => 'Lien arbitraire',
        'nom_menu_mapage' => 'Ma page',
-       'nom_menu_mots' => 'Articles d\'un Mot-clé',
+       'nom_menu_mots' => 'Articles dun Mot-clé',
        'nom_menu_objet' => 'Article, rubrique ou autre objet SPIP',
        'nom_menu_page_speciale' => 'Lien vers un squelette page',
-       'nom_menu_page_speciale_zajax' => 'Un bloc d\'une page Zpip',
-       'nom_menu_rubriques_completes' => 'Liste ou arborescence de rubriques et d\'articles (avec beaucoup d\'options)',
+       'nom_menu_page_speciale_zajax' => 'Un bloc dune page Zpip',
+       'nom_menu_rubriques_completes' => 'Liste ou arborescence de rubriques et d’articles (avec beaucoup d’options)',
        'nom_menu_rubriques_evenements' => 'Événements de rubriques',
        'nom_menu_secteurlangue' => 'Secteurs de langue',
        'nom_menu_texte_libre' => 'Texte libre',
index a317d1b..20f1c4f 100644 (file)
@@ -7,9 +7,6 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
-       // C
-       'confirmer_supprimer_entree' => 'Voulez-vous vraiment supprimer cette entrée ?', # NEW
-
        // D
        'description_menu_accueil' => 'Link verso il pannello di controllo del sito.',
        'description_menu_articles_rubrique' => 'Mostra la lista degli articoli di una rubrica.',
@@ -19,13 +16,9 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'description_menu_lien' => 'Aggiunge un link arbitrario, interno (URL relativo) o esterno (http://...).',
        'description_menu_mapage' => 'Se il visitatore è connesso, aggiunge un link verso la sua pagina autore.',
        'description_menu_mots' => 'Mostra automaticamente un menù che elenca gli articoli collegati alla parola chiave.',
-       'description_menu_objet' => 'Crea un link verso un oggetto di SPIP: articolo, rubrica o altro. In maniera predefinita, il link avrà il titolo dell\'oggetto.',
+       'description_menu_objet' => 'Crea un link verso un oggetto di SPIP: articolo, rubrica o altro. In maniera predefinita, il link avrà il titolo delloggetto.',
        'description_menu_page_speciale' => 'Aggiunge un link verso un modello accessibile con un url del tipo <code>spip.php?page=nome&param1=xx&param2=yyy...</code> Queste pagina sono spesso fornite dai plugin.',
-       'description_menu_page_speciale_zajax' => 'Ajoute un lien vers un bloc d\'une page accessible par une url du type <code>spip.php?page=nom&param1=xx&param2=yyy...</code> Ceci nécéssite une squelette de type Z et le plugin <a href="http://www.spip-contrib.net/MediaBox">médiabox</a>.', # NEW
-       'description_menu_rubriques_articles' => 'Affiche une liste de rubriques et, si on veut, les sous-rubriques et les articles sur plusieurs niveaux. Par défaut, affiche toutes les rubriques depuis la racine, triées par titre (numériquement puis alphabétiquement). Les articles sont placés systématiquement après les rubriques.', # NEW
-       'description_menu_rubriques_completes' => 'Affiche une liste de rubriques et, si on veut, les sous-rubriques sur plusieurs niveaux. Par défaut, affiche toutes les rubriques depuis la racine, triées par titre (numériquement puis alphabétiquement).', # NEW
        'description_menu_secteurlangue' => 'Questa voce è specifica per i siti che utilizzano un settore per lingua. Mostra automaticamente un menù che elenca le rubriche del settore corrispondente alla lingua della pagina e, se si vuole, le sotto rubriche su più livelli. Normalmente, mostra tutte le rubriche dalla radice, ordinate per titolo (numericamente e poi alfabeticamente).',
-       'description_menu_texte_libre' => 'Simplement le texte que vous souhaitez, ou un code de langue SPIP (<:...:>)', # NEW
 
        // E
        'editer_menus_editer' => 'Modifica questo menù',
@@ -33,65 +26,35 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'editer_menus_exporter' => 'Esporta questo menù',
        'editer_menus_nouveau' => 'Crea un nuovo menù',
        'editer_menus_titre' => 'Menù del sito',
-       'entree_afficher_articles' => 'Inclure les articles dans le menu ? (mettre "oui" pour cela)', # NEW
-       'entree_afficher_item_suite' => 'Inclure les articles dans le menu ? (mettre "oui" pour cela)', # NEW
-       'entree_articles_max' => 'Si oui, afficher les articles seulement si la rubrique contient au maximum xx articles ? (mettre le nombre maximum d\'articles, laissez vide pour afficher tous les articles)', # NEW
-       'entree_articles_max_affiches' => 'Si oui, limiter le nombre d\'articles listés à xx maximum (suivis d\'un item "... Tous les articles" comportant un lien vers la rubrique parente) ? (indiquer le nombre maximum d\'articles, laissez vide pour afficher tous les articles)', # NEW
        'entree_aucun' => 'Nessun',
-       'entree_bloc' => 'Bloc Zpip', # NEW
        'entree_choisir' => 'Scegli il tipo di voce che vuoi aggiungere:',
-       'entree_classe_parent' => 'Classe des liens des éléments parents. Cette classe sera rajoutée aux li>a ayant une suite ul/li. Par exemple, si vous saisissez "daddy", cela vous permet d\'utiliser le plugin menu deroulant 2 pour la mise en forme du menu.', # NEW
-       'entree_connexion_objet' => 'Obliger à être connecté (mettre "session") ou déconnecté (mettre "nosession") pour voir l\'objet', # NEW
-       'entree_contenu' => 'Contenu', # NEW
        'entree_css' => 'Classi CSS della voce', # MODIF
-       'entree_css_lien' => 'Classes CSS du lien', # NEW
        'entree_id_groupe' => 'Numero di gruppo della parola chiave',
        'entree_id_mot' => 'Numero della parola chiave',
        'entree_id_objet' => 'Numero',
        'entree_id_rubrique' => 'Numero della rubrica padre',
-       'entree_id_rubrique_ou_courante' => 'Numéro de la rubrique parente ou "courante" si la rubrique parente est la rubrique courante du contexte', # NEW
-       'entree_id_rubriques_exclues' => 'Numéros des rubriques à exclure, séparés par des virgules', # NEW
-       'entree_id_secteur_exclus' => 'Numéros des secteurs à exclure, séparés par des virgules', # NEW
-       'entree_infini' => 'All\'infinito',
+       'entree_infini' => 'All’infinito',
        'entree_mapage' => 'La mia pagina personale',
-       'entree_masquer_articles_uniques' => 'Si oui et si une rubrique contient un seul article, le masquer ? (mettre "oui" pour cela)', # NEW
        'entree_niveau' => 'Livelli di sotto rubriche',
        'entree_nombre_articles' => 'Numero massimo di articoli (0 predefinito)',
        'entree_page' => 'Nome della pagina',
        'entree_parametres' => 'Lista dei parametri',
-       'entree_rubriques_max_affichees' => 'Si oui, limiter le nombre de rubriques listés à xx maximum (suivis d\'un item "... Toutes les rubriques" comportant un lien vers la rubrique parente) ? (indiquer le nombre maximum de rubriques, laissez vide pour afficher toutes les rubriques)', # NEW
-       'entree_sousrub_cond' => 'N\'afficher que les sous-rubriques de la rubrique en cours (mettre "oui", sinon laisser vide)', # NEW
-       'entree_suivant_connexion' => 'Restreindre cette entrée suivant la connexion (mettre "connecte" pour afficher seulement si le visiteur est connecté, "deconnecte" pour le cas contraire, ou laisser vide pour toujours afficher)', # NEW
-       'entree_suivant_connexion_connecte' => 'seulement si connecté', # NEW
-       'entree_suivant_connexion_deconnecte' => 'seulement si déconnecté', # NEW
        'entree_sur_n_articles' => '@n@ articoli mostrati',
        'entree_sur_n_mots' => '@n@ parole chiave mostrate',
        'entree_sur_n_niveaux' => 'Su @n@ livelli',
        'entree_titre' => 'Titolo',
-       'entree_titre_connecter' => 'Titolo per l\'accesso al form di login',
+       'entree_titre_connecter' => 'Titolo per laccesso al form di login',
        'entree_titre_prive' => 'Titolo per accedere alla redazione',
-       'entree_traduction_articles_rubriques' => 'Dans la mesure du possible, afficher les articles de la rubrique dans la langue du contexte (mettre "trad" pour cela)', # NEW
-       'entree_traduction_objet' => 'Dans le cas d\'un article, choisir la traduction en fonction du contexte (mettre "trad" pour cela)', # NEW
-       'entree_tri_alpha' => 'Criterio di ordinamento (alfabetico)', # MODIF
-       'entree_tri_alpha_articles' => 'Critère de tri des articles (alphabétique). Si vous saisissez "date", le critère ajouté sera {par date} et les articles seront triés par date', # NEW
-       'entree_tri_alpha_articles_inverse' => 'Inverser le critère de tri alphabétique ? (mettre "oui" pour cela)', # NEW
-       'entree_tri_alpha_inverse' => 'Inverser le critère de tri alphabétique ? (mettre "oui" pour cela)', # NEW
-       'entree_tri_num' => 'Criterio di ordinamento (numerico)', # MODIF
-       'entree_tri_num_articles' => 'Critère de tri des articles (numérique). Si vous saisissez "titre", le critère ajouté sera {par num titre} et les articles seront triés par numéro de titre', # NEW
-       'entree_tri_num_articles_inverse' => 'Inverser le critère de tri numérique ? (mettre "oui" pour cela)', # NEW
-       'entree_tri_num_inverse' => 'Inverser le critère de tri numérique ? (mettre "oui" pour cela)', # NEW
        'entree_type_objet' => 'Tipo di oggetto',
        'entree_url' => 'Indirizzo',
-       'entree_url_public' => 'Adresse de retour après la connexion', # NEW
        'erreur_aucun_type' => 'Nessun tipo di voce trovata.',
        'erreur_autorisation' => 'Non sei autorizzato a modificare i menù.',
        'erreur_identifiant_deja' => 'Questo identificativo è già utilizzato da un menù.',
-       'erreur_identifiant_forme' => 'L\'identificativo deve contenere solo lettere, cifre o il trattino basso.',
+       'erreur_identifiant_forme' => 'Lidentificativo deve contenere solo lettere, cifre o il trattino basso.',
        'erreur_menu_inexistant' => 'Il menù richiesto numero @id@ non esiste.',
-       'erreur_mise_a_jour' => 'Si è verificato un errore durante l\'aggiornamento del database.',
-       'erreur_parametres' => 'C\'è un errore nei parametri della pagina',
+       'erreur_mise_a_jour' => 'Si è verificato un errore durante laggiornamento del database.',
+       'erreur_parametres' => 'Cè un errore nei parametri della pagina',
        'erreur_type_menu' => 'Devi scegliere un tipo di menù',
-       'erreur_type_menu_inexistant' => 'Ce type de menu n\'est pas/plus disponible', # NEW
 
        // F
        'formulaire_ajouter_entree' => 'Aggiungi una voce',
@@ -99,17 +62,10 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'formulaire_css' => 'Classi CSS',
        'formulaire_css_explication' => 'Puoi aggiungere al menù delle eventuali classi CSS supplmentari.',
        'formulaire_deplacer_bas' => 'Sposta verso il basso',
-       'formulaire_deplacer_haut' => 'Sposta verso l\'alto',
+       'formulaire_deplacer_haut' => 'Sposta verso lalto',
        'formulaire_facultatif' => 'Facoltativo',
        'formulaire_identifiant' => 'Identificativo',
        'formulaire_identifiant_explication' => 'Inserisci una parola chiave unica che ti permetterà di richiamare il tuo menù facilmente.',
-       'formulaire_ieconfig_choisir_menus_a_importer' => 'Choisissez quel(s) menu(s) vous souhaitez importer.', # NEW
-       'formulaire_ieconfig_importer' => 'Importer', # NEW
-       'formulaire_ieconfig_menu_meme_identifiant' => 'ATTENTION : un menu avec le même identifiant existe déjà sur votre votre site !', # NEW
-       'formulaire_ieconfig_menus_a_exporter' => 'Menus à exporter :', # NEW
-       'formulaire_ieconfig_ne_pas_importer' => 'Ne pas importer', # NEW
-       'formulaire_ieconfig_remplacer' => 'Remplacer le menu actuel par le menu importé', # NEW
-       'formulaire_ieconfig_renommer' => 'Renommer ce menu avant import', # NEW
        'formulaire_importer' => 'Importa un menù',
        'formulaire_importer_explication' => 'Se hai esportato un menù in un file, ora lo puoi importare.',
        'formulaire_modifier_entree' => 'Modifica questa voce',
@@ -123,33 +79,14 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'formulaire_titre' => 'Titolo',
 
        // I
-       'info_afficher_articles' => 'Les articles seront inclus dans le menu.', # NEW
-       'info_articles_max' => 'Seulement si la rubrique contient au plus @max@ articles', # NEW
-       'info_articles_max_affiches' => 'Affichage limité à @max@ articles', # NEW
-       'info_classe_parent' => 'Classe des éléments parents : ', # NEW
-       'info_connexion_obligatoire' => 'Connexion obligatoire', # NEW
-       'info_deconnexion_obligatoire' => 'Uniquement déconnecté', # NEW
-       'info_masquer_articles_uniques' => 'Articles uniques masqués', # NEW
        'info_numero_menu' => 'MENU NUMERO:',
        'info_page_speciale' => 'Link verso la pagina "@page@"',
-       'info_page_speciale_zajax' => 'Modalbox de la page « @page@ » pour le bloc « @bloc@ &#187', # NEW
-       'info_rubrique_courante' => 'Rubrique courante', # NEW
-       'info_rubriques_exclues' => ' / sauf rubrique(s) @id_rubriques@', # NEW
-       'info_rubriques_max_affichees' => 'Affichage limité à @max@ rubriques', # NEW
-       'info_secteur_exclus' => ' / sauf secteur(s) @id_secteur@', # NEW
-       'info_sousrub_cond' => 'Seules les sous-rubriques de la rubriques en cours sont affichées.', # NEW
        'info_tous_groupes_mots' => 'Tutti i gruppi di parole chiave',
-       'info_traduction_recuperee' => 'Le contexte décidera de la traduction choisie', # NEW
        'info_tri' => 'Ordina:', # MODIF
        'info_tri_alpha' => '(alfabetico)',
-       'info_tri_articles' => 'Tri des articles :', # NEW
        'info_tri_num' => '(numerico)',
 
        // N
-       'noisette_description' => 'Insère un menu défini avec le plugin Menus.', # NEW
-       'noisette_label_afficher_titre_menu' => 'Afficher le titre du menu ?', # NEW
-       'noisette_label_identifiant' => 'Menu à afficher :', # NEW
-       'noisette_nom_noisette' => 'Menu', # NEW
        'nom_menu_accueil' => 'Pannello di controllo',
        'nom_menu_articles_rubrique' => 'Articoli di una rubrica',
        'nom_menu_deconnecter' => 'Disconnettersi',
@@ -160,15 +97,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'nom_menu_mots' => 'Articoli di un a parola chiave',
        'nom_menu_objet' => 'Articolo, rubrica o altro oggetto SPIP',
        'nom_menu_page_speciale' => 'Link verso una pagina di modello',
-       'nom_menu_page_speciale_zajax' => 'Un bloc d\'une page Zpip', # NEW
-       'nom_menu_rubriques_completes' => 'Liste ou arborescence de rubriques et d\'articles (avec beaucoup d\'options)', # NEW
        'nom_menu_rubriques_evenements' => 'Eventi delle rubriche',
-       'nom_menu_secteurlangue' => 'Settore di lingua',
-       'nom_menu_texte_libre' => 'Texte libre', # NEW
-
-       // T
-       'tous_les_articles' => '... Tous les articles', # NEW
-       'toutes_les_rubriques' => '... Toutes les rubriques' # NEW
+       'nom_menu_secteurlangue' => 'Settore di lingua'
 );
 
 ?>
diff --git a/www/plugins/menus_1/lang/menus_nl.php b/www/plugins/menus_1/lang/menus_nl.php
new file mode 100644 (file)
index 0000000..84b616a
--- /dev/null
@@ -0,0 +1,170 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/menus?lang_cible=nl
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // C
+       'configurer_entrees_masquees_explication' => 'Geef aan welke items je wilt <strong>verbergen</strong> bij het aanmaken van een menu.',
+       'configurer_titre' => 'Configureer de items van plugin Menus',
+       'confirmer_supprimer_entree' => 'Wil je deze regel inderdaad verwijderen?',
+
+       // D
+       'description_menu_accueil' => 'Link naar de startpagina van de site.',
+       'description_menu_articles_rubrique' => 'Toon een lijst van artikelen van een rubriek.',
+       'description_menu_deconnecter' => 'Ook een optie afmelden weergeven voor aangemelde bezoekers.',
+       'description_menu_espace_prive' => 'Link om te kunnen inloggen, en vervolgens naar het privé gedeelte van de site kunnen gaan.',
+       'description_menu_groupes_mots' => 'Toon automatisch een menu met trefwoorden van de groep en gekoppelde artikelen, toon de lijst van trefwoordgroepen met bijbehorende trefwoorden. Wanneer een model groupes_mots.html bestaat, wordt de link ernaar gebruikt.',
+       'description_menu_lien' => 'Voeg een arbitraire link toe, intern (relatieve URL) of extern (http://...).',
+       'description_menu_mapage' => 'Wanneer een bezoeker is aangemeld een link naar zijn auteur bladzijde toevoegen.',
+       'description_menu_mots' => 'Toon automatisch een menu met artikelen met het trefwoord.',
+       'description_menu_objet' => 'Maak een link met een SPIP object: artikel, rubriek of anders. Standaard wordt de titel van het objet gebruikt.',
+       'description_menu_page_speciale' => 'Voeg een link toe naar een bladzijde die toegankelijk is via <code>spip.php?page=nom&param1=xx&param2=yyy...</code>.',
+       'description_menu_page_speciale_zajax' => 'Voeg een link toe naar een blok van een bladzijde van het type <code>spip.php?page=nom&param1=xx&param2=yyy...</code> (plugin <a href="http://contrib.spip.net/MediaBox">médiabox</a>).',
+       'description_menu_rubriques_articles' => 'Toon een lijst van rubrieken en desgewenst subrubrieken met artikelen op verschillende niveaus. Standaard vanaf de root, gesorteerd op titel. De artikelen worden systematisch na de rubrieken vermeld.',
+       'description_menu_rubriques_completes' => 'Toon een lijst van rubrieken en desgewenst subrubrieken met artikelen op verschillende niveaus. Standaard vanaf de root, gesorteerd op titel.',
+       'description_menu_secteurlangue' => 'Deze parameter is specifiek voor rubrieken per taal. Automatsich wordt de rubriek (met subrubrieken) van de juiste taal gekozen. Standaard vanaf de root, gesorteerd op titel.',
+       'description_menu_texte_libre' => 'De tekst die je wil tonen, of een code uit de taaltabellen van SPIP (< :... :>)',
+
+       // E
+       'editer_menus_editer' => 'Pas menu aan',
+       'editer_menus_explication' => 'Maak en configureer hier de menu’s van de site.',
+       'editer_menus_exporter' => 'Exporteer dit menu',
+       'editer_menus_nouveau' => 'Maak een nieuw menu',
+       'editer_menus_titre' => 'Menu’s van de site',
+       'entree_afficher_articles' => 'Ook de artikelen in het menu weergeven?',
+       'entree_afficher_item_suite' => 'De artikelen in het menu invoegen?',
+       'entree_articles_max' => 'Zo ja, toon dan alleen de artikelen wanneer de rubriek er niet meer telt dan (geef een aantal op of laat leeg om alle artikelen te tonen)',
+       'entree_articles_max_affiches' => 'Zo ja, beperk het aantal vermelde artikelen tot (gevolgd door een item "... Alle artikelen" met een link naar de rubriek) (geef een aantal op of laat leeg om alle artikelen te tonen)',
+       'entree_aucun' => 'Geen',
+       'entree_bloc' => 'Zpip blok',
+       'entree_choisir' => 'Kies het type dat je wilt toevoegen:',
+       'entree_classe_parent' => 'Klasse van de bovenliggende elementen. Deze CSS class wordt toegevoegd aan de li>a met een daarop volgende ul/li.',
+       'entree_connexion_objet' => 'Alleen indien ingelogd ("session") of niet aangemeld ("nosession") om dit object te kunnen zien',
+       'entree_contenu' => 'Inhoud',
+       'entree_css' => 'Initiële CSS class (van de container)',
+       'entree_css_lien' => 'CSS class van de link',
+       'entree_id_groupe' => 'Trefwoordengroepnummer',
+       'entree_id_mot' => 'Trefwoordnummer',
+       'entree_id_objet' => 'Nummer',
+       'entree_id_rubrique' => 'Nummer van de bovenliggende rubriek',
+       'entree_id_rubrique_ou_courante' => 'Nummer van de bovenliggende rubriek, of "huidige" wanneer de aangegeven rubriek de huidige is',
+       'entree_id_rubriques_exclues' => 'Uit te sluiten subrubrieken, gescheiden door een komma',
+       'entree_id_secteur_exclus' => 'Uit te sluiten hoofdrubrieken, gescheiden door een komma',
+       'entree_infini' => 'Onbeperkt',
+       'entree_mapage' => 'Mijn eigen pagina',
+       'entree_masquer_articles_uniques' => 'Een rubriek met slechts een artikel verbergen?',
+       'entree_niveau' => 'Niveau van de subrubrieken',
+       'entree_nombre_articles' => 'Maximum aantal artikelen (standaard 0)',
+       'entree_page' => 'Naam van de bladzijde',
+       'entree_parametres' => 'Lijst van parameters',
+       'entree_rubriques_max_affichees' => 'Beperk het aantal vermelde rubrieken tot (gevolgd door item "... Alle rubrieken" met een link naar de bovenliggende rubriek) (laat leeg om alles te tonen)',
+       'entree_sousrub_cond' => 'Toon alleen de subrubrieken van de huidige rubriek',
+       'entree_suivant_connexion' => 'Toon alleen voor ingelogde of niet aangemelde gebruikers, alleen voor de "admin" (of laat leeg om altijd te tonen)',
+       'entree_suivant_connexion_connecte' => 'alleen wanneer aangemeld',
+       'entree_suivant_connexion_deconnecte' => 'alleen wanneer niet aangemeld',
+       'entree_sur_n_articles' => '@n@ artikel(en) getoond',
+       'entree_sur_n_mots' => '@n@ trefwoord(en) getoond',
+       'entree_sur_n_niveaux' => 'Op @n@ niveau(s)',
+       'entree_titre' => 'Titel',
+       'entree_titre_connecter' => 'Titel voor toegang tot het aanlogscherm',
+       'entree_titre_prive' => 'Titel voor toegang tot het privé-deel',
+       'entree_traduction_articles_rubriques' => 'Toon (indien mogelijk) de artikelen die aan de taal gekoppeld zijn (kies "trad")',
+       'entree_traduction_objet' => 'Kies de vertaling van een artikel op basis van de context (kies "trad")',
+       'entree_tri' => 'Sorteervolgorde van rubrieken ("titre" per titel, "num titre" per nummer van de titel; voor omgekeerd sorteren plaats je er een "!" voor)',
+       'entree_tri_articles' => 'Sorteervolgorde van artikelen ("titre" per titel, "num titre" per nummer van de titel; voor omgekeerd sorteren plaats je er een "!" voor)',
+       'entree_type_objet' => 'Type object',
+       'entree_url' => 'Adres',
+       'entree_url_public' => 'Terugkeeradres na het aanmelden',
+       'erreur_aucun_type' => 'Geen item gevonden.',
+       'erreur_autorisation' => 'Je mag de menus niet aanpassen.',
+       'erreur_identifiant_deja' => 'Deze identificatie wordt al voor een menu gebruikt.',
+       'erreur_identifiant_forme' => 'De identificatie mag bestaan uit letters, cijfers en een liggend streepje.',
+       'erreur_menu_inexistant' => 'Het menu met nummer @id@ bestaat niet.',
+       'erreur_mise_a_jour' => 'Een fout is opgetreden bij het aanpassen van de database.',
+       'erreur_parametres' => 'Er is een fout in de paramaters van de bladzijde',
+       'erreur_type_menu' => 'Je moet een type menu kiezen',
+       'erreur_type_menu_inexistant' => 'Dit type menu is niet (meer) beschikbaar',
+
+       // F
+       'formulaire_ajouter_entree' => 'Voeg een regel toe',
+       'formulaire_ajouter_sous_menu' => 'Maak een submenu',
+       'formulaire_css' => 'CSS class',
+       'formulaire_css_explication' => 'Je kunt eventueel extra CSS classes aan het menu toevoegen.',
+       'formulaire_deplacer_bas' => 'Naar beneden verplaatsen',
+       'formulaire_deplacer_haut' => 'Naar boven verplaatsen',
+       'formulaire_facultatif' => 'Facultatief',
+       'formulaire_identifiant' => 'Identificatie',
+       'formulaire_identifiant_explication' => 'Geef een uniek trefwoord om het menu gemakkelijk op te roepen.',
+       'formulaire_ieconfig_choisir_menus_a_importer' => 'Kies welk(e) menu(’s) je wilt importeren.',
+       'formulaire_ieconfig_importer' => 'Importeren',
+       'formulaire_ieconfig_menu_meme_identifiant' => 'LET OP: een menu met dezelfde identificatie bestaat al!',
+       'formulaire_ieconfig_menus_a_exporter' => 'Te exporteren menu’s:',
+       'formulaire_ieconfig_ne_pas_importer' => 'Niet importeren',
+       'formulaire_ieconfig_remplacer' => 'Vervang het bestaande menu door het geïmporteerde',
+       'formulaire_ieconfig_renommer' => 'Hernoem het menu voor het importeren',
+       'formulaire_importer' => 'Importeer een menu',
+       'formulaire_importer_explication' => 'Wanneer je een menu in een bestand hebt geëxporteerd, kun je het nu importeren.',
+       'formulaire_modifier_entree' => 'Pas deze regel aan',
+       'formulaire_modifier_menu' => 'Aanpassen van menu:',
+       'formulaire_nouveau' => 'Nieuw menu',
+       'formulaire_partie_construction' => 'Opbouw van het menu',
+       'formulaire_partie_identification' => 'Identificatie van het menu',
+       'formulaire_supprimer_entree' => 'Deze regel verwijderen',
+       'formulaire_supprimer_menu' => 'Dit menu verwijderen',
+       'formulaire_supprimer_sous_menu' => 'Dit submenu verwijderen',
+       'formulaire_titre' => 'Titel',
+
+       // I
+       'info_afficher_articles' => 'De artikelen worden in het menu opgenomen.',
+       'info_articles_max' => 'Alleen indien de rubriek maximaal @max@ artikelen heeft',
+       'info_articles_max_affiches' => 'Beperkt tot @max@ artikelen',
+       'info_classe_parent' => 'Class van bovenliggende elementen: ',
+       'info_connexion_obligatoire' => 'Aangemeld',
+       'info_deconnexion_obligatoire' => 'Niet aangemeld',
+       'info_masquer_articles_uniques' => 'Enkele artikelen verborgen',
+       'info_numero_menu' => 'MENU NUMMER:',
+       'info_page_speciale' => 'Link naar bladzijde « @page@ »',
+       'info_page_speciale_zajax' => 'Modalbox van bladzijde « @page@ » voor blok « @bloc@ &#187',
+       'info_rubrique_courante' => 'Huidige rubriek',
+       'info_rubriques_exclues' => ' / behalve rubriek(en) @id_rubriques@',
+       'info_rubriques_max_affichees' => 'Maximaal @max@ rubrieken',
+       'info_secteur_exclus' => ' / behalve hoofdrubriek(en) @id_secteur@',
+       'info_sousrub_cond' => 'Alleen subrubrieken van de huidige rubriek.',
+       'info_tous_groupes_mots' => 'Alle trefwoordgroepen',
+       'info_traduction_recuperee' => 'De context bepaald de gekozen vertaling',
+       'info_tri' => 'Sortering rubrieken:',
+       'info_tri_alpha' => '(alfabetisch)',
+       'info_tri_articles' => 'Sortering artikelen:',
+       'info_tri_num' => '(numeriek)',
+
+       // N
+       'noisette_description' => 'Voeg een menu van plugin Menus toe.',
+       'noisette_label_afficher_titre_menu' => 'De titel van het menu tonen?',
+       'noisette_label_identifiant' => 'Te tonen menu:',
+       'noisette_nom_noisette' => 'Menu',
+       'nom_menu_accueil' => 'Begin',
+       'nom_menu_articles_rubrique' => 'Artikelen van een rubriek',
+       'nom_menu_deconnecter' => 'Afmelden',
+       'nom_menu_espace_prive' => 'Aanmelden / link naar privé-deel',
+       'nom_menu_groupes_mots' => 'Trefwoorden en Artikelen van een Trefwoordengroep',
+       'nom_menu_lien' => 'Willekeurige link',
+       'nom_menu_mapage' => 'Mijn pagina',
+       'nom_menu_mots' => 'Artikelen van een Trefwoord',
+       'nom_menu_objet' => 'Artikel, rubriek of een ander SPIP object',
+       'nom_menu_page_speciale' => 'Link naar een modelbladzijde',
+       'nom_menu_page_speciale_zajax' => 'Een blok van een Zpip pagina',
+       'nom_menu_rubriques_completes' => 'Lijst van rubrieken en artikelen (met vele opties)',
+       'nom_menu_rubriques_evenements' => 'Evenementen van rubrieken',
+       'nom_menu_secteurlangue' => 'Taalrubrieken',
+       'nom_menu_texte_libre' => 'Vrije tekst',
+
+       // T
+       'tous_les_articles' => '... Alle artikelen',
+       'toutes_les_rubriques' => '... Alle rubrieken'
+);
+
+?>
index eb3441f..622c52a 100644 (file)
@@ -1,31 +1,14 @@
 <?php
 // This is a SPIP language file  --  Ceci est un fichier langue de SPIP
-// extrait automatiquement de http://www.spip.net/trad-lang/
+// extrait automatiquement de http://trad.spip.net/tradlang_module/menus?lang_cible=ru
 // ** ne pas modifier le fichier **
 
 if (!defined('_ECRIRE_INC_VERSION')) return;
 
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
-       // C
-       'confirmer_supprimer_entree' => 'Voulez-vous vraiment supprimer cette entrée ?', # NEW
-
        // D
        'description_menu_accueil' => 'Ссылка на главную страницу.',
-       'description_menu_articles_rubrique' => 'Affiche la liste des articles d\'une rubrique.', # NEW
-       'description_menu_deconnecter' => 'Si le visiteur est connecté, ajoute une entrée lui proposant la déconnexion.', # NEW
-       'description_menu_espace_prive' => 'Lien permettant de se connecter au site si on ne l\'est pas déjà, puis d\'aller dans l\'espace privé si l\'on y est autorisé.', # NEW
-       'description_menu_groupes_mots' => 'Affiche automatiquement un menu listant les mots du groupe et les articles liés. Par d&eacute;faut, affiche la liste des groupes de mots et les mots li&eacute;s. Si un squelette groupes_mots.html existe, le lien vers le groupe est utilis&eacute;.', # NEW
-       'description_menu_lien' => 'Ajoute un lien arbitraire, en interne (URL relative) ou externe (http://...).', # NEW
-       'description_menu_mapage' => 'Si le visiteur est connecté, ajoute un lien vers sa page auteur.', # NEW
-       'description_menu_mots' => 'Affiche automatiquement un menu listant les articles liés au mot clé.', # NEW
-       'description_menu_objet' => 'Crée un lien vers un objet de SPIP : article, rubrique ou autre. Par défaut, l\'entrée aura le titre de l\'objet.', # NEW
-       'description_menu_page_speciale' => 'Ajoute un lien vers un squelette page accessible par une url du type <code>spip.php?page=nom&param1=xx&param2=yyy...</code> Ces pages sont souvent fournies par des plugins.', # NEW
-       'description_menu_page_speciale_zajax' => 'Ajoute un lien vers un bloc d\'une page accessible par une url du type <code>spip.php?page=nom&param1=xx&param2=yyy...</code> Ceci nécéssite une squelette de type Z et le plugin <a href="http://www.spip-contrib.net/MediaBox">médiabox</a>.', # NEW
-       'description_menu_rubriques' => 'Affiche une liste de rubriques et, si on veut, les sous-rubriques sur plusieurs niveaux. Par défaut, affiche toutes les rubriques depuis la racine, triées par titre (numériquement puis alphabétiquement).', # NEW
-       'description_menu_rubriques_articles' => 'Affiche une liste de rubriques et, si on veut, les sous-rubriques et les articles sur plusieurs niveaux. Par défaut, affiche toutes les rubriques depuis la racine, triées par titre (numériquement puis alphabétiquement). Les articles sont placés systématiquement après les rubriques.', # NEW
-       'description_menu_secteurlangue' => 'Cette entrée est spécifique aux sites utilisant un secteur par langue. Elle affiche automatiquement un menu listant les rubriques du secteur correspondant à la langue de la page et, si on veut, les sous-rubriques sur plusieurs niveaux. Par défaut, affiche toutes les rubriques depuis la racine, triées par titre (numériquement puis alphabétiquement).', # NEW
-       'description_menu_texte_libre' => 'Simplement le texte que vous souhaitez, ou un code de langue SPIP (<:...:>)', # NEW
 
        // E
        'editer_menus_editer' => 'Редактировать это меню',
@@ -33,62 +16,23 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'editer_menus_exporter' => 'Экспортировать меню',
        'editer_menus_nouveau' => 'Создать новое меню',
        'editer_menus_titre' => 'Меню сайта',
-       'entree_afficher_articles' => 'Inclure les articles dans le menu ? (mettre "oui" pour cela)', # NEW
-       'entree_afficher_item_suite' => 'Inclure les articles dans le menu ? (mettre "oui" pour cela)', # NEW
-       'entree_articles_max' => 'Si oui, afficher les articles seulement si la rubrique contient au maximum xx articles ? (mettre le nombre maximum d\'articles, laissez vide pour afficher tous les articles)', # NEW
-       'entree_articles_max_affiches' => 'Si oui, limiter le nombre d\'articles list&eacute;s &agrave; xx maximum (suivis d\'un item "... Tous les articles" comportant un lien vers la rubrique parente) ? (indiquer le nombre maximum d\'articles, laissez vide pour afficher tous les articles)', # NEW
-       'entree_aucun' => 'Aucun', # NEW
-       'entree_bloc' => 'Bloc Zpip', # NEW
        'entree_choisir' => 'Выбрать тип пункта меню:',
-       'entree_classe_parent' => 'Classe des liens des éléments parents. Cette classe sera rajoutée aux li>a ayant une suite ul/li. Par exemple, si vous saisissez "daddy", cela vous permet d\'utiliser le plugin menu deroulant 2 pour la mise en forme du menu.', # NEW
-       'entree_connexion_objet' => 'Obliger à être connecté (mettre "session") ou déconnecté (mettre "nosession") pour voir l\'objet', # NEW
-       'entree_contenu' => 'Contenu', # NEW
        'entree_css' => 'CSS класс', # MODIF
-       'entree_css_lien' => 'Classes CSS du lien', # NEW
-       'entree_id_groupe' => 'Numéro du groupe de mot clé', # NEW
-       'entree_id_mot' => 'Numéro du mot clé', # NEW
        'entree_id_objet' => 'Номер',
        'entree_id_rubrique' => 'Номер родительского раздела',
-       'entree_id_rubrique_ou_courante' => 'Numéro de la rubrique parente ou "courante" si la rubrique parente est la rubrique courante du contexte', # NEW
-       'entree_id_rubriques_exclues' => 'Numéros des rubriques à exclure, séparés par des virgules', # NEW
-       'entree_id_secteur_exclus' => 'Numéros des secteurs à exclure, séparés par des virgules', # NEW
        'entree_infini' => 'Бесконечность',
        'entree_mapage' => 'Моя страница',
-       'entree_masquer_articles_uniques' => 'Si oui et si une rubrique contient un seul article, le masquer ? (mettre "oui" pour cela)', # NEW
        'entree_niveau' => 'Уровень подразделов',
-       'entree_nombre_articles' => 'Nombre d\'articles au maximum (0 par défaut)', # NEW
-       'entree_page' => 'Nom de la page', # NEW
-       'entree_parametres' => 'Liste des paramètres', # NEW
-       'entree_rubriques_max_affichees' => 'Si oui, limiter le nombre de rubriques list&eacute;s &agrave; xx maximum (suivis d\'un item "... Toutes les rubriques" comportant un lien vers la rubrique parente) ? (indiquer le nombre maximum de rubriques, laissez vide pour afficher toutes les rubriques)', # NEW
-       'entree_sousrub_cond' => 'N\'afficher que les sous-rubriques de la rubrique en cours (mettre "oui", sinon laisser vide)', # NEW
-       'entree_sur_n_articles' => '@n@ articles affiché(s)', # NEW
-       'entree_sur_n_mots' => '@n@ mots affiché(s)', # NEW
        'entree_sur_n_niveaux' => 'На @n@ уровне',
        'entree_titre' => 'Название',
-       'entree_titre_connecter' => 'Titre pour l\'accès au formulaire d\'identification', # NEW
-       'entree_titre_prive' => 'Titre pour accéder à l\'espace privé', # NEW
-       'entree_traduction_articles_rubriques' => 'Dans la mesure du possible, afficher les articles de la rubrique dans la langue du contexte (mettre "trad" pour cela)', # NEW
-       'entree_traduction_objet' => 'Dans le cas d\'un article, choisir la traduction en fonction du contexte (mettre "trad" pour cela)', # NEW
-       'entree_tri_alpha' => 'Critère de tri (alphabétique)', # MODIF
-       'entree_tri_alpha_articles' => 'Critère de tri des articles (alphabétique). Si vous saisissez "date", le critère ajouté sera {par date} et les articles seront triés par date', # NEW
-       'entree_tri_alpha_articles_inverse' => 'Inverser le critère de tri alphabétique ? (mettre "oui" pour cela)', # NEW
-       'entree_tri_alpha_inverse' => 'Inverser le critère de tri alphabétique ? (mettre "oui" pour cela)', # NEW
-       'entree_tri_num' => 'Critère de tri (numérique)', # MODIF
-       'entree_tri_num_articles' => 'Critère de tri des articles (numérique). Si vous saisissez "titre", le critère ajouté sera {par num titre} et les articles seront triés par numéro de titre', # NEW
-       'entree_tri_num_articles_inverse' => 'Inverser le critère de tri numérique ? (mettre "oui" pour cela)', # NEW
-       'entree_tri_num_inverse' => 'Inverser le critère de tri numérique ? (mettre "oui" pour cela)', # NEW
        'entree_type_objet' => 'Тип объекта',
        'entree_url' => 'Ссылка (URL)',
-       'entree_url_public' => 'Adresse de retour après la connexion', # NEW
        'erreur_aucun_type' => 'Ничего не найдено.',
        'erreur_autorisation' => 'У вас нет прав для редактирования этого меню.',
        'erreur_identifiant_deja' => 'Этот идентификатор уже используется в другом меню.',
        'erreur_identifiant_forme' => 'Идентификатор может состоять из латинских букв, цифр и подчеркиваний.',
        'erreur_menu_inexistant' => 'Меню номер @id@ не существует.',
        'erreur_mise_a_jour' => 'Произошла ошибка при обновлении базы.',
-       'erreur_parametres' => 'Il y a une erreur dans les paramètres de la page', # NEW
-       'erreur_type_menu' => 'Vous devez choisir un type de menu', # NEW
-       'erreur_type_menu_inexistant' => 'Ce type de menu n\'est pas/plus disponible', # NEW
 
        // F
        'formulaire_ajouter_entree' => 'Добавить пункт меню',
@@ -100,13 +44,6 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'formulaire_facultatif' => 'Не обязательно',
        'formulaire_identifiant' => 'Идентификатор',
        'formulaire_identifiant_explication' => 'Назначьте меню уникальное ключевое слово, которое позволит в дальнейшем легко его вызывать.',
-       'formulaire_ieconfig_choisir_menus_a_importer' => 'Choisissez quel(s) menu(s) vous souhaitez importer.', # NEW
-       'formulaire_ieconfig_importer' => 'Importer', # NEW
-       'formulaire_ieconfig_menu_meme_identifiant' => 'ATTENTION : un menu avec le même identifiant existe déjà sur votre votre site !', # NEW
-       'formulaire_ieconfig_menus_a_exporter' => 'Menus à exporter :', # NEW
-       'formulaire_ieconfig_ne_pas_importer' => 'Ne pas importer', # NEW
-       'formulaire_ieconfig_remplacer' => 'Remplacer le menu actuel par le menu importé', # NEW
-       'formulaire_ieconfig_renommer' => 'Renommer ce menu avant import', # NEW
        'formulaire_importer' => 'Импортировать меню',
        'formulaire_importer_explication' => 'Если вы экспортировали меню в файл, вы можете импортировать его сейчас.',
        'formulaire_modifier_entree' => 'Редактировать этот пункт меню',
@@ -120,52 +57,12 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'formulaire_titre' => 'Название',
 
        // I
-       'info_afficher_articles' => 'Les articles seront inclus dans le menu.', # NEW
-       'info_articles_max' => 'Seulement si la rubrique contient au plus @max@ articles', # NEW
-       'info_articles_max_affiches' => 'Affichage limit&eacute; &agrave; @max@ articles', # NEW
-       'info_classe_parent' => 'Classe des éléments parents : ', # NEW
-       'info_connexion_obligatoire' => 'Connexion obligatoire', # NEW
-       'info_deconnexion_obligatoire' => 'Uniquement déconnecté', # NEW
-       'info_masquer_articles_uniques' => 'Articles uniques masqu&eacute;s', # NEW
-       'info_numero_menu' => 'НОМЕР МЕНЮ:',
-       'info_page_speciale' => 'Lien vers la page « @page@ »', # NEW
-       'info_page_speciale_zajax' => 'Modalbox de la page « @page@ » pour le bloc « @bloc@ &#187', # NEW
-       'info_rubrique_courante' => 'Rubrique courante', # NEW
-       'info_rubriques_exclues' => ' / sauf rubrique(s) @id_rubriques@', # NEW
-       'info_rubriques_max_affichees' => 'Affichage limit&eacute; &agrave; @max@ rubriques', # NEW
-       'info_secteur_exclus' => ' / sauf secteur(s) @id_secteur@', # NEW
-       'info_sousrub_cond' => 'Seules les sous-rubriques de la rubriques en cours sont affichées.', # NEW
-       'info_tous_groupes_mots' => 'Tous les groupes de mots', # NEW
-       'info_traduction_recuperee' => 'Le contexte décidera de la traduction choisie', # NEW
-       'info_tri' => 'Tri :', # MODIF
-       'info_tri_alpha' => '(alphabétique)', # NEW
-       'info_tri_articles' => 'Tri des articles :', # NEW
-       'info_tri_num' => '(numérique)', # NEW
+       'info_numero_menu' => 'МЕНЮ НОМЕР:',
+       'info_tri' => 'Сортировка :',
 
        // N
-       'noisette_description' => 'Insère un menu défini avec le plugin Menus.', # NEW
-       'noisette_label_afficher_titre_menu' => 'Afficher le titre du menu ?', # NEW
-       'noisette_label_identifiant' => 'Menu à afficher :', # NEW
-       'noisette_nom_noisette' => 'Menu', # NEW
        'nom_menu_accueil' => 'Главная страница',
-       'nom_menu_articles_rubrique' => 'Articles d\'une rubrique', # NEW
-       'nom_menu_deconnecter' => 'Se déconnecter', # NEW
-       'nom_menu_espace_prive' => 'Se connecter / lien vers espace privé', # NEW
-       'nom_menu_groupes_mots' => 'Mots-clés et Articles d\'un Groupes de mots', # NEW
-       'nom_menu_lien' => 'Lien arbitraire', # NEW
-       'nom_menu_mapage' => 'Ma page', # NEW
-       'nom_menu_mots' => 'Articles d\'un Mot-clé', # NEW
-       'nom_menu_objet' => 'Article, rubrique ou autre objet SPIP', # NEW
-       'nom_menu_page_speciale' => 'Lien vers un squelette page', # NEW
-       'nom_menu_page_speciale_zajax' => 'Un bloc d\'une page Zpip', # NEW
-       'nom_menu_rubriques' => 'Liste ou arborescence de rubriques', # MODIF
-       'nom_menu_rubriques_evenements' => 'Événements de rubriques', # NEW
-       'nom_menu_secteurlangue' => 'Secteurs de langue', # NEW
-       'nom_menu_texte_libre' => 'Texte libre', # NEW
-
-       // T
-       'tous_les_articles' => '... Tous les articles', # NEW
-       'toutes_les_rubriques' => '... Toutes les rubriques' # NEW
+       'nom_menu_texte_libre' => 'Просто текст'
 );
 
 ?>
index 03a5e23..a683379 100644 (file)
@@ -8,6 +8,8 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // C
+       'configurer_entrees_masquees_explication' => 'Vyberte údaje, ktoré chcete <strong>skryť</strong> pri vytváraní menu.',
+       'configurer_titre' => 'Nastaviť údaje zásuvného modulu Menu',
        'confirmer_supprimer_entree' => 'Chcete odstrániť tento záznam?',
 
        // D
@@ -21,7 +23,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'description_menu_mots' => 'Automaticky zobrazí menu so zoznamom článkov prepojených s kľúčovým slovom.',
        'description_menu_objet' => 'Vytvorí odkaz na objekt SPIPu: článok, rubriku alebo iný. Podľa predvolených nastavení bude niesť názov objektu.',
        'description_menu_page_speciale' => 'Pridá odkaz na stránku šablóny pomocou adresy formulára <code>spip.php?page=name&param1=xx&param2=yyy...</code> Takéto stránky často využívajú zásuvné moduly.',
-       'description_menu_page_speciale_zajax' => 'Pridať odkaz do bolu na stránke, na ktorú sa dá dostať progredníctvom adresy typu <code>spip.php?page=name&param1=xx&param2=yyy...</code> Na to treba šablónu typu Z a zásuvný modul <a href="http://www.spip-contrib.net/MediaBox">médiabox.</a>',
+       'description_menu_page_speciale_zajax' => 'Pridať odkaz do bolu na stránke, na ktorú sa dá dostať progredníctvom adresy typu <code>spip.php?page=name&param1=xx&param2=yyy...</code> Na to treba šablónu typu Z a zásuvný modul <a href="http://contrib.spip.net/MediaBox">médiabox.</a>',
        'description_menu_rubriques_articles' => 'Zobrazí zoznam rubrík, v ktorom môžu byť podrubriky a články včlenené do rôznych úrovní. Podľa predvolených nastavení sa zobrazia všetky rubriky počnúc koreňovým adresárom stránky a budú zotriedené podľa názvu (najprv čísla, potom písmená). Články v danej rubrike budú vždy uvedené po jej podrubrikách.',
        'description_menu_rubriques_completes' => 'Zobrazí zoznam rubrík a ak existujú, aj podrubrík na mnohých úrovniach. Podľa predvolených nastavení zobrazí všetky rubriky od koreňového adresára zotriedené podľa názvu (najprv podľa čísel potom podľa abecedy).',
        'description_menu_secteurlangue' => 'This entry can be used by sites which have one language per sector. It displays a menu which lists the sections of the sector corresponding to the language of the page, and if desired the subsections to several levels. By default, all sections are shown from the site root, sorted by title (numerically then alphabetically).',
@@ -29,14 +31,14 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // E
        'editer_menus_editer' => 'Upraviť toto menu',
-       'editer_menus_explication' => 'Vytvorte a nastavte ponky menu pre svoju stránku.',
+       'editer_menus_explication' => 'Vytvorte a nastavte ponuky menu pre svoju stránku.',
        'editer_menus_exporter' => 'Exportovať toto menu',
        'editer_menus_nouveau' => 'Vytvoriť nové menu',
        'editer_menus_titre' => 'Ponuky menu stránky',
        'entree_afficher_articles' => 'Zaradiť články do menu? (na to využite možnosť "áno")',
        'entree_afficher_item_suite' => 'Zaradiť články do menu? (použite na to možnosť "áno")',
        'entree_articles_max' => 'Ak áno, zobraziť články, len ak je v rubrike maximálne xx článkov? (zadajte maximálny počet článkov; ak chcete zobraziť všetky články, nechajte toto pole prázdne)',
-       'entree_articles_max_affiches' => 'Ak áno, obmedziť počet článkov v zozname na maximálne xx (za položkou "...Všetky články" s odkazom na nadradenú rubriku)? (zadajte maximálny počet článkov; ak chcete zobraziť všetky články, nechajte toto pole prázdne)',
+       'entree_articles_max_affiches' => 'Ak áno, obmedziť počet článkov v zozname na maximálne xx (za položkou "...Všetky články" s odkazom na nadradenú rubriku)? (zadajte maximálny počet článkov; ak chcete zobraziť všetky články, nechajte toto pole prázdne)', # MODIF
        'entree_aucun' => 'Žiadny',
        'entree_bloc' => 'Blok Zpipu',
        'entree_choisir' => 'Vyberte typ položky, ktorú chcete pridať:',
@@ -59,7 +61,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'entree_nombre_articles' => 'Maximálny počet článkov (predvolené 0)',
        'entree_page' => 'Názov stránky',
        'entree_parametres' => 'Zoznam parametrov',
-       'entree_rubriques_max_affichees' => 'Ak áno, obmedziť počet rubrík v zozname na maximálne xx (po položke "...Všetky rubriky" s odkazom na nadradenú rubriku)? (zadajte maximálny počet rubrík; ak chcete zobraziť všetky rubriky, nechajte toto pole prázdne)',
+       'entree_rubriques_max_affichees' => 'Ak áno, obmedziť počet rubrík v zozname na maximálne xx (po položke "...Všetky rubriky" s odkazom na nadradenú rubriku)? (zadajte maximálny počet rubrík; ak chcete zobraziť všetky rubriky, nechajte toto pole prázdne)', # MODIF
        'entree_sousrub_cond' => 'Zobrazovať len podrubriky aktuálnej rubriky (zadajte "oui" (áno), v opačnom prípade nevypĺňajte)',
        'entree_suivant_connexion' => 'Obmedziť toto pole podľa prihlásenia  (nastavte "prihlásený" ak chcete zobraziť len návštevníka, ktorý je online; možnosť "odhlásený" v opačnom prípade;  ak autor riadi nejakú rubriku, nastavte pole "administrátor"; ak ho chcete zobraziť v každom prípade, toto pole nevypĺňajte)',
        'entree_suivant_connexion_connecte' => 'len ak je online',
@@ -72,14 +74,6 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'entree_titre_prive' => 'Nadpis pre prístup do súkromnej zóny',
        'entree_traduction_articles_rubriques' => 'Ak je to možné, zobraziť články rubriky v jazyku textu (na aktiváciu tejto možnosti zadajte "trad")',
        'entree_traduction_objet' => 'Pri článku vyberajte preklad v závislosti od kontextu (na to, aby se to dosiahli, vložte "trad")',
-       'entree_tri_alpha' => 'Kritérium triedenia (abecedné)',
-       'entree_tri_alpha_articles' => 'Kritérium triedenia článkov(abecedné). Ak zadáte "dátum", bude pridané kritérium {podľa dátumu} a články budú zotriedené podľa dátumu',
-       'entree_tri_alpha_articles_inverse' => 'Obrátiť poradie abecedného triedenia? (použite na to možnosť "áno")',
-       'entree_tri_alpha_inverse' => 'Obrátiť poradie abecedného triedenia? (použite na to možnosť "áno")',
-       'entree_tri_num' => 'Kritérium triedenia (číselné)',
-       'entree_tri_num_articles' => 'Kritérium triedenia článkov (číselné). Ak zadáte "nadpis", bude pridané kritérium {podľa čísla nadpisu} a články budú zotriedené podľa čísla nadpisu',
-       'entree_tri_num_articles_inverse' => 'Obrátiť poradie číselného triedenia? (použite na to možnosť "áno")',
-       'entree_tri_num_inverse' => 'Obrátiť poradie číselného triedenia? (použite na to možnosť "áno")',
        'entree_type_objet' => 'Typ objektu',
        'entree_url' => 'Internetová adresa',
        'entree_url_public' => 'Po prihlásení vypísať adresu',
index e74acae..d03546f 100644 (file)
@@ -1,21 +1,26 @@
 <traduction module="paquet-menus" gestionnaire="salvatore" url="http://trad.spip.net" source="svn://zone.spip.org/spip-zone/_plugins_/menus/trunk/lang/" reference="fr">
-       <langue code="ar" url="http://trad.spip.net/tradlang_module/paquet-menus?lang_cible=ar">
+       <langue code="ar" url="http://trad.spip.net/tradlang_module/paquet-menus?lang_cible=ar" total="4" traduits="4" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="George" lien="http://trad.spip.net/auteur/جورج-قندلفت" />
        </langue>
-       <langue code="de" url="http://trad.spip.net/tradlang_module/paquet-menus?lang_cible=de">
+       <langue code="de" url="http://trad.spip.net/tradlang_module/paquet-menus?lang_cible=de" total="4" traduits="4" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="kent1" lien="http://trad.spip.net/auteur/kent1" />
+               <traducteur nom="klaus++" lien="http://trad.spip.net/auteur/klaus" />
        </langue>
-       <langue code="en" url="http://trad.spip.net/tradlang_module/paquet-menus?lang_cible=en">
+       <langue code="en" url="http://trad.spip.net/tradlang_module/paquet-menus?lang_cible=en" total="4" traduits="4" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="kent1" lien="http://trad.spip.net/auteur/kent1" />
        </langue>
-       <langue code="es" url="http://trad.spip.net/tradlang_module/paquet-menus?lang_cible=es">
-               <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel" />
+       <langue code="es" url="http://trad.spip.net/tradlang_module/paquet-menus?lang_cible=es" total="4" traduits="4" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel-s-bujaldon" />
        </langue>
-       <langue code="fr" />
-       <langue code="it" url="http://trad.spip.net/tradlang_module/paquet-menus?lang_cible=it">
+       <langue code="fr" url="http://trad.spip.net/tradlang_module/paquet-menus?lang_cible=fr" total="4" traduits="4" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+       </langue>
+       <langue code="it" url="http://trad.spip.net/tradlang_module/paquet-menus?lang_cible=it" total="4" traduits="2" relire="0" modifs="1" nouveaux="1" pourcent="50.00">
                <traducteur nom="kent1" lien="http://trad.spip.net/auteur/kent1" />
        </langue>
-       <langue code="sk" url="http://trad.spip.net/tradlang_module/paquet-menus?lang_cible=sk">
+       <langue code="nl" url="http://trad.spip.net/tradlang_module/paquet-menus?lang_cible=nl" total="4" traduits="4" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Hanjo" lien="http://trad.spip.net/auteur/hanjo" />
+       </langue>
+       <langue code="sk" url="http://trad.spip.net/tradlang_module/paquet-menus?lang_cible=sk" total="4" traduits="4" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="jaro" lien="http://trad.spip.net/auteur/jaro" />
        </langue>
 </traduction>
index 87b6f95..ee7d750 100644 (file)
@@ -8,9 +8,11 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // M
-       'menus_description' => 'Menüs bequem im Redaktionssystem gestalten.', # MODIF
-       'menus_nom' => 'Menus', # NEW
-       'menus_slogan' => 'Menüs bequem im Redaktionssystem gestalten.',
+       'menus_description' => 'Ohne das Plugin {{Menüs}} müssen alle Menüs in den Seitenskeletten definiert werden. Webmaster, die keinen Zugriff auf den Quellcode der Skelette haben, müssen in diesem Fall für jede Änderung den zuständigen Webdesigner oder Programmierer beauftragen. Direkte Links zu spezifischen Webseiten oder Objekten müssen fest in die Skelette eingetragen werden.
+
+Mit dem Plugin {{Menüs}} können öffentliche Menüs im Redaktionsbereich über eine leicht bedienbare Oberfläche angelegt und bearbeitet werden. {{Achtung !}} Das Plugin kümmert sich nicht um die Formatierung der Menüs, welche separat z.B. per CSS-Code festgelegt wird. {{Menüs}} erzeugt den HTML-Code der Menüs.',
+       'menus_nom' => 'Menüs',
+       'menus_slogan' => 'Legen Sie eigene Menüs an',
        'menus_titre' => 'Menüs'
 );
 
index 46d3bcc..c83d988 100644 (file)
@@ -6,13 +6,13 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // M
-       'menus_description' => 'Lorsqu\'on ne se sert pas du plugin {{Menus}}, on est obligé de définir tous ses menus dans les squelettes,
-       ce qui fait que les administrateurs du site n\'ont pas directement la main dessus et que lorsqu\'ils veulent y changer quelque chose, ils sont obligés
-       d\'en faire la demande à la personne en charge des squelettes. De plus, lorsqu\'on veut des liens statiques (un lien vers un article précis,
+       'menus_description' => 'Lorsquon ne se sert pas du plugin {{Menus}}, on est obligé de définir tous ses menus dans les squelettes,
+       ce qui fait que les administrateurs du site n’ont pas directement la main dessus et que lorsqu’ils veulent y changer quelque chose, ils sont obligés
+       d’en faire la demande à la personne en charge des squelettes. De plus, lorsqu’on veut des liens statiques (un lien vers un article précis,
        ou vers une page précise, ou vers un site externe) il faut les écrire en dur dans le squelette du menu.
 
-       Le but du plugin {{Menus}} est donc de permettre de facilement élaborer des menus au moyen d\'une interface conviviale, directement dans la partie privée.
-       {{Attention !}} Ce plugin ne s\'occupe pas de la manière dont seront affichés les menus. Il permet de les créer facilement et d\'en générer le code HTML.',
+       Le but du plugin {{Menus}} est donc de permettre de facilement élaborer des menus au moyen dune interface conviviale, directement dans la partie privée.
+       {{Attention !}} Ce plugin ne s’occupe pas de la manière dont seront affichés les menus. Il permet de les créer facilement et d’en générer le code HTML.',
        'menus_nom' => 'Menus',
        'menus_slogan' => 'Créez vos menus personnalisés.',
        'menus_titre' => 'Menus'
index 9a6975f..de0d52e 100644 (file)
@@ -9,7 +9,6 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // M
        'menus_description' => 'Crea i tuoi menù in redazione.', # MODIF
-       'menus_nom' => 'Menus', # NEW
        'menus_slogan' => 'Crea i tuoi menù in redazione.',
        'menus_titre' => 'Menù'
 );
diff --git a/www/plugins/menus_1/lang/paquet-menus_nl.php b/www/plugins/menus_1/lang/paquet-menus_nl.php
new file mode 100644 (file)
index 0000000..02b9a0f
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/paquet-menus?lang_cible=nl
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // M
+       'menus_description' => 'Wanneer je niet van de plugin {{Menus}} gebruik maakt, moeten alle menu’s in de skeletten worden opgebouwd.
+       
+       De plugin {{Menus}} laat toe om via de standaard interface van het privé-gedeelte de menu’s te bewerken.
+       {{Let op!}} De plugin is niet bedoeld voor het stileren van een menu. Dat doe je met HTML en CSS.',
+       'menus_nom' => 'Menu’s',
+       'menus_slogan' => 'Maak persoonlijke menu’s.',
+       'menus_titre' => 'Menus'
+);
+
+?>
index b6581eb..936ca7f 100644 (file)
@@ -2,6 +2,7 @@
 <html>
        <head>
                [<title>(#TITRE|textebrut)</title>]
+               <meta name="robots" content="none" />
        </head>
        <body>
                <h1>#TITRE</h1>
index f2339ea..82e53c2 100644 (file)
@@ -1,7 +1,11 @@
 [(#SET{id_rubrique, #ENV{id_rubrique}|intval})]\r
-[(#SET{tri_num, #ENV{tri_num}|ou{#ENV{tri_alpha}}|?{#ENV{tri_num},'titre'}})]\r
-[(#SET{tri_alpha, #ENV{tri_num}|ou{#ENV{tri_alpha}}|?{#ENV{tri_alpha},'titre'}})]\r
+[(#SET{tri_num, #ENV{tri,titre}|menus_critere_tri{num}})]\r
+[(#SET{tri_alpha, #ENV{tri,titre}|menus_critere_tri{alpha}})]\r
 [(#SET{articles_max_affiches, #ENV{articles_max_affiches}|intval|?{#ENV{articles_max_affiches},10000}})]\r
+[(#SET{tri_num_inverse,#GET{tri_num}|match{^!}|oui})]\r
+[(#SET{tri_alpha_inverse,#GET{tri_alpha}|match{^!}|oui})]\r
+[(#SET{tri_num,#GET{tri_num}|ltrim{!}})]\r
+[(#SET{tri_alpha,#GET{tri_alpha}|ltrim{!}})]\r
 \r
 [(#ENV{appel_formulaire}|oui)\r
        [(#SET{titre, #GET{id_rubrique}|?{#INFO_TITRE{rubrique, #GET{id_rubrique}}, <:info_racine_site:>}})]\r
@@ -14,7 +18,7 @@
        <BOUCLE_env_trad(CONDITION){si #ENV{trad}|=={trad}}>\r
        #SET{cpt,0}\r
        <BOUCLE_cpt_articles_orig(ARTICLES){id_rubrique=#GET{id_rubrique}}{origine_traduction}> </BOUCLE_cpt_articles_orig>#SET{cpt,#TOTAL_BOUCLE}</B_cpt_articles_orig>\r
-       <BOUCLE_articles_orig(ARTICLES){id_rubrique=#GET{id_rubrique}}{par num #GET{tri_num}}{par #GET{tri_alpha}}{origine_traduction}{0,#GET{articles_max_affiches}}>\r
+       <BOUCLE_articles_orig(ARTICLES){id_rubrique=#GET{id_rubrique}}{par num #GET{tri_num}}{inverse #GET{tri_num_inverse}}{par #GET{tri_alpha}}{inverse #GET{tri_alpha_inverse}}{origine_traduction}{0,#GET{articles_max_affiches}}>\r
                <BOUCLE_trad(ARTICLES){traduction}{id_rubrique=#GET{id_rubrique}}{lang=#ENV{lang}}>\r
                <li class="menu-entree item[ (#ID_ARTICLE|menus_exposer{article,#ENV*{env}})]">\r
                        <a href="#URL_ARTICLE">#TITRE</a>\r
@@ -34,7 +38,7 @@
        </B_env_trad>\r
        #SET{cpt,0}\r
        <BOUCLE_cpt_articles(ARTICLES){id_rubrique=#GET{id_rubrique}}> </BOUCLE_cpt_articles>#SET{cpt,#TOTAL_BOUCLE}</B_cpt_articles>\r
-       <BOUCLE_articles(ARTICLES){id_rubrique=#GET{id_rubrique}}{par num #GET{tri_num}}{par #GET{tri_alpha}}{0,#GET{articles_max_affiches}}>\r
+       <BOUCLE_articles(ARTICLES){id_rubrique=#GET{id_rubrique}}{par num #GET{tri_num}}{inverse #GET{tri_num_inverse}}{par #GET{tri_alpha}}{inverse #GET{tri_alpha_inverse}}{0,#GET{articles_max_affiches}}>\r
                <li class="menu-entree item[ (#ID_ARTICLE|menus_exposer{article,#ENV*{env}})]">\r
                        <a href="#URL_ARTICLE">#TITRE</a>\r
                </li>\r
index 3a18591..e0801b6 100644 (file)
@@ -4,8 +4,7 @@
        <description><:menus:description_menu_articles_rubrique:></description>
        <icone>images/menus_articles_rubrique.png</icone>
        <parametre nom="id_rubrique" label="menus:entree_id_rubrique" />
-       <parametre nom="tri_num" label="menus:entree_tri_num_articles" />
-       <parametre nom="tri_alpha" label="menus:entree_tri_alpha_articles" />
+       <parametre nom="tri" label="menus:entree_tri_articles" />
        <parametre nom="articles_max_affiches" label="menus:entree_articles_max_affiches" />
        <parametre nom="trad" label="menus:entree_traduction_articles_rubriques" />
        <refuser_sous_menu/>
index 7d7d1a1..c0327c7 100644 (file)
@@ -1,7 +1,11 @@
 [(#SET{id_groupe, #ENV{id_groupe}|intval})]
 [(#SET{nombre_articles_mot, #ENV{nombre_articles_mot}|intval|?{#ENV{nombre_articles_mot},0}})]
-[(#SET{tri_num, #ENV{tri_num}|ou{#ENV{tri_alpha}}|?{#ENV{tri_num},'titre'}})]
-[(#SET{tri_alpha, #ENV{tri_num}|ou{#ENV{tri_alpha}}|?{#ENV{tri_alpha},'titre'}})]
+[(#SET{tri_num, #ENV{tri,titre}|menus_critere_tri{num}})]
+[(#SET{tri_alpha, #ENV{tri,titre}|menus_critere_tri{alpha}})]
+[(#SET{tri_num_inverse,#GET{tri_num}|match{^!}|oui})]
+[(#SET{tri_alpha_inverse,#GET{tri_alpha}|match{^!}|oui})]
+[(#SET{tri_num,#GET{tri_num}|ltrim{!}})]
+[(#SET{tri_alpha,#GET{tri_alpha}|ltrim{!}})]
 
 [(#ENV{appel_formulaire}|oui)
        [(#SET{titre, #GET{id_groupe}|?{#INFO_TITRE{groupes_mots, #GET{id_groupe}}, <:menus:info_tous_groupes_mots:>}})]
 ]
 
 <BOUCLE_appel(CONDITION){si #ENV{appel_menu}|oui}>
-<BOUCLE_mots(MOTS){id_groupe=#GET{id_groupe}}{par num #GET{tri_num}}{par #GET{tri_alpha}}>
+<BOUCLE_mots(MOTS){id_groupe=#GET{id_groupe}}{par num #GET{tri_num}}{inverse #GET{tri_num_inverse}}{par #GET{tri_alpha}}{inverse #GET{tri_alpha_inverse}}>
        <li class="menu-entree item">
                <a href="#URL_MOT">#TITRE</a>
                <B_articles_mots>
                        <ul class="menu-liste menu-items">
-                               <BOUCLE_articles_mots(ARTICLES){id_mot=#ID_MOT}{par num #GET{tri_num}}{par #GET{tri_alpha}}{0,#GET{nombre_articles_mot}}>
+                               <BOUCLE_articles_mots(ARTICLES){id_mot=#ID_MOT}{par num #GET{tri_num}}{inverse #GET{tri_num_inverse}}{par #GET{tri_alpha}}{inverse #GET{tri_alpha_inverse}}{0,#GET{nombre_articles_mot}}>
                                <li class="menu-entree item">
                                        <a href="#URL_ARTICLE">#TITRE</a>
                                </li>
        </li>
 </BOUCLE_mots>
 </B_mots>
-       <BOUCLE_groupe_mots(GROUPES_MOTS){par num #GET{tri_num}}{par #GET{tri_alpha}}>
+       <BOUCLE_groupe_mots(GROUPES_MOTS){par num #GET{tri_num}}{inverse #GET{tri_num_inverse}}{par #GET{tri_alpha}}{inverse #GET{tri_alpha_inverse}}>
        <li class="menu-entree item">
                <a[(#CHEMIN{groupes_mot.html}|oui) href="#URL_PAGE{groupes_mot,id_groupe=#ID_GROUPE}"][(#CHEMIN{groupes_mot.html}|non) href="#"] title="[(#TITRE|attribut_html)]">#TITRE</a>
                <B_mots_tous>
                        <ul class="menu-liste menu-items">
-                               <BOUCLE_mots_tous(MOTS){id_groupe}{par num #GET{tri_num}}{par #GET{tri_alpha}}>
+                               <BOUCLE_mots_tous(MOTS){id_groupe}{par num #GET{tri_num}}{inverse #GET{tri_num_inverse}}{par #GET{tri_alpha}}{inverse #GET{tri_alpha_inverse}}>
                                <li class="menu-entree item">
                                        <a href="#URL_MOT">#TITRE</a>
                                                <B_mots_articles_mots>
                                                        <ul class="menu-liste menu-items">
-                                                               <BOUCLE_mots_articles_mots(ARTICLES){id_mot=#ID_MOT}{par num #GET{tri_num}}{par #GET{tri_alpha}}{0,#GET{nombre_articles_mot}}>
+                                                               <BOUCLE_mots_articles_mots(ARTICLES){id_mot=#ID_MOT}{par num #GET{tri_num}}{inverse #GET{tri_num_inverse}}{par #GET{tri_alpha}}{inverse #GET{tri_alpha_inverse}}{0,#GET{nombre_articles_mot}}>
                                                                        <li class="menu-entree item">
                                                                        <a href="#URL_ARTICLE">#TITRE</a>
                                                                        </li>
index f43eabd..0ea68c9 100644 (file)
@@ -4,8 +4,7 @@
        <description><:menus:description_menu_groupes_mots:></description>
        <icone>images/menus_groupes_mots.png</icone>
        <parametre nom="id_groupe" label="menus:entree_id_groupe" />
-       <parametre nom="tri_num" label="menus:entree_tri_num" />
-       <parametre nom="tri_alpha" label="menus:entree_tri_alpha" />
+       <parametre nom="tri" label="menus:entree_tri" />
        <parametre nom="nombre_articles_mot" label="menus:entree_nombre_articles" />
        <refuser_sous_menu/>
 </entree>
index ac3a5f5..0aa1cf5 100644 (file)
@@ -1,7 +1,11 @@
 [(#SET{id_mot, #ENV{id_mot}|intval})]
 [(#SET{nombre, #ENV{nombre}|intval|?{#ENV{nombre},0}})]
-[(#SET{tri_num, #ENV{tri_num}|ou{#ENV{tri_alpha}}|?{#ENV{tri_num},'titre'}})]
-[(#SET{tri_alpha, #ENV{tri_num}|ou{#ENV{tri_alpha}}|?{#ENV{tri_alpha},'titre'}})]
+[(#SET{tri_num, #ENV{tri,titre}|menus_critere_tri{num}})]
+[(#SET{tri_alpha, #ENV{tri,titre}|menus_critere_tri{alpha}})]
+[(#SET{tri_num_inverse,#GET{tri_num}|match{^!}|oui})]
+[(#SET{tri_alpha_inverse,#GET{tri_alpha}|match{^!}|oui})]
+[(#SET{tri_num,#GET{tri_num}|ltrim{!}})]
+[(#SET{tri_alpha,#GET{tri_alpha}|ltrim{!}})]
 
 [(#ENV{appel_formulaire}|oui)
        [(#SET{titre, #GET{id_mot}|?{#INFO_TITRE{mots, #GET{id_mot}}, <:info_racine_site:>}})]
@@ -23,7 +27,7 @@
                        <BOUCLE_infini(CONDITION){si #GET{nombre}|=={0}}>
                                <B_articles_infini>
                                <ul class="menu-liste menu-items">
-                                       <BOUCLE_articles_infini(ARTICLES){id_mot}{par num #GET{tri_num}}{par #GET{tri_alpha}}>
+                                       <BOUCLE_articles_infini(ARTICLES){id_mot}{par num #GET{tri_num}}{inverse #GET{tri_num_inverse}}{par #GET{tri_alpha}}{inverse #GET{tri_alpha_inverse}}>
                                                <li class="menu-entree item[ (#ID_ARTICLE|menus_exposer{rubrique,#ENV*{env}})]">
                                                        <a href="#URL_ARTICLE">#TITRE</a>
                                                </li>
@@ -34,7 +38,7 @@
                        <BOUCLE_limite(CONDITION){si #GET{nombre}|>{0}}>
                        <B_articles_limite>
                                <ul class="menu-liste menu-items">
-                                       <BOUCLE_articles_limite(ARTICLES){id_mot}{par num #GET{tri_num}}{par #GET{tri_alpha}}{0,#GET{nombre}}>
+                                       <BOUCLE_articles_limite(ARTICLES){id_mot}{par num #GET{tri_num}}{inverse #GET{tri_num_inverse}}{par #GET{tri_alpha}}{inverse #GET{tri_alpha_inverse}}{0,#GET{nombre}}>
                                                <li class="menu-entree item[ (#ID_ARTICLE|menus_exposer{rubrique,#ENV*{env}})]">
                                                        <a href="#URL_ARTICLE">#TITRE</a>
                                                </li>
index 1d32e0c..9710f60 100644 (file)
@@ -5,7 +5,6 @@
        <icone>images/menus_mots.png</icone>
        <parametre nom="id_mot" label="menus:entree_id_mot" obligatoire="oui" />
        <parametre nom="nombre" label="menus:entree_nombre_articles" />
-       <parametre nom="tri_num" label="menus:entree_tri_num_articles" />
-       <parametre nom="tri_alpha" label="menus:entree_tri_alpha_articles" />
+       <parametre nom="tri" label="menus:entree_tri_articles" />
        <refuser_sous_menu/>
 </entree>
index 0790dca..41d23e7 100644 (file)
 [(#SET{articles_max_affiches, #ENV{articles_max_affiches}|intval|?{#ENV{articles_max_affiches},10000}})]\r
 \r
 [(#REM) Tri des rubriques ]\r
-[(#SET{tri_num, #ENV{tri_num}|ou{#ENV{tri_alpha}}|?{#ENV{tri_num},'titre'}})]\r
-[(#SET{tri_alpha, #ENV{tri_num}|ou{#ENV{tri_alpha}}|?{#ENV{tri_alpha},'titre'}})]\r
-[(#SET{tri_num_inverse, #ENV{tri_num_inverse}|=={oui}|?{'1','0'}})]\r
-[(#SET{tri_alpha_inverse, #ENV{tri_alpha_inverse}|=={oui}|?{'1','0'}})]\r
+[(#SET{tri_num, #ENV{tri,titre}|menus_critere_tri{num}})]\r
+[(#SET{tri_alpha, #ENV{tri,titre}|menus_critere_tri{alpha}})]\r
+[(#SET{tri_num_inverse,#GET{tri_num}|match{^!}|oui})]\r
+[(#SET{tri_alpha_inverse,#GET{tri_alpha}|match{^!}|oui})]\r
+[(#SET{tri_num,#GET{tri_num}|ltrim{!}})]\r
+[(#SET{tri_alpha,#GET{tri_alpha}|ltrim{!}})]\r
 \r
 [(#REM) Tri des articles ]\r
-[(#SET{tri_num_articles, #ENV{tri_num_articles}|ou{#ENV{tri_alpha_articles}}|?{#ENV{tri_num_articles},'titre'}})]\r
-[(#SET{tri_alpha_articles, #ENV{tri_num_articles}|ou{#ENV{tri_alpha_articles}}|?{#ENV{tri_alpha_articles},'titre'}})]\r
-[(#SET{tri_num_articles_inverse, #ENV{tri_num_articles_inverse}|=={oui}|?{'1','0'}})]\r
-[(#SET{tri_alpha_articles_inverse, #ENV{tri_alpha_articles_inverse}|=={oui}|?{'1','0'}})]\r
+[(#SET{tri_num_articles, #ENV{tri_articles,titre}|menus_critere_tri{num}})]\r
+[(#SET{tri_alpha_articles, #ENV{tri_articles,titre}|menus_critere_tri{alpha}})]\r
+[(#SET{tri_num_articles_inverse,#GET{tri_num_articles}|match{^!}|oui})]\r
+[(#SET{tri_alpha_articles_inverse,#GET{tri_alpha_articles}|match{^!}|oui})]\r
+[(#SET{tri_num_articles,#GET{tri_num_articles}|ltrim{!}})]\r
+[(#SET{tri_alpha_articles,#GET{tri_alpha_articles}|ltrim{!}})]\r
+\r
 \r
 [(#ENV{appel_formulaire}|oui)\r
        [(#SET{titre, #ENV{id_rubrique}|?{#ENV{id_rubrique}|=={courante}|?{<:menus:info_rubrique_courante:>,#INFO_TITRE{rubrique, #GET{id_rubrique}}}, <:info_racine_site:>}})]\r
index 60c185a..1bb4082 100644 (file)
        <parametre nom="rubriques_max_affichees" label="menus:entree_rubriques_max_affichees" />\r
        <parametre nom="sousrub_cond" label="menus:entree_sousrub_cond" />\r
        <parametre nom="classe_parent" label="menus:entree_classe_parent" />\r
-       <parametre nom="tri_num" label="menus:entree_tri_num" />\r
-       <parametre nom="tri_num_inverse" label="menus:entree_tri_num_inverse" />\r
-       <parametre nom="tri_alpha" label="menus:entree_tri_alpha" />\r
-       <parametre nom="tri_alpha_inverse" label="menus:entree_tri_alpha_inverse" />\r
+       <parametre nom="tri" label="menus:entree_tri" />\r
        <parametre nom="afficher_articles" label="menus:entree_afficher_articles" />\r
        <parametre nom="masquer_articles_uniques" label="menus:entree_masquer_articles_uniques" />\r
        <parametre nom="articles_max" label="menus:entree_articles_max" />\r
        <parametre nom="articles_max_affiches" label="menus:entree_articles_max_affiches" />\r
-       <parametre nom="tri_num_articles" label="menus:entree_tri_num_articles" />\r
-       <parametre nom="tri_num_articles_inverse" label="menus:entree_tri_num_articles_inverse" />\r
-       <parametre nom="tri_alpha_articles" label="menus:entree_tri_alpha_articles" />\r
-       <parametre nom="tri_alpha_articles_inverse" label="menus:entree_tri_alpha_articles_inverse" />\r
+       <parametre nom="tri_articles" label="menus:entree_tri_articles" />\r
        <refuser_sous_menu/>\r
 </entree>\r
index 3ae2299..39f16c9 100644 (file)
@@ -5,17 +5,11 @@
        <parametre nom="niveau" label="menus:entree_niveau" />\r
        <parametre nom="sousrub_cond" label="menus:entree_sousrub_cond" />\r
        <parametre nom="classe_parent" label="menus:entree_classe_parent" />\r
-       <parametre nom="tri_num" label="menus:entree_tri_num" />\r
-       <parametre nom="tri_num_inverse" label="menus:entree_tri_num_inverse" />\r
-       <parametre nom="tri_alpha" label="menus:entree_tri_alpha" />\r
-       <parametre nom="tri_alpha_inverse" label="menus:entree_tri_alpha_inverse" />\r
+       <parametre nom="tri" label="menus:entree_tri" />\r
        <parametre nom="afficher_articles" label="menus:entree_afficher_articles" />\r
        <parametre nom="masquer_articles_uniques" label="menus:entree_masquer_articles_uniques" />\r
        <parametre nom="articles_max" label="menus:entree_articles_max" />\r
        <parametre nom="articles_max_affiches" label="menus:entree_articles_max_affiches" />\r
-       <parametre nom="tri_num_articles" label="menus:entree_tri_num_articles" />\r
-       <parametre nom="tri_num_articles_inverse" label="menus:entree_tri_num_articles_inverse" />\r
-       <parametre nom="tri_alpha_articles" label="menus:entree_tri_alpha_articles" />\r
-       <parametre nom="tri_alpha_articles_inverse" label="menus:entree_tri_alpha_articles_inverse" />\r
+       <parametre nom="tri_articles" label="menus:entree_tri_articles" />\r
        <refuser_sous_menu/>\r
 </entree>\r
index 963514b..8d55f1e 100644 (file)
@@ -21,11 +21,109 @@ function menus_upgrade($nom_meta_version_base, $version_cible){
        $maj['0.5.1'] = array(\r
                array('sql_updateq', 'spip_menus_entrees', array('type_entree'=>'rubriques_completes'), 'type_entree = '.sql_quote('rubriques')),\r
        );\r
-       \r
+       $maj['0.5.2'] = array(\r
+               array('menus_fusionne_critere_tri_inverse'),\r
+       );\r
+       $maj['0.5.3'] = array(\r
+               array('menus_fusionne_critere_tri_num_alpha'),\r
+       );\r
+\r
        include_spip('base/upgrade');\r
        maj_plugin($nom_meta_version_base, $version_cible, $maj);\r
 }\r
 \r
+function menus_fusionne_critere_tri_num_alpha(){\r
+\r
+       $res = sql_select("*","spip_menus_entrees","","","id_menus_entree");\r
+       while ($row = sql_fetch($res)){\r
+               #var_dump($row);\r
+               $params = unserialize($row['parametres']);\r
+\r
+               $change = false;\r
+               if (isset($params['tri_num']) AND isset($params['tri_alpha'])){\r
+                       $tri = "";\r
+                       if (strlen($params['tri_num'])){\r
+                               $tri = "num ".trim($params['tri_num']);\r
+                               $tri = str_replace("num !","!num ",$tri);\r
+                       }\r
+                       else {\r
+                               $tri = trim($params['tri_alpha']);\r
+                       }\r
+                       $params['tri'] = $tri;\r
+                       unset($params['tri_num']);\r
+                       unset($params['tri_alpha']);\r
+                       $change = true;\r
+               }\r
+               if (isset($params['tri_num_articles']) AND isset($params['tri_alpha_articles'])){\r
+                       $tri = "";\r
+                       if (strlen($params['tri_num_articles'])){\r
+                               $tri = "num ".trim($params['tri_num_articles']);\r
+                               $tri = str_replace("num !","!num ",$tri);\r
+                       }\r
+                       else {\r
+                               $tri = trim($params['tri_alpha_articles']);\r
+                       }\r
+                       $params['tri_articles'] = $tri;\r
+                       unset($params['tri_num_articles']);\r
+                       unset($params['tri_alpha_articles']);\r
+                       $change = true;\r
+               }\r
+\r
+               if ($change){\r
+                       #var_dump($params);\r
+                       $params = serialize($params);\r
+                       sql_updateq("spip_menus_entrees",array('parametres'=>$params),"id_menus_entree=".intval($row['id_menus_entree']));\r
+               }\r
+\r
+       }\r
+}\r
+\r
+function menus_fusionne_critere_tri_inverse(){\r
+\r
+       $res = sql_select("*","spip_menus_entrees","","","id_menus_entree");\r
+       while ($row = sql_fetch($res)){\r
+               #var_dump($row);\r
+               $params = unserialize($row['parametres']);\r
+\r
+               $change = false;\r
+               if (isset($params['tri_num_inverse'])\r
+                       AND $params['tri_num_inverse']=='oui'\r
+                 AND strlen($params['tri_num'])){\r
+                       $params['tri_num'] = "!".$params['tri_num'];\r
+                       $change = true;\r
+                       unset($params['tri_num_inverse']);\r
+               }\r
+               if (isset($params['tri_alpha_inverse'])\r
+                       AND $params['tri_alpha_inverse']=='oui'\r
+                 AND strlen($params['tri_alpha'])){\r
+                       $params['tri_alpha'] = "!".$params['tri_alpha'];\r
+                       $change = true;\r
+                       unset($params['tri_alpha_inverse']);\r
+               }\r
+               if (isset($params['tri_num_articles_inverse'])\r
+                       AND $params['tri_num_articles_inverse']=='oui'\r
+                 AND strlen($params['tri_num_articles'])){\r
+                       $params['tri_num_articles'] = "!".$params['tri_num_articles'];\r
+                       $change = true;\r
+                       unset($params['tri_num_articles_inverse']);\r
+               }\r
+               if (isset($params['tri_alpha_articles_inverse'])\r
+                       AND $params['tri_alpha_articles_inverse']=='oui'\r
+                 AND strlen($params['tri_alpha_articles'])){\r
+                       $params['tri_alpha_articles'] = "!".$params['tri_alpha_articles'];\r
+                       $change = true;\r
+                       unset($params['tri_alpha_articles_inverse']);\r
+               }\r
+\r
+               if ($change){\r
+                       $params = serialize($params);\r
+                       sql_updateq("spip_menus_entrees",array('parametres'=>$params),"id_menus_entree=".intval($row['id_menus_entree']));\r
+                       #var_dump($params);\r
+               }\r
+\r
+       }\r
+}\r
+\r
 // Désinstallation\r
 function menus_vider_tables($nom_meta_version_base){\r
        include_spip('base/abstract_sql');\r
index 1d84cdf..c6c5e7b 100644 (file)
@@ -22,4 +22,27 @@ function menus_exposer($id_objet, $objet, $env, $on='on active', $off=''){
        include_spip('public/quete');
        return calcul_exposer($id_objet, $primary, $env, '', $primary) ? $on : $off;
 }
-?>
+
+/**
+ * @param $tri
+ * @param $quoi
+ * @return string
+ */
+function menus_critere_tri($tri,$quoi){
+       $tri = trim($tri);
+       $inverse = ((strncmp($tri,"!",1)==0)?"!":"");
+       if ($inverse)
+               $tri = ltrim($tri,"!");
+       $num = ((strncmp($tri,"num ",4)==0)?"num ":"");
+       if ($num){
+               $tri = trim(substr($tri,4));
+       }
+
+       // num
+       if ($quoi=='num'){
+               return $num?"$inverse$tri":"";
+       }
+       // alpha : on renvoie toujours le meme critre que num si num demande
+       // num titre => {par num titre}{par titre}
+       return "$inverse$tri";
+}
\ No newline at end of file
index e766ca3..a6d027b 100644 (file)
@@ -1,12 +1,12 @@
 <paquet\r
        prefix="menus"\r
        categorie="navigation"\r
-       version="1.4.5"\r
-       etat="test"\r
+       version="1.5.3"\r
+       etat="stable"\r
        compatibilite="[3.0.0;3.0.*]"\r
        logo="prive/themes/spip/images/menu-32.png"\r
-       documentation="http://www.spip-contrib.net/Plugin-Menus"\r
-       schema="0.5.1"\r
+       documentation="http://contrib.spip.net/Menus-3139"\r
+       schema="0.5.3"\r
 >\r
        <nom>Menus</nom>\r
 \r
@@ -28,7 +28,7 @@
        <menu nom="menus_tous" titre="menus:editer_menus_titre" parent="menu_squelette" icone="images/menu-16.png" />\r
 \r
        <!-- pour _T_ou_typo -->\r
-       <necessite nom="saisies" compatibilite="[1.9.10;]" />\r
+       <necessite nom="saisies" compatibilite="[1.14.0;]" />\r
        \r
        <utilise nom="Z" />\r
        <utilise nom="Zpip" />\r
@@ -36,4 +36,4 @@
        <utilise nom="spipr_blog" />\r
        <utilise nom="spipr_dist" />\r
        <utilise nom="spipr_doc" />\r
-</paquet>\r
+</paquet>
\ No newline at end of file
index b9143b1..40cc501 100644 (file)
@@ -1,2 +1,2 @@
-<h1>Configurer les entrées du plugin Menus</h1>
+<h1><:menus:configurer_titre:></h1>
 <div class="ajax">#FORMULAIRE_CONFIGURER_MENUS</div>
index 9a2fabc..e4f9326 100644 (file)
@@ -1,10 +1,10 @@
 <svn_revision>
 <text_version>
 Origine: file:///home/svn/repository/spip-zone/_plugins_/menus/trunk
-Revision: 73250
-Dernier commit: 2013-06-04 14:42:03 +0200 
+Revision: 84013
+Dernier commit: 2014-08-04 14:44:56 +0200 
 </text_version>
 <origine>file:///home/svn/repository/spip-zone/_plugins_/menus/trunk</origine>
-<revision>73250</revision>
-<commit>2013-06-04 14:42:03 +0200 </commit>
+<revision>84013</revision>
+<commit>2014-08-04 14:44:56 +0200 </commit>
 </svn_revision>
\ No newline at end of file
index 1cf4c1e..caf9a21 100644 (file)
@@ -1,72 +1,55 @@
 <div class="formulaire_spip formulaire_configurer formulaire_#FORM">\r
 \r
-   [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]\r
-   [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]\r
+       [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]\r
+       [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]\r
 \r
-   <form method="post" action="#ENV{action}">\r
-   <div>\r
-      #ACTION_FORMULAIRE{#ENV{action}}\r
+       <form method="post" action="#ENV{action}">\r
+       <div>\r
+               #ACTION_FORMULAIRE{#ENV{action}}\r
 \r
-      <ul>\r
-         <li class="fieldset">\r
-            <fieldset>\r
-               <h3 class="legend"><:multilang:cfg_activer:></h3>\r
-               <ul>\r
-                  [(#SAISIE{oui_non,siteconfig,\r
-                     label=<:multilang:cfg_lbl_siteconfig:>,\r
-                     defaut=on}\r
-                  )]\r
-                  #SET{defaut_on,#LISTE{rubrique,auteur,document}}\r
-                  <BOUCLE_objets(DATA){source tableau,#REM|lister_tables_objets_sql}>\r
-                  [(#VALEUR{editable}|=={oui}|oui)\r
-                       [(#SET{name,[(#CLE|objet_type)]})]\r
-                       [(#SET{label,[(#VALEUR{texte_objets}|_T)]})]\r
-                                       [(#SAISIE{oui_non,#GET{name},\r
-                            label=#GET{label},\r
-                            defaut=''})]\r
-                                       ]</BOUCLE_objets>\r
-                  \r
-                                 [(#PLUGIN{agenda}|oui)\r
-                                         [(#SAISIE{oui_non,evenement,\r
-                            label=<:multilang:cfg_lbl_evenement:>,\r
-                            defaut=''}\r
-                         )]\r
-                                 ]\r
-                                 [(#PLUGIN{gis}|oui)\r
-                                         [(#SAISIE{oui_non,gis,\r
-                            label=<:multilang:cfg_lbl_gis:>,\r
-                            defaut=''}\r
-                         )]\r
-                                 ]\r
-                                 [(#SAISIE{oui_non,multilang_public,\r
-                     label=<:multilang:cfg_lbl_espace_public:>,\r
-                     defaut=off}\r
-                  )]\r
-                                 [(#SAISIE{oui_non,multilang_crayons,\r
-                     label=<:multilang:cfg_lbl_crayons:>,\r
-                                        explication=<:multilang:cfg_explication_crayons:>,\r
-                     defaut=''}\r
-                  )]\r
-               </ul>\r
-            </fieldset>\r
-         </li>\r
-         <li class="fieldset">\r
-                       <fieldset>\r
-                               <h3 class="legend"><:multilang:cfg_langues:></h3>\r
-                               [(#SET{langues,[(#CONFIG{langues_multilingue}|explode{','}|multilang_nommer_langues)]})]\r
-                               [(#SAISIE{selection_multiple,langues_utilisees,\r
-                                       label=<:multilang:label_langues_utilisees:>,\r
-                                       explication=<:multilang:explication_langues_utilisees:>,\r
-                                       cacher_option_intro=oui,\r
-                                       datas=#GET{langues},\r
-                                       size=[(#GET{langues}|count|>{10}|?{10,#GET{langues}|count})]})]\r
-                       </fieldset>\r
-               </li>\r
-      </ul>\r
-\r
-      <p class="boutons">\r
-         <input type="submit" name="_cfg_ok" class="submit" value="<:bouton_enregistrer:>" />\r
-      </p>\r
-   </div>\r
-   </form>\r
+               <ul>\r
+                       <li class="fieldset">\r
+                               <fieldset>\r
+                                       <h3 class="legend"><:multilang:cfg_activer:></h3>\r
+                                       <ul>\r
+                                               [(#SAISIE{oui_non,siteconfig,\r
+                                                       label=<:multilang:cfg_lbl_siteconfig:>,\r
+                                                       defaut=on})]\r
+                                               #SET{defaut_on,#LISTE{rubrique,auteur,document}}\r
+                                               <BOUCLE_objets(DATA){source tableau,#REM|lister_tables_objets_sql}>\r
+                                               [(#VALEUR{editable}|=={oui}|oui)\r
+                                                       [(#SET{name,[(#CLE|objet_type)]})]\r
+                                                       [(#SET{label,[(#VALEUR{texte_objets}|_T)]})]\r
+                                                       [(#SAISIE{oui_non,#GET{name},\r
+                                                               label=#GET{label},\r
+                                                               defaut=''})]\r
+                                               ]</BOUCLE_objets>\r
+                                               [(#SAISIE{oui_non,multilang_public,\r
+                                                       label=<:multilang:cfg_lbl_espace_public:>,\r
+                                                       defaut=off})]\r
+                                               [(#SAISIE{oui_non,multilang_crayons,\r
+                                                       label=<:multilang:cfg_lbl_crayons:>,\r
+                                                       explication=<:multilang:cfg_explication_crayons:>,\r
+                                                       defaut=''})]\r
+                                       </ul>\r
+                               </fieldset>\r
+                       </li>\r
+                       <li class="fieldset">\r
+                               <fieldset>\r
+                                       <h3 class="legend"><:multilang:cfg_langues:></h3>\r
+                                       [(#SET{langues,[(#CONFIG{langues_multilingue}|explode{','}|multilang_nommer_langues)]})]\r
+                                       [(#SAISIE{selection_multiple,langues_utilisees,\r
+                                               label=<:multilang:label_langues_utilisees:>,\r
+                                               explication=<:multilang:explication_langues_utilisees:>,\r
+                                               cacher_option_intro=oui,\r
+                                               datas=#GET{langues},\r
+                                               size=[(#GET{langues}|count|>{10}|?{10,#GET{langues}|count})]})]\r
+                               </fieldset>\r
+                       </li>\r
+               </ul>\r
+               <p class="boutons">\r
+                       <input type="submit" name="_cfg_ok" class="submit" value="<:bouton_enregistrer:>" />\r
+               </p>\r
+       </div>\r
+       </form>\r
 </div>\r
index 00e7d84..19a330b 100644 (file)
@@ -7,22 +7,22 @@ function generer_multilang_init(){
        if(count($langues = explode(',',$GLOBALS["meta"]["langues_multilingue"])) > 1){
                include_spip('inc/config');
                $config = lire_config('multilang',array());
-               $root = '' ;
+               $root = array();
                if(isset($config['multilang_public']))
                        unset($config['multilang_public']);
                if(isset($config['multilang_crayons']))
                        unset($config['multilang_crayons']);
                if(isset($config['siteconfig']) && $config['siteconfig']){
-                       $root .= 'div#configurer-accueil,div.formulaire_configurer_identite' ; // Config Site
+                       $root[] = 'div#configurer-accueil,div.formulaire_configurer_identite' ; // Config Site
                        unset($config['siteconfig']);
                }
                
                foreach($config as $conf => $val){
                        if($val == 'on') {
                                if($conf == 'document')
-                                       $root .= ',div#portfolio_portfolio,div#portfolio_documents,div#liste_documents,div.formulaire_editer_document' ;
+                                       $root[] = 'div#portfolio_portfolio,div#portfolio_documents,div#liste_documents,div.formulaire_editer_document' ;
                                else
-                                       $root .= ',div.formulaire_editer_'.$conf;
+                                       $root[] .= 'div.formulaire_editer_'.$conf;
                                unset($config[$conf]);
                        }
                }
@@ -52,7 +52,7 @@ function generer_multilang_init(){
 
        jQuery(document).ready(function(){
                function multilang_init(){
-                       var root = "'.$root.'";
+                       var root = "'.implode(",",$root).'";
                        var fields_selector = "textarea:not(textarea#adresses_secondaires,textarea#repetitions),input:text:not(input#new_login,input#email,#titreparent,input.date,input.heure,input#largeur,input#hauteur,.ac_input,#url_syndic,#url_auto,#champ_geocoder,#champ_lat,#champ_lon,#champ_zoom,#places,*.nomulti),.multilang";
                        // on exclue aussi les form d upload (Pour les vignettes de docs, logos...)
                        var forms_selector = "form[class!=\'form_upload\'][class!=\'form_upload_icon\']";
index f54ac3e..d505a88 100644 (file)
@@ -1,16 +1,20 @@
 <traduction module="multilang" gestionnaire="salvatore" url="http://trad.spip.net" source="svn://zone.spip.org/spip-zone/_plugins_/multilang/trunk/lang/" reference="fr">
-       <langue code="en" url="http://trad.spip.net/tradlang_module/multilang?lang_cible=en">
+       <langue code="en" url="http://trad.spip.net/tradlang_module/multilang?lang_cible=en" total="19" traduits="19" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="jaro" lien="http://trad.spip.net/auteur/jaro" />
                <traducteur nom="kent1" lien="http://trad.spip.net/auteur/kent1" />
        </langue>
-       <langue code="es" url="http://trad.spip.net/tradlang_module/multilang?lang_cible=es">
-               <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel" />
+       <langue code="es" url="http://trad.spip.net/tradlang_module/multilang?lang_cible=es" total="19" traduits="19" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel-s-bujaldon" />
        </langue>
-       <langue code="fa" url="http://trad.spip.net/tradlang_module/multilang?lang_cible=fa">
+       <langue code="fa" url="http://trad.spip.net/tradlang_module/multilang?lang_cible=fa" total="19" traduits="19" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="Davood Hossein" lien="http://trad.spip.net/auteur/davood-hossein" />
        </langue>
-       <langue code="fr" />
-       <langue code="sk" url="http://trad.spip.net/tradlang_module/multilang?lang_cible=sk">
+       <langue code="fr" url="http://trad.spip.net/tradlang_module/multilang?lang_cible=fr" total="19" traduits="19" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+       </langue>
+       <langue code="nl" url="http://trad.spip.net/tradlang_module/multilang?lang_cible=nl" total="19" traduits="19" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Hanjo" lien="http://trad.spip.net/auteur/hanjo" />
+       </langue>
+       <langue code="sk" url="http://trad.spip.net/tradlang_module/multilang?lang_cible=sk" total="19" traduits="19" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="jaro" lien="http://trad.spip.net/auteur/jaro" />
        </langue>
 </traduction>
index 45c174c..171f89c 100644 (file)
@@ -14,18 +14,9 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'cfg_effacer' => 'Re-init',
        'cfg_explication_crayons' => 'Requires multilang to be activated in the public space of the site.',
        'cfg_langues' => 'Used languages',
-       'cfg_lbl_article' => 'of the articles',
-       'cfg_lbl_auteur' => 'of the authors',
-       'cfg_lbl_breve' => 'of the news items',
        'cfg_lbl_crayons' => 'Use multilang in the pencils',
-       'cfg_lbl_document' => 'of the documents',
        'cfg_lbl_espace_public' => 'Use multilang in the public space',
-       'cfg_lbl_evenement' => 'of the events',
        'cfg_lbl_formstables' => 'of forms&tables',
-       'cfg_lbl_gis' => 'geolocated points',
-       'cfg_lbl_motcle' => 'of the keywords',
-       'cfg_lbl_rubrique' => 'of the sections',
-       'cfg_lbl_site' => 'of the websites',
        'cfg_lbl_siteconfig' => 'of the website configuration',
        'cfg_titre_multilang' => 'Multilang',
        'champ_numero' => 'Number',
index 016c7d4..a147e1a 100644 (file)
@@ -14,18 +14,9 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'cfg_effacer' => 'Reiniciar',
        'cfg_explication_crayons' => 'Se requiere activar Multilang en el espacio público del sitio.',
        'cfg_langues' => 'Idiomas utilizados',
-       'cfg_lbl_article' => 'artículos',
-       'cfg_lbl_auteur' => 'autores',
-       'cfg_lbl_breve' => 'breves',
        'cfg_lbl_crayons' => 'Utilizar Multilang en los lápices',
-       'cfg_lbl_document' => 'documentos',
        'cfg_lbl_espace_public' => 'Utilizar Multilang en el espacio público del sitio',
-       'cfg_lbl_evenement' => 'Eventos',
        'cfg_lbl_formstables' => 'forms&tables',
-       'cfg_lbl_gis' => 'puntos geolocalizados',
-       'cfg_lbl_motcle' => 'palabaras clave',
-       'cfg_lbl_rubrique' => 'secciones',
-       'cfg_lbl_site' => 'sitios',
        'cfg_lbl_siteconfig' => 'de la configuración del sitio',
        'cfg_titre_multilang' => 'Multilang',
        'champ_numero' => 'Número',
index 0ff0f62..57c1f12 100644 (file)
@@ -14,18 +14,9 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'cfg_effacer' => 'بازنصب',
        'cfg_explication_crayons' => 'لزوم فعال سازي چندزبانگي در فضاي همگاني سايت.',
        'cfg_langues' => 'زبان‌هاي مورد استفاده ',
-       'cfg_lbl_article' => 'مقاله‌ها',
-       'cfg_lbl_auteur' => 'نويسندگان',
-       'cfg_lbl_breve' => 'خبرها',
        'cfg_lbl_crayons' => 'استفاده از چندزبانگي در مدادها',
-       'cfg_lbl_document' => 'سندها',
        'cfg_lbl_espace_public' => 'استفاده از چندزبانگي در فضاي همگاني سايت',
-       'cfg_lbl_evenement' => 'برنامه‌ها',
        'cfg_lbl_formstables' => 'فرم‌ها/جدول‌ها',
-       'cfg_lbl_gis' => 'نقاط محلي‌سازي شده (geolocated) ',
-       'cfg_lbl_motcle' => 'كليدواژه‌ها',
-       'cfg_lbl_rubrique' => 'بخش‌ها',
-       'cfg_lbl_site' => 'سايت‌ها',
        'cfg_lbl_siteconfig' => 'از پيكربندي سايت',
        'cfg_titre_multilang' => 'چندزبانگي',
        'champ_numero' => 'شماره ',
index 02ed7bd..76dafba 100644 (file)
@@ -6,37 +6,28 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // C
-       'cfg_activer' => 'Activer Multilang sur la page d\'édition :',
+       'cfg_activer' => 'Activer Multilang sur la page d’édition :',
        'cfg_boite_multilang' => 'Configuration du plugin Multilang',
-       'cfg_descr_multilang' => 'Multilang : Plugin de gestion des tags multi',
+       'cfg_descr_multilang' => 'Multilang : Plugin de gestion des tags multi',
        'cfg_effacer' => 'Re-initialiser',
-       'cfg_explication_crayons' => 'Nécessite que multilang soit activé dans l\'espace public du site.',
+       'cfg_explication_crayons' => 'Nécessite que multilang soit activé dans lespace public du site.',
        'cfg_langues' => 'Langues utilisées',
-       'cfg_lbl_article' => 'des articles',
-       'cfg_lbl_auteur' => 'des auteurs',
-       'cfg_lbl_breve' => 'des breves',
        'cfg_lbl_crayons' => 'Utiliser multilang dans les crayons',
-       'cfg_lbl_document' => 'des documents',
-       'cfg_lbl_espace_public' => 'Utiliser multilang dans l\'espace public du site',
-       'cfg_lbl_evenement' => 'des évènements',
+       'cfg_lbl_espace_public' => 'Utiliser multilang dans l’espace public du site',
        'cfg_lbl_formstables' => 'des forms&tables',
-       'cfg_lbl_gis' => 'des points géolocalisés',
-       'cfg_lbl_motcle' => 'des mots clés',
-       'cfg_lbl_rubrique' => 'des rubriques',
-       'cfg_lbl_site' => 'des sites',
        'cfg_lbl_siteconfig' => 'de la configuration du site',
        'cfg_titre_multilang' => 'Multilang',
        'champ_numero' => 'Numéro',
        'configuration_multilang' => 'Multilang',
 
        // E
-       'explication_langues_utilisees' => 'Sélectionnez les langues à utiliser pour le menu de multilang. N\'en sélectionnez aucune pour toutes les utiliser.',
+       'explication_langues_utilisees' => 'Sélectionnez les langues à utiliser pour le menu de multilang. Nen sélectionnez aucune pour toutes les utiliser.',
 
        // L
        'label_langues_utilisees' => 'Langues utilisées par multilang',
        'lien_desactiver' => 'Tout',
-       'lien_multi_title' => 'Éditer les champs multilingues en «@lang@»',
-       'lien_multi_title_sans' => 'La version «@lang@» est incomplète. Cliquez pour l\'éditer.',
+       'lien_multi_title' => 'Éditer les champs multilingues en « @lang@ »',
+       'lien_multi_title_sans' => 'La version « @lang@ » est incomplète. Cliquez pour l’éditer.',
 
        // M
        'message_champs_readonly' => 'Les champs multilingues sont en lecture seule, choisissez une langue pour les modifier'
diff --git a/www/plugins/multilang/lang/multilang_nl.php b/www/plugins/multilang/lang/multilang_nl.php
new file mode 100644 (file)
index 0000000..82a0409
--- /dev/null
@@ -0,0 +1,38 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/multilang?lang_cible=nl
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // C
+       'cfg_activer' => 'Multilang activeren op de redactiepagina:',
+       'cfg_boite_multilang' => 'Configuratie van plugin Multilang',
+       'cfg_descr_multilang' => 'Multilang: Plugin voor het beheer van meertalige tags',
+       'cfg_effacer' => 'Herinitialiseren',
+       'cfg_explication_crayons' => 'Multilang moet in de publieke site zijn geäctiveerd.',
+       'cfg_langues' => 'Gebruikte talen',
+       'cfg_lbl_crayons' => 'Gebruik Multilang in Crayons',
+       'cfg_lbl_espace_public' => 'Gebruik Multilang in de publieke site',
+       'cfg_lbl_formstables' => 'van forms&tables',
+       'cfg_lbl_siteconfig' => 'van de configuratie van de site',
+       'cfg_titre_multilang' => 'Multilang',
+       'champ_numero' => 'Nummer',
+       'configuration_multilang' => 'Multilang',
+
+       // E
+       'explication_langues_utilisees' => 'Kies de voor het menu van Multilang te gebruiken talen. Maak geen keuze wanneer je alle talen wilt gebruiken.',
+
+       // L
+       'label_langues_utilisees' => 'Door Multilang gebruikte talen',
+       'lien_desactiver' => 'Alles',
+       'lien_multi_title' => 'Pas de meertalige velden aan in het « @lang@ »',
+       'lien_multi_title_sans' => 'De versie « @lang@ » is onvolledig. Klik om hem aan te passen.',
+
+       // M
+       'message_champs_readonly' => 'De meertalige velden kunnen alleen worden gelezen, kies een taal om ze aan te passen'
+);
+
+?>
index 14fa8da..1ff387e 100644 (file)
@@ -14,19 +14,10 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'cfg_effacer' => 'Znova spustiť',
        'cfg_explication_crayons' => 'Treba aktivovať multilang na používanie na verejne prístupnej stránke.',
        'cfg_langues' => 'Používané jazyky',
-       'cfg_lbl_article' => 'článkov',
-       'cfg_lbl_auteur' => 'autorov',
-       'cfg_lbl_breve' => 'noviniek',
        'cfg_lbl_crayons' => 'Používať multilang v module crayons',
-       'cfg_lbl_document' => 'súborov',
        'cfg_lbl_espace_public' => 'Používať multilang na verejne prístupnej stránke',
-       'cfg_lbl_evenement' => 'udalostí',
        'cfg_lbl_formstables' => 'formulárov a tabuliek',
-       'cfg_lbl_gis' => 'geolokalizovaných bodov',
-       'cfg_lbl_motcle' => 'kľúčových slov',
-       'cfg_lbl_rubrique' => 'rubrík',
-       'cfg_lbl_site' => 'stránok',
-       'cfg_lbl_siteconfig' => 'nastavení stránky',
+       'cfg_lbl_siteconfig' => 'Nastavenia stránky',
        'cfg_titre_multilang' => 'Multilang',
        'champ_numero' => 'Číslo',
        'configuration_multilang' => 'Multilang',
index a5954f5..b1d08dc 100644 (file)
@@ -1,14 +1,20 @@
 <traduction module="paquet-multilang" gestionnaire="salvatore" url="http://trad.spip.net" source="svn://zone.spip.org/spip-zone/_plugins_/multilang/trunk/lang/" reference="fr">
-       <langue code="en" />
-       <langue code="es" url="http://trad.spip.net/tradlang_module/paquet-multilang?lang_cible=es">
-               <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel" />
+       <langue code="en" url="http://trad.spip.net/tradlang_module/paquet-multilang?lang_cible=en" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
        </langue>
-       <langue code="fr" />
-       <langue code="it" />
-       <langue code="ru" url="http://trad.spip.net/tradlang_module/paquet-multilang?lang_cible=ru">
+       <langue code="es" url="http://trad.spip.net/tradlang_module/paquet-multilang?lang_cible=es" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel-s-bujaldon" />
+       </langue>
+       <langue code="fr" url="http://trad.spip.net/tradlang_module/paquet-multilang?lang_cible=fr" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+       </langue>
+       <langue code="it" url="http://trad.spip.net/tradlang_module/paquet-multilang?lang_cible=it" total="2" traduits="1" relire="0" modifs="0" nouveaux="1" pourcent="50.00">
+       </langue>
+       <langue code="nl" url="http://trad.spip.net/tradlang_module/paquet-multilang?lang_cible=nl" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Hanjo" lien="http://trad.spip.net/auteur/hanjo" />
+       </langue>
+       <langue code="ru" url="http://trad.spip.net/tradlang_module/paquet-multilang?lang_cible=ru" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="nazar" lien="http://trad.spip.net/auteur/nazar" />
        </langue>
-       <langue code="sk" url="http://trad.spip.net/tradlang_module/paquet-multilang?lang_cible=sk">
+       <langue code="sk" url="http://trad.spip.net/tradlang_module/paquet-multilang?lang_cible=sk" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="jaro" lien="http://trad.spip.net/auteur/jaro" />
        </langue>
 </traduction>
index 7bc8904..494396a 100644 (file)
@@ -7,7 +7,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // M
        'multilang_description' => 'Ce plugin rajoute un menu de langues du type <code>[fr] [en] [it]</code> au-dessus de chaque formulaire, en fonction des langues activées dans la configuration du site.',
-       'multilang_slogan' => 'Gérer l\'affichage du contenu des tags multi par un menu'
+       'multilang_slogan' => 'Gérer laffichage du contenu des tags multi par un menu'
 );
 
 ?>
index 74d8d3d..bc0ab62 100644 (file)
@@ -8,8 +8,7 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // M
-       'multilang_description' => 'Questo plugin aggiunge un menu di linguaggi di tipo <code>[fr] [it] [it]</code> nella parte superiore di ogni modulo, a seconda della lingua selezionata nella configurazione del sito.',
-       'multilang_slogan' => 'Gérer l\'affichage du contenu des tags multi par un menu' # NEW
+       'multilang_description' => 'Questo plugin aggiunge un menu di linguaggi di tipo <code>[fr] [it] [it]</code> nella parte superiore di ogni modulo, a seconda della lingua selezionata nella configurazione del sito.'
 );
 
 ?>
diff --git a/www/plugins/multilang/lang/paquet-multilang_nl.php b/www/plugins/multilang/lang/paquet-multilang_nl.php
new file mode 100644 (file)
index 0000000..0aa4618
--- /dev/null
@@ -0,0 +1,15 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/paquet-multilang?lang_cible=nl
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // M
+       'multilang_description' => 'Deze plugin voegt een taalkeuzemenu toe van het type <code>[fr] [en] [nl]</code> bovenaan ieder formulier en gebaseerd op de taalinstellingen van de site.',
+       'multilang_slogan' => 'Regel de titels van de labels aan de hand van een menu'
+);
+
+?>
index 85058c8..e4a253b 100644 (file)
@@ -15,9 +15,7 @@ function multilang_insert_head_css($flux){
        \r
        $multilang_public = lire_config('multilang/multilang_public','off');\r
        if($multilang_public == 'on'){\r
-\r
                static $done = false;\r
-\r
                if (!$done) {\r
                        $done = true;\r
                        $flux .= '<link rel="stylesheet" href="'.url_absolue(generer_url_public('multilang.css')).'" type="text/css" media="all" />';\r
@@ -85,6 +83,27 @@ function multilang_inserer_head($config=array()){
        return $data;\r
 }\r
 \r
+/**\r
+ * Insertion dans le pipeline formulaire_traiter (SPIP)\r
+ * On purge le cache js à chaque changement de la config de langue\r
+ * \r
+ * @param $flux array\r
+ *             Le contexte du pipeline\r
+ * @return $flux array\r
+ *             Le contexte du pipeline modifié\r
+ */\r
+function multilang_formulaire_traiter($flux){\r
+       if($flux['args']['form'] == 'configurer_multilinguisme'){\r
+               include_spip('inc/invalideur');\r
+               $rep_js = _DIR_VAR.'cache-js/';\r
+               $rep_css = _DIR_VAR.'cache-css/';\r
+               purger_repertoire($rep_js);\r
+               purger_repertoire($rep_css);\r
+               suivre_invalideur('1');\r
+       }\r
+       return $flux;\r
+}\r
+\r
 /**\r
  * Insertion dans le pipeline affichage_final (SPIP)\r
  * \r
@@ -95,40 +114,44 @@ function multilang_inserer_head($config=array()){
  * @return string $flux Le contenu de la page modifiée \r
  */\r
 function multilang_affichage_final($flux){\r
-       if(isset($_REQUEST['page']) && $_REQUEST['page'] == 'crayons.js'){\r
+       if(isset($_REQUEST['page']) && $_REQUEST['page'] == 'crayons.js' && (count($langues = explode(',',$GLOBALS["meta"]["langues_multilingue"])) > 1)){\r
                if(!function_exists('lire_config'))\r
                        include_spip('inc/config');\r
                $config = lire_config('multilang',array());\r
-               \r
+\r
                /**\r
                 * On n'utilise multilang que si l'espace public est activé ainsi que les crayons\r
                 */\r
                if(($config['multilang_public'] == 'on') && ($config['multilang_crayons'] == 'on')){\r
                        unset($config['multilang_public']);\r
                        unset($config['multilang_crayons']);\r
-                       $root = '' ;\r
-                       \r
+                       $root = array();\r
+\r
                        if(isset($config['siteconfig']) && $config['siteconfig']){\r
-                               $root .= ',input[type=hidden][name*=name_][value|=meta-valeur]';\r
+                               $root[] = 'input[type=hidden][name*=name_][value|=meta-valeur]';\r
                                unset($config['siteconfig']);\r
                        }\r
-                       \r
+\r
                        foreach($config as $conf => $val){\r
-                               if($val == 'on') { // Articles\r
-                                       $root .= ',input[type=hidden][name*=name_][value|='.$conf.']:not(input[value|='.$conf.'-logo])';\r
+                               if($conf == 'gis') // Les points gis sont traités bizarrement dans les crayons qui enlèvent purement et simplement leur 's'\r
+                                       $conf = 'gi';\r
+                               if($val == 'on') {\r
+                                       $root[] = 'input[type=hidden][name*=name_][value|='.$conf.']:not(input[value|='.$conf.'-logo]):not(input[value|='.$conf.'-vignette]):not(input[value|='.$conf.'-fichier])';\r
                                        unset($config[$conf]);\r
                                }\r
                        }\r
                        $texte = '\r
                                var crayons_multilang_init = function(){\r
-                                       var crayons_root = ".formulaire_spip:has('.$root.')";\r
-                                       var fields_selector = "textarea,input:text:not(input.date,input.heure,*.nomulti)";\r
-                                       var forms_selector = "form[class!=\'form_upload\'][class!=\'form_upload_icon\']";\r
-                                       var root_opt = "form:has(.multilang)";\r
-                                       var fields_selector_opt = ".multilang";\r
+                                       if(typeof(multilang_init_lang) == "function"){\r
+                                               var crayons_root = ".formulaire_spip:has('.implode(",",$root).')",\r
+                                                       fields_selector = "textarea,input:text:not(input.date,input.heure,*.nomulti)",\r
+                                                       forms_selector = "form[class!=\'form_upload\'][class!=\'form_upload_icon\']",\r
+                                                       root_opt = "form:has(.multilang)",\r
+                                                       fields_selector_opt = ".multilang";\r
                                        multilang_init_lang({fields:fields_selector,fields_opt:fields_selector_opt,root:crayons_root,root_opt:root_opt,forms:forms_selector,init_done:false});\r
+                                       }\r
                                }\r
-                               \r
+\r
                                cQuery(document).ready(function(){\r
                                        if(typeof onAjaxLoad == "function") onAjaxLoad(crayons_multilang_init);\r
                                        crayons_multilang_init();\r
index 239700c..bc90fe4 100644 (file)
@@ -1,9 +1,9 @@
 <paquet
        prefix="multilang"
        categorie="edition"
-       version="0.9.2"
+       version="1.1.0"
        etat="stable"
-       compatibilite="[3.0.0;3.0.99]"
+       compatibilite="[3.0.0;3.0.*]"
        logo="images/multilang-32.png"
        schema="0.1"
        documentation="http://contrib.spip.net/?article3498"
        <pipeline nom="insert_head_css" inclure="multilang_pipelines.php" />
        <pipeline nom="insert_head" inclure="multilang_pipelines.php" />
        <pipeline nom="affichage_final" inclure="multilang_pipelines.php" />
+       <pipeline nom="formulaire_traiter" inclure="multilang_pipelines.php" />
+       
        <menu nom="configurer_multilangue" titre="multilang:configuration_multilang" parent="menu_configuration" icone="images/multilang-16.png" />
+       
        <necessite nom="saisies" compatibilite="[1.1;[" />
-
        <utilise nom="crayons" />
-</paquet>
+</paquet>
\ No newline at end of file
index 42c256c..80b89fa 100644 (file)
@@ -1,10 +1,10 @@
 <svn_revision>
 <text_version>
 Origine: file:///home/svn/repository/spip-zone/_plugins_/multilang/trunk
-Revision: 72466
-Dernier commit: 2013-04-30 12:00:50 +0200 
+Revision: 84640
+Dernier commit: 2014-09-15 05:40:48 +0200 
 </text_version>
 <origine>file:///home/svn/repository/spip-zone/_plugins_/multilang/trunk</origine>
-<revision>72466</revision>
-<commit>2013-04-30 12:00:50 +0200 </commit>
+<revision>84640</revision>
+<commit>2014-09-15 05:40:48 +0200 </commit>
 </svn_revision>
\ No newline at end of file
index 16e508a..27f1c38 100644 (file)
@@ -47,8 +47,12 @@ function creer_jeton($form, $qui=NULL) {
 /**
  * Verifie une cle de jeton pour un formulaire
  *
+ * @param string $jeton
+ *   cle recue
  * @param string $form nom du formulaire
- * @param string cle recue
+ *   nom du formulaire
+ * @param string $qui
+ *   identifiant du visiteur a qui est attribue le jeton
  * @return bool cle correcte ?
  */
 function verifier_jeton($jeton, $form, $qui=NULL) {
@@ -135,7 +139,7 @@ function analyser_spams($texte) {
        // soyons donc mefiant
        // (mais en enlevant le base64 !)
        $texte_humain = str_replace('class="base64"','',$texte_humain);
-       $hidden = ",\s(?:style|class)\s*=[^>]+>,UimsS";
+       $hidden = ",(<(img|object)|\s(?:style|class)\s*=[^>]+>),UimsS";
        if (preg_match($hidden,$texte_humain)) {
                // suspicion de spam
                $infos['contenu_cache'] = true;
index 06f4cc9..5960e56 100644 (file)
@@ -1,5 +1,5 @@
 [(#REM) Piege a robots spammeurs ]
-<p style="display: none;">
-       <label for="nobot"><:antispam_champ_vide:></label>
-       <input type="text" class="text" name="nobot" id="nobot" value="#ENV{nobot}" size="10" />
-</p>
+<[(#ENV{div,'div'})] class="editer saisie_session_email" style="display: none;">
+       <label for="give_me_your_email"><:antispam_champ_vide:></label>
+       <input type="text" class="text email" name="email_nobot" id="give_me_your_email" value="#ENV{email_nobot}" size="10" />
+</[(#ENV{div,'div'})]>
index 4c3e268..4b60164 100644 (file)
@@ -1,19 +1,26 @@
 <traduction module="nospam" gestionnaire="salvatore" url="http://trad.spip.net" source="svn://zone.spip.org/spip-zone/_plugins_/nospam/lang/" reference="fr">
-       <langue code="ar" url="http://trad.spip.net/tradlang_module/nospam?lang_cible=ar">
+       <langue code="ar" url="http://trad.spip.net/tradlang_module/nospam?lang_cible=ar" total="10" traduits="5" relire="0" modifs="0" nouveaux="5" pourcent="50.00">
                <traducteur nom="George" lien="http://trad.spip.net/auteur/جورج-قندلفت" />
        </langue>
-       <langue code="en" url="http://trad.spip.net/tradlang_module/nospam?lang_cible=en">
+       <langue code="en" url="http://trad.spip.net/tradlang_module/nospam?lang_cible=en" total="10" traduits="10" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="Benitron" lien="http://trad.spip.net/auteur/benitron" />
                <traducteur nom="kent1" lien="http://trad.spip.net/auteur/kent1" />
        </langue>
-       <langue code="es" url="http://trad.spip.net/tradlang_module/nospam?lang_cible=es">
-               <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel" />
+       <langue code="es" url="http://trad.spip.net/tradlang_module/nospam?lang_cible=es" total="10" traduits="10" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel-s-bujaldon" />
        </langue>
-       <langue code="fa" url="http://trad.spip.net/tradlang_module/nospam?lang_cible=fa">
+       <langue code="fa" url="http://trad.spip.net/tradlang_module/nospam?lang_cible=fa" total="10" traduits="5" relire="0" modifs="0" nouveaux="5" pourcent="50.00">
                <traducteur nom="Davood Hossein" lien="http://trad.spip.net/auteur/davood-hossein" />
        </langue>
-       <langue code="fr" />
-       <langue code="sk" url="http://trad.spip.net/tradlang_module/nospam?lang_cible=sk">
+       <langue code="fr" url="http://trad.spip.net/tradlang_module/nospam?lang_cible=fr" total="10" traduits="10" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+       </langue>
+       <langue code="fr_tu" url="http://trad.spip.net/tradlang_module/nospam?lang_cible=fr_tu" total="10" traduits="10" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Cerf" lien="http://trad.spip.net/auteur/cerf" />
+       </langue>
+       <langue code="nl" url="http://trad.spip.net/tradlang_module/nospam?lang_cible=nl" total="10" traduits="10" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Hanjo" lien="http://trad.spip.net/auteur/hanjo" />
+       </langue>
+       <langue code="sk" url="http://trad.spip.net/tradlang_module/nospam?lang_cible=sk" total="10" traduits="10" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="jaro" lien="http://trad.spip.net/auteur/jaro" />
        </langue>
 </traduction>
index f8d1883..2797ba1 100644 (file)
@@ -8,13 +8,10 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // E
-       'erreur_attributs_html_interdits' => 'Il n\'est pas permis d\'utiliser les attributs html <tt>class</tt> ou <tt>style</tt>', # NEW
-       'erreur_blacklist' => 'Vous avez été mis sur liste noire, vous ne pouvez plus poster de message.', # NEW
        'erreur_jeton' => 'غير قادر على مراعاة رسالتك. أشكركم للإعادة !',
        'erreur_spam' => 'غير قادر على الأخذ في الاعتبار لرسالتك !',
        'erreur_spam_doublon' => 'وجود رسالة مماثلة !',
        'erreur_spam_ip' => 'تعليقات كثيرة جدا هي على حساب الجودة !',
-       'erreur_url_deja_spammee' => 'Ce message contient des liens suspects qui ressemblent à du SPAM. Merci de les retirer.', # NEW
 
        // F
        'forum_saisie_texte_info' => 'لتنسيق رسالتك، لا تدعم هذه الاستمارة الا اختصارات SPIP مثل <code>[-&gt;url] {{أسود}} {مائل}&lt;quote&gt; &lt;رموز برمجية&gt;</code> &lt;إطار&gt;</cadre> وعلامات HTML كـ<code>&lt;q&gt; &lt;del&gt; &lt;ins&gt;</code>. لإنشاء فقرات، يكفي ترك أسطر فارغة.'
index 9e9cd91..eebc224 100644 (file)
@@ -8,7 +8,7 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // E
-       'erreur_attributs_html_interdits' => 'It\'s not allowed to use the html attributes <tt>class</tt> or <tt>style</tt>',
+       'erreur_attributs_html_interdits' => 'It is not possible to insert images or use the html attributes <tt>class</tt> or <tt>style</tt>',
        'erreur_blacklist' => 'You have been blacklisted, you can not post messages anymore.',
        'erreur_jeton' => 'Unable to take account of your message. Thank you to resubmit!',
        'erreur_spam' => 'Unable to take account of your message!',
@@ -17,7 +17,13 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'erreur_url_deja_spammee' => 'This message contains suspicious links that look like SPAM. Thanks to delete them.',
 
        // F
-       'forum_saisie_texte_info' => 'For the formatting of your message, this form only accepts SPIP shortcuts <code>[-&gt;url] {{bold}} {italic} &lt;quote&gt; &lt;code&gt;</code> &lt;cadre&gt;</cadre> et le code HTML <code>&lt;q&gt; &lt;del&gt; &lt;ins&gt;</code>. To create paragraphs, simply leave blank lines.'
+       'forum_saisie_texte_info' => 'For the formatting of your message, this form only accepts SPIP shortcuts <code>[-&gt;url] {{bold}} {italic} &lt;quote&gt; &lt;code&gt;</code> &lt;cadre&gt;</cadre> et le code HTML <code>&lt;q&gt; &lt;del&gt; &lt;ins&gt;</code>. To create paragraphs, simply leave blank lines.',
+
+       // I
+       'info_ip_suspecte' => 'Your IP address is suspected to send SPAMs. Thank you to confirm your are not doing so.',
+
+       // L
+       'label_message_licite' => 'This is not an abusive post'
 );
 
 ?>
index c53a9af..e17e8dd 100644 (file)
@@ -8,7 +8,7 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // E
-       'erreur_attributs_html_interdits' => 'No está permitido el uso de atributos html <tt>class</tt> ou <tt>style</tt>',
+       'erreur_attributs_html_interdits' => 'No está permitido insertar imágenes ni el uso de atributos html <tt>class</tt> ou <tt>style</tt>',
        'erreur_blacklist' => 'Usted ha sido metido en lista negra, no puede enviar más mensaje.',
        'erreur_jeton' => 'Su mensaje no ha sido tomado en cuenta. ¡Gracias por enviarlo de nuevo!',
        'erreur_spam' => '¡Imposible tomar en cuenta su mensaje!',
@@ -17,7 +17,13 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'erreur_url_deja_spammee' => 'Este mensaje contiene enlaces sospechos de ser SPAM. Gracias por eliminarlos.',
 
        // F
-       'forum_saisie_texte_info' => 'Para aplicar el formato de su mensaje, este formulario no acepta más que los atajos SPIP <code>[-&gt;url] {{gras}} {italique} &lt;quote&gt; &lt;code&gt;</code> &lt;cadre&gt;</cadre> et le code HTML <code>&lt;q&gt; &lt;del&gt; &lt;ins&gt;</code>. Para crear párrafos, deje simplemente una línea vacía entre los mismos.'
+       'forum_saisie_texte_info' => 'Para aplicar el formato de su mensaje, este formulario no acepta más que los atajos SPIP <code>[-&gt;url] {{gras}} {italique} &lt;quote&gt; &lt;code&gt;</code> &lt;cadre&gt;</cadre> et le code HTML <code>&lt;q&gt; &lt;del&gt; &lt;ins&gt;</code>. Para crear párrafos, deje simplemente una línea vacía entre los mismos.',
+
+       // I
+       'info_ip_suspecte' => 'Su dirección IP es sospechosa de generar SPAM. Gracias por confirmar sus buenas intenciones. ',
+
+       // L
+       'label_message_licite' => 'Éste no es un mensaje abusivo'
 );
 
 ?>
index 7cfff64..a6bb5fc 100644 (file)
@@ -8,13 +8,10 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // E
-       'erreur_attributs_html_interdits' => 'Il n\'est pas permis d\'utiliser les attributs html <tt>class</tt> ou <tt>style</tt>', # NEW
-       'erreur_blacklist' => 'Vous avez été mis sur liste noire, vous ne pouvez plus poster de message.', # NEW
        'erreur_jeton' => 'روي پيام شما نمي‌توان حساب كرد. ممنون مكرر فرماييد!',
        'erreur_spam' => 'نمي‌توان روي پيام شما حساب كرد!',
        'erreur_spam_doublon' => 'يك پيام شناخته شده موجود است!',
        'erreur_spam_ip' => 'نظرات زيادي به زيان كيفيت!',
-       'erreur_url_deja_spammee' => 'Ce message contient des liens suspects qui ressemblent à du SPAM. Merci de les retirer.', # NEW
 
        // F
        'forum_saisie_texte_info' => 'اين فرم ميان‌ برهاي اسپيپ  <code>[-&gt;url] {{gras}} {italique} &lt;quote&gt; &lt;code&gt;</code>و  كد اچ.تي.ام.ال را <code>&lt;q&gt; &lt;del&gt; &lt;ins&gt;</code> مي‌پذيرد . براي ساختن پارگراف فقط يك سطر خالي بگذاريد. '
index 8e921e1..8e40ff3 100644 (file)
@@ -6,16 +6,22 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // E
-       'erreur_attributs_html_interdits' => 'Il n\'est pas permis d\'utiliser les attributs html <tt>class</tt> ou <tt>style</tt>',
+       'erreur_attributs_html_interdits' => 'Il n’est pas permis d’insérer des images ni d’utiliser les attributs html <tt>class</tt> ou <tt>style</tt>',
        'erreur_blacklist' => 'Vous avez été mis sur liste noire, vous ne pouvez plus poster de message.',
-       'erreur_jeton' => 'Impossible de prendre en compte votre message. Merci de le soumettre à nouveau !',
-       'erreur_spam' => 'Impossible de prendre en compte votre message !',
-       'erreur_spam_doublon' => 'Un message identique existe déjà !',
-       'erreur_spam_ip' => 'Trop de commentaires nuit à la qualité !',
-       'erreur_url_deja_spammee' => 'Ce message contient des liens suspects qui ressemblent à du SPAM. Merci de les retirer.',
+       'erreur_jeton' => 'Impossible de prendre en compte votre message. Merci de le soumettre à nouveau !',
+       'erreur_spam' => 'Impossible de prendre en compte votre message !',
+       'erreur_spam_doublon' => 'Un message identique existe déjà !',
+       'erreur_spam_ip' => 'Trop de commentaires nuit à la qualité !',
+       'erreur_url_deja_spammee' => 'Ce message contient des liens suspects qui ressemblent à du SPAM. Merci de les retirer.',
 
        // F
-       'forum_saisie_texte_info' => 'Pour la mise en forme de votre message, ce formulaire n\'accepte que les raccourcis SPIP <code>[-&gt;url] {{gras}} {italique} &lt;quote&gt; &lt;code&gt;</code> &lt;cadre&gt;</cadre> et le code HTML <code>&lt;q&gt; &lt;del&gt; &lt;ins&gt;</code>. Pour créer des paragraphes, laissez simplement des lignes vides.'
+       'forum_saisie_texte_info' => 'Pour la mise en forme de votre message, ce formulaire n’accepte que les raccourcis SPIP <code>[-&gt;url] {{gras}} {italique} &lt;quote&gt; &lt;code&gt;</code> &lt;cadre&gt;</cadre> et le code HTML <code>&lt;q&gt; &lt;del&gt; &lt;ins&gt;</code>. Pour créer des paragraphes, laissez simplement des lignes vides.',
+
+       // I
+       'info_ip_suspecte' => 'Votre adresse IP est suspectée de procéder à du SPAM. Merci de confirmer votre bonne intention.',
+
+       // L
+       'label_message_licite' => 'Ceci n’est pas un message abusif'
 );
 
 ?>
diff --git a/www/plugins/nospam/lang/nospam_fr_tu.php b/www/plugins/nospam/lang/nospam_fr_tu.php
new file mode 100644 (file)
index 0000000..b211884
--- /dev/null
@@ -0,0 +1,29 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/nospam?lang_cible=fr_tu
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // E
+       'erreur_attributs_html_interdits' => 'Il n’est pas permis d’insérer des images ni d’utiliser les attributs html <tt>class</tt> ou <tt>style</tt>',
+       'erreur_blacklist' => 'Tu as été mis sur liste noire, tu ne peux plus poster de message.',
+       'erreur_jeton' => 'Impossible de prendre en compte votre message. Merci de le soumettre à nouveau !',
+       'erreur_spam' => 'Impossible de prendre en compte ton message !',
+       'erreur_spam_doublon' => 'Un message identique existe déjà !',
+       'erreur_spam_ip' => 'Trop de commentaires nuit à la qualité !',
+       'erreur_url_deja_spammee' => 'Ce message contient des liens suspects qui ressemblent à du SPAM. Merci de les retirer.',
+
+       // F
+       'forum_saisie_texte_info' => 'Pour la mise en forme de ton message, ce formulaire n’accepte que les raccourcis SPIP <code>[-&gt;url] {{gras}} {italique} &lt;quote&gt; &lt;code&gt;</code> &lt;cadre&gt;</cadre> et le code HTML <code>&lt;q&gt; &lt;del&gt; &lt;ins&gt;</code>. Pour créer des paragraphes, laisse simplement des lignes vides.',
+
+       // I
+       'info_ip_suspecte' => 'Ton adresse IP est suspectée de procéder à du SPAM. Merci de confirmer ta bonne intention.',
+
+       // L
+       'label_message_licite' => 'Ceci n’est pas un message abusif'
+);
+
+?>
diff --git a/www/plugins/nospam/lang/nospam_nl.php b/www/plugins/nospam/lang/nospam_nl.php
new file mode 100644 (file)
index 0000000..8634ec1
--- /dev/null
@@ -0,0 +1,29 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/nospam?lang_cible=nl
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // E
+       'erreur_attributs_html_interdits' => 'HTML-attributen <tt>class</tt> of <tt>style</tt> zijn niet toegestaan!',
+       'erreur_blacklist' => 'U staat op de zwarte lijst en mag geen verdere berichten plaatsen.',
+       'erreur_jeton' => 'Dit bericht kan niet worden aanvaard. Voer het nogmaals in!',
+       'erreur_spam' => 'Dit bericht kan niet worden aanvaard!',
+       'erreur_spam_doublon' => 'Er bestaat al een identiek bericht!',
+       'erreur_spam_ip' => 'Trop de commentaires nuit à la qualité !',
+       'erreur_url_deja_spammee' => 'Dit bericht bevat koppelingen die op SPAM lijken. Verwijder ze aub.',
+
+       // F
+       'forum_saisie_texte_info' => 'Dit formulier accepteert alleen SPIP code <code>[-&gt;url] {{gras}} {italique} &lt;quote&gt; &lt;code&gt;</code> &lt;cadre&gt;</cadre> en HTML code <code>&lt;q&gt; &lt;del&gt; &lt;ins&gt;</code>. Op paragrafen aan te maken, kun je gewoon een paar regels leeg laten.',
+
+       // I
+       'info_ip_suspecte' => 'Uw IP-adres wordt ervan verdacht SPAM te verzenden. Laat uw goede bedoelingen blijken.',
+
+       // L
+       'label_message_licite' => 'Dit is geen verkeerd bericht'
+);
+
+?>
index 9f14e60..5078065 100644 (file)
@@ -8,7 +8,7 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // E
-       'erreur_attributs_html_interdits' => 'Nie je povolené používať atribúty html <tt>class</tt> alebo <tt>style</tt>',
+       'erreur_attributs_html_interdits' => 'Nie je povolené vkladať obrázky ani používať atribúty html <tt>class</tt> alebo <tt>style</tt>',
        'erreur_blacklist' => 'Zaradili vás na čiernu listinu, nemôžete posielať správy.',
        'erreur_jeton' => 'Vaša správa sa nedá posúdiť. Ďakujeme vám, že ju pošlete znova.',
        'erreur_spam' => 'Vaša správa sa nedá posúdiť.',
@@ -17,7 +17,13 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'erreur_url_deja_spammee' => 'V tejto správe sú podozrivé odkazy, ktoré vyzerajú ako spam. Ďakujeme vám za ich odstránenie.',
 
        // F
-       'forum_saisie_texte_info' => 'Na formátovanie správy tento formulár akceptuje iba skratky SPIPu <code>[-&gt;url] {{tučné}} {kurzíva} &lt;quote&gt; &lt;code&gt;</code> &lt;cadre&gt;</cadre> a kód HTML <code>&lt;q&gt; &lt;del&gt; &lt;ins&gt;</code>. Ak chcete robiť odseky, jednoducho vynechajte niekoľko prázdnych riadkov.'
+       'forum_saisie_texte_info' => 'Na formátovanie správy tento formulár akceptuje iba skratky SPIPu <code>[-&gt;url] {{tučné}} {kurzíva} &lt;quote&gt; &lt;code&gt;</code> &lt;cadre&gt;</cadre> a kód HTML <code>&lt;q&gt; &lt;del&gt; &lt;ins&gt;</code>. Ak chcete robiť odseky, jednoducho vynechajte niekoľko prázdnych riadkov.',
+
+       // I
+       'info_ip_suspecte' => 'Vaša IP adresa je podozrivá z vytvárania SPAMU. Ďakujeme, že potvrdíte svoj dobrý úmysel.',
+
+       // L
+       'label_message_licite' => 'Toto nie je nevhodná správa'
 );
 
 ?>
index b9d200a..9abfa1f 100644 (file)
@@ -1,9 +1,22 @@
 <traduction module="paquet-nospam" gestionnaire="salvatore" url="http://trad.spip.net" source="svn://zone.spip.org/spip-zone/_plugins_/nospam/lang/" reference="fr">
-       <langue code="ar" />
-       <langue code="de" />
-       <langue code="en" />
-       <langue code="es" url="http://trad.spip.net/tradlang_module/paquet-nospam?lang_cible=es">
-               <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel" />
+       <langue code="ar" url="http://trad.spip.net/tradlang_module/paquet-nospam?lang_cible=ar" total="2" traduits="1" relire="0" modifs="0" nouveaux="1" pourcent="50.00">
+       </langue>
+       <langue code="de" url="http://trad.spip.net/tradlang_module/paquet-nospam?lang_cible=de" total="2" traduits="1" relire="0" modifs="0" nouveaux="1" pourcent="50.00">
+       </langue>
+       <langue code="en" url="http://trad.spip.net/tradlang_module/paquet-nospam?lang_cible=en" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+       </langue>
+       <langue code="es" url="http://trad.spip.net/tradlang_module/paquet-nospam?lang_cible=es" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel-s-bujaldon" />
+       </langue>
+       <langue code="fr" url="http://trad.spip.net/tradlang_module/paquet-nospam?lang_cible=fr" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+       </langue>
+       <langue code="fr_tu" url="http://trad.spip.net/tradlang_module/paquet-nospam?lang_cible=fr_tu" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Cerf" lien="http://trad.spip.net/auteur/cerf" />
+       </langue>
+       <langue code="nl" url="http://trad.spip.net/tradlang_module/paquet-nospam?lang_cible=nl" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Hanjo" lien="http://trad.spip.net/auteur/hanjo" />
+       </langue>
+       <langue code="sk" url="http://trad.spip.net/tradlang_module/paquet-nospam?lang_cible=sk" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="jaro" lien="http://trad.spip.net/auteur/jaro" />
        </langue>
-       <langue code="fr" />
 </traduction>
index fceacb9..dcac9ad 100644 (file)
@@ -8,8 +8,7 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // N
-       'nospam_description' => 'توقف المتطفل! فلتر البريد المزعج في الرسائل ، دون ازعاج لمستخدم صادق.',
-       'nospam_slogan' => 'Limiter le risque de spams dans les forums' # NEW
+       'nospam_description' => 'توقف المتطفل! فلتر البريد المزعج في الرسائل ، دون ازعاج لمستخدم صادق.'
 );
 
 ?>
index 310a81c..b671bd8 100644 (file)
@@ -8,8 +8,7 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // N
-       'nospam_description' => 'SPAM stoppen! Ein Filter ohne Nebenwirkungen für ehrliche Nutzer.',
-       'nospam_slogan' => 'Limiter le risque de spams dans les forums' # NEW
+       'nospam_description' => 'SPAM stoppen! Ein Filter ohne Nebenwirkungen für ehrliche Nutzer.'
 );
 
 ?>
index 8439f6f..26587ef 100644 (file)
@@ -6,7 +6,7 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // N
-       'nospam_description' => 'Halte au spam ! Filtrez les spams dans les messages, sans nuisance pour les utilisateurs honnêtes.',
+       'nospam_description' => 'Halte au spam ! Filtrez les spams dans les messages, sans nuisance pour les utilisateurs honnêtes.',
        'nospam_slogan' => 'Limiter le risque de spams dans les forums'
 );
 
diff --git a/www/plugins/nospam/lang/paquet-nospam_fr_tu.php b/www/plugins/nospam/lang/paquet-nospam_fr_tu.php
new file mode 100644 (file)
index 0000000..df0949e
--- /dev/null
@@ -0,0 +1,15 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/paquet-nospam?lang_cible=fr_tu
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // N
+       'nospam_description' => 'Halte au spam ! Filtre les spams dans les messages, sans nuisance pour les utilisateurs honnêtes.',
+       'nospam_slogan' => 'Limiter le risque de spams dans les forums'
+);
+
+?>
diff --git a/www/plugins/nospam/lang/paquet-nospam_nl.php b/www/plugins/nospam/lang/paquet-nospam_nl.php
new file mode 100644 (file)
index 0000000..5ff1571
--- /dev/null
@@ -0,0 +1,15 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/paquet-nospam?lang_cible=nl
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // N
+       'nospam_description' => 'Stop SPAM! Filter berichten zonder oprechte gebruikers ermee lastig te vallen.',
+       'nospam_slogan' => 'Beperk het risico van SPAM in forums'
+);
+
+?>
diff --git a/www/plugins/nospam/lang/paquet-nospam_sk.php b/www/plugins/nospam/lang/paquet-nospam_sk.php
new file mode 100644 (file)
index 0000000..d290e9d
--- /dev/null
@@ -0,0 +1,15 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/paquet-nospam?lang_cible=sk
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // N
+       'nospam_description' => 'Zastavte spam! Filtrujte spam v príspevkoch bez toho, aby ste si pohnevali čestných používateľov.',
+       'nospam_slogan' => 'Obmedzí nebezpečenstvo spamov v diskusných fórach'
+);
+
+?>
index 7edc683..853b4d3 100644 (file)
@@ -49,6 +49,38 @@ function nospam_verifier_formulaire_forum_dist($flux){
                        }
                }
 
+               // on prend en compte la checkbox de confirmation
+               // si le flag en session est bien leve
+               if (_request('notabuse')){
+                       session_start();
+                       if ($_SESSION['notabuse_check']){
+                               unset($_SESSION['notabuse_check']);
+                               $_SESSION['notabuse_checked'] = true;
+                               // on leve une globale pour la fin de ce hit, a toute fin utile (puisque plus rien en $_SESSION)
+                               $GLOBALS['notabuse_checked'] = true;
+                       }
+               }
+               if (!count($flux['data'])){
+                       if (nospam_check_ip_status($GLOBALS['ip'])!=='ok'){
+                               session_start();
+                               if ($_SESSION['notabuse_checked']){
+                                       // ok on retire de la session le check qui ne sert qu'une fois
+                                       unset($_SESSION['notabuse_checked']);
+                                       // et on laisse passer
+                               }
+                               else {
+                                       $flux['data']['texte'] = _T('nospam:info_ip_suspecte')."<br />
+                                       <span class='choix'>
+                                       <input type='checkbox' name='notabuse' value='1' id='notabuse'/> <label for='notabuse'>"
+                                       ._T('nospam:label_message_licite')."</label>
+                                       </span>";
+                                       $_SESSION['notabuse_check'] = true;
+                                       spip_log("notabuse_check sur IP ".$GLOBALS['ip'],"nospam");
+                               }
+                       }
+               }
+
+
                if (isset($flux['data']['texte']))
                        unset($flux['data']['previsu']);
        }
index 0a7dec3..611acaa 100644 (file)
@@ -8,6 +8,7 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 if (!defined('_SPAM_URL_MAX_OCCURENCES')) define('_SPAM_URL_MAX_OCCURENCES',3);
+if (!defined('_SPAM_ENCRYPT_NAME')) define('_SPAM_ENCRYPT_NAME',false);
 
 /**
  * Lister les formulaires a prendre en charge contre le SPAM
@@ -35,18 +36,126 @@ function nospam_recuperer_fond($flux) {
                $form = substr($fond, $pos + 12);
                if (in_array($form, nospam_lister_formulaires())) {
                        // on ajoute le champ 'nobot' si pas present dans le formulaire
-                       $texte = &$flux['data']['texte'];
-                       if ((false === strpos($texte, 'name="nobot"'))
-                               and (false !== $pos = strpos($texte, '</form>'))
-                       ) {
-                               $nobot = recuperer_fond("inclure/nobot", array('nobot' => ''));
-                               $texte = substr_replace($texte, $nobot, $pos, 0);
-                       }
+                       nospam_inserer_nobot($flux['data']['texte']);
                }
        }
        return $flux;
 }
 
+/**
+ * Ajouter le champ de formulaire 'nobot' au besoin
+ *
+ * @param array $flux
+ * @return array
+ */
+function nospam_formulaire_fond($flux) {
+       // determiner le nom du formulaire
+       $form = $flux['args']['form'];
+       if (in_array($form, nospam_lister_formulaires())) {
+               // on ajoute le champ 'nobot' si pas present dans le formulaire
+               nospam_inserer_nobot($flux['data']);
+       }
+       return $flux;
+}
+
+/**
+ * Inserer un champ nobot au hasard dans le form
+ * et crypter tous les name
+ * @param string $texte
+ */
+function nospam_inserer_nobot(&$texte){
+       if ((false === strpos($texte, 'name="email_nobot"'))
+               AND (false !== $pos = strpos($texte, '</form>'))
+       ) {
+               // essayer de s'inserer au hasard entre 2 li du form
+               if (preg_match_all(",<li\b[^>]*class=['\"]editer[^>]*,ims",$texte,$m)
+                 AND $p = strpos($texte,$m[0][rand(0,count($m[0])-1)])){
+                       $nobot = recuperer_fond("inclure/nobot", array('email_nobot' => '','div'=>'li'));
+                       $texte = substr_replace($texte, $nobot, $p, 0);
+               }
+               // et sinon a la fin
+               else {
+                       $nobot = recuperer_fond("inclure/nobot", array('email_nobot' => ''));
+                       $texte = substr_replace($texte, $nobot, $pos, 0);
+               }
+       }
+       if (_SPAM_ENCRYPT_NAME){
+               // recuperer toutes les balises input, textarea, select
+               $balises = array_merge(extraire_balises($texte,'input'));
+               foreach($balises as $k=>$b){
+                       if (in_array(extraire_attribut($b,"type"),array("hidden","file")))
+                               unset($balises[$k]);
+               }
+               $balises = array_merge($balises,
+                       extraire_balises($texte,'textarea'),
+                       extraire_balises($texte,'select'));
+
+               $key = "";
+               if (preg_match(",<input type='hidden' name='_jeton' value='([^>]*)' />,Uims",$texte,$m))
+                       $key = $m[1];
+
+               foreach($balises as $k=>$b){
+                       if ($name = extraire_attribut($b,"name")
+                         AND strncmp($name,"session_",8)!==0){
+                               // cas des truc[chose] : on ne brouille que truc
+                               $crypted_name = explode("[",$name);
+                               $crypted_name[0] = nospam_name_encode($crypted_name[0],$key);
+                               $crypted_name = implode("[",$crypted_name);
+                               $b_e = inserer_attribut($b,"name",$crypted_name);
+                               $texte = str_replace($b,$b_e,$texte);
+                       }
+               }
+       }
+}
+
+function nospam_name_encode($name,$key=""){
+       static $private_key=array();
+       static $encoded=array();
+       if (isset($encoded[$key][$name]))
+               return $encoded[$key][$name];
+       if (!$name) return $name;
+       if (!isset($private_key[$key])){
+               $private_key[$key] = nospam_private_key($key);
+               if (!function_exists('_xor'))
+                       include_spip("inc/filtres");
+       }
+       $cname = _xor("xx_$name",$key);
+       $cname = base64_encode($cname);
+       $cname = "x_".rtrim(strtr(base64_encode($cname), '+/', '-_'), '=');
+       return $encoded[$key][$name] = $cname;
+}
+
+function nospam_name_decode($name,$key=""){
+       static $private_key=array();
+       static $decoded=array();
+       if (isset($decoded[$key][$name]))
+               return $decoded[$key][$name];
+       if (!$name) return $name;
+       if (strncmp($name,"x_",2)!==0) return $name;
+       if (!isset($private_key[$key])){
+               $private_key[$key] = nospam_private_key($key);
+               if (!function_exists('_xor'))
+                       include_spip("inc/filtres");
+       }
+       $cname = substr($name,2);
+       $cname = base64_decode(str_pad(strtr($cname, '-_', '+/'), strlen($cname) % 4, '=', STR_PAD_RIGHT));
+       $cname = base64_decode($cname);
+       $cname = _xor($cname,$key);
+       if (strncmp($cname,"xx_",3)!==0) return $name;
+       return $decoded[$key][$name] = substr($cname,3);
+}
+
+function nospam_private_key($key){
+       $private_key = $key . __FILE__;
+       if (function_exists('sha1'))
+               $private_key = sha1($private_key);
+       else
+               $private_key = md5($private_key);
+       $private_key = pack("H*", $private_key);
+       return $private_key;
+}
+
+
 /**
  * Ajouter un jeton temporaire lie a l'heure et a l'IP pour limiter la reutilisation possible du formulaire
  *
@@ -62,6 +171,36 @@ function nospam_formulaire_charger($flux) {
                include_spip("inc/nospam");
                $jeton = creer_jeton($form);
                $flux['data']['_hidden'] .= "<input type='hidden' name='_jeton' value='$jeton' />";
+
+               if (_SPAM_ENCRYPT_NAME){
+                       // recuperer les autosave encryptes si possible
+                       if (is_array($flux['data'])
+                         AND isset($flux['data']['_autosave_id'])
+                         AND $cle_autosave = $flux['data']['_autosave_id']
+                         AND include_spip("inc/cvt_autosave")
+                         AND function_exists("autosave_clean_value")){
+
+                               $je_suis_poste = $flux['args']['je_suis_poste'];
+
+                               $cle_autosave = serialize($cle_autosave);
+                               $cle_autosave = $form."_".md5($cle_autosave);
+
+                               // si on a un backup en session et qu'on est au premier chargement, non poste
+                               // on restitue les donnees
+                               if (isset($GLOBALS['visiteur_session']['session_autosave_'.$cle_autosave])
+                                 AND !$je_suis_poste) {
+                                       parse_str($GLOBALS['visiteur_session']['session_autosave_'.$cle_autosave], $vars);
+                                       if (isset($vars['_jeton'])
+                                         AND $key = $vars['_jeton']){
+                                               foreach ($vars as $name=>$val) {
+                                                       if (($dname = nospam_name_decode($name,$key))!==$name
+                                                         AND isset($flux['data'][$dname]))
+                                                               $flux['data'][$dname] = (is_string($val)?autosave_clean_value($val):array_map('autosave_clean_value',$val));
+                                               }
+                                       }
+                               }
+                       }
+               }
        }
        return $flux;
 }
@@ -73,14 +212,47 @@ function nospam_formulaire_charger($flux) {
  * @return array
  */
 function nospam_formulaire_verifier($flux) {
+       static $deja = false;
        $form = $flux['args']['form'];
        if (in_array($form, nospam_lister_formulaires())) {
                include_spip("inc/nospam");
                $jeton = _request('_jeton');
+               // y a-t-il des names encryptes a decrypter ?
+               // si oui on les decrypte puis on relance la verif complete
+               // attention, du coup verifier() est appele 2 fois dans ce cas (peut poser probleme ?)
+               // donc on repasse ici une deuxieme fois, et il ne faut pas relancer le decryptage
+               if (_SPAM_ENCRYPT_NAME AND !$deja){
+                       $deja = true;
+                       $re_verifier = false;
+                       foreach($_POST as $k=>$v){
+                               $kd = nospam_name_decode($k,$jeton);
+                               if ($kd !== $k){
+                                       set_request($kd,$v);
+                                       $re_verifier = true;
+                               }
+                       }
+                       // si on a decode des champs, il faut relancer toute la chaine de verification et sortir
+                       if ($re_verifier){
+                               $verifier = charger_fonction("verifier","formulaires/$form/",true);
+                               $flux['data'] = pipeline(
+                                                 'formulaire_verifier',
+                                                       array(
+                                                               'args'=>array('form'=>$form,'args'=>$flux['args']['args']),
+                                                               'data'=>$verifier?call_user_func_array($verifier,$flux['args']['args']):array())
+                                                       );
+                               $deja = false;
+                               return $flux;
+                       }
+               }
                // le jeton prend en compte l'heure et l'ip de l'internaute
                if (_request('nobot') // trop facile !
+                       OR _request('email_nobot')
                        OR (!verifier_jeton($jeton, $form))
                ) {
+                       if (_request('email_nobot'))
+                               spip_log('email_nobot rempli : '._request('email_nobot'),'nospam');
+                       if (_request('nobot'))
+                               spip_log('nobot rempli : '._request('email_nobot'),'nospam');
                        #spip_log('pas de jeton pour '.var_export($flux,true),'nospam');
                        $flux['data']['message_erreur'] .= _T('nospam:erreur_jeton');
                        if ($form == 'forum')
@@ -118,7 +290,7 @@ function nospam_pre_edition($flux) {
                // ne pas publier automatiquement certains messages suspects ...
                // sauf si le posteur a de toute facon le pouvoir de moderer et de se publier
                include_spip('inc/autoriser');
-               if ($flux['data']['statut'] == 'publie'
+               if (in_array($flux['data']['statut'],array('prop','publie'))
                        AND (!isset($GLOBALS['visiteur_session']['statut']) OR !autoriser('modererforum'))
                ) {
                        // verifier le status de cette IP
@@ -138,13 +310,13 @@ function nospam_pre_edition($flux) {
                  // cas du spammeur qui envoie que des messages a 3 liens a haute frequence (passe a travers tous les filtres)
                  // au bout du 5e message en <10min ou 10e en <30min on va moderer tout message avec un lien
                  if (!$spammeur_connu){
-                         if (($nb=sql_countsel('spip_forum','(ip='.sql_quote($GLOBALS['ip']).$email.') AND '.sql_date_proche('date_heure','-30','minute')))>=7){
+                         if (($nb=sql_countsel('spip_forum','(ip='.sql_quote($GLOBALS['ip']).$email.') AND '.nospam_sql_date_proche('date_heure','-30','minute')))>=7){
                          spip_log("[Flood] $nb message pour (ip=".$GLOBALS['ip']."$email) dans les 30 dernieres minutes",'nospam');
                          $spammeur_connu = true;
                          }
                  }
                  if (!$spammeur_connu){
-                         if (($nb=sql_countsel('spip_forum','(ip='.sql_quote($GLOBALS['ip']).$email.') AND '.sql_date_proche('date_heure','-10','minute')))>=3){
+                         if (($nb=sql_countsel('spip_forum','(ip='.sql_quote($GLOBALS['ip']).$email.') AND '.nospam_sql_date_proche('date_heure','-10','minute')))>=3){
                          spip_log("[Flood] $nb message pour (ip=".$GLOBALS['ip']."$email) dans les 10 dernieres minutes",'nospam');
                          $spammeur_connu = true;
                          }
@@ -157,38 +329,43 @@ function nospam_pre_edition($flux) {
                        if ($spammeur_connu) {
                                // plus de 30 spams dans les dernieres 2h, faut se calmer ...
                                // ou plus de 10 spams dans la dernieres 1h, faut se calmer ...
-                               // ou IP blacklistee et plus de 5 messages prop/spam dans les dernieres 24h, faut se calmer ...
+                               // ou IP blacklistee et plus de 5 messages prop/spam dans les dernieres 48h, faut se calmer ...
                                if (
                                        (isset($GLOBALS['ip_blacklist'][$GLOBALS['ip']])
-                                  AND ($nb = sql_countsel('spip_forum', sql_in('statut',array('spam')).' AND (ip=' . sql_quote($GLOBALS['ip']).') AND ' . sql_date_proche('date_heure','-24','hour'))) >= 5
-                                        AND $h=24
+                                  AND ($nb = sql_countsel('spip_forum', sql_in('statut',array('spam')).' AND (ip=' . sql_quote($GLOBALS['ip']).') AND ' . nospam_sql_date_proche('date_heure','-48','hour'))) >= 5
+                                        AND $h=48
                                        )
                                        OR
-                                       (($nb = sql_countsel('spip_forum', 'statut=\'spam\' AND (ip=' . sql_quote($GLOBALS['ip']) . $email . ') AND ' . sql_date_proche('date_heure','-120','minute'))) >= 30
+                                       (($nb = sql_countsel('spip_forum', 'statut=\'spam\' AND (ip=' . sql_quote($GLOBALS['ip']) . $email . ') AND ' . nospam_sql_date_proche('date_heure','-120','minute'))) >= 30
                                                AND $h=2)
                                        OR
-                                       (($nb = sql_countsel('spip_forum', 'statut=\'spam\' AND (ip=' . sql_quote($GLOBALS['ip']) . $email .') AND ' . sql_date_proche('date_heure','-60','minute'))) >= 10
+                                       (($nb = sql_countsel('spip_forum', 'statut=\'spam\' AND (ip=' . sql_quote($GLOBALS['ip']) . $email .') AND ' . nospam_sql_date_proche('date_heure','-60','minute'))) >= 10
                                                AND $h=1)
                                        ){
                                        $flux['data']['statut'] = ''; // on n'en veut pas !
                                        spip_log("[Refuse] $nb spam pour (ip=" . $GLOBALS['ip'] . "$email) dans les $h dernieres heures", 'nospam');
                                        return $flux;
                                }
+                               spip_log("POST *suspect* spammeur_connu","nospam");
                        }
                        // sinon regarder si l'objet a une langue, et si le post est dans la meme langue ou non
                        // en cas de langue differente, on se mefie
-                       elseif ($flux['data']['objet']){
-                               $table = table_objet_sql($flux['data']['objet']);
-                               $trouver_table = charger_fonction("trouver_table","base");
-                               if ($desc = $trouver_table($table)
-                                 AND isset($desc['field']['lang'])){
-                                       $primary = id_table_objet($flux['data']['objet']);
-                                       $lang_objet = sql_getfetsel("lang",$table,"$primary=".intval($flux['data']['id_objet']));
-                                       include_spip("inc/detecter_langue");
-                                       $lang_post = _detecter_langue($flux['data']['texte']);
-                                       if ($lang_post!==$lang_objet)
-                                               $lang_suspecte = true;
+                       else{
+                               $lang_objet = ($GLOBALS['spip_lang']?$GLOBALS['spip_lang']:$GLOBALS['meta']['langue_site']);
+                               if ($flux['data']['objet']){
+                                       $table = table_objet_sql($flux['data']['objet']);
+                                       $trouver_table = charger_fonction("trouver_table","base");
+                                       if ($desc = $trouver_table($table)
+                                               AND isset($desc['field']['lang'])){
+                                               $primary = id_table_objet($flux['data']['objet']);
+                                               $lang_objet = sql_getfetsel("lang",$table,"$primary=".intval($flux['data']['id_objet']));
+                                       }
                                }
+                               include_spip("inc/detecter_langue");
+                               $lang_post = _detecter_langue($flux['data']['texte']);
+                               if ($lang_post!==$lang_objet)
+                                       $lang_suspecte = true;
+                               spip_log("POST ".($lang_suspecte?"*suspect* ":"")."en langue [$lang_post] sur $primary=".$flux['data']['id_objet']." en langue [$lang_objet]","nospam");
                        }
 
                        // si c'est un message bourre de liens, on le modere
@@ -262,7 +439,7 @@ function nospam_pre_edition($flux) {
                        // verifier que cette ip n'en est pas a son N-ieme post en peu de temps
                        // plus de 5 messages en 5 minutes c'est suspect ...
                        if ($flux['data']['statut'] != 'spam') {
-                               if (($nb = sql_countsel('spip_forum', 'ip=' . sql_quote($GLOBALS['ip']) . ' AND ' . sql_date_proche('date_heure','-5','minute'))) >= 5){
+                               if (($nb = sql_countsel('spip_forum', 'ip=' . sql_quote($GLOBALS['ip']) . ' AND ' . nospam_sql_date_proche('date_heure','-5','minute'))) >= 5){
                                        $flux['data']['statut'] = 'spam';
                                        spip_log("[Flood2] $nb message pour (ip=".$GLOBALS['ip']."$email) dans les 5 dernieres minutes : requalif en spam",'nospam');
                                }
@@ -272,6 +449,29 @@ function nospam_pre_edition($flux) {
        return $flux;
 }
 
+/**
+ * @param $champ
+ * @param $interval
+ * @param $unite
+ * @return string
+ */
+function nospam_sql_date_proche($champ, $interval, $unite) {
+       if (function_exists("sql_date_proche"))
+               return sql_date_proche($champ, $interval, $unite);
+
+       return '('
+       . $champ
+        . (($interval <= 0) ? '>' : '<')
+        . (($interval <= 0) ? 'DATE_SUB' : 'DATE_ADD')
+       . '('
+       . sql_quote(date('Y-m-d H:i:s'))
+       . ', INTERVAL '
+       . (($interval > 0) ? $interval : (0-$interval))
+       . ' '
+       . $unite
+       . '))';
+}
+
 
 
 /**
@@ -299,7 +499,7 @@ function nospam_flush_and_update(){
        nospam_update_ip_list();
 }
 
-if (!defined('_NOSPAM_IP_LIST_CACHE')) define('_NOSPAM_IP_LIST_CACHE',10800);
+if (!defined('_NOSPAM_IP_LIST_CACHE')) define('_NOSPAM_IP_LIST_CACHE',3600);
 /**
  * Recuperer la liste des IP black ou grey sur nospam.spip.net
  * si on a pas une liste a jour
@@ -327,6 +527,8 @@ function nospam_update_ip_list($async=false){
        include_spip("inc/distant");
        include_spip("inc/json");
        $res = recuperer_page($url_api);
+       if (!$res AND file_exists($f=_DIR_TMP."spamsignal-api-list.txt"))
+               lire_fichier($f,$res);
        if ($res
          AND function_exists("json_decode")
          AND $liste = json_decode($res,true)){
@@ -342,7 +544,7 @@ function nospam_update_ip_list($async=false){
  */
 function nospam_check_ip_status($ip){
        $file = _DIR_TMP."nospam_ip_list.txt";
-       if (!file_exists($file) OR filemtime($file)<time()-_NOSPAM_IP_LIST_CACHE)
+       if (!file_exists($file) OR filemtime($file)<time()-2*_NOSPAM_IP_LIST_CACHE)
                return;
 
        lire_fichier($file,$liste);
index f5a81a3..5b4d1db 100644 (file)
@@ -1,25 +1,25 @@
 <paquet
        prefix="nospam"
        categorie="performance"
-       version="1.3.0"
+       version="1.5.6"
        etat="stable"
-       compatibilite="[2.0.0;3.0.99]"
+       compatibilite="[2.0.0;3.0.*]"
        logo="images/nospam-32.png"
-       documentation="http://www.spip-contrib.net/?rubrique1165"
+       documentation="http://contrib.spip.net/NoSPAM,1165"
 >      
 
        <nom>NoSPAM</nom>
        <!-- Limiter le risque de spams dans les forums -->
 
-       <auteur lien="www.yterium.net">Yterium</auteur>
+       <auteur lien="htpp://www.yterium.net">Yterium</auteur>
 
        <copyright>2008</copyright>
 
        <licence lien="http://www.gnu.org/licenses/gpl-3.0.html">GPL 3</licence>
 
        <pipeline nom="pre_edition" inclure="nospam_pipelines.php" />
-       <pipeline nom="recuperer_fond" inclure="nospam_pipelines.php" />
+       <pipeline nom="formulaire_fond" inclure="nospam_pipelines.php" />
        <pipeline nom="formulaire_charger" inclure="nospam_pipelines.php" />
        <pipeline nom="formulaire_verifier" inclure="nospam_pipelines.php" />
        <pipeline nom="nospam_lister_formulaires" action="" />
-</paquet>
+</paquet>
\ No newline at end of file
index e6d1c33..3fe3164 100644 (file)
@@ -6,10 +6,10 @@
                [en]Reduce the risk of spams in the forums
                </multi>
        </slogan>
-       <auteur>Cedric Morin pour [Yterium->www.yterium.net], Superyms (Traduction)</auteur>
+       <auteur>Cedric Morin pour [Yterium->htpp://www.yterium.net], Superyms (Traduction)</auteur>
        <icon>images/nospam-32.png</icon>
        <licence>(c) 2008 GPL</licence>
-       <version>1.3.0</version>
+       <version>1.5.6</version>
        <etat>stable</etat>
        <description><multi>
        [fr]Halte au spam ! Filtrez les spams dans les messages, sans nuisance pour les utilisateurs honn&#234;tes.
@@ -18,7 +18,7 @@
        [ar]&#1578;&#1608;&#1602;&#1601; &#1575;&#1604;&#1605;&#1578;&#1591;&#1601;&#1604;&#33; &#1601;&#1604;&#1578;&#1585; &#1575;&#1604;&#1576;&#1585;&#1610;&#1583; &#1575;&#1604;&#1605;&#1586;&#1593;&#1580; &#1601;&#1610; &#1575;&#1604;&#1585;&#1587;&#1575;&#1574;&#1604; &#1548; &#1583;&#1608;&#1606; &#1575;&#1586;&#1593;&#1575;&#1580; &#1604;&#1605;&#1587;&#1578;&#1582;&#1583;&#1605; &#1589;&#1575;&#1583;&#1602;.
        [de]SPAM stoppen&#33; Ein Filter ohne Nebenwirkungen f&#252;r ehrliche Nutzer.
        </multi></description>
-       <lien>http://www.spip-contrib.net/?rubrique1165</lien>
+       <lien>http://contrib.spip.net/NoSPAM,1165</lien>
        <prefix>nospam</prefix>
        <pipeline>
                <nom>pre_edition</nom>
@@ -42,4 +42,4 @@
        </pipeline>
        <categorie>performance</categorie>
        <necessite id="SPIP" version="[2.0.0;3.0.99]" />
-</plugin>
+</plugin>
\ No newline at end of file
index c565939..5902ddc 100644 (file)
@@ -1,10 +1,10 @@
 <svn_revision>
 <text_version>
 Origine: file:///home/svn/repository/spip-zone/_plugins_/nospam
-Revision: 73844
-Dernier commit: 2013-06-25 06:00:36 +0200 
+Revision: 84645
+Dernier commit: 2014-09-15 05:41:28 +0200 
 </text_version>
 <origine>file:///home/svn/repository/spip-zone/_plugins_/nospam</origine>
-<revision>73844</revision>
-<commit>2013-06-25 06:00:36 +0200 </commit>
+<revision>84645</revision>
+<commit>2014-09-15 05:41:28 +0200 </commit>
 </svn_revision>
\ No newline at end of file
index 78c67aa..d9f52d5 100644 (file)
@@ -41,7 +41,9 @@ function action_instituer_forum_paremail_dist() {
                // le hash est invalide, mais peut-etre est-on loge avec cet email ?
                // auquel cas on peut utiliser les liens, meme perimes (confort)
                if (isset($GLOBALS['visiteur_session'])
-                 AND $GLOBALS['visiteur_session']['id_auteur']
+                       AND isset($GLOBALS['visiteur_session']['id_auteur'])
+                       AND $GLOBALS['visiteur_session']['id_auteur']
+                       AND isset($GLOBALS['visiteur_session']['email'])
                        AND $GLOBALS['visiteur_session']['email']==$email){
                        $message = sql_fetsel("id_objet,objet,statut","spip_forum","id_forum=".intval($id_forum));
                        if (autoriser("modererforum",$message['objet'],$message['id_objet'])){
diff --git a/www/plugins/notifications2/contenu/page-notifications.html b/www/plugins/notifications2/contenu/page-notifications.html
new file mode 100644 (file)
index 0000000..2e5762c
--- /dev/null
@@ -0,0 +1 @@
+#INCLURE{fond=content/notifications,env}
index 42b72d6..1e60df5 100644 (file)
                                                                <label for="prevenir_admins_restreints"><:notifications:article_prive_admins_restreints:></label>
                                                        </div>
                                                </li>
+                                               <li class='editer editer_limiter_rubriques'>
+                                                       <label for="limiter_rubriques"><:notifications:limiter_rubriques_label:></label>
+                                                       <p class="explication"><:notifications:limiter_rubriques_explication:></p>
+                                                       <input type="text" name="limiter_rubriques" value="[(#ENV{limiter_rubriques}|entites_html)]" id="limiter_rubriques" class="text" />
+                                               </li>
                                        </ul>
                                </fieldset>
                        </li>
                                                                <label for="thread_forum"><:notifications:forums_public_thread:></label>
                                                        </div>
                                                </li>
+                                               <li class="editer editer_forum_article">
+                                                       <div class="choix">
+                                                               <input type="checkbox" name="forum_article"[(#ENV{forum_article}|=={on}|oui)checked="checked"] id="forum_article" class="checkbox" />
+                                                               <label for="thread_forum"><:notifications:forums_public_article:></label>
+                                                       </div>
+                                               </li>
                                                <li class="editer editer_moderateurs_forum">
                                                        <label for="moderateurs_forum"><:notifications:moderateur:></label>
                                                        <p class="explication"><:notifications:forums_public_moderateur:></p>
index 918f1ff..6f620d7 100644 (file)
@@ -1,16 +1,22 @@
 <traduction module="notifications" gestionnaire="salvatore" url="http://trad.spip.net" source="svn://zone.spip.org/spip-zone/_plugins_/notifications/trunk/lang/" reference="fr">
-       <langue code="en" url="http://trad.spip.net/tradlang_module/notifications?lang_cible=en">
+       <langue code="en" url="http://trad.spip.net/tradlang_module/notifications?lang_cible=en" total="82" traduits="82" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="Benitron" lien="http://trad.spip.net/auteur/benitron" />
+               <traducteur nom="Hanjo" lien="http://trad.spip.net/auteur/hanjo" />
                <traducteur nom="kent1" lien="http://trad.spip.net/auteur/kent1" />
        </langue>
-       <langue code="es" url="http://trad.spip.net/tradlang_module/notifications?lang_cible=es">
-               <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel" />
+       <langue code="es" url="http://trad.spip.net/tradlang_module/notifications?lang_cible=es" total="82" traduits="82" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel-s-bujaldon" />
+               <traducteur nom="severo" lien="http://trad.spip.net/auteur/severo" />
        </langue>
-       <langue code="fa" url="http://trad.spip.net/tradlang_module/notifications?lang_cible=fa">
+       <langue code="fa" url="http://trad.spip.net/tradlang_module/notifications?lang_cible=fa" total="82" traduits="55" relire="0" modifs="4" nouveaux="23" pourcent="67.07">
                <traducteur nom="Davood Hossein" lien="http://trad.spip.net/auteur/davood-hossein" />
        </langue>
-       <langue code="fr" />
-       <langue code="sk" url="http://trad.spip.net/tradlang_module/notifications?lang_cible=sk">
+       <langue code="fr" url="http://trad.spip.net/tradlang_module/notifications?lang_cible=fr" total="82" traduits="82" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+       </langue>
+       <langue code="nl" url="http://trad.spip.net/tradlang_module/notifications?lang_cible=nl" total="82" traduits="82" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Hanjo" lien="http://trad.spip.net/auteur/hanjo" />
+       </langue>
+       <langue code="sk" url="http://trad.spip.net/tradlang_module/notifications?lang_cible=sk" total="82" traduits="82" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="jaro" lien="http://trad.spip.net/auteur/jaro" />
        </langue>
 </traduction>
index 7bf98cc..f0b77c3 100644 (file)
@@ -49,13 +49,14 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        // F
        'form_forum_confirmer_email' => 'To confirm your email address, click the button below:',
        'forum_prives_auteur' => '<strong>Authors</strong>: Authors get notified when comments are posted to their article(s) or comment(s) on the private area.',
-       'forum_prives_moderateur' => 'Please write here moderators\' email adress for private forums, coma separated.',
+       'forum_prives_moderateur' => 'Please indicate the moderator’s email address for private forums, (comma-separated in case of multiple addresses).',
        'forum_prives_thread' => '<strong>Forum thread</strong>: Posters to the same thread get notified when a new comment is posted to the (private) thread.',
        'forums_prives' => 'Forums in private area',
        'forums_public' => 'Public forums',
        'forums_public_a_noter' => 'Note: if forums are awaiting validation from moderators before publication, only authors with rights to validate forums get notified when the comment is posted ; other recipients get notified only when moderators validate the comment.',
+       'forums_public_article' => '<strong>Reply to an article</strong>: persons who have publicly replied to an article will receive forum notifications for that article (useful for «flat»  forums).',
        'forums_public_auteurs' => '<strong>Authors</strong>: Authors get notified when new comments are posted to their article(s) on the public area.',
-       'forums_public_moderateur' => 'Please write here moderators\' email adress for public forums, coma separated.',
+       'forums_public_moderateur' => 'Please indicate the moderator’s email address for public forums, (comma-separated in case of multiple addresses).',
        'forums_public_thread' => '<strong>Forum thread</strong>: Posters to the same thread get notified when a new comment is posted to the (public) thread.',
 
        // I
@@ -78,14 +79,16 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'inscription_statut_webmestres' => 'Webmaster',
 
        // L
-       'lien_documentation' => '<a href="http://www.spip-contrib.net/Notifications" class="spip_out">View documentation</a>',
+       'lien_documentation' => '<a href="http://contrib.spip.net/Notifications" class="spip_out">View documentation</a>',
+       'limiter_rubriques_explication' => 'Specify the identifiers of each section where you want to activate the notifications, separated with a comma. example: "11,26"',
+       'limiter_rubriques_label' => 'Limit to these sections:',
 
        // M
        'message_a_valider' => 'Message to confirm:',
        'message_spam_a_confirmer' => 'SPAM to confirm:',
        'message_voir_configuration' => 'Look at the notification setup',
        'messagerie_interne' => 'Private messages',
-       'messagerie_interne_signaler' => '<strong>Notify new private messages</strong>: activate this to get redactors notified when they haven\'t seen a Private Message had been sent to them. Redactors get notified 20 minutes after the Private Message is sent, in order to avoid spam, when the redactor is connected to the private area.',
+       'messagerie_interne_signaler' => '<strong>Notify new private messages</strong>: activate this to get redactors notified when they havent seen a Private Message had been sent to them. Redactors get notified 20 minutes after the Private Message is sent, in order to avoid spam, when the redactor is connected to the private area.',
        'moderateur' => '<strong>Moderator</strong>',
 
        // N
@@ -97,10 +100,10 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // S
        'signature_petition' => 'Petition signatures',
-       'signature_petition_moderateur' => 'Please write here moderator\'s email address for petitions, coma separated.',
+       'signature_petition_moderateur' => 'Please indicate the moderator’s email address for petitions, (comma-separated in case of multiple addresses).',
        'suivi_texte_acces_page' => 'Change my subscriptions to discussions',
        'suivis_perso' => 'Personnal notifications follow-up',
-       'suivis_perso_activer_option' => 'If you activate this option, each visitor clicking this follow-up URL will be registered in the <code>spip_auteurs</code> DB table, with status <code>6visiteur</code>. He\'ll be then able to view all the messages he posted on the website, configure his own notification options, ...',
+       'suivis_perso_activer_option' => 'If you activate this option, each visitor clicking this follow-up URL will be registered in the <code>spip_auteurs</code> DB table, with status <code>6visiteur</code>. Hell be then able to view all the messages he posted on the website, configure his own notification options, ...',
        'suivis_perso_non' => 'No follow-up',
        'suivis_perso_oui' => 'Follow-up activated',
        'suivis_perso_url_suivis' => '<strong>Add an URL for notifications follow-up</strong> in each notification email. CLicking on this URL will let the user configure his own notification preferences.',
index 49fed06..ce27a42 100644 (file)
@@ -54,6 +54,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'forums_prives' => 'Foros privados',
        'forums_public' => 'Foros públicos',
        'forums_public_a_noter' => 'Nota: en el caso de los foros moderados a priori, sólo aquellos autores que tienen derecho de aprobar los foros son notificados cuando se crea un foro; los otros destinatarios son notificados cuando el mensaje ha sido aprobado por el moderador.',
+       'forums_public_article' => '<strong>Respuesta al artículo</strong>: las personas que hayan respondido públicamente al artículos reciben notificaciones de los foros (públicos) del artículo (útil para los foros «planos»).',
        'forums_public_auteurs' => '<strong>Autores</strong>: los autores reciben notificaciones de aquellos foros derivados de sus artículos en en el sitio públicos.',
        'forums_public_moderateur' => 'Indique a continuación el correo electrónico del moderador de los foros públicos (si son varios, separe con comas).',
        'forums_public_thread' => '<strong>Hilo de discusión</strong>: los participantes de un mismo hilo de discusión reciben notificaciones de los foros (públicos).',
@@ -78,7 +79,9 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'inscription_statut_webmestres' => 'Webmasters',
 
        // L
-       'lien_documentation' => '<a href="http://www.spip-contrib.net/Notifications" class="spip_out">Cf. documentation</a>',
+       'lien_documentation' => '<a href="http://contrib.spip.net/Notifications" class="spip_out">Cf. documentation</a>',
+       'limiter_rubriques_explication' => 'Especifique aquí los identificadores de cada sección donde quiere activar las notificaciones, separados por una coma. Por ej. "11,26"',
+       'limiter_rubriques_label' => 'Limitar a estas secciones:',
 
        // M
        'message_a_valider' => 'Mensaje para aprobar:',
index e3ff147..9579d52 100644 (file)
@@ -29,8 +29,6 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'article_valide_url' => 'در ضمن، در اين نشاني موقت ديدني است:',
 
        // B
-       'bouton_changer_pass' => 'Changer mon mot de passe', # NEW
-       'bouton_finir_inscription' => 'Finir mon inscription', # NEW
        'breve_propose_detail' => 'خبر "@titre@" براي نشر پيشنهاد شده',
        'breve_propose_sujet' => '[@nom_site_spip@]  پيشنهاد شده: @titre@',
        'breve_propose_titre' => 'خبر پيشنهادي
@@ -45,30 +43,18 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'evenement_notification' => 'رويدادهاي آتي ممكن است سبب اطلاعيه‌هاي ايميلي شوند.',
 
        // F
-       'form_forum_confirmer_email' => 'Pour confirmer votre adresse email, cliquez sur le bouton ci-dessous : ', # NEW
        'forum_prives_auteur' => '<strong>نويسندگان: </strong>: نويسنده‌ها اطلاعيه‌هايي از سخنگاه‌هاي پست شده روي مقالاتشان يا پيام‌هايشان در قسمت شخصي سايت دريافت مي‌كنند. ',
-       'forum_prives_moderateur' => 'در زير نشاني ايميل گرداننده‌ي سخنگاه‌هاي قسمت شخصي را قيد كنيد (اگرچندتاست، با ويرگول جدا كنيد).',
+       'forum_prives_moderateur' => 'در زير نشاني ايميل گرداننده‌ي سخنگاه‌هاي قسمت شخصي را قيد كنيد (اگرچندتاست، با ويرگول جدا كنيد).', # MODIF
        'forum_prives_thread' => '<strong>خط گفتگو</strong> : شركت كنندگان در همان خط گفتگو اطلايه‌هاي سخنگاه‌ها را دريافت خواهند كرد (خصوصي)',
        'forums_prives' => 'سخنگاه‌هاي خصوصي',
        'forums_public' => 'سخنگاه‌هاي همگاني',
        'forums_public_a_noter' => 'توجه: اگر سخنگاه‌ها در انتظار تأييد گرداننده‌ها پيش از نشر باشند، فقط نويسندگان با حق تأييد سخنگاه‌ها هنگامي كه نظري پست شود اطلاعيه‌ دريافت مي‌كنند، ساير دريافت كنندگان فقط هنگامي اطلاعيه را دريافت خواهدند كرد كه گردانند‌گان اظهار نظر را تأييد كنند.
 ',
        'forums_public_auteurs' => '<strong>نويسندگان</strong>: نويسندگان اطلاعيه‌هايي در سخنگاه‌هاي پست شده روي مقاله‌هايشان در سايت همگاني دريافت مي‌كنند.',
-       'forums_public_moderateur' => 'در زير نشاني ايميل گرداننده‌ (يا گردانندگان - جدا شده با ويرگول) سخنگاههاي عمومي  را قيد كنند.',
+       'forums_public_moderateur' => 'در زير نشاني ايميل گرداننده‌ (يا گردانندگان - جدا شده با ويرگول) سخنگاههاي عمومي  را قيد كنند.', # MODIF
        'forums_public_thread' => '<strong>خط گفتگو</strong>: شركت‌كنندگان در همان خط گفتگو اطلاعيه‌هايي از سخنگاه‌ها (همگاني) دريافت مي‌كنند.',
 
        // I
-       'info_lien_publier_commentaire' => 'Publier ce commentaire', # NEW
-       'info_lien_signaler_spam_commentaire' => 'Signaler comme SPAM', # NEW
-       'info_lien_supprimer_commentaire' => 'Supprimer ce commentaire', # NEW
-       'info_moderation_confirmee_off' => 'Le message #@id_forum@ a bien été supprimé', # NEW
-       'info_moderation_confirmee_publie' => 'Le message #@id_forum@ a bien été publié', # NEW
-       'info_moderation_confirmee_spam' => 'Le message #@id_forum@ a bien été signalé en SPAM', # NEW
-       'info_moderation_deja_faite' => 'Le message #@id_forum@ a déjà été modéré en "@statut@".<br />Connectez-vous dans l\'espace privé pour le modifier.', # NEW
-       'info_moderation_interdite' => 'Vous n\'avez pas le droit de moderer ce message', # NEW
-       'info_moderation_lien_titre' => 'Moderer ce message depuis l\'espace privé', # NEW
-       'info_moderation_url_perimee' => 'Ce lien de moderation n\'est plus valide.', # NEW
-       'info_nouveau_commentaire' => 'Nouveau commentaire', # NEW
        'inscription' => 'ثبت سردبيران',
        'inscription_admins' => 'مديران',
        'inscription_explication' => 'كدام نويسندگان اطلاعيه ثبت سردبيران جديد را دريافت مي‌كنند؟',
@@ -77,11 +63,9 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'inscription_statut_webmestres' => 'وب‌مسترها',
 
        // L
-       'lien_documentation' => '<a href="http://www.spip-contrib.net/Notifications" class="spip_out">به اسناد بنگريد</a>',
+       'lien_documentation' => '<a href="http://contrib.spip.net/Notifications" class="spip_out">به اسناد بنگريد</a>',
 
        // M
-       'message_a_valider' => 'Message à valider : ', # NEW
-       'message_spam_a_confirmer' => 'SPAM à confirmer : ', # NEW
        'message_voir_configuration' => 'به پيكربندي اطلاعيه‌ها بنگريد',
        'messagerie_interne' => 'پيك داخلي',
        'messagerie_interne_signaler' => '<strong>خبر يك پيام خصوصي</strong>: اين گزينه‌ را فعال كنيد تا هنگامي كه  نويسندگان يك پيام خصوصي را كه برايشان ارسال شده نديده باشند سايت يك اطلاعيه ارسال كند. سامانه پيش از خبر كردن نويسنده 20 دقيقه صبر خواهد كرد،  براي آنكه نويسنده‌اي كه الان در قسمت شخصي روي خط است اسپم نباشد.
@@ -91,14 +75,9 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        // N
        'notifications' => 'اطلاعيه‌ها',
 
-       // P
-       'pass_mail_passcookie_1' => 'Pour retrouver votre accès au site @nom_site_spip@, cliquez sur le bouton : ', # NEW
-       'pass_mail_passcookie_2' => 'Vous pourrez alors entrer un nouveau mot de passe et vous reconnecter au site.', # NEW
-
        // S
        'signature_petition' => 'امضا كنندگان طومار ',
-       'signature_petition_moderateur' => ' نشاني ايميل گرداننده (يا گردانندگان، با ويرگول جدا شود) طومارها را در زير قيد كنيد.',
-       'suivi_texte_acces_page' => 'Modifier mes abonnements aux discussions', # NEW
+       'signature_petition_moderateur' => ' نشاني ايميل گرداننده (يا گردانندگان، با ويرگول جدا شود) طومارها را در زير قيد كنيد.', # MODIF
        'suivis_perso' => 'پيگيري اطلاهيه‌هاي خصوصي',
        'suivis_perso_activer_option' => 'اگر اين گزينه را فعال كنيد، هر بازديد‌كننده‌اي كه به اين يو.آر.ال وصل شود، در جدول نويسندگان اسپيپ <code>spip_auteurs</code>با وضعيت <code>6visiteur</code>فلان ثبت مي‌شود. بعد او مي‌تواند تمام پيام‌هايي را كه روي وب سايت پست كرده ببيند، گزينه‌هاي اطلاعيه‌ي خودش را پيكربندي كند و از اين قبيل. . . 
 ',
@@ -111,10 +90,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'suivis_public_notif_desactiver' => 'TODO: جاي علامت زدن براي آنكه ديگر اطلاعيه دريافت نشود',
        'suivis_public_vos_forums' => 'سخنگاه‌هاي شما ',
        'suivis_public_vos_forums_date' => 'سخنگاه‌هاي شما، به ترتيب تاريخ',
-       'suivis_public_votre_page' => 'اين صفحه‌ي شخصي شما براي پيگيري سايت است',
-
-       // T
-       'titre_moderation' => 'Modération' # NEW
+       'suivis_public_votre_page' => 'اين صفحه‌ي شخصي شما براي پيگيري سايت است'
 );
 
 ?>
index 5dd68af..dfce2ed 100644 (file)
@@ -7,23 +7,23 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // A
        'alt_logo_conf' => 'Logo du plugin Notifications',
-       'article_prive' => 'Publication d\'articles',
-       'article_prive_admins_restreints' => '<strong>Administrateurs</strong> : Les administrateurs restreints reçoivent les notifications lors de proposition d\'articles dans leur rubrique',
+       'article_prive' => 'Publication darticles',
+       'article_prive_admins_restreints' => '<strong>Administrateurs</strong> : Les administrateurs restreints reçoivent les notifications lors de proposition darticles dans leur rubrique',
        'article_prive_auteurs' => '<strong>Auteurs</strong> : les auteurs reçoivent les notifications lors de la proposition,publication ou suppression de leur(s) article(s)',
-       'article_propose_detail' => 'L\'article "@titre@" est proposé à la publication
+       'article_propose_detail' => 'Larticle "@titre@" est proposé à la publication
        depuis',
-       'article_propose_sujet' => '[@nom_site_spip@] Propose : @titre@',
+       'article_propose_sujet' => '[@nom_site_spip@] Propose : @titre@',
        'article_propose_titre' => 'Article proposé
        ---------------',
        'article_propose_url' => 'Vous êtes invité à venir le consulter et à donner votre opinion
-       dans le forum qui lui est attaché. Il est disponible à l\'adresse :',
-       'article_publie_detail' => 'L\'article "@titre@" vient d\'être publié par @connect_nom@.',
-       'article_publie_sujet' => '[@nom_site_spip@] PUBLIE : @titre@',
+       dans le forum qui lui est attaché. Il est disponible à l’adresse :',
+       'article_publie_detail' => 'L’article "@titre@" vient d’être publié par @connect_nom@.',
+       'article_publie_sujet' => '[@nom_site_spip@] PUBLIE : @titre@',
        'article_publie_titre' => 'Article publié
        --------------',
        'article_valide_date' => 'Sous réserve de changement, cet article sera publié',
-       'article_valide_detail' => 'L\'article "@titre@" a été validé par @connect_nom@.',
-       'article_valide_sujet' => '[@nom_site_spip@] VALIDE : @titre@',
+       'article_valide_detail' => 'Larticle "@titre@" a été validé par @connect_nom@.',
+       'article_valide_sujet' => '[@nom_site_spip@] VALIDE : @titre@',
        'article_valide_titre' => 'Article validé
        --------------',
        'article_valide_url' => 'En attendant, il est visible à cette adresse temporaire :',
@@ -33,13 +33,13 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'bouton_finir_inscription' => 'Finir mon inscription',
        'breve_propose_detail' => 'La brève "@titre@" est proposée à la publication
        depuis',
-       'breve_propose_sujet' => '[@nom_site_spip@] Propose : @titre@',
+       'breve_propose_sujet' => '[@nom_site_spip@] Propose : @titre@',
        'breve_propose_titre' => 'Brève proposée
        ---------------',
        'breve_propose_url' => 'Vous êtes invité à venir la consulter et à donner votre opinion
-       dans le forum qui lui est attaché. Elle est disponible à l\'adresse :',
-       'breve_publie_detail' => 'La brève "@titre@" vient d\'être publiée par @connect_nom@.',
-       'breve_publie_sujet' => '[@nom_site_spip@] PUBLIE : @titre@',
+       dans le forum qui lui est attaché. Elle est disponible à l’adresse :',
+       'breve_publie_detail' => 'La brève "@titre@" vient dêtre publiée par @connect_nom@.',
+       'breve_publie_sujet' => '[@nom_site_spip@] PUBLIE : @titre@',
        'breve_publie_titre' => 'Brève publiée
        --------------',
 
@@ -47,15 +47,16 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'evenement_notification' => 'Les événements suivants peuvent déclencher une notification par email.',
 
        // F
-       'form_forum_confirmer_email' => 'Pour confirmer votre adresse email, cliquez sur le bouton ci-dessous : ',
+       'form_forum_confirmer_email' => 'Pour confirmer votre adresse email, cliquez sur le bouton ci-dessous : ',
        'forum_prives_auteur' => '<strong>Auteurs</strong> : les auteurs reçoivent les notifications des forums postés sous leurs articles ou leurs messages dans le site privé.',
-       'forum_prives_moderateur' => 'Indiquez ci-dessous l\'adresse email du modérateur des forums privés (ou plusieurs, séparés par des virgules).',
+       'forum_prives_moderateur' => 'Indiquez ci-dessous l’adresse email du modérateur des forums privés (ou plusieurs, séparées par des virgules).',
        'forum_prives_thread' => '<strong>Fil de discussion</strong> : les participants au même fil de discussion reçoivent les notifications des forums (privés).',
        'forums_prives' => 'Forums privés',
        'forums_public' => 'Forums publics',
-       'forums_public_a_noter' => 'À noter : dans le cas des forums modérés à priori, seuls les auteurs ayant le droit de valider les forums sont notifiés lors de l\'envoi du forum ; les autres destinataires sont notifiés lors de la validation du message par le modérateur.',
+       'forums_public_a_noter' => 'À noter : dans le cas des forums modérés à priori, seuls les auteurs ayant le droit de valider les forums sont notifiés lors de l’envoi du forum ; les autres destinataires sont notifiés lors de la validation du message par le modérateur.',
+       'forums_public_article' => '<strong>Réponse à l’article</strong> : les personnes ayant répondu publiquement à l’article recoivent les notifications des forums (publics) de l’article (utile pour les forums « à plat »).',
        'forums_public_auteurs' => '<strong>Auteurs</strong> : les auteurs reçoivent les notifications des forums postés sous leurs articles dans le site public.',
-       'forums_public_moderateur' => 'Indiquez ci-dessous l\'adresse email du modérateur des forums publics (ou plusieurs, séparés par des virgules).',
+       'forums_public_moderateur' => 'Indiquez ci-dessous l’adresse email du modérateur des forums publics (ou plusieurs, séparées par des virgules).',
        'forums_public_thread' => '<strong>Fil de discussion</strong> : les participants au même fil de discussion reçoivent les notifications des forums (publics).',
 
        // I
@@ -66,48 +67,50 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'info_moderation_confirmee_publie' => 'Le message #@id_forum@ a bien été publié',
        'info_moderation_confirmee_spam' => 'Le message #@id_forum@ a bien été signalé en SPAM',
        'info_moderation_deja_faite' => 'Le message #@id_forum@ a déjà été modéré en "@statut@".',
-       'info_moderation_interdite' => 'Vous n\'avez pas le droit de modérer ce message',
-       'info_moderation_lien_titre' => 'Modérer ce message depuis l\'espace privé',
-       'info_moderation_url_perimee' => 'Ce lien de modération n\'est plus valide.',
+       'info_moderation_interdite' => 'Vous navez pas le droit de modérer ce message',
+       'info_moderation_lien_titre' => 'Modérer ce message depuis lespace privé',
+       'info_moderation_url_perimee' => 'Ce lien de modération nest plus valide.',
        'info_nouveau_commentaire' => 'Nouveau commentaire',
        'inscription' => 'Inscription des rédacteurs',
        'inscription_admins' => 'Administrateurs',
-       'inscription_explication' => 'Quels auteurs reçoivent les notifications lors de l\'inscription de nouveaux rédacteurs ?',
+       'inscription_explication' => 'Quels auteurs reçoivent les notifications lors de l’inscription de nouveaux rédacteurs ?',
        'inscription_label' => 'Statut',
        'inscription_statut_aucun' => 'Aucun',
        'inscription_statut_webmestres' => 'Webmestres',
 
        // L
-       'lien_documentation' => '<a href="http://www.spip-contrib.net/Notifications" class="spip_out">Cf. documentation</a>',
+       'lien_documentation' => '<a href="http://contrib.spip.net/Notifications" class="spip_out">Cf. documentation</a>',
+       'limiter_rubriques_explication' => 'Renseignez ici les identifiants de chaque rubrique où vous voulez déclencher les notifications, séparé par une virgule. ex : "11,26"',
+       'limiter_rubriques_label' => 'Limiter à ces rubriques :',
 
        // M
-       'message_a_valider' => 'Message à valider : ',
+       'message_a_valider' => 'Message à valider : ',
        'message_spam_a_confirmer' => 'SPAM à confirmer : ',
        'message_voir_configuration' => 'Voir la configuration des notifications',
        'messagerie_interne' => 'Messagerie interne',
-       'messagerie_interne_signaler' => '<strong>Signaler les nouveaux messages privés</strong> : activer cette option pour que le site envoie une notification lorsqu\'un rédacteur n\'a pas vu un nouveau message dans sa messagerie. Le système attend 20 minutes avant de notifier le rédacteur, de manière à ne pas spammer un rédacteur déjà en ligne dans l\'espace privé.',
+       'messagerie_interne_signaler' => '<strong>Signaler les nouveaux messages privés</strong> : activer cette option pour que le site envoie une notification lorsqu’un rédacteur n’a pas vu un nouveau message dans sa messagerie. Le système attend 20 minutes avant de notifier le rédacteur, de manière à ne pas spammer un rédacteur déjà en ligne dans l’espace privé.',
        'moderateur' => '<strong>Modérateur</strong>',
 
        // N
        'notifications' => 'Notifications',
 
        // P
-       'pass_mail_passcookie_1' => 'Pour retrouver votre accès au site @nom_site_spip@, cliquez sur le bouton : ',
+       'pass_mail_passcookie_1' => 'Pour retrouver votre accès au site @nom_site_spip@, cliquez sur le bouton : ',
        'pass_mail_passcookie_2' => 'Vous pourrez alors entrer un nouveau mot de passe et vous reconnecter au site.',
 
        // S
        'signature_petition' => 'Signatures de pétition',
-       'signature_petition_moderateur' => 'Indiquez ci-dessous l\'adresse email du modérateur des pétitions (ou plusieurs, séparés par des virgules).',
+       'signature_petition_moderateur' => 'Indiquez ci-dessous l’adresse email du modérateur des pétitions (ou plusieurs, séparées par des virgules).',
        'suivi_texte_acces_page' => 'Modifier mes abonnements aux discussions',
        'suivis_perso' => 'Suivi personnalisé',
-       'suivis_perso_activer_option' => 'Si vous activez cette option, chaque visiteur qui se connecte sur cet URL de suivi sera enregistré dans la table <code>spip_auteurs</code>, avec le statut <code>6visiteur</code>. Il pourra alors voir l\'ensemble des messages qu\'il a signés sur le forum, régler ses options de notification, etc.',
+       'suivis_perso_activer_option' => 'Si vous activez cette option, chaque visiteur qui se connecte sur cet URL de suivi sera enregistré dans la table <code>spip_auteurs</code>, avec le statut <code>6visiteur</code>. Il pourra alors voir l’ensemble des messages qu’il a signés sur le forum, régler ses options de notification, etc.',
        'suivis_perso_non' => 'Pas de suivi',
        'suivis_perso_oui' => 'Suivi activé',
-       'suivis_perso_url_suivis' => '<strong>Ajouter une URL de suivi personnalisé</strong> dans chacun des emails de notification. À partir de cette URL, l\'utilisateur pourra configurer ses préférences individuelles de notification.',
-       'suivis_public_article_thread' => 'TODO: case à cocher sur chaque article/thread',
-       'suivis_public_changer_email' => 'TODO: changer d\'email',
+       'suivis_perso_url_suivis' => '<strong>Ajouter une URL de suivi personnalisé</strong> dans chacun des emails de notification. À partir de cette URL, lutilisateur pourra configurer ses préférences individuelles de notification.',
+       'suivis_public_article_thread' => 'TODO : case à cocher sur chaque article/thread',
+       'suivis_public_changer_email' => 'TODO : changer d’email',
        'suivis_public_description' => 'Vous pourrez (quand ce sera fonctionnel...) y retrouver tous vos messages de forum, obtenir un fil RSS des réponses qui y seront apportées, choisir votre mode de notification, etc.',
-       'suivis_public_notif_desactiver' => 'TODO: case à cocher pour ne plus recevoir de notifications',
+       'suivis_public_notif_desactiver' => 'TODO : case à cocher pour ne plus recevoir de notifications',
        'suivis_public_vos_forums' => 'Vos forums',
        'suivis_public_vos_forums_date' => 'Vos forums, par date',
        'suivis_public_votre_page' => 'Ceci est votre page personnalisée de suivi du site',
diff --git a/www/plugins/notifications2/lang/notifications_nl.php b/www/plugins/notifications2/lang/notifications_nl.php
new file mode 100644 (file)
index 0000000..5c00156
--- /dev/null
@@ -0,0 +1,122 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/notifications?lang_cible=nl
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // A
+       'alt_logo_conf' => 'Logo van plugin Notifications',
+       'article_prive' => 'Publicatie van artikelen',
+       'article_prive_admins_restreints' => '<strong>Beheerders</strong>: Beperkte beheerders ontvangen notificaties bij voorstellen voor publicatie in hun rubriek',
+       'article_prive_auteurs' => '<strong>Auteurs</strong>: Auteurs ontvangen notificaties bij het voorstellen, publiceren of verwijderen van hun artikel(en)',
+       'article_propose_detail' => 'Artikel "@titre@" is ter publicatie voorgesteld sinds',
+       'article_propose_sujet' => '[@nom_site_spip@] Stelt voor: @titre@',
+       'article_propose_titre' => 'Voorgesteld artikel
+       ------------------',
+       'article_propose_url' => 'Je wordt voorgesteld het te bekijken en je mening te geven
+       in het forum, dat je vindt op dit adres:',
+       'article_publie_detail' => 'Artikel "@titre@" wordt gepubliceerd door @connect_nom@.',
+       'article_publie_sujet' => '[@nom_site_spip@] GEPUBLICEERD: @titre@',
+       'article_publie_titre' => 'Gepubliceerd artikel
+       --------------------',
+       'article_valide_date' => 'Onder voorbehoud van wijzigingen zal dit artikel worden gepubliceerd',
+       'article_valide_detail' => 'Artikel "@titre@" werd gevalideerd door @connect_nom@.',
+       'article_valide_sujet' => '[@nom_site_spip@] GEVALIDEERD: @titre@',
+       'article_valide_titre' => 'Artikel gevalideerd
+       -------------------',
+       'article_valide_url' => 'In afwachting kan het via dit tijdelijke adres worden bekeken:',
+
+       // B
+       'bouton_changer_pass' => 'Mijn wachtwoord veranderen',
+       'bouton_finir_inscription' => 'Mijn inschrijving beëindigen',
+       'breve_propose_detail' => 'Nieuwsbericht "@titre@" wordt ter publicatie voorgesteld sinds',
+       'breve_propose_sujet' => '[@nom_site_spip@] Voorgesteld: @titre@',
+       'breve_propose_titre' => 'Voorgesteld nieuwbericht
+       ------------------------',
+       'breve_propose_url' => 'Je wordt voorgesteld het te bekijken en je mening te geven
+       in het forum, dat je vindt op dit adres:',
+       'breve_publie_detail' => 'Nieuwsbericht "@titre@" wordt gepubliceerd door @connect_nom@.',
+       'breve_publie_sujet' => '[@nom_site_spip@] GEPUBLICEERD: @titre@',
+       'breve_publie_titre' => 'Gepubliceerd nieuwsbericht
+       --------------------------',
+
+       // E
+       'evenement_notification' => 'De volgende evenementen kunnen een notificatie per email in werking stellen.',
+
+       // F
+       'form_forum_confirmer_email' => 'Klik op de knop hieronder om het e-mailadres te bevestigen: ',
+       'forum_prives_auteur' => '<strong>Auteurs</strong>: Auteurs ontvangen notificaties uit een forum dat onder hun artikel is geplaatst of van hun berichten in de privé-omgeving.',
+       'forum_prives_moderateur' => 'Geef hieronder het e-mailadres van de moderator van de forums in het privé-gedeelte (of meerdere, gescheiden door een komma).',
+       'forum_prives_thread' => '<strong>Draad van de discussie</strong>: deelnemers aan dezelfde discussie in het privé-forum ontvangen notificaties.',
+       'forums_prives' => 'Privé forums',
+       'forums_public' => 'Publieke forums',
+       'forums_public_a_noter' => 'Let op: bij een gemodeeerd forum ontvangen alleen de auteurs die mogen goedkeuren een noticifatie bij een nieuw bericht; anderen ontvangen pas een bericht na goedkeuring.',
+       'forums_public_article' => '<strong>Reactie op een artikel</strong>: personen die via de publieke site op een artikel reageren, ontvangen een notificatie (zinvol bij een "plat" forum).',
+       'forums_public_auteurs' => '<strong>Auteurs</strong>: auteurs ontvangen notificaties van publieke forumberichten onder hun artikel.',
+       'forums_public_moderateur' => 'Geef hieronder het e-mailadres van de moderator van de publieke forums (of meerdere, gescheiden door een komma).',
+       'forums_public_thread' => '<strong>Draad van een discussie</strong>: deelnemers aan dezelfde publieke discussie ontvangen notificaties.',
+
+       // I
+       'info_lien_publier_commentaire' => 'Dit commentaar plaatsen',
+       'info_lien_signaler_spam_commentaire' => 'Als SPAM aanmerken',
+       'info_lien_supprimer_commentaire' => 'Dit commentaar verwijderen',
+       'info_moderation_confirmee_off' => 'Bericht #@id_forum@ werd verwijderd',
+       'info_moderation_confirmee_publie' => 'Bericht #@id_forum@ werd gepubliceerd',
+       'info_moderation_confirmee_spam' => 'Bericht #@id_forum@ werd als SPAM aangemerkt',
+       'info_moderation_deja_faite' => 'Bericht #@id_forum@ werd al gemodereerd als "@statut@".',
+       'info_moderation_interdite' => 'Je hebt niet het recht dit bericht te modereren',
+       'info_moderation_lien_titre' => 'Modereer dit bericht vanaf het privé-gedeelte',
+       'info_moderation_url_perimee' => 'Deze moderatie-link is niet langer geldig.',
+       'info_nouveau_commentaire' => 'Nieuw commentaar',
+       'inscription' => 'Inschrijving van redacteurs',
+       'inscription_admins' => 'Beheerders',
+       'inscription_explication' => 'Welke auteurs ontvangen notificaties bij de inschrijving van nieuwe redacteurs?',
+       'inscription_label' => 'Status',
+       'inscription_statut_aucun' => 'Geen',
+       'inscription_statut_webmestres' => 'Webmasters',
+
+       // L
+       'lien_documentation' => '<a href="http://contrib.spip.net/Notifications" class="spip_out">Zie documentatie</a>',
+       'limiter_rubriques_explication' => 'Vermeld hier de identificatie van iedere rubriek waarvoor de notificaties moeten worden geactiveerd, gescheiden door een komma. bv: "11,26"',
+       'limiter_rubriques_label' => 'Uitsluitend deze rubrieken:',
+
+       // M
+       'message_a_valider' => 'Te valideren bericht: ',
+       'message_spam_a_confirmer' => 'Aan te duiden als SPAM: ',
+       'message_voir_configuration' => 'Bekijk de configuratie van de notificaties',
+       'messagerie_interne' => 'Intern berichtensysteem',
+       'messagerie_interne_signaler' => '<strong>Nieuwe privé-berichten signaleren</strong>: activeer deze optie zodat de site een notificatie stuurt wanneer een redacteur een nieuw bericht niet heeft gezien. Het systeem wacht 20 minuten alvorens de notificatie naar de redacteur wordt gestuurd, om op deze manier een redacteur die in het privé-gedeelte online is niet met emails te bekogelen.',
+       'moderateur' => '<strong>Moderateur</strong>',
+
+       // N
+       'notifications' => 'Notificaties',
+
+       // P
+       'pass_mail_passcookie_1' => 'Om je toegang tot de site @nom_site_spip@ terug te vinden, klik je op deze knop: ',
+       'pass_mail_passcookie_2' => 'Vervolgens geef je een nieuw wachtwoord in en je logt in op de site.',
+
+       // S
+       'signature_petition' => 'Petitie-handtekeningen',
+       'signature_petition_moderateur' => 'Geef hier het e-mailadres van de moderator voor petities (of meerdere, gescheiden door een komma).',
+       'suivi_texte_acces_page' => 'Pas mijn abonnementen op discussies aan',
+       'suivis_perso' => 'Aangepaste opvolging',
+       'suivis_perso_activer_option' => 'Wanneer je deze optie inschakelt, wordt iedere bezoeker die via deze URL binnenkomt, geregistreerd in tabel <code>spip_auteurs</code>, met status <code>6visiteur</code>. Zo kan hij alle berichten bekijken die hij in het forum plaatste, zijn notificatie-opties instellen, enz.',
+       'suivis_perso_non' => 'Geen opvolging',
+       'suivis_perso_oui' => 'Opvolging geactiveerd',
+       'suivis_perso_url_suivis' => '<strong>Zet een aangepaste URL</strong> in de notificatie-emails. Aan de hand van deze URL kan de gebruiker zijn persoonlijke notificatie-instellingen aanpassen.',
+       'suivis_public_article_thread' => 'TODO: keuze op ieder artikel/draad',
+       'suivis_public_changer_email' => 'TODO: email veranderen',
+       'suivis_public_description' => 'Je kunt hier (zodra dit werkt...) al je forumberichten terugvinden, een RSS-feed krijgen van alle reacties, jouw wijze van notificatie kiezen, enz.',
+       'suivis_public_notif_desactiver' => 'TODO: aankruisen om geen notificaties meer te ontvangen',
+       'suivis_public_vos_forums' => 'Je forums',
+       'suivis_public_vos_forums_date' => 'Je forums, op datum',
+       'suivis_public_votre_page' => 'Dit is jouw persoonlijke bladzijde om deze site op te volgen',
+
+       // T
+       'titre_moderation' => 'Opvolgen'
+);
+
+?>
index c830442..1cd01e2 100644 (file)
@@ -34,12 +34,12 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'bouton_finir_inscription' => 'Dokončiť registráciu',
        'breve_propose_detail' => 'Novinka "@titre@" sa posiela na publikovanie
        z(o)',
-       'breve_propose_sujet' => '[@nom_site_spip@] Odoslaný: @titre@',
+       'breve_propose_sujet' => '[@nom_site_spip@] Článok odoslaný na schválenie: @titre@',
        'breve_propose_titre' => 'Novinka bola odoslaná
        ---------------',
        'breve_propose_url' => 'Pozvali vás, aby ste si pozreli túto novinku a svoj názor na ňu napísali  do diskusného fóra, ktoré je k nej pripojené. Novinku nájdete na adrese:',
        'breve_publie_detail' => 'Novinku "@titre@" práve publikoval(a) @connect_nom@.',
-       'breve_publie_sujet' => '[@nom_site_spip@] PUBLIKOVANÝ: @titre@',
+       'breve_publie_sujet' => '[@nom_site_spip@] PUBLIKOVANÝ ČLÁNOK: @titre@',
        'breve_publie_titre' => 'Novinka bola publikovaná
        --------------',
 
@@ -49,13 +49,14 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        // F
        'form_forum_confirmer_email' => 'Ak chcete potvrdiť svoju e-mailovú adresu, kliknite na toto tlačidlo: ',
        'forum_prives_auteur' => '<strong>Autori:</strong> autori dostávajú oznamy odoslané z diskusných fór pod ich článkami alebo správami v súkromnej zóne.',
-       'forum_prives_moderateur' => 'Zadajte e-mailovú adresu moderátora súkromných diskusných fór (alebo viac, oddelených čiarkami).',
+       'forum_prives_moderateur' => 'Zadajte e-mailovú adresu moderátora súkromných diskusných fór (alebo viac adries, oddeľte ich čiarkami).',
        'forum_prives_thread' => '<strong>Téma:</strong> diskutujúci v rovnakom vlánke dostávajú oznami z (verejných) diskusných fór.',
        'forums_prives' => 'Súkromné diskusné fóra',
        'forums_public' => 'Verejné diskusné fóra',
        'forums_public_a_noter' => 'Poznámka: v prípade, že sa príspevky do diskusných fór kontrolujú pred ich zverejnením, o odoslaní príspevkov sú informovaní iba autori, ktorí majú právo schvaľovať príspevky; ostatní sú informovaní, až keď príspevky schvália títo moderátori.',
+       'forums_public_article' => '<strong>Reakcia na článok:</strong> ľudia, ktorí verejne reagovali na článok, dostanú oznamy z–(verejných) diskusných  fór článku (je to užitočné pre jednoduché diskusné fóra).',
        'forums_public_auteurs' => '<strong>Autori:</strong> autori dostávajú oznamy odoslané z diskusných fór pod ich článkami na verejne prístupnej stránke.',
-       'forums_public_moderateur' => 'Zadajte e-mailovú adresu moderátora verejných diskusných fór (alebo viac, oddelených čiarkami).',
+       'forums_public_moderateur' => 'Zadajte e-mailovú adresu moderátora verejných diskusných fór (alebo viac adries, oddeľte ich čiarkami).',
        'forums_public_thread' => '<strong>Téma:</strong> diskutujúci v rovnakom vlákne dostávajú oznamy z (verejných) diskusných fór.',
 
        // I
@@ -78,7 +79,9 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'inscription_statut_webmestres' => 'Webmasteri',
 
        // L
-       'lien_documentation' => '<a href="http://www.spip-contrib.net/Notifications" class="spip_out">Porov. s dokumentáciou</a>',
+       'lien_documentation' => '<a href="http://contrib.spip.net/Notifications" class="spip_out">Porov. s dokumentáciou</a>',
+       'limiter_rubriques_explication' => 'Sem zadajte identifikačné číslo každej rubriky, pre ktorú chcete spúšťať oznamy, oddeľte ich čiarkami. Napr. "11,26"',
+       'limiter_rubriques_label' => 'Obmedziť na tieto rubriky:',
 
        // M
        'message_a_valider' => 'Príspevok na potvrdenie: ',
@@ -97,7 +100,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // S
        'signature_petition' => 'Podpisy pod petíciu',
-       'signature_petition_moderateur' => 'Zadajte e-mailovú adresu moderátora petícií (alebo viac, oddelených čiarkami).',
+       'signature_petition_moderateur' => 'Zadajte e-mailovú adresu moderátora petícií (alebo viac adries, oddeľte ich čiarkami).',
        'suivi_texte_acces_page' => 'Upraviť odoberanie príspevkov z diskusií',
        'suivis_perso' => 'Prispôsobené sledovanie',
        'suivis_perso_activer_option' => 'Ak aktivujete túto možnosť, každý návštevník, ktorý sa prihlási na túto sledovaciu adresu, bude zapísaný do tabuľky <code>spip_auteurs</code> so stavom <code>6visiteur.</code> Potom si bude môcť prezrieť všetky príspevky, pod ktoré sa podpísal na diskusnom fóre, upraviť si nastavenia oznamov, atď.',
index b367f2b..ce0ff78 100644 (file)
@@ -1,15 +1,19 @@
 <traduction module="paquet-notifications" gestionnaire="salvatore" url="http://trad.spip.net" source="svn://zone.spip.org/spip-zone/_plugins_/notifications/trunk/lang/" reference="fr">
-       <langue code="en" url="http://trad.spip.net/tradlang_module/paquet-notifications?lang_cible=en">
+       <langue code="en" url="http://trad.spip.net/tradlang_module/paquet-notifications?lang_cible=en" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="kent1" lien="http://trad.spip.net/auteur/kent1" />
        </langue>
-       <langue code="es" url="http://trad.spip.net/tradlang_module/paquet-notifications?lang_cible=es">
-               <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel" />
+       <langue code="es" url="http://trad.spip.net/tradlang_module/paquet-notifications?lang_cible=es" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel-s-bujaldon" />
        </langue>
-       <langue code="fa" url="http://trad.spip.net/tradlang_module/paquet-notifications?lang_cible=fa">
+       <langue code="fa" url="http://trad.spip.net/tradlang_module/paquet-notifications?lang_cible=fa" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="Davood Hossein" lien="http://trad.spip.net/auteur/davood-hossein" />
        </langue>
-       <langue code="fr" />
-       <langue code="sk" url="http://trad.spip.net/tradlang_module/paquet-notifications?lang_cible=sk">
+       <langue code="fr" url="http://trad.spip.net/tradlang_module/paquet-notifications?lang_cible=fr" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+       </langue>
+       <langue code="nl" url="http://trad.spip.net/tradlang_module/paquet-notifications?lang_cible=nl" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Hanjo" lien="http://trad.spip.net/auteur/hanjo" />
+       </langue>
+       <langue code="sk" url="http://trad.spip.net/tradlang_module/paquet-notifications?lang_cible=sk" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="jaro" lien="http://trad.spip.net/auteur/jaro" />
        </langue>
 </traduction>
index 998f070..f222b32 100644 (file)
@@ -6,7 +6,7 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // N
-       'notifications_description' => 'Active les notifications par email de certaines actions, notamment des forums et de la messagerie de l\'espace privé, permet également l\'envoi d\'un mail aux auteurs lors de la publication de leurs articles.',
+       'notifications_description' => 'Active les notifications par email de certaines actions, notamment des forums et de la messagerie de l’espace privé, permet également l’envoi d’un mail aux auteurs lors de la publication de leurs articles.',
        'notifications_slogan' => 'Signaler par mail des modifications'
 );
 
diff --git a/www/plugins/notifications2/lang/paquet-notifications_nl.php b/www/plugins/notifications2/lang/paquet-notifications_nl.php
new file mode 100644 (file)
index 0000000..f31c7cd
--- /dev/null
@@ -0,0 +1,15 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/paquet-notifications?lang_cible=nl
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // N
+       'notifications_description' => 'Notificatie per email wanneer bepaalde handelingen worden verricht, zoals in het forum of het privé berichtensysteem. Ook kan een email naar auteurs worden gestuurd bij publicatie van hun artikelen.',
+       'notifications_slogan' => 'Berichten per email over aanpassingen'
+);
+
+?>
diff --git a/www/plugins/notifications2/notifications.html b/www/plugins/notifications2/notifications.html
new file mode 100644 (file)
index 0000000..8b89471
--- /dev/null
@@ -0,0 +1,17 @@
+[(#CHEMIN{page.html}|oui)
+<INCLURE{fond=page,env}>
+]
+[(#CHEMIN{page.html}|non)
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="#LANG" lang="#LANG" dir="#LANG_DIR">
+<head>
+<INCLURE{fond=inclure/head} />
+</head>
+<div class="page">
+<div class="main">
+#INCLURE{fond=content/notifications,env}
+</div>
+</div>
+</html>
+]
index 7954879..4b7f75f 100644 (file)
@@ -69,28 +69,37 @@ function notifications_notifications_destinataires($flux){
                include_spip('base/abstract_sql');
                $t = sql_fetsel("id_rubrique", "spip_articles", "id_article=" . intval($id_article));
                $id_rubrique = $t['id_rubrique'];
+               if ($GLOBALS['notifications']['limiter_rubriques']){
+                       $limites = $GLOBALS['notifications']['limiter_rubriques'];
+                       $limiter_rubriques = explode(",",$limites);
+               } else {
+                       $limiter_rubriques = array($id_rubrique);
+               }
 
-               while ($id_rubrique){
-                       $hierarchie[] = $id_rubrique;
-                       $res = sql_fetsel("id_parent", "spip_rubriques", "id_rubrique=" . intval($id_rubrique));
-                       if (!$res){ // rubrique inexistante
-                               $id_rubrique = 0;
-                               break;
+               if (in_array($id_rubrique,$limiter_rubriques))
+               {
+                       while ($id_rubrique){
+                               $hierarchie[] = $id_rubrique;
+                               $res = sql_fetsel("id_parent", "spip_rubriques", "id_rubrique=" . intval($id_rubrique));
+                               if (!$res){ // rubrique inexistante
+                                       $id_rubrique = 0;
+                                       break;
+                               }
+                               $id_parent = $res['id_parent'];
+                               $id_rubrique = $id_parent;
                        }
-                       $id_parent = $res['id_parent'];
-                       $id_rubrique = $id_parent;
-               }
-               spip_log("Prop article > admin restreint de " . join(',', $hierarchie), 'notifications');
+                       spip_log("Prop article > admin restreint de " . join(',', $hierarchie), 'notifications');
 
-               //les admins de la rub et de ses parents 
-               $result_email = sql_select(
-                       "auteurs.email,auteurs.id_auteur,lien.id_objet as id_rubrique",
-                       "spip_auteurs AS auteurs JOIN spip_auteurs_liens AS lien ON auteurs.id_auteur=lien.id_auteur ",
-                       "lien.objet='rubrique' AND ".sql_in('lien.id_objet',sql_quote($hierarchie))." AND auteurs.statut='0minirezo'");
+                       //les admins de la rub et de ses parents 
+                       $result_email = sql_select(
+                               "auteurs.email,auteurs.id_auteur,lien.id_objet as id_rubrique",
+                               "spip_auteurs AS auteurs JOIN spip_auteurs_liens AS lien ON auteurs.id_auteur=lien.id_auteur ",
+                               "lien.objet='rubrique' AND ".sql_in('lien.id_objet',sql_quote($hierarchie))." AND auteurs.statut='0minirezo'");
 
-               while ($qui = sql_fetch($result_email)){
-                       spip_log($options['statut'] . " article > admin restreint " . $qui['id_auteur'] . " de la rubrique" . $qui['id_rubrique'] . " prevenu", 'notifications');
-                       $flux['data'][] = $qui['email'];
+                       while ($qui = sql_fetch($result_email)){
+                               spip_log($options['statut'] . " article > admin restreint " . $qui['id_auteur'] . " de la rubrique" . $qui['id_rubrique'] . " prevenu", 'notifications');
+                               $flux['data'][] = $qui['email'];
+                       }
                }
 
        }
@@ -100,39 +109,56 @@ function notifications_notifications_destinataires($flux){
                AND $GLOBALS['notifications']['prevenir_auteurs_articles']
        ){
                $id_article = $flux['args']['id'];
+               include_spip('base/abstract_sql');
+               $t = sql_fetsel("id_rubrique", "spip_articles", "id_article=" . intval($id_article));
+               $id_rubrique = $t['id_rubrique'];
+               if ($GLOBALS['notifications']['limiter_rubriques']){
+                       $limites = $GLOBALS['notifications']['limiter_rubriques'];
+                       $limiter_rubriques = explode(",",$limites);
+               } else {
+                       $limiter_rubriques = array($id_rubrique);
+               }
 
+               if (in_array($id_rubrique,$limiter_rubriques))
+               {
 
-               include_spip('base/abstract_sql');
+                       include_spip('base/abstract_sql');
 
-               // Qui va-t-on prevenir en plus ?
-               $result_email = sql_select(
-                       "auteurs.email",
-                       "spip_auteurs AS auteurs JOIN spip_auteurs_liens AS lien ON auteurs.id_auteur=lien.id_auteur",
-                       "lien.id_objet=".intval($id_article)." AND lien.objet='article'");
+                       // Qui va-t-on prevenir en plus ?
+                       $result_email = sql_select(
+                               "auteurs.email",
+                               "spip_auteurs AS auteurs JOIN spip_auteurs_liens AS lien ON auteurs.id_auteur=lien.id_auteur",
+                               "lien.id_objet=".intval($id_article)." AND lien.objet='article'");
 
-               while ($qui = sql_fetch($result_email)){
-                       $flux['data'][] = $qui['email'];
-                       spip_log($options['statut'] . " article > auteur " . $qui['id_auteur'] . " prevenu", 'notifications');
+                       while ($qui = sql_fetch($result_email)){
+                               $flux['data'][] = $qui['email'];
+                               spip_log($options['statut'] . " article > auteur " . $qui['id_auteur'] . " prevenu", 'notifications');
+                       }
                }
 
        }
 
-       // forum valide ou prive : prevenir les autres contributeurs du thread
+       // forum valide ou prive : prevenir les autres contributeurs du thread ou ceux qui ont déjà répondu à l'article
        if (($quoi=='forumprive' AND $GLOBALS['notifications']['thread_forum_prive'])
-               OR ($quoi=='forumvalide' AND $GLOBALS['notifications']['thread_forum'])
+               OR ($quoi=='forumvalide' AND ($GLOBALS['notifications']['thread_forum'] or $GLOBALS['notifications']['forum']))
        ){
 
                $id_forum = $flux['args']['id'];
-
                if ($t = $options['forum']
                        OR $t = sql_fetsel("*", "spip_forum", "id_forum=" . intval($id_forum))
                ){
-
+            
                        // Tous les participants a ce *thread*, abonnes
                        // on prend les emails parmi notification_email (prioritaire si rempli) email_auteur ou email de l'auteur qd id_auteur connu
                        $s = sql_select("F.email_auteur, F.notification_email, A.email",
                                "spip_forum AS F LEFT JOIN spip_auteurs AS A ON F.id_auteur=A.id_auteur",
                                "notification=1 AND id_thread=" . intval($t['id_thread']) . " AND (email_auteur != '' OR notification_email != '' OR A.email IS NOT NULL )");
+            // Eventuellement tout ceux qui ont répondu à cet article
+            if ($GLOBALS['notifications']['forum_article']){
+                $s = sql_select("F.email_auteur, F.notification_email, A.email",
+                               "spip_forum AS F LEFT JOIN spip_auteurs AS A ON F.id_auteur=A.id_auteur",
+                               "notification=1 AND objet=".sql_quote($t['objet'])." AND id_objet=" . intval($t['id_objet']) . " AND (email_auteur != '' OR notification_email != '' OR A.email IS NOT NULL )");                
+                }
                        while ($r = sql_fetch($s)){
                                if ($r['notification_email'])
                                        $flux['data'][] = $r['notification_email'];
index 52a40b7..bc159c8 100644 (file)
@@ -1,11 +1,11 @@
 <paquet
        prefix="notifications"
        categorie="communication"
-       version="3.0.10"
+       version="3.2.0"
        etat="stable"
        compatibilite="[3.0.0;3.0.*]"
        logo="notifications-32.png"
-       documentation="http://www.spip-contrib.net/Notifications,2360"
+       documentation="http://contrib.spip.net/Notifications"
        schema="0.1.3"
 >
        <nom>Notifications</nom>
@@ -26,4 +26,4 @@
        <utilise nom="forum" />
        <necessite nom="facteur" compatibilite="[2.4.2;]"/>
 
-</paquet>
+</paquet>
\ No newline at end of file
index b4800aa..9e6e7d9 100644 (file)
@@ -1,10 +1,10 @@
 <svn_revision>
 <text_version>
 Origine: file:///home/svn/repository/spip-zone/_plugins_/notifications/trunk
-Revision: 73845
-Dernier commit: 2013-06-25 06:00:41 +0200 
+Revision: 84941
+Dernier commit: 2014-10-01 13:00:23 +0200 
 </text_version>
 <origine>file:///home/svn/repository/spip-zone/_plugins_/notifications/trunk</origine>
-<revision>73845</revision>
-<commit>2013-06-25 06:00:41 +0200 </commit>
+<revision>84941</revision>
+<commit>2014-10-01 13:00:23 +0200 </commit>
 </svn_revision>
\ No newline at end of file
index 9043a0d..893a865 100644 (file)
@@ -10,7 +10,7 @@
  * @subpackage odt2spip
  * @category import
  *
- * @version $Id: odt2spip_importe.php 71726 2013-04-07 01:27:30Z cy_altern@yahoo.fr $
+ * @version $Id: odt2spip_importe.php 81585 2014-03-22 17:15:03Z root $
  *
  */
 if (!defined("_ECRIRE_INC_VERSION")) return;
@@ -41,9 +41,13 @@ function action_odt2spip_importe() {
        $arg = _request('arg');
        $args = explode(":", $arg);
 
-       // le 1er élément de _request('arg') est id_rubrique=XXX
+       // le 1er élément de _request('arg') est id_rubrique=XXX ou id_article=YYY
+       $id_article = $id_rubrique = false;
        $Targs = explode("=", $args[0]);
-       $id_rubrique = intval($Targs[1]);
+       $objet = $Targs[0];
+       $id_objet = intval($Targs[1]);
+       $objet == 'id_rubrique' ? $id_rubrique = $id_objet : $id_article = $id_objet;
+
        $hash = _request('hash');
 
        $redirect = _request('redirect');
@@ -53,10 +57,13 @@ function action_odt2spip_importe() {
 
        include_spip("inc/securiser_action");
 
-       if (!autoriser('creerarticledans', 'rubrique', $id_rubrique)) {
+       if (
+               ($id_rubrique AND !autoriser('creerarticledans', 'rubrique', $id_rubrique))
+               OR
+               ($id_article AND !autoriser('modifier', 'article', $id_article))
+       )
                die(_T('avis_non_acces_page'));
-       }
-
+               
        // ss-rep temporaire specifique de l'auteur en cours: tmp/odt2spip/id_auteur/
        // => le créer s'il n'existe pas
        $base_dezip = _DIR_TMP . "odt2spip/";     // avec / final
@@ -99,9 +106,10 @@ function action_odt2spip_importe() {
        $odt2spip_generer_sortie = charger_fonction('odt2spip_generer_sortie', 'inc');
        $Tarticle = $odt2spip_generer_sortie($id_auteur, $rep_dezip);
 
-       // créer l'article
+       // si necessaire créer l'article
        include_spip('action/editer_article');
-       $id_article = article_inserer($id_rubrique);
+       if (!$id_article)
+               $id_article = article_inserer($id_rubrique);
        
        // le remplir
        article_modifier($id_article, $Tarticle);
diff --git a/www/plugins/odt2spip_30/formulaires/configurer_odt2spip.html b/www/plugins/odt2spip_30/formulaires/configurer_odt2spip.html
new file mode 100644 (file)
index 0000000..7ed6ee7
--- /dev/null
@@ -0,0 +1,26 @@
+<div class="formulaire_spip formulaire_config formulaire_config_#FORM">\r
+       [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]\r
+       [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]\r
+\r
+       <form method="post" action="#ENV{action}"><div>\r
+               #ACTION_FORMULAIRE{#ENV{action}}\r
+               <fieldset>\r
+                       <legend><:odtspip:defaut_attacher:></legend>\r
+                       <ul>\r
+                               <li class="editer_defaut_attacher">\r
+                                       <label><:odtspip:label_defaut_attacher:>:</label>\r
+                                       <div class="choix">\r
+                                                <input type="radio" name="defaut_attacher" id="defaut_attacher_oui" value="oui"[(#ENV{defaut_attacher}|=={oui}|oui)checked="checked"] />\r
+                                                <label for="defaut_attacher_oui"><:odtspip:oui:></label>\r
+                                       </div>\r
+                                       <div class="choix">\r
+                                                <input type="radio" name="defaut_attacher" id="defaut_attacher_non" value="non"[(#ENV{defaut_attacher}|=={non}|oui)checked="checked"] />\r
+                                                <label for="defaut_attacher_non"><:odtspip:non:></label>\r
+                                       </div>\r
+                               </li>\r
+                       </ul>\r
+               </fieldset>             \r
+\r
+               <p class="boutons"><input type="submit" class="submit" value="<:bouton_valider:>" /></p>\r
+       </div></form>\r
+</div>\r
index cd455b3..22889f7 100644 (file)
@@ -1,9 +1,16 @@
 #CACHE{0}
 <div id="boite_odt2spip" class="formulaire_spip formulaire_odt2spip" style="">
        <style type="text/css">#boite_odt2spip label { display: inline; }</style>
-       <h3 class="titrem"><:odtspip:importer_fichier:></h3>
-       [<img class="cadre-icone" width="24" height="24" alt="" src="(#CHEMIN{odt2spip-24.png})"/>]
-       <form action="#URL_ACTION_AUTEUR{'odt2spip_importe','id_rubrique='#ENV{id_rubrique},#URL_ECRIRE{article}}" method="POST" enctype="multipart/form-data">
+       [(#ENV{exec}|=={rubrique}|oui)
+               <h3 class="titrem"><:odtspip:importer_fichier:></h3>
+               [<img class="cadre-icone" width="24" height="24" alt="" src="(#CHEMIN{odt2spip-24.png})"/>]
+               <form action="#URL_ACTION_AUTEUR{'odt2spip_importe','id_rubrique='#ENV{id_rubrique},#URL_ECRIRE{article}}" method="POST" enctype="multipart/form-data">
+       ]
+       [(#ENV{exec}|=={article}|oui)
+               <h3 class="titrem"><:odtspip:remplacer_article:></h3>
+               [<img class="cadre-icone" width="24" height="24" alt="" src="(#CHEMIN{odt2spip-24.png})"/>]
+               <form action="#URL_ACTION_AUTEUR{'odt2spip_importe','id_article='#ENV{id_article},#URL_ECRIRE{article}}" method="POST" enctype="multipart/form-data">
+       ]       
                <ul>
                        <li>
                                <label for='fichier_odt'><strong><:odtspip:choix_fichier:></strong></label>
                        <li>
                                <strong class="explications"><:odtspip:attacher_fichier_odt:></strong>
                                <label for='attacher_oui'><:odtspip:oui:>
-                               <input type='radio' name='attacher_odt' value='1' id='attacher_oui' checked='checked' /></label>
-                               <label for='attacher_non'><input type='radio' name='attacher_odt' value='0' id='attacher_non' />
+                               <input type='radio' name='attacher_odt' value='1' id='attacher_oui'[ (#CONFIG{odt2spip/defaut_attacher}|=={oui}|oui)checked='checked'] />
+                               </label>
+                               <label for='attacher_non'>
+                               <input type='radio' name='attacher_odt' value='0' id='attacher_non'[ (#CONFIG{odt2spip/defaut_attacher}|=={non}|oui)checked='checked'] />
                                <:odtspip:non:></label>
                        </li>
                        <li>
index 8f6decf..4c6cfdb 100644 (file)
@@ -18,9 +18,12 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
   \r
        // C\r
        'choix_fichier' => 'Fichier ODT &agrave; utiliser : ',\r
+       'label_defaut_attacher' => 'Par défaut le champ "Attacher le fichier..." est coché',\r
+       'titre_page_configurer' => 'Configuration du plugin odt2spip',\r
 \r
     // D\r
-    'mode_document' => 'documents',\r
+    'defaut_attacher' => 'Choix par défaut pour l\'attachement du fichier ODT',\r
+    \r
 \r
     // E\r
        'err_enregistrement_fichier_sortie' => 'Erreur lors de l\'enregistrement du fichier de snippet ',\r
@@ -34,10 +37,13 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
     // I\r
        'images_mode_document' => 'Images attach&eacute;es en mode:',\r
        'mode_image' => 'images',\r
-       'importer_fichier' => 'Cr&eacute;er un article &agrave; partir d\'un fichier OOo Writer',\r
+       'importer_fichier' => 'Cr&eacute;er un article &agrave; partir d\'un fichier ODT',\r
         \r
     // L\r
     'langue_publication' => 'Langue de l\'article', \r
+    \r
+    // M\r
+    'mode_document' => 'documents',\r
 \r
        // N\r
        'non' => 'non',\r
@@ -45,8 +51,11 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        // O\r
        'oui' => 'oui',\r
        \r
+       // R\r
+       'remplacer_article' => 'Remplacer l\'article par le contenu d\'un fichier ODT',\r
+       \r
        // T\r
        'cet_article_version_odt' => 'Version .odt de cet article' \r
        \r
 );\r
-?>\r
+?>
\ No newline at end of file
diff --git a/www/plugins/odt2spip_30/odt2spip_administrations.php b/www/plugins/odt2spip_30/odt2spip_administrations.php
new file mode 100644 (file)
index 0000000..0611693
--- /dev/null
@@ -0,0 +1,49 @@
+<?php
+
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+/**
+ * Fonction d'installation du plugin
+ */
+function odt2spip_upgrade($nom_meta_base_version,$version_cible) {
+       $maj = array();
+
+       // Déclaration des valeurs par défaut de chaque variable de config
+       $defaut = odt2spip_declarer_config();
+
+       // On considère que la configuration existante n'est plus utile étant donnés les changements
+       // donc on se contente de la supprimer tout simplement (permet d'éviter un souci si le plugin
+       // n'a pas été désinstallé comme précisé dans la documentation)
+       $maj['create'] = array(
+               array('effacer_meta', 'odt2spip'),
+               array('effacer_meta', 'odt2spip_creation'),
+               array('ecrire_config','odt2spip', $defaut),
+       );
+       $maj['201406091738'] = array(
+               array('ecrire_config','odt2spip/defaut_attacher', 'oui'),
+       );
+
+       include_spip('base/upgrade');
+       maj_plugin($nom_meta_base_version, $version_cible, $maj);
+}
+
+function odt2spip_declarer_config() {
+       $config =array(
+               'defaut_attacher' => 'oui',
+       );
+
+       return $config;
+}
+
+
+/**
+ * Fonction de désinstallation
+ * On supprime les trois metas du plugin :
+ * - saveauto : la meta de configuration
+ * - saveauto_base_version : la meta du numero de version de la base
+ */
+function odt2spip_vider_tables($nom_meta_base_version) {
+       effacer_meta('odt2spip');
+       effacer_meta($nom_meta_base_version);
+}
+?>
index 7fb3720..49caa98 100644 (file)
@@ -16,6 +16,9 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 /**\r
  * Ajout une boite de creation d'un article à partir d'un fichier odt\r
  * dans la colonne gauche des pages exec=rubrique\r
+ * ou\r
+ * ajout d'une boite de remplacement du contenu de l'article à partir d'un fichier odt\r
+ * dans la colonne de gauche des pages exec=article\r
  *\r
  * @internal à l'aide du pipeline {@link affiche_gauche}\r
  * @param Array $flux Le code de la colonne gauche\r
@@ -24,8 +27,14 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 function odt2spip_affiche_gauche($flux){\r
        if ($flux['args']['exec']=='rubrique'\r
          AND $id_rubrique = $flux['args']['id_rubrique']\r
-         AND autoriser('publierdans','rubrique',$flux['args']['id_rubrique'])){\r
-               $out = recuperer_fond('formulaires/odt2spip', array('id_rubrique' => $id_rubrique));\r
+         AND autoriser('ecrire')){\r
+               $out = recuperer_fond('formulaires/odt2spip', array('id_rubrique' => $id_rubrique, 'exec' => 'rubrique'));\r
+               $flux['data'] .= $out;\r
+       }\r
+       elseif ($flux['args']['exec']=='article' \r
+               AND $id_article = $flux['args']['id_article']\r
+               AND autoriser('modifier', 'article', $id_article)){\r
+               $out = recuperer_fond('formulaires/odt2spip', array('id_article' => $id_article, 'exec' => 'article'));\r
                $flux['data'] .= $out;\r
        }\r
        return $flux;\r
index c63af86..228a7d3 100644 (file)
@@ -1,7 +1,8 @@
 <paquet
        prefix="odt2spip"
        categorie="edition"
-       version="2.0.1"
+       version="2.1.2"
+       schema="201406091738"
        etat="test"
        compatibilite="[3.0.0;3.0.*]"
        logo="odt2spip-64.png"
 >      
        <nom>odt2spip</nom>     <!-- générateur d'articles spip à partir de fichiers odt -->
        <auteur>cy_altern</auteur>
-       <copyright>2009-2013</copyright>
+       <copyright>2009-2014</copyright>
        <licence lien="http://www.gnu.org/licenses/lgpl-3.0.html">LGPL 3</licence>
        <credit lien="http://www.raleigh.ru/MathML/mmltex/index.php?lang=en">XSLT pour la transformation MathML 2.0 to LaTeX :
        Vasil Yaroshevich, yarosh@raleigh.ru</credit>
 
        <pipeline nom="affiche_gauche" inclure="odt2spip_pipelines.php" />
-</paquet>
+</paquet>
\ No newline at end of file
diff --git a/www/plugins/odt2spip_30/prive/squelettes/contenu/configurer_odt2spip.html b/www/plugins/odt2spip_30/prive/squelettes/contenu/configurer_odt2spip.html
new file mode 100644 (file)
index 0000000..6bc7a94
--- /dev/null
@@ -0,0 +1,6 @@
+[(#AUTORISER{configurer}|sinon_interdire_acces)]\r
+<h1 class='grostitre'><:odtspip:titre_page_configurer:></h1>\r
+\r
+<div class="ajax">\r
+       #FORMULAIRE_CONFIGURER_ODT2SPIP\r
+</div>\r
index 61be3e0..b8c2832 100644 (file)
@@ -1,10 +1,10 @@
 <svn_revision>
 <text_version>
 Origine: file:///home/svn/repository/spip-zone/_plugins_/odt2spip/trunk
-Revision: 72009
-Dernier commit: 2013-04-13 21:00:12 +0200 
+Revision: 84608
+Dernier commit: 2014-09-14 20:53:11 +0200 
 </text_version>
 <origine>file:///home/svn/repository/spip-zone/_plugins_/odt2spip/trunk</origine>
-<revision>72009</revision>
-<commit>2013-04-13 21:00:12 +0200 </commit>
+<revision>84608</revision>
+<commit>2014-09-14 20:53:11 +0200 </commit>
 </svn_revision>
\ No newline at end of file
index 238861f..7bd3197 100644 (file)
                  <input type="checkbox" name="copie_logo"[ checked="(#ENV{copie_logo}|!={''}|?{'checked'})"] class="fondl" id="copie_logo" />\r
                  <label for="copie_logo"><:rssarticle:copie_logo:></label>\r
                 \r
+            </li>\r
+            <li class="editer">\r
+                 <h3 class="legend"><:rssarticle:html2spip:></h3>\r
+                 <input type="checkbox" name="html2spip"[ checked="(#ENV{html2spip}|!={''}|?{'checked'})"] id="html2spip" />\r
+                 <label for="html2spip"><:rssarticle:html2spip:></label>\r
+                \r
             </li>\r
                </ul>\r
 \r
index f4dc256..5f5a1e8 100644 (file)
@@ -21,7 +21,8 @@ function genie_rssarticle_copie_dist($t){
   if (lire_config('rssarticle/import_statut')=="publie")       $import_statut="publie"; else  $import_statut="prop";     \r
   if (lire_config('rssarticle/mode')=="auto")       $mode_auto=true; else  $mode_auto=false;  \r
   if (lire_config('rssarticle/email_alerte')=="on") $email_alerte=true; else  $email_alerte=false;\r
-  if (lire_config('rssarticle/copie_logo')=="on")   $copie_logo=true; else  $copie_logo=false;        \r
+  if (lire_config('rssarticle/copie_logo')=="on")   $copie_logo=true; else  $copie_logo=false; \r
+  if (lire_config('rssarticle/html2spip')=="on")   $html2spip=true; else  $html2spip=false; \r
   $email_suivi = lire_config('rssarticle/email_suivi'); \r
   \r
   // autres valeurs\r
@@ -46,12 +47,16 @@ function genie_rssarticle_copie_dist($t){
        $s = sql_select("*", "spip_syndic_articles", "statut='publie' AND id_syndic='$id_syndic'","","maj DESC","10");  // par flot de 10 articles / site pour limiter la charge\r
        while ($a = sql_fetch($s)) {\r
                        $titre =  $a['titre'];\r
+                       $url =  $a['url'];\r
           $id_syndic_article = $a['id_syndic_article']; \r
                     \r
-          // article avec mm titre existe ? (test doublons)\r
-               if (!$row = sql_fetsel("id_article","spip_articles","titre=".sql_quote($titre))) {        \r
+          // article avec mm titre existe ? (test doublons sur l'url plutot que sr le titre)\r
+               if (!$row = sql_fetsel("id_article","spip_articles","url_site=".sql_quote($url))) {        \r
             \r
             $texte = $a['descriptif'];\r
+            //traitement pour syntaxe SPIP\r
+            if($html2spip)\r
+                  $texte = html2spip($texte);\r
             $lang  = $a['lang'];\r
             $url   = $a['url'];\r
             $tags =  $a['tags'];\r
@@ -187,11 +192,77 @@ function extraire_enclosures($tags) {
        return $s;\r
 }\r
 \r
-/*\r
-UPDATE `spip_syndic_articles` SET statut="publie";\r
-TRUNCATE TABLE `spip_articles`;\r
-DELETE FROM `spip_auteurs_liens` WHERE id_auteur > 1;\r
-DELETE FROM `spip_auteurs` WHERE id_auteur > 1; \r
-*/\r
+/**\r
+ * \r
+ * Nettoyer l'utf-8 et ses accents \r
+ *\r
+**/\r
+function clean_utf8($t) {\r
+       if (!preg_match('!\S!u', $t))\r
+               $t = preg_replace_callback(',&#x([0-9a-f]+);,i', 'utf8_do', utf8_encode(utf8_decode($t)));\r
+       return $t;\r
+}\r
+\r
+\r
+//passe le html en SPIP\r
+//repris de memo.php, merci\r
+\r
+function html2spip($lapage){\r
+       $lapage=clean_utf8($lapage);\r
+       \r
+       // remettre les double quotes casé par texte_backend\r
+       $lapage = str_replace('&#034;','"',$lapage);\r
+       \r
+       // PRETRAITEMENTS\r
+       $lapage = str_replace("\n\r", "\r", $lapage); // echapper au greedyness de preg_replace\r
+       $lapage = str_replace("\n", "\r", $lapage);\r
+\r
+       // itals\r
+       $lapage = preg_replace(",<(i|em)( [^>\r]*)?".">(.+)</\\1>,Uims", "{\\3}", $lapage);\r
+       \r
+       // gras (pas de {{ pour eviter tout conflit avec {)\r
+       $lapage = preg_replace(",<(b|h[4-6])( [^>]*)?".">(.+)</\\1>,Uims", "@@b@@\\3@@/b@@", $lapage);\r
+       $lapage = preg_replace(",<strong( [^>]*)?".">(.+)</strong>,Uims", "@@b@@\\2@@/b@@", $lapage);\r
+       \r
+       // entites\r
+       include_spip('inc/charsets');\r
+       $lapage = html2unicode($lapage, true); //secure?\r
+               \r
+       // liens avec possibilités de non fermeture du tag\r
+       $lapage = preg_replace(",<a[ \t\n\r][^<>]*href=[^<>]*(http[^<>]*)[^<>]>(.*?)<,uims", "[\\2->\\1] <", $lapage);\r
+\r
+       // images (cf ressource)\r
+       $lapage = preg_replace(",<img[ \t\n\r][^<>]*src=[^<>]*(http[^<>'\"]*)[^<>]*>,uims","[img]\\1[//img]", $lapage);\r
+\r
+               \r
+       // intertitres\r
+       $lapage = preg_replace(",<(h[1-3])( [^>]*)?".">(.+)</\\1>,Uims", "\r{{{ \\3 }}}\r", $lapage);\r
+       // tableaux\r
+       $lapage = preg_replace(",<tr( [^>]*)?".">,Uims", "<br />\r", $lapage);\r
+       $lapage = preg_replace(",<t[hd]( [^>]*)?".">,Uims", " | ", $lapage);\r
+\r
+       // POST TRAITEMENT\r
+       $lapage = str_replace("\r", "\n", $lapage);\r
+\r
+       // SUPPRIME LES TAGS\r
+       if (eregi("<title.*>(.*)</title>", $lapage, $regs))\r
+       $titre = textebrut($regs[1]);\r
+       $lapage = textebrut($lapage);\r
+       \r
+       // Suite tableaux\r
+       $lapage = preg_replace(",\n[| ]+\n,", "", $lapage);\r
+       $lapage = preg_replace(",\n[|].+?[|].+?[|].+,", "\\0|\r", $lapage);\r
+       \r
+       // retablir les gras\r
+       $lapage = preg_replace(",@@b@@(.*)@@/b@@,Uims","{{\\1}}",$lapage);\r
+       \r
+       //retablir les images pour les lire avec le plugin ressource\r
+       $lapage = preg_replace('#\[img\](.*)\[\//img\]#Umis', "<$1>", $lapage);\r
+       \r
+       //nettoyer les "] qui dépassent parfois\r
+       $lapage = preg_replace(",\"\],uims", "]", $lapage);\r
+       \r
+       return $lapage;\r
+}\r
 \r
 ?>
\ No newline at end of file
index cc84966..c8686b1 100644 (file)
@@ -17,6 +17,9 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
   'copie_logo' => 'Recopier le logo du site comme logo d\'article',\r
   'cron_interval' => 'Fréquence de la copie des flux RSS en articles',\r
   'cron_interval_timer' => 'Intervalle en seconde ',\r
+  \r
+  //R\r
+  'html2spip' => 'Passer le HTML en syntaxe SPIP. Utilisez le plugin "ressource" pour afficher ensuite les images.',\r
 \r
   // S\r
   'statut_article_importe' => 'Statut des articles import&eacute;s',\r
index 96a765a..f7dc1f6 100644 (file)
@@ -1,11 +1,11 @@
 <paquet\r
        prefix="rssarticle"\r
        categorie="edition"\r
-       version="1.1.0"\r
-       etat="dev"\r
+       version="1.1.2"\r
+       etat="stable"\r
        compatibilite="[3.0.2;3.0.*]"\r
        logo="prive/themes/spip/images/rssarticle-64.png"\r
-       documentation="http://www.spip-contrib.net/Plugin-Flux-RSS-en-articles"\r
+       documentation="http://contrib.spip.net/Flux-RSS-en-articles"\r
        schema="1.0.0" \r
 >\r
        <nom>Flux RSS en articles</nom>\r
index bf7defe..dbd1b87 100644 (file)
@@ -1,10 +1,10 @@
 <svn_revision>
 <text_version>
 Origine: file:///home/svn/repository/spip-zone/_plugins_/rss_article/trunk
-Revision: 64302
-Dernier commit: 2012-08-01 10:00:12 +0200 
+Revision: 83421
+Dernier commit: 2014-06-23 09:03:15 +0200 
 </text_version>
 <origine>file:///home/svn/repository/spip-zone/_plugins_/rss_article/trunk</origine>
-<revision>64302</revision>
-<commit>2012-08-01 10:00:12 +0200 </commit>
+<revision>83421</revision>
+<commit>2014-06-23 09:03:15 +0200 </commit>
 </svn_revision>
\ No newline at end of file
index c2e87f3..bca21ae 100644 (file)
@@ -210,6 +210,11 @@ function saisies_verifier($formulaire, $saisies_masquees_nulles=true){
                else\r
                        $valeur = _request($champ);\r
                \r
+               // Pour la saisie "destinataires" il faut filtrer si jamais on a mis un premier choix vide\r
+               if ($saisie['saisie'] == 'destinataires') {\r
+                       $valeur = array_filter($valeur);\r
+               }\r
+               \r
                // On regarde d'abord si le champ est obligatoire\r
                if ($obligatoire\r
                        and $obligatoire != 'non'\r
index 1c41d35..9c15248 100644 (file)
@@ -11,7 +11,7 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 \r
 /**\r
  * Indique si une saisie peut être affichée.\r
- * \r
+ *\r
  * On s'appuie sur l'éventuelle clé "editable" du $champ.\r
  * Si editable vaut :\r
  *    - absent : le champ est éditable\r
@@ -26,7 +26,7 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
  *     Environnement transmis à la saisie, certainement l'environnement du formulaire\r
  * @param bool $utiliser_editable\r
  *     - false pour juste tester le cas -1\r
- * \r
+ *\r
  * @return bool\r
  *     Retourne un booléen indiquant l'état éditable ou pas :\r
  *     - true si la saisie est éditable (peut être affichée)\r
@@ -65,7 +65,7 @@ function saisie_editable($champ, $env, $utiliser_editable=true) {
                        }\r
                }\r
        }\r
-       \r
+\r
        // aucun des paramètres demandés n'avait de contenu\r
        return false;\r
 }\r
@@ -101,9 +101,9 @@ function saisies_generer_html($champ, $env=array()){
        if (!saisie_editable($champ, $env)) {\r
                return '';\r
        }\r
-       \r
+\r
        $contexte = array();\r
-       \r
+\r
        // On sélectionne le type de saisie\r
        $contexte['type_saisie'] = $champ['saisie'];\r
        // Identifiant unique de saisie, si present\r
@@ -121,7 +121,7 @@ function saisies_generer_html($champ, $env=array()){
                        $options[$option] = _T_ou_typo($valeur, 'multi');\r
                }\r
        }\r
-       \r
+\r
        // On ajoute les options propres à la saisie\r
        $contexte = array_merge($contexte, $options);\r
 \r
@@ -133,7 +133,7 @@ function saisies_generer_html($champ, $env=array()){
                // car les sous-saisies ne doivent pas être affectees\r
                // par les modification sur l'environnement servant à generer la saisie mère\r
                $contexte['_env'] = $env;\r
-               \r
+\r
                // À partir du moment où on passe tout l'environnement, il faut enlever certains éléments qui ne doivent absolument provenir que des options\r
                unset($env['inserer_debut']);\r
                unset($env['inserer_fin']);\r
@@ -144,7 +144,7 @@ function saisies_generer_html($champ, $env=array()){
                                unset($env[$option_a_supprimer]);\r
                        }\r
                }\r
-               \r
+\r
                $contexte = array_merge($env, $contexte);\r
        }\r
        // Sinon on ne sélectionne que quelques éléments importants\r
@@ -173,7 +173,7 @@ function saisies_generer_html($champ, $env=array()){
        // Si ya des enfants on les remonte dans le contexte\r
        if (isset($champ['saisies']) and is_array($champ['saisies']))\r
                $contexte['saisies'] = $champ['saisies'];\r
-       \r
+\r
        // On génère la saisie\r
        return recuperer_fond(\r
                'saisies/_base',\r
@@ -200,10 +200,10 @@ function saisies_generer_vue($saisie, $env=array(), $env_obligatoire=array()){
                return '';\r
 \r
        $contexte = array();\r
-               \r
+\r
        // On sélectionne le type de saisie\r
        $contexte['type_saisie'] = $saisie['saisie'];\r
-       \r
+\r
        // Peut-être des transformations à faire sur les options textuelles\r
        $options = $saisie['options'];\r
        foreach ($options as $option => $valeur){\r
@@ -214,7 +214,7 @@ function saisies_generer_vue($saisie, $env=array(), $env_obligatoire=array()){
                        $options[$option] = _T_ou_typo($valeur, 'multi');\r
                }\r
        }\r
-       \r
+\r
        // On ajoute les options propres à la saisie\r
        $contexte = array_merge($contexte, $options);\r
 \r
@@ -227,7 +227,7 @@ function saisies_generer_vue($saisie, $env=array(), $env_obligatoire=array()){
                // par les modification sur l'environnement servant à generer la saisie mère\r
                $contexte['_env'] = $env;\r
 \r
-               // À partir du moment où on passe tout l'environnement, il faut enlever \r
+               // À partir du moment où on passe tout l'environnement, il faut enlever\r
                // certains éléments qui ne doivent absolument provenir que des options\r
                $saisies_disponibles = saisies_lister_disponibles();\r
                if (is_array($saisies_disponibles[$contexte['type_saisie']]['options'])){\r
@@ -236,12 +236,12 @@ function saisies_generer_vue($saisie, $env=array(), $env_obligatoire=array()){
                                unset($env[$option_a_supprimer]);\r
                        }\r
                }\r
-               \r
+\r
                $contexte = array_merge($env, $contexte);\r
        }\r
 \r
        // Dans tous les cas on récupère de l'environnement la valeur actuelle du champ\r
-       \r
+\r
        // On regarde en priorité s'il y a un tableau listant toutes les valeurs\r
        if ($env['valeurs'] and is_array($env['valeurs']) and isset($env['valeurs'][$contexte['nom']])){\r
                $contexte['valeur'] = $env['valeurs'][$contexte['nom']];\r
@@ -293,7 +293,7 @@ function saisies_generer_js_afficher_si($saisies,$id_form){
        $code = '';\r
        $code .= '(function($){';\r
        $code .= '$(document).ready(function(){chargement=true;';\r
-               $code .= 'verifier_saisies_'.$id_form.' = function(form){';\r
+               $code .= 'verifier_saisies_'.$id_form." = function(form){\n";\r
                                foreach ($saisies as $saisie) {\r
                                        // on utilise comme selecteur l'identifiant de saisie en priorite s'il est connu\r
                                        // parce que li_class = 'tableau[nom][option]' ne fonctionne evidement pas\r
@@ -311,7 +311,9 @@ function saisies_generer_js_afficher_si($saisies,$id_form){
                                                        default:\r
                                                                $class_li = 'editer_'.$saisie['options']['nom'];\r
                                                }\r
-                                               $condition = $saisie['options']['afficher_si']."\n".$saisie['options']['afficher_si_remplissage'];\r
+                                               $afficher_si = isset($saisie['options']['afficher_si']) ? $saisie['options']['afficher_si'] : '';\r
+                                               $afficher_si_remplissage = isset($saisie['options']['afficher_si_remplissage']) ? $saisie['options']['afficher_si_remplissage'] : '';\r
+                                               $condition = join("\n", array_filter(array($afficher_si, $afficher_si_remplissage)));\r
                                                // retrouver l'identifiant\r
                                                $identifiant = '';\r
                                                if (isset($saisie['identifiant']) and $saisie['identifiant']) {\r
@@ -340,7 +342,13 @@ function saisies_generer_js_afficher_si($saisies,$id_form){
                                                                        $condition = preg_replace('#@'.preg_quote($nom).'@#U', '$(form).find("[name=\''.$nom.'\']:checked").val()', $condition);\r
                                                                        break;\r
                                                                case 'case':\r
-                                                                       $condition = preg_replace('#@'.preg_quote($nom).'@#U', '($(form).find("[name=\''.$nom.'\']").is(":checked") ? $(form).find("[name=\''.$nom.'\']").val() : "")', $condition);\r
+                                                                       $condition = preg_replace('#@'.preg_quote($nom).'@#U', '($(form).find(".checkbox[name=\''.$nom.'\']").is(":checked") ? $(form).find(".checkbox[name=\''.$nom.'\']").val() : "")', $condition);\r
+                                                                       break;\r
+                                                               case 'checkbox':\r
+                                                                       preg_match_all('#@(.+)@ == "(.*)"$#U', $condition, $matches2);\r
+                                                                       foreach ($matches2[2] as $value) {\r
+                                                                               $condition = preg_replace('#@'.preg_quote($nom).'@#U', '($(form).find(".checkbox[name=\''.$nom.'[]\'][value='.$value.']").is(":checked") ? $(form).find(".checkbox[name=\''.$nom.'[]\'][value='.$value.']").val() : "")', $condition);\r
+                                                                               }\r
                                                                        break;\r
                                                                default:\r
                                                                        $condition = preg_replace('#@'.preg_quote($nom).'@#U', '$(form).find("[name=\''.$nom.'\']").val()', $condition);\r
@@ -351,11 +359,11 @@ function saisies_generer_js_afficher_si($saisies,$id_form){
                                                } else {\r
                                                        $sel = "li.$class_li";\r
                                                }\r
-                                               $code .= 'if ('.$condition.') {$(form).find("'.$sel.'").show(400);} ';\r
-                                               $code .= 'else {if (chargement==true) {$(form).find("'.$sel.'").hide(400).css("display","none");} else {$(form).find("'.$sel.'").hide(400);};} ';\r
+                                               $code .= "\tif (".$condition.') {$(form).find("'.$sel.'").show(400);} '."\n\t";\r
+                                               $code .= 'else {if (chargement==true) {$(form).find("'.$sel.'").hide(400).css("display","none");} else {$(form).find("'.$sel.'").hide(400);};} '."\n";\r
                                        }\r
                                }\r
-               $code .= '};';\r
+               $code .= "};";\r
                $code .= '$("li#afficher_si_'.$id_form.'").parents("form").each(function(){verifier_saisies_'.$id_form.'(this);});';\r
                $code .= '$("li#afficher_si_'.$id_form.'").parents("form").change(function(){verifier_saisies_'.$id_form.'(this);});';\r
        $code .= 'chargement=false;})';\r
@@ -366,7 +374,7 @@ function saisies_generer_js_afficher_si($saisies,$id_form){
 /**\r
  * Lorsque l'on affiche les saisies (#VOIR_SAISIES), les saisies ayant une option afficher_si\r
  * et dont les conditions ne sont pas remplies doivent être retirées du tableau de saisies.\r
- * \r
+ *\r
  * Cette fonction sert aussi lors de la vérification des saisies avec saisies_verifier().\r
  * À ce moment là, les saisies non affichées sont retirées de _request\r
  * (on passe leur valeur à NULL).\r
index 9b2e3e1..1f3cbd7 100644 (file)
@@ -4,7 +4,7 @@
        <langue code="de" url="http://trad.spip.net/tradlang_module/saisies?lang_cible=de" total="162" traduits="142" relire="0" modifs="3" nouveaux="17" pourcent="87.65">
                <traducteur nom="klaus++" lien="http://trad.spip.net/auteur/klaus" />
        </langue>
-       <langue code="en" url="http://trad.spip.net/tradlang_module/saisies?lang_cible=en" total="162" traduits="159" relire="0" modifs="0" nouveaux="3" pourcent="98.15">
+       <langue code="en" url="http://trad.spip.net/tradlang_module/saisies?lang_cible=en" total="162" traduits="162" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="Hanjo" lien="http://trad.spip.net/auteur/hanjo" />
                <traducteur nom="kent1" lien="http://trad.spip.net/auteur/kent1" />
                <traducteur nom="Paolo" lien="http://trad.spip.net/auteur/paolo" />
@@ -25,7 +25,7 @@
        </langue>
        <langue code="it" url="http://trad.spip.net/tradlang_module/saisies?lang_cible=it" total="162" traduits="139" relire="0" modifs="3" nouveaux="20" pourcent="85.80">
        </langue>
-       <langue code="nl" url="http://trad.spip.net/tradlang_module/saisies?lang_cible=nl" total="162" traduits="159" relire="0" modifs="0" nouveaux="3" pourcent="98.15">
+       <langue code="nl" url="http://trad.spip.net/tradlang_module/saisies?lang_cible=nl" total="162" traduits="162" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="Hanjo" lien="http://trad.spip.net/auteur/hanjo" />
                <traducteur nom="mpossoz" lien="http://trad.spip.net/auteur/mpossoz" />
        </langue>
index 2439a01..6e8cd5a 100644 (file)
@@ -95,6 +95,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'option_heure_pas_label' => 'Interval of the minutes in the help menu of the input',
        'option_horaire_label' => 'Schedule',
        'option_horaire_label_case' => 'Allow to fill in the time',
+       'option_id_groupe_label' => 'Keyword group',
        'option_info_obligatoire_explication' => 'You can modify the default indication of obligation: <i>[Obligatoire]</i>.',
        'option_info_obligatoire_label' => 'Indication of obligation',
        'option_inserer_barre_choix_edition' => 'complete editing toolbar',
@@ -156,6 +157,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'saisie_hidden_titre' => 'Hidden field',
        'saisie_input_explication' => 'A simple line of text that can be visible or hidden (password).',
        'saisie_input_titre' => 'Textfield',
+       'saisie_mot_explication' => 'One or more keywords of a group',
+       'saisie_mot_titre' => 'Keyword',
        'saisie_oui_non_explication' => 'Either a Yes or No response',
        'saisie_oui_non_titre' => 'Yes or No',
        'saisie_radio_defaut_choix1' => 'One',
index b5cb162..76d61d5 100644 (file)
@@ -95,6 +95,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'option_heure_pas_label' => 'Interval in minuten in het hulpmenu',
        'option_horaire_label' => 'Uurrooster',
        'option_horaire_label_case' => 'Ook het uurrooster opnemen',
+       'option_id_groupe_label' => 'Trefwoordengroep',
        'option_info_obligatoire_explication' => 'Je kan de standaard indicatie aanpassen van verplichting: <i>[Obligatoire]</i>.',
        'option_info_obligatoire_label' => 'Indicatie verplichting',
        'option_inserer_barre_choix_edition' => 'edit toolbar compleet',
@@ -156,6 +157,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'saisie_hidden_titre' => 'Verborgen veld',
        'saisie_input_explication' => 'Een enkele tekstregel die zichtbaar of verborgen (wachtwoord) kan zijn.',
        'saisie_input_titre' => 'Tekstveld',
+       'saisie_mot_explication' => 'Een of meer trefwoorden uit een groep',
+       'saisie_mot_titre' => 'Trefwoord',
        'saisie_oui_non_explication' => 'Ja of nee antwoord',
        'saisie_oui_non_titre' => 'Ja of Nee',
        'saisie_radio_defaut_choix1' => 'Een',
index f7082da..56b740b 100644 (file)
@@ -1,11 +1,11 @@
 <paquet\r
        prefix="saisies"\r
        categorie="outil"\r
-       version="1.40.4"\r
+       version="1.41.2"\r
        etat="stable"\r
        compatibilite="[2.0.0;3.0.*]"\r
        logo="images/logo_saisie_48.png"\r
-       documentation="http://www.spip-contrib.net/Saisies"\r
+       documentation="http://contrib.spip.net/Saisies"\r
 >\r
        <nom>Saisies</nom>\r
        <auteur lien="http://contrib.spip.net/Matthieu-Marcillaud">Matthieu Marcillaud</auteur>\r
@@ -13,7 +13,7 @@
        <auteur lien="http://contrib.spip.net/Joseph">Joseph</auteur>\r
        <auteur lien="http://www.ldd.fr">Les Développements Durables</auteur>\r
        <licence>GNU/GPL</licence>\r
-       \r
+\r
        <traduire module="saisies" reference="fr" gestionnaire="salvatore" />\r
 \r
        <pipeline nom="header_prive" inclure="saisies_pipelines.php" />\r
index 94067e8..def5278 100644 (file)
@@ -3,10 +3,10 @@
        <slogan>Ecrire facilement des champs de formulaires</slogan>\r
     <auteur>Matthieu Marcillaud - RastaPopoulos - Joseph</auteur>\r
     <licence>&#169; 2009-2013 GNU/GPL</licence>\r
-    <version>1.40.4</version>\r
+    <version>1.41.2</version>\r
     <etat>stable</etat>\r
     <categorie>outil</categorie>\r
-    \r
+\r
        <description>\r
                <multi>\r
                [fr]\r
                balise #SAISIE. Le HTML g&#233;n&#233;r&#233; est compatible avec la nomenclature des formulaires\r
                propos&#233;e par SPIP > 2.0 et avec le plugin de configuration CFG.\r
                [en]\r
-               This plugin makes it easier to write form fields by providing a #SAISIE tag. \r
+               This plugin makes it easier to write form fields by providing a #SAISIE tag.\r
                The generated HTML is compatible with the classification of forms\r
                proposed by SPIP > 2.0 and with the configuration plugin CFG.\r
                </multi>\r
        </description>\r
-    \r
-    <lien>http://www.spip-contrib.net/Saisies</lien>\r
+\r
+    <lien>http://contrib.spip.net/Saisies</lien>\r
     <prefix>saisies</prefix>\r
     <icon>images/logo_saisie_48.png</icon>\r
-    \r
+\r
     <fonctions>balise/saisie.php</fonctions>\r
     <fonctions>inc/saisies.php</fonctions>\r
     <fonctions>saisies_fonctions.php</fonctions>\r
index 53d3d6d..85c612c 100644 (file)
@@ -1,7 +1,6 @@
-[(#ENV{sans_reponse}|is_null|oui) [(#SET{sans_reponse,<:saisies:vue_sans_reponse:>})] ]\r
-[(#ENV{sans_reponse}|is_null|non) [(#SET{sans_reponse,#ENV{sans_reponse}})] ]\r
+[(#SET{sans_reponse,#ENV{sans_reponse}|is_null|?{<:saisies:vue_sans_reponse:>,#ENV{sans_reponse}}})]\r
 \r
-#SET{valeur_uniquement,#ENV{valeur_uniquement}|et{#ENV{valeur_uniquement}|!={non}}|?{' ',''}}\r
+#SET{valeur_uniquement,#ENV{valeur_uniquement}|et{#ENV{valeur_uniquement}|!={non}}|oui}\r
 #SET{enfants,#ENV*{saisies}|et{#ENV*{saisies}|is_array}}\r
 \r
 [(#REM) On génère la réponse et on l'enregistre dans une variable. Doit être VIDE s'il n'y a pas de réponse. ]\r
                #SET{reponse,#INCLURE{fond=saisies-vues/#ENV{type_saisie},env,sans_reponse=#GET{sans_reponse}}|trim}\r
        ]\r
        [(#CHEMIN{saisies-vues/#ENV{type_saisie}.html}|non)\r
-               #SET{reponse,#ENV*{valeur}|trim}\r
+               #SET{reponse,#ENV*{valeur}|saisie_traitement_vue{#ENV**}}\r
        ]\r
 \r
 [(#REM) Maintenant on affiche en encapsulant ou pas ]\r
 \r
 [(#REM) Cas normal avec présentation ]\r
 [(#GET{valeur_uniquement}|non)\r
-<div class="afficher[ afficher_(#ENV{nom})][ saisie_(#ENV{type_saisie})][ (#ENV{li_class})][ (#GET{reponse}|non)sans_reponse]">\r
+<div class="afficher[ afficher_(#ENV{nom})][ saisie_(#ENV{type_saisie})][ (#ENV{li_class})][ (#GET{reponse}|non)sans_reponse vide]">\r
        [(#REM) S'il y a des enfants on n'inclut que la vue ]\r
        [(#GET{enfants}|oui)\r
                #GET{reponse}\r
@@ -25,7 +24,7 @@
        [(#GET{enfants}|non|et{#ENV{type_saisie}|!={explication}})\r
                [<strong class="label">(#ENV{label_case,#ENV{label,#ENV{nom}}})</strong>]\r
                <div class="valeur">\r
-               [(#GET{reponse}|sinon{#GET{sans_reponse}}|propre)]\r
+               [(#GET{reponse}|sinon{#GET{sans_reponse}})]\r
                </div>\r
        ]\r
 </div>\r
@@ -38,6 +37,6 @@
                #GET{reponse}\r
        ]\r
        [(#GET{enfants}|non)\r
-               [(#GET{reponse}|sinon{#GET{sans_reponse}}|propre)]\r
+               [(#GET{reponse}|sinon{#GET{sans_reponse}})]\r
        ]\r
 ]\r
index ec96f4b..20a4304 100644 (file)
@@ -82,7 +82,7 @@ options:
   -
     saisie: 'fieldset'
     options:
-      nom: 'validation'
+      nom: 'obli'
       label: '<:saisies:option_groupe_validation:>'
     saisies:
       -
index 9fcc607..6353221 100644 (file)
@@ -18,4 +18,5 @@
 [(#REM) Si la valeur est un tableau, le plugin sait le transformer en chaine, plutôt que d'afficher "Array" ]
 #SET{valeur, #ENV{valeur_forcee,#ENV{valeur,#ENV{defaut}}}}
 #SET{valeur, #GET{valeur}|is_array|?{(#GET{valeur}|saisies_tableau2chaine), #GET{valeur}}}
-<textarea name="#ENV{nom}" class="[(#ENV{class}) ][inserer_barre_(#ENV{inserer_barre}) ][(#ENV{previsualisation}|oui)inserer_previsualisation]" id="champ_[(#ENV{id,#ENV{nom}}|saisie_nom2classe)]" rows="[(#ENV{rows,20})]" cols="[(#ENV{cols,40})]"[ disabled="(#ENV{disable})"][ readonly="(#ENV{readonly})"][(#ENV{obligatoire}|et{#ENV{obligatoire}!={non}}|et{#HTML5}|oui) required="required"][ (#ENV*{attributs})]>#GET{valeur}</textarea>
+<textarea name="#ENV{nom}" class="[(#ENV{class}) ][inserer_barre_(#ENV{inserer_barre}) ][(#ENV{previsualisation}|oui)inserer_previsualisation]" id="champ_[(#ENV{id,#ENV{nom}}|saisie_nom2classe)]" rows="[(#ENV{rows,20})]" cols="[(#ENV{cols,40})]"[ disabled="(#ENV{disable})"][ readonly="(#ENV{readonly})"][(#ENV{obligatoire}|et{#ENV{obligatoire}!={non}}|et{#HTML5}|oui) required="required"][ (#ENV*{attributs})]>
+#GET{valeur}</textarea>
index b022955..41f7590 100644 (file)
@@ -7,6 +7,35 @@ include_spip('balise/saisie');
 // picker_selected (spip 3)
 include_spip('formulaires/selecteur/generique_fonctions');
 
+/**
+ * Traiter la valeur de la vue en fonction du env
+ * si un traitement a ete fait en amont (champs extra) ne rien faire
+ * si pas de traitement defini (formidable) passer typo ou propre selon le type du champ
+ *
+ * @param string $valeur
+ * @param string|array $env
+ * @return string
+ */
+function saisie_traitement_vue($valeur,$env){
+       if (is_string($env))
+               $env = unserialize($env);
+       if (!function_exists('propre'))
+               include_spip('inc/texte');
+
+       // si traitement est renseigne, alors le champ est deja mis en forme
+       // (saisies)
+       // sinon on fait une mise en forme smart
+       if (!isset($env['traitements'])){
+               if (in_array($env['type_saisie'],array('textarea'))){
+                       $valeur = propre($valeur);
+               }
+               else {
+                       $valeur = "<p>" . typo($valeur) . "</p>";
+               }
+       }
+
+       return trim($valeur);
+}
 
 /**
  * Passer un nom en une valeur compatible avec une classe css
index 35a77de..61c364a 100644 (file)
@@ -25,7 +25,7 @@ function saisies_affichage_final($flux){
                    include_spip("jqueryui_pipelines");\r
                        if (function_exists("jqueryui_dependances")){\r
                                $ui_plugins = jqueryui_dependances(array("jquery.ui.datepicker"));\r
-                       \r
+\r
                                array_push($ui_plugins,"jquery.ui.theme");\r
                                foreach ($ui_plugins as $ui_plug){\r
                                        $ui_plug_css = find_in_path("css/$ui_plug.css");\r
@@ -36,7 +36,7 @@ function saisies_affichage_final($flux){
                        }\r
                }\r
 \r
-               $flux = substr_replace($flux, $ins_css, $pi, 0);                \r
+               $flux = substr_replace($flux, $ins_css, $pi, 0);\r
                // On insère le JS à la fin du <head>\r
                $pos_head = strpos($flux, '</head');\r
                $js = find_in_path('javascript/saisies.js');\r
@@ -56,7 +56,7 @@ function saisies_formulaire_charger($flux){
        if (!is_array($flux['data'])){\r
                return $flux;\r
        }\r
-       \r
+\r
        // Il faut que la fonction existe et qu'elle retourne bien un tableau\r
        if (include_spip('inc/saisies')\r
                and $saisies = saisies_chercher_formulaire($flux['args']['form'], $flux['args']['args'])\r
@@ -85,7 +85,7 @@ function saisies_styliser($flux){
        ){\r
                $flux['data'] = preg_replace("/\.$ext$/", '', find_in_path("formulaires/inc-saisies-cvt.$ext"));\r
        }\r
-       \r
+\r
        return $flux;\r
 }\r
 \r
index bc5ba39..7c2808a 100644 (file)
@@ -1,10 +1,10 @@
 <svn_revision>
 <text_version>
 Origine: file:///home/svn/repository/spip-zone/_plugins_/saisies
-Revision: 81214
-Dernier commit: 2014-03-05 22:00:09 +0100 
+Revision: 85015
+Dernier commit: 2014-10-05 13:00:06 +0200 
 </text_version>
 <origine>file:///home/svn/repository/spip-zone/_plugins_/saisies</origine>
-<revision>81214</revision>
-<commit>2014-03-05 22:00:09 +0100 </commit>
+<revision>85015</revision>
+<commit>2014-10-05 13:00:06 +0200 </commit>
 </svn_revision>
\ No newline at end of file
index b270737..1444471 100644 (file)
@@ -3,10 +3,10 @@
        categorie="statistique"
        version="1.8.1"
        etat="test"
-       compatibilite="[2.0.0;3.0.99]"
+       compatibilite="[2.0.0;3.0.*]"
        logo="seo.png"
        schema="1.1.1"
-       documentation="http://www.spip-contrib.net/?rubrique1248"
+       documentation="http://contrib.spip.net/?rubrique1248"
 >      
 
        <nom>SEO</nom>
@@ -27,4 +27,4 @@
        <pipeline nom="autoriser" inclure="pipelines/seo_autoriser.php" />
 
        <menu nom="seo" titre="seo:seo" parent="menu_configuration" icone="images/seo-16.png" action="configurer_seo" />
-</paquet>
+</paquet>
\ No newline at end of file
index 17cf494..6dd4d73 100644 (file)
@@ -10,7 +10,7 @@
                        [en]SEO is a plugin who add the possibility to insert in the head of your website: meta tags, canoical URL, Google webmaster tools Meta Code and Google Analytics javascript code. It is fully configurable in the SPIP configuration page and in each article or rubrique page for meta tags.\r
                </multi>\r
        </description>\r
-       <lien>http://www.spip-contrib.net/?rubrique1248</lien>\r
+       <lien>http://contrib.spip.net/?rubrique1248</lien>\r
        <licence>(c) 2009-2012 GPL v2</licence>\r
        <etat>test</etat>\r
        \r
index 1df081a..3c3f577 100644 (file)
@@ -1,10 +1,10 @@
 <svn_revision>
 <text_version>
 Origine: file:///home/svn/repository/spip-zone/_plugins_/seo/branches/v1
-Revision: 72291
-Dernier commit: 2013-04-24 12:00:10 +0200 
+Revision: 84614
+Dernier commit: 2014-09-14 23:33:31 +0200 
 </text_version>
 <origine>file:///home/svn/repository/spip-zone/_plugins_/seo/branches/v1</origine>
-<revision>72291</revision>
-<commit>2013-04-24 12:00:10 +0200 </commit>
+<revision>84614</revision>
+<commit>2014-09-14 23:33:31 +0200 </commit>
 </svn_revision>
\ No newline at end of file
index 7980281..e23897d 100755 (executable)
@@ -37,7 +37,7 @@
     <necessite id="typoenluminee" version= "[3.3.2;]" />
     <necessite id="facteur" version= "[2.4.5;]" />
     <necessite id="rssarticle" version= "[1.1.0;]" />
-    <necessite id="formidable" version= "[1.3.6;]" />
+    <necessite id="formidable" version= "[2.7.1;]" />
     <necessite id="nospam" version= "[1.3.0;]" />
     <necessite id="notifications" version= "[3.0.10;]" />
     <necessite id="odt2spip" version= "[2.0.1;]" />
index f263448..26d83f1 100644 (file)
@@ -1,18 +1,28 @@
 <traduction module="paquet-spip_bonux" gestionnaire="salvatore" url="http://trad.spip.net" source="svn://zone.spip.org/spip-zone/_plugins_/spip-bonux-3/lang/" reference="fr">
-       <langue code="ar" url="http://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=ar">
+       <langue code="ar" url="http://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=ar" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="George" lien="http://trad.spip.net/auteur/جورج-قندلفت" />
        </langue>
-       <langue code="en" url="http://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=en">
+       <langue code="de" url="http://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=de" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Martin" lien="http://trad.spip.net/auteur/martin" />
+       </langue>
+       <langue code="en" url="http://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=en" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="Gilles" lien="http://trad.spip.net/auteur/gilles" />
        </langue>
-       <langue code="es" url="http://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=es">
-               <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel" />
+       <langue code="es" url="http://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=es" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel-s-bujaldon" />
+       </langue>
+       <langue code="fa" url="http://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=fa" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Davood Hossein" lien="http://trad.spip.net/auteur/davood-hossein" />
+       </langue>
+       <langue code="fr" url="http://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=fr" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+       </langue>
+       <langue code="nl" url="http://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=nl" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Hanjo" lien="http://trad.spip.net/auteur/hanjo" />
        </langue>
-       <langue code="fr" />
-       <langue code="ru" url="http://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=ru">
+       <langue code="ru" url="http://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=ru" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="Serge Markitanenko" lien="http://trad.spip.net/auteur/serge-markitanenko" />
        </langue>
-       <langue code="sk" url="http://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=sk">
+       <langue code="sk" url="http://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=sk" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="jaro" lien="http://trad.spip.net/auteur/jaro" />
        </langue>
 </traduction>
diff --git a/www/plugins/spip-bonux-3/lang/paquet-spip_bonux_de.php b/www/plugins/spip-bonux-3/lang/paquet-spip_bonux_de.php
new file mode 100644 (file)
index 0000000..a0477cb
--- /dev/null
@@ -0,0 +1,16 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=de
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // S
+       'spip_bonux_description' => 'Der Plug-in, der SPIPer wäscht als SPIP, mit tollen Geschenken drin!
+       Tabellen, Zähler, usw.',
+       'spip_bonux_slogan' => 'Der Plug-in, der SPIPer wäscht als SPIP.'
+);
+
+?>
diff --git a/www/plugins/spip-bonux-3/lang/paquet-spip_bonux_fa.php b/www/plugins/spip-bonux-3/lang/paquet-spip_bonux_fa.php
new file mode 100644 (file)
index 0000000..b44df3b
--- /dev/null
@@ -0,0 +1,15 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=fa
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // S
+       'spip_bonux_description' => 'پلاگيني كه اسپيپ را از اسپيپ بهتر مي‌سازد، با هداياي داخلي قشنگ، تابلو، شمارشگر و غيره. ',
+       'spip_bonux_slogan' => 'پلاگيني كه اسپيپ را از اسپيپ بهتر مي‌سازد '
+);
+
+?>
index 9068077..5d132bb 100644 (file)
@@ -6,7 +6,7 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // S
-       'spip_bonux_description' => 'Le plugin qui lave plus SPIP que SPIP, avec des chouettes cadeaux dedans !
+       'spip_bonux_description' => 'Le plugin qui lave plus SPIP que SPIP, avec des chouettes cadeaux dedans !
        Tableaux, compteur, etc.',
        'spip_bonux_slogan' => 'Le plugin qui lave plus SPIP que SPIP.'
 );
diff --git a/www/plugins/spip-bonux-3/lang/paquet-spip_bonux_nl.php b/www/plugins/spip-bonux-3/lang/paquet-spip_bonux_nl.php
new file mode 100644 (file)
index 0000000..97b9f18
--- /dev/null
@@ -0,0 +1,16 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=nl
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // S
+       'spip_bonux_description' => 'De plugin die SPIP nog SPIPper maakt met leuke extraatjes!
+       Tabellen, teller, enz.',
+       'spip_bonux_slogan' => 'De plugin die SPIP nog SPIPper maakt.'
+);
+
+?>
index a7b88c8..7ee8b8b 100644 (file)
@@ -1,14 +1,28 @@
 <traduction module="spip_bonux" gestionnaire="salvatore" url="http://trad.spip.net" source="svn://zone.spip.org/spip-zone/_plugins_/spip-bonux-3/lang/" reference="fr">
-       <langue code="ar" />
-       <langue code="en" />
-       <langue code="es" url="http://trad.spip.net/tradlang_module/spip_bonux?lang_cible=es">
-               <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel" />
+       <langue code="ar" url="http://trad.spip.net/tradlang_module/spip_bonux?lang_cible=ar" total="13" traduits="13" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="George" lien="http://trad.spip.net/auteur/جورج-قندلفت" />
        </langue>
-       <langue code="fr" />
-       <langue code="ru" url="http://trad.spip.net/tradlang_module/spip_bonux?lang_cible=ru">
+       <langue code="de" url="http://trad.spip.net/tradlang_module/spip_bonux?lang_cible=de" total="13" traduits="12" relire="0" modifs="1" nouveaux="0" pourcent="92.31">
+               <traducteur nom="Martin" lien="http://trad.spip.net/auteur/martin" />
+       </langue>
+       <langue code="en" url="http://trad.spip.net/tradlang_module/spip_bonux?lang_cible=en" total="13" traduits="13" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="kent1" lien="http://trad.spip.net/auteur/kent1" />
+       </langue>
+       <langue code="es" url="http://trad.spip.net/tradlang_module/spip_bonux?lang_cible=es" total="13" traduits="13" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel-s-bujaldon" />
+       </langue>
+       <langue code="fa" url="http://trad.spip.net/tradlang_module/spip_bonux?lang_cible=fa" total="13" traduits="13" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Davood Hossein" lien="http://trad.spip.net/auteur/davood-hossein" />
+       </langue>
+       <langue code="fr" url="http://trad.spip.net/tradlang_module/spip_bonux?lang_cible=fr" total="13" traduits="13" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+       </langue>
+       <langue code="nl" url="http://trad.spip.net/tradlang_module/spip_bonux?lang_cible=nl" total="13" traduits="13" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Hanjo" lien="http://trad.spip.net/auteur/hanjo" />
+       </langue>
+       <langue code="ru" url="http://trad.spip.net/tradlang_module/spip_bonux?lang_cible=ru" total="13" traduits="12" relire="0" modifs="1" nouveaux="0" pourcent="92.31">
                <traducteur nom="Serge Markitanenko" lien="http://trad.spip.net/auteur/serge-markitanenko" />
        </langue>
-       <langue code="sk" url="http://trad.spip.net/tradlang_module/spip_bonux?lang_cible=sk">
+       <langue code="sk" url="http://trad.spip.net/tradlang_module/spip_bonux?lang_cible=sk" total="13" traduits="13" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="jaro" lien="http://trad.spip.net/auteur/jaro" />
        </langue>
 </traduction>
diff --git a/www/plugins/spip-bonux-3/lang/spip_bonux_de.php b/www/plugins/spip-bonux-3/lang/spip_bonux_de.php
new file mode 100644 (file)
index 0000000..0070def
--- /dev/null
@@ -0,0 +1,36 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/spip_bonux?lang_cible=de
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // A
+       'afficher_calendrier' => 'Kalender anzeigen',
+       'annee_precedente' => 'Vorheriges Jahr', # MODIF
+       'annee_suivante' => 'Folgendes Jahr',
+       'annuler_recherche' => 'Suche abbrechen',
+
+       // B
+       'bouton_fermer' => 'Schließen',
+
+       // E
+       'erreur_date' => 'Dieses Datum ist nicht korrekt',
+       'erreur_date_corrigee' => 'Das Datum wurde korrigiert',
+       'erreur_heure' => 'Diese Uhrzeit ist nicht korrekt',
+       'erreur_heure_corrigee' => 'Die Uhrzeit wurde korrigiert',
+
+       // I
+       'id_rapide' => 'Schnelleingabe',
+
+       // M
+       'mois_precedent' => 'Vorheriger Monat',
+       'mois_suivant' => 'Folgender Monat',
+
+       // P
+       'pages' => 'Seiten'
+);
+
+?>
index 80fe663..823a498 100644 (file)
@@ -8,7 +8,7 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // A
-       'afficher_calendrier' => 'Show the calendar',
+       'afficher_calendrier' => 'Display the calendar',
        'annee_precedente' => 'Previous year',
        'annee_suivante' => 'Next year',
        'annuler_recherche' => 'Cancel the search',
diff --git a/www/plugins/spip-bonux-3/lang/spip_bonux_fa.php b/www/plugins/spip-bonux-3/lang/spip_bonux_fa.php
new file mode 100644 (file)
index 0000000..0b195da
--- /dev/null
@@ -0,0 +1,36 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/spip_bonux?lang_cible=fa
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // A
+       'afficher_calendrier' => 'نمايش تقويم ',
+       'annee_precedente' => 'سال پيش ',
+       'annee_suivante' => 'سال بعد',
+       'annuler_recherche' => 'لغو جستجو',
+
+       // B
+       'bouton_fermer' => 'بستن',
+
+       // E
+       'erreur_date' => 'اين تاريخ غلط ست',
+       'erreur_date_corrigee' => 'تاريخ تصحيح شده است',
+       'erreur_heure' => 'اين ساعت غلط است',
+       'erreur_heure_corrigee' => 'ساعت تصحيح شده است',
+
+       // I
+       'id_rapide' => 'افزودن سريع ',
+
+       // M
+       'mois_precedent' => 'ماه پيش ',
+       'mois_suivant' => 'ماه بعد ',
+
+       // P
+       'pages' => 'صفحه‌ها'
+);
+
+?>
index 002ec6f..ced3602 100644 (file)
@@ -7,7 +7,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // A
        'afficher_calendrier' => 'Afficher le calendrier',
-       'annee_precedente' => 'Anée précédente',
+       'annee_precedente' => 'Année précédente',
        'annee_suivante' => 'Année suivante',
        'annuler_recherche' => 'Annuler la recherche',
 
@@ -18,7 +18,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'erreur_date' => 'Cette date est incorrecte',
        'erreur_date_corrigee' => 'La date a été corrigée',
        'erreur_heure' => 'Cette heure est incorrecte',
-       'erreur_heure_corrigee' => 'L\'heure a été corrigée',
+       'erreur_heure_corrigee' => 'Lheure a été corrigée',
 
        // I
        'id_rapide' => 'Ajout rapide',
diff --git a/www/plugins/spip-bonux-3/lang/spip_bonux_nl.php b/www/plugins/spip-bonux-3/lang/spip_bonux_nl.php
new file mode 100644 (file)
index 0000000..2105c7e
--- /dev/null
@@ -0,0 +1,36 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/spip_bonux?lang_cible=nl
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // A
+       'afficher_calendrier' => 'Toon de kalender',
+       'annee_precedente' => 'Vorig jaar',
+       'annee_suivante' => 'Volgend jaar',
+       'annuler_recherche' => 'Stop met zoeken',
+
+       // B
+       'bouton_fermer' => 'Sluiten',
+
+       // E
+       'erreur_date' => 'Deze datum is onjuist',
+       'erreur_date_corrigee' => 'De datum is aangepast',
+       'erreur_heure' => 'Dit tijdstip is onjuist',
+       'erreur_heure_corrigee' => 'De tijd is aangepast',
+
+       // I
+       'id_rapide' => 'Voeg snel toe',
+
+       // M
+       'mois_precedent' => 'Vorige maand',
+       'mois_suivant' => 'Volgende maand',
+
+       // P
+       'pages' => 'Blz.'
+);
+
+?>
index 7760ad2..d5bfd32 100644 (file)
@@ -9,7 +9,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // A
        'afficher_calendrier' => 'Показать календарь',
-       'annee_precedente' => 'Предыдущий год',
+       'annee_precedente' => 'Предыдущий год', # MODIF
        'annee_suivante' => 'Следующий год',
        'annuler_recherche' => 'Отменить поиск',
 
index 96522f8..e231e0d 100644 (file)
@@ -9,8 +9,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // A
        'afficher_calendrier' => 'Zobraziť kalendár',
-       'annee_precedente' => 'Minulý rok',
-       'annee_suivante' => 'Budúci rok',
+       'annee_precedente' => 'Predošlý rok',
+       'annee_suivante' => 'Nasledujúci rok',
        'annuler_recherche' => 'Zrušiť vyhľadávanie',
 
        // B
index b4909a7..b430e23 100644 (file)
@@ -1,11 +1,11 @@
 <paquet
        prefix="spip_bonux"
        categorie="outil"
-       version="3.0.5"
+       version="3.0.6"
        etat="stable"
-       compatibilite="[3.0.0-dev;3.1.*]"
+       compatibilite="[3.0.0;3.1.*]"
        logo="img_pack/spip-bonux.png"
-       documentation="http://www.spip-contrib.net/SPIP-Bonux"
+       documentation="http://contrib.spip.net/SPIP-Bonux"
 >      
 
        <nom>SPIP Bonux</nom>
@@ -19,4 +19,4 @@
 
        <licence lien="http://www.gnu.org/licenses/gpl-3.0.html">GPL</licence>
        <pipeline nom="affichage_final" />
-</paquet>
+</paquet>
\ No newline at end of file
index fd09065..c72b079 100644 (file)
@@ -95,8 +95,8 @@ function _T_ou_typo($valeur, $mode_typo='toujours') {
  * @param bool $avant Indique si l'insertion se fait avant la clé (par défaut c'est après)
  * @return array Retourne le tableau avec l'insertion
  */
-if (!function_exists('array_insert')) {
-function array_insert($arr1, $cle, $arr2, $avant=false){
+if (!function_exists('spip_array_insert')) {
+function spip_array_insert($arr1, $cle, $arr2, $avant=false){
        $index = array_search($cle, array_keys($arr1));
        if($index === false){
                $index = count($arr1); // insert @ end of array if $key not found
index 50f6416..2456049 100644 (file)
@@ -1,10 +1,10 @@
 <svn_revision>
 <text_version>
 Origine: file:///home/svn/repository/spip-zone/_plugins_/spip-bonux-3
-Revision: 71958
-Dernier commit: 2013-04-11 18:00:24 +0200 
+Revision: 84222
+Dernier commit: 2014-08-17 14:44:00 +0200 
 </text_version>
 <origine>file:///home/svn/repository/spip-zone/_plugins_/spip-bonux-3</origine>
-<revision>71958</revision>
-<commit>2013-04-11 18:00:24 +0200 </commit>
+<revision>84222</revision>
+<commit>2014-08-17 14:44:00 +0200 </commit>
 </svn_revision>
\ No newline at end of file
index e5ad8ce..eaee532 100644 (file)
@@ -22,7 +22,7 @@ function balise_PIWIK_dyn() {
                include_spip('inc/config');
        $config = lire_config('piwik',array());
        if(!empty($config['urlpiwik']) && is_numeric($config['idpiwik']) && ($config['mode_insertion'] == 'balise')){
-               if(in_array($GLOBALS['visiteur_session']['statut'],lire_config('piwik/restreindre_statut_public',array()))||in_array($GLOBALS['visiteur_session']['id_auteur'],lire_config('piwik/restreindre_auteurs_public',array()))){
+               if(@in_array($GLOBALS['visiteur_session']['statut'],lire_config('piwik/restreindre_statut_public',array()))||@in_array($GLOBALS['visiteur_session']['id_auteur'],lire_config('piwik/restreindre_auteurs_public',array()))){
                        return;
                }
                $piwik_ips = array_flip(preg_split('/(\s*[;,]\s*|\s+)/',trim($config['exclure_ips']),-1,PREG_SPLIT_NO_EMPTY));
index 224400f..7489d30 100644 (file)
@@ -30,6 +30,7 @@
                                obligatoire=oui,
                                size=50
                        })]
+
                        [(#CONFIG{piwik/token}|et{#CONFIG{piwik/user}}|oui)
                                [(#SET{defaut,[(#URL_SITE_SPIP)]})]
                                [(#SAISIE{sites_piwik,idpiwik,
                                                label=<:piwik:label_restreindre_auteurs_prive:>,
                                                multiple=oui})]
                                ]
+
+                               [(#SAISIE{oui_non, conformite_cnil,
+                                       label=<:piwik:label_conformite_cnil:>,
+                                       explication=<:piwik:explication_conformite_cnil:>
+                               })]
+
                        ]
                </ul>
                <p class="boutons">
diff --git a/www/plugins/spip_piwik_2_0/inc/js-cnil.html b/www/plugins/spip_piwik_2_0/inc/js-cnil.html
new file mode 100644 (file)
index 0000000..a02b04a
--- /dev/null
@@ -0,0 +1,14 @@
+
+_paq.push([function() { 
+       var self = this; 
+       function getOriginalVisitorCookieTimeout() { 
+               var now = new Date(), 
+               nowTs = Math.round(now.getTime() / 1000), 
+               visitorInfo = self.getVisitorInfo(); 
+               var createTs = parseInt(visitorInfo[2]); 
+               var cookieTimeout = 33696000; // 13 mois en secondes 
+               var originalTimeout = createTs + cookieTimeout - nowTs; 
+               return originalTimeout; 
+       } 
+       this.setVisitorCookieTimeout( getOriginalVisitorCookieTimeout() ); 
+}]);
\ No newline at end of file
index 362ef88..3987d36 100644 (file)
@@ -1,16 +1,21 @@
 <traduction module="paquet-piwik" gestionnaire="salvatore" url="http://trad.spip.net" source="svn://zone.spip.org/spip-zone/_plugins_/spip_piwik/spip_piwik_2_0/lang/" reference="fr">
-       <langue code="en" />
-       <langue code="es" url="http://trad.spip.net/tradlang_module/paquet-piwik?lang_cible=es">
-               <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel" />
+       <langue code="en" url="http://trad.spip.net/tradlang_module/paquet-piwik?lang_cible=en" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
        </langue>
-       <langue code="fa" url="http://trad.spip.net/tradlang_module/paquet-piwik?lang_cible=fa">
+       <langue code="es" url="http://trad.spip.net/tradlang_module/paquet-piwik?lang_cible=es" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel-s-bujaldon" />
+       </langue>
+       <langue code="fa" url="http://trad.spip.net/tradlang_module/paquet-piwik?lang_cible=fa" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="Davood Hossein" lien="http://trad.spip.net/auteur/davood-hossein" />
        </langue>
-       <langue code="fr" />
-       <langue code="ru" url="http://trad.spip.net/tradlang_module/paquet-piwik?lang_cible=ru">
+       <langue code="fr" url="http://trad.spip.net/tradlang_module/paquet-piwik?lang_cible=fr" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+       </langue>
+       <langue code="nl" url="http://trad.spip.net/tradlang_module/paquet-piwik?lang_cible=nl" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Hanjo" lien="http://trad.spip.net/auteur/hanjo" />
+       </langue>
+       <langue code="ru" url="http://trad.spip.net/tradlang_module/paquet-piwik?lang_cible=ru" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="Serge Markitanenko" lien="http://trad.spip.net/auteur/serge-markitanenko" />
        </langue>
-       <langue code="sk" url="http://trad.spip.net/tradlang_module/paquet-piwik?lang_cible=sk">
+       <langue code="sk" url="http://trad.spip.net/tradlang_module/paquet-piwik?lang_cible=sk" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="jaro" lien="http://trad.spip.net/auteur/jaro" />
        </langue>
 </traduction>
diff --git a/www/plugins/spip_piwik_2_0/lang/paquet-piwik_nl.php b/www/plugins/spip_piwik_2_0/lang/paquet-piwik_nl.php
new file mode 100644 (file)
index 0000000..0e4c927
--- /dev/null
@@ -0,0 +1,15 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/paquet-piwik?lang_cible=nl
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // P
+       'piwik_description' => 'Voeg het script voor statistieken van Piwik (analyse van webverkeer) toe aan de bladzijdes van de site.',
+       'piwik_slogan' => 'Koppel SPIP en Piwik'
+);
+
+?>
index 6357732..710b738 100644 (file)
@@ -1,16 +1,25 @@
 <traduction module="piwik" gestionnaire="salvatore" url="http://trad.spip.net" source="svn://zone.spip.org/spip-zone/_plugins_/spip_piwik/spip_piwik_2_0/lang/" reference="fr">
-       <langue code="ca" />
-       <langue code="de" />
-       <langue code="en" />
-       <langue code="es" url="http://trad.spip.net/tradlang_module/piwik?lang_cible=es">
-               <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel" />
-       </langue>
-       <langue code="fa" />
-       <langue code="fr" />
-       <langue code="fr_tu" url="http://trad.spip.net/tradlang_module/piwik?lang_cible=fr_tu">
+       <langue code="ca" url="http://trad.spip.net/tradlang_module/piwik?lang_cible=ca" total="37" traduits="28" relire="0" modifs="0" nouveaux="9" pourcent="75.68">
+       </langue>
+       <langue code="de" url="http://trad.spip.net/tradlang_module/piwik?lang_cible=de" total="37" traduits="28" relire="0" modifs="0" nouveaux="9" pourcent="75.68">
+       </langue>
+       <langue code="en" url="http://trad.spip.net/tradlang_module/piwik?lang_cible=en" total="37" traduits="37" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Hanjo" lien="http://trad.spip.net/auteur/hanjo" />
+       </langue>
+       <langue code="es" url="http://trad.spip.net/tradlang_module/piwik?lang_cible=es" total="37" traduits="35" relire="0" modifs="0" nouveaux="2" pourcent="94.59">
+               <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel-s-bujaldon" />
+       </langue>
+       <langue code="fa" url="http://trad.spip.net/tradlang_module/piwik?lang_cible=fa" total="37" traduits="35" relire="0" modifs="0" nouveaux="2" pourcent="94.59">
+       </langue>
+       <langue code="fr" url="http://trad.spip.net/tradlang_module/piwik?lang_cible=fr" total="37" traduits="37" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+       </langue>
+       <langue code="fr_tu" url="http://trad.spip.net/tradlang_module/piwik?lang_cible=fr_tu" total="37" traduits="35" relire="0" modifs="0" nouveaux="2" pourcent="94.59">
                <traducteur nom="beatnick" lien="http://trad.spip.net/auteur/beatnick" />
        </langue>
-       <langue code="sk" url="http://trad.spip.net/tradlang_module/piwik?lang_cible=sk">
+       <langue code="nl" url="http://trad.spip.net/tradlang_module/piwik?lang_cible=nl" total="37" traduits="37" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Hanjo" lien="http://trad.spip.net/auteur/hanjo" />
+       </langue>
+       <langue code="sk" url="http://trad.spip.net/tradlang_module/piwik?lang_cible=sk" total="37" traduits="37" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="jaro" lien="http://trad.spip.net/auteur/jaro" />
        </langue>
 </traduction>
index c772ad9..b18ecdb 100644 (file)
@@ -9,53 +9,44 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // A
        'action_creer_site' => 'Crear el lloc',
-       'action_recuperer_liste' => 'Récupérer la liste des sites', # NEW
 
        // C
-       'cfg_description_piwik' => 'Podeu introduir aquí el vostre nom d\'usuari piwik i l\'adreça del servidor que gestiona les vostres estadístiques.',
-       'cfg_erreur_recuperation_data' => 'Hi ha un error de comunicació amb el servidor, verifiqueu l\'adreça i el token',
-       'cfg_erreur_token' => 'El vostre token d\'identificació és invàlid',
-       'cfg_erreur_user_token' => 'La correspondance Nom d\'utilisateur / Token n\'est pas correcte.', # NEW
+       'cfg_description_piwik' => 'Podeu introduir aquí el vostre nom d’usuari piwik i l’adreça del servidor que gestiona les vostres estadístiques.',
+       'cfg_erreur_recuperation_data' => 'Hi ha un error de comunicació amb el servidor, verifiqueu l’adreça i el token',
+       'cfg_erreur_token' => 'El vostre token d’identificació és invàlid',
 
        // E
-       'explication_adresse_serveur' => 'Entreu l\'adreça sense "http://" ni "https://" ni barra final',
-       'explication_creer_site' => 'El següent enllaç us permet crear un lloc al servidor Piwik que estarà disponible a continuació a la llista. Verifiqueu que heu configurat l\'adreça correctament i el nom del vostre lloc SPIP abans de clicar. Són aquestes informacions les que s\'utilitzaran.',
+       'explication_adresse_serveur' => 'Entreu ladreça sense "http://" ni "https://" ni barra final',
+       'explication_creer_site' => 'El següent enllaç us permet crear un lloc al servidor Piwik que estarà disponible a continuació a la llista. Verifiqueu que heu configurat l’adreça correctament i el nom del vostre lloc SPIP abans de clicar. Són aquestes informacions les que s’utilitzaran.',
        'explication_exclure_ips' => 'Per excloure diverses adreces, separeu-les amb punts i comes',
-       'explication_identifiant_site' => 'La llista dels llocs disponibles al servidor Piwik s\'ha recuperat automàticament gràcies a les informacions presentades. Seleccioneu de la següent llista la que més us convingui',
-       'explication_mode_insertion' => 'Hi ha dues maneres d\'inserir a les pàgines el codi necessari per un bon funcionament del connector. Mitjançant el pipeline "insert_head" (mètode automàtic però poc configurable), o mitjançant la inserció d\'una etiqueta (mètode manual inserint a la part inferior de les vostres pàgines l\'etiqueta #PIWIK) que, a més a més, és totalment configurable.',
-       'explication_recuperer_liste' => 'Le lien ci-dessous vous permet de récupérer la liste des sites que votre compte peut administrer sur le serveur Piwik.', # NEW
-       'explication_restreindre_statut_prive' => 'Escolliu aquí els estats d\'usuaris que no es comptabilitzaran a les estadístiques en l\'espai privat',
-       'explication_restreindre_statut_public' => 'Escolliu aquí els estats d\'usuaris que no es comptabilitzaran a les estadístiques a la part pública',
-       'explication_token' => 'El token d\'identificació està disponible o bé a les vostres preferències personals o a la part API de vostre servidor Piwik',
-
-       // I
-       'info_aucun_site_compte' => 'Aucun site n\'est associé à votre compte Piwik.', # NEW
-       'info_aucun_site_compte_demander_admin' => 'Vous devez demander à un administrateur de votre serveur Piwik d\'ajouter un site correspondant.', # NEW
+       'explication_identifiant_site' => 'La llista dels llocs disponibles al servidor Piwik s’ha recuperat automàticament gràcies a les informacions presentades. Seleccioneu de la següent llista la que més us convingui',
+       'explication_mode_insertion' => 'Hi ha dues maneres d’inserir a les pàgines el codi necessari per un bon funcionament del connector. Mitjançant el pipeline "insert_head" (mètode automàtic però poc configurable), o mitjançant la inserció d’una etiqueta (mètode manual inserint a la part inferior de les vostres pàgines l’etiqueta #PIWIK) que, a més a més, és totalment configurable.',
+       'explication_restreindre_statut_prive' => 'Escolliu aquí els estats d’usuaris que no es comptabilitzaran a les estadístiques en l’espai privat',
+       'explication_restreindre_statut_public' => 'Escolliu aquí els estats d’usuaris que no es comptabilitzaran a les estadístiques a la part pública',
+       'explication_token' => 'El token d’identificació està disponible o bé a les vostres preferències personals o a la part API de vostre servidor Piwik',
 
        // L
        'label_adresse_serveur' => 'Adreça URL del servidor (https:// o http://)',
-       'label_comptabiliser_prive' => 'Comptabilitzar les visites de l\'espai privat',
+       'label_comptabiliser_prive' => 'Comptabilitzar les visites de lespai privat',
        'label_creer_site' => 'Crear un lloc al servidor Piwik',
        'label_exclure_ips' => 'Excloure certes adreces IP',
-       'label_identifiant_site' => 'L\'identificador del vostre lloc al servidor Piwik',
-       'label_mode_insertion' => 'Mode d\'inserció a les pàgines públiques',
-       'label_piwik_user' => 'Compte utilisateur Piwik', # NEW
-       'label_recuperer_liste' => 'Récupérer la liste des sites sur le serveur Piwik', # NEW
+       'label_identifiant_site' => 'L’identificador del vostre lloc al servidor Piwik',
+       'label_mode_insertion' => 'Mode d’inserció a les pàgines públiques',
        'label_restreindre_auteurs_prive' => 'Restringir determinats usuaris connectats (privat)',
        'label_restreindre_auteurs_public' => 'Restringir determinats usuaris connectats (públic)',
-       'label_restreindre_statut_prive' => 'Restringir determinats estats d\'usuaris a l\'espai privat',
-       'label_restreindre_statut_public' => 'Restringir determinats estats d\'usuaris a l\'espai públic',
-       'label_token' => 'Token d\'identificació al vostre servidor',
+       'label_restreindre_statut_prive' => 'Restringir determinats estats d’usuaris a l’espai privat',
+       'label_restreindre_statut_public' => 'Restringir determinats estats d’usuaris a l’espai públic',
+       'label_token' => 'Token didentificació al vostre servidor',
 
        // M
-       'mode_insertion_balise' => 'Inserció per mitjà de l\'etiqueta #PIWIK (cal que modifiqueu els vostres esquelets)',
+       'mode_insertion_balise' => 'Inserció per mitjà de letiqueta #PIWIK (cal que modifiqueu els vostres esquelets)',
        'mode_insertion_pipeline' => 'Inserció automàtica per mitja del pipeline "insert_head"',
 
        // P
        'piwik' => 'Piwik',
 
        // T
-       'texte_votre_identifiant' => 'Nom d\'usuari',
+       'texte_votre_identifiant' => 'Nom dusuari',
        'textes_url_piwik' => 'El vostre servidor piwik'
 );
 
index 7aed9f9..e2f7166 100644 (file)
@@ -9,13 +9,11 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // A
        'action_creer_site' => 'Site anlegen',
-       'action_recuperer_liste' => 'Récupérer la liste des sites', # NEW
 
        // C
        'cfg_description_piwik' => 'Hier können sie ihre PIWIK-Anmeldedaten sowie die Adresse des Servers für ihre Statistiken angeben.',
        'cfg_erreur_recuperation_data' => 'Kommunikation mit dem Server gescheitert, bitte überprüfen sie die Adresse und das Token.',
        'cfg_erreur_token' => 'Ihre Token-ID ist ungültig.',
-       'cfg_erreur_user_token' => 'La correspondance Nom d\'utilisateur / Token n\'est pas correcte.', # NEW
 
        // E
        'explication_adresse_serveur' => 'Geben sie die Adresse ohne "http://" oder "https://" und ohne Slash "/" am Ende an.',
@@ -23,15 +21,10 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'explication_exclure_ips' => 'Um mehrere Adressen auszuschließen, trennen sie sie bitte mit einem Semikolon.',
        'explication_identifiant_site' => 'Die Liste der auf dem PIWIK-Server verfügbaren Websites wurde aufgrund der angegebenen Informationen übertragen. Bitte wählen sie in der untenstehenden Liste die gewünschte Site aus.',
        'explication_mode_insertion' => 'Es gibt zwei Methoden, den für das Funktionieren des Plugins erforderlichen Code in die Seiten einzufügen: Mit der Pipeline "indert_head" (vollautomatisch aber ohne erweiterte Konfigurationsmöglichkeiten) oder durch Einfügen des Tags #PIWIK in den Fußbereich ihrer Skelette (dann können sie alle Konfigurationsoptionen nutzen).',
-       'explication_recuperer_liste' => 'Le lien ci-dessous vous permet de récupérer la liste des sites que votre compte peut administrer sur le serveur Piwik.', # NEW
        'explication_restreindre_statut_prive' => 'Wählen sie hier den Status der Besucher, deren Zugriffe auf das Redaktionssystem nicht in der Statistik erfaßt werden',
        'explication_restreindre_statut_public' => 'Wählen sie hier den Status der Besucher, deren Zugriffe auf den öffentlichen Teil der Website nicht in der Statistik erfaßt werden',
        'explication_token' => 'Das Identifikations-Token finden sie in ihren persönlichen Einstellungen oder im API-Bereich ihres PIWIK-Servers.',
 
-       // I
-       'info_aucun_site_compte' => 'Aucun site n\'est associé à votre compte Piwik.', # NEW
-       'info_aucun_site_compte_demander_admin' => 'Vous devez demander à un administrateur de votre serveur Piwik d\'ajouter un site correspondant.', # NEW
-
        // L
        'label_adresse_serveur' => 'Adresse (URL) des Servers (https:// oder http://)',
        'label_comptabiliser_prive' => 'Abrufe des Redaktionssystems erfassen',
@@ -39,8 +32,6 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'label_exclure_ips' => 'Bestimmte IP-Adressen ausschließen',
        'label_identifiant_site' => 'ID ihrer Website auf dem Piwik-Server',
        'label_mode_insertion' => 'Typ des Einfügens in die öffentlichen Seiten',
-       'label_piwik_user' => 'Compte utilisateur Piwik', # NEW
-       'label_recuperer_liste' => 'Récupérer la liste des sites sur le serveur Piwik', # NEW
        'label_restreindre_auteurs_prive' => 'Einschränkungen für manche angemeldeten Besucher (Redaktion)',
        'label_restreindre_auteurs_public' => 'Einschränkungen für manche angemeldeten Besucher (öffentlicher Bereich)',
        'label_restreindre_statut_prive' => 'Einschränkungen für manche Mitglieder im Redaktionssystem',
index 3ab8eb7..e1de0a4 100644 (file)
@@ -19,6 +19,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // E
        'explication_adresse_serveur' => 'Enter the URL address without "http://" or "https://" and without the final slash',
+       'explication_conformite_cnil' => 'Inserts a <a href="http://www.cnil.fr/fileadmin/documents/approfondir/dossier/internet/Configuration_piwik.pdf">JavaScript function</a> that assures a <a href="http://www.cnil.fr/vos-obligations/sites-web-cookies-et-autres-traceurs/outils-et-codes-sources/la-mesure-daudience/">Cookie conformity</a> as instated by the French CNIL.',
        'explication_creer_site' => 'The link below enables you to create a site on the Piwik server which will then be available from the list.Check that you have correctly entered the address and name of your SPIP site before clicking, as these are the details will be used later.',
        'explication_exclure_ips' => 'To nominate several addresses to be excluded, separate them with semi-colons',
        'explication_identifiant_site' => 'The list of sites available on the Piwik server has been automatically retrieved using the submitted details. Select the one you wish to use from the list below',
@@ -35,6 +36,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        // L
        'label_adresse_serveur' => 'URL address of the server (https:// or http://)',
        'label_comptabiliser_prive' => 'Include visits to the private space',
+       'label_conformite_cnil' => 'CNIL conformity',
        'label_creer_site' => 'Create a site on the Piwik server',
        'label_exclure_ips' => 'Exclude certain IP addresses',
        'label_identifiant_site' => 'The identifier of your site on the Piwik server',
index 76a4dd8..4f7f712 100644 (file)
@@ -21,7 +21,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'explication_adresse_serveur' => 'Introduzca la dirección sin "http://" ni "https://" ni barra final',
        'explication_creer_site' => 'El siguiente enlace le permite crear un sitio web en el servidor Piwik que estará disponible después en la lista. Verifique que ha configurado bien la dirección y el nombre de su sitio web SPIP antes de hacer click, ésta será la información utilizada.',
        'explication_exclure_ips' => 'Para excluir varias direcciones, sepárelas por punto y coma',
-       'explication_identifiant_site' => 'La lista de los sitios webs disponibles en el servidor Piwik se ha recuperado automáticamente grácias a las informaciones presentadas. Seleccione en la siguiente lista el que le convenga',
+       'explication_identifiant_site' => 'La lista de los sitios webs disponibles en el servidor Piwik se ha recuperado automáticamente gracias a las informaciones presentadas. Seleccione en la siguiente lista el que le convenga',
        'explication_mode_insertion' => 'Hay dos modos de inserción en las páginas del código necesario para el buen funcionamiento del plugin. Mediante el pipeline "insert_head" (método automático pero poco configurable), o mediante la inserción de una etiqueta (método manual cuando se inserta al pie de sus páginas la etiqueta #PIWIK), la cual es plenamente configurable. ',
        'explication_recuperer_liste' => 'El siguiente enlace le permite recuperar la lista de sitios webs que su cuenta puede administrar en el servidor Piwik.',
        'explication_restreindre_statut_prive' => 'Elija aquí los estatus de usuarios que no serán contabilizados en las estadísticas en el espacio privado',
index 060f77a..685ddfb 100644 (file)
@@ -10,40 +10,42 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'action_recuperer_liste' => 'Récupérer la liste des sites',
 
        // C
-       'cfg_description_piwik' => 'Ici vous pouvez indiquer votre identifiant piwik, ainsi que l\'adresse du serveur gérant vos statistiques.',
-       'cfg_erreur_recuperation_data' => 'Il y a une erreur de communication avec le serveur, veuillez vérifier l\'adresse et le token',
-       'cfg_erreur_token' => 'Votre token d\'identification est invalide',
-       'cfg_erreur_user_token' => 'La correspondance Nom d\'utilisateur / Token n\'est pas correcte.',
+       'cfg_description_piwik' => 'Ici vous pouvez indiquer votre identifiant piwik, ainsi que ladresse du serveur gérant vos statistiques.',
+       'cfg_erreur_recuperation_data' => 'Il y a une erreur de communication avec le serveur, veuillez vérifier ladresse et le token',
+       'cfg_erreur_token' => 'Votre token didentification est invalide',
+       'cfg_erreur_user_token' => 'La correspondance Nom d’utilisateur / Token n’est pas correcte.',
 
        // E
-       'explication_adresse_serveur' => 'Entrez l\'adresse sans "http://" ni "https://" ni slash final',
-       'explication_creer_site' => 'Le lien ci-dessous vous permet de créer un site sur le serveur Piwik qui sera disponible ensuite dans la liste. Vérifiez que vous avez bien configuré l\'adresse et le nom de votre site SPIP avant de cliquer, ce sont ces informations qui seront utilisées.',
+       'explication_adresse_serveur' => 'Entrez l’adresse sans "http://" ni "https://" ni slash final',
+       'explication_conformite_cnil' => 'Insère une <a href="http://www.cnil.fr/fileadmin/documents/approfondir/dossier/internet/Configuration_piwik.pdf">fonction JavaScript</a> qui permet la <a href="http://www.cnil.fr/vos-obligations/sites-web-cookies-et-autres-traceurs/outils-et-codes-sources/la-mesure-daudience/">mise en conformité avec la réglementation Cookie</a> instaurée par la CNIL.',
+       'explication_creer_site' => 'Le lien ci-dessous vous permet de créer un site sur le serveur Piwik qui sera disponible ensuite dans la liste. Vérifiez que vous avez bien configuré l’adresse et le nom de votre site SPIP avant de cliquer, ce sont ces informations qui seront utilisées.',
        'explication_exclure_ips' => 'Pour exclure plusieurs adresses, séparez les par des points virgules',
        'explication_identifiant_site' => 'La liste des sites disponibles sur le serveur Piwik a été récupérée automatiquement gràce aux informations soumises. Sélectionnez dans la liste ci-dessous celui qui vous convient',
-       'explication_mode_insertion' => 'Il existe deux modes d\'insertion dans les pages du code nécessaire au bon fonctionnement du plugin. Par le pipeline "insert_head" (méthode automatique mais peu configurable), ou par l\'insertion d\'une balise (méthode manuelle en insérant dans le pied de vos pages la balise #PIWIK) qui, quant à elle est pleinement configurable.',
+       'explication_mode_insertion' => 'Il existe deux modes d’insertion dans les pages du code nécessaire au bon fonctionnement du plugin. Par le pipeline "insert_head" (méthode automatique mais peu configurable), ou par l’insertion d’une balise (méthode manuelle en insérant dans le pied de vos pages la balise #PIWIK) qui, quant à elle est pleinement configurable.',
        'explication_recuperer_liste' => 'Le lien ci-dessous vous permet de récupérer la liste des sites que votre compte peut administrer sur le serveur Piwik.',
-       'explication_restreindre_statut_prive' => 'Choisissez ici les statuts d\'utilisateurs qui ne seront pas comptabilisés dans les statistiques dans l\'espace privé',
-       'explication_restreindre_statut_public' => 'Choisissez ici les statuts d\'utilisateurs qui ne seront pas comptabilisés dans les statistiques dans la partie publique',
-       'explication_token' => 'Le token d\'identification est disponible dans vos préférences personnelles ou dans la partie API de votre serveur Piwik',
+       'explication_restreindre_statut_prive' => 'Choisissez ici les statuts d’utilisateurs qui ne seront pas comptabilisés dans les statistiques dans l’espace privé',
+       'explication_restreindre_statut_public' => 'Choisissez ici les statuts dutilisateurs qui ne seront pas comptabilisés dans les statistiques dans la partie publique',
+       'explication_token' => 'Le token didentification est disponible dans vos préférences personnelles ou dans la partie API de votre serveur Piwik',
 
        // I
-       'info_aucun_site_compte' => 'Aucun site n\'est associé à votre compte Piwik.',
-       'info_aucun_site_compte_demander_admin' => 'Vous devez demander à un administrateur de votre serveur Piwik d\'ajouter un site correspondant.',
+       'info_aucun_site_compte' => 'Aucun site nest associé à votre compte Piwik.',
+       'info_aucun_site_compte_demander_admin' => 'Vous devez demander à un administrateur de votre serveur Piwik dajouter un site correspondant.',
 
        // L
        'label_adresse_serveur' => 'Adresse URL du serveur (https:// ou http://)',
-       'label_comptabiliser_prive' => 'Comptabiliser les visites de l\'espace privé',
+       'label_comptabiliser_prive' => 'Comptabiliser les visites de l’espace privé',
+       'label_conformite_cnil' => 'Conformité CNIL',
        'label_creer_site' => 'Créer un site sur le serveur Piwik',
        'label_exclure_ips' => 'Exclure certaines adresses IP',
-       'label_identifiant_site' => 'L\'identifiant de votre site sur le serveur Piwik',
-       'label_mode_insertion' => 'Mode d\'insertion dans les pages publiques',
+       'label_identifiant_site' => 'Lidentifiant de votre site sur le serveur Piwik',
+       'label_mode_insertion' => 'Mode dinsertion dans les pages publiques',
        'label_piwik_user' => 'Compte utilisateur Piwik',
        'label_recuperer_liste' => 'Récupérer la liste des sites sur le serveur Piwik',
        'label_restreindre_auteurs_prive' => 'Restreindre certains utilisateurs connectés (privé)',
        'label_restreindre_auteurs_public' => 'Restreindre certains utilisateurs connectés (public)',
-       'label_restreindre_statut_prive' => 'Restreindre certains statuts d\'utilisateurs dans l\'espace privé',
-       'label_restreindre_statut_public' => 'Restreindre certains statuts d\'utilisateurs dans la partie publique',
-       'label_token' => 'Token d\'identification sur le serveur',
+       'label_restreindre_statut_prive' => 'Restreindre certains statuts d’utilisateurs dans l’espace privé',
+       'label_restreindre_statut_public' => 'Restreindre certains statuts dutilisateurs dans la partie publique',
+       'label_token' => 'Token didentification sur le serveur',
 
        // M
        'mode_insertion_balise' => 'Insertion par la balise #PIWIK (modification nécessaire de vos squelettes)',
index a612fa4..2016de5 100644 (file)
@@ -12,40 +12,40 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'action_recuperer_liste' => 'Récupérer la liste des sites',
 
        // C
-       'cfg_description_piwik' => 'Ici tu peux indiquer ton identifiant piwik, ainsi que l\'adresse du serveur gérant tes statistiques.',
-       'cfg_erreur_recuperation_data' => 'Il y a une erreur de communication avec le serveur, vérifie l\'adresse et le token',
-       'cfg_erreur_token' => 'Ton token d\'identification est invalide',
-       'cfg_erreur_user_token' => 'La correspondance Nom d\'utilisateur / Token n\'est pas correcte.',
+       'cfg_description_piwik' => 'Ici tu peux indiquer ton identifiant piwik, ainsi que ladresse du serveur gérant tes statistiques.',
+       'cfg_erreur_recuperation_data' => 'Il y a une erreur de communication avec le serveur, vérifie ladresse et le token',
+       'cfg_erreur_token' => 'Ton token didentification est invalide',
+       'cfg_erreur_user_token' => 'La correspondance Nom d’utilisateur / Token n’est pas correcte.',
 
        // E
-       'explication_adresse_serveur' => 'Entre l\'adresse sans "http://" ni "https://" ni slash final',
-       'explication_creer_site' => 'Le lien ci-dessous te permet de créer un site sur le serveur Piwik qui sera disponible ensuite dans la liste. Vérifie que tu as bien configuré l\'adresse et le nom de votre site SPIP avant de cliquer, ce sont ces informations qui seront utilisées.',
+       'explication_adresse_serveur' => 'Entre ladresse sans "http://" ni "https://" ni slash final',
+       'explication_creer_site' => 'Le lien ci-dessous te permet de créer un site sur le serveur Piwik qui sera disponible ensuite dans la liste. Vérifie que tu as bien configuré ladresse et le nom de votre site SPIP avant de cliquer, ce sont ces informations qui seront utilisées.',
        'explication_exclure_ips' => 'Pour exclure plusieurs adresses, sépare les par des points virgules',
        'explication_identifiant_site' => 'La liste des sites disponibles sur le serveur Piwik a été récupérée automatiquement gràce aux informations soumises. Sélectionne dans la liste ci-dessous celui qui te convient',
-       'explication_mode_insertion' => 'Il existe deux modes d\'insertion dans les pages du code nécessaire au bon fonctionnement du plugin. Par le pipeline "insert_head" (méthode automatique mais peu configurable), ou par l\'insertion d\'une balise (méthode manuelle en insérant dans le pied de tes pages la balise #PIWIK) qui, quant à elle est pleinement configurable.',
+       'explication_mode_insertion' => 'Il existe deux modes d’insertion dans les pages du code nécessaire au bon fonctionnement du plugin. Par le pipeline "insert_head" (méthode automatique mais peu configurable), ou par l’insertion d’une balise (méthode manuelle en insérant dans le pied de tes pages la balise #PIWIK) qui, quant à elle est pleinement configurable.',
        'explication_recuperer_liste' => 'Le lien ci-dessous te permet de récupérer la liste des sites que ton compte peut administrer sur le serveur Piwik.',
-       'explication_restreindre_statut_prive' => 'Choisis ici les statuts d\'utilisateurs qui ne seront pas comptabilisés dans les statistiques dans l\'espace privé',
-       'explication_restreindre_statut_public' => 'Choisis ici les statuts d\'utilisateurs qui ne seront pas comptabilisés dans les statistiques dans la partie publique',
-       'explication_token' => 'Le token d\'identification est disponible dans tes préférences personnelles ou dans la partie API de ton serveur Piwik',
+       'explication_restreindre_statut_prive' => 'Choisis ici les statuts d’utilisateurs qui ne seront pas comptabilisés dans les statistiques dans l’espace privé',
+       'explication_restreindre_statut_public' => 'Choisis ici les statuts dutilisateurs qui ne seront pas comptabilisés dans les statistiques dans la partie publique',
+       'explication_token' => 'Le token didentification est disponible dans tes préférences personnelles ou dans la partie API de ton serveur Piwik',
 
        // I
-       'info_aucun_site_compte' => 'Aucun site n\'est associé à ton compte Piwik.',
-       'info_aucun_site_compte_demander_admin' => 'Tu dois demander à un administrateur de ton serveur Piwik d\'ajouter un site correspondant.',
+       'info_aucun_site_compte' => 'Aucun site nest associé à ton compte Piwik.',
+       'info_aucun_site_compte_demander_admin' => 'Tu dois demander à un administrateur de ton serveur Piwik dajouter un site correspondant.',
 
        // L
        'label_adresse_serveur' => 'Adresse URL du serveur (https:// ou http://)',
-       'label_comptabiliser_prive' => 'Comptabiliser les visites de l\'espace privé',
+       'label_comptabiliser_prive' => 'Comptabiliser les visites de lespace privé',
        'label_creer_site' => 'Créer un site sur le serveur Piwik',
        'label_exclure_ips' => 'Exclure certaines adresses IP',
-       'label_identifiant_site' => 'L\'identifiant de ton site sur le serveur Piwik',
-       'label_mode_insertion' => 'Mode d\'insertion dans les pages publiques',
+       'label_identifiant_site' => 'Lidentifiant de ton site sur le serveur Piwik',
+       'label_mode_insertion' => 'Mode dinsertion dans les pages publiques',
        'label_piwik_user' => 'Compte utilisateur Piwik',
        'label_recuperer_liste' => 'Récupérer la liste des sites sur le serveur Piwik',
        'label_restreindre_auteurs_prive' => 'Restreindre certains utilisateurs connectés (privé)',
        'label_restreindre_auteurs_public' => 'Restreindre certains utilisateurs connectés (public)',
-       'label_restreindre_statut_prive' => 'Restreindre certains statuts d\'utilisateurs dans l\'espace privé',
-       'label_restreindre_statut_public' => 'Restreindre certains statuts d\'utilisateurs dans la partie publique',
-       'label_token' => 'Token d\'identification sur le serveur',
+       'label_restreindre_statut_prive' => 'Restreindre certains statuts d’utilisateurs dans l’espace privé',
+       'label_restreindre_statut_public' => 'Restreindre certains statuts dutilisateurs dans la partie publique',
+       'label_token' => 'Token didentification sur le serveur',
 
        // M
        'mode_insertion_balise' => 'Insertion par la balise #PIWIK (modification nécessaire de tes squelettes)',
diff --git a/www/plugins/spip_piwik_2_0/lang/piwik_nl.php b/www/plugins/spip_piwik_2_0/lang/piwik_nl.php
new file mode 100644 (file)
index 0000000..d4d288c
--- /dev/null
@@ -0,0 +1,64 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/piwik?lang_cible=nl
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // A
+       'action_creer_site' => 'Maak de site',
+       'action_recuperer_liste' => 'Haal de sitelijst op',
+
+       // C
+       'cfg_description_piwik' => 'Hier kun je je Piwik identificatie vermelden, alsmede de naam van de server voor jouw statistieken.',
+       'cfg_erreur_recuperation_data' => 'Er is een communicatiefout met de server. Controleer het adres en de token',
+       'cfg_erreur_token' => 'Je identificatie-token is ongeldig',
+       'cfg_erreur_user_token' => 'De combinatie gebruikersnaam / token is onjuist.',
+
+       // E
+       'explication_adresse_serveur' => 'Voer het adres in zonder "http://" of "https://" en ook geen schuine streep aan het einde',
+       'explication_conformite_cnil' => 'Voegt een <a href="http://www.cnil.fr/fileadmin/documents/approfondir/dossier/internet/Configuration_piwik.pdf">JavaScript functie</a> in volgens de <a href="http://www.cnil.fr/vos-obligations/sites-web-cookies-et-autres-traceurs/outils-et-codes-sources/la-mesure-daudience/">Cookie conformiteit</a> van de Franse CNIL.',
+       'explication_creer_site' => 'Met onderstaande link kun je een site op de Piwik server aanmaken die vervolgens in de lijst beschikbaar komt. Controleer alvorens te klikken de juiste configuratie van het adres en de naam van je SPIP site. Dit zijn de gegevens die zullen worden gebruikt.',
+       'explication_exclure_ips' => 'Om meerdere adressen uit te sluiten gebruik je een puntkomma als scheidingsteken',
+       'explication_identifiant_site' => 'De lijst van beschikbare sites op de Piwik server werd aan de hand van de verstrekte gegevens automatisch opgehaald. Maak uit onderstaande lijst je keuze',
+       'explication_mode_insertion' => 'Er zijn twee manieren om op de bladzijdes de code in te voeren die de plugin goed laat functioneren. Via de pipeline "insert_head" (automatisch, maar weinig configureerbaar), of door het invoegen van een tag (handmatig invoeren van de tag #PIWIK onder een bladzijde) wat een volop configureerbare oplossing biedt.',
+       'explication_recuperer_liste' => 'Met onderstaande link kun je de lijst ophalen van door jouw te beheren sites op de Piwik server.',
+       'explication_restreindre_statut_prive' => 'Kies hier de statussen van gebruikers die niet moeten worden meegeteld in de statistieken van de privé-ruimte',
+       'explication_restreindre_statut_public' => 'Kies hier de statussen van gebruikers die niet moeten worden meegeteld in de statistieken van de publieke site',
+       'explication_token' => 'De identificatie-token is beschikbaar in je persoonlijke voorkeuren of in het API-gedeelte van je Piwik server',
+
+       // I
+       'info_aucun_site_compte' => 'Geen enkele site is aan jouw Piwik account gekoppeld.',
+       'info_aucun_site_compte_demander_admin' => 'Je zult een beheerder van je Piwik server moeten vragen om een site toe te voegen.',
+
+       // L
+       'label_adresse_serveur' => 'URL-adres van de server (https:// of http://)',
+       'label_comptabiliser_prive' => 'Bezoeken aan de privé-ruimte meetellen',
+       'label_conformite_cnil' => 'CNIL conformiteit',
+       'label_creer_site' => 'Maak een site op de Piwik server',
+       'label_exclure_ips' => 'Sluit bepaalde IP-adressen uit',
+       'label_identifiant_site' => 'De identificatie van je site op de Piwik server',
+       'label_mode_insertion' => 'Invoegmethode in de bladzijdes van de publieke site',
+       'label_piwik_user' => 'Piwik gebruikersaccount',
+       'label_recuperer_liste' => 'De sitelijst ophalen van de Piwik server',
+       'label_restreindre_auteurs_prive' => 'Sluit bepaalde aangesloten gebruikers uit (privé)',
+       'label_restreindre_auteurs_public' => 'Sluit bepaalde aangesloten gebruikers uit (publiek)',
+       'label_restreindre_statut_prive' => 'Sluit gebruikers met bepaalde statussen uit (privé)',
+       'label_restreindre_statut_public' => 'Sluit gebruikers met bepaalde statussen uit (publiek)',
+       'label_token' => 'Identificatie-token op de server',
+
+       // M
+       'mode_insertion_balise' => 'Invoegen van tag #PIWIK (handmatig aanpassen van skeletten noodzakelijk)',
+       'mode_insertion_pipeline' => 'Automatisch invoegen via de pipeline "insert_head"',
+
+       // P
+       'piwik' => 'Piwik',
+
+       // T
+       'texte_votre_identifiant' => 'Je identificatie',
+       'textes_url_piwik' => 'Je Piwik server'
+);
+
+?>
index a9da1ec..f7b5d4e 100644 (file)
@@ -19,6 +19,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // E
        'explication_adresse_serveur' => 'Zadajte adresu stránky bez "http://" alebo "https://" a bez lomky na konci',
+       'explication_conformite_cnil' => 'Vloží <a href="http://www.cnil.fr/fileadmin/documents/approfondir/dossier/internet/Configuration_piwik.pdf"> JavaScriptovú funkciu,</a> ktorá umožňuje <a href="http://www.cnil.fr/vos-obligations/sites-web-cookies-et-autres-traceurs/outils-et-codes-sources/la-mesure-daudience/">nastaviť zhodu s kontrolnou cookie,</a> čo určuje CNIL.',
        'explication_creer_site' => 'Odkaz vám umožňuje vytvoriť stránku na serveri s Piwikom, ktorá bude potom dostupná na zozname. Pred kliknutím skontrolujte, či ste správne zadali adresu a názov svojej stránky v SPIPe, lebo tieto údaje sa budú neskôr používať.',
        'explication_exclure_ips' => 'Ak vymenujete niekoľko adries, ktoré majú byť vylúčené, oddeľte ich bodkočiarkami',
        'explication_identifiant_site' => 'Zoznam dostupných stránok na serveri s Piwikom bol automaticky získaný pomocou odoslaných údajov. Zo zoznamu si vyberte tú, ktorú chcete použiť.',
@@ -35,6 +36,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        // L
        'label_adresse_serveur' => 'Internetová adresa servera (https:// alebo http://)',
        'label_comptabiliser_prive' => 'Pridať návštevy súkromnej zóny',
+       'label_conformite_cnil' => 'Dodržiavanie CNIL',
        'label_creer_site' => 'Vytvoriť stránku na serveri s Piwikom',
        'label_exclure_ips' => 'Vylúčiť určité IP adresy',
        'label_identifiant_site' => 'Identifikátor vašej stránky na serveri s Piwikom',
index 454623c..9bdae39 100644 (file)
@@ -1,12 +1,12 @@
 <paquet
        prefix="piwik"
        categorie="statistique"
-       version="0.6.0"
+       version="0.6.2"
        etat="stable"
-       compatibilite="[2.0.8;3.0.99]"
+       compatibilite="[2.0.8;3.0.*]"
        logo="piwik.png"
        schema="0.1"
-       documentation="http://www.spip-contrib.net/?article2860"
+       documentation="http://contrib.spip.net/?article2860"
 >      
 
        <nom>Piwik</nom>
index f494b38..1695682 100644 (file)
@@ -75,6 +75,11 @@ function piwik_head_js($options=array()){
        $config = lire_config('piwik',array('id_piwik'=>false,'urlpiwik'=>false));
        $id_piwik = $config['idpiwik'];
        $url_piwik = $config['urlpiwik'];
+       $conformite_cnil = '';
+       if($config['conformite_cnil']=="on"){
+               $conformite_cnil = '
+               '.recuperer_fond("inc/js-cnil");
+       }
        $afficher_js = true;
 
        $ret = '';
@@ -93,15 +98,15 @@ function piwik_head_js($options=array()){
 
                if($afficher_js){
                        $ret .= "
-                               <script type='text/javascript'>var _paq = _paq || []; 
-                                       (function(){ var u=(('https:' == document.location.protocol) ? 'https://$url_piwik/' : 'http://$url_piwik/'); 
-                                       _paq.push(['setSiteId', $id_piwik]); 
-                                       _paq.push(['setTrackerUrl', u+'piwik.php']); 
-                                       _paq.push(['trackPageView']); 
-                                       _paq.push(['enableLinkTracking']); 
-                                       var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text/javascript'; g.defer=true; g.async=true; g.src=u+'piwik.js'; 
-                                       s.parentNode.insertBefore(g,s); })();
-                               </script>";
+<script type='text/javascript'>var _paq = _paq || [];$conformite_cnil
+       (function(){ var u=(('https:' == document.location.protocol) ? 'https://$url_piwik/' : 'http://$url_piwik/'); 
+       _paq.push(['setSiteId', $id_piwik]); 
+       _paq.push(['setTrackerUrl', u+'piwik.php']); 
+       _paq.push(['trackPageView']); 
+       _paq.push(['enableLinkTracking']); 
+       var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text/javascript'; g.defer=true; g.async=true; g.src=u+'piwik.js'; 
+       s.parentNode.insertBefore(g,s); })();
+</script>";
                }
        }
 
index a3eefee..137bc17 100644 (file)
@@ -2,7 +2,7 @@
        <nom>Piwik</nom>\r
        <slogan>Interfacer Spip et Piwik</slogan>\r
        <auteur>jsb, kent1</auteur>\r
-       <version>0.5.1</version>\r
+       <version>0.6.2</version>\r
        <licence>GNU/GPL</licence>\r
        <etat>stable</etat>\r
        <version_base>0.1</version_base>\r
@@ -13,7 +13,7 @@
                </multi>\r
        </description>\r
        <icon>piwik.png</icon>\r
-       <lien>http://www.spip-contrib.net/?article2860</lien>\r
+       <lien>http://contrib.spip.net/?article2860</lien>\r
        <prefix>piwik</prefix>\r
        <install>piwik_administrations.php</install>\r
        <pipeline>\r
@@ -30,4 +30,4 @@
        <necessite id='spip_bonux' version='[1.8;]' />\r
        <categorie>statistique</categorie>\r
        <traduire gestionnaire="salvatore" module="piwik" reference="fr" />\r
-</plugin>\r
+</plugin>
\ No newline at end of file
index a770c3d..cd4d083 100644 (file)
@@ -1,6 +1,8 @@
 #CACHE{0}
 <script type="text/javascript"> 
-var _paq = _paq || []; 
+var _paq = _paq || [];[(#CONFIG{piwik/conformite_cnil}|=={on}|oui)
+<INCLURE{fond=inc/js-cnil} />
+]
 (function(){ var u=(("https:" == document.location.protocol) ? "https://#CONFIG{piwik/urlpiwik}/" : "http://#CONFIG{piwik/urlpiwik}/"); 
 _paq.push(['setSiteId', #CONFIG{piwik/idpiwik}]); 
 _paq.push(['setTrackerUrl', u+'piwik.php']); 
index abbf84a..2cb81b3 100644 (file)
@@ -1,10 +1,10 @@
 <svn_revision>
 <text_version>
 Origine: file:///home/svn/repository/spip-zone/_plugins_/spip_piwik/spip_piwik_2_0
-Revision: 72440
-Dernier commit: 2013-04-29 17:01:34 +0200 
+Revision: 84614
+Dernier commit: 2014-09-14 23:33:31 +0200 
 </text_version>
 <origine>file:///home/svn/repository/spip-zone/_plugins_/spip_piwik/spip_piwik_2_0</origine>
-<revision>72440</revision>
-<commit>2013-04-29 17:01:34 +0200 </commit>
+<revision>84614</revision>
+<commit>2014-09-14 23:33:31 +0200 </commit>
 </svn_revision>
\ No newline at end of file
index 0e789a8..8df661f 100644 (file)
@@ -1,18 +1,22 @@
 <traduction module="paquet-verifier" gestionnaire="salvatore" url="http://trad.spip.net" source="svn://zone.spip.org/spip-zone/_plugins_/verifier/lang/" reference="fr">
-       <langue code="de" url="http://trad.spip.net/tradlang_module/paquet-verifier?lang_cible=de">
+       <langue code="de" url="http://trad.spip.net/tradlang_module/paquet-verifier?lang_cible=de" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="klaus++" lien="http://trad.spip.net/auteur/klaus" />
        </langue>
-       <langue code="en" url="http://trad.spip.net/tradlang_module/paquet-verifier?lang_cible=en">
+       <langue code="en" url="http://trad.spip.net/tradlang_module/paquet-verifier?lang_cible=en" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="kent1" lien="http://trad.spip.net/auteur/kent1" />
        </langue>
-       <langue code="es" url="http://trad.spip.net/tradlang_module/paquet-verifier?lang_cible=es">
-               <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel" />
+       <langue code="es" url="http://trad.spip.net/tradlang_module/paquet-verifier?lang_cible=es" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel-s-bujaldon" />
        </langue>
-       <langue code="fr" />
-       <langue code="ru" url="http://trad.spip.net/tradlang_module/paquet-verifier?lang_cible=ru">
+       <langue code="fr" url="http://trad.spip.net/tradlang_module/paquet-verifier?lang_cible=fr" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+       </langue>
+       <langue code="fr_tu" url="http://trad.spip.net/tradlang_module/paquet-verifier?lang_cible=fr_tu" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Cerf" lien="http://trad.spip.net/auteur/cerf" />
+       </langue>
+       <langue code="ru" url="http://trad.spip.net/tradlang_module/paquet-verifier?lang_cible=ru" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="Serge Markitanenko" lien="http://trad.spip.net/auteur/serge-markitanenko" />
        </langue>
-       <langue code="sk" url="http://trad.spip.net/tradlang_module/paquet-verifier?lang_cible=sk">
+       <langue code="sk" url="http://trad.spip.net/tradlang_module/paquet-verifier?lang_cible=sk" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="jaro" lien="http://trad.spip.net/auteur/jaro" />
        </langue>
 </traduction>
index e9d7243..4968c25 100644 (file)
@@ -6,7 +6,7 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // V
-       'verifier_description' => 'Fournit une fonction unique <code>verifier($valeur, $type, $options, &$valeur_normalisee)</code> permettant de tester la validité d\'une valeur.',
+       'verifier_description' => 'Fournit une fonction unique <code>verifier($valeur, $type, $options, &$valeur_normalisee)</code> permettant de tester la validité dune valeur.',
        'verifier_nom' => 'API de vérification',
        'verifier_slogan' => 'Une API générique pour vérifier une valeur'
 );
diff --git a/www/plugins/verifier/lang/paquet-verifier_fr_tu.php b/www/plugins/verifier/lang/paquet-verifier_fr_tu.php
new file mode 100644 (file)
index 0000000..4bcba90
--- /dev/null
@@ -0,0 +1,16 @@
+<?php
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/paquet-verifier?lang_cible=fr_tu
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+       // V
+       'verifier_description' => 'Fournit une fonction unique <code>verifier($valeur, $type, $options, &$valeur_normalisee)</code> permettant de tester la validité d’une valeur.',
+       'verifier_nom' => 'API de vérification',
+       'verifier_slogan' => 'Une API générique pour vérifier une valeur'
+);
+
+?>
index 81f2aac..c2097b3 100644 (file)
@@ -1,36 +1,39 @@
 <traduction module="verifier" gestionnaire="salvatore" url="http://trad.spip.net" source="svn://zone.spip.org/spip-zone/_plugins_/verifier/lang/" reference="fr">
-       <langue code="ca" />
-       <langue code="de" url="http://trad.spip.net/tradlang_module/verifier?lang_cible=de">
+       <langue code="ca" url="http://trad.spip.net/tradlang_module/verifier?lang_cible=ca" total="95" traduits="42" relire="0" modifs="6" nouveaux="47" pourcent="44.21">
+       </langue>
+       <langue code="de" url="http://trad.spip.net/tradlang_module/verifier?lang_cible=de" total="95" traduits="66" relire="0" modifs="4" nouveaux="25" pourcent="69.47">
                <traducteur nom="klaus++" lien="http://trad.spip.net/auteur/klaus" />
        </langue>
-       <langue code="en" url="http://trad.spip.net/tradlang_module/verifier?lang_cible=en">
-               <traducteur nom="drBouvierLeduc" lien="http://trad.spip.net/auteur/drbouvierleduc" />
+       <langue code="en" url="http://trad.spip.net/tradlang_module/verifier?lang_cible=en" total="95" traduits="95" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="George" lien="http://trad.spip.net/auteur/جورج-قندلفت" />
                <traducteur nom="kent1" lien="http://trad.spip.net/auteur/kent1" />
                <traducteur nom="Mark" lien="http://trad.spip.net/auteur/mark" />
                <traducteur nom="RastaPopoulos" lien="http://trad.spip.net/auteur/rastapopoulos" />
+               <traducteur nom="tcharlss" lien="http://trad.spip.net/auteur/drbouvierleduc" />
        </langue>
-       <langue code="es" url="http://trad.spip.net/tradlang_module/verifier?lang_cible=es">
-               <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel" />
+       <langue code="es" url="http://trad.spip.net/tradlang_module/verifier?lang_cible=es" total="95" traduits="95" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+               <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel-s-bujaldon" />
        </langue>
-       <langue code="fa" url="http://trad.spip.net/tradlang_module/verifier?lang_cible=fa">
+       <langue code="fa" url="http://trad.spip.net/tradlang_module/verifier?lang_cible=fa" total="95" traduits="82" relire="0" modifs="4" nouveaux="9" pourcent="86.32">
                <traducteur nom="Davood Hossein" lien="http://trad.spip.net/auteur/davood-hossein" />
        </langue>
-       <langue code="fr" />
-       <langue code="fr_tu" url="http://trad.spip.net/tradlang_module/verifier?lang_cible=fr_tu">
+       <langue code="fr" url="http://trad.spip.net/tradlang_module/verifier?lang_cible=fr" total="95" traduits="95" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+       </langue>
+       <langue code="fr_tu" url="http://trad.spip.net/tradlang_module/verifier?lang_cible=fr_tu" total="95" traduits="95" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="beatnick" lien="http://trad.spip.net/auteur/beatnick" />
+               <traducteur nom="Cerf" lien="http://trad.spip.net/auteur/cerf" />
                <traducteur nom="stefdn" lien="http://trad.spip.net/auteur/stefdn" />
        </langue>
-       <langue code="it" url="http://trad.spip.net/tradlang_module/verifier?lang_cible=it">
+       <langue code="it" url="http://trad.spip.net/tradlang_module/verifier?lang_cible=it" total="95" traduits="66" relire="0" modifs="4" nouveaux="25" pourcent="69.47">
                <traducteur nom="Cap" lien="http://trad.spip.net/auteur/cap" />
        </langue>
-       <langue code="pt_br" url="http://trad.spip.net/tradlang_module/verifier?lang_cible=pt_br">
+       <langue code="pt_br" url="http://trad.spip.net/tradlang_module/verifier?lang_cible=pt_br" total="95" traduits="66" relire="0" modifs="4" nouveaux="25" pourcent="69.47">
                <traducteur nom="Ricardo Porto" lien="http://trad.spip.net/auteur/ricardo-porto" />
        </langue>
-       <langue code="ru" url="http://trad.spip.net/tradlang_module/verifier?lang_cible=ru">
+       <langue code="ru" url="http://trad.spip.net/tradlang_module/verifier?lang_cible=ru" total="95" traduits="86" relire="0" modifs="0" nouveaux="9" pourcent="90.53">
                <traducteur nom="nazar" lien="http://trad.spip.net/auteur/nazar" />
        </langue>
-       <langue code="sk" url="http://trad.spip.net/tradlang_module/verifier?lang_cible=sk">
+       <langue code="sk" url="http://trad.spip.net/tradlang_module/verifier?lang_cible=sk" total="95" traduits="95" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
                <traducteur nom="jaro" lien="http://trad.spip.net/auteur/jaro" />
        </langue>
 </traduction>
index 7628f12..17e53ea 100644 (file)
@@ -8,63 +8,31 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // E
-       'erreur_code_postal' => 'Ce code postal est incorrect.', # NEW
-       'erreur_comparaison_egal' => 'La valeur doit être égale au champ "@nom_champ@"', # NEW
-       'erreur_comparaison_egal_type' => 'La valeur doit être égale et de même type que le champ "@nom_champ@"', # NEW
-       'erreur_comparaison_grand' => 'La valeur doit être supérieure au champ "@nom_champ@"', # NEW
-       'erreur_comparaison_grand_egal' => 'La valeur doit être supérieure ou égale au champ "@nom_champ@"', # NEW
-       'erreur_comparaison_petit' => 'La valeur doit être inférieure au champ "@nom_champ@"', # NEW
-       'erreur_comparaison_petit_egal' => 'La valeur doit être inférieure ou égale au champ "@nom_champ@"', # NEW
-       'erreur_couleur' => 'Le code couleur n\'est pas valide.', # NEW
        'erreur_date' => 'El format de la data no és correcte.',
-       'erreur_date_format' => 'Le format de la date n\'est pas accepté.', # NEW
-       'erreur_decimal' => 'La valeur doit être un nombre décimal.', # NEW
-       'erreur_decimal_nb_decimales' => 'Le nombre ne doit pas avoir plus de @nb_decimales@ chiffres après la virgule.', # NEW
-       'erreur_email' => 'L\'adreça de correu electrònic <em>@email@</em> no té un format vàlid.',
-       'erreur_email_nondispo' => 'L\'adreça de correu electrònic <em>@email@</em> ja s\'utilitza.',
+       'erreur_email' => 'L’adreça de correu electrònic <em>@email@</em> no té un format vàlid.',
+       'erreur_email_nondispo' => 'L’adreça de correu electrònic <em>@email@</em> ja s’utilitza.',
        'erreur_entier' => 'El valor ha de ser un nombre enter.',
-       'erreur_entier_entre' => 'El valor ha d\'estar comprès entre @min@ i @max@.',
+       'erreur_entier_entre' => 'El valor ha destar comprès entre @min@ i @max@.',
        'erreur_entier_max' => 'El valor ha de ser inferior a @max@.',
        'erreur_entier_min' => 'El valor ha de ser superior a @min@.',
-       'erreur_heure' => 'L’horaire indiquée n’existe pas.', # NEW
-       'erreur_heure_format' => 'Le format de l’heure n’est pas accepté.', # NEW
        'erreur_id_document' => 'Aquest identificador de document no és vàlid.',
-       'erreur_inconnue_generique' => 'Le format n\'est pas correct.', # NEW
-       'erreur_isbn' => 'Le numéro ISBN n\'est pas valide (ex: 978-2-1234-5680-3 ou 2-1234-5680-X)', # NEW
-       'erreur_isbn_13_X' => 'Un numéro ISBN-13 ne peut pas se terminer par X.', # NEW
-       'erreur_isbn_G' => 'Le premier segment doit être égal à 978 ou 979.', # NEW
-       'erreur_isbn_nb_caracteres' => 'Le numéro ISBN doit comprendre 10 ou 13 caractères, sans compter les tirets (actuellement @nb@).', # NEW
-       'erreur_isbn_nb_segments' => 'Le numéro ISBN doit comprendre 4 ou 5 segments (actuellement @nb@).', # NEW
-       'erreur_isbn_segment' => 'Le segment "@segment@" comprend @nb@ chiffre(s) en trop.', # NEW
-       'erreur_isbn_segment_lettre' => 'Le segment "@segment@" ne doit pas contenir de lettre.', # NEW
        'erreur_numerique' => 'El format del número no és vàlid.',
        'erreur_regex' => 'El format de la cadena no és vàlida.',
        'erreur_siren' => 'Número SIREN no vàlid.',
        'erreur_siret' => 'Número SIRET no vàlid.',
        'erreur_taille_egal' => 'El valor ha de tenir exactament @egal@ caràcters.', # MODIF
-       'erreur_taille_entre' => 'El valor ha d\'estar comprès entre @min@ i @max@ caràcters.', # MODIF
+       'erreur_taille_entre' => 'El valor ha destar comprès entre @min@ i @max@ caràcters.', # MODIF
        'erreur_taille_max' => 'El valor ha de comprendre com a molt @max@ caràcters.', # MODIF
        'erreur_taille_min' => 'El valor ha de tenir com a mínim @min@ caràcters.', # MODIF
        'erreur_telephone' => 'El número no és vàlid.',
-       'erreur_url' => 'L\'adreça no és vàlida.', # MODIF
-       'erreur_url_protocole' => 'L\'adresse saisie <em>(@url@)</em> doit commencer par @protocole@', # NEW
-       'erreur_url_protocole_exact' => 'L\'adresse saisie <em>(@url@)</em> ne commence pas par un protocole valide (http:// par exemple)', # NEW
-
-       // N
-       'normaliser_option_date' => 'Normaliser la date ?', # NEW
-       'normaliser_option_date_aucune' => 'Non', # NEW
-       'normaliser_option_date_en_datetime' => 'Au format «Datetime» (pour SQL)', # NEW
+       'erreur_url' => 'L’adreça no és vàlida.', # MODIF
 
        // O
-       'option_couleur_normaliser_label' => 'Normaliser le code couleur ?', # NEW
-       'option_couleur_type_hexa' => 'Code couleur au format héxadécimal', # NEW
-       'option_couleur_type_label' => 'Type de vérification à effectuer', # NEW
-       'option_decimal_nb_decimales_label' => 'Nombre de décimales après la virgule', # NEW
        'option_email_disponible_label' => 'Adreça disponible',
-       'option_email_disponible_label_case' => 'Verificar que l\'adreça no l\'utilitzi ja un altre usuari',
+       'option_email_disponible_label_case' => 'Verificar que l’adreça no l’utilitzi ja un altre usuari',
        'option_email_mode_5322' => 'Verificació la més compatible amb els estàndards disponibles ',
        'option_email_mode_label' => 'Mitjà de verificació dels correus electrònics',
-       'option_email_mode_normal' => 'Verificació normal d\'SPIP',
+       'option_email_mode_normal' => 'Verificació normal dSPIP',
        'option_email_mode_strict' => 'Verificació menys permissiva',
        'option_entier_max_label' => 'Valor màxim',
        'option_entier_min_label' => 'Valor mínim',
@@ -74,41 +42,24 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'option_siren_siret_mode_siret' => 'el SIRET',
        'option_taille_max_label' => 'Mida màxima',
        'option_taille_min_label' => 'Mida mínima',
-       'option_url_mode_complet' => 'Vérification complète de l\'url', # NEW
-       'option_url_mode_label' => 'Mode de vérification des urls', # NEW
-       'option_url_mode_php_filter' => 'Vérification complète de l\'url via le filtre FILTER_VALIDATE_URL de php', # NEW
-       'option_url_mode_protocole_seul' => 'Vérification uniquement de la présence d\'un protocole', # NEW
-       'option_url_protocole_label' => 'Nom du protocole à vérifier', # NEW
-       'option_url_type_protocole_exact' => 'Saisir un protocole ci-dessous :', # NEW
-       'option_url_type_protocole_ftp' => 'Protocoles ftp : ftp ou sftp', # NEW
-       'option_url_type_protocole_label' => 'Type de protocole à vérifier', # NEW
-       'option_url_type_protocole_mail' => 'Protocoles mail : imap, pop3 ou smtp', # NEW
-       'option_url_type_protocole_tous' => 'Tous protocoles acceptés', # NEW
-       'option_url_type_protocole_web' => 'Protocoles web : http ou https', # NEW
 
        // T
-       'type_couleur' => 'Couleur', # NEW
-       'type_couleur_description' => 'Vérifie que la valeur est un code couleur.', # NEW
        'type_date' => 'Data',
        'type_date_description' => 'Verifica que el valor és una data en format JJ/MM/AAAA. El separador és lliure (".", "/", etc.).',
-       'type_decimal' => 'Nombre décimal', # NEW
-       'type_decimal_description' => 'Vérifie que la valeur est un nombre décimal, avec la possibilité de restreindre entre deux valeurs et de préciser le nombre de décimales après la virgule.', # NEW
        'type_email' => 'Adreça de correu electrònic',
-       'type_email_description' => 'Verifica que el format de l\'adreça de correu electrònica sigui correcte.',
-       'type_email_disponible' => 'Disponibilitat d\'una adreça de correu electrònic',
-       'type_email_disponible_description' => 'Verifica que l\'adreça de correu electrònica no sigui utilitzada ja per un altre usuari del sistema.',
+       'type_email_description' => 'Verifica que el format de ladreça de correu electrònica sigui correcte.',
+       'type_email_disponible' => 'Disponibilitat duna adreça de correu electrònic',
+       'type_email_disponible_description' => 'Verifica que ladreça de correu electrònica no sigui utilitzada ja per un altre usuari del sistema.',
        'type_entier' => 'Número enter', # MODIF
        'type_entier_description' => 'Verifica que el valor sigui un número enter, amb la possibilitat de restringir entre dos valors.',
        'type_regex' => 'Expressió regular ',
-       'type_regex_description' => 'Verifica que el valor correspon a la màscara demanada. Per l\'ús de màscares, aneu a <a href="http://fr2.php.net/manual/fr/reference.pcre.pattern.syntax.php">l\'ajuda en línia de PHP</a>.',
+       'type_regex_description' => 'Verifica que el valor correspon a la màscara demanada. Per l’ús de màscares, aneu a <a href="http://fr2.php.net/manual/fr/reference.pcre.pattern.syntax.php">l’ajuda en línia de PHP</a>.',
        'type_siren_siret' => 'SIREN o SIRET',
        'type_siren_siret_description' => 'Verifica queel valor és un número vàlid del <a href="http://fr.wikipedia.org/wiki/SIREN">Système d’Identification du Répertoire des ENtreprises</a> francès.',
        'type_taille' => 'Mida',
        'type_taille_description' => 'Verifica que la mida del valor correspon al mínim i/o al màxim demanat.',
        'type_telephone' => 'Número de telèfon',
-       'type_telephone_description' => 'Verifica que el número de telèfon correspon a un esquema reconegut.',
-       'type_url' => 'URL', # NEW
-       'type_url_description' => 'Vérifie que l\'url correspond à un schéma reconnu.' # NEW
+       'type_telephone_description' => 'Verifica que el número de telèfon correspon a un esquema reconegut.'
 );
 
 ?>
index dee32b4..741fd14 100644 (file)
@@ -9,13 +9,6 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // E
        'erreur_code_postal' => 'Ungültige Postleitzahl',
-       'erreur_comparaison_egal' => 'La valeur doit être égale au champ "@nom_champ@"', # NEW
-       'erreur_comparaison_egal_type' => 'La valeur doit être égale et de même type que le champ "@nom_champ@"', # NEW
-       'erreur_comparaison_grand' => 'La valeur doit être supérieure au champ "@nom_champ@"', # NEW
-       'erreur_comparaison_grand_egal' => 'La valeur doit être supérieure ou égale au champ "@nom_champ@"', # NEW
-       'erreur_comparaison_petit' => 'La valeur doit être inférieure au champ "@nom_champ@"', # NEW
-       'erreur_comparaison_petit_egal' => 'La valeur doit être inférieure ou égale au champ "@nom_champ@"', # NEW
-       'erreur_couleur' => 'Le code couleur n\'est pas valide.', # NEW
        'erreur_date' => 'Fromat des Datums ungültig',
        'erreur_date_format' => 'Dieses Datumsformat wird nicht akzeptiert',
        'erreur_decimal' => 'Der Wert muß einen Dezimalzahl sein',
@@ -26,17 +19,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'erreur_entier_entre' => 'Der Wert muß zwischen  @min@ und @max@ liegen.',
        'erreur_entier_max' => 'Der Wert muß kleiner als @max@ sein.',
        'erreur_entier_min' => 'Der Wert muß größer als @min@ sein.',
-       'erreur_heure' => 'L’horaire indiquée n’existe pas.', # NEW
-       'erreur_heure_format' => 'Le format de l’heure n’est pas accepté.', # NEW
        'erreur_id_document' => 'Diese Dokumenten-ID ist ungültig',
-       'erreur_inconnue_generique' => 'Le format n\'est pas correct.', # NEW
-       'erreur_isbn' => 'Le numéro ISBN n\'est pas valide (ex: 978-2-1234-5680-3 ou 2-1234-5680-X)', # NEW
-       'erreur_isbn_13_X' => 'Un numéro ISBN-13 ne peut pas se terminer par X.', # NEW
-       'erreur_isbn_G' => 'Le premier segment doit être égal à 978 ou 979.', # NEW
-       'erreur_isbn_nb_caracteres' => 'Le numéro ISBN doit comprendre 10 ou 13 caractères, sans compter les tirets (actuellement @nb@).', # NEW
-       'erreur_isbn_nb_segments' => 'Le numéro ISBN doit comprendre 4 ou 5 segments (actuellement @nb@).', # NEW
-       'erreur_isbn_segment' => 'Le segment "@segment@" comprend @nb@ chiffre(s) en trop.', # NEW
-       'erreur_isbn_segment_lettre' => 'Le segment "@segment@" ne doit pas contenir de lettre.', # NEW
        'erreur_numerique' => 'Zahlenformat ungültig',
        'erreur_regex' => 'Zeichenkettenformat ungültig',
        'erreur_siren' => 'SIREN Nummer ungültig',
@@ -50,15 +33,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'erreur_url_protocole' => 'Die eingegebene Adresse <em>(@url@)</em> muß mit @protocole@ beginnen.',
        'erreur_url_protocole_exact' => 'Die eingegebene Adresse <em>(@url@)</em> beginnt nicht mit einem gültigen Protokoll (zum Beispiel http:// ).',
 
-       // N
-       'normaliser_option_date' => 'Normaliser la date ?', # NEW
-       'normaliser_option_date_aucune' => 'Non', # NEW
-       'normaliser_option_date_en_datetime' => 'Au format «Datetime» (pour SQL)', # NEW
-
        // O
-       'option_couleur_normaliser_label' => 'Normaliser le code couleur ?', # NEW
-       'option_couleur_type_hexa' => 'Code couleur au format héxadécimal', # NEW
-       'option_couleur_type_label' => 'Type de vérification à effectuer', # NEW
        'option_decimal_nb_decimales_label' => 'Dezimalstellen nach dem Komma',
        'option_email_disponible_label' => 'Adresse verfügbar',
        'option_email_disponible_label_case' => 'Überprüfen, ob die Adresse bereits verwendet wird.',
@@ -87,8 +62,6 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'option_url_type_protocole_web' => 'Web-Protokolle: http oder https',
 
        // T
-       'type_couleur' => 'Couleur', # NEW
-       'type_couleur_description' => 'Vérifie que la valeur est un code couleur.', # NEW
        'type_date' => 'Datum',
        'type_date_description' => 'Überprüft den Wert auf das Datumsformat  JJ/MM/AAAA. Verschiedene Trenner sind möglich (".", "/", etc).',
        'type_decimal' => 'Dezimalzahl',
index 41cf738..a03a6c0 100644 (file)
@@ -102,7 +102,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'type_regex' => 'Expresión regular',
        'type_regex_description' => 'Comprueba que el valor corresponda al patrón indicado. Para el uso de los patrones, refiérase a <a href="http://php.net/manual/es/reference.pcre.pattern.syntax.php">la documentación en línea de PHP</a>.',
        'type_siren_siret' => 'SIREN o SIRET',
-       'type_siren_siret_description' => 'Comprueba que el valor es un número valido del <a href="http://fr.wikipedia.org/wiki/SIREN">Sistema de Identificación del Repertorio de las Empresas</a> francés.',
+       'type_siren_siret_description' => 'Comprueba que el valor es un número valido del <a href="http://fr.wikipedia.org/wiki/SIREN">Sistema de Identificación del Directorio de las Empresas</a> francés.',
        'type_taille' => 'Tamaño',
        'type_taille_description' => 'Comprueba que el tamaño del valor corresponde al mínimo y/o al máximo indicado.',
        'type_telephone' => 'Número de teléfono',
index a95b78c..1d057de 100644 (file)
@@ -26,17 +26,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'erreur_entier_entre' => 'مقدار بايد بين @min@ و @max@.',
        'erreur_entier_max' => 'مقدار بايد كم‌تر از @max@ باشد.',
        'erreur_entier_min' => 'مقدار بايد بيشتر از @min@ باشد.',
-       'erreur_heure' => 'L’horaire indiquée n’existe pas.', # NEW
-       'erreur_heure_format' => 'Le format de l’heure n’est pas accepté.', # NEW
        'erreur_id_document' => 'اين شناسه‌ي سند معتبر نيست.',
        'erreur_inconnue_generique' => 'فرمت صحيح نيست',
-       'erreur_isbn' => 'Le numéro ISBN n\'est pas valide (ex: 978-2-1234-5680-3 ou 2-1234-5680-X)', # NEW
-       'erreur_isbn_13_X' => 'Un numéro ISBN-13 ne peut pas se terminer par X.', # NEW
-       'erreur_isbn_G' => 'Le premier segment doit être égal à 978 ou 979.', # NEW
-       'erreur_isbn_nb_caracteres' => 'Le numéro ISBN doit comprendre 10 ou 13 caractères, sans compter les tirets (actuellement @nb@).', # NEW
-       'erreur_isbn_nb_segments' => 'Le numéro ISBN doit comprendre 4 ou 5 segments (actuellement @nb@).', # NEW
-       'erreur_isbn_segment' => 'Le segment "@segment@" comprend @nb@ chiffre(s) en trop.', # NEW
-       'erreur_isbn_segment_lettre' => 'Le segment "@segment@" ne doit pas contenir de lettre.', # NEW
        'erreur_numerique' => 'فرمت عدد معتبر نيست.',
        'erreur_regex' => 'فرمت رشته معتبر نيست.',
        'erreur_siren' => 'فرمت SIREN معتبر نيست.',
@@ -100,7 +91,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'type_entier' => 'عدد صحيح',
        'type_entier_description' => 'چك كنيد كه مقدار يك عدد صحيح باشد،‌ با گزينه‌ي محدوديت بين دو مقدار.',
        'type_regex' => 'عبارت عادي',
-       'type_regex_description' => '<چك كنيد كه مقدار با عبارت خواسته شد جور باشد. براي اطلاعات بيشتر در مورد استفاده از عبارت درخواست شده به اينجا رجوع كنيد: <a href="http://fr2.php.net/manual/fr/reference.pcre.pattern.syntax.php">l\'aide en ligne de PHP</a>.',
+       'type_regex_description' => '<چك كنيد كه مقدار با عبارت خواسته شد جور باشد. براي اطلاعات بيشتر در مورد استفاده از عبارت درخواست شده به اينجا رجوع كنيد: <a href="http://fr2.php.net/manual/fr/reference.pcre.pattern.syntax.php">laide en ligne de PHP</a>.',
        'type_siren_siret' => 'شماره‌ي نظام ملي اطلاعات فهرست بنگاه‌ها يا شماره‌ي ملي فهرست بنگاه‌ها و تأسيسات (سرواژه به فرانسه:SIREN ياSIRET)',
        'type_siren_siret_description' => 'چك كنيد كه مقدار يك شماره‌ي معتبر است <a href="http://fr.wikipedia.org/wiki/SIREN">نظامل اطلاعات بنگاه‌ها به فرانسه s</a> .',
        'type_taille' => 'اندازه',
index accb401..45bd84b 100644 (file)
@@ -13,53 +13,53 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'erreur_comparaison_grand_egal' => 'La valeur doit être supérieure ou égale au champ "@nom_champ@"',
        'erreur_comparaison_petit' => 'La valeur doit être inférieure au champ "@nom_champ@"',
        'erreur_comparaison_petit_egal' => 'La valeur doit être inférieure ou égale au champ "@nom_champ@"',
-       'erreur_couleur' => 'Le code couleur n\'est pas valide.',
-       'erreur_date' => 'La date n\'est pas valide.',
-       'erreur_date_format' => 'Le format de la date n\'est pas accepté.',
+       'erreur_couleur' => 'Le code couleur nest pas valide.',
+       'erreur_date' => 'La date nest pas valide.',
+       'erreur_date_format' => 'Le format de la date nest pas accepté.',
        'erreur_decimal' => 'La valeur doit être un nombre décimal.',
        'erreur_decimal_nb_decimales' => 'Le nombre ne doit pas avoir plus de @nb_decimales@ chiffres après la virgule.',
-       'erreur_email' => 'L\'adresse de courriel <em>@email@</em> n\'a pas un format valide.',
-       'erreur_email_nondispo' => 'L\'adresse de courriel <em>@email@</em> est déjà utilisée.',
+       'erreur_email' => 'L’adresse de courriel <em>@email@</em> n’a pas un format valide.',
+       'erreur_email_nondispo' => 'Ladresse de courriel <em>@email@</em> est déjà utilisée.',
        'erreur_entier' => 'La valeur doit être un entier.',
        'erreur_entier_entre' => 'La valeur doit être comprise entre @min@ et @max@.',
        'erreur_entier_max' => 'La valeur doit être inférieure à @max@.',
        'erreur_entier_min' => 'La valeur doit être supérieure à @min@.',
        'erreur_heure' => 'L’horaire indiqué n’existe pas.',
        'erreur_heure_format' => 'Le format de l’heure n’est pas accepté.',
-       'erreur_id_document' => 'Cet identifiant de document n\'est pas valide.',
-       'erreur_inconnue_generique' => 'Le format n\'est pas correct.',
-       'erreur_isbn' => 'Le numéro ISBN n\'est pas valide (ex: 978-2-1234-5680-3 ou 2-1234-5680-X)',
+       'erreur_id_document' => 'Cet identifiant de document nest pas valide.',
+       'erreur_inconnue_generique' => 'Le format nest pas correct.',
+       'erreur_isbn' => 'Le numéro ISBN n’est pas valide (ex : 978-2-1234-5680-3 ou 2-1234-5680-X)',
        'erreur_isbn_13_X' => 'Un numéro ISBN-13 ne peut pas se terminer par X.',
        'erreur_isbn_G' => 'Le premier segment doit être égal à 978 ou 979.',
        'erreur_isbn_nb_caracteres' => 'Le numéro ISBN doit comprendre 10 ou 13 caractères, sans compter les tirets (actuellement @nb@).',
        'erreur_isbn_nb_segments' => 'Le numéro ISBN doit comprendre 4 ou 5 segments (actuellement @nb@).',
        'erreur_isbn_segment' => 'Le segment "@segment@" comprend @nb@ chiffre(s) en trop.',
        'erreur_isbn_segment_lettre' => 'Le segment "@segment@" ne doit pas contenir de lettre.',
-       'erreur_numerique' => 'Le format du nombre n\'est pas valide.',
-       'erreur_regex' => 'Le format de la chaîne n\'est pas valide.',
-       'erreur_siren' => 'Le numéro de SIREN n\'est pas valide.',
-       'erreur_siret' => 'Le numéro de SIRET n\'est pas valide.',
+       'erreur_numerique' => 'Le format du nombre nest pas valide.',
+       'erreur_regex' => 'Le format de la chaîne nest pas valide.',
+       'erreur_siren' => 'Le numéro de SIREN nest pas valide.',
+       'erreur_siret' => 'Le numéro de SIRET nest pas valide.',
        'erreur_taille_egal' => 'La valeur doit comprendre exactement @egal@ caractères (actuellement @nb@).',
        'erreur_taille_entre' => 'La valeur doit comprendre entre @min@ et @max@ caractères (actuellement @nb@).',
        'erreur_taille_max' => 'La valeur doit comprendre au maximum @max@ caractères (actuellement @nb@).',
        'erreur_taille_min' => 'La valeur doit comprendre au minimum @min@ caractères (actuellement @nb@).',
-       'erreur_telephone' => 'Le numéro n\'est pas valide.',
-       'erreur_url' => 'L\'adresse <em>@url@</em> n\'est pas valide.',
-       'erreur_url_protocole' => 'L\'adresse saisie <em>(@url@)</em> doit commencer par @protocole@',
-       'erreur_url_protocole_exact' => 'L\'adresse saisie <em>(@url@)</em> ne commence pas par un protocole valide (http:// par exemple)',
+       'erreur_telephone' => 'Le numéro nest pas valide.',
+       'erreur_url' => 'L’adresse <em>@url@</em> n’est pas valide.',
+       'erreur_url_protocole' => 'Ladresse saisie <em>(@url@)</em> doit commencer par @protocole@',
+       'erreur_url_protocole_exact' => 'Ladresse saisie <em>(@url@)</em> ne commence pas par un protocole valide (http:// par exemple)',
 
        // N
        'normaliser_option_date' => 'Normaliser la date ?',
        'normaliser_option_date_aucune' => 'Non',
-       'normaliser_option_date_en_datetime' => 'Au format «Datetime» (pour SQL)',
+       'normaliser_option_date_en_datetime' => 'Au format « Datetime » (pour SQL)',
 
        // O
-       'option_couleur_normaliser_label' => 'Normaliser le code couleur ?',
+       'option_couleur_normaliser_label' => 'Normaliser le code couleur ?',
        'option_couleur_type_hexa' => 'Code couleur au format héxadécimal',
        'option_couleur_type_label' => 'Type de vérification à effectuer',
        'option_decimal_nb_decimales_label' => 'Nombre de décimales après la virgule',
        'option_email_disponible_label' => 'Adresse disponible',
-       'option_email_disponible_label_case' => 'Vérifier que l\'adresse n\'est pas déjà utilisée par un utilisateur',
+       'option_email_disponible_label_case' => 'Vérifier que l’adresse n’est pas déjà utilisée par un utilisateur',
        'option_email_mode_5322' => 'Vérification la plus conforme aux standards disponibles',
        'option_email_mode_label' => 'Mode de vérification des courriels',
        'option_email_mode_normal' => 'Vérification normale de SPIP',
@@ -67,22 +67,22 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'option_entier_max_label' => 'Valeur maximum',
        'option_entier_min_label' => 'Valeur minimum',
        'option_regex_modele_label' => 'La valeur doit correspondre au masque suivant',
-       'option_siren_siret_mode_label' => 'Que voulez-vous vérifier ?',
+       'option_siren_siret_mode_label' => 'Que voulez-vous vérifier ?',
        'option_siren_siret_mode_siren' => 'le SIREN',
        'option_siren_siret_mode_siret' => 'le SIRET',
        'option_taille_max_label' => 'Taille maximum',
        'option_taille_min_label' => 'Taille minimum',
-       'option_url_mode_complet' => 'Vérification complète de l\'url',
+       'option_url_mode_complet' => 'Vérification complète de lurl',
        'option_url_mode_label' => 'Mode de vérification des urls',
-       'option_url_mode_php_filter' => 'Vérification complète de l\'url via le filtre FILTER_VALIDATE_URL de php',
-       'option_url_mode_protocole_seul' => 'Vérification uniquement de la présence d\'un protocole',
+       'option_url_mode_php_filter' => 'Vérification complète de lurl via le filtre FILTER_VALIDATE_URL de php',
+       'option_url_mode_protocole_seul' => 'Vérification uniquement de la présence dun protocole',
        'option_url_protocole_label' => 'Nom du protocole à vérifier',
        'option_url_type_protocole_exact' => 'Saisir un protocole ci-dessous :',
-       'option_url_type_protocole_ftp' => 'Protocoles ftp : ftp ou sftp',
+       'option_url_type_protocole_ftp' => 'Protocoles ftp: ftp ou sftp',
        'option_url_type_protocole_label' => 'Type de protocole à vérifier',
-       'option_url_type_protocole_mail' => 'Protocoles mail : imap, pop3 ou smtp',
+       'option_url_type_protocole_mail' => 'Protocoles mail : imap, pop3 ou smtp',
        'option_url_type_protocole_tous' => 'Tous protocoles acceptés',
-       'option_url_type_protocole_web' => 'Protocoles web : http ou https',
+       'option_url_type_protocole_web' => 'Protocoles web : http ou https',
 
        // T
        'type_couleur' => 'Couleur',
@@ -92,13 +92,13 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'type_decimal' => 'Nombre décimal',
        'type_decimal_description' => 'Vérifie que la valeur est un nombre décimal, avec la possibilité de restreindre entre deux valeurs et de préciser le nombre de décimales après la virgule.',
        'type_email' => 'Adresse de courriel',
-       'type_email_description' => 'Vérifie que l\'adresse de courriel a un format correct.',
-       'type_email_disponible' => 'Disponibilité d\'une adresse de courriel',
-       'type_email_disponible_description' => 'Vérifie que l\'adresse de courriel n\'est pas déjà utilisé par un autre utilisateur du système.',
+       'type_email_description' => 'Vérifie que ladresse de courriel a un format correct.',
+       'type_email_disponible' => 'Disponibilité dune adresse de courriel',
+       'type_email_disponible_description' => 'Vérifie que l’adresse de courriel n’est pas déjà utilisé par un autre utilisateur du système.',
        'type_entier' => 'Nombre entier',
        'type_entier_description' => 'Vérifie que la valeur est un entier, avec la possibilité de restreindre entre deux valeurs.',
        'type_regex' => 'Expression régulière',
-       'type_regex_description' => 'Vérifie que la valeur correspond au masque demandé. Pour l\'utilisation des masques, reportez-vous à <a href="http://fr2.php.net/manual/fr/reference.pcre.pattern.syntax.php">l\'aide en ligne de PHP</a>.',
+       'type_regex_description' => 'Vérifie que la valeur correspond au masque demandé. Pour l’utilisation des masques, reportez-vous à <a href="http://fr2.php.net/manual/fr/reference.pcre.pattern.syntax.php">l’aide en ligne de PHP</a>.',
        'type_siren_siret' => 'SIREN ou SIRET',
        'type_siren_siret_description' => 'Vérifie que la valeur est un numéro valide du <a href="http://fr.wikipedia.org/wiki/SIREN">Système d’Identification du Répertoire des ENtreprises</a> français.',
        'type_taille' => 'Taille',
@@ -106,7 +106,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'type_telephone' => 'Numéro de téléphone',
        'type_telephone_description' => 'Vérifie que le numéro de téléphone correspond à un schéma reconnu.',
        'type_url' => 'URL',
-       'type_url_description' => 'Vérifie que l\'url correspond à un schéma reconnu.'
+       'type_url_description' => 'Vérifie que lurl correspond à un schéma reconnu.'
 );
 
 ?>
index 3b02bc9..a847061 100644 (file)
@@ -9,59 +9,59 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // E
        'erreur_code_postal' => 'Ce code postal est incorrect.',
-       'erreur_comparaison_egal' => 'La valeur doit être égale au champ "@nom_champ@"', # NEW
-       'erreur_comparaison_egal_type' => 'La valeur doit être égale et de même type que le champ "@nom_champ@"', # NEW
-       'erreur_comparaison_grand' => 'La valeur doit être supérieure au champ "@nom_champ@"', # NEW
-       'erreur_comparaison_grand_egal' => 'La valeur doit être supérieure ou égale au champ "@nom_champ@"', # NEW
-       'erreur_comparaison_petit' => 'La valeur doit être inférieure au champ "@nom_champ@"', # NEW
-       'erreur_comparaison_petit_egal' => 'La valeur doit être inférieure ou égale au champ "@nom_champ@"', # NEW
-       'erreur_couleur' => 'Le code couleur n\'est pas valide.', # NEW
-       'erreur_date' => 'La date n\'est pas valide.',
-       'erreur_date_format' => 'Le format de la date n\'est pas accepté.',
+       'erreur_comparaison_egal' => 'La valeur doit être égale au champ "@nom_champ@"',
+       'erreur_comparaison_egal_type' => 'La valeur doit être égale et de même type que le champ "@nom_champ@"',
+       'erreur_comparaison_grand' => 'La valeur doit être supérieure au champ "@nom_champ@"',
+       'erreur_comparaison_grand_egal' => 'La valeur doit être supérieure ou égale au champ "@nom_champ@"',
+       'erreur_comparaison_petit' => 'La valeur doit être inférieure au champ "@nom_champ@"',
+       'erreur_comparaison_petit_egal' => 'La valeur doit être inférieure ou égale au champ "@nom_champ@"',
+       'erreur_couleur' => 'Le code couleur n’est pas valide.',
+       'erreur_date' => 'La date nest pas valide.',
+       'erreur_date_format' => 'Le format de la date nest pas accepté.',
        'erreur_decimal' => 'La valeur doit être un nombre décimal.',
        'erreur_decimal_nb_decimales' => 'Le nombre ne doit pas avoir plus de @nb_decimales@ chiffres après la virgule.',
-       'erreur_email' => '@email@</em> n\'a pas un format valide.',
-       'erreur_email_nondispo' => 'L\'adresse de courriel <em>@email@</em> est déjà utilisée.',
+       'erreur_email' => '@email@</em> na pas un format valide.',
+       'erreur_email_nondispo' => 'Ladresse de courriel <em>@email@</em> est déjà utilisée.',
        'erreur_entier' => 'La valeur doit être un entier.',
        'erreur_entier_entre' => 'La valeur doit être comprise entre @min@ et @max@.',
        'erreur_entier_max' => 'La valeur doit être inférieure à @max@.',
        'erreur_entier_min' => 'La valeur doit être supérieure à @min@.',
-       'erreur_heure' => 'L’horaire indiquée n’existe pas.', # NEW
-       'erreur_heure_format' => 'Le format de l’heure n’est pas accepté.', # NEW
-       'erreur_id_document' => 'Cet identifiant de document n\'est pas valide.',
-       'erreur_inconnue_generique' => 'Le format n\'est pas correct.', # NEW
-       'erreur_isbn' => 'Le numéro ISBN n\'est pas valide (ex: 978-2-1234-5680-3 ou 2-1234-5680-X)', # NEW
-       'erreur_isbn_13_X' => 'Un numéro ISBN-13 ne peut pas se terminer par X.', # NEW
-       'erreur_isbn_G' => 'Le premier segment doit être égal à 978 ou 979.', # NEW
-       'erreur_isbn_nb_caracteres' => 'Le numéro ISBN doit comprendre 10 ou 13 caractères, sans compter les tirets (actuellement @nb@).', # NEW
-       'erreur_isbn_nb_segments' => 'Le numéro ISBN doit comprendre 4 ou 5 segments (actuellement @nb@).', # NEW
-       'erreur_isbn_segment' => 'Le segment "@segment@" comprend @nb@ chiffre(s) en trop.', # NEW
-       'erreur_isbn_segment_lettre' => 'Le segment "@segment@" ne doit pas contenir de lettre.', # NEW
-       'erreur_numerique' => 'Le format du nombre n\'est pas valide.',
-       'erreur_regex' => 'Le format de la chaîne n\'est pas valide.',
-       'erreur_siren' => 'Le numéro de SIREN n\'est pas valide.',
-       'erreur_siret' => 'Le numéro de SIRET n\'est pas valide.',
-       'erreur_taille_egal' => 'La valeur doit comprendre exactement @egal@ caractères.', # MODIF
-       'erreur_taille_entre' => 'La valeur doit comprendre entre @min@ et @max@ caractères.', # MODIF
-       'erreur_taille_max' => 'La valeur doit comprendre au maximum @max@ caractères.', # MODIF
-       'erreur_taille_min' => 'La valeur doit comprendre au minimum @min@ caractères.', # MODIF
-       'erreur_telephone' => 'Le numéro n\'est pas valide.', # MODIF
-       'erreur_url' => 'L\'adresse <em>@url@</em> n\'est pas valide.',
-       'erreur_url_protocole' => 'L\'adresse saisie <em>(@url@)</em> doit commencer par @protocole@',
-       'erreur_url_protocole_exact' => 'L\'adresse saisie <em>(@url@)</em> ne commence pas par un protocole valide (http:// par exemple)',
+       'erreur_heure' => 'L’horaire indiquée n’existe pas.',
+       'erreur_heure_format' => 'Le format de l’heure n’est pas accepté.',
+       'erreur_id_document' => 'Cet identifiant de document nest pas valide.',
+       'erreur_inconnue_generique' => 'Le format n’est pas correct.',
+       'erreur_isbn' => 'Le numéro ISBN n’est pas valide (ex : 978-2-1234-5680-3 ou 2-1234-5680-X)',
+       'erreur_isbn_13_X' => 'Un numéro ISBN-13 ne peut pas se terminer par X.',
+       'erreur_isbn_G' => 'Le premier segment doit être égal à 978 ou 979.',
+       'erreur_isbn_nb_caracteres' => 'Le numéro ISBN doit comprendre 10 ou 13 caractères, sans compter les tirets (actuellement @nb@).',
+       'erreur_isbn_nb_segments' => 'Le numéro ISBN doit comprendre 4 ou 5 segments (actuellement @nb@).',
+       'erreur_isbn_segment' => 'Le segment "@segment@" comprend @nb@ chiffre(s) en trop.',
+       'erreur_isbn_segment_lettre' => 'Le segment "@segment@" ne doit pas contenir de lettre.',
+       'erreur_numerique' => 'Le format du nombre nest pas valide.',
+       'erreur_regex' => 'Le format de la chaîne nest pas valide.',
+       'erreur_siren' => 'Le numéro de SIREN nest pas valide.',
+       'erreur_siret' => 'Le numéro de SIRET nest pas valide.',
+       'erreur_taille_egal' => 'La valeur doit comprendre exactement @egal@ caractères (actuellement @nb@).',
+       'erreur_taille_entre' => 'La valeur doit comprendre entre @min@ et @max@ caractères (actuellement @nb@).',
+       'erreur_taille_max' => 'La valeur doit comprendre au maximum @max@ caractères (actuellement @nb@).',
+       'erreur_taille_min' => 'La valeur doit comprendre au minimum @min@ caractères (actuellement @nb@).',
+       'erreur_telephone' => 'Le numéro n’est pas valide.',
+       'erreur_url' => 'L’adresse <em>@url@</em> n’est pas valide.',
+       'erreur_url_protocole' => 'Ladresse saisie <em>(@url@)</em> doit commencer par @protocole@',
+       'erreur_url_protocole_exact' => 'Ladresse saisie <em>(@url@)</em> ne commence pas par un protocole valide (http:// par exemple)',
 
        // N
-       'normaliser_option_date' => 'Normaliser la date ?', # NEW
-       'normaliser_option_date_aucune' => 'Non', # NEW
-       'normaliser_option_date_en_datetime' => 'Au format «Datetime» (pour SQL)', # NEW
+       'normaliser_option_date' => 'Normaliser la date ?',
+       'normaliser_option_date_aucune' => 'Non',
+       'normaliser_option_date_en_datetime' => 'Au format « Datetime » (pour SQL)',
 
        // O
-       'option_couleur_normaliser_label' => 'Normaliser le code couleur ?', # NEW
-       'option_couleur_type_hexa' => 'Code couleur au format héxadécimal', # NEW
-       'option_couleur_type_label' => 'Type de vérification à effectuer', # NEW
+       'option_couleur_normaliser_label' => 'Normaliser le code couleur ?',
+       'option_couleur_type_hexa' => 'Code couleur au format héxadécimal',
+       'option_couleur_type_label' => 'Type de vérification à effectuer',
        'option_decimal_nb_decimales_label' => 'Nombre de décimales après la virgule',
        'option_email_disponible_label' => 'Adresse disponible',
-       'option_email_disponible_label_case' => 'Vérifier que l\'adresse n\'est pas déjà utilisée par un utilisateur',
+       'option_email_disponible_label_case' => 'Vérifier que l’adresse n’est pas déjà utilisée par un utilisateur',
        'option_email_mode_5322' => 'Vérification la plus conforme aux standards disponibles',
        'option_email_mode_label' => 'Mode de vérification des courriels',
        'option_email_mode_normal' => 'Vérification normale de SPIP',
@@ -69,38 +69,38 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'option_entier_max_label' => 'Valeur maximum',
        'option_entier_min_label' => 'Valeur minimum',
        'option_regex_modele_label' => 'La valeur doit correspondre au masque suivant',
-       'option_siren_siret_mode_label' => 'Que veux-tu vérifier ?', # MODIF
+       'option_siren_siret_mode_label' => 'Que veux-tu vérifier ?',
        'option_siren_siret_mode_siren' => 'le SIREN',
        'option_siren_siret_mode_siret' => 'le SIRET',
        'option_taille_max_label' => 'Taille maximum',
        'option_taille_min_label' => 'Taille minimum',
-       'option_url_mode_complet' => 'Vérification complète de l\'url',
+       'option_url_mode_complet' => 'Vérification complète de lurl',
        'option_url_mode_label' => 'Mode de vérification des urls',
-       'option_url_mode_php_filter' => 'Vérification complète de l\'url via le filtre FILTER_VALIDATE_URL de php',
-       'option_url_mode_protocole_seul' => 'Vérification uniquement de la présence d\'un protocole', # MODIF
+       'option_url_mode_php_filter' => 'Vérification complète de lurl via le filtre FILTER_VALIDATE_URL de php',
+       'option_url_mode_protocole_seul' => 'Vérification uniquement de la présence d’un protocole',
        'option_url_protocole_label' => 'Nom du protocole à vérifier',
        'option_url_type_protocole_exact' => 'Saisir un protocole ci-dessous :',
-       'option_url_type_protocole_ftp' => 'Protocoles ftp : ftp ou sftp',
+       'option_url_type_protocole_ftp' => 'Protocoles ftp: ftp ou sftp',
        'option_url_type_protocole_label' => 'Type de protocole à vérifier',
-       'option_url_type_protocole_mail' => 'Protocoles mail : imap, pop3 ou smtp',
+       'option_url_type_protocole_mail' => 'Protocoles mail : imap, pop3 ou smtp',
        'option_url_type_protocole_tous' => 'Tous protocoles acceptés',
-       'option_url_type_protocole_web' => 'Protocoles web : http ou https',
+       'option_url_type_protocole_web' => 'Protocoles web : http ou https',
 
        // T
-       'type_couleur' => 'Couleur', # NEW
-       'type_couleur_description' => 'Vérifie que la valeur est un code couleur.', # NEW
+       'type_couleur' => 'Couleur',
+       'type_couleur_description' => 'Vérifie que la valeur est un code couleur.',
        'type_date' => 'Date',
        'type_date_description' => 'Vérifie que la valeur est une date au format JJ/MM/AAAA. Le séparateur est libre (".", "/", etc).',
        'type_decimal' => 'Nombre décimal',
        'type_decimal_description' => 'Vérifie que la valeur est un nombre décimal, avec la possibilité de restreindre entre deux valeurs et de préciser le nombre de décimales après la virgule.',
        'type_email' => 'Adresse de courriel',
-       'type_email_description' => 'Vérifie que l\'adresse de courriel a un format correct.',
-       'type_email_disponible' => 'Disponibilité d\'une adresse de courriel',
-       'type_email_disponible_description' => 'Vérifie que l\'adresse de courriel n\'est pas déjà utilisé par un autre utilisateur du système.',
+       'type_email_description' => 'Vérifie que ladresse de courriel a un format correct.',
+       'type_email_disponible' => 'Disponibilité dune adresse de courriel',
+       'type_email_disponible_description' => 'Vérifie que l’adresse de courriel n’est pas déjà utilisé par un autre utilisateur du système.',
        'type_entier' => 'Nombre entier',
        'type_entier_description' => 'Vérifie que la valeur est un entier, avec la possibilité de restreindre entre deux valeurs.',
        'type_regex' => 'Expression régulière',
-       'type_regex_description' => 'Vérifie que la valeur correspond au masque demandé. Pour l\'utilisation des masques, reporte-toi à <a href="http://fr2.php.net/manual/fr/reference.pcre.pattern.syntax.php">l\'aide en ligne de PHP</a>.', # MODIF
+       'type_regex_description' => 'Vérifie que la valeur correspond au masque demandé. Pour l’utilisation des masques, reporte-toi à <a href="http://fr2.php.net/manual/fr/reference.pcre.pattern.syntax.php">l’aide en ligne de PHP</a>.',
        'type_siren_siret' => 'SIREN ou SIRET',
        'type_siren_siret_description' => 'Vérifie que la valeur est un numéro valide du <a href="http://fr.wikipedia.org/wiki/SIREN">Système d’Identification du Répertoire des ENtreprises</a> français.',
        'type_taille' => 'Taille',
@@ -108,7 +108,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'type_telephone' => 'Numéro de téléphone',
        'type_telephone_description' => 'Vérifie que le numéro de téléphone correspond à un schéma reconnu.',
        'type_url' => 'URL',
-       'type_url_description' => 'Vérifie que l\'url correspond à un schéma reconnu.'
+       'type_url_description' => 'Vérifie que lurl correspond à un schéma reconnu.'
 );
 
 ?>
index 18cdd0c..1e21a26 100644 (file)
@@ -9,34 +9,17 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // E
        'erreur_code_postal' => 'Il CAP non è corretto.',
-       'erreur_comparaison_egal' => 'La valeur doit être égale au champ "@nom_champ@"', # NEW
-       'erreur_comparaison_egal_type' => 'La valeur doit être égale et de même type que le champ "@nom_champ@"', # NEW
-       'erreur_comparaison_grand' => 'La valeur doit être supérieure au champ "@nom_champ@"', # NEW
-       'erreur_comparaison_grand_egal' => 'La valeur doit être supérieure ou égale au champ "@nom_champ@"', # NEW
-       'erreur_comparaison_petit' => 'La valeur doit être inférieure au champ "@nom_champ@"', # NEW
-       'erreur_comparaison_petit_egal' => 'La valeur doit être inférieure ou égale au champ "@nom_champ@"', # NEW
-       'erreur_couleur' => 'Le code couleur n\'est pas valide.', # NEW
        'erreur_date' => 'La data non è valida.',
        'erreur_date_format' => 'Il formato della data non è corretto.',
        'erreur_decimal' => 'Il valore deve essere un numero decimale.',
        'erreur_decimal_nb_decimales' => 'Il numero non deve avere più di @nb_decimales@ cifre dopo la virgola.',
-       'erreur_email' => 'L\'indirizzo di posta <em>@email@</em> non ha un formato valido.',
-       'erreur_email_nondispo' => 'L\'indirizzo di posta <em>@email@</em> è già utilizzato.',
+       'erreur_email' => 'Lindirizzo di posta <em>@email@</em> non ha un formato valido.',
+       'erreur_email_nondispo' => 'Lindirizzo di posta <em>@email@</em> è già utilizzato.',
        'erreur_entier' => 'Il valore deve essere un numero intero.',
        'erreur_entier_entre' => 'Il valore deve essere compreso tra @min@ e @max@.',
        'erreur_entier_max' => 'Il valore deve essere minore di @max@.',
        'erreur_entier_min' => 'Il valore deve essere maggiore di @min@.',
-       'erreur_heure' => 'L’horaire indiquée n’existe pas.', # NEW
-       'erreur_heure_format' => 'Le format de l’heure n’est pas accepté.', # NEW
-       'erreur_id_document' => 'L\'id del documento non è valido.',
-       'erreur_inconnue_generique' => 'Le format n\'est pas correct.', # NEW
-       'erreur_isbn' => 'Le numéro ISBN n\'est pas valide (ex: 978-2-1234-5680-3 ou 2-1234-5680-X)', # NEW
-       'erreur_isbn_13_X' => 'Un numéro ISBN-13 ne peut pas se terminer par X.', # NEW
-       'erreur_isbn_G' => 'Le premier segment doit être égal à 978 ou 979.', # NEW
-       'erreur_isbn_nb_caracteres' => 'Le numéro ISBN doit comprendre 10 ou 13 caractères, sans compter les tirets (actuellement @nb@).', # NEW
-       'erreur_isbn_nb_segments' => 'Le numéro ISBN doit comprendre 4 ou 5 segments (actuellement @nb@).', # NEW
-       'erreur_isbn_segment' => 'Le segment "@segment@" comprend @nb@ chiffre(s) en trop.', # NEW
-       'erreur_isbn_segment_lettre' => 'Le segment "@segment@" ne doit pas contenir de lettre.', # NEW
+       'erreur_id_document' => 'L’id del documento non è valido.',
        'erreur_numerique' => 'Il formato del numero non è valido.',
        'erreur_regex' => 'Il formato non è valido.',
        'erreur_siren' => 'Il numero di SIREN non è valido.',
@@ -46,22 +29,14 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'erreur_taille_max' => 'Il valore deve avere al massimo @max@ caratteri.', # MODIF
        'erreur_taille_min' => 'Il valore deve avere minimo @min@ caratteri.', # MODIF
        'erreur_telephone' => 'Il numero non è valido.',
-       'erreur_url' => 'L\'indirizzo <em>@url@</em> non è valido.',
-       'erreur_url_protocole' => 'L\'indirizzo inserito <em>(@url@)</em> deve cominciare con @protocole@',
-       'erreur_url_protocole_exact' => 'L\'indirizzo inserito <em>(@url@)</em> non comincia con un protocollo valido (http:// ad esempio)',
-
-       // N
-       'normaliser_option_date' => 'Normaliser la date ?', # NEW
-       'normaliser_option_date_aucune' => 'Non', # NEW
-       'normaliser_option_date_en_datetime' => 'Au format «Datetime» (pour SQL)', # NEW
+       'erreur_url' => 'L’indirizzo <em>@url@</em> non è valido.',
+       'erreur_url_protocole' => 'L’indirizzo inserito <em>(@url@)</em> deve cominciare con @protocole@',
+       'erreur_url_protocole_exact' => 'L’indirizzo inserito <em>(@url@)</em> non comincia con un protocollo valido (http:// ad esempio)',
 
        // O
-       'option_couleur_normaliser_label' => 'Normaliser le code couleur ?', # NEW
-       'option_couleur_type_hexa' => 'Code couleur au format héxadécimal', # NEW
-       'option_couleur_type_label' => 'Type de vérification à effectuer', # NEW
        'option_decimal_nb_decimales_label' => 'Numero di decimali dopo la virgola',
        'option_email_disponible_label' => 'Indirizzo disponibile',
-       'option_email_disponible_label_case' => 'Verifica che l\'indirizzo non sia già stato utilizzato da un utente',
+       'option_email_disponible_label_case' => 'Verifica che lindirizzo non sia già stato utilizzato da un utente',
        'option_email_mode_5322' => 'Verifica rispetto agli standard disponibili',
        'option_email_mode_label' => 'Modalità di verifica delle email',
        'option_email_mode_normal' => 'Verifica normale di SPIP',
@@ -74,9 +49,9 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'option_siren_siret_mode_siret' => 'il SIRET',
        'option_taille_max_label' => 'Dimensione massima',
        'option_taille_min_label' => 'Dimensione minima',
-       'option_url_mode_complet' => 'Verifica completa dell\'url',
-       'option_url_mode_label' => 'Modalità di verifica dell\'url',
-       'option_url_mode_php_filter' => 'Verifica completa dell\'url grazie al filtro FILTER_VALIDATE_URL di php',
+       'option_url_mode_complet' => 'Verifica completa dellurl',
+       'option_url_mode_label' => 'Modalità di verifica dellurl',
+       'option_url_mode_php_filter' => 'Verifica completa dellurl grazie al filtro FILTER_VALIDATE_URL di php',
        'option_url_mode_protocole_seul' => 'Verifica solo la presenza di un protocollo',
        'option_url_protocole_label' => 'Nome del protocollo da verificare',
        'option_url_type_protocole_exact' => 'Inserisci un protocollo qui sotto:',
@@ -87,20 +62,18 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'option_url_type_protocole_web' => 'Protocolli web: http o https',
 
        // T
-       'type_couleur' => 'Couleur', # NEW
-       'type_couleur_description' => 'Vérifie que la valeur est un code couleur.', # NEW
        'type_date' => 'Data',
        'type_date_description' => 'Verifica che il valore sia una data nel formato GG/MM/AAAA. Il separatore è libero (";", "/", ecc).',
        'type_decimal' => 'Numero decimale',
        'type_decimal_description' => 'Verifica che il valore sia un numero decimale, con la possibilità di restringerlo ad un intervallo tra due valori e di specificare il numero di cifre decimali dopo la virgola.',
        'type_email' => 'Indirizzo di posta elettronica',
-       'type_email_description' => 'Verifica che l\'indirizzo di posta abbia un formato corretto.',
+       'type_email_description' => 'Verifica che lindirizzo di posta abbia un formato corretto.',
        'type_email_disponible' => 'Disponibilità di un indirizzo di posta elettronica',
-       'type_email_disponible_description' => 'Verifica che l\'indirizzo di posta elettronica non sia già utilizzato da un altro utente del sistema.',
+       'type_email_disponible_description' => 'Verifica che lindirizzo di posta elettronica non sia già utilizzato da un altro utente del sistema.',
        'type_entier' => 'Numero intero',
        'type_entier_description' => 'Verifica che il valore sia un numero intero, con la possibilità di restringerlo ad un intervallo tra due valori.',
        'type_regex' => 'Espressione regolare',
-       'type_regex_description' => 'Verifica che il valore corrisponda alla maschera richiesta. Per l\'utilizzo delle maschere, riferisciti all\'<a href="http://it.php.net/manual/en/reference.pcre.pattern.syntax.php">aiuto in linea di PHP</a>.',
+       'type_regex_description' => 'Verifica che il valore corrisponda alla maschera richiesta. Per l’utilizzo delle maschere, riferisciti all’<a href="http://it.php.net/manual/en/reference.pcre.pattern.syntax.php">aiuto in linea di PHP</a>.',
        'type_siren_siret' => 'SIREN o SIRET',
        'type_siren_siret_description' => 'Verifica che il valore sia un numero valido di <a href="http://fr.wikipedia.org/wiki/SIREN">Système d’Identification du Répertoire des ENtreprises</a> francese.',
        'type_taille' => 'Dimensione',
@@ -108,7 +81,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'type_telephone' => 'Numero telefonico',
        'type_telephone_description' => 'Verifica che il numero telefonico corrisponda ad uno schema riconosciuto.',
        'type_url' => 'URL',
-       'type_url_description' => 'Verifica che l\'url corrisponda ad uno schema riconosciuto.'
+       'type_url_description' => 'Verifica che lurl corrisponda ad uno schema riconosciuto.'
 );
 
 ?>
index d081291..8f1f555 100644 (file)
@@ -9,13 +9,6 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 
        // E
        'erreur_code_postal' => 'Este Cep está incorreto.',
-       'erreur_comparaison_egal' => 'La valeur doit être égale au champ "@nom_champ@"', # NEW
-       'erreur_comparaison_egal_type' => 'La valeur doit être égale et de même type que le champ "@nom_champ@"', # NEW
-       'erreur_comparaison_grand' => 'La valeur doit être supérieure au champ "@nom_champ@"', # NEW
-       'erreur_comparaison_grand_egal' => 'La valeur doit être supérieure ou égale au champ "@nom_champ@"', # NEW
-       'erreur_comparaison_petit' => 'La valeur doit être inférieure au champ "@nom_champ@"', # NEW
-       'erreur_comparaison_petit_egal' => 'La valeur doit être inférieure ou égale au champ "@nom_champ@"', # NEW
-       'erreur_couleur' => 'Le code couleur n\'est pas valide.', # NEW
        'erreur_date' => 'A data não é válida.',
        'erreur_date_format' => 'O formato da data não é aceitável.',
        'erreur_decimal' => 'O valor deve ser um número decimal.',
@@ -26,17 +19,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'erreur_entier_entre' => 'O valor dever ser entre @min@ e @max@.',
        'erreur_entier_max' => 'O valor deve ser inferior a @max@.',
        'erreur_entier_min' => 'O valor deve ser superior a @min@.',
-       'erreur_heure' => 'L’horaire indiquée n’existe pas.', # NEW
-       'erreur_heure_format' => 'Le format de l’heure n’est pas accepté.', # NEW
        'erreur_id_document' => 'Esta extensão de documento não é válida.',
-       'erreur_inconnue_generique' => 'Le format n\'est pas correct.', # NEW
-       'erreur_isbn' => 'Le numéro ISBN n\'est pas valide (ex: 978-2-1234-5680-3 ou 2-1234-5680-X)', # NEW
-       'erreur_isbn_13_X' => 'Un numéro ISBN-13 ne peut pas se terminer par X.', # NEW
-       'erreur_isbn_G' => 'Le premier segment doit être égal à 978 ou 979.', # NEW
-       'erreur_isbn_nb_caracteres' => 'Le numéro ISBN doit comprendre 10 ou 13 caractères, sans compter les tirets (actuellement @nb@).', # NEW
-       'erreur_isbn_nb_segments' => 'Le numéro ISBN doit comprendre 4 ou 5 segments (actuellement @nb@).', # NEW
-       'erreur_isbn_segment' => 'Le segment "@segment@" comprend @nb@ chiffre(s) en trop.', # NEW
-       'erreur_isbn_segment_lettre' => 'Le segment "@segment@" ne doit pas contenir de lettre.', # NEW
        'erreur_numerique' => 'O formato do número não é válido.',
        'erreur_regex' => 'O formato da expressão não é válido.',
        'erreur_siren' => 'O número SIREN não é válido.',
@@ -50,15 +33,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'erreur_url_protocole' => 'O endereço informado <em>(@url@)</em> deve começar com @protocole@',
        'erreur_url_protocole_exact' => 'O endereço informado <em>(@url@)</em> não começa com um protocolo válido (http:// por exemplo)',
 
-       // N
-       'normaliser_option_date' => 'Normaliser la date ?', # NEW
-       'normaliser_option_date_aucune' => 'Non', # NEW
-       'normaliser_option_date_en_datetime' => 'Au format «Datetime» (pour SQL)', # NEW
-
        // O
-       'option_couleur_normaliser_label' => 'Normaliser le code couleur ?', # NEW
-       'option_couleur_type_hexa' => 'Code couleur au format héxadécimal', # NEW
-       'option_couleur_type_label' => 'Type de vérification à effectuer', # NEW
        'option_decimal_nb_decimales_label' => 'Número de décimais depois da vírgula',
        'option_email_disponible_label' => 'Endereço disponível',
        'option_email_disponible_label_case' => 'Verificar se o endereço já não está sendo utilizado por um usuário',
@@ -87,8 +62,6 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'option_url_type_protocole_web' => 'Protocolos web: http ou https',
 
        // T
-       'type_couleur' => 'Couleur', # NEW
-       'type_couleur_description' => 'Vérifie que la valeur est un code couleur.', # NEW
        'type_date' => 'Data',
        'type_date_description' => 'Verifica se o valor é uma data no formato DD/MM/AAAA. O separador é livre (".", "/" etc).',
        'type_decimal' => 'Número decimal',
index 7f620a7..77a4376 100644 (file)
@@ -26,17 +26,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'erreur_entier_entre' => 'Значение должно быть между @min@ и @max@.',
        'erreur_entier_max' => 'Значение должно быть меньше @max@.',
        'erreur_entier_min' => 'Значение должно быть больше чем @min@.',
-       'erreur_heure' => 'L’horaire indiquée n’existe pas.', # NEW
-       'erreur_heure_format' => 'Le format de l’heure n’est pas accepté.', # NEW
        'erreur_id_document' => 'Ошибочный идентификатор документа.',
        'erreur_inconnue_generique' => 'Неправильный формат.',
-       'erreur_isbn' => 'Le numéro ISBN n\'est pas valide (ex: 978-2-1234-5680-3 ou 2-1234-5680-X)', # NEW
-       'erreur_isbn_13_X' => 'Un numéro ISBN-13 ne peut pas se terminer par X.', # NEW
-       'erreur_isbn_G' => 'Le premier segment doit être égal à 978 ou 979.', # NEW
-       'erreur_isbn_nb_caracteres' => 'Le numéro ISBN doit comprendre 10 ou 13 caractères, sans compter les tirets (actuellement @nb@).', # NEW
-       'erreur_isbn_nb_segments' => 'Le numéro ISBN doit comprendre 4 ou 5 segments (actuellement @nb@).', # NEW
-       'erreur_isbn_segment' => 'Le segment "@segment@" comprend @nb@ chiffre(s) en trop.', # NEW
-       'erreur_isbn_segment_lettre' => 'Le segment "@segment@" ne doit pas contenir de lettre.', # NEW
        'erreur_numerique' => 'Неправильный формат числа.',
        'erreur_regex' => 'Неправильно сформированный regexp.',
        'erreur_siren' => 'Значение SIREN ошибочно.',
index e035ddc..01304d2 100644 (file)
@@ -1,11 +1,11 @@
 <paquet\r
        prefix="verifier"\r
        categorie="outil"\r
-       version="1.0.3"\r
-       etat="test"\r
+       version="1.0.5"\r
+       etat="stable"\r
        compatibilite="[2.0.10;3.0.*]"\r
        logo="images/verifier-128.png"\r
-       documentation="http://www.spip-contrib.net/Verifier,1505"\r
+       documentation="http://contrib.spip.net/Verifier,1505"\r
 >\r
 \r
        <nom>API de v&#233;rification</nom>\r
index f6c9ee4..4aca752 100644 (file)
@@ -9,8 +9,8 @@
        <auteur>[Les Développements Durables->http://www.ldd.fr]</auteur>\r
        <icon>images/verifier-128.png</icon>\r
        <licence>GPL v3</licence>\r
-       <version>1.0.3</version>\r
-       <etat>test</etat>\r
+       <version>1.0.5</version>\r
+       <etat>stable</etat>\r
        <description>\r
                <multi>\r
                        [fr]Fournit une fonction unique <code>verifier($valeur, $type, $options, &$valeur_normalisee)</code> permettant de tester la validit&#233; d'une valeur.\r
@@ -18,7 +18,7 @@
                </multi>\r
        </description>\r
        <prefix>verifier</prefix>\r
-       <lien>http://www.spip-contrib.net/Verifier,1505</lien>\r
+       <lien>http://contrib.spip.net/Verifier,1505</lien>\r
        <pipeline>\r
                <nom>verifier</nom>\r
                <action></action>\r
index 3c5491d..83ba0ac 100644 (file)
@@ -1,10 +1,10 @@
 <svn_revision>
 <text_version>
 Origine: file:///home/svn/repository/spip-zone/_plugins_/verifier
-Revision: 73345
-Dernier commit: 2013-06-07 12:42:13 +0200 
+Revision: 84141
+Dernier commit: 2014-08-11 09:06:34 +0200 
 </text_version>
 <origine>file:///home/svn/repository/spip-zone/_plugins_/verifier</origine>
-<revision>73345</revision>
-<commit>2013-06-07 12:42:13 +0200 </commit>
+<revision>84141</revision>
+<commit>2014-08-11 09:06:34 +0200 </commit>
 </svn_revision>
\ No newline at end of file
index d4d081d..184efda 100644 (file)
@@ -105,8 +105,7 @@ function verifier_date_dist($valeur, $options=array(), &$valeur_normalisee=null)
 **/
 function normaliser_date_datetime_dist($valeur, $options, &$erreur) {
        $defaut = '0000-00-00 00:00:00';
-
-       if (!$valeur) {
+       if (!$valeur or $valeur==array('date'=>'','heure'=>'')) {
                return $defaut;
        }
 
index 5261bb2..2051e24 100644 (file)
@@ -21,18 +21,22 @@ function verifier_telephone_dist($valeur, $options=array()){
 
        // On accepte differentes notations, les points, les tirets, les espaces, les slashes
        $tel = preg_replace("#\.|/|-| #i",'',$valeur);
-       
-       if (preg_match("/^\+33/", $tel)) {
+
+       // Pour les prefixes, on accepte les notations +33 et 0033
+       $prefixe_FR = "/^(\+|00)33/";
+       $prefixe_ES = "/^(\+|00)34/";
+       $prefixe_CH = "/^(\+|00)41/";
+       if (preg_match($prefixe_FR, $tel)) {
                $options['pays'] = 'FR';
-               $tel = preg_replace('/^\+33/','0',$valeur);
+               $tel = preg_replace($prefixe_FR,'0',$tel);
        }
-       if (preg_match("/^\+34/", $tel)) {
+       if (preg_match($prefixe_ES, $tel)) {
                $options['pays'] = 'ES';
-               $tel = preg_replace('/^\+34/','',$valeur);
+               $tel = preg_replace($prefixe_ES,'',$tel);
        }
-       if (preg_match("/^\+41/", $tel)) {
+       if (preg_match($prefixe_CH, $tel)) {
                $options['pays'] = 'CH';
-               $tel = preg_replace('/^\+41/','0',$valeur);
+               $tel = preg_replace($prefixe_CH,'0',$tel);
        }
 
        switch($options['pays']){
@@ -46,8 +50,9 @@ function verifier_telephone_dist($valeur, $options=array()){
                        if (!preg_match("/^0[1-9][0-9]{8}$/",$tel)) return $erreur;
                default:
                        // On interdit les 000 etc. mais je pense qu'on peut faire plus malin
+                       // On interdit egalement les "numéros" tout en lettres
                        // TODO finaliser les numéros à la con
-                       if($tel == '0000000000') return $erreur;
+                       if(intval($tel) == 0) return $erreur;
                        break;
        }
        
index 66fdeb5..a5b9d6f 100644 (file)
@@ -1,4 +1,4 @@
 [(#SESSION{statut}|=={0minirezo}|oui)
 <ul class="menu-liste">
-       <li class="menu-entree"><a href="http://www.spip-contrib.net/?article3344" target="_blank"><:zpip:personaliser_nav:></a></li>
+       <li class="menu-entree"><a href="http://contrib.spip.net/?article3344" target="_blank"><:zpip:personaliser_nav:></a></li>
 </ul>]
index ac77b30..98532d8 100644 (file)
@@ -24,7 +24,7 @@
        <ul class="liste-items">
                <BOUCLE_documents_joints(DOCUMENTS) {id_article?}{id_rubrique?} {extension !IN gif,jpg,png} {vu=non}{par num titre, date}>[
                <li class="item">
-                       <strong><a href="(#URL_DOCUMENT)" title="<:bouton_telecharger:>" type="#MIME_TYPE">[(#TITRE|sinon{<:info_document:>})]</a></strong>
+                       <strong><a href="(#URL_DOCUMENT)" title="<:bouton_telecharger:>" type="#MIME_TYPE">[(#TITRE|sinon{[(#FICHIER|basename|couper{80})]})]</a></strong>
                        <span class="small">(<span>#TYPE_DOCUMENT[ &ndash; (#TAILLE|taille_en_octets)]</span>)</span>
                        #DESCRIPTIF
                ]</li>
index dc90c20..66db910 100644 (file)
@@ -4,12 +4,12 @@
        <auteur>Matthieu Marcillaud, C&#233;dric Morin, Romy T&#234;tue, Collectif SPIP</auteur>
        <icon>img/zpip-128.png</icon>
        <licence>GNU/GPL</licence>
-       <version>1.7.26</version>
+       <version>1.7.27</version>
        <etat>stable</etat>
        <description>
 Zpip est issu d'une fusion des projets Zesty et SPIP-Zen. Zpip-dist est la version de base de ce mod&#232;le de squelette, que vous pouvez utiliser telle quelle ou personnaliser et enrichir selon vos besoins.
 
-Plus qu'un squelette, Zpip est un exemple d'un syst&#232;me de squelette qui met en application les id&#233;es expos&#233;es dans [Mod&#232;le de squelette r&#233;utilisable->http://www.spip-contrib.net/Modele-de-squelette-reutilisable]. Il propose une organisation des squelettes visant &#224; le rendre :
+Plus qu'un squelette, Zpip est un exemple d'un syst&#232;me de squelette qui met en application les id&#233;es expos&#233;es dans [Mod&#232;le de squelette r&#233;utilisable->http://contrib.spip.net/Modele-de-squelette-reutilisable]. Il propose une organisation des squelettes visant &#224; le rendre :
 -* {{habillable}} par des th&#232;mes ind&#233;pendants du squelette
 -* {{maintenable}} dans le temps, par une duplication minimale du code
 -* {{rapidement d&#233;ployable}}, au prix d'un petit apprentissage initial sur son organisation
@@ -19,7 +19,7 @@ Zpip s'adresse aussi bien aux d&#233;butants qui veulent profiter d'une galerie
 Toute l'organisation et le fonctionnement de Zpip peuvent &#234;tre r&#233;utilis&#233;s pour construire de nouveaux squelettes qui b&#233;n&#233;ficieront des m&#234;mes avantages.
        </description>
        <prefix>Z</prefix>
-       <lien>http://www.spip-contrib.net/Le-Squelette-Zpip-dist</lien>
+       <lien>http://contrib.spip.net/Le-Squelette-Zpip-dist</lien>
        <fonctions>z_pipelines.php</fonctions>
        <options>z_options.php</options>
        <pipeline>
index 9fb1dfe..29cadaf 100644 (file)
@@ -1,10 +1,10 @@
 <svn_revision>
 <text_version>
 Origine: file:///home/svn/repository/spip-zone/_squelettes_/zpip-dist/branches/zpip_v1
-Revision: 80430
-Dernier commit: 2014-02-03 19:00:50 +0100 
+Revision: 84792
+Dernier commit: 2014-09-21 18:53:45 +0200 
 </text_version>
 <origine>file:///home/svn/repository/spip-zone/_squelettes_/zpip-dist/branches/zpip_v1</origine>
-<revision>80430</revision>
-<commit>2014-02-03 19:00:50 +0100 </commit>
+<revision>84792</revision>
+<commit>2014-09-21 18:53:45 +0200 </commit>
 </svn_revision>
\ No newline at end of file