Browse Source

Merge branch 'issue_76'

fix #76
close #77
pull/72/head
Maïeul 2 months ago
parent
commit
7acdc5a4a5
  1. 0
      formulaires/configurer_saisies.html
  2. 23
      formulaires/configurer_saisies.php
  3. 2
      lang/saisies_fr.php
  4. 5
      paquet.xml
  5. 5
      prive/squelettes/contenu/configurer_saisies.html
  6. 0
      prive/themes/spip/images/saisies-16.png
  7. 0
      prive/themes/spip/images/saisies-48.png
  8. 135
      saisies_pipelines.php

0
formulaires/configurer_saisies.html

23
formulaires/configurer_saisies.php

@ -0,0 +1,23 @@
<?php
// Sécurité
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Saisies du formulaire de configuration de saisies
* @return array
**/
function formulaires_configurer_saisies_saisies_dist() {
return array(
array(
'saisie' => 'case',
'options' => array(
'nom' => 'assests_global',
'label_case' => '<:saisies:assests_global:>',
'conteneur_class' => 'pleine_largeur',
)
)
);
}

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 du plugins Saisies',
'construire_action_annuler' => 'Annuler',
'construire_action_configurer' => 'Configurer',
'construire_action_deplacer' => 'Déplacer',

5
paquet.xml

@ -4,7 +4,7 @@
version="3.48.2"
etat="stable"
compatibilite="[3.0.0;3.2.*]"
logo="images/logo_saisie_48.png"
logo="prive/themes/spip/images/saisies-48.png"
documentation="https://contrib.spip.net/Saisies"
>
<nom>Saisies</nom>
@ -17,6 +17,7 @@
<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="" />
@ -37,4 +38,6 @@
<utilise nom="verifier" compatibilite="[1.6.0;]" />
<utilise nom="spip_bonux" compatibilite="[3.5.0;]" />
<utilise nom="yaml" compatibilite="[1.5.0;]" />
<menu nom="configurer_saisies" parent="menu_squelette" titre="saisies:configuration" icone="images/saisies-16.png" action="configurer_saisies" />
</paquet>

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>

0
images/saisies-16.png → prive/themes/spip/images/saisies-16.png

Before

Width: 16  |  Height: 16  |  Size: 429 B

After

Width: 16  |  Height: 16  |  Size: 429 B

0
images/logo_saisie_48.png → prive/themes/spip/images/saisies-48.png

Before

Width: 48  |  Height: 46  |  Size: 588 B

After

Width: 48  |  Height: 46  |  Size: 588 B

135
saisies_pipelines.php

@ -42,6 +42,18 @@ function saisies_header_prive($flux) {
return $flux;
}
/**
* 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) {
if(lire_config('saisies/assests_global')) {
$flux .= saisies_generer_head();
}
return $flux;
}
/**
* Ajoute les scripts JS et CSS de saisies dans l'espace public
*
@ -50,79 +62,86 @@ function saisies_header_prive($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
!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
) {
// 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";
$head = saisies_generer_head(true);
$flux = str_replace('</head>', "$head</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";
return $flux;
}
/**
* Génère le contenu du head pour les saisies (css et js)
*
* @param bool (false) $tester_saisies
*
* @return string
*/
function saisies_generer_head($tester_saisies = false) {
$flux = '';
include_spip('inc/filtres');
$css = produire_fond_statique('saisies.css');
$ins_css = "\n<link rel='stylesheet' href='$css' type='text/css' media='all' />\n";
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'));
$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";
}
}
}
$flux = $ins_css . $flux;
//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);
}
// on insère le JS à la fin du <head>
$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);
}
$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;
}
/**
* Déclarer automatiquement les champs d'un formulaire CVT qui déclare des saisies
*

Loading…
Cancel
Save