diff --git a/.gitattributes b/.gitattributes index f0d0d9ad346d5b718f8d3e0fd98aaa8a567b9096..32c73825a1c41c972f60eeff0cb12eb62106d1a8 100644 --- a/.gitattributes +++ b/.gitattributes @@ -12,6 +12,369 @@ echanger/formulaire/forms.php -text echanger/formulaire/wcs.php -text echanger/formulaire/yaml.php -text exec/puce_statut_formulaires.php -text +/formidable.diff -text +formidable_1_0.orig/action/dupliquer_formulaire.php -text +formidable_1_0.orig/action/editer_formulaire.php -text +formidable_1_0.orig/action/exporter_formulaire.php -text +formidable_1_0.orig/action/exporter_formulaires_reponses.php -text +formidable_1_0.orig/action/instituer_formulaires_reponse.php -text +formidable_1_0.orig/action/supprimer_formulaire.php -text +formidable_1_0.orig/action/supprimer_formulaires_reponse.php -text +formidable_1_0.orig/base/formidable_tables.php -text +formidable_1_0.orig/css/formidable_analyse.css.html -text +formidable_1_0.orig/echanger/formulaire/forms.php -text +formidable_1_0.orig/echanger/formulaire/wcs.php -text +formidable_1_0.orig/echanger/formulaire/yaml.php -text +formidable_1_0.orig/exec/puce_statut_formulaires.php -text +formidable_1_0.orig/formidable_administrations.php -text +formidable_1_0.orig/formidable_autorisations.php -text +formidable_1_0.orig/formidable_fonctions.php -text +formidable_1_0.orig/formidable_options.php -text +formidable_1_0.orig/formidable_pipelines.php -text +formidable_1_0.orig/formulaires/configurer_formidable_analyse.html -text +formidable_1_0.orig/formulaires/editer_formulaire.html -text +formidable_1_0.orig/formulaires/editer_formulaire.php -text +formidable_1_0.orig/formulaires/editer_formulaire_champs.html -text +formidable_1_0.orig/formulaires/editer_formulaire_champs.php -text +formidable_1_0.orig/formulaires/editer_formulaire_traitements.html -text +formidable_1_0.orig/formulaires/editer_formulaire_traitements.php -text +formidable_1_0.orig/formulaires/formidable.html -text +formidable_1_0.orig/formulaires/formidable.php -text +formidable_1_0.orig/formulaires/importer_formulaire.html -text +formidable_1_0.orig/formulaires/importer_formulaire.php -text +formidable_1_0.orig/icones_barre/formulaire.png -text +formidable_1_0.orig/images/formidable-128.png -text +formidable_1_0.orig/images/formidable-24.png -text +formidable_1_0.orig/images/formidable-64.png -text +formidable_1_0.orig/images/formidable.svg -text +formidable_1_0.orig/images/formulaire-24.png -text +formidable_1_0.orig/images/formulaire-action-ajouter.png -text +formidable_1_0.orig/images/formulaire-analyse-24.png -text +formidable_1_0.orig/images/formulaire-config-champs-24.png -text +formidable_1_0.orig/images/formulaire-config-traitements-24.png -text +formidable_1_0.orig/images/formulaire-dupliquer-24.png -text +formidable_1_0.orig/images/formulaire-editer-24.png -text +formidable_1_0.orig/images/formulaire-exporter-24.png -text +formidable_1_0.orig/images/formulaire-nouveau-48.png -text +formidable_1_0.orig/images/formulaire-reponse-24.png -text +formidable_1_0.orig/images/formulaire-reponse-supprimer-24.png -text +formidable_1_0.orig/images/formulaire-reponses-24.png -text +formidable_1_0.orig/images/formulaire-reponses-exporter-24.png -text +formidable_1_0.orig/images/formulaire-supprimer-24.png -text +formidable_1_0.orig/inc/formidable.php -text +formidable_1_0.orig/lang/formidable.xml -text +formidable_1_0.orig/lang/formidable_de.php -text +formidable_1_0.orig/lang/formidable_en.php -text +formidable_1_0.orig/lang/formidable_fr.php -text +formidable_1_0.orig/lang/formidable_it.php -text +formidable_1_0.orig/lang/formidable_sk.php -text +formidable_1_0.orig/lang/formulaire_fr.php -text +formidable_1_0.orig/lang/formulaires_reponse_fr.php -text +formidable_1_0.orig/lang/paquet-formidable_fr.php -text +formidable_1_0.orig/modeles/formulaire_aide_memoire.html -text +formidable_1_0.orig/modeles/formulaire_analyse.html -text +formidable_1_0.orig/modeles/formulaire_formidable.yaml -text +formidable_1_0.orig/modeles/formulaires_reponse.html -text +formidable_1_0.orig/noisettes/formulaire_formidable.html -text +formidable_1_0.orig/noisettes/formulaire_formidable.yaml -text +formidable_1_0.orig/notifications/formulaire_accuse.html -text +formidable_1_0.orig/notifications/formulaire_email.html -text +formidable_1_0.orig/paquet.xml -text +formidable_1_0.orig/prive/objets/contenu/formulaire.html -text +formidable_1_0.orig/prive/objets/contenu/formulaires_reponse.html -text +formidable_1_0.orig/prive/objets/infos/formulaire.html -text +formidable_1_0.orig/prive/objets/infos/formulaires_reponse.html -text +formidable_1_0.orig/prive/objets/liste/formulaires.html -text +formidable_1_0.orig/prive/objets/liste/formulaires_reponses.html -text +formidable_1_0.orig/prive/squelettes/contenu/configurer_formidable.html -text +formidable_1_0.orig/prive/squelettes/contenu/formulaire.html -text +formidable_1_0.orig/prive/squelettes/contenu/formulaire_edit.html -text +formidable_1_0.orig/prive/squelettes/contenu/formulaires.html -text +formidable_1_0.orig/prive/squelettes/contenu/formulaires_analyse.html -text +formidable_1_0.orig/prive/squelettes/contenu/formulaires_reponse.html -text +formidable_1_0.orig/prive/squelettes/contenu/formulaires_reponses.html -text +formidable_1_0.orig/prive/squelettes/extra/formulaire.html -text +formidable_1_0.orig/prive/squelettes/extra/formulaire_edit.html -text +formidable_1_0.orig/prive/squelettes/extra/formulaires_reponses.html -text +formidable_1_0.orig/prive/squelettes/hierarchie/formulaire.html -text +formidable_1_0.orig/prive/squelettes/hierarchie/formulaire_edit.html -text +formidable_1_0.orig/prive/squelettes/hierarchie/formulaires.html -text +formidable_1_0.orig/prive/squelettes/hierarchie/formulaires_analyse.html -text +formidable_1_0.orig/prive/squelettes/hierarchie/formulaires_reponse.html -text +formidable_1_0.orig/prive/squelettes/hierarchie/formulaires_reponses.html -text +formidable_1_0.orig/prive/squelettes/navigation/formulaire.html -text +formidable_1_0.orig/prive/squelettes/navigation/formulaire_edit.html -text +formidable_1_0.orig/prive/squelettes/navigation/formulaires.html -text +formidable_1_0.orig/prive/squelettes/navigation/formulaires_analyse.html -text +formidable_1_0.orig/prive/squelettes/navigation/formulaires_reponse.html -text +formidable_1_0.orig/prive/squelettes/navigation/formulaires_reponses.html -text +formidable_1_0.orig/prive/style_prive_plugin_formidable.html -text +formidable_1_0.orig/prive/themes/basic/images/formulaire-16.png -text +formidable_1_0.orig/prive/themes/spip/images/formulaire-16.png -text +formidable_1_0.orig/prive/themes/spip/images/formulaire-24.png -text +formidable_1_0.orig/prive/themes/spip/images/formulaires_reponse-24.png -text +formidable_1_0.orig/public/formidable_criteres.php -text +formidable_1_0.orig/puce_statut/formulaires_reponse.php -text +formidable_1_0.orig/saisies-analyses/_base.html -text +formidable_1_0.orig/saisies-analyses/case.html -text +formidable_1_0.orig/saisies-analyses/checkbox.html -text +formidable_1_0.orig/saisies-analyses/destinataires.html -text +formidable_1_0.orig/saisies-analyses/explication.html -text +formidable_1_0.orig/saisies-analyses/oui_non.html -text +formidable_1_0.orig/saisies-analyses/radio.html -text +formidable_1_0.orig/saisies-analyses/selecteur_article.html -text +formidable_1_0.orig/saisies-analyses/selecteur_rubrique.html -text +formidable_1_0.orig/saisies-analyses/selecteur_rubrique_article.html -text +formidable_1_0.orig/saisies-analyses/selection.html -text +formidable_1_0.orig/saisies-analyses/selection_multiple.html -text +formidable_1_0.orig/saisies-vues/formulaire_formidable.html -text +formidable_1_0.orig/saisies-vues/formulaire_formidable_multiple.html -text +formidable_1_0.orig/saisies/champ.html -text +formidable_1_0.orig/saisies/formulaire_formidable.html -text +formidable_1_0.orig/saisies/formulaire_formidable_multiple.html -text +formidable_1_0.orig/svn.revision -text +formidable_1_0.orig/todo.txt -text +formidable_1_0.orig/traiter/email.php -text +formidable_1_0.orig/traiter/email.yaml -text +formidable_1_0.orig/traiter/enregistrement.php -text +formidable_1_0.orig/traiter/enregistrement.yaml -text +formidable_1_0/CVS/Entries -text +formidable_1_0/CVS/Repository -text +formidable_1_0/CVS/Root -text +formidable_1_0/action/CVS/Entries -text +formidable_1_0/action/CVS/Repository -text +formidable_1_0/action/CVS/Root -text +formidable_1_0/action/dupliquer_formulaire.php -text +formidable_1_0/action/editer_formulaire.php -text +formidable_1_0/action/exporter_analyse_reponses.php -text +formidable_1_0/action/exporter_formulaire.php -text +formidable_1_0/action/exporter_formulaires_reponses.php -text +formidable_1_0/action/instituer_formulaires_reponse.php -text +formidable_1_0/action/supprimer_formulaire.php -text +formidable_1_0/action/supprimer_formulaires_reponse.php -text +formidable_1_0/base/CVS/Entries -text +formidable_1_0/base/CVS/Repository -text +formidable_1_0/base/CVS/Root -text +formidable_1_0/base/formidable_tables.php -text +formidable_1_0/css/CVS/Entries -text +formidable_1_0/css/CVS/Repository -text +formidable_1_0/css/CVS/Root -text +formidable_1_0/css/formidable_analyse.css.html -text +formidable_1_0/echanger/CVS/Entries -text +formidable_1_0/echanger/CVS/Repository -text +formidable_1_0/echanger/CVS/Root -text +formidable_1_0/echanger/formulaire/CVS/Entries -text +formidable_1_0/echanger/formulaire/CVS/Repository -text +formidable_1_0/echanger/formulaire/CVS/Root -text +formidable_1_0/echanger/formulaire/forms.php -text +formidable_1_0/echanger/formulaire/wcs.php -text +formidable_1_0/echanger/formulaire/yaml.php -text +formidable_1_0/exec/CVS/Entries -text +formidable_1_0/exec/CVS/Repository -text +formidable_1_0/exec/CVS/Root -text +formidable_1_0/exec/puce_statut_formulaires.php -text +formidable_1_0/formidable_administrations.php -text +formidable_1_0/formidable_autorisations.php -text +formidable_1_0/formidable_fonctions.php -text +formidable_1_0/formidable_options.php -text +formidable_1_0/formidable_pipelines.php -text +formidable_1_0/formulaires/CVS/Entries -text +formidable_1_0/formulaires/CVS/Repository -text +formidable_1_0/formulaires/CVS/Root -text +formidable_1_0/formulaires/configurer_formidable_analyse.html -text +formidable_1_0/formulaires/editer_formulaire.html -text +formidable_1_0/formulaires/editer_formulaire.php -text +formidable_1_0/formulaires/editer_formulaire_champs.html -text +formidable_1_0/formulaires/editer_formulaire_champs.php -text +formidable_1_0/formulaires/editer_formulaire_traitements.html -text +formidable_1_0/formulaires/editer_formulaire_traitements.php -text +formidable_1_0/formulaires/formidable.html -text +formidable_1_0/formulaires/formidable.php -text +formidable_1_0/formulaires/importer_formulaire.html -text +formidable_1_0/formulaires/importer_formulaire.php -text +formidable_1_0/icones_barre/CVS/Entries -text +formidable_1_0/icones_barre/CVS/Repository -text +formidable_1_0/icones_barre/CVS/Root -text +formidable_1_0/icones_barre/formulaire.png -text +formidable_1_0/images/CVS/Entries -text +formidable_1_0/images/CVS/Repository -text +formidable_1_0/images/CVS/Root -text +formidable_1_0/images/formidable-128.png -text +formidable_1_0/images/formidable-24.png -text +formidable_1_0/images/formidable-64.png -text +formidable_1_0/images/formidable.svg -text +formidable_1_0/images/formulaire-24.png -text +formidable_1_0/images/formulaire-action-ajouter.png -text +formidable_1_0/images/formulaire-analyse-24.png -text +formidable_1_0/images/formulaire-config-champs-24.png -text +formidable_1_0/images/formulaire-config-traitements-24.png -text +formidable_1_0/images/formulaire-dupliquer-24.png -text +formidable_1_0/images/formulaire-editer-24.png -text +formidable_1_0/images/formulaire-exporter-24.png -text +formidable_1_0/images/formulaire-nouveau-48.png -text +formidable_1_0/images/formulaire-reponse-24.png -text +formidable_1_0/images/formulaire-reponse-supprimer-24.png -text +formidable_1_0/images/formulaire-reponses-24.png -text +formidable_1_0/images/formulaire-reponses-exporter-24.png -text +formidable_1_0/images/formulaire-supprimer-24.png -text +formidable_1_0/inc/CVS/Entries -text +formidable_1_0/inc/CVS/Repository -text +formidable_1_0/inc/CVS/Root -text +formidable_1_0/inc/formidable.php -text +formidable_1_0/lang/CVS/Entries -text +formidable_1_0/lang/CVS/Repository -text +formidable_1_0/lang/CVS/Root -text +formidable_1_0/lang/formidable.xml -text +formidable_1_0/lang/formidable_de.php -text +formidable_1_0/lang/formidable_fr.php -text +formidable_1_0/lang/formidable_it.php -text +formidable_1_0/lang/formidable_sk.php -text +formidable_1_0/lang/formulaire_fr.php -text +formidable_1_0/lang/formulaires_reponse_fr.php -text +formidable_1_0/lang/paquet-formidable_fr.php -text +formidable_1_0/modeles/CVS/Entries -text +formidable_1_0/modeles/CVS/Repository -text +formidable_1_0/modeles/CVS/Root -text +formidable_1_0/modeles/formulaire_aide_memoire.html -text +formidable_1_0/modeles/formulaire_analyse.html -text +formidable_1_0/modeles/formulaire_formidable.yaml -text +formidable_1_0/modeles/formulaires_reponse.html -text +formidable_1_0/noisettes/CVS/Entries -text +formidable_1_0/noisettes/CVS/Repository -text +formidable_1_0/noisettes/CVS/Root -text +formidable_1_0/noisettes/formulaire_formidable.html -text +formidable_1_0/noisettes/formulaire_formidable.yaml -text +formidable_1_0/notifications/CVS/Entries -text +formidable_1_0/notifications/CVS/Repository -text +formidable_1_0/notifications/CVS/Root -text +formidable_1_0/notifications/formulaire_accuse.html -text +formidable_1_0/notifications/formulaire_email.html -text +formidable_1_0/paquet.xml -text +formidable_1_0/prive/CVS/Entries -text +formidable_1_0/prive/CVS/Repository -text +formidable_1_0/prive/CVS/Root -text +formidable_1_0/prive/objets/CVS/Entries -text +formidable_1_0/prive/objets/CVS/Repository -text +formidable_1_0/prive/objets/CVS/Root -text +formidable_1_0/prive/objets/contenu/CVS/Entries -text +formidable_1_0/prive/objets/contenu/CVS/Repository -text +formidable_1_0/prive/objets/contenu/CVS/Root -text +formidable_1_0/prive/objets/contenu/formulaire.html -text +formidable_1_0/prive/objets/contenu/formulaires_reponse.html -text +formidable_1_0/prive/objets/infos/CVS/Entries -text +formidable_1_0/prive/objets/infos/CVS/Repository -text +formidable_1_0/prive/objets/infos/CVS/Root -text +formidable_1_0/prive/objets/infos/formulaire.html -text +formidable_1_0/prive/objets/infos/formulaires_reponse.html -text +formidable_1_0/prive/objets/liste/CVS/Entries -text +formidable_1_0/prive/objets/liste/CVS/Repository -text +formidable_1_0/prive/objets/liste/CVS/Root -text +formidable_1_0/prive/objets/liste/formulaires.html -text +formidable_1_0/prive/objets/liste/formulaires_reponses.html -text +formidable_1_0/prive/squelettes/CVS/Entries -text +formidable_1_0/prive/squelettes/CVS/Repository -text +formidable_1_0/prive/squelettes/CVS/Root -text +formidable_1_0/prive/squelettes/contenu/CVS/Entries -text +formidable_1_0/prive/squelettes/contenu/CVS/Repository -text +formidable_1_0/prive/squelettes/contenu/CVS/Root -text +formidable_1_0/prive/squelettes/contenu/configurer_formidable.html -text +formidable_1_0/prive/squelettes/contenu/formulaire.html -text +formidable_1_0/prive/squelettes/contenu/formulaire_edit.html -text +formidable_1_0/prive/squelettes/contenu/formulaires.html -text +formidable_1_0/prive/squelettes/contenu/formulaires_analyse.html -text +formidable_1_0/prive/squelettes/contenu/formulaires_reponse.html -text +formidable_1_0/prive/squelettes/contenu/formulaires_reponses.html -text +formidable_1_0/prive/squelettes/extra/CVS/Entries -text +formidable_1_0/prive/squelettes/extra/CVS/Repository -text +formidable_1_0/prive/squelettes/extra/CVS/Root -text +formidable_1_0/prive/squelettes/extra/formulaire.html -text +formidable_1_0/prive/squelettes/extra/formulaire_edit.html -text +formidable_1_0/prive/squelettes/extra/formulaires_analyse.html -text +formidable_1_0/prive/squelettes/extra/formulaires_reponses.html -text +formidable_1_0/prive/squelettes/hierarchie/CVS/Entries -text +formidable_1_0/prive/squelettes/hierarchie/CVS/Repository -text +formidable_1_0/prive/squelettes/hierarchie/CVS/Root -text +formidable_1_0/prive/squelettes/hierarchie/formulaire.html -text +formidable_1_0/prive/squelettes/hierarchie/formulaire_edit.html -text +formidable_1_0/prive/squelettes/hierarchie/formulaires.html -text +formidable_1_0/prive/squelettes/hierarchie/formulaires_analyse.html -text +formidable_1_0/prive/squelettes/hierarchie/formulaires_reponse.html -text +formidable_1_0/prive/squelettes/hierarchie/formulaires_reponses.html -text +formidable_1_0/prive/squelettes/inclure/CVS/Entries -text +formidable_1_0/prive/squelettes/inclure/CVS/Repository -text +formidable_1_0/prive/squelettes/inclure/CVS/Root -text +formidable_1_0/prive/squelettes/navigation/CVS/Entries -text +formidable_1_0/prive/squelettes/navigation/CVS/Repository -text +formidable_1_0/prive/squelettes/navigation/CVS/Root -text +formidable_1_0/prive/squelettes/navigation/formulaire.html -text +formidable_1_0/prive/squelettes/navigation/formulaire_edit.html -text +formidable_1_0/prive/squelettes/navigation/formulaires.html -text +formidable_1_0/prive/squelettes/navigation/formulaires_analyse.html -text +formidable_1_0/prive/squelettes/navigation/formulaires_reponse.html -text +formidable_1_0/prive/squelettes/navigation/formulaires_reponses.html -text +formidable_1_0/prive/style_prive_plugin_formidable.html -text +formidable_1_0/prive/themes/CVS/Entries -text +formidable_1_0/prive/themes/CVS/Repository -text +formidable_1_0/prive/themes/CVS/Root -text +formidable_1_0/prive/themes/basic/CVS/Entries -text +formidable_1_0/prive/themes/basic/CVS/Repository -text +formidable_1_0/prive/themes/basic/CVS/Root -text +formidable_1_0/prive/themes/basic/images/CVS/Entries -text +formidable_1_0/prive/themes/basic/images/CVS/Repository -text +formidable_1_0/prive/themes/basic/images/CVS/Root -text +formidable_1_0/prive/themes/basic/images/formulaire-16.png -text +formidable_1_0/prive/themes/spip/CVS/Entries -text +formidable_1_0/prive/themes/spip/CVS/Repository -text +formidable_1_0/prive/themes/spip/CVS/Root -text +formidable_1_0/prive/themes/spip/images/CVS/Entries -text +formidable_1_0/prive/themes/spip/images/CVS/Repository -text +formidable_1_0/prive/themes/spip/images/CVS/Root -text +formidable_1_0/prive/themes/spip/images/formulaire-16.png -text +formidable_1_0/prive/themes/spip/images/formulaire-24.png -text +formidable_1_0/prive/themes/spip/images/formulaires_reponse-24.png -text +formidable_1_0/public/CVS/Entries -text +formidable_1_0/public/CVS/Repository -text +formidable_1_0/public/CVS/Root -text +formidable_1_0/public/formidable_criteres.php -text +formidable_1_0/puce_statut/CVS/Entries -text +formidable_1_0/puce_statut/CVS/Repository -text +formidable_1_0/puce_statut/CVS/Root -text +formidable_1_0/puce_statut/formulaires_reponse.php -text +formidable_1_0/saisies-analyses/CVS/Entries -text +formidable_1_0/saisies-analyses/CVS/Repository -text +formidable_1_0/saisies-analyses/CVS/Root -text +formidable_1_0/saisies-analyses/_base.html -text +formidable_1_0/saisies-analyses/case.html -text +formidable_1_0/saisies-analyses/checkbox.html -text +formidable_1_0/saisies-analyses/destinataires.html -text +formidable_1_0/saisies-analyses/explication.html -text +formidable_1_0/saisies-analyses/oui_non.html -text +formidable_1_0/saisies-analyses/radio.html -text +formidable_1_0/saisies-analyses/selecteur_article.html -text +formidable_1_0/saisies-analyses/selecteur_rubrique.html -text +formidable_1_0/saisies-analyses/selecteur_rubrique_article.html -text +formidable_1_0/saisies-analyses/selection.html -text +formidable_1_0/saisies-analyses/selection_multiple.html -text +formidable_1_0/saisies-vues/CVS/Entries -text +formidable_1_0/saisies-vues/CVS/Repository -text +formidable_1_0/saisies-vues/CVS/Root -text +formidable_1_0/saisies-vues/formulaire_formidable.html -text +formidable_1_0/saisies-vues/formulaire_formidable_multiple.html -text +formidable_1_0/saisies/CVS/Entries -text +formidable_1_0/saisies/CVS/Repository -text +formidable_1_0/saisies/CVS/Root -text +formidable_1_0/saisies/champ.html -text +formidable_1_0/saisies/formulaire_formidable.html -text +formidable_1_0/saisies/formulaire_formidable_multiple.html -text +formidable_1_0/svn.revision -text +formidable_1_0/todo.txt -text +formidable_1_0/traiter/CVS/Entries -text +formidable_1_0/traiter/CVS/Repository -text +formidable_1_0/traiter/CVS/Root -text +formidable_1_0/traiter/email.php -text +formidable_1_0/traiter/email.yaml -text +formidable_1_0/traiter/enregistrement.php -text +formidable_1_0/traiter/enregistrement.yaml -text /formidable_administrations.php -text /formidable_autorisations.php -text /formidable_fonctions.php -text diff --git a/formidable.diff b/formidable.diff new file mode 100644 index 0000000000000000000000000000000000000000..ecdb2fe9c6732c22a333cf51cd33630180f4ec61 --- /dev/null +++ b/formidable.diff @@ -0,0 +1,666 @@ +Seulement dans formidable_1_0/action: exporter_analyse_reponses.php +diff -r -U4 -x CVS formidable_1_0.orig/formidable_autorisations.php formidable_1_0/formidable_autorisations.php +--- formidable_1_0.orig/formidable_autorisations.php 2012-09-06 14:00:04.000000000 +0200 ++++ formidable_1_0/formidable_autorisations.php 2013-03-19 15:47:51.681294328 +0100 +@@ -27,10 +27,12 @@ + * @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){ +- if (isset($qui['statut']) and $qui['statut'] <= '0minirezo' and !$qui['restreint']) return true; +- else return false; ++ if (isset($qui['statut']) and $qui['statut'] <= '0minirezo' and ++ (!$qui['restreint']) or $GLOBALS['formulaires']['autoriser_admin_restreint']) ++ return true; ++ else return false; + } + + /** + * Autorisation de voir la liste des formulaires formidable +@@ -92,9 +94,9 @@ + return true; + else{ + include_spip('inc/formidable'); + // Si la personne n'a jamais répondu, c'est bon +- if (!formidable_verifier_reponse_formulaire($id, $options['identification'])) ++ if (!formidable_verifier_reponse_formulaire($id)) + return true; + else + return false; + } +diff -r -U4 -x CVS formidable_1_0.orig/formidable_options.php formidable_1_0/formidable_options.php +--- formidable_1_0.orig/formidable_options.php 2012-10-12 11:00:03.000000000 +0200 ++++ formidable_1_0/formidable_options.php 2013-03-19 15:56:57.877287434 +0100 +@@ -83,8 +83,19 @@ + ) + ) + ); + ++/* 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"]', ++); ++ ++$GLOBALS['formulaires']['passwd'] = array( ++ 'interne' => 'palabresecreta', ++); ++ ++$GLOBALS['formulaires']['autoriser_admin_restreint'] = false; + + if (!function_exists('array_fill_keys')) { + /** + * Remplit un tableau avec des valeurs, en spécifiant les clés +diff -r -U4 -x CVS formidable_1_0.orig/formulaires/formidable.html formidable_1_0/formulaires/formidable.html +--- formidable_1_0.orig/formulaires/formidable.html 2012-09-06 15:00:08.000000000 +0200 ++++ formidable_1_0/formulaires/formidable.html 2013-03-19 15:58:24.837286337 +0100 +@@ -1,8 +1,13 @@ + <BOUCLE_remplacer_le_formulaire(CONDITION){si #ENV{_remplacer_formulaire}}> + [(#REM) Afficher du HTML si prévu par un plugin ou pour les stats ] + [(#ENV**{_remplacer_formulaire})] + </BOUCLE_remplacer_le_formulaire> ++<BOUCLE_formulaire(FORMULAIRES){id_formulaire=#ENV{id}}> ++ [(#SET{enregistrement,[(#TRAITEMENTS**|unserialize|table_valeur{'enregistrement'})]})] ++ [(#SET{anonymiser,[(#GET{enregistrement}|table_valeur{'anonymiser'})]})] ++ [(#GET{anonymiser}|=={on}|oui)<h3><:formidable:formulaire_anonyme_explication:>]</h3> ++</BOUCLE_formulaire> + <div class="formulaire_spip 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>] + +diff -r -U4 -x CVS formidable_1_0.orig/formulaires/formidable.php formidable_1_0/formulaires/formidable.php +--- formidable_1_0.orig/formulaires/formidable.php 2012-10-12 11:00:07.000000000 +0200 ++++ formidable_1_0/formulaires/formidable.php 2013-03-19 15:47:51.781294328 +0100 +@@ -94,10 +94,10 @@ + // la dernière réponse si elle existe + if ($options = $traitements['enregistrement'] + and !$options['multiple'] + and $options['modifiable'] +- and $reponses = formidable_verifier_reponse_formulaire($formulaire['id_formulaire'], $options['identification']) +- ){ ++ and $reponses = formidable_verifier_reponse_formulaire($formulaire['id_formulaire'], $options) ++ ) { + $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 +diff -r -U4 -x CVS formidable_1_0.orig/inc/formidable.php formidable_1_0/inc/formidable.php +--- formidable_1_0.orig/inc/formidable.php 2012-09-06 14:00:10.000000000 +0200 ++++ formidable_1_0/inc/formidable.php 2013-03-19 15:47:51.945294326 +0100 +@@ -93,36 +93,47 @@ + /* + * 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 $options : options du formulaire definies dans l'espace prive + * @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'){ ++function formidable_verifier_reponse_formulaire($id_formulaire, $options){ + 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 = isset($options['anonymiser']) ? $options['anonymiser'] : false; ++ $anonymiser_variable = isset($options['anonymiser_variable']) ? $options['anonymiser_variable'] : ''; ++ ++ // traitement de l'anonymisation ++ if ($anonymiser != false) { ++ // mod de l'id_auteur ++ $variables_anonymisation = ++ $GLOBALS['formulaires']['variables_anonymisation'][$options['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='.intval($id_auteur).')' : ')'); ++ $where = '(cookie='.sql_quote($cookie).($id_auteur ? ' OR id_auteur='.$id_auteur.')' : ')'); + else +- $where = 'id_auteur='.intval($id_auteur); ++ $where = 'id_auteur='.$id_auteur; + } + + // sinon sur l'id_auteur + else { + if ($id_auteur) +- $where = 'id_auteur='.intval($id_auteur); ++ $where = 'id_auteur='.$id_auteur; + else +- $where = '(cookie='.sql_quote($cookie).($id_auteur ? ' OR id_auteur='.intval($id_auteur).')' : ')'); ++ $where = '(cookie='.sql_quote($cookie).($id_auteur ? ' OR id_auteur='.$id_auteur.')' : ')'); + } + + $reponses = sql_allfetsel( + 'id_formulaires_reponse', +@@ -148,9 +159,9 @@ + * @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){ ++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 ''; + +@@ -176,12 +187,106 @@ + $contexte['valeurs'] = array(); + } + + // On génère la saisie +- return recuperer_fond( +- 'saisies-analyses/_base', +- $contexte +- ); ++ 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 '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($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; + } + + + /** +@@ -222,5 +327,51 @@ + 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 -r -U4 -x CVS formidable_1_0.orig/lang/formidable_de.php formidable_1_0/lang/formidable_de.php +--- formidable_1_0.orig/lang/formidable_de.php 2012-09-07 04:00:18.000000000 +0200 ++++ formidable_1_0/lang/formidable_de.php 2013-03-19 15:47:51.993294324 +0100 +@@ -14,8 +14,9 @@ + 'analyse_sans_reponse' => 'Leere Antworten', + 'analyse_une_reponse_total' => 'Une personne a répondu à ce formulaire.', # NEW + 'analyse_zero_reponse_total' => 'Aucune personne n\'a répondu à ce formulaire.', # NEW + 'aucun_traitement' => 'Aucun traitement', # NEW ++ 'analyse_exporter' => 'Analyse exportieren', + + // B + 'bouton_formulaires' => 'Formulare', + +@@ -25,8 +26,9 @@ + <code>orange</code>, <code>green</code> ou tout ce qui vous plairait !', # NEW + 'cfg_analyse_classe_label' => 'Classe CSS de la barre de progression', # NEW + 'cfg_titre_page_configurer_formidable' => 'Configurer Formidable', # NEW + 'cfg_titre_parametrages_analyse' => 'Paramétrages de l\'analyse des réponses', # NEW ++ 'champ' => 'Feld', + + // E + 'echanger_formulaire_forms_importer' => 'Forms & Tables (.xml)', + 'echanger_formulaire_wcs_importer' => 'W.C.S. (.wcs)', +@@ -61,8 +63,9 @@ + '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.", + 'formulaires_aucun' => 'Kein Formular vorhanden.', + 'formulaires_dupliquer' => 'Formular kopieren', + 'formulaires_dupliquer_copie' => '(Kopie)', + 'formulaires_introduction' => 'Erstellen und bearbeiten sie Formulare für ihre Website.', +@@ -106,8 +109,11 @@ + 'reponses_nb' => '@nb@ réponses', # NEW + '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 + 'titre_cadre_raccourcis' => 'Raccourcis', # NEW + 'traitements_actives' => 'Traitements activés', # NEW + 'traitements_aide_memoire' => 'Merkzettel:', +@@ -137,8 +143,13 @@ + '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_option_anonymiser_label' => "Anonymisierter Form", ++ 'traiter_enregistrement_option_anonymiser_explication' => "Stellen die Ergebnisse der anonymen Form (nicht halten Trace-Kennung der Befragten).')", ++ 'traiter_enregistrement_option_choix_select_label' => "Wählen eine Variable von denen zur Verfügung.", ++ 'traiter_enregistrement_option_anonymiser_variable_label' => "Variable aus dem 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_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_erreur_edition_reponse_inexistante' => 'La réponse à éditer est introuvable.', # NEW +Seulement dans formidable_1_0.orig/lang: formidable_en.php +diff -r -U4 -x CVS formidable_1_0.orig/lang/formidable_fr.php formidable_1_0/lang/formidable_fr.php +--- formidable_1_0.orig/lang/formidable_fr.php 2012-09-07 04:00:18.000000000 +0200 ++++ formidable_1_0/lang/formidable_fr.php 2013-03-19 16:01:12.685284218 +0100 +@@ -12,8 +12,9 @@ + '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', ++ 'analyse_exporter' => 'Exporter l\'analyse', + + // B + 'bouton_formulaires' => 'Formulaires', + +@@ -23,8 +24,9 @@ + <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', ++ 'champ' => 'Champ', + + // E + 'echanger_formulaire_forms_importer' => 'Forms & Tables (.xml)', + 'echanger_formulaire_wcs_importer' => 'W.C.S. (.wcs)', +@@ -59,8 +61,9 @@ + '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.', +@@ -104,8 +107,11 @@ + '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 :', +@@ -135,8 +141,13 @@ + '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_option_anonymiser_label' => "Anonymiser le formulaire", ++ '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_choix_select_label' => "Choisir une variable parmi celles proposées", ++ 'traiter_enregistrement_option_anonymiser_variable_label' => "Variable à partir de laquelle 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_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.', +diff -r -U4 -x CVS formidable_1_0.orig/lang/formidable_it.php formidable_1_0/lang/formidable_it.php +--- formidable_1_0.orig/lang/formidable_it.php 2012-09-07 04:00:18.000000000 +0200 ++++ formidable_1_0/lang/formidable_it.php 2013-03-19 15:47:52.009294324 +0100 +@@ -14,8 +14,9 @@ + 'analyse_sans_reponse' => 'Risposte vuote', + 'analyse_une_reponse_total' => 'Une personne a répondu à ce formulaire.', # NEW + 'analyse_zero_reponse_total' => 'Aucune personne n\'a répondu à ce formulaire.', # NEW + 'aucun_traitement' => 'Aucun traitement', # NEW ++ 'analyse_exporter' => 'Esporta l\'analisi', + + // B + 'bouton_formulaires' => 'Moduli', + +@@ -25,8 +26,9 @@ + <code>orange</code>, <code>green</code> ou tout ce qui vous plairait !', # NEW + 'cfg_analyse_classe_label' => 'Classe CSS de la barre de progression', # NEW + 'cfg_titre_page_configurer_formidable' => 'Configurer Formidable', # NEW + 'cfg_titre_parametrages_analyse' => 'Paramétrages de l\'analyse des réponses', # NEW ++ 'champ' => 'Campo', + + // E + 'echanger_formulaire_forms_importer' => 'Forms & Tables (.xml)', + 'echanger_formulaire_wcs_importer' => 'W.C.S. (.wcs)', +@@ -106,8 +108,11 @@ + 'reponses_nb' => '@nb@ réponses', # NEW + 'reponses_voir_detail' => 'Vedi la risposta', + 'retour_aucun_traitement' => 'La risposta è stata correttamente inviata. Grazie :)', + ++ // S ++ 'sans_reponses' => 'Senza risposta', ++ + // T + 'titre_cadre_raccourcis' => 'Raccourcis', # NEW + 'traitements_actives' => 'Traitements activés', # NEW + 'traitements_aide_memoire' => 'Promemoria:', +diff -r -U4 -x CVS formidable_1_0.orig/lang/formidable_sk.php formidable_1_0/lang/formidable_sk.php +--- formidable_1_0.orig/lang/formidable_sk.php 2012-09-17 04:00:06.000000000 +0200 ++++ formidable_1_0/lang/formidable_sk.php 2013-03-19 15:47:52.017294325 +0100 +@@ -14,8 +14,9 @@ + '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', ++ 'analyse_exporter' => 'ExportovaÅ¥ analýzu', + + // B + 'bouton_formulaires' => 'Formuláre', + +@@ -25,8 +26,9 @@ + <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Ã', ++ 'champ' => 'Pol\'a', + + // E + 'echanger_formulaire_forms_importer' => 'formuláre Forms & Tables (.xml)', + 'echanger_formulaire_wcs_importer' => 'W.C.S. (.wcs)', +@@ -106,8 +108,11 @@ + '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äť:', +diff -r -U4 -x CVS formidable_1_0.orig/lang/formidable.xml formidable_1_0/lang/formidable.xml +--- formidable_1_0.orig/lang/formidable.xml 2013-01-21 04:00:22.000000000 +0100 ++++ formidable_1_0/lang/formidable.xml 2013-03-19 15:47:52.001294324 +0100 +@@ -1,10 +1,6 @@ + <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" /> +- <langue code="en" url="http://trad.spip.net/tradlang_module/formidable?lang_cible=en"> +- <traducteur nom="Benitron" lien="http://trad.spip.net/auteur/benitron" /> +- <traducteur nom="Paolo" lien="http://trad.spip.net/auteur/paolo" /> +- </langue> + <langue code="fr" /> + <langue code="it" /> + <langue code="sk" url="http://trad.spip.net/tradlang_module/formidable?lang_cible=sk"> + <traducteur nom="jaro" lien="http://trad.spip.net/auteur/jaro" /> +diff -r -U4 -x CVS formidable_1_0.orig/modeles/formulaire_analyse.html formidable_1_0/modeles/formulaire_analyse.html +--- formidable_1_0.orig/modeles/formulaire_analyse.html 2013-03-12 19:00:08.000000000 +0100 ++++ formidable_1_0/modeles/formulaire_analyse.html 2013-03-19 15:47:52.057294325 +0100 +@@ -3,9 +3,9 @@ + [(#REM) On fait un tableau qui contient toutes les réponses, classées par champ ] + #SET{valeurs,#ARRAY} + #SET{reponses_total,0} + <BOUCLE_reponses(FORMULAIRES_REPONSES){id_formulaire}> +-<BOUCLE_champs(FORMULAIRES_REPONSES_CHAMPS){id_formulaires_reponse}{nom ?= #ENV{nom}> ++<BOUCLE_champs(FORMULAIRES_REPONSES_CHAMPS){id_formulaires_reponse}> + #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> +@@ -18,11 +18,9 @@ + <//B_reponses> + + <BOUCLE_saisies(POUR){tableau #SAISIES|unserialize|saisies_lister_par_nom}> + [(#VAL{saisie}|array_key_exists{#VALEUR}|oui) +- [(#CLE|=={#ENV{nom,#CLE}}|oui) + [(#VALEUR|formidable_analyser_saisie{#GET{valeurs}, #GET{reponses_total}})] +- ] + ] + </BOUCLE_saisies> + + </div><!-- formidable_analyse --> +@@ -61,5 +59,5 @@ + </script> + <style type='text/css'> + <INCLURE{fond=css/formidable_analyse.css} /> + </style> +-</BOUCLE_formulaire> +\ Pas de fin de ligne à la fin du fichier ++</BOUCLE_formulaire> +diff -r -U4 -x CVS formidable_1_0.orig/paquet.xml formidable_1_0/paquet.xml +--- formidable_1_0.orig/paquet.xml 2013-03-11 21:00:08.000000000 +0100 ++++ formidable_1_0/paquet.xml 2013-03-19 15:47:52.117294324 +0100 +@@ -1,8 +1,8 @@ + <paquet + prefix="formidable" + categorie="communication" +- version="1.3.5" ++ version="1.3.4" + etat="dev" + compatibilite="[3.0.0-dev;3.0.99]" + logo="images/formidable-64.png" + schema="0.5.1" +Seulement dans formidable_1_0/prive/squelettes/extra: formulaires_analyse.html +diff -r -U4 -x CVS formidable_1_0.orig/saisies-analyses/checkbox.html formidable_1_0/saisies-analyses/checkbox.html +--- formidable_1_0.orig/saisies-analyses/checkbox.html 2013-03-12 04:00:06.000000000 +0100 ++++ formidable_1_0/saisies-analyses/checkbox.html 2013-03-19 15:47:52.477294318 +0100 +@@ -5,9 +5,9 @@ + </BOUCLE_choix> + </BOUCLE_reponses> + + [(#REM) datas peut être une chaine qu'on sait décomposer ] +-#SET{datas, #ENV*{datas}} ++#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})]})] +diff -r -U4 -x CVS formidable_1_0.orig/saisies-analyses/radio.html formidable_1_0/saisies-analyses/radio.html +--- formidable_1_0.orig/saisies-analyses/radio.html 2013-03-12 04:00:06.000000000 +0100 ++++ formidable_1_0/saisies-analyses/radio.html 2013-03-19 15:47:52.449294319 +0100 +@@ -5,9 +5,9 @@ + ] + </BOUCLE_reponses> + + [(#REM) datas peut être une chaine qu'on sait décomposer ] +-#SET{datas, #ENV*{datas}} ++#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})]})] +diff -r -U4 -x CVS formidable_1_0.orig/svn.revision formidable_1_0/svn.revision +--- formidable_1_0.orig/svn.revision 2013-03-12 18:28:10.000000000 +0100 ++++ formidable_1_0/svn.revision 2013-03-19 15:47:52.529294319 +0100 +@@ -1,10 +1,10 @@ + <svn_revision> + <text_version> + Origine: file:///home/svn/repository/spip-zone/_plugins_/formidable/trunk +-Revision: 70631 +-Dernier commit: 2013-03-12 18:28:10 +0100 ++Revision: 66722 ++Dernier commit: 2012-10-12 11:00:03 +0200 + </text_version> + <origine>file:///home/svn/repository/spip-zone/_plugins_/formidable/trunk</origine> +-<revision>70631</revision> +-<commit>2013-03-12 18:28:10 +0100 </commit> ++<revision>66722</revision> ++<commit>2012-10-12 11:00:03 +0200 </commit> + </svn_revision> +\ Pas de fin de ligne à la fin du fichier +diff -r -U4 -x CVS formidable_1_0.orig/traiter/enregistrement.php formidable_1_0/traiter/enregistrement.php +--- formidable_1_0.orig/traiter/enregistrement.php 2012-01-22 11:00:13.000000000 +0100 ++++ formidable_1_0/traiter/enregistrement.php 2013-03-19 15:47:52.545294317 +0100 +@@ -15,8 +15,17 @@ + // 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]; +diff -r -U4 -x CVS formidable_1_0.orig/traiter/enregistrement.yaml formidable_1_0/traiter/enregistrement.yaml +--- formidable_1_0.orig/traiter/enregistrement.yaml 2012-03-18 16:00:30.000000000 +0100 ++++ formidable_1_0/traiter/enregistrement.yaml 2013-03-19 15:47:52.557294317 +0100 +@@ -26,8 +26,26 @@ + 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: 'radio' + options: + nom: 'moderation' + label: '<:formidable:traiter_enregistrement_option_moderation_label:>' diff --git a/formidable_1_0.orig/action/dupliquer_formulaire.php b/formidable_1_0.orig/action/dupliquer_formulaire.php new file mode 100644 index 0000000000000000000000000000000000000000..93ef6d8cb7aaa2b94d0bb66ac422435b1e27dd35 --- /dev/null +++ b/formidable_1_0.orig/action/dupliquer_formulaire.php @@ -0,0 +1,60 @@ +<?php + +// Sécurité +if (!defined("_ECRIRE_INC_VERSION")) return; + +/** + * 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 + ); + // 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/formidable_1_0.orig/action/editer_formulaire.php b/formidable_1_0.orig/action/editer_formulaire.php new file mode 100644 index 0000000000000000000000000000000000000000..2254bf8cabab416df9c6e725962bb882c4322803 --- /dev/null +++ b/formidable_1_0.orig/action/editer_formulaire.php @@ -0,0 +1,98 @@ +<?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"); + + 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/formidable_1_0.orig/action/exporter_formulaire.php b/formidable_1_0.orig/action/exporter_formulaire.php new file mode 100644 index 0000000000000000000000000000000000000000..df240834dd3c07c926f300f5f00c562a0d8029aa --- /dev/null +++ b/formidable_1_0.orig/action/exporter_formulaire.php @@ -0,0 +1,24 @@ +<?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/formidable_1_0.orig/action/exporter_formulaires_reponses.php b/formidable_1_0.orig/action/exporter_formulaires_reponses.php new file mode 100644 index 0000000000000000000000000000000000000000..4105d4f0c2321caeefbfb209133e328367989ae9 --- /dev/null +++ b/formidable_1_0.orig/action/exporter_formulaires_reponses.php @@ -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)){ + echo $exporter_csv('reponses-formulaire-'.$formulaire['identifiant'], $reponses_completes); + exit(); + } + } +} + +?> diff --git a/formidable_1_0.orig/action/instituer_formulaires_reponse.php b/formidable_1_0.orig/action/instituer_formulaires_reponse.php new file mode 100644 index 0000000000000000000000000000000000000000..211057e06f66bc65c46d623861cf1fa786b852bc --- /dev/null +++ b/formidable_1_0.orig/action/instituer_formulaires_reponse.php @@ -0,0 +1,34 @@ +<?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/formidable_1_0.orig/action/supprimer_formulaire.php b/formidable_1_0.orig/action/supprimer_formulaire.php new file mode 100644 index 0000000000000000000000000000000000000000..372cebe136ad71acdd36d61e66c9e3ef142804a2 --- /dev/null +++ b/formidable_1_0.orig/action/supprimer_formulaire.php @@ -0,0 +1,61 @@ +<?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("&","&",urldecode($redirect))); + } +} + +?> diff --git a/formidable_1_0.orig/action/supprimer_formulaires_reponse.php b/formidable_1_0.orig/action/supprimer_formulaires_reponse.php new file mode 100644 index 0000000000000000000000000000000000000000..98f106e4389f50dcac0729c19c920106e6c17842 --- /dev/null +++ b/formidable_1_0.orig/action/supprimer_formulaires_reponse.php @@ -0,0 +1,50 @@ +<?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("&","&",urldecode($redirect))); + } +} + +?> diff --git a/formidable_1_0.orig/base/formidable_tables.php b/formidable_1_0.orig/base/formidable_tables.php new file mode 100644 index 0000000000000000000000000000000000000000..4d5f43324c5827c16269dcfd27c577f12d96d3fe --- /dev/null +++ b/formidable_1_0.orig/base/formidable_tables.php @@ -0,0 +1,187 @@ +<?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' => '', + 'principale' => 'oui', + + '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" => "text NOT NULL default ''", + "traitements" => "text NOT NULL default ''", + "public" => "enum('non', 'oui') DEFAULT 'non' NOT NULL", + "statut" => "varchar(10) NOT NULL default ''", + "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/formidable_1_0.orig/css/formidable_analyse.css.html b/formidable_1_0.orig/css/formidable_analyse.css.html new file mode 100644 index 0000000000000000000000000000000000000000..3a82a97d873ae277dd8a539f94a53172a4ea21a8 --- /dev/null +++ b/formidable_1_0.orig/css/formidable_analyse.css.html @@ -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/formidable_1_0.orig/echanger/formulaire/forms.php b/formidable_1_0.orig/echanger/formulaire/forms.php new file mode 100644 index 0000000000000000000000000000000000000000..c74aaef0ca49af8be673a4d9766921fd4dfb04d2 --- /dev/null +++ b/formidable_1_0.orig/echanger/formulaire/forms.php @@ -0,0 +1,175 @@ +<?php + +// Sécurité +if (!defined("_ECRIRE_INC_VERSION")) return; + +// Importation d'un formulaire forms&table + +function echanger_formulaire_forms_importer_dist($fichier){ + include_spip('inc/xml'); + $arbre = spip_xml_load($fichier, false); + + if ($arbre and is_array($arbre) and isset($arbre['forms'])){ + foreach($arbre['forms'] as $forms){ + foreach ($forms['form'] as $form){ + $formulaire = array(); + + // Le titre + $titre = trim(spip_xml_aplatit($form['titre'])); + $formulaire['titre'] = $titre ? $titre : _T('info_sans_titre'); + + // L'identifiant il faut le générer + $formulaire['identifiant'] = 'form_'.time(); + + // Le descriptif + $descriptif = trim(spip_xml_aplatit($form['descriptif'])); + $formulaire['descriptif'] = $descriptif ? $descriptif : ''; + + // Le message de retour si ok + $message_retour = trim(spip_xml_aplatit($form['texte'])); + $formulaire['message_retour'] = $message_retour ? $message_retour : ''; + + // Les champs + $formulaire['saisies'] = array(); + foreach($form['fields'] as $fields){ + foreach($fields['field'] as $field){ + // Le truc par défaut + $saisie = array( + 'saisie' => 'input', + 'options' => array('size'=>40) + ); + + // On essaye de traduire tous les types de champs + $type = trim(spip_xml_aplatit($field['type'])); + switch ($type){ + case 'texte': + $saisie['saisie'] = 'textarea'; + unset($saisie['options']['size']); + $saisie['options']['rows'] = 5; + $saisie['options']['cols'] = 40; + break; + case 'password': + $saisie['options']['type'] = 'password'; + break; + case 'date': + $saisie['saisie'] = 'date'; + $saisie['verifier'] = array( + 'type' => 'date' + ); + break; + case 'num': + case 'monnaie': + $saisie['verifier'] = array( + 'type' => 'entier' + ); + if ($taille = trim(spip_xml_aplatit($field['taille']))) + $saisie['verifier']['options'] = array('max' => (pow(10, $taille)-1)); + break; + case 'email': + $saisie['verifier'] = array( + 'type' => 'email' + ); + break; + case 'telephone': + $saisie['verifier'] = array( + 'type' => 'telephone' + ); + break; + case 'select': + unset($saisie['options']['size']); + $liste = trim(spip_xml_aplatit($field['extra_info'])); + if ($liste == 'radio') + $saisie['saisie'] = 'radio'; + else + $saisie['saisie'] = 'selection'; + break; + case 'multiple': + $saisie['saisie'] = 'checkbox'; + unset($saisie['options']['size']); + break; + case 'fichier': + case 'separateur': + $saisie = null; + } + + // On continue seulement si on a toujours une saisie + if ($saisie){ + // Les choix pour les types select et multiple + if(isset($field['les_choix']) and is_array($field['les_choix'])){ + $saisie['options']['datas'] = array(); + foreach($field['les_choix'] as $les_choix){ + foreach($les_choix['un_choix'] as $un_choix){ + $choix = trim(spip_xml_aplatit($un_choix['choix'])); + $titre = trim(spip_xml_aplatit($un_choix['titre'])); + $saisie['options']['datas'][$choix] = $titre; + } + } + } + + // Le nom + $saisie['options']['nom'] = trim(spip_xml_aplatit($field['champ'])); + + // Le label + $saisie['options']['label'] = trim(spip_xml_aplatit($field['titre'])); + + // Obligatoire + if (trim(spip_xml_aplatit($field['obligatoire'])) == 'oui') + $saisie['options']['obligatoire'] = 'on'; + + // Explication éventuelle + if ($explication = trim(spip_xml_aplatit($field['aide']))) + $saisie['options']['explication'] = $explication; + + // On ajoute enfin la saisie + $formulaire['saisies'][] = $saisie; + } + } + } + + // Les traitements + $formulaire['traitements'] = array(); + + // Le traitement email + $config_email = unserialize(trim(spip_xml_aplatit($form['email']))); + if (is_array($config_email)){ + if ($email_defaut = $config_email['defaut']) + $formulaire['traitements']['email'] = array( + 'destinataires_plus' => $email_defaut + ); + } + + // Le traitement enregistrement + $formulaire['traitements']['enregistrement'] = array( + 'moderation' => (trim(spip_xml_aplatit($form['moderation'])) == 'priori') ? 'priori' : 'posteriori', + 'modifiable' => (trim(spip_xml_aplatit($form['modifiable'])) == 'oui') ? 'on' : '', + 'multiple' => (trim(spip_xml_aplatit($form['multiple'])) == 'non') ? '' : 'on' + ); + + 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_forms'); + } +} + +?> diff --git a/formidable_1_0.orig/echanger/formulaire/wcs.php b/formidable_1_0.orig/echanger/formulaire/wcs.php new file mode 100644 index 0000000000000000000000000000000000000000..c12100a3c9b94fffd0d0ae1005fac1317e966ccf --- /dev/null +++ b/formidable_1_0.orig/echanger/formulaire/wcs.php @@ -0,0 +1,175 @@ +<?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/formidable_1_0.orig/echanger/formulaire/yaml.php b/formidable_1_0.orig/echanger/formulaire/yaml.php new file mode 100644 index 0000000000000000000000000000000000000000..162331d9eb46c8c93c5aa9890852ec7abd5b719f --- /dev/null +++ b/formidable_1_0.orig/echanger/formulaire/yaml.php @@ -0,0 +1,80 @@ +<?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/formidable_1_0.orig/exec/puce_statut_formulaires.php b/formidable_1_0.orig/exec/puce_statut_formulaires.php new file mode 100644 index 0000000000000000000000000000000000000000..6aadef396ee0ca45b16885d067394fe54d3806ce --- /dev/null +++ b/formidable_1_0.orig/exec/puce_statut_formulaires.php @@ -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/formidable_1_0.orig/formidable_administrations.php b/formidable_1_0.orig/formidable_administrations.php new file mode 100644 index 0000000000000000000000000000000000000000..d273617d2e516a1e073963cf95c8f2fff7d8ddce --- /dev/null +++ b/formidable_1_0.orig/formidable_administrations.php @@ -0,0 +1,67 @@ +<?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 ""')); + + 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/formidable_1_0.orig/formidable_autorisations.php b/formidable_1_0.orig/formidable_autorisations.php new file mode 100644 index 0000000000000000000000000000000000000000..76d31b07da4e143aa4585c146d1f635ef645eb62 --- /dev/null +++ b/formidable_1_0.orig/formidable_autorisations.php @@ -0,0 +1,160 @@ +<?php + +/** + * Déclaration des autorisations + * + * @package SPIP\Formidable\Autorisations +**/ + +// Sécurité +if (!defined("_ECRIRE_INC_VERSION")) return; + +/** + * 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){ + if (isset($qui['statut']) and $qui['statut'] <= '0minirezo' and !$qui['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, $options['identification'])) + return true; + else + return false; + } + } + } +} + + +/** + * 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_formulaires_reponse_instituer_dist($faire, $type, $id, $qui, $opt){ + if (isset($qui['statut']) and $qui['statut'] <= '0minirezo' and !$qui['restreint']) return true; + else return false; +} + +/** + * 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_formulaires_reponse_voir_dist($faire, $type, $id, $qui, $opt){ + if (isset($qui['statut']) and $qui['statut'] <= '1comite') return true; + else return false; +} + +/** + * Autorisation de supprimer une réponse d'un formulaire formidable + * + * Il faut pouvoir éditer un formulaire pour pouvoir en supprimer des réponses + * + * @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_reponse_supprimer_dist($faire, $type, $id, $qui, $opt){ + // On récupère l'id du formulaire + if ($id_formulaire = intval(sql_getfetsel('id_formulaire', 'spip_formulaires_reponses', $id))) + return autoriser('editer', 'formulaire', $id_formulaire); + else + return false; +} + +?> diff --git a/formidable_1_0.orig/formidable_fonctions.php b/formidable_1_0.orig/formidable_fonctions.php new file mode 100644 index 0000000000000000000000000000000000000000..c8029993a84c0064c5c76bdbabc094a4b3c81007 --- /dev/null +++ b/formidable_1_0.orig/formidable_fonctions.php @@ -0,0 +1,10 @@ +<?php + +/** + * Chargement des fonctions pour les squelettes + * + * @package SPIP\Formidable\Fonctions +**/ + +include_spip('inc/formidable'); +include_spip('public/formidable_criteres'); diff --git a/formidable_1_0.orig/formidable_options.php b/formidable_1_0.orig/formidable_options.php new file mode 100644 index 0000000000000000000000000000000000000000..312d95eedd3bed8b7be87a9aa3c71267994f52c8 --- /dev/null +++ b/formidable_1_0.orig/formidable_options.php @@ -0,0 +1,107 @@ +<?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' + ) + ) +); + + +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/formidable_1_0.orig/formidable_pipelines.php b/formidable_1_0.orig/formidable_pipelines.php new file mode 100644 index 0000000000000000000000000000000000000000..902224bb5d5b358f1ec7d067af5432f07ab916fc --- /dev/null +++ b/formidable_1_0.orig/formidable_pipelines.php @@ -0,0 +1,35 @@ +<?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); + return $flux; +} + +?> diff --git a/formidable_1_0.orig/formulaires/configurer_formidable_analyse.html b/formidable_1_0.orig/formulaires/configurer_formidable_analyse.html new file mode 100644 index 0000000000000000000000000000000000000000..a8caa8bf1b7a176e8d27cb964ece1e8047520008 --- /dev/null +++ b/formidable_1_0.orig/formulaires/configurer_formidable_analyse.html @@ -0,0 +1,20 @@ +<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:> + })] + <input type="hidden" name="_meta_casier" value="formidable/analyse" /> + <p class="boutons"><span class="image_loading"> </span><input type="submit" class="submit" value="<:bouton_enregistrer:>" /></p> + </div> + </form> +</div> diff --git a/formidable_1_0.orig/formulaires/editer_formulaire.html b/formidable_1_0.orig/formulaires/editer_formulaire.html new file mode 100644 index 0000000000000000000000000000000000000000..cd8445eb682b4c6ea97d92fc3478b982d7bdca2b --- /dev/null +++ b/formidable_1_0.orig/formulaires/editer_formulaire.html @@ -0,0 +1,23 @@ +<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/formidable_1_0.orig/formulaires/editer_formulaire.php b/formidable_1_0.orig/formulaires/editer_formulaire.php new file mode 100644 index 0000000000000000000000000000000000000000..afa986be4aec418e07e0377de6f5ba2392b5f75b --- /dev/null +++ b/formidable_1_0.orig/formulaires/editer_formulaire.php @@ -0,0 +1,75 @@ +<?php + +// Sécurité +if (!defined("_ECRIRE_INC_VERSION")) return; + +include_spip('inc/saisies'); + +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')){ + // 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'){ + $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/formidable_1_0.orig/formulaires/editer_formulaire_champs.html b/formidable_1_0.orig/formulaires/editer_formulaire_champs.html new file mode 100644 index 0000000000000000000000000000000000000000..8e88ff4319c1c998f77a55ea8a5576476f7ad33c --- /dev/null +++ b/formidable_1_0.orig/formulaires/editer_formulaire_champs.html @@ -0,0 +1,39 @@ + +<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/formidable_1_0.orig/formulaires/editer_formulaire_champs.php b/formidable_1_0.orig/formulaires/editer_formulaire_champs.php new file mode 100644 index 0000000000000000000000000000000000000000..e999c7b86357dc6550f3ed24ff83b3f09b5ab918 --- /dev/null +++ b/formidable_1_0.orig/formulaires/editer_formulaire_champs.php @@ -0,0 +1,113 @@ +<?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/formidable_1_0.orig/formulaires/editer_formulaire_traitements.html b/formidable_1_0.orig/formulaires/editer_formulaire_traitements.html new file mode 100644 index 0000000000000000000000000000000000000000..31dbc36c8f0d8e4f021ae23d763f2477d9fb82a7 --- /dev/null +++ b/formidable_1_0.orig/formulaires/editer_formulaire_traitements.html @@ -0,0 +1,41 @@ +<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/formidable_1_0.orig/formulaires/editer_formulaire_traitements.php b/formidable_1_0.orig/formulaires/editer_formulaire_traitements.php new file mode 100644 index 0000000000000000000000000000000000000000..2303ec6e4ab2e4297f8a64a050cafa8c8af9b67f --- /dev/null +++ b/formidable_1_0.orig/formulaires/editer_formulaire_traitements.php @@ -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/formidable_1_0.orig/formulaires/formidable.html b/formidable_1_0.orig/formulaires/formidable.html new file mode 100644 index 0000000000000000000000000000000000000000..80b0648ed4b52228b4623ce3324ceae143f71b85 --- /dev/null +++ b/formidable_1_0.orig/formulaires/formidable.html @@ -0,0 +1,41 @@ +<BOUCLE_remplacer_le_formulaire(CONDITION){si #ENV{_remplacer_formulaire}}> + [(#REM) Afficher du HTML si prévu par un plugin ou pour les stats ] + [(#ENV**{_remplacer_formulaire})] +</BOUCLE_remplacer_le_formulaire> +<div class="formulaire_spip 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{_saisies}} + <li style="display:none;"> + <label for="mechantrobot-#ENV{id}"><:antispam_champ_vide:></label> + <input type="text" id="mechantrobot-#ENV{id}" name="mechantrobot" value="#ENV{mechantrobot}" /> + </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' value='<:bouton_valider:>' /> + </p> + </div></form> + ] + [(#EDITABLE|non) + [(#ENV{formidable_afficher_apres}|=={valeurs}|oui) + #VOIR_SAISIES{#ENV*{_saisies},#ENV} + ] + [(#ENV{formidable_afficher_apres}|=={rien}|oui) + ] + ] + <br /> +</div> +<//B_remplacer_le_formulaire> diff --git a/formidable_1_0.orig/formulaires/formidable.php b/formidable_1_0.orig/formulaires/formidable.php new file mode 100644 index 0000000000000000000000000000000000000000..723846f24d6e51e569bcf35bdf386f87c478b37d --- /dev/null +++ b/formidable_1_0.orig/formulaires/formidable.php @@ -0,0 +1,287 @@ +<?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 += array('_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 + $contexte += array_fill_keys(saisies_lister_champs($saisies), ''); + $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]; + } + } + + // On regarde si maintenant on a un tableau + 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 { + + // Si multiple = non mais que c'est modifiable, alors on va chercher + // la dernière réponse si elle existe + if ($options = $traitements['enregistrement'] + and !$options['multiple'] + and $options['modifiable'] + and $reponses = formidable_verifier_reponse_formulaire($formulaire['id_formulaire'], $options['identification']) + ){ + $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/formidable_1_0.orig/formulaires/importer_formulaire.html b/formidable_1_0.orig/formulaires/importer_formulaire.html new file mode 100644 index 0000000000000000000000000000000000000000..0d71a5fdce94d24a76a2af999685db403bb81f9b --- /dev/null +++ b/formidable_1_0.orig/formulaires/importer_formulaire.html @@ -0,0 +1,30 @@ +<div class="formulaire_spip formulaire_#ENV{form}[ formulaire_#ENV{form}-(#ENV{id})]"> + [<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/formidable_1_0.orig/formulaires/importer_formulaire.php b/formidable_1_0.orig/formulaires/importer_formulaire.php new file mode 100644 index 0000000000000000000000000000000000000000..edcf2c61f8f944eddb2773a414490d570201a7d5 --- /dev/null +++ b/formidable_1_0.orig/formulaires/importer_formulaire.php @@ -0,0 +1,53 @@ +<?php + +// Sécurité +if (!defined("_ECRIRE_INC_VERSION")) return; + +include_spip('inc/formidable'); + +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); + $retours['redirect'] = generer_url_ecrire('formulaire', "id_formulaire=$id_formulaire"); + } + } + + return $retours; +} + +?> diff --git a/formidable_1_0.orig/icones_barre/formulaire.png b/formidable_1_0.orig/icones_barre/formulaire.png new file mode 100644 index 0000000000000000000000000000000000000000..0cf4900332313261662b761eb344b93da63a3d0e Binary files /dev/null and b/formidable_1_0.orig/icones_barre/formulaire.png differ diff --git a/formidable_1_0.orig/images/formidable-128.png b/formidable_1_0.orig/images/formidable-128.png new file mode 100644 index 0000000000000000000000000000000000000000..8d6b21c66a6738a63c23b05c18d89a4c0d55eab7 Binary files /dev/null and b/formidable_1_0.orig/images/formidable-128.png differ diff --git a/formidable_1_0.orig/images/formidable-24.png b/formidable_1_0.orig/images/formidable-24.png new file mode 100644 index 0000000000000000000000000000000000000000..c8c577f17b2bfe418b95446efb8f117c66f80247 Binary files /dev/null and b/formidable_1_0.orig/images/formidable-24.png differ diff --git a/formidable_1_0.orig/images/formidable-64.png b/formidable_1_0.orig/images/formidable-64.png new file mode 100644 index 0000000000000000000000000000000000000000..80d5ab8601b48cc71ecbbd2d555d7158780f81e2 Binary files /dev/null and b/formidable_1_0.orig/images/formidable-64.png differ diff --git a/formidable_1_0.orig/images/formidable.svg b/formidable_1_0.orig/images/formidable.svg new file mode 100644 index 0000000000000000000000000000000000000000..5baf77e0a5ac4c12cd2a3282e65ef67984fa1865 --- /dev/null +++ b/formidable_1_0.orig/images/formidable.svg @@ -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/formidable_1_0.orig/images/formulaire-24.png b/formidable_1_0.orig/images/formulaire-24.png new file mode 100644 index 0000000000000000000000000000000000000000..ff847d080c2b8c158b3dccdff2d1534d06178ae6 Binary files /dev/null and b/formidable_1_0.orig/images/formulaire-24.png differ diff --git a/formidable_1_0.orig/images/formulaire-action-ajouter.png b/formidable_1_0.orig/images/formulaire-action-ajouter.png new file mode 100644 index 0000000000000000000000000000000000000000..8aef2957c18a03733564ddd83a6edb5771da56be Binary files /dev/null and b/formidable_1_0.orig/images/formulaire-action-ajouter.png differ diff --git a/formidable_1_0.orig/images/formulaire-analyse-24.png b/formidable_1_0.orig/images/formulaire-analyse-24.png new file mode 100644 index 0000000000000000000000000000000000000000..9965646437832a2053804dc55b33b9b190dbe27c Binary files /dev/null and b/formidable_1_0.orig/images/formulaire-analyse-24.png differ diff --git a/formidable_1_0.orig/images/formulaire-config-champs-24.png b/formidable_1_0.orig/images/formulaire-config-champs-24.png new file mode 100644 index 0000000000000000000000000000000000000000..0d77271074487e5ea30bbcd2f7c6eed6bc3bcdea Binary files /dev/null and b/formidable_1_0.orig/images/formulaire-config-champs-24.png differ diff --git a/formidable_1_0.orig/images/formulaire-config-traitements-24.png b/formidable_1_0.orig/images/formulaire-config-traitements-24.png new file mode 100644 index 0000000000000000000000000000000000000000..f362e72fbbde43b4aba339ad21a6c052b8069dd9 Binary files /dev/null and b/formidable_1_0.orig/images/formulaire-config-traitements-24.png differ diff --git a/formidable_1_0.orig/images/formulaire-dupliquer-24.png b/formidable_1_0.orig/images/formulaire-dupliquer-24.png new file mode 100644 index 0000000000000000000000000000000000000000..a4ec44f9213f3586049715553d506c47756a4fee Binary files /dev/null and b/formidable_1_0.orig/images/formulaire-dupliquer-24.png differ diff --git a/formidable_1_0.orig/images/formulaire-editer-24.png b/formidable_1_0.orig/images/formulaire-editer-24.png new file mode 100644 index 0000000000000000000000000000000000000000..0bb3e266d5b7a38253cc8cc70e77b48475e5528a Binary files /dev/null and b/formidable_1_0.orig/images/formulaire-editer-24.png differ diff --git a/formidable_1_0.orig/images/formulaire-exporter-24.png b/formidable_1_0.orig/images/formulaire-exporter-24.png new file mode 100644 index 0000000000000000000000000000000000000000..33508572ff1186c138da781b1c3c03fa27ef9b85 Binary files /dev/null and b/formidable_1_0.orig/images/formulaire-exporter-24.png differ diff --git a/formidable_1_0.orig/images/formulaire-nouveau-48.png b/formidable_1_0.orig/images/formulaire-nouveau-48.png new file mode 100644 index 0000000000000000000000000000000000000000..a0c803e3f09a3a23715a2b49c229cd784cabe632 Binary files /dev/null and b/formidable_1_0.orig/images/formulaire-nouveau-48.png differ diff --git a/formidable_1_0.orig/images/formulaire-reponse-24.png b/formidable_1_0.orig/images/formulaire-reponse-24.png new file mode 100644 index 0000000000000000000000000000000000000000..1bbdb51acdf26fccc0d4b409e0e543b213e279ac Binary files /dev/null and b/formidable_1_0.orig/images/formulaire-reponse-24.png differ diff --git a/formidable_1_0.orig/images/formulaire-reponse-supprimer-24.png b/formidable_1_0.orig/images/formulaire-reponse-supprimer-24.png new file mode 100644 index 0000000000000000000000000000000000000000..897c63e1c3b275c13d076fbed552abf50902e79a Binary files /dev/null and b/formidable_1_0.orig/images/formulaire-reponse-supprimer-24.png differ diff --git a/formidable_1_0.orig/images/formulaire-reponses-24.png b/formidable_1_0.orig/images/formulaire-reponses-24.png new file mode 100644 index 0000000000000000000000000000000000000000..ec0a2b05a2d7a392c8a4f464c5069d6af0a684aa Binary files /dev/null and b/formidable_1_0.orig/images/formulaire-reponses-24.png differ diff --git a/formidable_1_0.orig/images/formulaire-reponses-exporter-24.png b/formidable_1_0.orig/images/formulaire-reponses-exporter-24.png new file mode 100644 index 0000000000000000000000000000000000000000..94d0cec41e48d9e59450e829c47b2441694e7ceb Binary files /dev/null and b/formidable_1_0.orig/images/formulaire-reponses-exporter-24.png differ diff --git a/formidable_1_0.orig/images/formulaire-supprimer-24.png b/formidable_1_0.orig/images/formulaire-supprimer-24.png new file mode 100644 index 0000000000000000000000000000000000000000..1819e5ef1685d9e19518d13047a1988dcba88477 Binary files /dev/null and b/formidable_1_0.orig/images/formulaire-supprimer-24.png differ diff --git a/formidable_1_0.orig/inc/formidable.php b/formidable_1_0.orig/inc/formidable.php new file mode 100644 index 0000000000000000000000000000000000000000..172b81d0bb2fbc09a71bc6262db1a99f10691d66 --- /dev/null +++ b/formidable_1_0.orig/inc/formidable.php @@ -0,0 +1,226 @@ +<?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' + * @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'){ + 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; + + // 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='.intval($id_auteur).')' : ')'); + else + $where = 'id_auteur='.intval($id_auteur); + } + + // sinon sur l'id_auteur + else { + if ($id_auteur) + $where = 'id_auteur='.intval($id_auteur); + else + $where = '(cookie='.sql_quote($cookie).($id_auteur ? ' OR id_auteur='.intval($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){ + // 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 + return recuperer_fond( + 'saisies-analyses/_base', + $contexte + ); +} + + +/** + * 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 tenter_unserialize + * + * @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)); +} + +?> diff --git a/formidable_1_0.orig/lang/formidable.xml b/formidable_1_0.orig/lang/formidable.xml new file mode 100644 index 0000000000000000000000000000000000000000..42255c45479807a3369f85b91b982f560a44f83b --- /dev/null +++ b/formidable_1_0.orig/lang/formidable.xml @@ -0,0 +1,12 @@ +<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" /> + <langue code="en" url="http://trad.spip.net/tradlang_module/formidable?lang_cible=en"> + <traducteur nom="Benitron" lien="http://trad.spip.net/auteur/benitron" /> + <traducteur nom="Paolo" lien="http://trad.spip.net/auteur/paolo" /> + </langue> + <langue code="fr" /> + <langue code="it" /> + <langue code="sk" url="http://trad.spip.net/tradlang_module/formidable?lang_cible=sk"> + <traducteur nom="jaro" lien="http://trad.spip.net/auteur/jaro" /> + </langue> +</traduction> diff --git a/formidable_1_0.orig/lang/formidable_de.php b/formidable_1_0.orig/lang/formidable_de.php new file mode 100644 index 0000000000000000000000000000000000000000..6fd86e07385b329bc3ba4f7a5c85f201e40ed092 --- /dev/null +++ b/formidable_1_0.orig/lang/formidable_de.php @@ -0,0 +1,161 @@ +<?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_longueur_moyenne' => 'Durchschnittliche Anzahl Worte', + 'analyse_nb_reponses_total' => '@nb@ personnes ont répondu à ce formulaire.', # NEW + 'analyse_sans_reponse' => 'Leere Antworten', + 'analyse_une_reponse_total' => 'Une personne a répondu à ce formulaire.', # NEW + 'analyse_zero_reponse_total' => 'Aucune personne n\'a répondu à ce formulaire.', # NEW + 'aucun_traitement' => 'Aucun traitement', # NEW + + // B + 'bouton_formulaires' => 'Formulare', + + // 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 !', # NEW + 'cfg_analyse_classe_label' => 'Classe CSS de la barre de progression', # NEW + 'cfg_titre_page_configurer_formidable' => 'Configurer Formidable', # NEW + 'cfg_titre_parametrages_analyse' => 'Paramétrages de l\'analyse des réponses', # NEW + + // 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', # NEW + 'editer_apres_choix_redirige' => 'Rediriger vers une nouvelle adresse', # NEW + 'editer_apres_choix_rien' => 'Rien du tout', # NEW + 'editer_apres_choix_stats' => 'Les statistiques des réponses', # NEW + 'editer_apres_choix_valeurs' => 'Les valeurs saisies', # NEW + 'editer_apres_explication' => 'Après validation, afficher à la place du formulaire :', # NEW + 'editer_apres_label' => 'Afficher ensuite', # NEW + '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_redirige_url' => 'Adresse de redirection après validation', # NEW + 'editer_redirige_url_explication' => 'Laissez vide si vous souhaitez rester sur la même page', # NEW + '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 + '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 + 'identification_par_cookie' => 'Par cookie', # NEW + 'identification_par_id_auteur' => 'Par l\'identifiant (id_auteur) de la personne authentifiée', # NEW + 'importer_formulaire' => 'Formular importieren', + 'importer_formulaire_fichier_label' => 'Dateien importeieren', + 'importer_formulaire_format_label' => 'Format der Datei', + + // M + 'modele_label_formulaire_formidable' => 'Quel formulaire ?', # NEW + 'modele_nom_formulaire' => 'un formulaire', # NEW + + // N + 'noisette_label_afficher_titre_formulaire' => 'Afficher le titre du formulaire ?', # NEW + 'noisette_label_identifiant' => 'Formulaire à afficher :', # NEW + 'noisette_nom_noisette_formulaire' => 'Formulaire', # NEW + + // R + 'reponse_aucune' => 'Aucune réponse', # NEW + '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?', + 'reponse_une' => '1 réponse', # NEW + '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_nb' => '@nb@ réponses', # NEW + '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. :)', + + // T + 'titre_cadre_raccourcis' => 'Raccourcis', # NEW + 'traitements_actives' => 'Traitements activés', # NEW + '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_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".', # NEW + 'traiter_email_option_vrai_envoyeur_label' => 'Insérer le courriel de l\'envoyeur dans le champ "From"', # NEW + '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_erreur_edition_reponse_inexistante' => 'La réponse à éditer est introuvable.', # NEW + 'traiter_enregistrement_option_identification_explication' => 'Si les réponses sont modifiables, quel procédé utiliser en priorité pour connaitre la réponse à modifier ?', # NEW + 'traiter_enregistrement_option_identification_label' => 'Identification', # NEW + '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/formidable_1_0.orig/lang/formidable_en.php b/formidable_1_0.orig/lang/formidable_en.php new file mode 100644 index 0000000000000000000000000000000000000000..b5719f62237faec5a3b26ab36be594d6c5034dec --- /dev/null +++ b/formidable_1_0.orig/lang/formidable_en.php @@ -0,0 +1,161 @@ +<?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_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', + + // 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_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 + '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!', + + // 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_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/formidable_1_0.orig/lang/formidable_fr.php b/formidable_1_0.orig/lang/formidable_fr.php new file mode 100644 index 0000000000000000000000000000000000000000..661e14a90e856f50dc841c9e66a6e22b4cfb986e --- /dev/null +++ b/formidable_1_0.orig/lang/formidable_fr.php @@ -0,0 +1,159 @@ +<?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 + 'analyse_avec_reponse' => 'Réponses non-vide', + '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', + + // 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_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 + '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 ?', + '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. :)', + + // 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_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_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_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/formidable_1_0.orig/lang/formidable_it.php b/formidable_1_0.orig/lang/formidable_it.php new file mode 100644 index 0000000000000000000000000000000000000000..ff9a5c2d040b1d5dfd08c054ddcb744edc6ae40c --- /dev/null +++ b/formidable_1_0.orig/lang/formidable_it.php @@ -0,0 +1,161 @@ +<?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_longueur_moyenne' => 'Lunghezza media in numero di parole', + 'analyse_nb_reponses_total' => '@nb@ personnes ont répondu à ce formulaire.', # NEW + 'analyse_sans_reponse' => 'Risposte vuote', + 'analyse_une_reponse_total' => 'Une personne a répondu à ce formulaire.', # NEW + 'analyse_zero_reponse_total' => 'Aucune personne n\'a répondu à ce formulaire.', # NEW + 'aucun_traitement' => 'Aucun traitement', # NEW + + // B + 'bouton_formulaires' => 'Moduli', + + // 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 !', # NEW + 'cfg_analyse_classe_label' => 'Classe CSS de la barre de progression', # NEW + 'cfg_titre_page_configurer_formidable' => 'Configurer Formidable', # NEW + 'cfg_titre_parametrages_analyse' => 'Paramétrages de l\'analyse des réponses', # NEW + + // 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_stats' => 'Les statistiques des réponses', # NEW + '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_aucune' => 'Aucune réponse', # NEW + '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?', + 'reponse_une' => '1 réponse', # NEW + '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_nb' => '@nb@ réponses', # NEW + 'reponses_voir_detail' => 'Vedi la risposta', + 'retour_aucun_traitement' => 'La risposta è stata correttamente inviata. Grazie :)', + + // T + 'titre_cadre_raccourcis' => 'Raccourcis', # NEW + 'traitements_actives' => 'Traitements activés', # NEW + '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_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".', # NEW + 'traiter_email_option_vrai_envoyeur_label' => 'Insérer le courriel de l\'envoyeur dans le champ "From"', # NEW + '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_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/formidable_1_0.orig/lang/formidable_sk.php b/formidable_1_0.orig/lang/formidable_sk.php new file mode 100644 index 0000000000000000000000000000000000000000..20f873a5162d815cae54c7c77c6b0e3a6368384d --- /dev/null +++ b/formidable_1_0.orig/lang/formidable_sk.php @@ -0,0 +1,161 @@ +<?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_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Ã', + + // 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' => 'Popis', + '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_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 + '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Ã. :-)', + + // 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_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/formidable_1_0.orig/lang/formulaire_fr.php b/formidable_1_0.orig/lang/formulaire_fr.php new file mode 100644 index 0000000000000000000000000000000000000000..f6663cd9e6c1752f8d4d946922f67047ac4232af --- /dev/null +++ b/formidable_1_0.orig/lang/formulaire_fr.php @@ -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/formidable_1_0.orig/lang/formulaires_reponse_fr.php b/formidable_1_0.orig/lang/formulaires_reponse_fr.php new file mode 100644 index 0000000000000000000000000000000000000000..108f4e2a5c6d26cdab7f2c37c7a17471a34ce1de --- /dev/null +++ b/formidable_1_0.orig/lang/formulaires_reponse_fr.php @@ -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/formidable_1_0.orig/lang/paquet-formidable_fr.php b/formidable_1_0.orig/lang/paquet-formidable_fr.php new file mode 100644 index 0000000000000000000000000000000000000000..972823924062859af7fd4dbf5e6c93d52b3e97a5 --- /dev/null +++ b/formidable_1_0.orig/lang/paquet-formidable_fr.php @@ -0,0 +1,19 @@ +<?php + +// Ceci est un fichier langue de SPIP -- This is a SPIP language file + +/// Fichier produit par PlugOnet +// Module: paquet-formidable +// Langue: fr +// Date: 05-09-2012 18:51:15 +// Items: 2 + +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', +); +?> \ No newline at end of file diff --git a/formidable_1_0.orig/modeles/formulaire_aide_memoire.html b/formidable_1_0.orig/modeles/formulaire_aide_memoire.html new file mode 100644 index 0000000000000000000000000000000000000000..c1747f7741badff0c10f274f428dfc7f96fc0198 --- /dev/null +++ b/formidable_1_0.orig/modeles/formulaire_aide_memoire.html @@ -0,0 +1,17 @@ +<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/formidable_1_0.orig/modeles/formulaire_analyse.html b/formidable_1_0.orig/modeles/formulaire_analyse.html new file mode 100644 index 0000000000000000000000000000000000000000..07a3821795cc52cb2469b1b4a8c5e3f59aa149bb --- /dev/null +++ b/formidable_1_0.orig/modeles/formulaire_analyse.html @@ -0,0 +1,65 @@ +<BOUCLE_formulaire(FORMULAIRES){id_formulaire}> +<div class='formidable_analyse'> +[(#REM) On fait un tableau qui contient toutes les réponses, classées par champ ] +#SET{valeurs,#ARRAY} +#SET{reponses_total,0} +<BOUCLE_reponses(FORMULAIRES_REPONSES){id_formulaire}> +<BOUCLE_champs(FORMULAIRES_REPONSES_CHAMPS){id_formulaires_reponse}{nom ?= #ENV{nom}> +#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) + [(#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/formidable_1_0.orig/modeles/formulaire_formidable.yaml b/formidable_1_0.orig/modeles/formulaire_formidable.yaml new file mode 100644 index 0000000000000000000000000000000000000000..79dc4e9d525690a7eb9c562ffbaa2fa34b199846 --- /dev/null +++ b/formidable_1_0.orig/modeles/formulaire_formidable.yaml @@ -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/formidable_1_0.orig/modeles/formulaires_reponse.html b/formidable_1_0.orig/modeles/formulaires_reponse.html new file mode 100644 index 0000000000000000000000000000000000000000..02d78a07e3d3fd7d6663d062eb5a92aa0b3caa5b --- /dev/null +++ b/formidable_1_0.orig/modeles/formulaires_reponse.html @@ -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/formidable_1_0.orig/noisettes/formulaire_formidable.html b/formidable_1_0.orig/noisettes/formulaire_formidable.html new file mode 100644 index 0000000000000000000000000000000000000000..95f7a4c6312505c90c310c77e6286f78d91d425f --- /dev/null +++ b/formidable_1_0.orig/noisettes/formulaire_formidable.html @@ -0,0 +1,2 @@ +<BOUCLE_formulaire(FORMULAIRES){identifiant}{0,1}>[(#ENV{afficher_titre_formulaire}|oui)[<h2 class="h2">(#TITRE|typo)</h2>]]</BOUCLE_formulaire> +<div class="ajax">#FORMULAIRE_FORMIDABLE{#ENV{identifiant}}</div> \ No newline at end of file diff --git a/formidable_1_0.orig/noisettes/formulaire_formidable.yaml b/formidable_1_0.orig/noisettes/formulaire_formidable.yaml new file mode 100644 index 0000000000000000000000000000000000000000..dd6679c0c123ebbf4a044d5335c30317f7dcfeb3 --- /dev/null +++ b/formidable_1_0.orig/noisettes/formulaire_formidable.yaml @@ -0,0 +1,15 @@ +nom: '<:formidable:noisette_nom_noisette_formulaire:>' +icon: 'images/formulaire-24.png' +parametres: + - + saisie: 'formulaire_formidable' + options: + nom: 'identifiant' + label: '<:formidable:noisette_label_identifiant:>' + cacher_option_intro: 'oui' + - + saisie: 'oui_non' + options: + nom: 'afficher_titre_formulaire' + label: '<:formidable:noisette_label_afficher_titre_formulaire:>' + defaut: '' \ No newline at end of file diff --git a/formidable_1_0.orig/notifications/formulaire_accuse.html b/formidable_1_0.orig/notifications/formulaire_accuse.html new file mode 100644 index 0000000000000000000000000000000000000000..559a130ca7f0d36b2bd06a168306c4b7e3606e6c --- /dev/null +++ b/formidable_1_0.orig/notifications/formulaire_accuse.html @@ -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/formidable_1_0.orig/notifications/formulaire_email.html b/formidable_1_0.orig/notifications/formulaire_email.html new file mode 100644 index 0000000000000000000000000000000000000000..9f3b5e939e7db8e029842442180f1c38dc767b07 --- /dev/null +++ b/formidable_1_0.orig/notifications/formulaire_email.html @@ -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/formidable_1_0.orig/paquet.xml b/formidable_1_0.orig/paquet.xml new file mode 100644 index 0000000000000000000000000000000000000000..0221d330f02b01b4118e6dd3c40df410d65b2ac9 --- /dev/null +++ b/formidable_1_0.orig/paquet.xml @@ -0,0 +1,35 @@ +<paquet + prefix="formidable" + categorie="communication" + version="1.3.5" + etat="dev" + compatibilite="[3.0.0-dev;3.0.99]" + logo="images/formidable-64.png" + schema="0.5.1" + documentation="http://www.spip-contrib.net/Formidable-le-generateur-de" +> + + <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.10.1;[" /> + <necessite nom="verifier" compatibilite="[0.1;[" /> + <necessite nom="yaml" compatibilite="[1.1;[" /> + <necessite nom="facteur" compatibilite="[1.5.3;[" /> + + <menu nom="formulaires" titre="formidable:bouton_formulaires" parent="menu_edition" icone="images/formulaire-16.png" /> +</paquet> diff --git a/formidable_1_0.orig/prive/objets/contenu/formulaire.html b/formidable_1_0.orig/prive/objets/contenu/formulaire.html new file mode 100644 index 0000000000000000000000000000000000000000..e22434c69dfac50a1b60cd32d7aa12e32db7dc75 --- /dev/null +++ b/formidable_1_0.orig/prive/objets/contenu/formulaire.html @@ -0,0 +1,6 @@ +<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/formidable_1_0.orig/prive/objets/contenu/formulaires_reponse.html b/formidable_1_0.orig/prive/objets/contenu/formulaires_reponse.html new file mode 100644 index 0000000000000000000000000000000000000000..30bccf4ef067e934ee5b7abd4d74fc8f881c9fc5 --- /dev/null +++ b/formidable_1_0.orig/prive/objets/contenu/formulaires_reponse.html @@ -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/formidable_1_0.orig/prive/objets/infos/formulaire.html b/formidable_1_0.orig/prive/objets/infos/formulaire.html new file mode 100644 index 0000000000000000000000000000000000000000..59afec02b69564fa14fa62686648e9f3bdf3422b --- /dev/null +++ b/formidable_1_0.orig/prive/objets/infos/formulaire.html @@ -0,0 +1,6 @@ +<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/formidable_1_0.orig/prive/objets/infos/formulaires_reponse.html b/formidable_1_0.orig/prive/objets/infos/formulaires_reponse.html new file mode 100644 index 0000000000000000000000000000000000000000..049084278c8822e367faf7aef86b4e2bc6d7c202 --- /dev/null +++ b/formidable_1_0.orig/prive/objets/infos/formulaires_reponse.html @@ -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_reponses,#ID_FORMULAIRES_REPONSE})] + +</div> +</BOUCLE_formulaires_reponse> \ No newline at end of file diff --git a/formidable_1_0.orig/prive/objets/liste/formulaires.html b/formidable_1_0.orig/prive/objets/liste/formulaires.html new file mode 100644 index 0000000000000000000000000000000000000000..f2a809838c5e2149c80f42e986bd726f12fa5cd6 --- /dev/null +++ b/formidable_1_0.orig/prive/objets/liste/formulaires.html @@ -0,0 +1,45 @@ +[(#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/formidable_1_0.orig/prive/objets/liste/formulaires_reponses.html b/formidable_1_0.orig/prive/objets/liste/formulaires_reponses.html new file mode 100644 index 0000000000000000000000000000000000000000..9d310c092c53ed7126cb70283b4d2a9cc5fddd2f --- /dev/null +++ b/formidable_1_0.orig/prive/objets/liste/formulaires_reponses.html @@ -0,0 +1,48 @@ +[(#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/formidable_1_0.orig/prive/squelettes/contenu/configurer_formidable.html b/formidable_1_0.orig/prive/squelettes/contenu/configurer_formidable.html new file mode 100644 index 0000000000000000000000000000000000000000..df8aa01100455662cb456bd844f7467ca1667c96 --- /dev/null +++ b/formidable_1_0.orig/prive/squelettes/contenu/configurer_formidable.html @@ -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/formidable_1_0.orig/prive/squelettes/contenu/formulaire.html b/formidable_1_0.orig/prive/squelettes/contenu/formulaire.html new file mode 100644 index 0000000000000000000000000000000000000000..6a19dc7d4fba3800944f255a8533e0bb71170431 --- /dev/null +++ b/formidable_1_0.orig/prive/squelettes/contenu/formulaire.html @@ -0,0 +1,35 @@ +<BOUCLE_formulaire(FORMULAIRES){id_formulaire}> +[(#BOITE_OUVRIR{ + [(#AUTORISER{editer, formulaire, #ID_FORMULAIRE}|oui) + [(#URL_ECRIRE{formulaire_edit,id_formulaire=#ID_FORMULAIRE} + |icone_verticale{<:formidable:editer_modifier_formulaire:>,formulaire,formulaire-editer-24,right})] + ] + [<h1>(#TITRE|sinon{<:info_sans_titre:>})[(#CHEMIN_IMAGE{formulaire-24.png}|balise_img{formulaire,cadre-icone})]</h1>] +,simple fiche_objet})] + + +<!--affiche_milieu--> + +<div id="wysiwyg"> +<INCLURE{fond=prive/objets/contenu/formulaire,id=#ID_FORMULAIRE,id_formulaire=#ID_FORMULAIRE,virtuel=oui,ajax=wysiwyg,wysiwyg=1}> +</div> + + #SET{traitements_disponibles, #VAL|traitements_lister_disponibles} + [(#BOITE_OUVRIR{#CHEMIN_IMAGE{formulaire-config-traitements-24.png} + |balise_img{'',cadre-icone} + |concat{<:formidable:traitements_actives:>},'simple traitements'})] + <B_traitements> + <ul class='spip'> + <BOUCLE_traitements(POUR){tableau #TRAITEMENTS|unserialize|sinon{#ARRAY}}> + <li>[(#GET{traitements_disponibles}|table_valeur{#CLE}|table_valeur{titre})]</li> + </BOUCLE_traitements> + </ul> + </B_traitements> + <p><:formidable:aucun_traitement:></p> + <//B_traitements> + #BOITE_FERMER + + #FORMULAIRE_FORMIDABLE{#ID_FORMULAIRE} + +#BOITE_FERMER +</BOUCLE_formulaire> diff --git a/formidable_1_0.orig/prive/squelettes/contenu/formulaire_edit.html b/formidable_1_0.orig/prive/squelettes/contenu/formulaire_edit.html new file mode 100644 index 0000000000000000000000000000000000000000..b3eedd0b25b1715249aa62bb40ad4d86e46eb0d0 --- /dev/null +++ b/formidable_1_0.orig/prive/squelettes/contenu/formulaire_edit.html @@ -0,0 +1,38 @@ +<BOUCLE_autoriser(CONDITION){si #AUTORISER{editer, formulaire}}> +[(#BOITE_OUVRIR{'','info'})] +<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> + <BOUCLE_formulaire(FORMULAIRES){id_formulaire=#VAL{id_formulaire}|_request}> + [(#URL_ECRIRE{formulaire}|parametre_url{id_formulaire,#ID_FORMULAIRE}|icone_verticale{<:retour:>,formulaire,formulaire-24,left})] + + <h4><:formidable:editer_modifier_formulaire:></h4> + <h1>#TITRE</h1> + + #SET{configurer,#ENV{configurer}|in_array{#ARRAY{0,formulaire,1,champs,2,traitements}}|?{#ENV{configurer},champs}} + </BOUCLE_formulaire> + [(#URL_ECRIRE{formulaires}|icone_verticale{<:retour:>,formulaire,formulaire-24,left})] + + <:formidable:editer_modifier_formulaire:> + <h1> + [(#ENV{nouveau}|=={oui}|?{<:formidable:editer_nouveau:>,#VAL{id_menu}|_request})] + </h1> + + #SET{configurer,formulaire} + <//B_formulaire> + + [(#GET{configurer}|=={formulaire}|oui) + #FORMULAIRE_EDITER_FORMULAIRE{#VAL{id_formulaire}|_request|sinon{0}, #VAL{nouveau}|_request|sinon{''}} + ] + [(#GET{configurer}|=={champs}|oui) + #FORMULAIRE_EDITER_FORMULAIRE_CHAMPS{#ENV{id_formulaire}} + ] + [(#GET{configurer}|=={traitements}|oui) + #FORMULAIRE_EDITER_FORMULAIRE_TRAITEMENTS{#ENV{id_formulaire}} + ] +#BOITE_FERMER +</BOUCLE_autoriser> diff --git a/formidable_1_0.orig/prive/squelettes/contenu/formulaires.html b/formidable_1_0.orig/prive/squelettes/contenu/formulaires.html new file mode 100644 index 0000000000000000000000000000000000000000..f655ed305d33dc0a612ea820b529ccab1c0abac7 --- /dev/null +++ b/formidable_1_0.orig/prive/squelettes/contenu/formulaires.html @@ -0,0 +1,13 @@ +[(#BOITE_OUVRIR{ + <h1><:formidable:bouton_formulaires:></h1> + <p><:formidable:formulaires_introduction:></p> +})] +#BOITE_FERMER + +<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,center})] +] diff --git a/formidable_1_0.orig/prive/squelettes/contenu/formulaires_analyse.html b/formidable_1_0.orig/prive/squelettes/contenu/formulaires_analyse.html new file mode 100644 index 0000000000000000000000000000000000000000..452436e5b352b94cca4c973bf04fb138149a7de1 --- /dev/null +++ b/formidable_1_0.orig/prive/squelettes/contenu/formulaires_analyse.html @@ -0,0 +1,24 @@ +<BOUCLE_formulaire(FORMULAIRES){id_formulaire}> +<BOUCLE_autoriser(CONDITION){si #AUTORISER{voir, formulaires_reponse}}> +[(#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/formidable_1_0.orig/prive/squelettes/contenu/formulaires_reponse.html b/formidable_1_0.orig/prive/squelettes/contenu/formulaires_reponse.html new file mode 100644 index 0000000000000000000000000000000000000000..40a22f001fd5a7ad08a1585eb098218925f12787 --- /dev/null +++ b/formidable_1_0.orig/prive/squelettes/contenu/formulaires_reponse.html @@ -0,0 +1,24 @@ +<BOUCLE_formulaires_reponse(FORMULAIRES_REPONSES){tout}{id_formulaires_reponse}> +<BOUCLE_autoriser(CONDITION){si #AUTORISER{voir, formulaires_reponse, #ID_FORMULAIRES_REPONSE}}> +[(#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/formidable_1_0.orig/prive/squelettes/contenu/formulaires_reponses.html b/formidable_1_0.orig/prive/squelettes/contenu/formulaires_reponses.html new file mode 100644 index 0000000000000000000000000000000000000000..63e9cb599c5251c38572a111cc4e30e50ab52bef --- /dev/null +++ b/formidable_1_0.orig/prive/squelettes/contenu/formulaires_reponses.html @@ -0,0 +1,15 @@ +<BOUCLE_formulaire(FORMULAIRES){id_formulaire}> +<BOUCLE_autoriser(CONDITION){si #AUTORISER{voir, formulaires_reponse}}> +[(#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/formidable_1_0.orig/prive/squelettes/extra/formulaire.html b/formidable_1_0.orig/prive/squelettes/extra/formulaire.html new file mode 100644 index 0000000000000000000000000000000000000000..4407c024e726aaaef33f331f494e66364475169c --- /dev/null +++ b/formidable_1_0.orig/prive/squelettes/extra/formulaire.html @@ -0,0 +1,19 @@ +<BOUCLE_formulaire(FORMULAIRES){id_formulaire}> +<!--#extra--> +[(#BOITE_OUVRIR{<:formidable:titre_cadre_raccourcis:>,'simple','section'})] + [(#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:>,'simple','section'})] + <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/formidable_1_0.orig/prive/squelettes/extra/formulaire_edit.html b/formidable_1_0.orig/prive/squelettes/extra/formulaire_edit.html new file mode 100644 index 0000000000000000000000000000000000000000..959b0ebe1982eb827c3b7b5f2302d1ff1038ba27 --- /dev/null +++ b/formidable_1_0.orig/prive/squelettes/extra/formulaire_edit.html @@ -0,0 +1,9 @@ +<BOUCLE_formulaire(FORMULAIRES) {id_formulaire}> +<!--#extra--> +[(#ENV{configurer}|=={traitements}|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/formidable_1_0.orig/prive/squelettes/extra/formulaires_reponses.html b/formidable_1_0.orig/prive/squelettes/extra/formulaires_reponses.html new file mode 100644 index 0000000000000000000000000000000000000000..eece13ca04abe6c13f7f652f20863a94aced9602 --- /dev/null +++ b/formidable_1_0.orig/prive/squelettes/extra/formulaires_reponses.html @@ -0,0 +1,8 @@ +<BOUCLE_formulaire(FORMULAIRES){id_formulaire}> +<BOUCLE_autoriser(CONDITION){si #AUTORISER{voir, formulaires_reponse}}> +[(#BOITE_OUVRIR{<:formidable:titre_cadre_raccourcis:>,'info'})] +[(#URL_ACTION_AUTEUR{exporter_formulaires_reponses,#ID_FORMULAIRE} + |icone_horizontale{<:formidable:reponses_exporter:>,formulaire,formulaire-reponses-exporter-24,center})] +#BOITE_FERMER +</BOUCLE_autoriser> +</BOUCLE_formulaire> diff --git a/formidable_1_0.orig/prive/squelettes/hierarchie/formulaire.html b/formidable_1_0.orig/prive/squelettes/hierarchie/formulaire.html new file mode 100644 index 0000000000000000000000000000000000000000..2b7798d42f8b2a05ba87bc4bcf970de9344382e4 --- /dev/null +++ b/formidable_1_0.orig/prive/squelettes/hierarchie/formulaire.html @@ -0,0 +1,5 @@ +<!-- hierarchie --> +<BOUCLE_formulaire(FORMULAIRES){id_formulaire}> +<a href="#URL_ECRIRE{formulaires}"><:formulaire:titre_formulaires:></a> > +<strong class="on">#TITRE</strong> +</BOUCLE_formulaire> diff --git a/formidable_1_0.orig/prive/squelettes/hierarchie/formulaire_edit.html b/formidable_1_0.orig/prive/squelettes/hierarchie/formulaire_edit.html new file mode 100644 index 0000000000000000000000000000000000000000..a41dfd9dcfa08cfc43f025a36c2179ce594f84ab --- /dev/null +++ b/formidable_1_0.orig/prive/squelettes/hierarchie/formulaire_edit.html @@ -0,0 +1,5 @@ +<BOUCLE_formulaire(FORMULAIRES){id_formulaire}> +<a href="#URL_ECRIRE{formulaires}"><:formulaire:titre_formulaires:></a> > +<a href="[(#URL_ECRIRE{formulaire}|parametre_url{id_formulaire,#ID_FORMULAIRE})]">#TITRE</a> > +<strong class="on"><:formulaire:modifier_formulaire:></strong> +</BOUCLE_formulaire> diff --git a/formidable_1_0.orig/prive/squelettes/hierarchie/formulaires.html b/formidable_1_0.orig/prive/squelettes/hierarchie/formulaires.html new file mode 100644 index 0000000000000000000000000000000000000000..7fd040aa0dab686493d9cca0127408ca8f8131fb --- /dev/null +++ b/formidable_1_0.orig/prive/squelettes/hierarchie/formulaires.html @@ -0,0 +1,2 @@ +<!-- hierarchie --> +<strong class="on"><:formulaire:titre_formulaires:></strong> diff --git a/formidable_1_0.orig/prive/squelettes/hierarchie/formulaires_analyse.html b/formidable_1_0.orig/prive/squelettes/hierarchie/formulaires_analyse.html new file mode 100644 index 0000000000000000000000000000000000000000..81cbd20c16eef107d5adaaa24174ae53a9b8b4c9 --- /dev/null +++ b/formidable_1_0.orig/prive/squelettes/hierarchie/formulaires_analyse.html @@ -0,0 +1,7 @@ +<BOUCLE_formulaire(FORMULAIRES){id_formulaire}> +<BOUCLE_autoriser(CONDITION){si #AUTORISER{voir, formulaires_reponse}}> +<a href="#URL_ECRIRE{formulaires}"><:formulaire:titre_formulaires:></a> > +<a href="[(#URL_ECRIRE{formulaire}|parametre_url{id_formulaire,#ID_FORMULAIRE})]">#TITRE</a> > +<strong class="on"><:formidable:reponses_analyse:></strong> +</BOUCLE_autoriser> +</BOUCLE_formulaire> diff --git a/formidable_1_0.orig/prive/squelettes/hierarchie/formulaires_reponse.html b/formidable_1_0.orig/prive/squelettes/hierarchie/formulaires_reponse.html new file mode 100644 index 0000000000000000000000000000000000000000..a4ebff6437b829ab18dad4a101cf83b0cd690fd8 --- /dev/null +++ b/formidable_1_0.orig/prive/squelettes/hierarchie/formulaires_reponse.html @@ -0,0 +1,6 @@ +<BOUCLE_formulaire(FORMULAIRES_REPONSES){id_formulaires_reponse}> +<a href="#URL_ECRIRE{formulaires}"><:formulaire:titre_formulaires:></a> > +<a href="[(#URL_ECRIRE{formulaire}|parametre_url{id_formulaire,#ID_FORMULAIRE})]">#INFO_TITRE{formulaire,#ID_FORMULAIRE}</a> > +<a class="on" href="[(#URL_ECRIRE{formulaires_reponses}|parametre_url{id_formulaire,#ID_FORMULAIRE})]"><:formidable:voir_reponses:></a> > +<strong class="on"><:formulaires_reponse:titre_formulaires_reponse:></strong> +</BOUCLE_formulaire> diff --git a/formidable_1_0.orig/prive/squelettes/hierarchie/formulaires_reponses.html b/formidable_1_0.orig/prive/squelettes/hierarchie/formulaires_reponses.html new file mode 100644 index 0000000000000000000000000000000000000000..bfe35597921ba46a8541932290936f838ff61379 --- /dev/null +++ b/formidable_1_0.orig/prive/squelettes/hierarchie/formulaires_reponses.html @@ -0,0 +1,5 @@ +<BOUCLE_formulaire(FORMULAIRES){id_formulaire}> +<a href="#URL_ECRIRE{formulaires}"><:formulaire:titre_formulaires:></a> > +<a href="[(#URL_ECRIRE{formulaire}|parametre_url{id_formulaire,#ID_FORMULAIRE})]">#INFO_TITRE{formulaire,#ID_FORMULAIRE}</a> > +<strong class="on"><:formidable:voir_reponses:></strong> +</BOUCLE_formulaire> diff --git a/formidable_1_0.orig/prive/squelettes/navigation/formulaire.html b/formidable_1_0.orig/prive/squelettes/navigation/formulaire.html new file mode 100644 index 0000000000000000000000000000000000000000..ef1289e75c70ad185b114d78a9f5b93154ca15d7 --- /dev/null +++ b/formidable_1_0.orig/prive/squelettes/navigation/formulaire.html @@ -0,0 +1,42 @@ +<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})] + +[(#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}> +</BOUCLE_resultats> + +<div class='navigation_resultats'> +[(#URL_ECRIRE{formulaires_reponses} + |parametre_url{id_formulaire, #ID_FORMULAIRE} + |icone_horizontale{<:formidable:voir_reponses:> (#TOTAL_BOUCLE),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/formidable_1_0.orig/prive/squelettes/navigation/formulaire_edit.html b/formidable_1_0.orig/prive/squelettes/navigation/formulaire_edit.html new file mode 100644 index 0000000000000000000000000000000000000000..ed8628726b946b7c3bdb6327d1ac85cdc8bb3bc3 --- /dev/null +++ b/formidable_1_0.orig/prive/squelettes/navigation/formulaire_edit.html @@ -0,0 +1,22 @@ +<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})] + +[(#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/formidable_1_0.orig/prive/squelettes/navigation/formulaires.html b/formidable_1_0.orig/prive/squelettes/navigation/formulaires.html new file mode 100644 index 0000000000000000000000000000000000000000..0ee28b014ed0a4cf06ee62ff7015f8c2569999f6 --- /dev/null +++ b/formidable_1_0.orig/prive/squelettes/navigation/formulaires.html @@ -0,0 +1,5 @@ +[(#BOITE_OUVRIR{<:formidable:importer_formulaire:>,'info'})] +[(#AUTORISER{editer, formulaire}|oui) + #FORMULAIRE_IMPORTER_FORMULAIRE +] +#BOITE_FERMER diff --git a/formidable_1_0.orig/prive/squelettes/navigation/formulaires_analyse.html b/formidable_1_0.orig/prive/squelettes/navigation/formulaires_analyse.html new file mode 100644 index 0000000000000000000000000000000000000000..959bad4283f65509a4db6ca4a3e7de967626be14 --- /dev/null +++ b/formidable_1_0.orig/prive/squelettes/navigation/formulaires_analyse.html @@ -0,0 +1,12 @@ +<BOUCLE_formulaire(FORMULAIRES){id_formulaire}> +<BOUCLE_autoriser(CONDITION){si #AUTORISER{voir, formulaires_reponse}}> +#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/formidable_1_0.orig/prive/squelettes/navigation/formulaires_reponse.html b/formidable_1_0.orig/prive/squelettes/navigation/formulaires_reponse.html new file mode 100644 index 0000000000000000000000000000000000000000..2b4d4ede51466c3365853848c6d25d307e5c22f9 --- /dev/null +++ b/formidable_1_0.orig/prive/squelettes/navigation/formulaires_reponse.html @@ -0,0 +1,15 @@ +<BOUCLE_formulaires_reponse(FORMULAIRES_REPONSES){tout}{id_formulaires_reponse}> +<BOUCLE_autoriser(CONDITION){si #AUTORISER{voir, formulaires_reponse, #ID_FORMULAIRES_REPONSE}}> +[(#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/formidable_1_0.orig/prive/squelettes/navigation/formulaires_reponses.html b/formidable_1_0.orig/prive/squelettes/navigation/formulaires_reponses.html new file mode 100644 index 0000000000000000000000000000000000000000..e19e1c1aff82458baa4e3f250ef85379fc096d6b --- /dev/null +++ b/formidable_1_0.orig/prive/squelettes/navigation/formulaires_reponses.html @@ -0,0 +1,12 @@ +<BOUCLE_formulaire(FORMULAIRES){id_formulaire}> +<BOUCLE_autoriser(CONDITION){si #AUTORISER{voir, formulaires_reponse}}> +#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/formidable_1_0.orig/prive/style_prive_plugin_formidable.html b/formidable_1_0.orig/prive/style_prive_plugin_formidable.html new file mode 100644 index 0000000000000000000000000000000000000000..cbd1cf99aeba1d48d71f2235a0a22e17cb5c2b74 --- /dev/null +++ b/formidable_1_0.orig/prive/style_prive_plugin_formidable.html @@ -0,0 +1,32 @@ +#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/formidable_1_0.orig/prive/themes/basic/images/formulaire-16.png b/formidable_1_0.orig/prive/themes/basic/images/formulaire-16.png new file mode 100644 index 0000000000000000000000000000000000000000..8ca21eaea457d65608d71a6afcd1cb30c8842b3a Binary files /dev/null and b/formidable_1_0.orig/prive/themes/basic/images/formulaire-16.png differ diff --git a/formidable_1_0.orig/prive/themes/spip/images/formulaire-16.png b/formidable_1_0.orig/prive/themes/spip/images/formulaire-16.png new file mode 100644 index 0000000000000000000000000000000000000000..8ca21eaea457d65608d71a6afcd1cb30c8842b3a Binary files /dev/null and b/formidable_1_0.orig/prive/themes/spip/images/formulaire-16.png differ diff --git a/formidable_1_0.orig/prive/themes/spip/images/formulaire-24.png b/formidable_1_0.orig/prive/themes/spip/images/formulaire-24.png new file mode 100644 index 0000000000000000000000000000000000000000..ff847d080c2b8c158b3dccdff2d1534d06178ae6 Binary files /dev/null and b/formidable_1_0.orig/prive/themes/spip/images/formulaire-24.png differ diff --git a/formidable_1_0.orig/prive/themes/spip/images/formulaires_reponse-24.png b/formidable_1_0.orig/prive/themes/spip/images/formulaires_reponse-24.png new file mode 100644 index 0000000000000000000000000000000000000000..ec0a2b05a2d7a392c8a4f464c5069d6af0a684aa Binary files /dev/null and b/formidable_1_0.orig/prive/themes/spip/images/formulaires_reponse-24.png differ diff --git a/formidable_1_0.orig/public/formidable_criteres.php b/formidable_1_0.orig/public/formidable_criteres.php new file mode 100644 index 0000000000000000000000000000000000000000..ef2147a362cc0edfedb115872c0e39a61e1f60b0 --- /dev/null +++ b/formidable_1_0.orig/public/formidable_criteres.php @@ -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'", "_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/formidable_1_0.orig/puce_statut/formulaires_reponse.php b/formidable_1_0.orig/puce_statut/formulaires_reponse.php new file mode 100644 index 0000000000000000000000000000000000000000..0efc6f9e4e95202c8225e8bd4a8d9ade02d8bab1 --- /dev/null +++ b/formidable_1_0.orig/puce_statut/formulaires_reponse.php @@ -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/formidable_1_0.orig/saisies-analyses/_base.html b/formidable_1_0.orig/saisies-analyses/_base.html new file mode 100644 index 0000000000000000000000000000000000000000..7c9a8ab3bfc9ad602caae40e4ac7d81af1c00ffc --- /dev/null +++ b/formidable_1_0.orig/saisies-analyses/_base.html @@ -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/formidable_1_0.orig/saisies-analyses/case.html b/formidable_1_0.orig/saisies-analyses/case.html new file mode 100644 index 0000000000000000000000000000000000000000..51a9faf9b9aa41a7cb80a4b77bc063304502920a --- /dev/null +++ b/formidable_1_0.orig/saisies-analyses/case.html @@ -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/formidable_1_0.orig/saisies-analyses/checkbox.html b/formidable_1_0.orig/saisies-analyses/checkbox.html new file mode 100644 index 0000000000000000000000000000000000000000..ad682aea66f7efbdba5b7d904969c81e97f84bc0 --- /dev/null +++ b/formidable_1_0.orig/saisies-analyses/checkbox.html @@ -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/formidable_1_0.orig/saisies-analyses/destinataires.html b/formidable_1_0.orig/saisies-analyses/destinataires.html new file mode 100644 index 0000000000000000000000000000000000000000..9692d03105e570e3acfb2d70171abd4d024d0a31 --- /dev/null +++ b/formidable_1_0.orig/saisies-analyses/destinataires.html @@ -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/formidable_1_0.orig/saisies-analyses/explication.html b/formidable_1_0.orig/saisies-analyses/explication.html new file mode 100644 index 0000000000000000000000000000000000000000..703e6c027d189905341b17072f12c3232b8e01cc --- /dev/null +++ b/formidable_1_0.orig/saisies-analyses/explication.html @@ -0,0 +1,4 @@ +<tr class="tr_liste"> + <td class='choix' colspan='2'>[<p class='explication'>(#ENV{texte})</p>]</td> +</tr> + diff --git a/formidable_1_0.orig/saisies-analyses/oui_non.html b/formidable_1_0.orig/saisies-analyses/oui_non.html new file mode 100644 index 0000000000000000000000000000000000000000..51a9faf9b9aa41a7cb80a4b77bc063304502920a --- /dev/null +++ b/formidable_1_0.orig/saisies-analyses/oui_non.html @@ -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/formidable_1_0.orig/saisies-analyses/radio.html b/formidable_1_0.orig/saisies-analyses/radio.html new file mode 100644 index 0000000000000000000000000000000000000000..88627d0a64059de49e5db4fcaabad2b9922af00e --- /dev/null +++ b/formidable_1_0.orig/saisies-analyses/radio.html @@ -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/formidable_1_0.orig/saisies-analyses/selecteur_article.html b/formidable_1_0.orig/saisies-analyses/selecteur_article.html new file mode 100644 index 0000000000000000000000000000000000000000..35f08b42d18159b6852357e2cc751750aacc4136 --- /dev/null +++ b/formidable_1_0.orig/saisies-analyses/selecteur_article.html @@ -0,0 +1,13 @@ +[(#REM) Attention, saisie multiple non testee ] + +#SET{plein,#ENV{valeurs}|array_filter} +#SET{vide,#ENV{valeurs}|array_diff_key{#GET{plein}}} + +<tr class="tr_liste row_odd vide"> + <td class="choix"><:formidable:analyse_sans_reponse:></td> + <td class="stat">[(#GET{vide}|count)]</td> +</tr> +<tr class="tr_liste row_even plein"> + <td class="choix"><:formidable:analyse_avec_reponse:></td> + <td class="stat">[(#GET{plein}|count)]</td> +</tr> diff --git a/formidable_1_0.orig/saisies-analyses/selecteur_rubrique.html b/formidable_1_0.orig/saisies-analyses/selecteur_rubrique.html new file mode 100644 index 0000000000000000000000000000000000000000..35f08b42d18159b6852357e2cc751750aacc4136 --- /dev/null +++ b/formidable_1_0.orig/saisies-analyses/selecteur_rubrique.html @@ -0,0 +1,13 @@ +[(#REM) Attention, saisie multiple non testee ] + +#SET{plein,#ENV{valeurs}|array_filter} +#SET{vide,#ENV{valeurs}|array_diff_key{#GET{plein}}} + +<tr class="tr_liste row_odd vide"> + <td class="choix"><:formidable:analyse_sans_reponse:></td> + <td class="stat">[(#GET{vide}|count)]</td> +</tr> +<tr class="tr_liste row_even plein"> + <td class="choix"><:formidable:analyse_avec_reponse:></td> + <td class="stat">[(#GET{plein}|count)]</td> +</tr> diff --git a/formidable_1_0.orig/saisies-analyses/selecteur_rubrique_article.html b/formidable_1_0.orig/saisies-analyses/selecteur_rubrique_article.html new file mode 100644 index 0000000000000000000000000000000000000000..a8ef6aec9258df4c9785a0df1b6ba12e3539346c --- /dev/null +++ b/formidable_1_0.orig/saisies-analyses/selecteur_rubrique_article.html @@ -0,0 +1,14 @@ +[(#REM) Peut etre ameliore en comptant par exemple le nombre d'article / rubriques +Attention, saisie multiple non testee ] + +#SET{plein,#ENV{valeurs}|array_filter} +#SET{vide,#ENV{valeurs}|array_diff_key{#GET{plein}}} + +<tr class="tr_liste row_odd vide"> + <td class="choix"><:formidable:analyse_sans_reponse:></td> + <td class="stat">[(#GET{vide}|count)]</td> +</tr> +<tr class="tr_liste row_even plein"> + <td class="choix"><:formidable:analyse_avec_reponse:></td> + <td class="stat">[(#GET{plein}|count)]</td> +</tr> diff --git a/formidable_1_0.orig/saisies-analyses/selection.html b/formidable_1_0.orig/saisies-analyses/selection.html new file mode 100644 index 0000000000000000000000000000000000000000..54589d337de4f662c1071fb34912f239c1a60d5c --- /dev/null +++ b/formidable_1_0.orig/saisies-analyses/selection.html @@ -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_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/formidable_1_0.orig/saisies-analyses/selection_multiple.html b/formidable_1_0.orig/saisies-analyses/selection_multiple.html new file mode 100644 index 0000000000000000000000000000000000000000..0f1212a6d7c214dc12e27abef8cc6db47f102d72 --- /dev/null +++ b/formidable_1_0.orig/saisies-analyses/selection_multiple.html @@ -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/formidable_1_0.orig/saisies-vues/formulaire_formidable.html b/formidable_1_0.orig/saisies-vues/formulaire_formidable.html new file mode 100644 index 0000000000000000000000000000000000000000..a9692f86d94052546231760a9d78f18829be6caa --- /dev/null +++ b/formidable_1_0.orig/saisies-vues/formulaire_formidable.html @@ -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/formidable_1_0.orig/saisies-vues/formulaire_formidable_multiple.html b/formidable_1_0.orig/saisies-vues/formulaire_formidable_multiple.html new file mode 100644 index 0000000000000000000000000000000000000000..9b75a57c3654845958e06a949be0c315a46b492f --- /dev/null +++ b/formidable_1_0.orig/saisies-vues/formulaire_formidable_multiple.html @@ -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/formidable_1_0.orig/saisies/champ.html b/formidable_1_0.orig/saisies/champ.html new file mode 100644 index 0000000000000000000000000000000000000000..d2ad8d8a6fbc40212d776f59c183ad338d5ed509 --- /dev/null +++ b/formidable_1_0.orig/saisies/champ.html @@ -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/formidable_1_0.orig/saisies/formulaire_formidable.html b/formidable_1_0.orig/saisies/formulaire_formidable.html new file mode 100644 index 0000000000000000000000000000000000000000..e8d8bb4c1204991da452287b47e367c7cd5664ca --- /dev/null +++ b/formidable_1_0.orig/saisies/formulaire_formidable.html @@ -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/formidable_1_0.orig/saisies/formulaire_formidable_multiple.html b/formidable_1_0.orig/saisies/formulaire_formidable_multiple.html new file mode 100644 index 0000000000000000000000000000000000000000..b8ef7aaac4868b1e36161b4a6e2036612c42271a --- /dev/null +++ b/formidable_1_0.orig/saisies/formulaire_formidable_multiple.html @@ -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/formidable_1_0.orig/svn.revision b/formidable_1_0.orig/svn.revision new file mode 100644 index 0000000000000000000000000000000000000000..e3105db23414c6cf0e68d890f7109b8d4e291c30 --- /dev/null +++ b/formidable_1_0.orig/svn.revision @@ -0,0 +1,10 @@ +<svn_revision> +<text_version> +Origine: file:///home/svn/repository/spip-zone/_plugins_/formidable/trunk +Revision: 70631 +Dernier commit: 2013-03-12 18:28:10 +0100 +</text_version> +<origine>file:///home/svn/repository/spip-zone/_plugins_/formidable/trunk</origine> +<revision>70631</revision> +<commit>2013-03-12 18:28:10 +0100 </commit> +</svn_revision> \ No newline at end of file diff --git a/formidable_1_0.orig/todo.txt b/formidable_1_0.orig/todo.txt new file mode 100644 index 0000000000000000000000000000000000000000..c857bbec9c562a8fde1d8be6d5c91a9197b26ca1 --- /dev/null +++ b/formidable_1_0.orig/todo.txt @@ -0,0 +1,19 @@ + +À 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 ++ Afficher des saisies en javascript suivant des conditions ++ 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/formidable_1_0.orig/traiter/email.php b/formidable_1_0.orig/traiter/email.php new file mode 100644 index 0000000000000000000000000000000000000000..c7a60e4728f33da2633c22da0c8ea50bcdda8402 --- /dev/null +++ b/formidable_1_0.orig/traiter/email.php @@ -0,0 +1,193 @@ +<?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(); + + // 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 = $GLOBALS['meta']['nom_site']; + + // 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('classes/facteur'); + $texte = Facteur::html2text($html); + + // On utilise la forme avancé de Facteur + $corps = array( + 'html' => $html, + 'texte' => $texte, + 'nom_envoyeur' => $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::html2text($html_accuse); + + $corps = array( + 'html' => $html_accuse, + 'texte' => $texte, + 'nom_envoyeur' => $nom_site_spip + ); + + $ok = $envoyer_mail($courriel_envoyeur, $sujet_accuse, $corps, $courriel_from, "X-Originating-IP: ".$GLOBALS['ip']); + } + + if ($ok){ + $retours['message_ok'] .= "\n<br/>"._T('formidable:traiter_email_message_ok'); + } + else{ + $retours['message_erreur'] .= "\n<br/>"._T('formidable:traiter_email_message_erreur'); + } + } + + return $retours; +} + +?> diff --git a/formidable_1_0.orig/traiter/email.yaml b/formidable_1_0.orig/traiter/email.yaml new file mode 100644 index 0000000000000000000000000000000000000000..4f5b4d7f842c83230d3700e1b7a59ce6adbe4552 --- /dev/null +++ b/formidable_1_0.orig/traiter/email.yaml @@ -0,0 +1,57 @@ + +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: '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/formidable_1_0.orig/traiter/enregistrement.php b/formidable_1_0.orig/traiter/enregistrement.php new file mode 100644 index 0000000000000000000000000000000000000000..678b1f9fd7cfe15402a6dfdcfd28b9f5ba646b17 --- /dev/null +++ b/formidable_1_0.orig/traiter/enregistrement.php @@ -0,0 +1,129 @@ +<?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; + + // 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' => $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 + ); + } + } + + 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/formidable_1_0.orig/traiter/enregistrement.yaml b/formidable_1_0.orig/traiter/enregistrement.yaml new file mode 100644 index 0000000000000000000000000000000000000000..3fae3210633292047b494c64795a2cc709d11650 --- /dev/null +++ b/formidable_1_0.orig/traiter/enregistrement.yaml @@ -0,0 +1,37 @@ + +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: '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' diff --git a/formidable_1_0/CVS/Entries b/formidable_1_0/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..6c30ae13d6febe0b67448816bcb1c85ffd0ebd62 --- /dev/null +++ b/formidable_1_0/CVS/Entries @@ -0,0 +1,28 @@ +/formidable_administrations.php/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formidable_fonctions.php/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formidable_options.php/1.3/Tue Dec 11 13:15:05 2012// +/formidable_pipelines.php/1.1.1.1/Mon Dec 3 09:03:16 2012// +/paquet.xml/1.1.1.1/Mon Dec 3 09:03:16 2012// +/svn.revision/1.1.1.1/Mon Dec 3 09:03:16 2012// +/todo.txt/1.1.1.1/Mon Dec 3 09:03:16 2012// +D/action//// +D/base//// +D/css//// +D/echanger//// +D/exec//// +D/formulaires//// +D/icones_barre//// +D/images//// +D/inc//// +D/lang//// +D/modeles//// +D/noisettes//// +D/notifications//// +D/prive//// +D/public//// +D/puce_statut//// +D/saisies//// +D/saisies-analyses//// +D/saisies-vues//// +D/traiter//// +/formidable_autorisations.php/1.4/Tue Mar 19 14:47:51 2013// diff --git a/formidable_1_0/CVS/Repository b/formidable_1_0/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..ab0fe911830af6ac2fe942aa32b94b5c2ed008a5 --- /dev/null +++ b/formidable_1_0/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3 diff --git a/formidable_1_0/CVS/Root b/formidable_1_0/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/action/CVS/Entries b/formidable_1_0/action/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..f7d36e1c9a44ab2a5aabed7ab64a6a3b63132831 --- /dev/null +++ b/formidable_1_0/action/CVS/Entries @@ -0,0 +1,9 @@ +/dupliquer_formulaire.php/1.1.1.1/Mon Dec 3 09:03:16 2012// +/editer_formulaire.php/1.1.1.1/Mon Dec 3 09:03:16 2012// +/exporter_formulaire.php/1.1.1.1/Mon Dec 3 09:03:16 2012// +/exporter_formulaires_reponses.php/1.1.1.1/Mon Dec 3 09:03:16 2012// +/instituer_formulaires_reponse.php/1.1.1.1/Mon Dec 3 09:03:16 2012// +/supprimer_formulaire.php/1.1.1.1/Mon Dec 3 09:03:16 2012// +/supprimer_formulaires_reponse.php/1.1.1.1/Mon Dec 3 09:03:16 2012// +/exporter_analyse_reponses.php/1.1/Tue Mar 19 15:03:17 2013// +D diff --git a/formidable_1_0/action/CVS/Repository b/formidable_1_0/action/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..688e5ac02fa42633dcef5eff041be8b41b67220a --- /dev/null +++ b/formidable_1_0/action/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3/action diff --git a/formidable_1_0/action/CVS/Root b/formidable_1_0/action/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/action/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/action/dupliquer_formulaire.php b/formidable_1_0/action/dupliquer_formulaire.php new file mode 100644 index 0000000000000000000000000000000000000000..93ef6d8cb7aaa2b94d0bb66ac422435b1e27dd35 --- /dev/null +++ b/formidable_1_0/action/dupliquer_formulaire.php @@ -0,0 +1,60 @@ +<?php + +// Sécurité +if (!defined("_ECRIRE_INC_VERSION")) return; + +/** + * 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 + ); + // 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/formidable_1_0/action/editer_formulaire.php b/formidable_1_0/action/editer_formulaire.php new file mode 100644 index 0000000000000000000000000000000000000000..2254bf8cabab416df9c6e725962bb882c4322803 --- /dev/null +++ b/formidable_1_0/action/editer_formulaire.php @@ -0,0 +1,98 @@ +<?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"); + + 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/formidable_1_0/action/exporter_analyse_reponses.php b/formidable_1_0/action/exporter_analyse_reponses.php new file mode 100755 index 0000000000000000000000000000000000000000..c00570914c81d2a0b97707da73d073d14da0f4f2 --- /dev/null +++ b/formidable_1_0/action/exporter_analyse_reponses.php @@ -0,0 +1,103 @@ +<?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); + + $res = sql_select( + array('nom, valeur'), + + 'intranet_formulaires_reponses_champs AS FRC, + intranet_formulaires_reponses AS FR, + intranet_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:champ'), _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:champ')] = $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)){ + echo $exporter_csv('analyses-formulaire-'.$formulaire['identifiant'], $reponses_completes); + exit(); + } + } +} + +?> diff --git a/formidable_1_0/action/exporter_formulaire.php b/formidable_1_0/action/exporter_formulaire.php new file mode 100644 index 0000000000000000000000000000000000000000..df240834dd3c07c926f300f5f00c562a0d8029aa --- /dev/null +++ b/formidable_1_0/action/exporter_formulaire.php @@ -0,0 +1,24 @@ +<?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/formidable_1_0/action/exporter_formulaires_reponses.php b/formidable_1_0/action/exporter_formulaires_reponses.php new file mode 100644 index 0000000000000000000000000000000000000000..4105d4f0c2321caeefbfb209133e328367989ae9 --- /dev/null +++ b/formidable_1_0/action/exporter_formulaires_reponses.php @@ -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)){ + echo $exporter_csv('reponses-formulaire-'.$formulaire['identifiant'], $reponses_completes); + exit(); + } + } +} + +?> diff --git a/formidable_1_0/action/instituer_formulaires_reponse.php b/formidable_1_0/action/instituer_formulaires_reponse.php new file mode 100644 index 0000000000000000000000000000000000000000..211057e06f66bc65c46d623861cf1fa786b852bc --- /dev/null +++ b/formidable_1_0/action/instituer_formulaires_reponse.php @@ -0,0 +1,34 @@ +<?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/formidable_1_0/action/supprimer_formulaire.php b/formidable_1_0/action/supprimer_formulaire.php new file mode 100644 index 0000000000000000000000000000000000000000..372cebe136ad71acdd36d61e66c9e3ef142804a2 --- /dev/null +++ b/formidable_1_0/action/supprimer_formulaire.php @@ -0,0 +1,61 @@ +<?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("&","&",urldecode($redirect))); + } +} + +?> diff --git a/formidable_1_0/action/supprimer_formulaires_reponse.php b/formidable_1_0/action/supprimer_formulaires_reponse.php new file mode 100644 index 0000000000000000000000000000000000000000..98f106e4389f50dcac0729c19c920106e6c17842 --- /dev/null +++ b/formidable_1_0/action/supprimer_formulaires_reponse.php @@ -0,0 +1,50 @@ +<?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("&","&",urldecode($redirect))); + } +} + +?> diff --git a/formidable_1_0/base/CVS/Entries b/formidable_1_0/base/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..d5fe6b11e3856baa1f3dc01f8a9dff14cbaffc86 --- /dev/null +++ b/formidable_1_0/base/CVS/Entries @@ -0,0 +1,2 @@ +/formidable_tables.php/1.1.1.1/Mon Dec 3 09:03:16 2012// +D diff --git a/formidable_1_0/base/CVS/Repository b/formidable_1_0/base/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..75c7e5689d0a505153a3a8f564f5ed24792eae10 --- /dev/null +++ b/formidable_1_0/base/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3/base diff --git a/formidable_1_0/base/CVS/Root b/formidable_1_0/base/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/base/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/base/formidable_tables.php b/formidable_1_0/base/formidable_tables.php new file mode 100644 index 0000000000000000000000000000000000000000..4d5f43324c5827c16269dcfd27c577f12d96d3fe --- /dev/null +++ b/formidable_1_0/base/formidable_tables.php @@ -0,0 +1,187 @@ +<?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' => '', + 'principale' => 'oui', + + '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" => "text NOT NULL default ''", + "traitements" => "text NOT NULL default ''", + "public" => "enum('non', 'oui') DEFAULT 'non' NOT NULL", + "statut" => "varchar(10) NOT NULL default ''", + "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/formidable_1_0/css/CVS/Entries b/formidable_1_0/css/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..6d0b5f0b4200d368539d5ced7d00fe6d46fb9e6c --- /dev/null +++ b/formidable_1_0/css/CVS/Entries @@ -0,0 +1,2 @@ +/formidable_analyse.css.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +D diff --git a/formidable_1_0/css/CVS/Repository b/formidable_1_0/css/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..1a8fc2fe30564b8268a7b33c19dc70ae996a26d4 --- /dev/null +++ b/formidable_1_0/css/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3/css diff --git a/formidable_1_0/css/CVS/Root b/formidable_1_0/css/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/css/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/css/formidable_analyse.css.html b/formidable_1_0/css/formidable_analyse.css.html new file mode 100644 index 0000000000000000000000000000000000000000..3a82a97d873ae277dd8a539f94a53172a4ea21a8 --- /dev/null +++ b/formidable_1_0/css/formidable_analyse.css.html @@ -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/formidable_1_0/echanger/CVS/Entries b/formidable_1_0/echanger/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..506cc5b6b9a2970ce8889f07c70c06ac5d70a8f6 --- /dev/null +++ b/formidable_1_0/echanger/CVS/Entries @@ -0,0 +1 @@ +D/formulaire//// diff --git a/formidable_1_0/echanger/CVS/Repository b/formidable_1_0/echanger/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..92aac845960d2597f63b5fcf5b4fd65b7847509b --- /dev/null +++ b/formidable_1_0/echanger/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3/echanger diff --git a/formidable_1_0/echanger/CVS/Root b/formidable_1_0/echanger/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/echanger/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/echanger/formulaire/CVS/Entries b/formidable_1_0/echanger/formulaire/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..8d162397ff75358f006585c562eaf1cd7a4612b4 --- /dev/null +++ b/formidable_1_0/echanger/formulaire/CVS/Entries @@ -0,0 +1,4 @@ +/forms.php/1.1.1.1/Mon Dec 3 09:03:16 2012// +/wcs.php/1.1.1.1/Mon Dec 3 09:03:16 2012// +/yaml.php/1.1.1.1/Mon Dec 3 09:03:16 2012// +D diff --git a/formidable_1_0/echanger/formulaire/CVS/Repository b/formidable_1_0/echanger/formulaire/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..09c660f180995f101fdb565a5b9ffeca96082657 --- /dev/null +++ b/formidable_1_0/echanger/formulaire/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3/echanger/formulaire diff --git a/formidable_1_0/echanger/formulaire/CVS/Root b/formidable_1_0/echanger/formulaire/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/echanger/formulaire/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/echanger/formulaire/forms.php b/formidable_1_0/echanger/formulaire/forms.php new file mode 100644 index 0000000000000000000000000000000000000000..c74aaef0ca49af8be673a4d9766921fd4dfb04d2 --- /dev/null +++ b/formidable_1_0/echanger/formulaire/forms.php @@ -0,0 +1,175 @@ +<?php + +// Sécurité +if (!defined("_ECRIRE_INC_VERSION")) return; + +// Importation d'un formulaire forms&table + +function echanger_formulaire_forms_importer_dist($fichier){ + include_spip('inc/xml'); + $arbre = spip_xml_load($fichier, false); + + if ($arbre and is_array($arbre) and isset($arbre['forms'])){ + foreach($arbre['forms'] as $forms){ + foreach ($forms['form'] as $form){ + $formulaire = array(); + + // Le titre + $titre = trim(spip_xml_aplatit($form['titre'])); + $formulaire['titre'] = $titre ? $titre : _T('info_sans_titre'); + + // L'identifiant il faut le générer + $formulaire['identifiant'] = 'form_'.time(); + + // Le descriptif + $descriptif = trim(spip_xml_aplatit($form['descriptif'])); + $formulaire['descriptif'] = $descriptif ? $descriptif : ''; + + // Le message de retour si ok + $message_retour = trim(spip_xml_aplatit($form['texte'])); + $formulaire['message_retour'] = $message_retour ? $message_retour : ''; + + // Les champs + $formulaire['saisies'] = array(); + foreach($form['fields'] as $fields){ + foreach($fields['field'] as $field){ + // Le truc par défaut + $saisie = array( + 'saisie' => 'input', + 'options' => array('size'=>40) + ); + + // On essaye de traduire tous les types de champs + $type = trim(spip_xml_aplatit($field['type'])); + switch ($type){ + case 'texte': + $saisie['saisie'] = 'textarea'; + unset($saisie['options']['size']); + $saisie['options']['rows'] = 5; + $saisie['options']['cols'] = 40; + break; + case 'password': + $saisie['options']['type'] = 'password'; + break; + case 'date': + $saisie['saisie'] = 'date'; + $saisie['verifier'] = array( + 'type' => 'date' + ); + break; + case 'num': + case 'monnaie': + $saisie['verifier'] = array( + 'type' => 'entier' + ); + if ($taille = trim(spip_xml_aplatit($field['taille']))) + $saisie['verifier']['options'] = array('max' => (pow(10, $taille)-1)); + break; + case 'email': + $saisie['verifier'] = array( + 'type' => 'email' + ); + break; + case 'telephone': + $saisie['verifier'] = array( + 'type' => 'telephone' + ); + break; + case 'select': + unset($saisie['options']['size']); + $liste = trim(spip_xml_aplatit($field['extra_info'])); + if ($liste == 'radio') + $saisie['saisie'] = 'radio'; + else + $saisie['saisie'] = 'selection'; + break; + case 'multiple': + $saisie['saisie'] = 'checkbox'; + unset($saisie['options']['size']); + break; + case 'fichier': + case 'separateur': + $saisie = null; + } + + // On continue seulement si on a toujours une saisie + if ($saisie){ + // Les choix pour les types select et multiple + if(isset($field['les_choix']) and is_array($field['les_choix'])){ + $saisie['options']['datas'] = array(); + foreach($field['les_choix'] as $les_choix){ + foreach($les_choix['un_choix'] as $un_choix){ + $choix = trim(spip_xml_aplatit($un_choix['choix'])); + $titre = trim(spip_xml_aplatit($un_choix['titre'])); + $saisie['options']['datas'][$choix] = $titre; + } + } + } + + // Le nom + $saisie['options']['nom'] = trim(spip_xml_aplatit($field['champ'])); + + // Le label + $saisie['options']['label'] = trim(spip_xml_aplatit($field['titre'])); + + // Obligatoire + if (trim(spip_xml_aplatit($field['obligatoire'])) == 'oui') + $saisie['options']['obligatoire'] = 'on'; + + // Explication éventuelle + if ($explication = trim(spip_xml_aplatit($field['aide']))) + $saisie['options']['explication'] = $explication; + + // On ajoute enfin la saisie + $formulaire['saisies'][] = $saisie; + } + } + } + + // Les traitements + $formulaire['traitements'] = array(); + + // Le traitement email + $config_email = unserialize(trim(spip_xml_aplatit($form['email']))); + if (is_array($config_email)){ + if ($email_defaut = $config_email['defaut']) + $formulaire['traitements']['email'] = array( + 'destinataires_plus' => $email_defaut + ); + } + + // Le traitement enregistrement + $formulaire['traitements']['enregistrement'] = array( + 'moderation' => (trim(spip_xml_aplatit($form['moderation'])) == 'priori') ? 'priori' : 'posteriori', + 'modifiable' => (trim(spip_xml_aplatit($form['modifiable'])) == 'oui') ? 'on' : '', + 'multiple' => (trim(spip_xml_aplatit($form['multiple'])) == 'non') ? '' : 'on' + ); + + 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_forms'); + } +} + +?> diff --git a/formidable_1_0/echanger/formulaire/wcs.php b/formidable_1_0/echanger/formulaire/wcs.php new file mode 100644 index 0000000000000000000000000000000000000000..c12100a3c9b94fffd0d0ae1005fac1317e966ccf --- /dev/null +++ b/formidable_1_0/echanger/formulaire/wcs.php @@ -0,0 +1,175 @@ +<?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/formidable_1_0/echanger/formulaire/yaml.php b/formidable_1_0/echanger/formulaire/yaml.php new file mode 100644 index 0000000000000000000000000000000000000000..162331d9eb46c8c93c5aa9890852ec7abd5b719f --- /dev/null +++ b/formidable_1_0/echanger/formulaire/yaml.php @@ -0,0 +1,80 @@ +<?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/formidable_1_0/exec/CVS/Entries b/formidable_1_0/exec/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..50a446b3435ff84dd5710fb51468470d3e96c0f2 --- /dev/null +++ b/formidable_1_0/exec/CVS/Entries @@ -0,0 +1,2 @@ +/puce_statut_formulaires.php/1.1.1.1/Mon Dec 3 09:03:16 2012// +D diff --git a/formidable_1_0/exec/CVS/Repository b/formidable_1_0/exec/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..899fb873015d3afe025732e372b5b3fad0567fff --- /dev/null +++ b/formidable_1_0/exec/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3/exec diff --git a/formidable_1_0/exec/CVS/Root b/formidable_1_0/exec/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/exec/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/exec/puce_statut_formulaires.php b/formidable_1_0/exec/puce_statut_formulaires.php new file mode 100644 index 0000000000000000000000000000000000000000..6aadef396ee0ca45b16885d067394fe54d3806ce --- /dev/null +++ b/formidable_1_0/exec/puce_statut_formulaires.php @@ -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/formidable_1_0/formidable_administrations.php b/formidable_1_0/formidable_administrations.php new file mode 100644 index 0000000000000000000000000000000000000000..d273617d2e516a1e073963cf95c8f2fff7d8ddce --- /dev/null +++ b/formidable_1_0/formidable_administrations.php @@ -0,0 +1,67 @@ +<?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 ""')); + + 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/formidable_1_0/formidable_autorisations.php b/formidable_1_0/formidable_autorisations.php new file mode 100644 index 0000000000000000000000000000000000000000..3df4f4a933245e1af48245caab3ad41e21f3d869 --- /dev/null +++ b/formidable_1_0/formidable_autorisations.php @@ -0,0 +1,162 @@ +<?php + +/** + * Déclaration des autorisations + * + * @package SPIP\Formidable\Autorisations +**/ + +// Sécurité +if (!defined("_ECRIRE_INC_VERSION")) return; + +/** + * 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){ + if (isset($qui['statut']) and $qui['statut'] <= '0minirezo' and + (!$qui['restreint']) or $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'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_formulaires_reponse_instituer_dist($faire, $type, $id, $qui, $opt){ + if (isset($qui['statut']) and $qui['statut'] <= '0minirezo' and !$qui['restreint']) return true; + else return false; +} + +/** + * 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_formulaires_reponse_voir_dist($faire, $type, $id, $qui, $opt){ + if (isset($qui['statut']) and $qui['statut'] <= '1comite') return true; + else return false; +} + +/** + * Autorisation de supprimer une réponse d'un formulaire formidable + * + * Il faut pouvoir éditer un formulaire pour pouvoir en supprimer des réponses + * + * @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_reponse_supprimer_dist($faire, $type, $id, $qui, $opt){ + // On récupère l'id du formulaire + if ($id_formulaire = intval(sql_getfetsel('id_formulaire', 'spip_formulaires_reponses', $id))) + return autoriser('editer', 'formulaire', $id_formulaire); + else + return false; +} + +?> diff --git a/formidable_1_0/formidable_fonctions.php b/formidable_1_0/formidable_fonctions.php new file mode 100644 index 0000000000000000000000000000000000000000..c8029993a84c0064c5c76bdbabc094a4b3c81007 --- /dev/null +++ b/formidable_1_0/formidable_fonctions.php @@ -0,0 +1,10 @@ +<?php + +/** + * Chargement des fonctions pour les squelettes + * + * @package SPIP\Formidable\Fonctions +**/ + +include_spip('inc/formidable'); +include_spip('public/formidable_criteres'); diff --git a/formidable_1_0/formidable_options.php b/formidable_1_0/formidable_options.php new file mode 100644 index 0000000000000000000000000000000000000000..c36bf521548eb305ff91693c458cb92221f5d3a9 --- /dev/null +++ b/formidable_1_0/formidable_options.php @@ -0,0 +1,118 @@ +<?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"]', +); + +$GLOBALS['formulaires']['passwd'] = array( + 'interne' => 'palabresecreta', +); + +$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/formidable_1_0/formidable_pipelines.php b/formidable_1_0/formidable_pipelines.php new file mode 100644 index 0000000000000000000000000000000000000000..902224bb5d5b358f1ec7d067af5432f07ab916fc --- /dev/null +++ b/formidable_1_0/formidable_pipelines.php @@ -0,0 +1,35 @@ +<?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); + return $flux; +} + +?> diff --git a/formidable_1_0/formulaires/CVS/Entries b/formidable_1_0/formulaires/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..c5dd9a1b94652339559ef460c3dab0755af3034f --- /dev/null +++ b/formidable_1_0/formulaires/CVS/Entries @@ -0,0 +1,12 @@ +/configurer_formidable_analyse.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/editer_formulaire.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/editer_formulaire.php/1.1.1.1/Mon Dec 3 09:03:16 2012// +/editer_formulaire_champs.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/editer_formulaire_champs.php/1.1.1.1/Mon Dec 3 09:03:16 2012// +/editer_formulaire_traitements.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/editer_formulaire_traitements.php/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formidable.php/1.2/Mon Dec 3 14:10:46 2012// +/importer_formulaire.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/importer_formulaire.php/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formidable.html/1.3/Tue Mar 19 14:58:24 2013// +D diff --git a/formidable_1_0/formulaires/CVS/Repository b/formidable_1_0/formulaires/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..055d61df7f89b3e97a04c10651b6fc3fbdbe66d8 --- /dev/null +++ b/formidable_1_0/formulaires/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3/formulaires diff --git a/formidable_1_0/formulaires/CVS/Root b/formidable_1_0/formulaires/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/formulaires/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/formulaires/configurer_formidable_analyse.html b/formidable_1_0/formulaires/configurer_formidable_analyse.html new file mode 100644 index 0000000000000000000000000000000000000000..a8caa8bf1b7a176e8d27cb964ece1e8047520008 --- /dev/null +++ b/formidable_1_0/formulaires/configurer_formidable_analyse.html @@ -0,0 +1,20 @@ +<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:> + })] + <input type="hidden" name="_meta_casier" value="formidable/analyse" /> + <p class="boutons"><span class="image_loading"> </span><input type="submit" class="submit" value="<:bouton_enregistrer:>" /></p> + </div> + </form> +</div> diff --git a/formidable_1_0/formulaires/editer_formulaire.html b/formidable_1_0/formulaires/editer_formulaire.html new file mode 100644 index 0000000000000000000000000000000000000000..cd8445eb682b4c6ea97d92fc3478b982d7bdca2b --- /dev/null +++ b/formidable_1_0/formulaires/editer_formulaire.html @@ -0,0 +1,23 @@ +<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/formidable_1_0/formulaires/editer_formulaire.php b/formidable_1_0/formulaires/editer_formulaire.php new file mode 100644 index 0000000000000000000000000000000000000000..afa986be4aec418e07e0377de6f5ba2392b5f75b --- /dev/null +++ b/formidable_1_0/formulaires/editer_formulaire.php @@ -0,0 +1,75 @@ +<?php + +// Sécurité +if (!defined("_ECRIRE_INC_VERSION")) return; + +include_spip('inc/saisies'); + +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')){ + // 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'){ + $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/formidable_1_0/formulaires/editer_formulaire_champs.html b/formidable_1_0/formulaires/editer_formulaire_champs.html new file mode 100644 index 0000000000000000000000000000000000000000..8e88ff4319c1c998f77a55ea8a5576476f7ad33c --- /dev/null +++ b/formidable_1_0/formulaires/editer_formulaire_champs.html @@ -0,0 +1,39 @@ + +<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/formidable_1_0/formulaires/editer_formulaire_champs.php b/formidable_1_0/formulaires/editer_formulaire_champs.php new file mode 100644 index 0000000000000000000000000000000000000000..e999c7b86357dc6550f3ed24ff83b3f09b5ab918 --- /dev/null +++ b/formidable_1_0/formulaires/editer_formulaire_champs.php @@ -0,0 +1,113 @@ +<?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/formidable_1_0/formulaires/editer_formulaire_traitements.html b/formidable_1_0/formulaires/editer_formulaire_traitements.html new file mode 100644 index 0000000000000000000000000000000000000000..31dbc36c8f0d8e4f021ae23d763f2477d9fb82a7 --- /dev/null +++ b/formidable_1_0/formulaires/editer_formulaire_traitements.html @@ -0,0 +1,41 @@ +<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/formidable_1_0/formulaires/editer_formulaire_traitements.php b/formidable_1_0/formulaires/editer_formulaire_traitements.php new file mode 100644 index 0000000000000000000000000000000000000000..2303ec6e4ab2e4297f8a64a050cafa8c8af9b67f --- /dev/null +++ b/formidable_1_0/formulaires/editer_formulaire_traitements.php @@ -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/formidable_1_0/formulaires/formidable.html b/formidable_1_0/formulaires/formidable.html new file mode 100644 index 0000000000000000000000000000000000000000..0a9305eec773feb15fb7fcb619e0f5ef29a29115 --- /dev/null +++ b/formidable_1_0/formulaires/formidable.html @@ -0,0 +1,46 @@ +<BOUCLE_remplacer_le_formulaire(CONDITION){si #ENV{_remplacer_formulaire}}> + [(#REM) Afficher du HTML si prévu par un plugin ou pour les stats ] + [(#ENV**{_remplacer_formulaire})] +</BOUCLE_remplacer_le_formulaire> +<BOUCLE_formulaire(FORMULAIRES){id_formulaire=#ENV{id}}> + [(#SET{enregistrement,[(#TRAITEMENTS**|unserialize|table_valeur{'enregistrement'})]})] + [(#SET{anonymiser,[(#GET{enregistrement}|table_valeur{'anonymiser'})]})] + [(#GET{anonymiser}|=={on}|oui)<h3><:formidable:formulaire_anonyme_explication:>]</h3> +</BOUCLE_formulaire> +<div class="formulaire_spip 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{_saisies}} + <li style="display:none;"> + <label for="mechantrobot-#ENV{id}"><:antispam_champ_vide:></label> + <input type="text" id="mechantrobot-#ENV{id}" name="mechantrobot" value="#ENV{mechantrobot}" /> + </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' value='<:bouton_valider:>' /> + </p> + </div></form> + ] + [(#EDITABLE|non) + [(#ENV{formidable_afficher_apres}|=={valeurs}|oui) + #VOIR_SAISIES{#ENV*{_saisies},#ENV} + ] + [(#ENV{formidable_afficher_apres}|=={rien}|oui) + ] + ] + <br /> +</div> +<//B_remplacer_le_formulaire> diff --git a/formidable_1_0/formulaires/formidable.php b/formidable_1_0/formulaires/formidable.php new file mode 100644 index 0000000000000000000000000000000000000000..96529d96de2b7dd71f78882bc0c54e1f0abbb509 --- /dev/null +++ b/formidable_1_0/formulaires/formidable.php @@ -0,0 +1,287 @@ +<?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 += array('_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 + $contexte += array_fill_keys(saisies_lister_champs($saisies), ''); + $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]; + } + } + + // On regarde si maintenant on a un tableau + 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 { + + // Si multiple = non mais que c'est modifiable, alors on va chercher + // la dernière réponse si elle existe + if ($options = $traitements['enregistrement'] + and !$options['multiple'] + and $options['modifiable'] + and $reponses = formidable_verifier_reponse_formulaire($formulaire['id_formulaire'], $options) + ) { + $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/formidable_1_0/formulaires/importer_formulaire.html b/formidable_1_0/formulaires/importer_formulaire.html new file mode 100644 index 0000000000000000000000000000000000000000..0d71a5fdce94d24a76a2af999685db403bb81f9b --- /dev/null +++ b/formidable_1_0/formulaires/importer_formulaire.html @@ -0,0 +1,30 @@ +<div class="formulaire_spip formulaire_#ENV{form}[ formulaire_#ENV{form}-(#ENV{id})]"> + [<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/formidable_1_0/formulaires/importer_formulaire.php b/formidable_1_0/formulaires/importer_formulaire.php new file mode 100644 index 0000000000000000000000000000000000000000..edcf2c61f8f944eddb2773a414490d570201a7d5 --- /dev/null +++ b/formidable_1_0/formulaires/importer_formulaire.php @@ -0,0 +1,53 @@ +<?php + +// Sécurité +if (!defined("_ECRIRE_INC_VERSION")) return; + +include_spip('inc/formidable'); + +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); + $retours['redirect'] = generer_url_ecrire('formulaire', "id_formulaire=$id_formulaire"); + } + } + + return $retours; +} + +?> diff --git a/formidable_1_0/icones_barre/CVS/Entries b/formidable_1_0/icones_barre/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..07f8522566880f13af317f35c6f00d3c454549e8 --- /dev/null +++ b/formidable_1_0/icones_barre/CVS/Entries @@ -0,0 +1,2 @@ +/formulaire.png/1.1.1.1/Mon Dec 3 09:03:16 2012// +D diff --git a/formidable_1_0/icones_barre/CVS/Repository b/formidable_1_0/icones_barre/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..f99c3ca8f563da741889962d118f8665df663ebd --- /dev/null +++ b/formidable_1_0/icones_barre/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3/icones_barre diff --git a/formidable_1_0/icones_barre/CVS/Root b/formidable_1_0/icones_barre/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/icones_barre/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/icones_barre/formulaire.png b/formidable_1_0/icones_barre/formulaire.png new file mode 100644 index 0000000000000000000000000000000000000000..0cf4900332313261662b761eb344b93da63a3d0e Binary files /dev/null and b/formidable_1_0/icones_barre/formulaire.png differ diff --git a/formidable_1_0/images/CVS/Entries b/formidable_1_0/images/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..2aeea60563c54d5fa54f18ca49538bc11fcdc1cb --- /dev/null +++ b/formidable_1_0/images/CVS/Entries @@ -0,0 +1,19 @@ +/formidable-128.png/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formidable-24.png/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formidable-64.png/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formidable.svg/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaire-24.png/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaire-action-ajouter.png/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaire-analyse-24.png/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaire-config-champs-24.png/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaire-config-traitements-24.png/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaire-dupliquer-24.png/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaire-editer-24.png/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaire-exporter-24.png/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaire-nouveau-48.png/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaire-reponse-24.png/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaire-reponse-supprimer-24.png/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaire-reponses-24.png/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaire-reponses-exporter-24.png/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaire-supprimer-24.png/1.1.1.1/Mon Dec 3 09:03:16 2012// +D diff --git a/formidable_1_0/images/CVS/Repository b/formidable_1_0/images/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..c011695002dc8fa8e2830c307219fdff43a6c11f --- /dev/null +++ b/formidable_1_0/images/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3/images diff --git a/formidable_1_0/images/CVS/Root b/formidable_1_0/images/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/images/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/images/formidable-128.png b/formidable_1_0/images/formidable-128.png new file mode 100644 index 0000000000000000000000000000000000000000..8d6b21c66a6738a63c23b05c18d89a4c0d55eab7 Binary files /dev/null and b/formidable_1_0/images/formidable-128.png differ diff --git a/formidable_1_0/images/formidable-24.png b/formidable_1_0/images/formidable-24.png new file mode 100644 index 0000000000000000000000000000000000000000..c8c577f17b2bfe418b95446efb8f117c66f80247 Binary files /dev/null and b/formidable_1_0/images/formidable-24.png differ diff --git a/formidable_1_0/images/formidable-64.png b/formidable_1_0/images/formidable-64.png new file mode 100644 index 0000000000000000000000000000000000000000..80d5ab8601b48cc71ecbbd2d555d7158780f81e2 Binary files /dev/null and b/formidable_1_0/images/formidable-64.png differ diff --git a/formidable_1_0/images/formidable.svg b/formidable_1_0/images/formidable.svg new file mode 100644 index 0000000000000000000000000000000000000000..5baf77e0a5ac4c12cd2a3282e65ef67984fa1865 --- /dev/null +++ b/formidable_1_0/images/formidable.svg @@ -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/formidable_1_0/images/formulaire-24.png b/formidable_1_0/images/formulaire-24.png new file mode 100644 index 0000000000000000000000000000000000000000..ff847d080c2b8c158b3dccdff2d1534d06178ae6 Binary files /dev/null and b/formidable_1_0/images/formulaire-24.png differ diff --git a/formidable_1_0/images/formulaire-action-ajouter.png b/formidable_1_0/images/formulaire-action-ajouter.png new file mode 100644 index 0000000000000000000000000000000000000000..8aef2957c18a03733564ddd83a6edb5771da56be Binary files /dev/null and b/formidable_1_0/images/formulaire-action-ajouter.png differ diff --git a/formidable_1_0/images/formulaire-analyse-24.png b/formidable_1_0/images/formulaire-analyse-24.png new file mode 100644 index 0000000000000000000000000000000000000000..9965646437832a2053804dc55b33b9b190dbe27c Binary files /dev/null and b/formidable_1_0/images/formulaire-analyse-24.png differ diff --git a/formidable_1_0/images/formulaire-config-champs-24.png b/formidable_1_0/images/formulaire-config-champs-24.png new file mode 100644 index 0000000000000000000000000000000000000000..0d77271074487e5ea30bbcd2f7c6eed6bc3bcdea Binary files /dev/null and b/formidable_1_0/images/formulaire-config-champs-24.png differ diff --git a/formidable_1_0/images/formulaire-config-traitements-24.png b/formidable_1_0/images/formulaire-config-traitements-24.png new file mode 100644 index 0000000000000000000000000000000000000000..f362e72fbbde43b4aba339ad21a6c052b8069dd9 Binary files /dev/null and b/formidable_1_0/images/formulaire-config-traitements-24.png differ diff --git a/formidable_1_0/images/formulaire-dupliquer-24.png b/formidable_1_0/images/formulaire-dupliquer-24.png new file mode 100644 index 0000000000000000000000000000000000000000..a4ec44f9213f3586049715553d506c47756a4fee Binary files /dev/null and b/formidable_1_0/images/formulaire-dupliquer-24.png differ diff --git a/formidable_1_0/images/formulaire-editer-24.png b/formidable_1_0/images/formulaire-editer-24.png new file mode 100644 index 0000000000000000000000000000000000000000..0bb3e266d5b7a38253cc8cc70e77b48475e5528a Binary files /dev/null and b/formidable_1_0/images/formulaire-editer-24.png differ diff --git a/formidable_1_0/images/formulaire-exporter-24.png b/formidable_1_0/images/formulaire-exporter-24.png new file mode 100644 index 0000000000000000000000000000000000000000..33508572ff1186c138da781b1c3c03fa27ef9b85 Binary files /dev/null and b/formidable_1_0/images/formulaire-exporter-24.png differ diff --git a/formidable_1_0/images/formulaire-nouveau-48.png b/formidable_1_0/images/formulaire-nouveau-48.png new file mode 100644 index 0000000000000000000000000000000000000000..a0c803e3f09a3a23715a2b49c229cd784cabe632 Binary files /dev/null and b/formidable_1_0/images/formulaire-nouveau-48.png differ diff --git a/formidable_1_0/images/formulaire-reponse-24.png b/formidable_1_0/images/formulaire-reponse-24.png new file mode 100644 index 0000000000000000000000000000000000000000..1bbdb51acdf26fccc0d4b409e0e543b213e279ac Binary files /dev/null and b/formidable_1_0/images/formulaire-reponse-24.png differ diff --git a/formidable_1_0/images/formulaire-reponse-supprimer-24.png b/formidable_1_0/images/formulaire-reponse-supprimer-24.png new file mode 100644 index 0000000000000000000000000000000000000000..897c63e1c3b275c13d076fbed552abf50902e79a Binary files /dev/null and b/formidable_1_0/images/formulaire-reponse-supprimer-24.png differ diff --git a/formidable_1_0/images/formulaire-reponses-24.png b/formidable_1_0/images/formulaire-reponses-24.png new file mode 100644 index 0000000000000000000000000000000000000000..ec0a2b05a2d7a392c8a4f464c5069d6af0a684aa Binary files /dev/null and b/formidable_1_0/images/formulaire-reponses-24.png differ diff --git a/formidable_1_0/images/formulaire-reponses-exporter-24.png b/formidable_1_0/images/formulaire-reponses-exporter-24.png new file mode 100644 index 0000000000000000000000000000000000000000..94d0cec41e48d9e59450e829c47b2441694e7ceb Binary files /dev/null and b/formidable_1_0/images/formulaire-reponses-exporter-24.png differ diff --git a/formidable_1_0/images/formulaire-supprimer-24.png b/formidable_1_0/images/formulaire-supprimer-24.png new file mode 100644 index 0000000000000000000000000000000000000000..1819e5ef1685d9e19518d13047a1988dcba88477 Binary files /dev/null and b/formidable_1_0/images/formulaire-supprimer-24.png differ diff --git a/formidable_1_0/inc/CVS/Entries b/formidable_1_0/inc/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..2b8699dbe67f0825ee1a8d1a2d52e9e45db6dc9f --- /dev/null +++ b/formidable_1_0/inc/CVS/Entries @@ -0,0 +1,2 @@ +/formidable.php/1.3/Tue Mar 19 14:47:51 2013// +D diff --git a/formidable_1_0/inc/CVS/Repository b/formidable_1_0/inc/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..ce8493efcd749f10a34c3beea060d17fcc7d7637 --- /dev/null +++ b/formidable_1_0/inc/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3/inc diff --git a/formidable_1_0/inc/CVS/Root b/formidable_1_0/inc/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/inc/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/inc/formidable.php b/formidable_1_0/inc/formidable.php new file mode 100644 index 0000000000000000000000000000000000000000..03fc160f43051474fcf7c99519d716732fc2ff1b --- /dev/null +++ b/formidable_1_0/inc/formidable.php @@ -0,0 +1,377 @@ +<?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 $options : options du formulaire definies dans l'espace prive + * @return unknown_type Retourne un tableau contenant les id des réponses si elles existent, sinon false + */ +function formidable_verifier_reponse_formulaire($id_formulaire, $options){ + 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 = isset($options['anonymiser']) ? $options['anonymiser'] : false; + $anonymiser_variable = isset($options['anonymiser_variable']) ? $options['anonymiser_variable'] : ''; + + // traitement de l'anonymisation + if ($anonymiser != false) { + // mod de l'id_auteur + $variables_anonymisation = + $GLOBALS['formulaires']['variables_anonymisation'][$options['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 '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($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 tenter_unserialize + * + * @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/formidable_1_0/lang/CVS/Entries b/formidable_1_0/lang/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..1c6dbe6eea3190ef1878b4af0ea615dc4aa61db7 --- /dev/null +++ b/formidable_1_0/lang/CVS/Entries @@ -0,0 +1,9 @@ +/formidable.xml/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaire_fr.php/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaires_reponse_fr.php/1.1.1.1/Mon Dec 3 09:03:16 2012// +/paquet-formidable_fr.php/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formidable_de.php/1.3/Tue Mar 19 14:47:51 2013// +/formidable_fr.php/1.3/Tue Mar 19 15:01:12 2013// +/formidable_it.php/1.2/Tue Mar 19 14:47:52 2013// +/formidable_sk.php/1.2/Tue Mar 19 14:47:52 2013// +D diff --git a/formidable_1_0/lang/CVS/Repository b/formidable_1_0/lang/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..e4d96194489d02023f197351c4a72da56e53b692 --- /dev/null +++ b/formidable_1_0/lang/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3/lang diff --git a/formidable_1_0/lang/CVS/Root b/formidable_1_0/lang/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/lang/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/lang/formidable.xml b/formidable_1_0/lang/formidable.xml new file mode 100644 index 0000000000000000000000000000000000000000..8c9f50807adfd163d7a392f3cb41d42c0373a723 --- /dev/null +++ b/formidable_1_0/lang/formidable.xml @@ -0,0 +1,8 @@ +<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" /> + <langue code="fr" /> + <langue code="it" /> + <langue code="sk" url="http://trad.spip.net/tradlang_module/formidable?lang_cible=sk"> + <traducteur nom="jaro" lien="http://trad.spip.net/auteur/jaro" /> + </langue> +</traduction> diff --git a/formidable_1_0/lang/formidable_de.php b/formidable_1_0/lang/formidable_de.php new file mode 100644 index 0000000000000000000000000000000000000000..9265bf7ce4cbfd589a8d54e9398e9a2f74314ae8 --- /dev/null +++ b/formidable_1_0/lang/formidable_de.php @@ -0,0 +1,172 @@ +<?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_longueur_moyenne' => 'Durchschnittliche Anzahl Worte', + 'analyse_nb_reponses_total' => '@nb@ personnes ont répondu à ce formulaire.', # NEW + 'analyse_sans_reponse' => 'Leere Antworten', + 'analyse_une_reponse_total' => 'Une personne a répondu à ce formulaire.', # NEW + 'analyse_zero_reponse_total' => 'Aucune personne n\'a répondu à ce formulaire.', # NEW + 'aucun_traitement' => 'Aucun traitement', # NEW + 'analyse_exporter' => 'Analyse exportieren', + + // B + 'bouton_formulaires' => 'Formulare', + + // 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 !', # NEW + 'cfg_analyse_classe_label' => 'Classe CSS de la barre de progression', # NEW + 'cfg_titre_page_configurer_formidable' => 'Configurer Formidable', # NEW + 'cfg_titre_parametrages_analyse' => 'Paramétrages de l\'analyse des réponses', # NEW + 'champ' => 'Feld', + + // 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', # NEW + 'editer_apres_choix_redirige' => 'Rediriger vers une nouvelle adresse', # NEW + 'editer_apres_choix_rien' => 'Rien du tout', # NEW + 'editer_apres_choix_stats' => 'Les statistiques des réponses', # NEW + 'editer_apres_choix_valeurs' => 'Les valeurs saisies', # NEW + 'editer_apres_explication' => 'Après validation, afficher à la place du formulaire :', # NEW + 'editer_apres_label' => 'Afficher ensuite', # NEW + '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_redirige_url' => 'Adresse de redirection après validation', # NEW + 'editer_redirige_url_explication' => 'Laissez vide si vous souhaitez rester sur la même page', # NEW + '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.", + '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 + 'identification_par_cookie' => 'Par cookie', # NEW + 'identification_par_id_auteur' => 'Par l\'identifiant (id_auteur) de la personne authentifiée', # NEW + 'importer_formulaire' => 'Formular importieren', + 'importer_formulaire_fichier_label' => 'Dateien importeieren', + 'importer_formulaire_format_label' => 'Format der Datei', + + // M + 'modele_label_formulaire_formidable' => 'Quel formulaire ?', # NEW + 'modele_nom_formulaire' => 'un formulaire', # NEW + + // N + 'noisette_label_afficher_titre_formulaire' => 'Afficher le titre du formulaire ?', # NEW + 'noisette_label_identifiant' => 'Formulaire à afficher :', # NEW + 'noisette_nom_noisette_formulaire' => 'Formulaire', # NEW + + // R + 'reponse_aucune' => 'Aucune réponse', # NEW + '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?', + 'reponse_une' => '1 réponse', # NEW + '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_nb' => '@nb@ réponses', # NEW + '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 + 'titre_cadre_raccourcis' => 'Raccourcis', # NEW + 'traitements_actives' => 'Traitements activés', # NEW + '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_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".', # NEW + 'traiter_email_option_vrai_envoyeur_label' => 'Insérer le courriel de l\'envoyeur dans le champ "From"', # NEW + '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_option_anonymiser_label' => "Anonymisierter Form", + 'traiter_enregistrement_option_anonymiser_explication' => "Stellen die Ergebnisse der anonymen Form (nicht halten Trace-Kennung der Befragten).')", + 'traiter_enregistrement_option_choix_select_label' => "Wählen eine Variable von denen zur Verfügung.", + 'traiter_enregistrement_option_anonymiser_variable_label' => "Variable aus dem 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_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_erreur_edition_reponse_inexistante' => 'La réponse à éditer est introuvable.', # NEW + 'traiter_enregistrement_option_identification_explication' => 'Si les réponses sont modifiables, quel procédé utiliser en priorité pour connaitre la réponse à modifier ?', # NEW + 'traiter_enregistrement_option_identification_label' => 'Identification', # NEW + '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/formidable_1_0/lang/formidable_fr.php b/formidable_1_0/lang/formidable_fr.php new file mode 100644 index 0000000000000000000000000000000000000000..5c91352a1ab6935282dfd198fa9c1448d7911fb7 --- /dev/null +++ b/formidable_1_0/lang/formidable_fr.php @@ -0,0 +1,170 @@ +<?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 + 'analyse_avec_reponse' => 'Réponses non-vide', + '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', + 'analyse_exporter' => 'Exporter l\'analyse', + + // 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', + 'champ' => 'Champ', + + // 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_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 ?', + '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_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_option_anonymiser_label' => "Anonymiser le formulaire", + '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_choix_select_label' => "Choisir une variable parmi celles proposées", + 'traiter_enregistrement_option_anonymiser_variable_label' => "Variable à partir de laquelle 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_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_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_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/formidable_1_0/lang/formidable_it.php b/formidable_1_0/lang/formidable_it.php new file mode 100644 index 0000000000000000000000000000000000000000..e2b4c1c0d8b07922617769f1d458c6e885d00a7e --- /dev/null +++ b/formidable_1_0/lang/formidable_it.php @@ -0,0 +1,166 @@ +<?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_longueur_moyenne' => 'Lunghezza media in numero di parole', + 'analyse_nb_reponses_total' => '@nb@ personnes ont répondu à ce formulaire.', # NEW + 'analyse_sans_reponse' => 'Risposte vuote', + 'analyse_une_reponse_total' => 'Une personne a répondu à ce formulaire.', # NEW + 'analyse_zero_reponse_total' => 'Aucune personne n\'a répondu à ce formulaire.', # NEW + 'aucun_traitement' => 'Aucun traitement', # NEW + 'analyse_exporter' => 'Esporta l\'analisi', + + // B + 'bouton_formulaires' => 'Moduli', + + // 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 !', # NEW + 'cfg_analyse_classe_label' => 'Classe CSS de la barre de progression', # NEW + 'cfg_titre_page_configurer_formidable' => 'Configurer Formidable', # NEW + 'cfg_titre_parametrages_analyse' => 'Paramétrages de l\'analyse des réponses', # NEW + 'champ' => 'Campo', + + // 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_stats' => 'Les statistiques des réponses', # NEW + '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_aucune' => 'Aucune réponse', # NEW + '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?', + 'reponse_une' => '1 réponse', # NEW + '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_nb' => '@nb@ réponses', # NEW + 'reponses_voir_detail' => 'Vedi la risposta', + 'retour_aucun_traitement' => 'La risposta è stata correttamente inviata. Grazie :)', + + // S + 'sans_reponses' => 'Senza risposta', + + // T + 'titre_cadre_raccourcis' => 'Raccourcis', # NEW + 'traitements_actives' => 'Traitements activés', # NEW + '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_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".', # NEW + 'traiter_email_option_vrai_envoyeur_label' => 'Insérer le courriel de l\'envoyeur dans le champ "From"', # NEW + '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_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/formidable_1_0/lang/formidable_sk.php b/formidable_1_0/lang/formidable_sk.php new file mode 100644 index 0000000000000000000000000000000000000000..a4bee579c0548726f648f4974d5b549c43f1b953 --- /dev/null +++ b/formidable_1_0/lang/formidable_sk.php @@ -0,0 +1,166 @@ +<?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_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', + 'analyse_exporter' => 'ExportovaÅ¥ analýzu', + + // 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Ã', + 'champ' => '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' => 'Popis', + '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_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 + '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_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/formidable_1_0/lang/formulaire_fr.php b/formidable_1_0/lang/formulaire_fr.php new file mode 100644 index 0000000000000000000000000000000000000000..f6663cd9e6c1752f8d4d946922f67047ac4232af --- /dev/null +++ b/formidable_1_0/lang/formulaire_fr.php @@ -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/formidable_1_0/lang/formulaires_reponse_fr.php b/formidable_1_0/lang/formulaires_reponse_fr.php new file mode 100644 index 0000000000000000000000000000000000000000..108f4e2a5c6d26cdab7f2c37c7a17471a34ce1de --- /dev/null +++ b/formidable_1_0/lang/formulaires_reponse_fr.php @@ -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/formidable_1_0/lang/paquet-formidable_fr.php b/formidable_1_0/lang/paquet-formidable_fr.php new file mode 100644 index 0000000000000000000000000000000000000000..972823924062859af7fd4dbf5e6c93d52b3e97a5 --- /dev/null +++ b/formidable_1_0/lang/paquet-formidable_fr.php @@ -0,0 +1,19 @@ +<?php + +// Ceci est un fichier langue de SPIP -- This is a SPIP language file + +/// Fichier produit par PlugOnet +// Module: paquet-formidable +// Langue: fr +// Date: 05-09-2012 18:51:15 +// Items: 2 + +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', +); +?> \ No newline at end of file diff --git a/formidable_1_0/modeles/CVS/Entries b/formidable_1_0/modeles/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..c04bb2d5c7f6d380871c6fc9bd979d0049530802 --- /dev/null +++ b/formidable_1_0/modeles/CVS/Entries @@ -0,0 +1,5 @@ +/formulaire_aide_memoire.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaire_analyse.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaire_formidable.yaml/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaires_reponse.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +D diff --git a/formidable_1_0/modeles/CVS/Repository b/formidable_1_0/modeles/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..2c5e5531e84b28ef52a0a491da3afe919b439b38 --- /dev/null +++ b/formidable_1_0/modeles/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3/modeles diff --git a/formidable_1_0/modeles/CVS/Root b/formidable_1_0/modeles/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/modeles/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/modeles/formulaire_aide_memoire.html b/formidable_1_0/modeles/formulaire_aide_memoire.html new file mode 100644 index 0000000000000000000000000000000000000000..c1747f7741badff0c10f274f428dfc7f96fc0198 --- /dev/null +++ b/formidable_1_0/modeles/formulaire_aide_memoire.html @@ -0,0 +1,17 @@ +<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/formidable_1_0/modeles/formulaire_analyse.html b/formidable_1_0/modeles/formulaire_analyse.html new file mode 100644 index 0000000000000000000000000000000000000000..4c39c70c448890bc082c6eeac82f04b45ba63062 --- /dev/null +++ b/formidable_1_0/modeles/formulaire_analyse.html @@ -0,0 +1,63 @@ +<BOUCLE_formulaire(FORMULAIRES){id_formulaire}> +<div class='formidable_analyse'> +[(#REM) On fait un tableau qui contient toutes les réponses, classées par champ ] +#SET{valeurs,#ARRAY} +#SET{reponses_total,0} +<BOUCLE_reponses(FORMULAIRES_REPONSES){id_formulaire}> +<BOUCLE_champs(FORMULAIRES_REPONSES_CHAMPS){id_formulaires_reponse}> +#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) + [(#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> diff --git a/formidable_1_0/modeles/formulaire_formidable.yaml b/formidable_1_0/modeles/formulaire_formidable.yaml new file mode 100644 index 0000000000000000000000000000000000000000..79dc4e9d525690a7eb9c562ffbaa2fa34b199846 --- /dev/null +++ b/formidable_1_0/modeles/formulaire_formidable.yaml @@ -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/formidable_1_0/modeles/formulaires_reponse.html b/formidable_1_0/modeles/formulaires_reponse.html new file mode 100644 index 0000000000000000000000000000000000000000..02d78a07e3d3fd7d6663d062eb5a92aa0b3caa5b --- /dev/null +++ b/formidable_1_0/modeles/formulaires_reponse.html @@ -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/formidable_1_0/noisettes/CVS/Entries b/formidable_1_0/noisettes/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..4d95000f0fde9679fd1d2725688577f2cfa7b324 --- /dev/null +++ b/formidable_1_0/noisettes/CVS/Entries @@ -0,0 +1,3 @@ +/formulaire_formidable.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaire_formidable.yaml/1.1.1.1/Mon Dec 3 09:03:16 2012// +D diff --git a/formidable_1_0/noisettes/CVS/Repository b/formidable_1_0/noisettes/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..3274270535d3da967c4a8defcf8f2834d5cc2190 --- /dev/null +++ b/formidable_1_0/noisettes/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3/noisettes diff --git a/formidable_1_0/noisettes/CVS/Root b/formidable_1_0/noisettes/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/noisettes/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/noisettes/formulaire_formidable.html b/formidable_1_0/noisettes/formulaire_formidable.html new file mode 100644 index 0000000000000000000000000000000000000000..95f7a4c6312505c90c310c77e6286f78d91d425f --- /dev/null +++ b/formidable_1_0/noisettes/formulaire_formidable.html @@ -0,0 +1,2 @@ +<BOUCLE_formulaire(FORMULAIRES){identifiant}{0,1}>[(#ENV{afficher_titre_formulaire}|oui)[<h2 class="h2">(#TITRE|typo)</h2>]]</BOUCLE_formulaire> +<div class="ajax">#FORMULAIRE_FORMIDABLE{#ENV{identifiant}}</div> \ No newline at end of file diff --git a/formidable_1_0/noisettes/formulaire_formidable.yaml b/formidable_1_0/noisettes/formulaire_formidable.yaml new file mode 100644 index 0000000000000000000000000000000000000000..dd6679c0c123ebbf4a044d5335c30317f7dcfeb3 --- /dev/null +++ b/formidable_1_0/noisettes/formulaire_formidable.yaml @@ -0,0 +1,15 @@ +nom: '<:formidable:noisette_nom_noisette_formulaire:>' +icon: 'images/formulaire-24.png' +parametres: + - + saisie: 'formulaire_formidable' + options: + nom: 'identifiant' + label: '<:formidable:noisette_label_identifiant:>' + cacher_option_intro: 'oui' + - + saisie: 'oui_non' + options: + nom: 'afficher_titre_formulaire' + label: '<:formidable:noisette_label_afficher_titre_formulaire:>' + defaut: '' \ No newline at end of file diff --git a/formidable_1_0/notifications/CVS/Entries b/formidable_1_0/notifications/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..8682d6d0e257e1db78b15d6c8786c6e691c85aca --- /dev/null +++ b/formidable_1_0/notifications/CVS/Entries @@ -0,0 +1,3 @@ +/formulaire_accuse.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaire_email.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +D diff --git a/formidable_1_0/notifications/CVS/Repository b/formidable_1_0/notifications/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..ca025eb7faf19934a0cd3f30018bf994b0e67ba9 --- /dev/null +++ b/formidable_1_0/notifications/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3/notifications diff --git a/formidable_1_0/notifications/CVS/Root b/formidable_1_0/notifications/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/notifications/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/notifications/formulaire_accuse.html b/formidable_1_0/notifications/formulaire_accuse.html new file mode 100644 index 0000000000000000000000000000000000000000..559a130ca7f0d36b2bd06a168306c4b7e3606e6c --- /dev/null +++ b/formidable_1_0/notifications/formulaire_accuse.html @@ -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/formidable_1_0/notifications/formulaire_email.html b/formidable_1_0/notifications/formulaire_email.html new file mode 100644 index 0000000000000000000000000000000000000000..9f3b5e939e7db8e029842442180f1c38dc767b07 --- /dev/null +++ b/formidable_1_0/notifications/formulaire_email.html @@ -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/formidable_1_0/paquet.xml b/formidable_1_0/paquet.xml new file mode 100644 index 0000000000000000000000000000000000000000..64edb67ddd3f5538f04c0de1bda679891de4f651 --- /dev/null +++ b/formidable_1_0/paquet.xml @@ -0,0 +1,35 @@ +<paquet + prefix="formidable" + categorie="communication" + version="1.3.4" + etat="dev" + compatibilite="[3.0.0-dev;3.0.99]" + logo="images/formidable-64.png" + schema="0.5.1" + documentation="http://www.spip-contrib.net/Formidable-le-generateur-de" +> + + <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.10.1;[" /> + <necessite nom="verifier" compatibilite="[0.1;[" /> + <necessite nom="yaml" compatibilite="[1.1;[" /> + <necessite nom="facteur" compatibilite="[1.5.3;[" /> + + <menu nom="formulaires" titre="formidable:bouton_formulaires" parent="menu_edition" icone="images/formulaire-16.png" /> +</paquet> diff --git a/formidable_1_0/prive/CVS/Entries b/formidable_1_0/prive/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..7abecfefbe63751433fc814d1ef7ff11137a940a --- /dev/null +++ b/formidable_1_0/prive/CVS/Entries @@ -0,0 +1,4 @@ +/style_prive_plugin_formidable.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +D/objets//// +D/squelettes//// +D/themes//// diff --git a/formidable_1_0/prive/CVS/Repository b/formidable_1_0/prive/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..aba067f26124dd354b6d50d8fc1a64cef9b51fcf --- /dev/null +++ b/formidable_1_0/prive/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3/prive diff --git a/formidable_1_0/prive/CVS/Root b/formidable_1_0/prive/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/prive/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/prive/objets/CVS/Entries b/formidable_1_0/prive/objets/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..48cdfbe4027807d26d6492161c8387b3c37dcaf8 --- /dev/null +++ b/formidable_1_0/prive/objets/CVS/Entries @@ -0,0 +1,3 @@ +D/contenu//// +D/infos//// +D/liste//// diff --git a/formidable_1_0/prive/objets/CVS/Repository b/formidable_1_0/prive/objets/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..7ddfd1794c3aecb2ec725e14efe606eccaacb2f0 --- /dev/null +++ b/formidable_1_0/prive/objets/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3/prive/objets diff --git a/formidable_1_0/prive/objets/CVS/Root b/formidable_1_0/prive/objets/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/prive/objets/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/prive/objets/contenu/CVS/Entries b/formidable_1_0/prive/objets/contenu/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..b87a78df2dc56f477d03e7421bf499d7a938e930 --- /dev/null +++ b/formidable_1_0/prive/objets/contenu/CVS/Entries @@ -0,0 +1,3 @@ +/formulaire.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaires_reponse.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +D diff --git a/formidable_1_0/prive/objets/contenu/CVS/Repository b/formidable_1_0/prive/objets/contenu/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..e2311d80cb21f2b0ddd572ffa36f91af26012e32 --- /dev/null +++ b/formidable_1_0/prive/objets/contenu/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3/prive/objets/contenu diff --git a/formidable_1_0/prive/objets/contenu/CVS/Root b/formidable_1_0/prive/objets/contenu/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/prive/objets/contenu/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/prive/objets/contenu/formulaire.html b/formidable_1_0/prive/objets/contenu/formulaire.html new file mode 100644 index 0000000000000000000000000000000000000000..e22434c69dfac50a1b60cd32d7aa12e32db7dc75 --- /dev/null +++ b/formidable_1_0/prive/objets/contenu/formulaire.html @@ -0,0 +1,6 @@ +<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/formidable_1_0/prive/objets/contenu/formulaires_reponse.html b/formidable_1_0/prive/objets/contenu/formulaires_reponse.html new file mode 100644 index 0000000000000000000000000000000000000000..30bccf4ef067e934ee5b7abd4d74fc8f881c9fc5 --- /dev/null +++ b/formidable_1_0/prive/objets/contenu/formulaires_reponse.html @@ -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/formidable_1_0/prive/objets/infos/CVS/Entries b/formidable_1_0/prive/objets/infos/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..b87a78df2dc56f477d03e7421bf499d7a938e930 --- /dev/null +++ b/formidable_1_0/prive/objets/infos/CVS/Entries @@ -0,0 +1,3 @@ +/formulaire.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaires_reponse.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +D diff --git a/formidable_1_0/prive/objets/infos/CVS/Repository b/formidable_1_0/prive/objets/infos/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..12bc51ca357a099d6208df9c2722bb53221d37fd --- /dev/null +++ b/formidable_1_0/prive/objets/infos/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3/prive/objets/infos diff --git a/formidable_1_0/prive/objets/infos/CVS/Root b/formidable_1_0/prive/objets/infos/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/prive/objets/infos/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/prive/objets/infos/formulaire.html b/formidable_1_0/prive/objets/infos/formulaire.html new file mode 100644 index 0000000000000000000000000000000000000000..59afec02b69564fa14fa62686648e9f3bdf3422b --- /dev/null +++ b/formidable_1_0/prive/objets/infos/formulaire.html @@ -0,0 +1,6 @@ +<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/formidable_1_0/prive/objets/infos/formulaires_reponse.html b/formidable_1_0/prive/objets/infos/formulaires_reponse.html new file mode 100644 index 0000000000000000000000000000000000000000..049084278c8822e367faf7aef86b4e2bc6d7c202 --- /dev/null +++ b/formidable_1_0/prive/objets/infos/formulaires_reponse.html @@ -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_reponses,#ID_FORMULAIRES_REPONSE})] + +</div> +</BOUCLE_formulaires_reponse> \ No newline at end of file diff --git a/formidable_1_0/prive/objets/liste/CVS/Entries b/formidable_1_0/prive/objets/liste/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..91be90a6eb74764d8dfe507e6118efd68136667e --- /dev/null +++ b/formidable_1_0/prive/objets/liste/CVS/Entries @@ -0,0 +1,3 @@ +/formulaires.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaires_reponses.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +D diff --git a/formidable_1_0/prive/objets/liste/CVS/Repository b/formidable_1_0/prive/objets/liste/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..5e27e718e35aab92fd6fc5e8edf8dce5d910c061 --- /dev/null +++ b/formidable_1_0/prive/objets/liste/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3/prive/objets/liste diff --git a/formidable_1_0/prive/objets/liste/CVS/Root b/formidable_1_0/prive/objets/liste/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/prive/objets/liste/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/prive/objets/liste/formulaires.html b/formidable_1_0/prive/objets/liste/formulaires.html new file mode 100644 index 0000000000000000000000000000000000000000..f2a809838c5e2149c80f42e986bd726f12fa5cd6 --- /dev/null +++ b/formidable_1_0/prive/objets/liste/formulaires.html @@ -0,0 +1,45 @@ +[(#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/formidable_1_0/prive/objets/liste/formulaires_reponses.html b/formidable_1_0/prive/objets/liste/formulaires_reponses.html new file mode 100644 index 0000000000000000000000000000000000000000..9d310c092c53ed7126cb70283b4d2a9cc5fddd2f --- /dev/null +++ b/formidable_1_0/prive/objets/liste/formulaires_reponses.html @@ -0,0 +1,48 @@ +[(#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/formidable_1_0/prive/squelettes/CVS/Entries b/formidable_1_0/prive/squelettes/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..ad1a70578aba6a124f2fa71fc75c72b19f818aae --- /dev/null +++ b/formidable_1_0/prive/squelettes/CVS/Entries @@ -0,0 +1,5 @@ +D/contenu//// +D/extra//// +D/hierarchie//// +D/inclure//// +D/navigation//// diff --git a/formidable_1_0/prive/squelettes/CVS/Repository b/formidable_1_0/prive/squelettes/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..d5b69651154d8b6dc1a900d102897607fbafbc7c --- /dev/null +++ b/formidable_1_0/prive/squelettes/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3/prive/squelettes diff --git a/formidable_1_0/prive/squelettes/CVS/Root b/formidable_1_0/prive/squelettes/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/prive/squelettes/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/prive/squelettes/contenu/CVS/Entries b/formidable_1_0/prive/squelettes/contenu/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..3e712a6b27ab410b0ea8c86106edb4bb3c5f103c --- /dev/null +++ b/formidable_1_0/prive/squelettes/contenu/CVS/Entries @@ -0,0 +1,8 @@ +/configurer_formidable.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaire.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaire_edit.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaires.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaires_analyse.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaires_reponse.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaires_reponses.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +D diff --git a/formidable_1_0/prive/squelettes/contenu/CVS/Repository b/formidable_1_0/prive/squelettes/contenu/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..3dd4d5d8bccbe000a971be857a5118111ded56eb --- /dev/null +++ b/formidable_1_0/prive/squelettes/contenu/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3/prive/squelettes/contenu diff --git a/formidable_1_0/prive/squelettes/contenu/CVS/Root b/formidable_1_0/prive/squelettes/contenu/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/prive/squelettes/contenu/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/prive/squelettes/contenu/configurer_formidable.html b/formidable_1_0/prive/squelettes/contenu/configurer_formidable.html new file mode 100644 index 0000000000000000000000000000000000000000..df8aa01100455662cb456bd844f7467ca1667c96 --- /dev/null +++ b/formidable_1_0/prive/squelettes/contenu/configurer_formidable.html @@ -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/formidable_1_0/prive/squelettes/contenu/formulaire.html b/formidable_1_0/prive/squelettes/contenu/formulaire.html new file mode 100644 index 0000000000000000000000000000000000000000..6a19dc7d4fba3800944f255a8533e0bb71170431 --- /dev/null +++ b/formidable_1_0/prive/squelettes/contenu/formulaire.html @@ -0,0 +1,35 @@ +<BOUCLE_formulaire(FORMULAIRES){id_formulaire}> +[(#BOITE_OUVRIR{ + [(#AUTORISER{editer, formulaire, #ID_FORMULAIRE}|oui) + [(#URL_ECRIRE{formulaire_edit,id_formulaire=#ID_FORMULAIRE} + |icone_verticale{<:formidable:editer_modifier_formulaire:>,formulaire,formulaire-editer-24,right})] + ] + [<h1>(#TITRE|sinon{<:info_sans_titre:>})[(#CHEMIN_IMAGE{formulaire-24.png}|balise_img{formulaire,cadre-icone})]</h1>] +,simple fiche_objet})] + + +<!--affiche_milieu--> + +<div id="wysiwyg"> +<INCLURE{fond=prive/objets/contenu/formulaire,id=#ID_FORMULAIRE,id_formulaire=#ID_FORMULAIRE,virtuel=oui,ajax=wysiwyg,wysiwyg=1}> +</div> + + #SET{traitements_disponibles, #VAL|traitements_lister_disponibles} + [(#BOITE_OUVRIR{#CHEMIN_IMAGE{formulaire-config-traitements-24.png} + |balise_img{'',cadre-icone} + |concat{<:formidable:traitements_actives:>},'simple traitements'})] + <B_traitements> + <ul class='spip'> + <BOUCLE_traitements(POUR){tableau #TRAITEMENTS|unserialize|sinon{#ARRAY}}> + <li>[(#GET{traitements_disponibles}|table_valeur{#CLE}|table_valeur{titre})]</li> + </BOUCLE_traitements> + </ul> + </B_traitements> + <p><:formidable:aucun_traitement:></p> + <//B_traitements> + #BOITE_FERMER + + #FORMULAIRE_FORMIDABLE{#ID_FORMULAIRE} + +#BOITE_FERMER +</BOUCLE_formulaire> diff --git a/formidable_1_0/prive/squelettes/contenu/formulaire_edit.html b/formidable_1_0/prive/squelettes/contenu/formulaire_edit.html new file mode 100644 index 0000000000000000000000000000000000000000..b3eedd0b25b1715249aa62bb40ad4d86e46eb0d0 --- /dev/null +++ b/formidable_1_0/prive/squelettes/contenu/formulaire_edit.html @@ -0,0 +1,38 @@ +<BOUCLE_autoriser(CONDITION){si #AUTORISER{editer, formulaire}}> +[(#BOITE_OUVRIR{'','info'})] +<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> + <BOUCLE_formulaire(FORMULAIRES){id_formulaire=#VAL{id_formulaire}|_request}> + [(#URL_ECRIRE{formulaire}|parametre_url{id_formulaire,#ID_FORMULAIRE}|icone_verticale{<:retour:>,formulaire,formulaire-24,left})] + + <h4><:formidable:editer_modifier_formulaire:></h4> + <h1>#TITRE</h1> + + #SET{configurer,#ENV{configurer}|in_array{#ARRAY{0,formulaire,1,champs,2,traitements}}|?{#ENV{configurer},champs}} + </BOUCLE_formulaire> + [(#URL_ECRIRE{formulaires}|icone_verticale{<:retour:>,formulaire,formulaire-24,left})] + + <:formidable:editer_modifier_formulaire:> + <h1> + [(#ENV{nouveau}|=={oui}|?{<:formidable:editer_nouveau:>,#VAL{id_menu}|_request})] + </h1> + + #SET{configurer,formulaire} + <//B_formulaire> + + [(#GET{configurer}|=={formulaire}|oui) + #FORMULAIRE_EDITER_FORMULAIRE{#VAL{id_formulaire}|_request|sinon{0}, #VAL{nouveau}|_request|sinon{''}} + ] + [(#GET{configurer}|=={champs}|oui) + #FORMULAIRE_EDITER_FORMULAIRE_CHAMPS{#ENV{id_formulaire}} + ] + [(#GET{configurer}|=={traitements}|oui) + #FORMULAIRE_EDITER_FORMULAIRE_TRAITEMENTS{#ENV{id_formulaire}} + ] +#BOITE_FERMER +</BOUCLE_autoriser> diff --git a/formidable_1_0/prive/squelettes/contenu/formulaires.html b/formidable_1_0/prive/squelettes/contenu/formulaires.html new file mode 100644 index 0000000000000000000000000000000000000000..f655ed305d33dc0a612ea820b529ccab1c0abac7 --- /dev/null +++ b/formidable_1_0/prive/squelettes/contenu/formulaires.html @@ -0,0 +1,13 @@ +[(#BOITE_OUVRIR{ + <h1><:formidable:bouton_formulaires:></h1> + <p><:formidable:formulaires_introduction:></p> +})] +#BOITE_FERMER + +<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,center})] +] diff --git a/formidable_1_0/prive/squelettes/contenu/formulaires_analyse.html b/formidable_1_0/prive/squelettes/contenu/formulaires_analyse.html new file mode 100644 index 0000000000000000000000000000000000000000..452436e5b352b94cca4c973bf04fb138149a7de1 --- /dev/null +++ b/formidable_1_0/prive/squelettes/contenu/formulaires_analyse.html @@ -0,0 +1,24 @@ +<BOUCLE_formulaire(FORMULAIRES){id_formulaire}> +<BOUCLE_autoriser(CONDITION){si #AUTORISER{voir, formulaires_reponse}}> +[(#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/formidable_1_0/prive/squelettes/contenu/formulaires_reponse.html b/formidable_1_0/prive/squelettes/contenu/formulaires_reponse.html new file mode 100644 index 0000000000000000000000000000000000000000..40a22f001fd5a7ad08a1585eb098218925f12787 --- /dev/null +++ b/formidable_1_0/prive/squelettes/contenu/formulaires_reponse.html @@ -0,0 +1,24 @@ +<BOUCLE_formulaires_reponse(FORMULAIRES_REPONSES){tout}{id_formulaires_reponse}> +<BOUCLE_autoriser(CONDITION){si #AUTORISER{voir, formulaires_reponse, #ID_FORMULAIRES_REPONSE}}> +[(#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/formidable_1_0/prive/squelettes/contenu/formulaires_reponses.html b/formidable_1_0/prive/squelettes/contenu/formulaires_reponses.html new file mode 100644 index 0000000000000000000000000000000000000000..63e9cb599c5251c38572a111cc4e30e50ab52bef --- /dev/null +++ b/formidable_1_0/prive/squelettes/contenu/formulaires_reponses.html @@ -0,0 +1,15 @@ +<BOUCLE_formulaire(FORMULAIRES){id_formulaire}> +<BOUCLE_autoriser(CONDITION){si #AUTORISER{voir, formulaires_reponse}}> +[(#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/formidable_1_0/prive/squelettes/extra/CVS/Entries b/formidable_1_0/prive/squelettes/extra/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..f839ab46799532388f1e6c327542892c48ebd375 --- /dev/null +++ b/formidable_1_0/prive/squelettes/extra/CVS/Entries @@ -0,0 +1,4 @@ +/formulaire.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaire_edit.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaires_reponses.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +D diff --git a/formidable_1_0/prive/squelettes/extra/CVS/Repository b/formidable_1_0/prive/squelettes/extra/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..c0d528b897268a1714327638e7cfa2d1110af410 --- /dev/null +++ b/formidable_1_0/prive/squelettes/extra/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3/prive/squelettes/extra diff --git a/formidable_1_0/prive/squelettes/extra/CVS/Root b/formidable_1_0/prive/squelettes/extra/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/prive/squelettes/extra/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/prive/squelettes/extra/formulaire.html b/formidable_1_0/prive/squelettes/extra/formulaire.html new file mode 100644 index 0000000000000000000000000000000000000000..4407c024e726aaaef33f331f494e66364475169c --- /dev/null +++ b/formidable_1_0/prive/squelettes/extra/formulaire.html @@ -0,0 +1,19 @@ +<BOUCLE_formulaire(FORMULAIRES){id_formulaire}> +<!--#extra--> +[(#BOITE_OUVRIR{<:formidable:titre_cadre_raccourcis:>,'simple','section'})] + [(#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:>,'simple','section'})] + <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/formidable_1_0/prive/squelettes/extra/formulaire_edit.html b/formidable_1_0/prive/squelettes/extra/formulaire_edit.html new file mode 100644 index 0000000000000000000000000000000000000000..959b0ebe1982eb827c3b7b5f2302d1ff1038ba27 --- /dev/null +++ b/formidable_1_0/prive/squelettes/extra/formulaire_edit.html @@ -0,0 +1,9 @@ +<BOUCLE_formulaire(FORMULAIRES) {id_formulaire}> +<!--#extra--> +[(#ENV{configurer}|=={traitements}|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/formidable_1_0/prive/squelettes/extra/formulaires_analyse.html b/formidable_1_0/prive/squelettes/extra/formulaires_analyse.html new file mode 100755 index 0000000000000000000000000000000000000000..9810f7574dca1ea3243dd4158bced28830301f1a --- /dev/null +++ b/formidable_1_0/prive/squelettes/extra/formulaires_analyse.html @@ -0,0 +1,8 @@ +<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/formidable_1_0/prive/squelettes/extra/formulaires_reponses.html b/formidable_1_0/prive/squelettes/extra/formulaires_reponses.html new file mode 100644 index 0000000000000000000000000000000000000000..eece13ca04abe6c13f7f652f20863a94aced9602 --- /dev/null +++ b/formidable_1_0/prive/squelettes/extra/formulaires_reponses.html @@ -0,0 +1,8 @@ +<BOUCLE_formulaire(FORMULAIRES){id_formulaire}> +<BOUCLE_autoriser(CONDITION){si #AUTORISER{voir, formulaires_reponse}}> +[(#BOITE_OUVRIR{<:formidable:titre_cadre_raccourcis:>,'info'})] +[(#URL_ACTION_AUTEUR{exporter_formulaires_reponses,#ID_FORMULAIRE} + |icone_horizontale{<:formidable:reponses_exporter:>,formulaire,formulaire-reponses-exporter-24,center})] +#BOITE_FERMER +</BOUCLE_autoriser> +</BOUCLE_formulaire> diff --git a/formidable_1_0/prive/squelettes/hierarchie/CVS/Entries b/formidable_1_0/prive/squelettes/hierarchie/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..2e48e662b52a6ed2433c09ffeb14b692d3620b6e --- /dev/null +++ b/formidable_1_0/prive/squelettes/hierarchie/CVS/Entries @@ -0,0 +1,7 @@ +/formulaire.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaire_edit.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaires.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaires_analyse.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaires_reponse.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaires_reponses.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +D diff --git a/formidable_1_0/prive/squelettes/hierarchie/CVS/Repository b/formidable_1_0/prive/squelettes/hierarchie/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..3af88e4123aeaaeffdb12ac2ff75d958d9319c03 --- /dev/null +++ b/formidable_1_0/prive/squelettes/hierarchie/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3/prive/squelettes/hierarchie diff --git a/formidable_1_0/prive/squelettes/hierarchie/CVS/Root b/formidable_1_0/prive/squelettes/hierarchie/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/prive/squelettes/hierarchie/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/prive/squelettes/hierarchie/formulaire.html b/formidable_1_0/prive/squelettes/hierarchie/formulaire.html new file mode 100644 index 0000000000000000000000000000000000000000..2b7798d42f8b2a05ba87bc4bcf970de9344382e4 --- /dev/null +++ b/formidable_1_0/prive/squelettes/hierarchie/formulaire.html @@ -0,0 +1,5 @@ +<!-- hierarchie --> +<BOUCLE_formulaire(FORMULAIRES){id_formulaire}> +<a href="#URL_ECRIRE{formulaires}"><:formulaire:titre_formulaires:></a> > +<strong class="on">#TITRE</strong> +</BOUCLE_formulaire> diff --git a/formidable_1_0/prive/squelettes/hierarchie/formulaire_edit.html b/formidable_1_0/prive/squelettes/hierarchie/formulaire_edit.html new file mode 100644 index 0000000000000000000000000000000000000000..a41dfd9dcfa08cfc43f025a36c2179ce594f84ab --- /dev/null +++ b/formidable_1_0/prive/squelettes/hierarchie/formulaire_edit.html @@ -0,0 +1,5 @@ +<BOUCLE_formulaire(FORMULAIRES){id_formulaire}> +<a href="#URL_ECRIRE{formulaires}"><:formulaire:titre_formulaires:></a> > +<a href="[(#URL_ECRIRE{formulaire}|parametre_url{id_formulaire,#ID_FORMULAIRE})]">#TITRE</a> > +<strong class="on"><:formulaire:modifier_formulaire:></strong> +</BOUCLE_formulaire> diff --git a/formidable_1_0/prive/squelettes/hierarchie/formulaires.html b/formidable_1_0/prive/squelettes/hierarchie/formulaires.html new file mode 100644 index 0000000000000000000000000000000000000000..7fd040aa0dab686493d9cca0127408ca8f8131fb --- /dev/null +++ b/formidable_1_0/prive/squelettes/hierarchie/formulaires.html @@ -0,0 +1,2 @@ +<!-- hierarchie --> +<strong class="on"><:formulaire:titre_formulaires:></strong> diff --git a/formidable_1_0/prive/squelettes/hierarchie/formulaires_analyse.html b/formidable_1_0/prive/squelettes/hierarchie/formulaires_analyse.html new file mode 100644 index 0000000000000000000000000000000000000000..81cbd20c16eef107d5adaaa24174ae53a9b8b4c9 --- /dev/null +++ b/formidable_1_0/prive/squelettes/hierarchie/formulaires_analyse.html @@ -0,0 +1,7 @@ +<BOUCLE_formulaire(FORMULAIRES){id_formulaire}> +<BOUCLE_autoriser(CONDITION){si #AUTORISER{voir, formulaires_reponse}}> +<a href="#URL_ECRIRE{formulaires}"><:formulaire:titre_formulaires:></a> > +<a href="[(#URL_ECRIRE{formulaire}|parametre_url{id_formulaire,#ID_FORMULAIRE})]">#TITRE</a> > +<strong class="on"><:formidable:reponses_analyse:></strong> +</BOUCLE_autoriser> +</BOUCLE_formulaire> diff --git a/formidable_1_0/prive/squelettes/hierarchie/formulaires_reponse.html b/formidable_1_0/prive/squelettes/hierarchie/formulaires_reponse.html new file mode 100644 index 0000000000000000000000000000000000000000..a4ebff6437b829ab18dad4a101cf83b0cd690fd8 --- /dev/null +++ b/formidable_1_0/prive/squelettes/hierarchie/formulaires_reponse.html @@ -0,0 +1,6 @@ +<BOUCLE_formulaire(FORMULAIRES_REPONSES){id_formulaires_reponse}> +<a href="#URL_ECRIRE{formulaires}"><:formulaire:titre_formulaires:></a> > +<a href="[(#URL_ECRIRE{formulaire}|parametre_url{id_formulaire,#ID_FORMULAIRE})]">#INFO_TITRE{formulaire,#ID_FORMULAIRE}</a> > +<a class="on" href="[(#URL_ECRIRE{formulaires_reponses}|parametre_url{id_formulaire,#ID_FORMULAIRE})]"><:formidable:voir_reponses:></a> > +<strong class="on"><:formulaires_reponse:titre_formulaires_reponse:></strong> +</BOUCLE_formulaire> diff --git a/formidable_1_0/prive/squelettes/hierarchie/formulaires_reponses.html b/formidable_1_0/prive/squelettes/hierarchie/formulaires_reponses.html new file mode 100644 index 0000000000000000000000000000000000000000..bfe35597921ba46a8541932290936f838ff61379 --- /dev/null +++ b/formidable_1_0/prive/squelettes/hierarchie/formulaires_reponses.html @@ -0,0 +1,5 @@ +<BOUCLE_formulaire(FORMULAIRES){id_formulaire}> +<a href="#URL_ECRIRE{formulaires}"><:formulaire:titre_formulaires:></a> > +<a href="[(#URL_ECRIRE{formulaire}|parametre_url{id_formulaire,#ID_FORMULAIRE})]">#INFO_TITRE{formulaire,#ID_FORMULAIRE}</a> > +<strong class="on"><:formidable:voir_reponses:></strong> +</BOUCLE_formulaire> diff --git a/formidable_1_0/prive/squelettes/inclure/CVS/Entries b/formidable_1_0/prive/squelettes/inclure/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..178481050188cf00d7d9cd5a11e43ab8fab9294f --- /dev/null +++ b/formidable_1_0/prive/squelettes/inclure/CVS/Entries @@ -0,0 +1 @@ +D diff --git a/formidable_1_0/prive/squelettes/inclure/CVS/Repository b/formidable_1_0/prive/squelettes/inclure/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..1c9444e67b39f52ba7ad045e28562112a743df96 --- /dev/null +++ b/formidable_1_0/prive/squelettes/inclure/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3/prive/squelettes/inclure diff --git a/formidable_1_0/prive/squelettes/inclure/CVS/Root b/formidable_1_0/prive/squelettes/inclure/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/prive/squelettes/inclure/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/prive/squelettes/navigation/CVS/Entries b/formidable_1_0/prive/squelettes/navigation/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..2e48e662b52a6ed2433c09ffeb14b692d3620b6e --- /dev/null +++ b/formidable_1_0/prive/squelettes/navigation/CVS/Entries @@ -0,0 +1,7 @@ +/formulaire.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaire_edit.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaires.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaires_analyse.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaires_reponse.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaires_reponses.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +D diff --git a/formidable_1_0/prive/squelettes/navigation/CVS/Repository b/formidable_1_0/prive/squelettes/navigation/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..66d14d400cc183f4b1be70a8dbe28a09f118f5e6 --- /dev/null +++ b/formidable_1_0/prive/squelettes/navigation/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3/prive/squelettes/navigation diff --git a/formidable_1_0/prive/squelettes/navigation/CVS/Root b/formidable_1_0/prive/squelettes/navigation/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/prive/squelettes/navigation/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/prive/squelettes/navigation/formulaire.html b/formidable_1_0/prive/squelettes/navigation/formulaire.html new file mode 100644 index 0000000000000000000000000000000000000000..ef1289e75c70ad185b114d78a9f5b93154ca15d7 --- /dev/null +++ b/formidable_1_0/prive/squelettes/navigation/formulaire.html @@ -0,0 +1,42 @@ +<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})] + +[(#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}> +</BOUCLE_resultats> + +<div class='navigation_resultats'> +[(#URL_ECRIRE{formulaires_reponses} + |parametre_url{id_formulaire, #ID_FORMULAIRE} + |icone_horizontale{<:formidable:voir_reponses:> (#TOTAL_BOUCLE),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/formidable_1_0/prive/squelettes/navigation/formulaire_edit.html b/formidable_1_0/prive/squelettes/navigation/formulaire_edit.html new file mode 100644 index 0000000000000000000000000000000000000000..ed8628726b946b7c3bdb6327d1ac85cdc8bb3bc3 --- /dev/null +++ b/formidable_1_0/prive/squelettes/navigation/formulaire_edit.html @@ -0,0 +1,22 @@ +<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})] + +[(#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/formidable_1_0/prive/squelettes/navigation/formulaires.html b/formidable_1_0/prive/squelettes/navigation/formulaires.html new file mode 100644 index 0000000000000000000000000000000000000000..0ee28b014ed0a4cf06ee62ff7015f8c2569999f6 --- /dev/null +++ b/formidable_1_0/prive/squelettes/navigation/formulaires.html @@ -0,0 +1,5 @@ +[(#BOITE_OUVRIR{<:formidable:importer_formulaire:>,'info'})] +[(#AUTORISER{editer, formulaire}|oui) + #FORMULAIRE_IMPORTER_FORMULAIRE +] +#BOITE_FERMER diff --git a/formidable_1_0/prive/squelettes/navigation/formulaires_analyse.html b/formidable_1_0/prive/squelettes/navigation/formulaires_analyse.html new file mode 100644 index 0000000000000000000000000000000000000000..959bad4283f65509a4db6ca4a3e7de967626be14 --- /dev/null +++ b/formidable_1_0/prive/squelettes/navigation/formulaires_analyse.html @@ -0,0 +1,12 @@ +<BOUCLE_formulaire(FORMULAIRES){id_formulaire}> +<BOUCLE_autoriser(CONDITION){si #AUTORISER{voir, formulaires_reponse}}> +#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/formidable_1_0/prive/squelettes/navigation/formulaires_reponse.html b/formidable_1_0/prive/squelettes/navigation/formulaires_reponse.html new file mode 100644 index 0000000000000000000000000000000000000000..2b4d4ede51466c3365853848c6d25d307e5c22f9 --- /dev/null +++ b/formidable_1_0/prive/squelettes/navigation/formulaires_reponse.html @@ -0,0 +1,15 @@ +<BOUCLE_formulaires_reponse(FORMULAIRES_REPONSES){tout}{id_formulaires_reponse}> +<BOUCLE_autoriser(CONDITION){si #AUTORISER{voir, formulaires_reponse, #ID_FORMULAIRES_REPONSE}}> +[(#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/formidable_1_0/prive/squelettes/navigation/formulaires_reponses.html b/formidable_1_0/prive/squelettes/navigation/formulaires_reponses.html new file mode 100644 index 0000000000000000000000000000000000000000..e19e1c1aff82458baa4e3f250ef85379fc096d6b --- /dev/null +++ b/formidable_1_0/prive/squelettes/navigation/formulaires_reponses.html @@ -0,0 +1,12 @@ +<BOUCLE_formulaire(FORMULAIRES){id_formulaire}> +<BOUCLE_autoriser(CONDITION){si #AUTORISER{voir, formulaires_reponse}}> +#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/formidable_1_0/prive/style_prive_plugin_formidable.html b/formidable_1_0/prive/style_prive_plugin_formidable.html new file mode 100644 index 0000000000000000000000000000000000000000..cbd1cf99aeba1d48d71f2235a0a22e17cb5c2b74 --- /dev/null +++ b/formidable_1_0/prive/style_prive_plugin_formidable.html @@ -0,0 +1,32 @@ +#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/formidable_1_0/prive/themes/CVS/Entries b/formidable_1_0/prive/themes/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..f979dcfdb2ced04a5ca87422c2e56ef6364f4398 --- /dev/null +++ b/formidable_1_0/prive/themes/CVS/Entries @@ -0,0 +1,2 @@ +D/basic//// +D/spip//// diff --git a/formidable_1_0/prive/themes/CVS/Repository b/formidable_1_0/prive/themes/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..d7b45fcd66dbf42626d34dc51487a7cc18f87644 --- /dev/null +++ b/formidable_1_0/prive/themes/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3/prive/themes diff --git a/formidable_1_0/prive/themes/CVS/Root b/formidable_1_0/prive/themes/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/prive/themes/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/prive/themes/basic/CVS/Entries b/formidable_1_0/prive/themes/basic/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..d906c23b06aa89a02081a0531c9bc8f39f6f83bc --- /dev/null +++ b/formidable_1_0/prive/themes/basic/CVS/Entries @@ -0,0 +1 @@ +D/images//// diff --git a/formidable_1_0/prive/themes/basic/CVS/Repository b/formidable_1_0/prive/themes/basic/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..22a27c9e6d524779d5846c79e5ff0120ca3de258 --- /dev/null +++ b/formidable_1_0/prive/themes/basic/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3/prive/themes/basic diff --git a/formidable_1_0/prive/themes/basic/CVS/Root b/formidable_1_0/prive/themes/basic/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/prive/themes/basic/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/prive/themes/basic/images/CVS/Entries b/formidable_1_0/prive/themes/basic/images/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..72cbdc1001abdc3a8c35f06115dd77bc605777e0 --- /dev/null +++ b/formidable_1_0/prive/themes/basic/images/CVS/Entries @@ -0,0 +1,2 @@ +/formulaire-16.png/1.1.1.1/Mon Dec 3 09:03:16 2012// +D diff --git a/formidable_1_0/prive/themes/basic/images/CVS/Repository b/formidable_1_0/prive/themes/basic/images/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..48c1039972600476fd3aae92d2e63ba80434ffa6 --- /dev/null +++ b/formidable_1_0/prive/themes/basic/images/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3/prive/themes/basic/images diff --git a/formidable_1_0/prive/themes/basic/images/CVS/Root b/formidable_1_0/prive/themes/basic/images/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/prive/themes/basic/images/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/prive/themes/basic/images/formulaire-16.png b/formidable_1_0/prive/themes/basic/images/formulaire-16.png new file mode 100644 index 0000000000000000000000000000000000000000..8ca21eaea457d65608d71a6afcd1cb30c8842b3a Binary files /dev/null and b/formidable_1_0/prive/themes/basic/images/formulaire-16.png differ diff --git a/formidable_1_0/prive/themes/spip/CVS/Entries b/formidable_1_0/prive/themes/spip/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..d906c23b06aa89a02081a0531c9bc8f39f6f83bc --- /dev/null +++ b/formidable_1_0/prive/themes/spip/CVS/Entries @@ -0,0 +1 @@ +D/images//// diff --git a/formidable_1_0/prive/themes/spip/CVS/Repository b/formidable_1_0/prive/themes/spip/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..1704f76948a877291ac8a63fdcab4d8e831cf76a --- /dev/null +++ b/formidable_1_0/prive/themes/spip/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3/prive/themes/spip diff --git a/formidable_1_0/prive/themes/spip/CVS/Root b/formidable_1_0/prive/themes/spip/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/prive/themes/spip/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/prive/themes/spip/images/CVS/Entries b/formidable_1_0/prive/themes/spip/images/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..efcc96498ecadd12cc65885c5aae51f83ab18b8e --- /dev/null +++ b/formidable_1_0/prive/themes/spip/images/CVS/Entries @@ -0,0 +1,4 @@ +/formulaire-16.png/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaire-24.png/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaires_reponse-24.png/1.1.1.1/Mon Dec 3 09:03:16 2012// +D diff --git a/formidable_1_0/prive/themes/spip/images/CVS/Repository b/formidable_1_0/prive/themes/spip/images/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..8c1b5af1607ef26a988db73dce7ba2d46acc3d93 --- /dev/null +++ b/formidable_1_0/prive/themes/spip/images/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3/prive/themes/spip/images diff --git a/formidable_1_0/prive/themes/spip/images/CVS/Root b/formidable_1_0/prive/themes/spip/images/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/prive/themes/spip/images/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/prive/themes/spip/images/formulaire-16.png b/formidable_1_0/prive/themes/spip/images/formulaire-16.png new file mode 100644 index 0000000000000000000000000000000000000000..8ca21eaea457d65608d71a6afcd1cb30c8842b3a Binary files /dev/null and b/formidable_1_0/prive/themes/spip/images/formulaire-16.png differ diff --git a/formidable_1_0/prive/themes/spip/images/formulaire-24.png b/formidable_1_0/prive/themes/spip/images/formulaire-24.png new file mode 100644 index 0000000000000000000000000000000000000000..ff847d080c2b8c158b3dccdff2d1534d06178ae6 Binary files /dev/null and b/formidable_1_0/prive/themes/spip/images/formulaire-24.png differ diff --git a/formidable_1_0/prive/themes/spip/images/formulaires_reponse-24.png b/formidable_1_0/prive/themes/spip/images/formulaires_reponse-24.png new file mode 100644 index 0000000000000000000000000000000000000000..ec0a2b05a2d7a392c8a4f464c5069d6af0a684aa Binary files /dev/null and b/formidable_1_0/prive/themes/spip/images/formulaires_reponse-24.png differ diff --git a/formidable_1_0/public/CVS/Entries b/formidable_1_0/public/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..c3c9883ef82b9189af3bf176de2f21044b1d9870 --- /dev/null +++ b/formidable_1_0/public/CVS/Entries @@ -0,0 +1,2 @@ +/formidable_criteres.php/1.1.1.1/Mon Dec 3 09:03:16 2012// +D diff --git a/formidable_1_0/public/CVS/Repository b/formidable_1_0/public/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..d554eac695f061ac3ab9f1e5264343fb024b06fa --- /dev/null +++ b/formidable_1_0/public/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3/public diff --git a/formidable_1_0/public/CVS/Root b/formidable_1_0/public/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/public/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/public/formidable_criteres.php b/formidable_1_0/public/formidable_criteres.php new file mode 100644 index 0000000000000000000000000000000000000000..ef2147a362cc0edfedb115872c0e39a61e1f60b0 --- /dev/null +++ b/formidable_1_0/public/formidable_criteres.php @@ -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'", "_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/formidable_1_0/puce_statut/CVS/Entries b/formidable_1_0/puce_statut/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..0c46c94329023742b1e1b52baded5a1b635c9d1e --- /dev/null +++ b/formidable_1_0/puce_statut/CVS/Entries @@ -0,0 +1,2 @@ +/formulaires_reponse.php/1.1.1.1/Mon Dec 3 09:03:16 2012// +D diff --git a/formidable_1_0/puce_statut/CVS/Repository b/formidable_1_0/puce_statut/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..1fdae6271d272e28e06e972b4484ffa716df2ec7 --- /dev/null +++ b/formidable_1_0/puce_statut/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3/puce_statut diff --git a/formidable_1_0/puce_statut/CVS/Root b/formidable_1_0/puce_statut/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/puce_statut/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/puce_statut/formulaires_reponse.php b/formidable_1_0/puce_statut/formulaires_reponse.php new file mode 100644 index 0000000000000000000000000000000000000000..0efc6f9e4e95202c8225e8bd4a8d9ade02d8bab1 --- /dev/null +++ b/formidable_1_0/puce_statut/formulaires_reponse.php @@ -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/formidable_1_0/saisies-analyses/CVS/Entries b/formidable_1_0/saisies-analyses/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..fbad8607ee12128d8de9afdae49f1a010e3decd7 --- /dev/null +++ b/formidable_1_0/saisies-analyses/CVS/Entries @@ -0,0 +1,13 @@ +/_base.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/case.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/checkbox.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/destinataires.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/explication.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/oui_non.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/radio.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/selecteur_article.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/selecteur_rubrique.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/selecteur_rubrique_article.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/selection.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/selection_multiple.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +D diff --git a/formidable_1_0/saisies-analyses/CVS/Repository b/formidable_1_0/saisies-analyses/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..6a75736da945de69f2e68a9651fd1a4bc0e6374a --- /dev/null +++ b/formidable_1_0/saisies-analyses/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3/saisies-analyses diff --git a/formidable_1_0/saisies-analyses/CVS/Root b/formidable_1_0/saisies-analyses/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/saisies-analyses/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/saisies-analyses/_base.html b/formidable_1_0/saisies-analyses/_base.html new file mode 100644 index 0000000000000000000000000000000000000000..7c9a8ab3bfc9ad602caae40e4ac7d81af1c00ffc --- /dev/null +++ b/formidable_1_0/saisies-analyses/_base.html @@ -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/formidable_1_0/saisies-analyses/case.html b/formidable_1_0/saisies-analyses/case.html new file mode 100644 index 0000000000000000000000000000000000000000..51a9faf9b9aa41a7cb80a4b77bc063304502920a --- /dev/null +++ b/formidable_1_0/saisies-analyses/case.html @@ -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/formidable_1_0/saisies-analyses/checkbox.html b/formidable_1_0/saisies-analyses/checkbox.html new file mode 100644 index 0000000000000000000000000000000000000000..c60875ba08bb31a073c88ae766ce410c2ce6952c --- /dev/null +++ b/formidable_1_0/saisies-analyses/checkbox.html @@ -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/formidable_1_0/saisies-analyses/destinataires.html b/formidable_1_0/saisies-analyses/destinataires.html new file mode 100644 index 0000000000000000000000000000000000000000..9692d03105e570e3acfb2d70171abd4d024d0a31 --- /dev/null +++ b/formidable_1_0/saisies-analyses/destinataires.html @@ -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/formidable_1_0/saisies-analyses/explication.html b/formidable_1_0/saisies-analyses/explication.html new file mode 100644 index 0000000000000000000000000000000000000000..703e6c027d189905341b17072f12c3232b8e01cc --- /dev/null +++ b/formidable_1_0/saisies-analyses/explication.html @@ -0,0 +1,4 @@ +<tr class="tr_liste"> + <td class='choix' colspan='2'>[<p class='explication'>(#ENV{texte})</p>]</td> +</tr> + diff --git a/formidable_1_0/saisies-analyses/oui_non.html b/formidable_1_0/saisies-analyses/oui_non.html new file mode 100644 index 0000000000000000000000000000000000000000..51a9faf9b9aa41a7cb80a4b77bc063304502920a --- /dev/null +++ b/formidable_1_0/saisies-analyses/oui_non.html @@ -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/formidable_1_0/saisies-analyses/radio.html b/formidable_1_0/saisies-analyses/radio.html new file mode 100644 index 0000000000000000000000000000000000000000..e7e5dba9e25d4b153b755381dfa1578aa904e099 --- /dev/null +++ b/formidable_1_0/saisies-analyses/radio.html @@ -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/formidable_1_0/saisies-analyses/selecteur_article.html b/formidable_1_0/saisies-analyses/selecteur_article.html new file mode 100644 index 0000000000000000000000000000000000000000..35f08b42d18159b6852357e2cc751750aacc4136 --- /dev/null +++ b/formidable_1_0/saisies-analyses/selecteur_article.html @@ -0,0 +1,13 @@ +[(#REM) Attention, saisie multiple non testee ] + +#SET{plein,#ENV{valeurs}|array_filter} +#SET{vide,#ENV{valeurs}|array_diff_key{#GET{plein}}} + +<tr class="tr_liste row_odd vide"> + <td class="choix"><:formidable:analyse_sans_reponse:></td> + <td class="stat">[(#GET{vide}|count)]</td> +</tr> +<tr class="tr_liste row_even plein"> + <td class="choix"><:formidable:analyse_avec_reponse:></td> + <td class="stat">[(#GET{plein}|count)]</td> +</tr> diff --git a/formidable_1_0/saisies-analyses/selecteur_rubrique.html b/formidable_1_0/saisies-analyses/selecteur_rubrique.html new file mode 100644 index 0000000000000000000000000000000000000000..35f08b42d18159b6852357e2cc751750aacc4136 --- /dev/null +++ b/formidable_1_0/saisies-analyses/selecteur_rubrique.html @@ -0,0 +1,13 @@ +[(#REM) Attention, saisie multiple non testee ] + +#SET{plein,#ENV{valeurs}|array_filter} +#SET{vide,#ENV{valeurs}|array_diff_key{#GET{plein}}} + +<tr class="tr_liste row_odd vide"> + <td class="choix"><:formidable:analyse_sans_reponse:></td> + <td class="stat">[(#GET{vide}|count)]</td> +</tr> +<tr class="tr_liste row_even plein"> + <td class="choix"><:formidable:analyse_avec_reponse:></td> + <td class="stat">[(#GET{plein}|count)]</td> +</tr> diff --git a/formidable_1_0/saisies-analyses/selecteur_rubrique_article.html b/formidable_1_0/saisies-analyses/selecteur_rubrique_article.html new file mode 100644 index 0000000000000000000000000000000000000000..a8ef6aec9258df4c9785a0df1b6ba12e3539346c --- /dev/null +++ b/formidable_1_0/saisies-analyses/selecteur_rubrique_article.html @@ -0,0 +1,14 @@ +[(#REM) Peut etre ameliore en comptant par exemple le nombre d'article / rubriques +Attention, saisie multiple non testee ] + +#SET{plein,#ENV{valeurs}|array_filter} +#SET{vide,#ENV{valeurs}|array_diff_key{#GET{plein}}} + +<tr class="tr_liste row_odd vide"> + <td class="choix"><:formidable:analyse_sans_reponse:></td> + <td class="stat">[(#GET{vide}|count)]</td> +</tr> +<tr class="tr_liste row_even plein"> + <td class="choix"><:formidable:analyse_avec_reponse:></td> + <td class="stat">[(#GET{plein}|count)]</td> +</tr> diff --git a/formidable_1_0/saisies-analyses/selection.html b/formidable_1_0/saisies-analyses/selection.html new file mode 100644 index 0000000000000000000000000000000000000000..54589d337de4f662c1071fb34912f239c1a60d5c --- /dev/null +++ b/formidable_1_0/saisies-analyses/selection.html @@ -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_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/formidable_1_0/saisies-analyses/selection_multiple.html b/formidable_1_0/saisies-analyses/selection_multiple.html new file mode 100644 index 0000000000000000000000000000000000000000..0f1212a6d7c214dc12e27abef8cc6db47f102d72 --- /dev/null +++ b/formidable_1_0/saisies-analyses/selection_multiple.html @@ -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/formidable_1_0/saisies-vues/CVS/Entries b/formidable_1_0/saisies-vues/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..27d5c507a6d617a8cb11458492f595b42e5ed862 --- /dev/null +++ b/formidable_1_0/saisies-vues/CVS/Entries @@ -0,0 +1,3 @@ +/formulaire_formidable.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaire_formidable_multiple.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +D diff --git a/formidable_1_0/saisies-vues/CVS/Repository b/formidable_1_0/saisies-vues/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..e2e1915a0eaff7a2d37add2f0eee45f56dd0091b --- /dev/null +++ b/formidable_1_0/saisies-vues/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3/saisies-vues diff --git a/formidable_1_0/saisies-vues/CVS/Root b/formidable_1_0/saisies-vues/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/saisies-vues/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/saisies-vues/formulaire_formidable.html b/formidable_1_0/saisies-vues/formulaire_formidable.html new file mode 100644 index 0000000000000000000000000000000000000000..a9692f86d94052546231760a9d78f18829be6caa --- /dev/null +++ b/formidable_1_0/saisies-vues/formulaire_formidable.html @@ -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/formidable_1_0/saisies-vues/formulaire_formidable_multiple.html b/formidable_1_0/saisies-vues/formulaire_formidable_multiple.html new file mode 100644 index 0000000000000000000000000000000000000000..9b75a57c3654845958e06a949be0c315a46b492f --- /dev/null +++ b/formidable_1_0/saisies-vues/formulaire_formidable_multiple.html @@ -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/formidable_1_0/saisies/CVS/Entries b/formidable_1_0/saisies/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..8d06e2d04c65b89c0418224b7e89d5b2d8e7d6d0 --- /dev/null +++ b/formidable_1_0/saisies/CVS/Entries @@ -0,0 +1,4 @@ +/champ.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaire_formidable.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +/formulaire_formidable_multiple.html/1.1.1.1/Mon Dec 3 09:03:16 2012// +D diff --git a/formidable_1_0/saisies/CVS/Repository b/formidable_1_0/saisies/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..1ad5aeb311aa7efcf59049f0d59a7ff59bde8506 --- /dev/null +++ b/formidable_1_0/saisies/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3/saisies diff --git a/formidable_1_0/saisies/CVS/Root b/formidable_1_0/saisies/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/saisies/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/saisies/champ.html b/formidable_1_0/saisies/champ.html new file mode 100644 index 0000000000000000000000000000000000000000..d2ad8d8a6fbc40212d776f59c183ad338d5ed509 --- /dev/null +++ b/formidable_1_0/saisies/champ.html @@ -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/formidable_1_0/saisies/formulaire_formidable.html b/formidable_1_0/saisies/formulaire_formidable.html new file mode 100644 index 0000000000000000000000000000000000000000..e8d8bb4c1204991da452287b47e367c7cd5664ca --- /dev/null +++ b/formidable_1_0/saisies/formulaire_formidable.html @@ -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/formidable_1_0/saisies/formulaire_formidable_multiple.html b/formidable_1_0/saisies/formulaire_formidable_multiple.html new file mode 100644 index 0000000000000000000000000000000000000000..b8ef7aaac4868b1e36161b4a6e2036612c42271a --- /dev/null +++ b/formidable_1_0/saisies/formulaire_formidable_multiple.html @@ -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/formidable_1_0/svn.revision b/formidable_1_0/svn.revision new file mode 100644 index 0000000000000000000000000000000000000000..0a9ded3a459787587522281efff7c57a0bffc864 --- /dev/null +++ b/formidable_1_0/svn.revision @@ -0,0 +1,10 @@ +<svn_revision> +<text_version> +Origine: file:///home/svn/repository/spip-zone/_plugins_/formidable/trunk +Revision: 66722 +Dernier commit: 2012-10-12 11:00:03 +0200 +</text_version> +<origine>file:///home/svn/repository/spip-zone/_plugins_/formidable/trunk</origine> +<revision>66722</revision> +<commit>2012-10-12 11:00:03 +0200 </commit> +</svn_revision> \ No newline at end of file diff --git a/formidable_1_0/todo.txt b/formidable_1_0/todo.txt new file mode 100644 index 0000000000000000000000000000000000000000..c857bbec9c562a8fde1d8be6d5c91a9197b26ca1 --- /dev/null +++ b/formidable_1_0/todo.txt @@ -0,0 +1,19 @@ + +À 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 ++ Afficher des saisies en javascript suivant des conditions ++ 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/formidable_1_0/traiter/CVS/Entries b/formidable_1_0/traiter/CVS/Entries new file mode 100644 index 0000000000000000000000000000000000000000..a6a08c95277471c66c92896d4436b2c0a41e1957 --- /dev/null +++ b/formidable_1_0/traiter/CVS/Entries @@ -0,0 +1,5 @@ +/email.php/1.1.1.1/Mon Dec 3 09:03:16 2012// +/email.yaml/1.1.1.1/Mon Dec 3 09:03:16 2012// +/enregistrement.php/1.2/Mon Dec 3 14:11:06 2012// +/enregistrement.yaml/1.2/Mon Dec 3 14:11:06 2012// +D diff --git a/formidable_1_0/traiter/CVS/Repository b/formidable_1_0/traiter/CVS/Repository new file mode 100644 index 0000000000000000000000000000000000000000..939e16ee94b3c8efe27bec7671943d8629065353 --- /dev/null +++ b/formidable_1_0/traiter/CVS/Repository @@ -0,0 +1 @@ +formidable-spip-3/traiter diff --git a/formidable_1_0/traiter/CVS/Root b/formidable_1_0/traiter/CVS/Root new file mode 100644 index 0000000000000000000000000000000000000000..71e2ccb961f2980d662b53843d78e93737942b97 --- /dev/null +++ b/formidable_1_0/traiter/CVS/Root @@ -0,0 +1 @@ +/cvsroot diff --git a/formidable_1_0/traiter/email.php b/formidable_1_0/traiter/email.php new file mode 100644 index 0000000000000000000000000000000000000000..c7a60e4728f33da2633c22da0c8ea50bcdda8402 --- /dev/null +++ b/formidable_1_0/traiter/email.php @@ -0,0 +1,193 @@ +<?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(); + + // 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 = $GLOBALS['meta']['nom_site']; + + // 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('classes/facteur'); + $texte = Facteur::html2text($html); + + // On utilise la forme avancé de Facteur + $corps = array( + 'html' => $html, + 'texte' => $texte, + 'nom_envoyeur' => $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::html2text($html_accuse); + + $corps = array( + 'html' => $html_accuse, + 'texte' => $texte, + 'nom_envoyeur' => $nom_site_spip + ); + + $ok = $envoyer_mail($courriel_envoyeur, $sujet_accuse, $corps, $courriel_from, "X-Originating-IP: ".$GLOBALS['ip']); + } + + if ($ok){ + $retours['message_ok'] .= "\n<br/>"._T('formidable:traiter_email_message_ok'); + } + else{ + $retours['message_erreur'] .= "\n<br/>"._T('formidable:traiter_email_message_erreur'); + } + } + + return $retours; +} + +?> diff --git a/formidable_1_0/traiter/email.yaml b/formidable_1_0/traiter/email.yaml new file mode 100644 index 0000000000000000000000000000000000000000..4f5b4d7f842c83230d3700e1b7a59ce6adbe4552 --- /dev/null +++ b/formidable_1_0/traiter/email.yaml @@ -0,0 +1,57 @@ + +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: '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/formidable_1_0/traiter/enregistrement.php b/formidable_1_0/traiter/enregistrement.php new file mode 100644 index 0000000000000000000000000000000000000000..b89e8e1585a14be31bd961d10af562eeee704740 --- /dev/null +++ b/formidable_1_0/traiter/enregistrement.php @@ -0,0 +1,138 @@ +<?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' => $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 + ); + } + } + + 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/formidable_1_0/traiter/enregistrement.yaml b/formidable_1_0/traiter/enregistrement.yaml new file mode 100644 index 0000000000000000000000000000000000000000..41c9ced81d11b7ff95abf4ff9452d69633417214 --- /dev/null +++ b/formidable_1_0/traiter/enregistrement.yaml @@ -0,0 +1,55 @@ + +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: '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'