diff --git a/base/formidable_tables.php b/base/formidable_tables.php index deca9aced7809b3c6e52c9d40814707576e9e956..c249b92152a24cc5bc8aa3ddb1984aaedfcd41d6 100644 --- a/base/formidable_tables.php +++ b/base/formidable_tables.php @@ -30,9 +30,9 @@ function formidable_declarer_tables_interfaces($interfaces) { $interfaces['tables_jointures']['spip_formulaires'][] = 'formulaires_liens'; $interfaces['tables_jointures']['spip_articles'][] = 'formulaires_liens'; $interfaces['tables_jointures']['spip_rubriques'][] = 'formulaires_liens'; - + $interfaces['exceptions_des_jointures']['spip_formulaires']['vu'] = array('spip_formulaires_liens', 'vu'); - + $interfaces['table_des_traitements']['MESSAGE_RETOUR']['formulaires']= _TRAITEMENT_RACCOURCIS; $interfaces['table_des_traitements']['URL_REDIRECT']['formulaires']= 'vider_url(%s)'; @@ -63,8 +63,8 @@ function formidable_declarer_tables_objets_sql($tables) { 'texte_creer_associer' => 'formidable:liens_creer_associer', 'texte_ajouter' => 'formidable:liens_ajouter', - 'champs_editables' => array('titre', 'identifiant', 'descriptif', 'css', 'message_retour', 'saisies', 'traitements', 'public','apres','url_redirect','resume_reponse'), - 'champs_versionnes' => array('titre', 'identifiant', 'descriptif', 'css', 'message_retour', 'saisies', 'traitements', 'public','apres','url_redirect','resume_reponse'), + 'champs_editables' => array('titre', 'identifiant', 'descriptif', 'css', 'message_retour', 'afficher_message_ok_traitements', 'saisies', 'traitements', 'public','apres','url_redirect','resume_reponse'), + 'champs_versionnes' => array('titre', 'identifiant', 'descriptif', 'css', 'message_retour', 'saisies', 'afficher_message_ok_traitements', 'traitements', 'public','apres','url_redirect','resume_reponse'), 'field' => array( 'id_formulaire' => 'bigint(21) NOT NULL', 'identifiant' => 'varchar(200)', @@ -72,6 +72,7 @@ function formidable_declarer_tables_objets_sql($tables) { 'descriptif' => 'text', 'css' => 'varchar(255) not null default ""', 'message_retour' => "text NOT NULL default ''", + 'afficher_message_ok_traitements' => 'varchar(2) NOT NULL default ""', 'saisies' => "longtext NOT NULL default ''", 'traitements' => "text NOT NULL default ''", 'public' => "enum('non', 'oui') DEFAULT 'non' NOT NULL", @@ -178,10 +179,10 @@ function formidable_declarer_tables_objets_sql($tables) { 'poubelle' => 'formidable:texte_statut_poubelle' ), ); - + // Jointures sur les formulaires pour tous les objets $tables[]['tables_jointures'][] = 'formulaires_liens'; - + return $tables; } diff --git a/formidable_administrations.php b/formidable_administrations.php index 7fc2ed3326afc97630bad8247386f6e2ab3809b1..e153078282d4b5000a35be244dd8c289d66740c0 100644 --- a/formidable_administrations.php +++ b/formidable_administrations.php @@ -111,13 +111,17 @@ function formidable_upgrade($nom_meta_base_version, $version_cible) { $maj['0.23.0'] = array( array('formidable_saisies_identifier') ); - + // Ajouter un champ "vu" pour les liaisons $maj['1.0.0'] = array( array('maj_tables', array('spip_formulaires_liens')), array('formidable_verifier_liens_vu'), ); - + // Ajouter un champ masquer_retour_traitements pour les formulaires + $maj['1.3.0'] = array( + array('maj_tables', array('spip_formulaires')), + ); + include_spip('base/upgrade'); maj_plugin($nom_meta_base_version, $version_cible, $maj); } @@ -379,7 +383,7 @@ function formidable_migrer_config() { function formidable_verifier_liens_vu() { include_spip('action/editer_liens'); include_spip('formidable_pipelines'); - + // Chercher tous les liens de form pas marqué comme vu if ($liens = objet_trouver_liens(array('formulaire' => '*'), array('*' => '*'), array('vu="non"'))) { foreach ($liens as $lien) { @@ -387,10 +391,10 @@ function formidable_verifier_liens_vu() { $cle = id_table_objet($lien['objet']); $contenu = sql_fetsel('*', $table, "$cle=".intval($lien['id_objet'])); $contenu = implode(' ', $contenu); - + // On cherche les modèles insérés dans les textes du contenu $formulaires = formidable_trouve_liens($contenu); - + // Est-ce qu'on trouve le form de ce lien dans les modèles trouvés if (isset($formulaires[$lien['id_formulaire']])) { // On lui ajoute vu=oui diff --git a/formulaires/editer_formulaire.php b/formulaires/editer_formulaire.php index 38c60237aac5cc2f36333932118bf79724e157c2..b5c727e753247bbfaa96ed2cd1b4f7be4769c1ee 100644 --- a/formulaires/editer_formulaire.php +++ b/formulaires/editer_formulaire.php @@ -45,6 +45,15 @@ function formulaires_editer_formulaire_saisies() { 'previsualisation' => 'oui', ) ), + array( + 'saisie' => 'case', + 'options' => array( + 'nom' => 'afficher_message_ok_traitements', + 'label_case' => '<:formidable:afficher_message_ok_traitements_label_case:>', + 'conteneur_class' => 'pleine_largeur', + 'afficher_si' => '@message_retour@', + ), + ), array( 'saisie' => 'textarea', 'options' => array ( @@ -123,7 +132,6 @@ function formulaires_editer_formulaire_verifier($id_formulaire, $nouveau) { include_spip('inc/editer'); $erreurs = saisies_verifier(formulaires_editer_formulaire_saisies()); - if (!isset($erreurs['identifiant'])) { $identifiant = _request('identifiant'); if (sql_getfetsel('id_formulaire', 'spip_formulaires', 'identifiant = '.sql_quote($identifiant).' AND id_formulaire != '.intval($id_formulaire))) { diff --git a/formulaires/formidable.php b/formulaires/formidable.php index bc386b3d553ff1bac5a54cf6d78277e8fbf0533a..fb5e763c4afc7e865d10e389e26e746b34e6b701 100644 --- a/formulaires/formidable.php +++ b/formulaires/formidable.php @@ -352,6 +352,8 @@ function formulaires_formidable_traiter_dist($id, $valeurs = array(), $id_formul $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = ' . $id_formulaire); $saisies = unserialize($formulaire['saisies']); $traitements = unserialize($formulaire['traitements']); + $afficher_message_ok_traitements = $formulaire['afficher_message_ok_traitements']; + // On passe les traitements en pipelines, pour s'assurer de l'ordre le cas échéant $traitements = pipeline( 'formidable_traitements', @@ -368,6 +370,7 @@ function formulaires_formidable_traiter_dist($id, $valeurs = array(), $id_formul $retours['formidable_afficher_apres'] = $formulaire['apres']; $retours['id_formulaire'] = $id_formulaire; + // Si on a une redirection valide if ($url_redirect) { $retours['redirect'] = $url_redirect; @@ -430,10 +433,16 @@ function formulaires_formidable_traiter_dist($id, $valeurs = array(), $id_formul $retours ); // Collecter les messages de retour afin de les formater correctement par la suite - if (!empty($retours['message_ok'])) { + if ( + !empty($retours['message_ok']) + and ( + $afficher_message_ok_traitements + or !$formulaire['message_retour'] + ) + ) { $messages_ok .= wrap(propre($retours['message_ok']),'<div class="message_retour_traitement message_retour_'.$type_traitement.'">'); - $retours['message_ok'] = ''; // Inutile de les exposer aux autres traitements } + $retours['message_ok'] = ''; // Inutile de les exposer aux autres traitements $messages_ok .= $retours['scripts_ok']; } else { // traitement introuvable, ne pas retenter diff --git a/lang/formidable_fr.php b/lang/formidable_fr.php index 0af8eef4a83c2ad865aed12471a0dbae54fdb226..679151e46fd41f96c2ec91c6e4494a17969d2e95 100644 --- a/lang/formidable_fr.php +++ b/lang/formidable_fr.php @@ -177,6 +177,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array( 'liens_retirer_tous_liens_formulaires' => 'Retirer tous les formulaires', // M + 'afficher_message_ok_traitements_label_case' => 'Afficher les messages de retour spécifiques à chaque traitement', 'minutes_secondes' => '@m@min @s@s', 'modele_label_formulaire_formidable' => 'Quel formulaire ?', 'modele_nom_formulaire' => 'un formulaire', diff --git a/paquet.xml b/paquet.xml index f93eadc68bb97a1ed82672afd648774d4067d605..bd2dd4cb77d77e9fff847cecf9741c6e67917fc9 100644 --- a/paquet.xml +++ b/paquet.xml @@ -5,7 +5,7 @@ etat="stable" compatibilite="[3.1.0;3.2.*]" logo="images/formidable-64.png" - schema="1.0.0" + schema="1.3.0" documentation="https://contrib.spip.net/Formidable-le-generateur-de-formulaires" > <nom>Formidable</nom>