Browse Source

PSR SPIP

svn/root/tags/v2.7.2
kent1@arscenic.info 7 years ago
parent
commit
90d5388ca4
  1. 17
      action/deplacer_saisie.php
  2. 10
      balise/configurer_saisie.php
  3. 11
      balise/generer_saisies.php
  4. 54
      balise/saisie.php
  5. 12
      balise/voir_saisie.php
  6. 14
      balise/voir_saisies.php
  7. 228
      formulaires/construire_formulaire.php
  8. 7
      formulaires/saisies_cvt.php
  9. 1029
      inc/saisies.php
  10. 25
      inc/saisies_afficher.php
  11. 18
      inc/saisies_manipuler.php
  12. 22
      inclure/configurer_saisie_fonctions.php
  13. 6
      saisies-vues/selecteur_article_fonctions.php
  14. 76
      saisies_fonctions.php
  15. 32
      saisies_options.php
  16. 78
      saisies_pipelines.php

17
action/deplacer_saisie.php

@ -5,8 +5,10 @@
*
* @package SPIP\Saisies\Action
*/
if (!defined("_ECRIRE_INC_VERSION")) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Action de déplacement de saisies dans le constructeur de formulaires
@ -24,19 +26,19 @@ function action_deplacer_saisie_dist() {
$formulaire_actuel = session_get($session);
if (!$formulaire_actuel) {
return "";
return '';
}
include_spip('inc/saisies');
$saisies_actuelles = saisies_lister_par_identifiant($formulaire_actuel);
if (!isset($saisies_actuelles[$identifiant])) {
return "";
return '';
}
// tester @id et [@id] (fieldset)
if ($ou and !isset($saisies_actuelles[$ou]) and !isset($saisies_actuelles[ substr($ou,1,-1) ])) {
return "";
if ($ou and !isset($saisies_actuelles[$ou]) and !isset($saisies_actuelles[ substr($ou, 1, -1) ])) {
return '';
}
// on deplace ou c'est demande...
@ -45,4 +47,3 @@ function action_deplacer_saisie_dist() {
// On sauve tout ca
$formulaire_actuel = session_set($session, $formulaire_actuel);
}

10
balise/configurer_saisie.php

@ -6,7 +6,9 @@
*/
// Sécurité
if (!defined("_ECRIRE_INC_VERSION")) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Compile la balise `#CONFIGURER_SAISIE`
@ -14,11 +16,11 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
* @uses Pile::recuperer_et_supprimer_argument_balise()
* @uses Pile::creer_et_ajouter_argument_balise()
* @see balise_INCLURE_dist()
*
*
* @param Champ $p
* @return Champ
**/
function balise_CONFIGURER_SAISIE_dist($p){
function balise_CONFIGURER_SAISIE_dist($p) {
// On recupere le premier argument : le nom de la saisie
$saisie = Pile::recuperer_et_supprimer_argument_balise(1, $p);
@ -40,5 +42,3 @@ function balise_CONFIGURER_SAISIE_dist($p){
}
}

11
balise/generer_saisies.php

@ -1,4 +1,4 @@
<?php
<?php
/**
* Gestion de la balise `#GENERER_SAISIES`
@ -7,7 +7,9 @@
*/
// Sécurité
if (!defined("_ECRIRE_INC_VERSION")) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Compile la balise `#GENERER_SAISIES` qui retourne le code HTML des saisies de formulaire,
@ -24,13 +26,13 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
* @uses Pile::recuperer_et_supprimer_argument_balise()
* @uses Pile::creer_et_ajouter_argument_balise()
* @see balise_INCLURE_dist()
*
*
* @param Champ $p
* Pile au niveau de la balise
* @return Champ
* Pile complété du code à générer
**/
function balise_GENERER_SAISIES_dist($p){
function balise_GENERER_SAISIES_dist($p) {
// On recupere le premier (et seul) argument : le tableau decrivant ce qu'on veut generer
$config = Pile::recuperer_et_supprimer_argument_balise(1, $p);
@ -52,4 +54,3 @@ function balise_GENERER_SAISIES_dist($p){
}
}

54
balise/saisie.php

@ -6,7 +6,9 @@
* @package SPIP\Saisies\Balises
**/
if (!defined("_ECRIRE_INC_VERSION")) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
// pour ne pas interferer avec d'eventuelles futures fonctions du core
// on met le tout dans une classe ; les fonctions sont autonomes.
@ -20,11 +22,11 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
* transmettent des arguments supplémentaires automatiquement, à des balises
* déjà existantes.
* Voir un exemple d'utilisation dans `balise_SAISIE_dist()`.
*
*
* @note
* Les arguments sont stockés sont dans l'entree 0 de la propriété `param`
* dans l'objet Champ (représenté par `$p`), donc dans `$p->param[0]`.
*
*
* `param[0][0]` vaut toujours '' (ou presque ?)
*
* @see balise_SAISIE_dist() Pour un exemple d'utilisation
@ -34,7 +36,7 @@ class Pile {
/**
* Récupère un argument de balise
*
*
* @param int $pos
* @param Champ $p
* @return mixed|null Élément de l'AST représentant l'argument s'il existe
@ -62,7 +64,7 @@ class Pile {
}
if (!isset($p->param[0][$pos])) {
return null;
}
}
if ($pos == 0) {
array_shift($p->param[0]);
} else {
@ -79,7 +81,7 @@ class Pile {
*
* @uses Pile::recuperer_argument_balise()
* @uses Pile::supprimer_argument_balise()
*
*
* @param int $pos
* @param Champ $p
* @return mixed|null Élément de l'AST représentant l'argument s'il existe
@ -95,7 +97,7 @@ class Pile {
* Ajoute un argument de balise
*
* Empile l'argument à la suite des arguments déjà existants pour la balise
*
*
* @param mixed $element Élément de l'AST représentant l'argument à ajouter
* @param Champ $p
* @return Champ
@ -122,11 +124,11 @@ class Pile {
* ```
* $nom = Pile::creer_argument_balise(nom); // {nom}
* $nom = Pile::creer_argument_balise(nom, 'coucou'); // {nom=coucou}
*
*
* $balise = Pile::creer_balise('BALISE');
* $nom = Pile::creer_argument_balise(nom, $balise); // {nom=#BALISE}
* ```
*
*
* @param string $nom
* Nom de l'argument
* @param string|object $valeur
@ -138,26 +140,24 @@ class Pile {
$s = new Texte;
$s->texte = $nom;
$s->ligne=0;
// si #BALISE cree avec Pile::creer_balise(), le mettre en array, comme les autres
if (is_object($valeur)) {
$valeur = array($valeur);
}
$res = null;
// {nom}
if (is_null($valeur)) {
$res = array($s);
}
// {nom=coucou}
elseif (is_string($valeur)) {
} elseif (is_string($valeur)) {
// {nom=coucou}
$s->texte .= "=$valeur";
$res = array($s);
}
// {nom=#BALISE}
elseif (is_array($valeur)) {
$s->texte .= "="; // /!\ sans cette toute petite chose, ça ne fait pas d'egalite :)
} elseif (is_array($valeur)) {
// {nom=#BALISE}
$s->texte .= '='; // /!\ sans cette toute petite chose, ça ne fait pas d'egalite :)
$res = array_merge(array($s), $valeur);
}
@ -170,7 +170,7 @@ class Pile {
*
* @uses Pile::creer_argument_balise()
* @uses Pile::ajouter_argument_balise()
*
*
* @param Champ $p
* @param string $nom
* Nom de l'argument
@ -179,7 +179,7 @@ class Pile {
* @return Champ
**/
static function creer_et_ajouter_argument_balise($p, $nom, $valeur = null) {
$new = Pile::creer_argument_balise($nom, $valeur);
$new = Pile::creer_argument_balise($nom, $valeur);
return Pile::ajouter_argument_balise($new, $p);
}
@ -191,10 +191,10 @@ class Pile {
* @example
* ```
* // Crée : #ENV*{titre}
* $titre = Pile::recuperer_argument_balise(1, $p); // $titre, 1er argument de la balise actuelle
* $titre = Pile::recuperer_argument_balise(1, $p); // $titre, 1er argument de la balise actuelle
* $env = Pile::creer_balise('ENV', array('param' => array($titre), 'etoile' => '*'));
* ```
*
*
* @param string $nom
* Nom de la balise
* @param array $opt
@ -205,8 +205,8 @@ class Pile {
include_spip('public/interfaces');
$b = new Champ;
$b->nom_champ = strtoupper($nom);
foreach ($opt as $o=>$val) {
if (property_exists($b,$o)) {
foreach ($opt as $o => $val) {
if (property_exists($b, $o)) {
if ($o == 'param') {
array_unshift($val, '');
$b->$o = array($val);
@ -229,7 +229,7 @@ class Pile {
* La balise `#SAISIE` est un raccourci pour une écriture plus compliquée de la balise `#INCLURE`.
* La balise calcule une série de paramètre récupérer et à transmettre à `#INCLURE`,
* en fonction des valeurs des 2 premiers paramètres transmis.
*
*
* Les autres arguments sont transmis tels quels à la balise `#INCLURE`.
*
* Ainsi `#SAISIE{input,nom,label=Nom,...}` exécutera l'équivalent de
@ -270,5 +270,3 @@ function balise_SAISIE_dist($p) {
return balise_INCLURE_dist($p);
}
}

12
balise/voir_saisie.php

@ -8,23 +8,25 @@
// Sécurité
if (!defined("_ECRIRE_INC_VERSION")) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Compile la balise `#VOIR_SAISIE` qui retourne le code HTML de la vue d'une saisie indiquée
*
* Cette balise incluera le squelette `saisies-vues/_base.html` et lui-même `saisies-vues/{type}.html`
*
*
* @syntaxe `#VOIR_SAISIE{type,nom[,option=valeur,...]}`
* @uses Pile::recuperer_et_supprimer_argument_balise()
* @uses Pile::creer_et_ajouter_argument_balise()
* @uses Pile::creer_balise()
* @see balise_INCLURE_dist()
*
*
* @param Champ $p
* @return Champ
*/
function balise_VOIR_SAISIE_dist ($p) {
function balise_VOIR_SAISIE_dist($p) {
// on recupere les parametres sans les traduire en code d'execution php
$type_saisie = Pile::recuperer_et_supprimer_argument_balise(1, $p);
@ -42,7 +44,7 @@ function balise_VOIR_SAISIE_dist ($p) {
// on appelle la balise #INCLURE
// avec les arguments ajoutes
if(function_exists('balise_INCLURE')) {
if (function_exists('balise_INCLURE')) {
return balise_INCLURE($p);
} else {
return balise_INCLURE_dist($p);

14
balise/voir_saisies.php

@ -1,4 +1,4 @@
<?php
<?php
/**
* Déclaration de la balise `#VOIR_SAISIES`
*
@ -6,7 +6,9 @@
**/
// Sécurité
if (!defined("_ECRIRE_INC_VERSION")) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Compile la balise `#VOIR_SAISIES` qui retourne le code HTML des vues de formulaire,
@ -18,18 +20,18 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
* Cette balise est un raccourcis :
* - `#VOIR_SAISIES{#TABLEAU_DE_SAISIES}` est équivalent à
* - `#INCLURE{fond=inclure/voir_saisies,env,saisies=#TABLEAU_DE_SAISIES}`
*
*
* @syntaxe `#VOIR_SAISIE{#TABLEAU_DE_SAISIES}`
* @uses Pile::recuperer_et_supprimer_argument_balise()
* @uses Pile::creer_et_ajouter_argument_balise()
* @see balise_INCLURE_dist()
*
*
* @param Champ $p
* Pile au niveau de la balise
* @return Champ
* Pile complété du code à générer
**/
function balise_VOIR_SAISIES_dist($p){
function balise_VOIR_SAISIES_dist($p) {
// On recupere les arguments : les tableaux decrivant ce qu'on veut generer + les reponses
$saisies = Pile::recuperer_et_supprimer_argument_balise(1, $p);
@ -46,7 +48,7 @@ function balise_VOIR_SAISIES_dist($p){
$p = Pile::creer_et_ajouter_argument_balise($p, 'valeurs', $valeurs);
// On redirige vers la balise INCLURE
if(function_exists('balise_INCLURE')) {
if (function_exists('balise_INCLURE')) {
return balise_INCLURE($p);
} else {
return balise_INCLURE_dist($p);

228
formulaires/construire_formulaire.php

@ -1,68 +1,70 @@
<?php
// Sécurité
if (!defined("_ECRIRE_INC_VERSION")) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
function formulaires_construire_formulaire_charger($identifiant, $formulaire_initial=array(), $options=array()){
function formulaires_construire_formulaire_charger($identifiant, $formulaire_initial = array(), $options = array()) {
include_spip('inc/saisies');
$contexte = array();
// On ajoute un préfixe devant l'identifiant, pour être sûr
$identifiant = 'constructeur_formulaire_'.$identifiant;
$contexte['_identifiant_session'] = $identifiant;
// On vérifie ce qui a été passé en paramètre
if (!is_array($formulaire_initial)) $formulaire_initial = array();
// On vérifie ce qui a été passé en paramètre
if (!is_array($formulaire_initial)) {
$formulaire_initial = array();
}
// On initialise la session si elle est vide
if (is_null($formulaire_actuel = session_get($identifiant))){
if (is_null($formulaire_actuel = session_get($identifiant))) {
session_set($identifiant, $formulaire_initial);
$formulaire_actuel = $formulaire_initial;
}
// Si le formulaire actuel est différent du formulaire initial on agite un drapeau pour le dire
if ($formulaire_actuel != $formulaire_initial){
if ($formulaire_actuel != $formulaire_initial) {
$contexte['formulaire_modifie'] = true;
}
$contexte['_message_attention'] = _T('saisies:construire_attention_modifie');
// On passe ça pour l'affichage
$contexte['_contenu'] = $formulaire_actuel;
// On passe ça pour la récup plus facile des champs
$contexte['_saisies_par_nom'] = saisies_lister_par_nom($formulaire_actuel);
// Pour déclarer les champs modifiables à CVT
foreach(array_keys($contexte['_saisies_par_nom']) as $nom){
foreach (array_keys($contexte['_saisies_par_nom']) as $nom) {
$contexte["saisie_modifiee_$nom"] = array();
}
// La liste des saisies
$saisies_disponibles = saisies_lister_disponibles();
$contexte['_saisies_disponibles'] = $saisies_disponibles;
// La liste des groupes de saisies
$saisies_groupes_disponibles = saisies_groupes_lister_disponibles("saisies/groupes");
$saisies_groupes_disponibles = saisies_groupes_lister_disponibles('saisies/groupes');
$contexte['_saisies_groupes_disponibles'] = $saisies_groupes_disponibles;
$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')){
if (find_in_path('javascript/ui/sortable.js') and find_in_path('javascript/ui/draggable.js')) {
$contexte['_chemin_ui'] = 'javascript/ui/';
}
// SPIP 3 - jquery_ui
elseif (find_in_path('javascript/ui/jquery.ui.sortable.js') and find_in_path('javascript/ui/jquery.ui.draggable.js')){
} 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.';
}
else{
} else {
$contexte['_chemin_ui'] = false;
}
return $contexte;
}
function formulaires_construire_formulaire_verifier($identifiant, $formulaire_initial=array(), $options=array()){
function formulaires_construire_formulaire_verifier($identifiant, $formulaire_initial = array(), $options = array()) {
include_spip('inc/saisies');
$erreurs = array();
// l'une ou l'autre sera presente
@ -70,7 +72,7 @@ function formulaires_construire_formulaire_verifier($identifiant, $formulaire_in
// 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'))) {
or $nom_ou_id = $enregistrer_saisie = _request('enregistrer_saisie'))) {
return $erreurs;
}
@ -93,16 +95,16 @@ function formulaires_construire_formulaire_verifier($identifiant, $formulaire_in
if (!in_array($nom_ou_id, $noms_autorises)) {
return $erreurs;
}
// La liste des saisies
$saisies_disponibles = saisies_lister_disponibles();
$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@]");
$formulaire_config = saisie_identifier(array('saisies'=>$formulaire_config));
$formulaire_config = $formulaire_config['saisies'];
// Si la saisie possede un identifiant, on l'ajoute
// au formulaire de configuration pour ne pas le perdre en route
if (isset($saisie['identifiant']) and $saisie['identifiant']) {
@ -117,11 +119,10 @@ function formulaires_construire_formulaire_verifier($identifiant, $formulaire_in
)
);
}
// 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))
{
and $chemin_nom = saisies_chercher($formulaire_config, "saisie_modifiee_${nom}[options][description]", true)) {
$chemin_nom[] = 'saisies';
$chemin_nom[] = '0';
@ -151,12 +152,12 @@ function formulaires_construire_formulaire_verifier($identifiant, $formulaire_in
$verif_options = array();
// S'il y a un groupe "validation" alors on va construire le formulaire des vérifications
if ($chemin_validation = saisies_chercher($formulaire_config, "saisie_modifiee_${nom}[options][validation]", true)){
if ($chemin_validation = saisies_chercher($formulaire_config, "saisie_modifiee_${nom}[options][validation]", true)) {
include_spip('inc/verifier');
$liste_verifications = verifier_lister_disponibles();
$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',
@ -169,10 +170,10 @@ function formulaires_construire_formulaire_verifier($identifiant, $formulaire_in
)
);
foreach ($liste_verifications as $type_verif => $verif){
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
if (isset($verif['options']) and $verif['options'] and is_array($verif['options'])){
if (isset($verif['options']) and $verif['options'] and is_array($verif['options'])) {
$groupe = array(
'saisie' => 'fieldset',
'options' => array(
@ -204,32 +205,31 @@ function formulaires_construire_formulaire_verifier($identifiant, $formulaire_in
),
));
if ($enregistrer_saisie){
if ($enregistrer_saisie) {
// La saisie modifié
$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'])
{
and isset($options['nom_unique']) and $options['nom_unique']) {
$nom_modifie = $saisie_modifiee['options']['nom'];
if ($nom_modifie != $enregistrer_saisie and saisies_chercher($formulaire_actuel, $nom_modifie))
if ($nom_modifie != $enregistrer_saisie and saisies_chercher($formulaire_actuel, $nom_modifie)) {
$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']) != '')
and $verif_options[$type_verif])
{
and (($type_verif = $saisie_modifiee['verifier']['type']) != '')
and $verif_options[$type_verif]) {
// On ne vérifie que les options du type demandé
$vraies_erreurs = array_merge($vraies_erreurs, saisies_verifier($verif_options[$type_verif]['saisies']));
}
}
// On insère chaque saisie des options de verification
if ($verif_options){
foreach ($verif_options as $saisie_verif){
if ($verif_options) {
foreach ($verif_options as $saisie_verif) {
$formulaire_config = saisies_inserer($formulaire_config, $saisie_verif, $chemin_validation);
}
}
@ -250,23 +250,23 @@ function formulaires_construire_formulaire_verifier($identifiant, $formulaire_in
return $erreurs;
}
function formulaires_construire_formulaire_traiter($identifiant, $formulaire_initial=array(), $options=array()){
function formulaires_construire_formulaire_traiter($identifiant, $formulaire_initial = array(), $options = array()) {
include_spip('inc/saisies');
$retours = array();
$saisies_disponibles = saisies_lister_disponibles();
// On ajoute un préfixe devant l'identifiant
$identifiant = 'constructeur_formulaire_'.$identifiant;
// On récupère le formulaire à son état actuel
$formulaire_actuel = session_get($identifiant);
// Si on demande à ajouter un groupe
if ($ajouter_saisie = _request('ajouter_groupe_saisie')){
if ($ajouter_saisie = _request('ajouter_groupe_saisie')) {
$formulaire_actuel = saisies_groupe_inserer($formulaire_actuel, $ajouter_saisie);
}
// Si on demande à ajouter une saisie
if ($ajouter_saisie = _request('ajouter_saisie')){
if ($ajouter_saisie = _request('ajouter_saisie')) {
$nom = saisies_generer_nom($formulaire_actuel, $ajouter_saisie);
$saisie = array(
'saisie' => $ajouter_saisie,
@ -275,49 +275,40 @@ function formulaires_construire_formulaire_traiter($identifiant, $formulaire_ini
)
);
// S'il y a des valeurs par défaut pour ce type de saisie, on les ajoute
if (($defaut = $saisies_disponibles[$ajouter_saisie]['defaut']) and is_array($defaut)){
if (($defaut = $saisies_disponibles[$ajouter_saisie]['defaut']) and is_array($defaut)) {
$defaut = _T_ou_typo($defaut, 'multi');
//Compatibilite PHP<5.3.0
//Compatibilite PHP<5.3.0
//source : http://www.php.net/manual/en/function.array-replace-recursive.php#92574
if (!function_exists('array_replace_recursive'))
{
function array_replace_recursive($array, $array1)
{
function recurse($array, $array1)
{
foreach ($array1 as $key => $value)
{
if (!function_exists('array_replace_recursive')) {
function array_replace_recursive($array, $array1) {
function recurse($array, $array1) {
foreach ($array1 as $key => $value) {
// create new key in $array, if it is empty or not an array
if (!isset($array[$key]) || (isset($array[$key]) && !is_array($array[$key])))
{
if (!isset($array[$key]) || (isset($array[$key]) && !is_array($array[$key]))) {
$array[$key] = array();
}
// overwrite the value in the base array
if (is_array($value))
{
if (is_array($value)) {
$value = recurse($array[$key], $value);
}
$array[$key] = $value;
}
return $array;
}
// handle the arguments, merge one by one
$args = func_get_args();
$array = $args[0];
if (!is_array($array))
{
if (!is_array($array)) {
return $array;
}
for ($i = 1; $i < count($args); $i++)
{
if (is_array($args[$i]))
{
for ($i = 1; $i < count($args); $i++) {
if (is_array($args[$i])) {
$array = recurse($array, $args[$i]);
}
}
return $array;
return $array;
}
}
$saisie = array_replace_recursive($saisie, $defaut);
@ -327,38 +318,37 @@ function formulaires_construire_formulaire_traiter($identifiant, $formulaire_ini
// Si on demande à dupliquer une saisie
if ($dupliquer_saisie = _request('dupliquer_saisie')) {
$formulaire_actuel = saisies_dupliquer($formulaire_actuel, $dupliquer_saisie);
$formulaire_actuel = saisies_dupliquer($formulaire_actuel, $dupliquer_saisie);
}
// Si on demande à supprimer une saisie
if ($supprimer_saisie = _request('supprimer_saisie')){
if ($supprimer_saisie = _request('supprimer_saisie')) {
$formulaire_actuel = saisies_supprimer($formulaire_actuel, $supprimer_saisie);
}
// Si on enregistre la conf d'une saisie
if ($nom = _request('enregistrer_saisie')){
if ($nom = _request('enregistrer_saisie')) {
// On récupère ce qui a été modifié
$saisie_modifiee = _request("saisie_modifiee_$nom");
// On regarde s'il y a une position à modifier
if (isset($saisie_modifiee['position'])){
if (isset($saisie_modifiee['position'])) {
$position = $saisie_modifiee['position'];
unset($saisie_modifiee['position']);
// On ne déplace que si ce n'est pas la même chose
if ($position != $nom)
if ($position != $nom) {
$formulaire_actuel = saisies_deplacer($formulaire_actuel, $nom, $position);
}
}
// On regarde s'il y a des options de vérification à modifier
if (isset($saisie_modifiee['verifier']['type'])
and ($type_verif = $saisie_modifiee['verifier']['type']) != '')
{
and ($type_verif = $saisie_modifiee['verifier']['type']) != '') {
$saisie_modifiee['verifier'] = array(
'type' => $type_verif,
'options' => $saisie_modifiee['verifier'][$type_verif]
);
}
else {
} else {
unset($saisie_modifiee['verifier']);
}
@ -367,17 +357,18 @@ function formulaires_construire_formulaire_traiter($identifiant, $formulaire_ini
if (isset($saisie_modifiee['verifier']['options']) and $saisie_modifiee['verifier']['options']) {
$saisie_modifiee['verifier']['options'] = array_filter($saisie_modifiee['verifier']['options'], 'saisie_option_contenu_vide');
}
// On désinfecte à la main
if (is_array($saisie_modifiee['options']))
if (is_array($saisie_modifiee['options'])) {
spip_desinfecte($saisie_modifiee['options']);
}
// On modifie enfin
$formulaire_actuel = saisies_modifier($formulaire_actuel, $nom, $saisie_modifiee);
}
// Si on demande à réinitialiser
if (_request('reinitialiser') == 'oui'){
if (_request('reinitialiser') == 'oui') {
$formulaire_actuel = $formulaire_initial;
}
@ -392,26 +383,26 @@ function formulaires_construire_formulaire_traiter($identifiant, $formulaire_ini
// À 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){
if ($cle == 'nom' and is_string($valeur)){
function formidable_transformer_nom(&$valeur, $cle, $transformation) {
if ($cle == 'nom' and is_string($valeur)) {
$valeur = str_replace('@valeur@', $valeur, $transformation);
}
}
// Préparer une saisie pour la transformer en truc configurable
function formidable_generer_saisie_configurable($saisie, $env){
function formidable_generer_saisie_configurable($saisie, $env) {
// On récupère le nom
$nom = $saisie['options']['nom'];
$identifiant = isset($saisie['identifiant']) ? $saisie['identifiant'] : "";
$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] : "";
$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
}
// Compat ancien nom li_class
if (isset($saisie['options']['li_class'])) {
$saisie['options']['conteneur_class'] .= " " . $saisie['options']['li_class']; // initialisation
$saisie['options']['conteneur_class'] .= ' ' . $saisie['options']['li_class']; // initialisation
}
$saisie['options']['conteneur_class'] .= ' configurable';
@ -426,7 +417,7 @@ function formidable_generer_saisie_configurable($saisie, $env){
'formulaires/inc-construire_formulaire-actions',
array(
'nom' => $nom,
'identifiant' => $identifiant,
'identifiant' => $identifiant,
'formulaire_config' => $formulaire_config,
'deplacable' => $env['_chemin_ui']
)
@ -443,7 +434,7 @@ function formidable_generer_saisie_configurable($saisie, $env){
);
// Si ya un form de config on l'ajoute à la fin
if (is_array($formulaire_config)){
if (is_array($formulaire_config)) {
// On double l'environnement
$env2 = $env;
// On ajoute une classe
@ -451,9 +442,9 @@ function formidable_generer_saisie_configurable($saisie, $env){
// Si possible on met en readonly
$saisie['options']['readonly'] = 'oui';
// On vire les sous-saisies s'il y en a
if (isset($saisie['saisies']) and $saisie['saisies'] and is_array($saisie['saisies'])){
if (isset($saisie['saisies']) and $saisie['saisies'] and is_array($saisie['saisies'])) {
$nb_champs_masques = count(saisies_lister_champs($saisie['saisies']));
$saisie['saisies'] = array(
array(
@ -465,9 +456,9 @@ function formidable_generer_saisie_configurable($saisie, $env){
)
);
}
// On va ajouter le champ pour la position
if (!($chemin_description = saisies_chercher($formulaire_config, "saisie_modifiee_${nom}[options][description]", true))){
if (!($chemin_description = saisies_chercher($formulaire_config, "saisie_modifiee_${nom}[options][description]", true))) {
$chemin_description = array(0);
$formulaire_config = saisies_inserer(
$formulaire_config,
@ -498,22 +489,21 @@ function formidable_generer_saisie_configurable($saisie, $env){
),
$chemin_description
);
$env2['saisies'] = $formulaire_config;
// 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){
if ($erreurs_test) {
// Là aussi on désinfecte à la main
if (isset($env2["saisie_modifiee_$nom"]['options']) and is_array($env2["saisie_modifiee_$nom"]['options'])) {
spip_desinfecte($env2["saisie_modifiee_$nom"]['options']);
}
}
else{
} else {
$env2["saisie_modifiee_$nom"] = $env2['_saisies_par_nom'][$nom];
// il n'y a pas toujours de verification...
if (isset($env2["saisie_modifiee_$nom"]['verifier'])) {
@ -521,7 +511,7 @@ function formidable_generer_saisie_configurable($saisie, $env){
= $env2["saisie_modifiee_$nom"]['verifier']['options'];
}
}
$env2['fond_generer'] = 'inclure/generer_saisies';
$saisie = saisies_inserer_html(
$saisie,
@ -554,7 +544,7 @@ function formidable_generer_saisie_configurable($saisie, $env){
**/
function saisie_option_contenu_vide($var) {
if (!$var) {
if (is_string($var) AND strlen($var)) {
if (is_string($var) and strlen($var)) {
return true;
}
return false;
@ -562,29 +552,29 @@ function saisie_option_contenu_vide($var) {
return true;
}
function saisies_groupe_inserer($formulaire_actuel, $saisie){
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");
$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) {
if ($classique_yaml>0) {
$champ_options = 'options';
}
if($formidable_yaml>0) {
if ($formidable_yaml>0) {
$champ_options = 'saisies';
}
//les champs du groupe
foreach($saisies_charger_infos[$champ_options] as $info_saisie){
//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);
$nom = $info_saisie[$champ_options]['nom'] = saisies_generer_nom($formulaire_actuel, $construire_nom);
$formulaire_actuel = saisies_inserer($formulaire_actuel, $info_saisie);
}
return $formulaire_actuel;

7
formulaires/saisies_cvt.php

@ -1,9 +1,11 @@
<?php
// Sécurité
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
function formulaires_saisies_cvt_saisies_dist(){
function formulaires_saisies_cvt_saisies_dist() {
return array(
array(
'saisie' => 'input',
@ -37,4 +39,3 @@ function formulaires_saisies_cvt_saisies_dist(){
)
);
}

1029
inc/saisies.php

File diff suppressed because it is too large Load Diff

25
inc/saisies_afficher.php

@ -155,9 +155,8 @@ function saisies_generer_html($champ, $env = array()) {
}
$contexte = array_merge($env, $contexte);
}
// Sinon on ne sélectionne que quelques éléments importants
else {
} else {
// Sinon on ne sélectionne que quelques éléments importants
// On récupère la liste des erreurs
$contexte['erreurs'] = $env['erreurs'];
// On récupère la langue de l'objet si existante
@ -177,13 +176,11 @@ function saisies_generer_html($champ, $env = array()) {
foreach ($index[1] as $cle) {
$contexte['valeur'] = isset($contexte['valeur'][$cle]) ? $contexte['valeur'][$cle] : null;
}
}
// Sinon la valeur est juste celle du nom si elle existe
elseif (isset($contexte['nom']) and isset($env[$contexte['nom']])) {
} elseif (isset($contexte['nom']) and isset($env[$contexte['nom']])) {
// Sinon la valeur est juste celle du nom si elle existe
$contexte['valeur'] = $env[$contexte['nom']];
}
// Sinon rien
else {
} else {
// Sinon rien
$contexte['valeur'] = null;
}
@ -268,18 +265,16 @@ function saisies_generer_vue($saisie, $env = array(), $env_obligatoire = array()
// On regarde en priorité s'il y a un tableau listant toutes les valeurs
if ($env['valeurs'] and is_array($env['valeurs']) and isset($env['valeurs'][$contexte['nom']])) {
$contexte['valeur'] = $env['valeurs'][$contexte['nom']];
}
// Si le nom du champ est un tableau indexé, il faut parser !
elseif (preg_match('/([\w]+)((\[[\w]+\])+)/', $contexte['nom'], $separe)) {
} elseif (preg_match('/([\w]+)((\[[\w]+\])+)/', $contexte['nom'], $separe)) {
// Si le nom du champ est un tableau indexé, il faut parser !
$contexte['valeur'] = $env[$separe[1]];
preg_match_all('/\[([\w]+)\]/', $separe[2], $index);
// On va chercher au fond du tableau
foreach ($index[1] as $cle) {
$contexte['valeur'] = $contexte['valeur'][$cle];
}
}
// Sinon la valeur est juste celle du nom
else {
} else {
// Sinon la valeur est juste celle du nom
// certains n'ont pas de nom (fieldset)
$contexte['valeur'] = isset($env[$contexte['nom']]) ? $env[$contexte['nom']] : '';
}

18
inc/saisies_manipuler.php

@ -140,17 +140,15 @@ function saisies_deplacer($saisies, $id_ou_nom_ou_chemin, $ou) {
if (!$ou) {
$saisies = saisies_supprimer($saisies, $id_ou_nom_ou_chemin);
$chemin = array(count($saisies));
}
// Si l'endroit est entre crochet, c'est un conteneur
elseif (preg_match('/^\[(@?[\w]*)\]$/', $ou, $match)) {
} elseif (preg_match('/^\[(@?[\w]*)\]$/', $ou, $match)) {
// Si l'endroit est entre crochet, c'est un conteneur
$parent = $match[1];
// Si dans les crochets il n'y a rien, on met à la fin du formulaire
if (!$parent) {
$saisies = saisies_supprimer($saisies, $id_ou_nom_ou_chemin);
$chemin = array(count($saisies));
}
// Sinon on vérifie que ce conteneur existe
elseif (saisies_chercher($saisies, $parent, true)) {
} elseif (saisies_chercher($saisies, $parent, true)) {
// Sinon on vérifie que ce conteneur existe
// S'il existe on supprime la saisie et on recherche la nouvelle position
$saisies = saisies_supprimer($saisies, $id_ou_nom_ou_chemin);
$parent = saisies_chercher($saisies, $parent, true);
@ -158,9 +156,8 @@ function saisies_deplacer($saisies, $id_ou_nom_ou_chemin, $ou) {
} else {
$chemin = false;
}
}
// Sinon ça sera devant un champ
else {
} else {
// Sinon ça sera devant un champ
// On vérifie que le champ existe
if (saisies_chercher($saisies, $ou, true)) {
// S'il existe on supprime la saisie
@ -205,8 +202,7 @@ function saisies_modifier($saisies, $id_ou_nom_ou_chemin, $modifs) {
$modifs['options']['nom'] = $parent[$position]['options']['nom'];
}
// On récupère les enfants tels quels s'il n'y a pas des enfants dans la modif
if (
!isset($modifs['saisies'])
if (!isset($modifs['saisies'])
and isset($parent[$position]['saisies'])
and is_array($parent[$position]['saisies'])
) {

22
inclure/configurer_saisie_fonctions.php

@ -1,17 +1,20 @@
<?php
// Sécurité
if (!defined("_ECRIRE_INC_VERSION")) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
function construire_configuration_saisie($saisie, $avec_nom='non'){
function construire_configuration_saisie($saisie, $avec_nom = 'non') {
include_spip('inc/yaml');
$configuration_saisie = yaml_decode_file(find_in_path('saisies/'.$saisie.'.yaml'));
if (is_array($configuration_saisie)){
if (is_array($configuration_saisie)) {
$configuration_saisie = $configuration_saisie['options'];
// On ne met le premier champ permettant de configurer le "name" seulement si on le demande explicitement
if ($avec_nom == 'oui')
array_unshift($configuration_saisie[0]['contenu'],
if ($avec_nom == 'oui') {
array_unshift(
$configuration_saisie[0]['contenu'],
array(
'saisie' => 'input',
'options' => array(
@ -28,10 +31,9 @@ function construire_configuration_saisie($saisie, $avec_nom='non'){
)
)
);
}
else
}
} else {
$configuration_saisie = array();
}
return $configuration_saisie;
}

6
saisies-vues/selecteur_article_fonctions.php

@ -1,3 +1,7 @@
<?php
include_spip('prive/formulaires/selecteur/selecteur_fonctions');
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
include_spip('prive/formulaires/selecteur/selecteur_fonctions');

76
saisies_fonctions.php

@ -6,7 +6,9 @@
* @package SPIP\Saisies\Fonctions
**/
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
include_spip('inc/saisies');
include_spip('balise/saisie');
@ -22,28 +24,31 @@ include_spip('formulaires/selecteur/generique_fonctions');
* @return string
* $tag initial ou div
*/
function saisie_balise_structure_formulaire($tag){
function saisie_balise_structure_formulaire($tag) {
// Pouvoir forcer l'utilisation de formulaire de type SPIP 3
if (_SAISIE_TAG_3) {
return $tag;
}
static $is_div=null;
if (is_null($is_div)){
$version = explode(".",$GLOBALS['spip_version_branche']);
if ($version[0]>3 OR ($version[0]==3 AND $version[1]>0))
static $is_div = null;
if (is_null($is_div)) {
$version = explode('.', $GLOBALS['spip_version_branche']);
if ($version[0] > 3 or ($version[0] == 3 and $version[1] > 0)) {
$is_div = true;
}
}
if ($is_div) {
return 'div';
}
if ($is_div) return "div";
return $tag;
}
// variante plus simple a ecrire dans les squelettes
// [(#DIV|sinon{ul})]
if (!function_exists('balise_DIV_dist')
and $version = explode(".",$GLOBALS['spip_version_branche'])
and ($version[0]>3 OR ($version[0]==3 AND $version[1]>0))){
function balise_DIV_dist($p){
and $version = explode('.', $GLOBALS['spip_version_branche'])
and ($version[0]>3 or ($version[0]==3 and $version[1] > 0))) {
function balise_DIV_dist($p) {
$p->code = "'div'";
$p->interdire_scripts = false;
return $p;
@ -59,11 +64,13 @@ if (!function_exists('balise_DIV_dist')
* @param string|array $env
* @return string
*/
function saisie_traitement_vue($valeur,$env){
if (is_string($env))
function saisie_traitement_vue($valeur, $env) {
if (is_string($env)) {
$env = unserialize($env);
if (!function_exists('propre'))
}
if (!function_exists('propre')) {
include_spip('inc/texte');
}
$valeur = trim($valeur);
@ -73,9 +80,8 @@ function saisie_traitement_vue($valeur,$env){
if ($valeur and !isset($env['traitements'])) {
if (in_array($env['type_saisie'], array('textarea'))) {
$valeur = propre($valeur);
}
else {
$valeur = "<p>" . typo($valeur) . "</p>";
} else {
$valeur = '<p>' . typo($valeur) . '</p>';
}
}
@ -84,7 +90,7 @@ function saisie_traitement_vue($valeur,$env){
/**
* Passer un nom en une valeur compatible avec une classe css
*
*
* - toto => toto,
* - toto/truc => toto_truc,
* - toto[truc] => toto_truc
@ -98,7 +104,7 @@ function saisie_nom2classe($nom) {
/**
* Passer un nom en une valeur compatible avec un `name` de formulaire
*
*
* - toto => toto,
* - toto/truc => toto[truc],
* - toto[truc] => toto[truc]
@ -123,24 +129,25 @@ function saisie_nom2name($nom) {
* ```
* #GLOBALS{debut_intertitre}
* ```
*
*
* @param Champ $p
* Pile au niveau de la balise
* @return Champ
* Pile complétée du code php de la balise.
**/
function balise_GLOBALS_dist($p) {
if (function_exists('balise_ENV'))
if (function_exists('balise_ENV')) {
return balise_ENV($p, '$GLOBALS');
else
} else {
return balise_ENV_dist($p, '$GLOBALS');
}
}
/**
* Liste les éléments du sélecteur générique triés
*
* Les éléments sont triés par objets puis par identifiants
*
*
* @example
* L'entrée :
* 'rubrique|3,rubrique|5,article|2'
@ -178,7 +185,7 @@ function picker_selected_par_objet($selected) {
// on remet tout en file
$liste = array();
foreach ($res as $objet=>$ids) {
foreach ($res as $objet => $ids) {
foreach ($ids as $id) {
$liste[] = array('objet' => $objet, 'id_objet' => $id);
}
@ -197,19 +204,18 @@ function picker_selected_par_objet($selected) {
* 'url_edit' : l'url d'édition de l'objet ;
* 'texte_objets' : le nom humain de l'objet éditorial.
*/
function lister_tables_objets_edit()
{
include_spip('base/abstract_sql');
function lister_tables_objets_edit() {
include_spip('base/abstract_sql');
$objets = lister_tables_objets_sql();
$objets_edit = array();
$objets = lister_tables_objets_sql();
$objets_edit = array();
foreach ($objets as $objet => $definition) {
if (isset($definition['editable']) and isset($definition['url_edit']) and $definition['url_edit'] != '') {
$objets_edit[$objet] = array('type' => $definition['type'], 'url_edit' => $definition['url_edit'], 'texte_objets' => $definition['texte_objets']);
}
}
$objets_edit = array_filter($objets_edit);
foreach ($objets as $objet => $definition) {
if (isset($definition['editable']) and isset($definition['url_edit']) and $definition['url_edit'] != '') {
$objets_edit[$objet] = array('type' => $definition['type'], 'url_edit' => $definition['url_edit'], 'texte_objets' => $definition['texte_objets']);
}
}
$objets_edit = array_filter($objets_edit);
return $objets_edit;
return $objets_edit;
}

32
saisies_options.php

@ -7,15 +7,16 @@
**/
// Sécurité
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
// Pouvoir forcer l'utilisation de formulaire de type SPIP 3
if (!defined('_SAISIE_TAG_3')) {
define('_SAISIE_TAG_3', false);
}
if (!function_exists('_T_ou_typo')){
if (!function_exists('_T_ou_typo')) {
/**
* une fonction qui regarde si $texte est une chaine de langue
* de la forme <:qqch:>
@ -29,26 +30,26 @@ if (!function_exists('_T_ou_typo')){
* @return mixed
* Retourne la valeur éventuellement modifiée.
*/
function _T_ou_typo($valeur, $mode_typo='toujours') {
function _T_ou_typo($valeur, $mode_typo = 'toujours') {
// Si la valeur est bien une chaine (et pas non plus un entier déguisé)
if (is_string($valeur) and !intval($valeur)){
if (is_string($valeur) and !intval($valeur)) {
// Si la chaine est du type <:truc:> on passe à _T()
if (preg_match('/^\<:(.*?):\>$/', $valeur, $match))
if (preg_match('/^\<:(.*?):\>$/', $valeur, $match)) {
$valeur = _T($match[1]);
// Sinon on la passe a typo()
else {
if (!in_array($mode_typo, array('toujours', 'multi', 'jamais')))
} else {
// Sinon on la passe a typo()
if (!in_array($mode_typo, array('toujours', 'multi', 'jamais'))) {
$mode_typo = 'toujours';
if ($mode_typo == 'toujours' or ($mode_typo == 'multi' and strpos($valeur, '<multi>') !== false)){
}
if ($mode_typo == 'toujours' or ($mode_typo == 'multi' and strpos($valeur, '<multi>') !== false)) {
include_spip('inc/texte');
$valeur = typo($valeur);
}
}
}
// Si c'est un tableau, on reapplique la fonction récursivement
elseif (is_array($valeur)){
foreach ($valeur as $cle => $valeur2){
} elseif (is_array($valeur)) {
// Si c'est un tableau, on reapplique la fonction récursivement
foreach ($valeur as $cle => $valeur2) {
$valeur[$cle] = _T_ou_typo($valeur2, $mode_typo);
}
}
@ -56,4 +57,3 @@ if (!function_exists('_T_ou_typo')){
return $valeur;
}
}

78
saisies_pipelines.php

@ -7,15 +7,17 @@
**/
// Sécurité
if (!defined("_ECRIRE_INC_VERSION")) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Ajoute les scripts JS et CSS de saisies dans l'espace privé
*
* @param string $flux
* @param string $flux
* @return string
**/
function saisies_header_prive($flux){
function saisies_header_prive($flux) {
$js = find_in_path('javascript/saisies.js');
$flux .= "\n<script type='text/javascript' src='$js'></script>\n";
$css = generer_url_public('saisies.css');
@ -30,39 +32,38 @@ function saisies_header_prive($flux){
*
* Ajoute également de quoi gérer le datepicker de la saisie date si
* celle-ci est utilisée dans la page.
*
* @param string $flux
*
* @param string $flux
* @return string
**/
function saisies_affichage_final($flux){
if (
$GLOBALS['html'] // si c'est bien du HTML
and ($p = strpos($flux,"<!--!inserer_saisie_editer-->")) !== false // et qu'on a au moins une saisie
and strpos($flux,'<head') !== false // et qu'on a la balise <head> quelque part
){
function saisies_affichage_final($flux) {
if ($GLOBALS['html'] // si c'est bien du HTML
and ($p = strpos($flux, '<!--!inserer_saisie_editer-->')) !== false // et qu'on a au moins une saisie
and strpos($flux, '<head') !== false // et qu'on a la balise <head> quelque part
) {
// On insère la CSS devant le premier <link> trouvé
if (!$pi = strpos($flux, "<link") AND !$pi=strpos($flux, '</head')) {
if (!$pi = strpos($flux, '<link') and !$pi = strpos($flux, '</head')) {
$pi = $p; // si pas de <link inserer comme un goret entre 2 <li> de saisies
}
$css = generer_url_public('saisies.css');
$ins_css = "\n<link rel='stylesheet' href='$css' type='text/css' media='all' />\n";
if (strpos($flux,"saisie_date")!==false){//si on a une saisie de type date, on va charger les css de jquery_ui
include_spip("jqueryui_pipelines");
if (function_exists("jqueryui_dependances")){
$ui_plugins = jqueryui_dependances(array("jquery.ui.datepicker"));
$theme_css = "jquery.ui.theme";
$ui_css_dir = "css";
if (strpos($flux, 'saisie_date') !==false) {//si on a une saisie de type date, on va charger les css de jquery_ui
include_spip('jqueryui_pipelines');
if (function_exists('jqueryui_dependances')) {
$ui_plugins = jqueryui_dependances(array('jquery.ui.datepicker'));
$theme_css = 'jquery.ui.theme';
$ui_css_dir = 'css';
// compatibilité SPIP 3.1 et jQuery UI 1.11
$version = explode(".",$GLOBALS['spip_version_branche']);
if ($version[0]>3 OR ($version[0]==3 AND $version[1]>0)) {
$theme_css = "theme";
$ui_css_dir = "css/ui";
$version = explode('.', $GLOBALS['spip_version_branche']);
if ($version[0] > 3 or ($version[0] == 3 and $version[1] > 0)) {
$theme_css = 'theme';
$ui_css_dir = 'css/ui';
}
array_push($ui_plugins,$theme_css);
foreach ($ui_plugins as $ui_plug){
array_push($ui_plugins, $theme_css);
foreach ($ui_plugins as $ui_plug) {
$ui_plug_css = find_in_path("$ui_css_dir/$ui_plug.css");
if (strpos($flux,"$ui_css_dir/$ui_plug.css")===false){// si pas déjà chargé
if (strpos($flux, "$ui_css_dir/$ui_plug.css") === false) {// si pas déjà chargé
$ins_css .= "\n<link rel='stylesheet' href='$ui_plug_css' type='text/css' media='all' />\n";
}
}
@ -86,13 +87,13 @@ function saisies_affichage_final($flux){
* Recherche une fonction `formulaires_XX_saisies_dist` et l'utilise si elle
* est présente. Cette fonction doit retourner une liste de saisies dont on se
* sert alors pour calculer les champs utilisés dans le formulaire.
*
* @param array $flux
*
* @param array $flux
* @return array
**/
function saisies_formulaire_charger($flux){
function saisies_formulaire_charger($flux) {
// Si le flux data est inexistant, on quitte : Le CVT d'origine a décidé de ne pas continuer
if (!is_array($flux['data'])){
if (!is_array($flux['data'])) {
return $flux;
}
@ -118,15 +119,15 @@ function saisies_formulaire_charger($flux){
* qu'il n'y a pas de squelette spécifique pour afficher le HTML du formulaire,
* alors on utilise le formulaire générique intégré au plugin saisie, qui calculera le HTML
* à partir de la déclaration des saisies indiquées.
*
*
* @see saisies_formulaire_charger()
*
*
* @param array $flux
* @return array
**/
function saisies_styliser($flux){
function saisies_styliser($flux) {
// Si on cherche un squelette de formulaire
if (strncmp($flux['args']['fond'],'formulaires/',12)==0
if (strncmp($flux['args']['fond'], 'formulaires/', 12) == 0
// Et qu'il y a des saisies dans le contexte
and isset($flux['args']['contexte']['_saisies'])
// Et que le fichier choisi est vide ou n'existe pas