Browse Source

Charger systématiquement css et js sans tester les types de saisies pour (notamment) bénéficier du compresseur

pull/77/head
nicod 2 months ago
parent
commit
71ffbc0fe1
  1. 2
      paquet.xml
  2. 118
      saisies_pipelines.php

2
paquet.xml

@ -17,8 +17,8 @@
<traduire module="saisies" reference="fr" gestionnaire="salvatore" />
<pipeline nom="insert_head" inclure="saisies_pipelines.php" />
<pipeline nom="header_prive" inclure="saisies_pipelines.php" />
<pipeline nom="affichage_final" inclure="saisies_pipelines.php" />
<pipeline nom="saisies_autonomes" action="" />
<pipeline nom="saisie_est_tabulaire" action="" />
<pipeline nom="saisies_afficher_si_js_type" />

118
saisies_pipelines.php

@ -43,86 +43,62 @@ function saisies_header_prive($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, '<!--!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')) {
$pi = $p; // si pas de <link inserer comme un goret entre 2 <li> de saisies
}
include_spip('inc/filtres');
$css = produire_fond_statique('saisies.css');
$ins_css = "\n<link rel='stylesheet' href='$css' type='text/css' media='all' />\n";
* Insérer automatiquement les scripts JS et CSS de saisies dans toutes les pages de l'espace public
* @param array $flux
* @return array $flux modifié
**/
function saisies_insert_head($flux) {
//si on a une saisie de type date, on va charger les css de jquery_ui
if (
(!defined('_JQUERYUI_CSS_NON') or !boolval(_JQUERYUI_CSS_NON))
and strpos($flux, 'saisie_date') !==false
) {
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<link rel='stylesheet' href='$ui_plug_css' type='text/css' media='all' />\n";
}
}
}
// compatibilité SPIP 3.2 et jQuery UI 1.12
if ($version[0] == 3 and $version[1] > 1) {
$ins_css .= "\n<link rel='stylesheet' type='text/css' media='all' href='" . find_in_path('css/ui/jquery-ui.css') . "' />\n";
// ajout des CSS au début du <head>
include_spip('inc/filtres');
$css = produire_fond_statique('saisies.css');
$ins_css = "\n<link rel='stylesheet' href='$css' type='text/css' media='all' />\n";
// les css de jquery_ui
if (!defined('_JQUERYUI_CSS_NON') or !boolval(_JQUERYUI_CSS_NON)) {
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<link rel='stylesheet' href='$ui_plug_css' type='text/css' media='all' />\n";
}
}
}
}
//si on a une saisie de type textarea avec maxlength, on va charger un script
if (strpos($flux, 'textarea') !==false && strpos($flux, 'maxlength') !==false) {
// On insère le JS à la fin du <head>
$pos_head = strpos($flux, '</head');
$js = produire_fond_statique('javascript/textarea-counter/textarea-counter.js');
$ins_js = "\n<script type='text/javascript' src='$js'></script>\n";
$flux = substr_replace($flux, $ins_js, $pos_head, 0);
}
$flux = substr_replace($flux, $ins_css, $pi, 0);
$pos_head = strpos($flux, '</head');
$flux = substr_replace($flux, afficher_si_definir_fonctions(), $pos_head, 0);
// On insère le JS à la fin du <head>
foreach (array('javascript/saisies.js', 'javascript/saisies_afficher_si.js') as $script) {
$pos_head = strpos($flux, '</head');
$js = timestamp(find_in_path($script));
$ins_js = "\n<script type='text/javascript' src='$js'></script>\n";
$flux = substr_replace($flux, $ins_js, $pos_head, 0);
// compatibilité SPIP 3.2 et jQuery UI 1.12
if ($version[0] == 3 and $version[1] > 1) {
$ins_css .= "\n<link rel='stylesheet' type='text/css' media='all' href='" . find_in_path('css/ui/jquery-ui.css') . "' />\n";
}
}
}
$flux = $ins_css . $flux;
// ajout du JS à la fin du <head>
$js = produire_fond_statique('javascript/textarea-counter/textarea-counter.js');
$ins_js = "\n<script type='text/javascript' src='$js'></script>\n";
$ins_js .= afficher_si_definir_fonctions();
foreach (array('javascript/saisies.js', 'javascript/saisies_afficher_si.js') as $script) {
$js = timestamp(find_in_path($script));
$ins_js .= "\n<script type='text/javascript' src='$js'></script>\n";
}
$flux = $flux . $ins_js;
return $flux;
}
/**
* Déclarer automatiquement les champs d'un formulaire CVT qui déclare des saisies
*

Loading…
Cancel
Save