Skip to content
Extraits de code Groupes Projets
Valider b55cd58e rédigé par Maïeul's avatar Maïeul
Parcourir les fichiers

Merge branch '4.3.0RC'

Testé avec une utilisatrice externe, ça marche.
parents 66fd2932 29474c89
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
<div style="width:#ENV{largeur}px;#ENV{style};background-color:inherit;">
<[(#DIV|sinon{ul})] class="editer-groupe">
#GENERER_SAISIES{#ENV{_saisies}}
</[(#DIV|sinon{ul})]>
</div>
<?php
/**
* Controleur de Crayons pour les champs d'une réponse
*
* @param array $regs
* @param array|null $c
* @return array Liste html, erreur
*/
function controleurs_formulaires_reponses_champ_dist($regs, $c = null) {
include_spip('inc/saisies');
list(,$crayon, $type, $champ, $id) = $regs;
$id_formulaires_reponses_champ = $regs[4];
// Recuperer id_formulaires_reponse et id_formulaire
// Note, sans doute pourrait-on passer directement cela en classe
// Mais
// 1. Cela ferait une exception
// 2. Des gens utilisent peut être pas #VOIR_REPONSE{xxx,edit}
$data = sql_fetsel('*', 'spip_formulaires_reponses_champs JOIN spip_formulaires_reponses JOIN spip_formulaires', "id_formulaires_reponses_champ=$id_formulaires_reponses_champ AND spip_formulaires_reponses.id_formulaires_reponse = spip_formulaires_reponses_champs.id_formulaires_reponse AND spip_formulaires.id_formulaire = spip_formulaires_reponses.id_formulaire");
$id_formulaires_reponse = $data['id_formulaires_reponse'];
$nom = $data['nom'];
$valeur = $data['valeur'];
$saisie = saisies_chercher(unserialize($data['saisies']), $nom);
$valeur = $data['valeur'];
$n = new Crayon(
$type . '-valeur-' . $id_formulaires_reponses_champ,
$valeur,
array('controleur' => 'controleurs/formulaires_reponses_champ')
);
$key = $n->key;
unset($saisie['options']['label']);
unset($saisie['options']['explication']);
unset($saisie['options']['class']);
unset($saisie['options']['li_class']);
// Crayons utilise son propre formalisme pour le 'name' des saisies.
$nom_crayons = 'content_' . $key . '_valeur';
$saisie['options']['nom'] = $nom_crayons;
$contexte = array('_saisies' => array($saisie), $nom_crayons => $valeur);
$html = $n->formulaire($contexte);
$status = $scripts = null;
// probablement pas la meilleure idée du siècle…
// mais tenter d'afficher correctement le picker de date du plugin saisies dans l'espace public
if (!test_espace_prive() and $saisie['saisie'] == 'date') {
$scripts = '<link rel="stylesheet" type="text/css" href="' . find_in_path('css/ui/jquery-ui.css') . '" />';
}
return array($html . $scripts, $status);
}
...@@ -99,7 +99,12 @@ function calculer_voir_reponse($id_formulaires_reponse, $id_formulaire, $nom, $s ...@@ -99,7 +99,12 @@ function calculer_voir_reponse($id_formulaires_reponse, $id_formulaire, $nom, $s
// Si on demande edit > mode crayon > on génère le crayon correspond // Si on demande edit > mode crayon > on génère le crayon correspond
if ($type_retour == 'edit') { if ($type_retour == 'edit') {
return 'crayon '.'formulaires_reponses_champ-valeur-'. $reponses_valeurs[$id_formulaires_reponse][$nom]['id']; if (isset($reponses_valeurs[$id_formulaires_reponse][$nom]['id'])) {
$valeur = $reponses_valeurs[$id_formulaires_reponse][$nom]['id'];
} else {
$valeur = sql_insertq('spip_formulaires_reponses_champs', array('id_formulaires_reponse' => $id_formulaires_reponse, 'nom' => $nom));
}
return 'crayon '.'formulaires_reponses_champ-valeur-'. $valeur;
} }
// Si on trouve bien la saisie demandée // Si on trouve bien la saisie demandée
if ($saisie = saisies_chercher($formulaires_saisies[$id_formulaire], $nom)) { if ($saisie = saisies_chercher($formulaires_saisies[$id_formulaire], $nom)) {
......
...@@ -297,3 +297,65 @@ function formidable_corbeille_table_infos($flux) { ...@@ -297,3 +297,65 @@ function formidable_corbeille_table_infos($flux) {
); );
return $flux; return $flux;
} }
/**
* Définir une fonction de contrôleur pour Crayons si on tente d'éditer un champ d'une réponse de formulaire.
*
* Si on édite un champ d'une réponse de formulaires avec Crayons, sans avoir créé manuellement de contrôleur spécifique
* pour le champ en question, Crayons propose soit un textarea, soit un input.
*
* Vu que l'on connaît les déclarations de nos champ , on va les utiliser pour créer
* un formulaire d'édition plus adapté à notre champ.
*
* @pipeline crayons_controleur
* @param array $flux
* @return array
*/
function formidable_crayons_controleur($flux) {
// si Crayons a déjà trouvé de contrôleur PHP, on ne fait rien
if ($flux['data'] != 'controleur_dist') {
return $flux;
}
$type = $flux['args']['type'];
if ($type === 'formulaires_reponses_champ') {
$flux['data'] = charger_fonction('formulaires_reponses_champ', 'controleurs');
}
return $flux;
}
/**
* Vérifier une saisie envoyée depuis un formulaire de Crayons.
*
* @pipeline crayons_verifier
* @param array $flux
* @return array
*/
function formidable_crayons_verifier($flux) {
// Le nom du modèle envoyé par le controleur/formulaires_reponses_champs.
if ($flux['args']['modele'] !== 'valeur' and $flux['args']['type'] !== 'formulaires_reponses_champ') {
return $flux;
}
include_spip('inc/saisies');
$id = $flux['args']['id'];
$valeur = $flux['args']['content']['valeur'];
$data = sql_fetsel('nom,saisies', 'spip_formulaires_reponses_champs JOIN spip_formulaires_reponses JOIN spip_formulaires', "id_formulaires_reponses_champ=$id AND spip_formulaires_reponses.id_formulaires_reponse = spip_formulaires_reponses_champs.id_formulaires_reponse AND spip_formulaires.id_formulaire = spip_formulaires_reponses.id_formulaire");
$saisies = unserialize($data['saisies']);
$saisie = saisies_chercher($saisies, $data['nom']);
if (isset($saisie['verifier'])) {
$verifier = $saisie['verifier'];
$verif_fonction = charger_fonction('verifier', 'inc', true);
$erreur = $verif_fonction($valeur, $verifier['type'], $verifier['options'], $normaliser);
if ($erreur) {
$flux['data']['erreurs']['valeur'] = $erreur;
} elseif (!is_null($normaliser)) {
$flux['data']['normaliser']['valeur'] = $normaliser;
}
}
return $flux;
}
<div class='formulaire_spip formulaire_editer formulaire_#FORM formulaire_#FORM-#ENV{id_formulaires_reponse}'>
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV**{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
[(#ENV{editable})
<form method="post" action="#ENV{action}">
#ACTION_FORMULAIRE{#ENV{action}}
<input type="hidden" name="id_formulaires_reponse" value="#ENV{id_formulaires_reponse}" />
<!--extra-->
<p class="boutons"><input type="submit" class="submit" value="<:bouton_enregistrer:>" /></p>
</form>
]
</div>
<?php
// Sécurité
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
function formulaires_editer_formulaires_reponse_charger($id_formulaires_reponse, $retour) {
include_spip('inc/editer');
// Est-ce qu'on a le droit ?
if (!autoriser('modifier', 'formulaires_reponse', $id_formulaires_reponse)) {
$contexte = array();
$contexte['editable'] = false;
$contexte['message_erreur'] = _T('formidable:erreur_autorisation');
} else {
$contexte = formulaires_editer_objet_charger('formulaires_reponse', $id_formulaires_reponse, 0, 0, $retour, '');
}
return $contexte;
}
function formulaires_editer_formulaires_reponse_verifier($id_formulaires_reponse, $retour) {
include_spip('inc/editer');
return formulaires_editer_objet_verifier('formulaires_reponse', $id_formulaires_reponse);
}
function formulaires_editer_formulaires_reponse_traiter($id_formulaires_reponse, $retour) {
include_spip('inc/editer');
return formulaires_editer_objet_traiter('formulaires_reponse', $id_formulaires_reponse, 0, 0, $retour, '');
}
...@@ -120,12 +120,14 @@ $GLOBALS[$GLOBALS['idx_lang']] = array( ...@@ -120,12 +120,14 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'formulaires_supprimer' => 'Supprimer le 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_supprimer_confirmation' => 'Attention, cela supprimera aussi tous les résultats. Êtes-vous sûr de vouloir supprimer ce formulaire ?',
'formulaires_tous' => 'Tous les formulaires', 'formulaires_tous' => 'Tous les formulaires',
'formulaires_reponse_cextras' => 'Champs extras associés à la réponse',
// H // H
'heures_minutes_secondes' => '@h@h @m@min @s@s', 'heures_minutes_secondes' => '@h@h @m@min @s@s',
// I // I
'icone_modifier_formulaires_reponse' => 'Modifier la réponse', 'icone_modifier_formulaires_reponse' => 'Modifier la réponse',
'icone_modifier_formulaires_reponse_cextras' => 'Modifier les champs extra associés à la réponse',
'icone_retour_formulaires_reponse' => 'Retour à la réponse', 'icone_retour_formulaires_reponse' => 'Retour à la réponse',
'id_formulaires_reponse' => 'Identifiant de la réponse', 'id_formulaires_reponse' => 'Identifiant de la réponse',
'identification_par_cookie' => 'Par cookie (identifiant aléatoire, ne stocke aucune information personnelle)', 'identification_par_cookie' => 'Par cookie (identifiant aléatoire, ne stocke aucune information personnelle)',
......
<paquet <paquet
prefix="formidable" prefix="formidable"
categorie="communication" categorie="communication"
version="4.2.3" version="4.3.0"
etat="stable" etat="stable"
compatibilite="[3.1.0;3.2.*]" compatibilite="[3.1.0;3.2.*]"
logo="images/formidable-64.png" logo="images/formidable-64.png"
...@@ -37,6 +37,9 @@ ...@@ -37,6 +37,9 @@
<pipeline nom="optimiser_base_disparus" inclure="formidable_pipelines.php" /> <pipeline nom="optimiser_base_disparus" inclure="formidable_pipelines.php" />
<pipeline nom="taches_generales_cron" inclure="formidable_pipelines.php" /> <pipeline nom="taches_generales_cron" inclure="formidable_pipelines.php" />
<pipeline nom="crayons_controleur" inclure="formidable_pipelines.php" />
<pipeline nom="crayons_verifier" inclure="formidable_pipelines.php" />
<pipeline nom="corbeille_table_infos" inclure="formidable_pipelines.php" /> <pipeline nom="corbeille_table_infos" inclure="formidable_pipelines.php" />
<necessite nom="spip_bonux" compatibilite="[3.3.8;[" /> <necessite nom="spip_bonux" compatibilite="[3.3.8;[" />
<necessite nom="saisies" compatibilite="[3.34.0;[" /> <necessite nom="saisies" compatibilite="[3.34.0;[" />
......
...@@ -3,7 +3,10 @@ ...@@ -3,7 +3,10 @@
[(#BOITE_OUVRIR{ [(#BOITE_OUVRIR{
[(#AUTORISER{modifier,formulairesreponse,#ID_FORMULAIRES_REPONSE}) [(#AUTORISER{modifier,formulairesreponse,#ID_FORMULAIRES_REPONSE})
[(#URL_ECRIRE{formulaires_reponse_edit,id_formulaires_reponse=#ID_FORMULAIRES_REPONSE}|icone_verticale{<:formidable:icone_modifier_formulaires_reponse:>,formulaires_reponse,edit,right})] [(#URL_ECRIRE{formulaires_reponse_edit,id_formulaires_reponse=#ID_FORMULAIRES_REPONSE}|icone_verticale{<:formidable:icone_modifier_formulaires_reponse:>,formulaires_reponse,edit,right})]
] [(#VAL{spip_formulaires_reponses}|appliquer_filtre{champs_extras_objet}|oui)
[(#URL_ECRIRE{formulaires_reponse_edit_cextras,id_formulaires_reponse=#ID_FORMULAIRES_REPONSE}|icone_verticale{<:formidable:icone_modifier_formulaires_reponse_cextras:>,formulaires_reponse,edit,right})]
]
]
<h1><:formulaires_reponse:formulaires_reponse_numero{nb=#ID_FORMULAIRES_REPONSE}:></h1> <h1><:formulaires_reponse:formulaires_reponse_numero{nb=#ID_FORMULAIRES_REPONSE}:></h1>
,simple fiche_objet})] ,simple fiche_objet})]
<!--affiche_milieu--> <!--affiche_milieu-->
......
<BOUCLE_formulaires_reponses(FORMULAIRES_REPONSES){id_formulaires_reponse} {si #AUTORISER{modifier,formulairesreponse,#ID_FORMULAIRES_REPONSE}}> <BOUCLE_formulaires_reponses(FORMULAIRES_REPONSES){id_formulaires_reponse} {si #AUTORISER{modifier,formulairesreponse,#ID_FORMULAIRES_REPONSE}}{tout}>
#SET{redirect,#URL_ECRIRE{formulaires_reponse,id_formulaires_reponse=#ID_FORMULAIRES_REPONSE,true}} #SET{redirect,#URL_ECRIRE{formulaires_reponse,id_formulaires_reponse=#ID_FORMULAIRES_REPONSE,true}}
<div class='cadre-formulaire-editer'> <div class='cadre-formulaire-editer'>
<div class='entete-formulaire'> <div class='entete-formulaire'>
......
<BOUCLE_formulaires_reponses(FORMULAIRES_REPONSES){id_formulaires_reponse} {tout}{si #AUTORISER{modifier,formulairesreponse,#ID_FORMULAIRES_REPONSE}}>
#SET{redirect,#URL_ECRIRE{formulaires_reponse,id_formulaires_reponse=#ID_FORMULAIRES_REPONSE,true}}
<div class='cadre-formulaire-editer'>
<div class='entete-formulaire'>
[(#URL_ECRIRE{formulaires_reponse,id_formulaires_reponse=#ID_FORMULAIRES_REPONSE}|icone_verticale{<:formidable:icone_retour_formulaires_reponse:>,formulaires_reponse,edit,left})]
<h1><:formulaires_reponse:formulaires_reponse_numero{nb=#ID_FORMULAIRES_REPONSE}:><:formidable:formulaires_reponse_cextras:></h1>
</div>
#FORMULAIRE_EDITER_FORMULAIRES_REPONSE{#ID_FORMULAIRES_REPONSE,#URL_ECRIRE{formulaires_reponse}|parametre_url{id_formulaires_reponse,#ENV{id_formulaires_reponse}}}
</div>
</BOUCLE_formulaires_reponses>
<?php
/**
* Retourner le code HTML de la vue d'un champ d'une réponse formidable pour Crayons
*
* @param string $type
* Type d'objet
* @param string $modele
* Nom du modèle donné par le contrôleur
* @param int $id
* Identifiant de l'objet
* @param array $content
* Couples champs / valeurs postés.
* @param $wid
* Identifiant du formulaire
*/
function vues_formulaires_reponses_champ_dist($type, $modele, $id, $content, $wid) {
$data = sql_fetsel('spip_formulaires.id_formulaire, spip_formulaires_reponses.id_formulaires_reponse, nom', 'spip_formulaires_reponses_champs JOIN spip_formulaires_reponses JOIN spip_formulaires', "id_formulaires_reponses_champ=$id AND spip_formulaires_reponses.id_formulaires_reponse = spip_formulaires_reponses_champs.id_formulaires_reponse AND spip_formulaires.id_formulaire = spip_formulaires_reponses.id_formulaire");
return calculer_voir_reponse($data['id_formulaires_reponse'], $data['id_formulaire'], $data['nom']);
}
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter