$contexte['fond_generer'] = 'formulaires/inc-generer_saisies_configurables';
// On cherche jquery UI pour savoir si on pourra glisser-déplacer
- // SPIP 3.1 - jquery_ui
- if (find_in_path('javascript/ui/sortable.js') and find_in_path('javascript/ui/draggable.js')) {
+ $contexte['_jquery_ui_all'] = false;
+
+ // SPIP 3.2
+ if ($jquery_ui_all = find_in_path('javascript/ui/jquery-ui.js')) {
+ $contexte['_jquery_ui_all'] = $jquery_ui_all;
+ // SPIP 3.1
+ } elseif (find_in_path('javascript/ui/sortable.js') and find_in_path('javascript/ui/draggable.js')) {
$contexte['_chemin_ui'] = 'javascript/ui/';
+ // SPIP 3.0
} elseif (find_in_path('javascript/ui/jquery.ui.sortable.js') and find_in_path('javascript/ui/jquery.ui.draggable.js')) {
- // SPIP 3 - jquery_ui
$contexte['_chemin_ui'] = 'javascript/ui/jquery.ui.';
+ // Plugin jquery-ui absent.
} else {
$contexte['_chemin_ui'] = false;
}
$configurer_saisie = $enregistrer_saisie = '';
// Pas d'erreur si l'on ne demande rien
- if (!($nom_ou_id = $configurer_saisie = _request('configurer_saisie')
- or $nom_ou_id = $enregistrer_saisie = _request('enregistrer_saisie'))) {
+ if (
+ !($nom_ou_id = $configurer_saisie = _request('configurer_saisie')
+ or $nom_ou_id = $enregistrer_saisie = _request('enregistrer_saisie'))
+ ) {
return $erreurs;
}
if ($nom_ou_id[0] == '@') {
$saisies_actuelles = saisies_lister_par_identifiant($formulaire_actuel);
$nom = $saisies_actuelles[$nom_ou_id]['options']['nom'];
- } else {
+ }
+ else {
$saisies_actuelles = saisies_lister_par_nom($formulaire_actuel);
$nom = $nom_ou_id;
}
$saisie = $saisies_actuelles[$nom_ou_id];
$formulaire_config = $saisies_disponibles[$saisie['saisie']]['options'];
- array_walk_recursive($formulaire_config, 'formidable_transformer_nom', "saisie_modifiee_${nom}[options][@valeur@]");
+ array_walk_recursive($formulaire_config, 'construire_formulaire_transformer_nom', "saisie_modifiee_${nom}[options][@valeur@]");
$formulaire_config = saisie_identifier(array('saisies'=>$formulaire_config));
$formulaire_config = $formulaire_config['saisies'];
}
// S'il y a l'option adéquat, on ajoute le champ pour modifier le nom
- if (isset($options['modifier_nom']) and $options['modifier_nom']
- and $chemin_nom = saisies_chercher($formulaire_config, "saisie_modifiee_${nom}[options][description]", true)) {
+ if (
+ isset($options['modifier_nom']) and $options['modifier_nom']
+ and $chemin_nom = saisies_chercher($formulaire_config, "saisie_modifiee_${nom}[options][description]", true)
+ ) {
$chemin_nom[] = 'saisies';
$chemin_nom[] = '0';
if ($chemin_validation = saisies_chercher($formulaire_config, "saisie_modifiee_${nom}[options][validation]", true)) {
include_spip('inc/verifier');
$liste_verifications = verifier_lister_disponibles();
+
+ // La vérification fichiers ne sert que pour la saisie fichiers, et réciproquement, cette saisies n'utilise que cette vérification
+ if ($saisie['saisie'] == 'fichiers') {
+ $liste_verifications = array('fichiers'=>$liste_verifications['fichiers']);
+ } else {
+ unset($liste_verifications['fichiers']);
+ }
+ uasort ($liste_verifications,'verifier_trier_par_titre');
$chemin_validation[] = 'saisies';
$chemin_validation[] = 1000000; // à la fin
// On construit la saisie à insérer et les fieldset des options
- $saisie_liste_verif = array(
- 'saisie' => 'selection',
- 'options' => array(
- 'nom' => "saisie_modifiee_${nom}[verifier][type]",
- 'label' => _T('saisies:construire_verifications_label'),
- 'option_intro' => _T('saisies:construire_verifications_aucune'),
- 'conteneur_class' => 'liste_verifications',
- 'datas' => array()
- )
- );
-
+ if ($saisie['saisie'] == 'fichiers') {
+ $saisie_liste_verif = array(
+ 'saisie' => 'hidden',
+ 'options' => array(
+ 'nom' => "saisie_modifiee_${nom}[verifier][type]",
+ 'defaut' => 'fichiers'
+ )
+ );
+ } else {
+ $saisie_liste_verif = array(
+ 'saisie' => 'selection',
+ 'options' => array(
+ 'nom' => "saisie_modifiee_${nom}[verifier][type]",
+ 'label' => _T('saisies:construire_verifications_label'),
+ 'option_intro' => _T('saisies:construire_verifications_aucune'),
+ 'conteneur_class' => 'liste_verifications',
+ 'datas' => array()
+ )
+ );
+ }
foreach ($liste_verifications as $type_verif => $verif) {
$saisie_liste_verif['options']['datas'][$type_verif] = $verif['titre'];
// Si le type de vérif a des options, on ajoute un fieldset
),
'saisies' => $verif['options']
);
- array_walk_recursive($groupe, 'formidable_transformer_nom', "saisie_modifiee_${nom}[verifier][$type_verif][@valeur@]");
+ array_walk_recursive($groupe, 'construire_formulaire_transformer_nom', "saisie_modifiee_${nom}[verifier][$type_verif][@valeur@]");
+ array_walk_recursive($groupe, 'construire_formulaire_transformer_afficher_si', "saisie_modifiee_${nom}[verifier][$type_verif]");
$verif_options[$type_verif] = $groupe;
}
}
$verif_options = array_merge(array($saisie_liste_verif), $verif_options);
}
-
-
+
// Permettre d'intégrer des saisies et fieldset au formulaire de configuration.
// Si des vérifications sont à faire, elles seront prises en compte
// lors des tests de vérifications à l'enregistrement.
$saisie_modifiee = _request("saisie_modifiee_${nom}");
// On cherche les erreurs de la configuration
$vraies_erreurs = saisies_verifier($formulaire_config);
+
// Si on autorise à modifier le nom ET qu'il doit être unique : on vérifie
if (isset($options['modifier_nom']) and $options['modifier_nom']
and isset($options['nom_unique']) and $options['nom_unique']) {
$vraies_erreurs["saisie_modifiee_${nom}[options][nom]"] = _T('saisies:erreur_option_nom_unique');
}
}
+
// On regarde s'il a été demandé un type de vérif
if (isset($saisie_modifiee['verifier']['type'])
and (($type_verif = $saisie_modifiee['verifier']['type']) != '')
}
}
$erreurs['configurer_'.$nom] = $formulaire_config;
- $erreurs['positionner'] = '#configurer_'.$nom;
if ($enregistrer_saisie) {
if ($vraies_erreurs) {
}
$saisie = array_replace_recursive($saisie, $defaut);
}
+
$formulaire_actuel = saisies_inserer($formulaire_actuel, $saisie);
}
// À utiliser avec un array_walk_recursive()
// Applique une transformation à la @valeur@ de tous les champs "nom" d'un formulaire, y compris loin dans l'arbo
-function formidable_transformer_nom(&$valeur, $cle, $transformation) {
+function construire_formulaire_transformer_nom(&$valeur, $cle, $transformation) {
if ($cle == 'nom' and is_string($valeur)) {
$valeur = str_replace('@valeur@', $valeur, $transformation);
}
}
+// À utiliser avec un array_walk_recursive()
+// Applique une transformation à la valeur de tous les champs "afficher_si" d'un formulaire, y compris loin dans l'arbo
+function construire_formulaire_transformer_afficher_si(&$valeur, $cle, $transformation) {
+ if ($cle == 'afficher_si' and is_string($valeur)) {
+ $valeur = preg_replace("#@(.*)@#", '@'.$transformation.'[${1}]@', $valeur);
+ }
+}
+
// Préparer une saisie pour la transformer en truc configurable
-function formidable_generer_saisie_configurable($saisie, $env) {
+function construire_formulaire_generer_saisie_configurable($saisie, $env) {
// On récupère le nom
$nom = $saisie['options']['nom'];
$identifiant = isset($saisie['identifiant']) ? $saisie['identifiant'] : '';
// On cherche si ya un formulaire de config
$formulaire_config = isset($env['erreurs']['configurer_'.$nom]) ? $env['erreurs']['configurer_'.$nom] : '';
+
// On ajoute une classe
if (!isset($saisie['options']['conteneur_class'])) {
$saisie['options']['conteneur_class'] = ''; // initialisation
'nom' => $nom,
'identifiant' => $identifiant,
'formulaire_config' => $formulaire_config,
- 'deplacable' => $env['_chemin_ui']
+ 'deplacable' => (!empty($env['_jquery_ui_all']) or !empty($env['_chemin_ui']))
)
),
'debut'
// Un test pour savoir si on prend le _request ou bien
$erreurs_test = $env['erreurs'];
unset($erreurs_test['configurer_'.$nom]);
- unset($erreurs_test['positionner']);
unset($erreurs_test['message_erreur']);
if ($erreurs_test) {
)
.'<'.saisie_balise_structure_formulaire('li').' class="boutons">
<input type="hidden" name="enregistrer_saisie" value="'.$nom.'" />
- <button type="submit" class="submit link" name="enregistrer_saisie" value="">'._T('bouton_annuler').'</button>
- <input type="submit" class="submit" name="enregistrer" value="'._T('bouton_valider').'" />
+ <button type="submit" class="submit link noscroll" name="enregistrer_saisie" value="">'._T('bouton_annuler').'</button>
+ <input type="submit" class="submit noscroll" name="enregistrer" value="'._T('bouton_valider').'" />
</'.saisie_balise_structure_formulaire('li').'>'
.'</'.saisie_balise_structure_formulaire('ul').'></div>',
'fin'
);
}
+
// On génère le HTML de la saisie
$html = saisies_generer_html($saisie, $env);
+
return $html;
}
function saisies_groupe_inserer($formulaire_actuel, $saisie) {
include_spip('inclure/configurer_saisie_fonctions');
- //le groupe de saisies
- $saisies_charger_infos = saisies_charger_infos($saisie, $saisies_repertoire = 'saisies/groupes');
+ //le groupe de saisies
+ $saisies_charger_infos = saisies_charger_infos($saisie, $saisies_repertoire = 'saisies/groupes');
- //le tableau est-il en options ou en saisies ?
- $classique_yaml=count($saisies_charger_infos['options']);
- $formidable_yaml=count($saisies_charger_infos['saisies']);
- if ($classique_yaml>0) {
- $champ_options = 'options';
- }
- if ($formidable_yaml>0) {
- $champ_options = 'saisies';
- }
+ //le tableau est-il en options ou en saisies ?
+ $classique_yaml=count($saisies_charger_infos['options']);
+ $formidable_yaml=count($saisies_charger_infos['saisies']);
+ if ($classique_yaml>0) {
+ $champ_options = 'options';
+ }
+ if ($formidable_yaml>0) {
+ $champ_options = 'saisies';
+ }
- //les champs du groupe
- foreach ($saisies_charger_infos[$champ_options] as $info_saisie) {
- unset($info_saisie['identifiant']);
- $saisies_disponibles = saisies_lister_disponibles();
- $construire_nom = $info_saisie[$champ_options]['nom'] ? $info_saisie[$champ_options]['nom'] : $info_saisie['saisie'];
- $nom = $info_saisie[$champ_options]['nom'] = saisies_generer_nom($formulaire_actuel, $construire_nom);
+ //les champs du groupe
+ foreach ($saisies_charger_infos[$champ_options] as $info_saisie) {
+ unset($info_saisie['identifiant']);
+ $saisies_disponibles = saisies_lister_disponibles();
+ $construire_nom = $info_saisie[$champ_options]['nom'] ? $info_saisie[$champ_options]['nom'] : $info_saisie['saisie'];
+ $nom = $info_saisie[$champ_options]['nom'] = saisies_generer_nom($formulaire_actuel, $construire_nom);
- $formulaire_actuel = saisies_inserer($formulaire_actuel, $info_saisie);
- }
- return $formulaire_actuel;
+ $formulaire_actuel = saisies_inserer($formulaire_actuel, $info_saisie);
+ }
+
+ return $formulaire_actuel;
}