Browse Source

Mise en place d'une configuration pour pouvoir charger les assests tout le temps (par insert_head), ou bien seulement quand des saisies sont identifiées (par affichage_final)

pull/77/head
nicod 2 months ago
parent
commit
8c4dfe9497
  1. 16
      formulaires/configurer_saisies.html
  2. 2
      lang/saisies_fr.php
  3. 1
      paquet.xml
  4. 5
      prive/squelettes/contenu/configurer_saisies.html
  5. 59
      saisies_pipelines.php

16
formulaires/configurer_saisies.html

@ -0,0 +1,16 @@
<div id="formulaire_#FORM" class='formulaire_spip formulaire_editer formulaire_#FORM'>
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV**{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
<BOUCLE_editable(CONDITION){si #ENV{editable}}>
<form method="post" action="#ENV{action}#formulaire_#FORM">
#ACTION_FORMULAIRE{#ENV{action}}
<div class="editer-groupe">
[(#SAISIE{case, assests_global, label_case=<:saisies:assests_global:>})]
<p class="boutons">
<input type="submit" class="submit" value="<:bouton_enregistrer:>"/>
</p>
</div>
</form>
</BOUCLE_editable>
</div>

2
lang/saisies_fr.php

@ -9,6 +9,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
// A
'afficher' => 'Afficher',
'assests_global' => 'Charger le javascript et les CSS sur toutes les pages, dans la balise &lt;head&gt;',
// B
'bouton_parcourir_docs_article' => 'Parcourir l’article',
@ -18,6 +19,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
// C
'caracteres_restants' => 'caractères restants',
'configuration' => 'Configuration',
'construire_action_annuler' => 'Annuler',
'construire_action_configurer' => 'Configurer',
'construire_action_deplacer' => 'Déplacer',

1
paquet.xml

@ -19,6 +19,7 @@
<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" />

5
prive/squelettes/contenu/configurer_saisies.html

@ -0,0 +1,5 @@
[(#AUTORISER{saisies_configurer}|sinon_interdire_acces)]
<h1 class="grostitre"><:saisies:configuration:></h1>
<div class="ajax">
#FORMULAIRE_CONFIGURER_SAISIES
</div>

59
saisies_pipelines.php

@ -48,14 +48,54 @@ function saisies_header_prive($flux) {
* @return array $flux modifié
**/
function saisies_insert_head($flux) {
if(lire_config('saisies/assests_global')) {
$flux = saisies_generer_head($flux);
}
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 (
!lire_config('saisies/assests_global')
and $GLOBALS['html'] // si c'est bien du HTML
and 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
) {
$flux = saisies_generer_head($flux, true);
}
return $flux;
}
// ajout des CSS au début du <head>
/**
* Génère le contenu du head pour les saisies (css et js)
*
* @param string $flux
* @param false $tester_saisies
*
* @return string
*/
function saisies_generer_head($flux, $tester_saisies = false) {
// on insère le 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)) {
if (
(!defined('_JQUERYUI_CSS_NON') or !boolval(_JQUERYUI_CSS_NON))
and (!$tester_saisies or strpos($flux, 'saisie_date') !==false)
) {
include_spip('jqueryui_pipelines');
if (function_exists('jqueryui_dependances')) {
$ui_plugins = jqueryui_dependances(array('jquery.ui.datepicker'));
@ -85,17 +125,20 @@ function saisies_insert_head($flux) {
}
$flux = $ins_css . $flux;
// ajout du JS à la fin du <head>
// on insère le 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();
$ins_js = afficher_si_definir_fonctions();
// si on a une saisie de type textarea avec maxlength, on va charger un script
if (!$tester_saisies or (strpos($flux, 'textarea') !==false && strpos($flux, 'maxlength') !==false)) {
$js = produire_fond_statique('javascript/textarea-counter/textarea-counter.js');
$ins_js .= "\n<script type='text/javascript' src='$js'></script>\n";
}
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;
}

Loading…
Cancel
Save