X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=www%2Fplugins%2Fsaisies%2Fsaisies_pipelines.php;h=f262d21a0823087d542547a747987eedad256291;hb=4f443dce95ff6f8221c189880a70c74ce1c1f238;hp=ff94b5edf7599910db6134030dc8e0802cab59eb;hpb=4a628e9b277d3617535f99d663ca79fa2e891177;p=lhc%2Fweb%2Fwww.git diff --git a/www/plugins/saisies/saisies_pipelines.php b/www/plugins/saisies/saisies_pipelines.php index ff94b5ed..f262d21a 100644 --- a/www/plugins/saisies/saisies_pipelines.php +++ b/www/plugins/saisies/saisies_pipelines.php @@ -1,177 +1,186 @@ -\n"; - $css = generer_url_public('saisies.css'); - $flux .= "\n\n"; - $css_constructeur = find_in_path('css/formulaires_constructeur.css'); - $flux .= "\n\n"; - - return $flux; -} - -/** - * Ajoute les scripts JS et CSS de saisies dans l'espace public - * - * Ajoute également de quoi gérer le datepicker de la saisie date si - * celle-ci est utilisée dans la page. - * - * @param string $flux - * @return string -**/ -function saisies_affichage_final($flux) { - if ( - $GLOBALS['html'] // si c'est bien du HTML - and ($p = strpos($flux, '')) !== false // et qu'on a au moins une saisie - and strpos($flux, '
quelque part - ) { - // On insère la CSS devant le premier trouvé - if (!$pi = strpos($flux, ' de saisies - } - $css = generer_url_public('saisies.css'); - $ins_css = "\n\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'; - // 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'; - } - 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é - $ins_css .= "\n\n"; - } - } - } - } - - $flux = substr_replace($flux, $ins_css, $pi, 0); - // On insère le JS à la fin du - $pos_head = strpos($flux, '\n"; - $flux = substr_replace($flux, $ins_js, $pos_head, 0); - } - - return $flux; -} - - -/** - * Déclarer automatiquement les champs d'un formulaire CVT qui déclare des saisies - * - * 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 - * @return array -**/ -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'])) { - return $flux; - } - - // Il faut que la fonction existe et qu'elle retourne bien un tableau - include_spip('inc/saisies'); - $saisies = saisies_chercher_formulaire($flux['args']['form'], $flux['args']['args']); - - if ($saisies) { - // On ajoute au contexte les champs à déclarer - $contexte = saisies_lister_valeurs_defaut($saisies); - $flux['data'] = array_merge($contexte, $flux['data']); - - // On ajoute le tableau complet des saisies - $flux['data']['_saisies'] = $saisies; - } - return $flux; -} - -/** - * Aiguiller CVT vers un squelette propre à Saisies lorsqu'on a déclaré des saisies et qu'il n'y a pas déjà un HTML - * - * Dans le cadre d'un formulaire CVT demandé, si ce formulaire a déclaré des saisies, et - * 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) { - if ( - // Si on cherche un squelette de formulaire - 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 - and include_spip('inc/flock') - and $ext = $flux['args']['ext'] - and lire_fichier($flux['data'].'.'.$ext, $contenu_squelette) - and !trim($contenu_squelette) - ) { - $flux['data'] = preg_replace("/\.$ext$/", '', find_in_path("formulaires/inc-saisies-cvt.$ext")); - } - - return $flux; -} - -/** - * Ajouter les vérifications déclarées dans la fonction "saisies" du CVT - * - * Si un formulaire CVT a déclaré des saisies, on utilise sa déclaration - * pour effectuer les vérifications du formulaire. - * - * @see saisies_formulaire_charger() - * @uses saisies_verifier() - * - * @param array $flux - * Liste des erreurs du formulaire - * @return array - * iste des erreurs - */ -function saisies_formulaire_verifier($flux) { - // Il faut que la fonction existe et qu'elle retourne bien un tableau - include_spip('inc/saisies'); - $saisies = saisies_chercher_formulaire($flux['args']['form'], $flux['args']['args']); - if ($saisies) { - // On ajoute au contexte les champs à déclarer - $erreurs = saisies_verifier($saisies); - if ($erreurs and !isset($erreurs['message_erreur'])) { - $erreurs['message_erreur'] = _T('saisies:erreur_generique'); - } - $flux['data'] = array_merge($erreurs, $flux['data']); - } - - return $flux; -} +\n"; + $css = generer_url_public('saisies.css'); + $flux .= "\n\n"; + $css_constructeur = find_in_path('css/formulaires_constructeur.css'); + $flux .= "\n\n"; + + return $flux; +} + +/** + * Ajoute les scripts JS et CSS de saisies dans l'espace public + * + * Ajoute également de quoi gérer le datepicker de la saisie date si + * celle-ci est utilisée dans la page. + * + * @param string $flux + * @return string +**/ +function saisies_affichage_final($flux) { + if ( + $GLOBALS['html'] // si c'est bien du HTML + and ($p = strpos($flux, '')) !== false // et qu'on a au moins une saisie + and strpos($flux, ' quelque part + ) { + // On insère la CSS devant le premier trouvé + if (!$pi = strpos($flux, ' de saisies + } + $css = generer_url_public('saisies.css'); + $ins_css = "\n\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'; + // 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'; + } + array_push($ui_plugins, $theme_css); + foreach ($ui_plugins as $ui_plug) { + // compatibilité pour les versions < SPIP 3.2 + if ($version[0] < 3 or ($version[0] == 3 and $version[1] < 2)) { + $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é + $ins_css .= "\n\n"; + } + } + } + // compatibilité SPIP 3.2 et jQuery UI 1.12 + if ($version[0] == 3 and $version[1] > 1) { + $ins_css .= "\n\n"; + } + } + } + + $flux = substr_replace($flux, $ins_css, $pi, 0); + // On insère le JS à la fin du + $pos_head = strpos($flux, '\n"; + $flux = substr_replace($flux, $ins_js, $pos_head, 0); + } + + return $flux; +} + + +/** + * Déclarer automatiquement les champs d'un formulaire CVT qui déclare des saisies + * + * 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 + * @return array +**/ +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'])) { + return $flux; + } + + // Il faut que la fonction existe et qu'elle retourne bien un tableau + include_spip('inc/saisies'); + $saisies = saisies_chercher_formulaire($flux['args']['form'], $flux['args']['args']); + + if ($saisies) { + // On ajoute au contexte les champs à déclarer + $contexte = saisies_lister_valeurs_defaut($saisies); + $flux['data'] = array_merge($contexte, $flux['data']); + + // On ajoute le tableau complet des saisies + $flux['data']['_saisies'] = $saisies; + } + return $flux; +} + +/** + * Aiguiller CVT vers un squelette propre à Saisies lorsqu'on a déclaré des saisies et qu'il n'y a pas déjà un HTML + * + * Dans le cadre d'un formulaire CVT demandé, si ce formulaire a déclaré des saisies, et + * 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) { + if ( + // Si on cherche un squelette de formulaire + 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 + and include_spip('inc/flock') + and $ext = $flux['args']['ext'] + and lire_fichier($flux['data'].'.'.$ext, $contenu_squelette) + and !trim($contenu_squelette) + ) { + $flux['data'] = preg_replace("/\.$ext$/", '', find_in_path("formulaires/inc-saisies-cvt.$ext")); + } + + return $flux; +} + +/** + * Ajouter les vérifications déclarées dans la fonction "saisies" du CVT + * + * Si un formulaire CVT a déclaré des saisies, on utilise sa déclaration + * pour effectuer les vérifications du formulaire. + * + * @see saisies_formulaire_charger() + * @uses saisies_verifier() + * + * @param array $flux + * Liste des erreurs du formulaire + * @return array + * iste des erreurs + */ +function saisies_formulaire_verifier($flux) { + // Il faut que la fonction existe et qu'elle retourne bien un tableau + include_spip('inc/saisies'); + $saisies = saisies_chercher_formulaire($flux['args']['form'], $flux['args']['args']); + if ($saisies) { + // On ajoute au contexte les champs à déclarer + $erreurs = saisies_verifier($saisies); + if ($erreurs and !isset($erreurs['message_erreur'])) { + $erreurs['message_erreur'] = _T('saisies:erreur_generique'); + } + + $flux['data'] = array_merge($erreurs, $flux['data']); + + } + + return $flux; +}