Skip to content
Extraits de code Groupes Projets
Valider 5b1c5c65 rédigé par camille.sauvage@espci.fr's avatar camille.sauvage@espci.fr
Parcourir les fichiers

No commit message

No commit message
parent 78015d93
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Affichage de
avec 1940 ajouts et 0 suppression
<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">&nbsp;</span><input type="submit" class="submit" value="<:bouton_enregistrer:>" /></p>
</div>
</form>
</div>
<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>
<?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;
}
?>
<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>
<?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;
}
?>
<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>
<?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;
}
?>
<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>
<?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;
}
?>
<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>
<?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;
}
?>
formidable_1_0.orig/icones_barre/formulaire.png

688 octets

formidable_1_0.orig/images/formidable-128.png

11,9 ko

formidable_1_0.orig/images/formidable-24.png

1,33 ko

formidable_1_0.orig/images/formidable-64.png

5,11 ko

Ce diff est replié.
formidable_1_0.orig/images/formulaire-24.png

843 octets

formidable_1_0.orig/images/formulaire-action-ajouter.png

629 octets

formidable_1_0.orig/images/formulaire-analyse-24.png

1,15 ko

formidable_1_0.orig/images/formulaire-config-champs-24.png

979 octets

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