Skip to content
Permalink
Browse files

Supprimer la dependance a saisies : on explicite le formulaire de con…

…fig et on duplique les 3 fonctions nom2name, nom2classe et nom2name (c'est moche oui)
  • Loading branch information...
Cerdic committed Jul 30, 2019
1 parent 8cbb7bf commit c8c6eeaac35ec22cffad01cdf5c0a982b43f549e
Showing with 89 additions and 13 deletions.
  1. +64 −3 bigup_fonctions.php
  2. +22 −6 formulaires/configurer_bigup.html
  3. +2 −3 inc/Bigup/Formulaire.php
  4. +1 −1 paquet.xml
@@ -135,7 +135,7 @@ function calculer_balise_BIGUP_TOKEN($champ, $multiple, $form, $form_args) {
$time = time();
// le vrai nom du champ pour le token (truc/muche => truc[muche])
$champ = saisie_nom2name($champ);
$champ = bigup_nom2name($champ);
// Ajouter [] s'il est multiple et s'il ne l'a pas déjà.
if (in_array($multiple, [true, 'oui', 'multiple'])) {
@@ -162,11 +162,72 @@ function bigup_lister_fichiers($fichiers, $nom, $multiple) {
if (!$fichiers or !$nom) {
return [];
}
$nom = saisie_name2nom($nom);
$nom = bigup_nom2name($nom);
if ($multiple) {
$liste = table_valeur($fichiers, $nom);
} else {
$liste = [ table_valeur($fichiers, $nom) ];
}
return is_array($liste) ? array_filter($liste) : [];
}
}
// Duplicat fonctions de saisies, pour eviter une dependance.
// A regler mieux que ca (dans le core ?)
/**
* Passer un nom en une valeur compatible avec un `name` de formulaire
*
* - toto => toto,
* - toto/truc => toto[truc],
* - toto[truc] => toto[truc]
*
* @param string $nom
* return string
**/
function bigup_nom2name($nom) {
if (false === strpos($nom, '/')) {
return $nom;
}
$nom = explode('/', $nom);
$premier = array_shift($nom);
$nom = implode('][', $nom);
return $premier . '[' . $nom . ']';
}
/**
* Passer un nom en une valeur compatible avec une classe css
*
* - toto => toto,
* - toto/truc => toto_truc,
* - toto[truc] => toto_truc
*
* @param string $nom
* return string
**/
function bigup_nom2classe($nom) {
return str_replace(array('/', '[', ']', '[', ']'), array('_', '_', '', '_', ''), $nom);
}
/**
* Passer un `name` en un format de nom compris de saisies
*
* - toto => toto,
* - toto[truc] => toto/truc,
* - toto[truc][] => toto/truc/
* - toto/truc => toto/truc
*
* @see saisie_nom2name() pour l'inverse.
* @param string $name
* @return string
**/
function bigup_name2nom($name) {
if (false === strpos($name, '[')) {
return $name;
}
$name = explode('[', str_replace(']', '', $name));
return implode('/', $name);
}
@@ -8,14 +8,30 @@ <h3 class="titrem"><:bigup:cfg_titre_parametrages:></h3>
<form method="post" action="#ENV{action}">
<div>
#ACTION_FORMULAIRE{#ENV{action}}
<div class="editer-groupe">
#SET{name,charger_public}#SET{obli,''}#SET{defaut,0}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
<div class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
<label><:bigup:cfg_charger_public:></label>[
<span class='erreur_message'>(#GET{erreurs})</span>
]
<div class="choix">
#SET{val,0}
<input type="hidden" name="#GET{name}" value="#GET{val}" />
#SET{val,1}
<input type="checkbox" name="#GET{name}" class="checkbox" id="#GET{name}_#GET{val}" value="#GET{val}" aria-describedby="#GET{name}_explication" [(#ENV{#GET{name},#GET{defaut}}|=={#GET{val}}|oui)checked="checked"] />
<label for="#GET{name}_#GET{val}"><:bigup:cfg_charger_public_case:></label>
</div>
</div>

[(#SAISIE{case, charger_public,
label=<:bigup:cfg_charger_public:>,
label_case=<:bigup:cfg_charger_public_case:>})]
#SET{name,max_file_size}#SET{obli,''}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
<div class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
<label for="#GET{name}"><:bigup:cfg_max_file_size:></label>[
<span class='erreur_message'>(#GET{erreurs})</span>
]<input type="text" name="#GET{name}" class="text" value="#ENV*{#GET{name},#GET{defaut}}" id="#GET{name}" [(#HTML5|et{#GET{obli}})required='required']/>
<p class="explication"><:bigup:cfg_max_file_size_explication:></p>
</div>

[(#SAISIE{input, max_file_size,
label=<:bigup:cfg_max_file_size:>,
explication=<:bigup:cfg_max_file_size_explication:>})]
</div>

<input type="hidden" name="_meta_casier" value="bigup" />
<p class="boutons"><span class="image_loading">&nbsp;</span><input type="submit" class="submit" value="<:bouton_enregistrer:>" /></p>
@@ -55,7 +55,6 @@ public function __construct(Identifier $identifier, $formulaire, $contexte) {
$this->formulaire = $formulaire;
$this->contexte = $contexte;
include_spip('bigup_fonctions');
include_spip('saisies_fonctions');
include_spip('inc/filtres');
}
@@ -165,7 +164,7 @@ function preparer_input($champs, $options = []) {
// Ajouter les fichiers déjà présents
$fichiers = '';
$liste_fichiers = table_valeur($this->contexte, saisie_name2nom($champ_env));
$liste_fichiers = table_valeur($this->contexte, bigup_name2nom($champ_env));
if ($liste_fichiers) {
$fichiers = recuperer_fond(
'saisies/inc-bigup_liste_fichiers',
@@ -180,7 +179,7 @@ function preparer_input($champs, $options = []) {
// Ajouter une classe sur le conteneur
if ($options['editer_class']) {
$regexp = self::regexp_balise_attribut_contenant_valeur('div', 'class', 'editer editer_' . saisie_nom2classe($champ_env));
$regexp = self::regexp_balise_attribut_contenant_valeur('div', 'class', 'editer editer_' . bigup_nom2classe($champ_env));
if (preg_match($regexp, $this->formulaire, $regs)) {
$new = self::completer_attribut($regs[0], 'class', $options['editer_class']);
$this->formulaire = str_replace($regs[0], $new, $this->formulaire);
@@ -31,7 +31,7 @@
<pipeline nom="formulaire_verifier" inclure="bigup_pipelines.php" />
<pipeline nom="formulaire_traiter" inclure="bigup_pipelines.php" />

<necessite nom="saisies" compatibilite="[2.17.1;]" />
<utilise nom="saisies" compatibilite="[2.17.1;]" />
<necessite nom="php" compatibilite="[5.4.0;[" />

<genie nom="nettoyer_repertoire_upload" periode="86400" />

0 comments on commit c8c6eea

Please sign in to comment.
You can’t perform that action at this time.