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

fix(formidable_ts/36): pouvoir crayonner les fichiers

fix formidable_tablesorter#36

- Au nivau du controleur, magouillé dans le cas de la saisie fichier :
  on ne peut pas un tableau de saisie, mais directement le html de la
  saisie
- Au niveau de la vérification de crayons, faire appel à la fonction cvtupload_formulaire_verifier en faisant comme si un crayonnage de champ était un formulaire CVT (un jour faudra sans doute reecrire le code de cvtupload pour mieux séparer les choses)
parent a31c1cd9
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 style="width:#ENV{largeur}px;#ENV{style};background-color:inherit;">
<div class="editer-groupe"> <div class="editer-groupe">
#GENERER_SAISIES{#ENV{_saisies}} #ENV**{saisie_html}
</div> </div>
</div> </div>
...@@ -42,16 +42,67 @@ function controleurs_formulaires_reponses_champ_dist($regs, $c = null) { ...@@ -42,16 +42,67 @@ function controleurs_formulaires_reponses_champ_dist($regs, $c = null) {
); );
$key = $n->key; $key = $n->key;
$valeur = formidable_deserialize($valeur);
unset($saisie['options']['label']); unset($saisie['options']['label']);
unset($saisie['options']['explication']); unset($saisie['options']['explication']);
unset($saisie['options']['class']); unset($saisie['options']['class']);
unset($saisie['options']['conteneur_class']); unset($saisie['options']['conteneur_class']);
// Crayons utilise son propre formalisme pour le 'name' des saisies. // Crayons utilise son propre formalisme pour le 'name' des saisies.
$nom_crayons = 'content_' . $key . '_valeur'; $nom_crayons = 'content_' . $key . '_valeur';
$saisie['options']['nom'] = $nom_crayons; $saisie['options']['nom'] = $nom_crayons;
$valeur = formidable_deserialize($valeur); $pre_saisies = '';
$contexte = ['_saisies' => [$saisie], $nom_crayons => $valeur]; $saisie_html = saisies_generer_html($saisie, [$nom_crayons => $valeur]);
// Cas spécial de la saisie fichier, on précharge
if (saisies_saisie_est_fichier($saisie) && is_array($valeur)) {
include_spip('inc/cvtupload');
include_spip('inc/formidable_fichiers');
include_spip('inc/filtres');
$precharger_fichiers = charger_fonction('cvtupload_precharger_fichiers', 'inc');
$fichiers = [];
foreach ($valeur as $f) {
$fichiers[] = [
'chemin' => formidable_generer_chemin_fichier([
'formulaire' => $data['id_formulaire'],
'reponse' => $data['id_formulaires_reponse'],
'saisie' => $nom,
'fichier' => $f['nom']
]),
'url' => formidable_generer_url_action_recuperer_fichier(
$data['id_formulaire'],
$data['id_formulaires_reponse'],
$nom,
$f['nom']
)
];
}
$fichiers_precharges = $precharger_fichiers([$nom_crayons => $fichiers], 'formidable_crayons');
$pre_saisie = cvtupload_generer_hidden($fichiers_precharges);
if ($pre_saisie) {
$cvtupload_html = cvtupload_generer_html($fichiers_precharges);
$cvtupload_html = $cvtupload_html[$nom_crayons];
foreach ($cvtupload_html as $cle => $html) {
$saisie_html = preg_replace(
"#<input[^>]*name=['\"]{$nom_crayons}(?:\&\#91;|\[){$cle}(?:\&\#93;|\])[^>]*>#i",
$html,
$saisie_html
);
}
$saisie_html = $pre_saisie . $saisie_html;
}
}
$contexte = [
'saisie_html' => $saisie_html,
];
$html = $n->formulaire($contexte); $html = $n->formulaire($contexte);
$status = $scripts = null; $status = $scripts = null;
...@@ -62,5 +113,6 @@ function controleurs_formulaires_reponses_champ_dist($regs, $c = null) { ...@@ -62,5 +113,6 @@ function controleurs_formulaires_reponses_champ_dist($regs, $c = null) {
$scripts = '<link rel="stylesheet" type="text/css" href="' . find_in_path('css/ui/jquery-ui.css') . '" />'; $scripts = '<link rel="stylesheet" type="text/css" href="' . find_in_path('css/ui/jquery-ui.css') . '" />';
} }
return [$html . $scripts, $status]; return [$html . $scripts, $status];
} }
...@@ -359,15 +359,17 @@ function formidable_crayons_verifier($flux) { ...@@ -359,15 +359,17 @@ function formidable_crayons_verifier($flux) {
$id = $flux['args']['id']; $id = $flux['args']['id'];
$valeur = $flux['args']['content']['valeur']; $valeur = $flux['args']['content']['valeur'];
$data = sql_fetsel( $data = sql_fetsel(
['nom', 'saisies'], ['nom', 'saisies', 'f.id_formulaire', 'r.id_formulaires_reponse'],
['spip_formulaires_reponses_champs AS c', 'spip_formulaires_reponses AS r', 'spip_formulaires AS f'], ['spip_formulaires_reponses_champs AS c', 'spip_formulaires_reponses AS r', 'spip_formulaires AS f'],
["id_formulaires_reponses_champ = $id", 'r.id_formulaires_reponse = c.id_formulaires_reponse', 'f.id_formulaire = r.id_formulaire'] ["id_formulaires_reponses_champ = $id", 'r.id_formulaires_reponse = c.id_formulaires_reponse', 'f.id_formulaire = r.id_formulaire']
); );
include_spip('formidable_fonctions'); include_spip('formidable_fonctions');
$saisies = formidable_deserialize($data['saisies']); $saisies = formidable_deserialize($data['saisies']);
$saisie = saisies_chercher($saisies, $data['nom']); $saisie = saisies_chercher($saisies, $data['nom']);
$atrouver = 'content_' . $flux['args']['wid'] . '_valeur';
if (saisies_saisie_est_tabulaire($saisie)) { if (saisies_saisie_est_tabulaire($saisie)) {
$atrouver = 'content_' . $flux['args']['wid'] . '_valeur';
$valeur = saisies_request($atrouver); $valeur = saisies_request($atrouver);
$flux['data']['normaliser']['valeur'] = formidable_serialize($valeur); $flux['data']['normaliser']['valeur'] = formidable_serialize($valeur);
} }
...@@ -380,6 +382,52 @@ function formidable_crayons_verifier($flux) { ...@@ -380,6 +382,52 @@ function formidable_crayons_verifier($flux) {
} elseif (saisies_request($data['nom']) !== $valeur) { } elseif (saisies_request($data['nom']) !== $valeur) {
$flux['data']['normaliser']['valeur'] = $normaliser; $flux['data']['normaliser']['valeur'] = $normaliser;
} }
if (!$erreur && saisies_saisie_est_fichier($saisie)) {
$flux = formidable_crayons_verifier_fichier($flux, $saisie, $data);
}
return $flux;
}
/**
*
* Vérification des crayons pour le cas d'une saisie de type fichier
* @param array $flux de formulaire
* @param array $saisie description de la saisie
* @param array $data données sur le champ, tirées de sql
* @return array $flux;
**/
function formidable_crayons_verifier_fichier(array $flux, array $saisie, array $data): array {
include_spip('inc/cvtupload');
include_spip('traiter/enregistrement');
include_spip('inc/formidable_fichiers');
include_spip('action/ajouter_documents');
$valeur = $flux['args']['content']['valeur'];
$nom_crayons = 'content_' . $flux['args']['wid'] . '_valeur';
$nom_saisie = $saisie['options']['nom'];
// Faire comme si on était un vrai formulaire CVT, et donc s'appuyer sur CVTupload qui va se charger de mettre les fichiers où il faut comme il faut
include_spip('cvtupload_pipelines');
cvtupload_formulaire_verifier([
'args' => [
'form' => 'formidable_crayons',
'args' => [$nom_crayons]
]
]);
if (isset($_FILES[$nom_crayons])) {
$_FILES[$nom_saisie] = $_FILES[$nom_crayons];
}
formidable_effacer_fichiers_champ($data['id_formulaire'], $data['id_formulaires_reponse'], $saisie['options']['nom']);
$valeur = traiter_enregistrement_fichiers($saisie, $data['id_formulaire'], $data['id_formulaires_reponse']);
if (is_array($valeur)) {
$valeur = formidable_serialize($valeur);
} else {
$valeur = formidable_serialize([]);
}
$flux['data']['normaliser']['valeur'] = $valeur;
return $flux; return $flux;
} }
......
<?php
/**
* Déclaration des crayons "comme si c'était du cvt"
* pour CVT Upload
*
* @package SPIP\Formidable\Crayons
**/
/**
* Déclarons un crayonnage de champ fichier comme si c'était un CVT
* @param string $nom_crayons
* @return array
**/
function formulaires_formidable_crayons_fichiers(string $nom_crayons): array {
return [$nom_crayons];
}
...@@ -385,6 +385,21 @@ parameters: ...@@ -385,6 +385,21 @@ parameters:
count: 1 count: 1
path: controleurs/formulaires_reponses_champ.php path: controleurs/formulaires_reponses_champ.php
-
message: "#^Function charger_fonction not found\\.$#"
count: 1
path: controleurs/formulaires_reponses_champ.php
-
message: "#^Function cvtupload_generer_hidden not found\\.$#"
count: 1
path: controleurs/formulaires_reponses_champ.php
-
message: "#^Function cvtupload_generer_html not found\\.$#"
count: 1
path: controleurs/formulaires_reponses_champ.php
- -
message: "#^Function find_in_path not found\\.$#" message: "#^Function find_in_path not found\\.$#"
count: 1 count: 1
...@@ -392,7 +407,7 @@ parameters: ...@@ -392,7 +407,7 @@ parameters:
- -
message: "#^Function include_spip not found\\.$#" message: "#^Function include_spip not found\\.$#"
count: 2 count: 5
path: controleurs/formulaires_reponses_champ.php path: controleurs/formulaires_reponses_champ.php
- -
...@@ -400,6 +415,16 @@ parameters: ...@@ -400,6 +415,16 @@ parameters:
count: 1 count: 1
path: controleurs/formulaires_reponses_champ.php path: controleurs/formulaires_reponses_champ.php
-
message: "#^Function saisies_generer_html not found\\.$#"
count: 1
path: controleurs/formulaires_reponses_champ.php
-
message: "#^Function saisies_saisie_est_fichier not found\\.$#"
count: 1
path: controleurs/formulaires_reponses_champ.php
- -
message: "#^Function sql_fetsel not found\\.$#" message: "#^Function sql_fetsel not found\\.$#"
count: 1 count: 1
...@@ -880,6 +905,11 @@ parameters: ...@@ -880,6 +905,11 @@ parameters:
count: 1 count: 1
path: formidable_pipelines.php path: formidable_pipelines.php
-
message: "#^Function cvtupload_formulaire_verifier not found\\.$#"
count: 1
path: formidable_pipelines.php
- -
message: "#^Function id_table_objet not found\\.$#" message: "#^Function id_table_objet not found\\.$#"
count: 1 count: 1
...@@ -887,7 +917,7 @@ parameters: ...@@ -887,7 +917,7 @@ parameters:
- -
message: "#^Function include_spip not found\\.$#" message: "#^Function include_spip not found\\.$#"
count: 7 count: 12
path: formidable_pipelines.php path: formidable_pipelines.php
- -
...@@ -945,6 +975,11 @@ parameters: ...@@ -945,6 +975,11 @@ parameters:
count: 2 count: 2
path: formidable_pipelines.php path: formidable_pipelines.php
-
message: "#^Function saisies_saisie_est_fichier not found\\.$#"
count: 1
path: formidable_pipelines.php
- -
message: "#^Function saisies_saisie_est_tabulaire not found\\.$#" message: "#^Function saisies_saisie_est_tabulaire not found\\.$#"
count: 1 count: 1
...@@ -2305,6 +2340,11 @@ parameters: ...@@ -2305,6 +2340,11 @@ parameters:
count: 2 count: 2
path: traiter/enregistrement.php path: traiter/enregistrement.php
-
message: "#^Function saisies_saisie_est_fichier not found\\.$#"
count: 1
path: traiter/enregistrement.php
- -
message: "#^Function saisies_saisie_est_tabulaire not found\\.$#" message: "#^Function saisies_saisie_est_tabulaire not found\\.$#"
count: 1 count: 1
......
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