Browse Source

ajout d'une saisie pour l'upload de l'icône + amélioration de la mise en page

master
paidge 10 months ago committed by PJC
parent
commit
e4f9eacbd9
  1. 3
      formulaires/configurer_tarteaucitron_ajouter_services.html
  2. 13
      formulaires/configurer_tarteaucitron_ouverture.html
  3. 98
      formulaires/configurer_tarteaucitron_ouverture.php
  4. 16
      formulaires/configurer_tarteaucitron_services.html
  5. 2
      lang/tarteaucitron_fr.php
  6. 2
      prive/squelettes/contenu/configurer_services.html
  7. 22
      prive/style_prive_plugin_tarteaucitron.html
  8. 16
      saisies/tac_upload.html

3
formulaires/configurer_tarteaucitron_ajouter_services.html

@ -1,4 +1,7 @@
<div id="formulaire_#FORM"" class="formulaire_spip formulaire_configurer formulaire_#FORM">
<div class="box__header">
<h3><:tarteaucitron:cfg_titre_ajouter_services:></h3>
</div>
<div>
<ol class="explication">
<:tarteaucitron:cfg_explication:>

13
formulaires/configurer_tarteaucitron_ouverture.html

@ -12,19 +12,6 @@
<p class="explication"><:tarteaucitron:cfg_btn_showIcon_explication:></p>
<div class="editer-groupe">
#GENERER_SAISIES{#ENV{_saisies}}
#SET{name,upload_icon}
#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
<div class="editer editer_[(#GET{name})][ (#GET{erreurs}|oui)erreur] afficher_si_visible" data-afficher_si="afficher_si({&quot;champ&quot;:&quot;ouverture&quot;,&quot;total&quot;:&quot;&quot;,&quot;operateur&quot;:&quot;==&quot;,&quot;valeur&quot;:&quot;image&quot;})">
<label for="#GET{name}"><:tarteaucitron:cfg_icon:></label>
[(#ENV{src_img}|oui)
[(#INCLURE{fond=formulaires/inc-apercu-logo,env,logo=#ENV{src_img},quoi=icon,editable,_options=#ARRAY{image_reduire,780}})]
][(#ENV{src_img}|non)
<div class="explication"><:tarteaucitron:cfg_icon_explication:></div>
[<span class='erreur_message'>(#GET{erreurs})</span>]
<input type="file" name="#GET{name}" class="file bigup" accept="image/png" />
]
</div>
</div>
</fieldset>
<p class="boutons"><span class="image_loading">&nbsp;</span><input type="submit" class="submit" value="<:bouton_enregistrer:>" /></p>

98
formulaires/configurer_tarteaucitron_ouverture.php

@ -1,12 +1,12 @@
<?php
if (!defined('_ECRIRE_INC_VERSION')) return;
// Nécessaire pour bigup
/**
* @param array $args
* @param \Spip\Bigup\Formulaire $formulaire
* @return \Spip\Bigup\Formulaire
*/
// Nécessaire pour bigup
function inc_bigup_medias_formulaire_configurer_tarteaucitron_ouverture_dist($args, $formulaire) {
$formulaire->preparer_input_class(
'bigup',
@ -14,31 +14,15 @@ function inc_bigup_medias_formulaire_configurer_tarteaucitron_ouverture_dist($ar
);
return $formulaire;
}
// Déclaration des champs du formulaire et de leur valeur par défaut
function formulaires_configurer_tarteaucitron_ouverture_data() : array {
return [
'ouverture' => "",
'iconPosition' => "BottomRight",
'cookieslist' => "", // array("false")
'icon' => _DIR_IMG . "tarteaucitron_icon.png",
];
}
function formulaires_configurer_tarteaucitron_ouverture_charger_dist(){
$data = formulaires_configurer_tarteaucitron_ouverture_data();
$valeurs = array(
'ouverture' => lire_config('tarteaucitron/ouverture'),
'iconPosition' => lire_config('tarteaucitron/iconPosition', $data['iconPosition']),
'iconPosition' => lire_config('tarteaucitron/iconPosition', 'BottomRight'),
'cookieslist' => lire_config('tarteaucitron/cookieslist'),
'upload_icon' => ''
);
if (file_exists($data['icon'])) {
$valeurs["src_img"] = $data['icon'];
}
// Nécessaire pour bigup
$valeurs['_bigup_rechercher_fichiers'] = true;
@ -56,29 +40,23 @@ function formulaires_configurer_tarteaucitron_ouverture_verifier_dist(){
$erreurs['iconPosition'] = _T('avis_1_erreur_saisie');
}
if (_request("supprimer_icon")) {
if (_request("supprimer_upload_icon")) {
// rien à vérifier
} elseif (!empty($_FILES['upload_icon'])) {
$file = $_FILES['upload_icon'];
$chemin = $file['tmp_name'];
$infos_image = @getImageSize($chemin);
$tmp_chemin = $file['tmp_name'];
$infos_image = @getImageSize($tmp_chemin);
$largeur = $infos_image[0];
$hauteur = $infos_image[1];
if (($largeur != 50) && ($hauteur != 50)) {
if (!$infos_image) {
$erreurs['upload_icon'] = _T('erreur_type_fichier');
} elseif (($largeur != 50) && ($hauteur != 50)) {
$erreurs['upload_icon'] = _T('tarteaucitron:erreur_taille_icone', array('name' => $file['name']));
}
include_spip('action/ajouter_documents');
$extension = pathinfo($file['name'], PATHINFO_EXTENSION);
$extension = corriger_extension(strtolower($extension));
if (!in_array($extension, ['png'])) {
$erreurs['upload_icon'] = _T('erreur_type_fichier');
}
if (array_key_exists('upload_icon',$erreurs)) {
@unlink($file['tmp_name']);
@unlink($tmp_chemin);
}
}
@ -86,34 +64,54 @@ function formulaires_configurer_tarteaucitron_ouverture_verifier_dist(){
}
function formulaires_configurer_tarteaucitron_ouverture_traiter_dist(){
include_spip('inc/cvt_configurer');
$retours = [
'message_ok' => _T('config_info_enregistree'),
'editable' => true,
];
$data = formulaires_configurer_tarteaucitron_ouverture_data();
$dest = $data['icon'];
// On garde en mémoire l'existant (l'API vide sinon)
if ($icone_actuelle = lire_config('tarteaucitron/icon')) {
set_request('icon', $icone_actuelle);
}
// On enregistre la nouvelle configuration
$trace = cvtconf_formulaires_configurer_enregistre('configurer_tarteaucitron_ouverture', array());
if (_request("supprimer_icon")) {
// On vérifie si on supprime l'image existante
if (_request("supprimer_upload_icon")) {
ecrire_config('tarteaucitron/icon', '');
@unlink($dest);
if ($icone_actuelle) {
@unlink($icone_actuelle);
}
// On vérifie si on envoie une nouvelle image
} elseif (!empty($_FILES['upload_icon'])) {
include_spip('action/ajouter_documents');
$file = $_FILES['upload_icon'];
$extension = pathinfo($file['name'], PATHINFO_EXTENSION);
$extension = corriger_extension(strtolower($extension));
$dest_name = 'tarteaucitron_icon.' . $extension;
$dest = _DIR_IMG . $dest_name;
include_spip('inc/documents');
deplacer_fichier_upload($file['tmp_name'], $dest);
ecrire_config('tarteaucitron/icon', $dest);
if ($chemin = deplacer_fichier_upload($file['tmp_name'],$dest)) {
if ($icone_actuelle != $dest) {
@unlink($icone_actuelle);
}
ecrire_config('tarteaucitron/icon', $dest);
} else {
$retours['message_ok'] = '';
$retours['message_erreur'] = _T('texte_inc_meta_1', array('fichier' => $dest_name)) . ' ' .
_T('texte_inc_meta_2') . ' ' .
_T('texte_inc_meta_3', array('repertoire' => _DIR_IMG));
}
}
include_spip('inc/invalideur');
suivre_invalideur('1'); # tout effacer
if ((!ecrire_config('tarteaucitron/ouverture',_request('ouverture'))) ||
(!ecrire_config('tarteaucitron/iconPosition',_request('iconPosition'))) ||
(!ecrire_config('tarteaucitron/cookieslist',_request('cookieslist'))))
{
$ret['message_erreur'] = _T('erreur_technique_enregistrement_impossible');
}
return $retours;
}
@ -147,6 +145,18 @@ function formulaires_configurer_tarteaucitron_ouverture_saisies_dist(){
'afficher_si' => '@ouverture@ == "image"'
)
),
array(
'saisie' => 'tac_upload',
'options' => array(
'nom' => 'upload_icon',
'accept' => 'image/*',
'class' => 'bigup',
'label' => '<:tarteaucitron:cfg_icon:>',
'explication' => '<:tarteaucitron:cfg_icon_explication:>',
'afficher_si' => '@ouverture@ == "image"',
'src_img' => lire_config('tarteaucitron/icon')
)
),
array(
'saisie' => 'checkbox',
'options' => array(

16
formulaires/configurer_tarteaucitron_services.html

@ -0,0 +1,16 @@
<div id="formulaire_#FORM"" class="formulaire_spip formulaire_configurer formulaire_#FORM">
<div class="box__header">
<h3><:tarteaucitron:cfg_titre_activation_services:></h3>
</div>
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
<form method="post" action="#ENV{action}">
<div>
#ACTION_FORMULAIRE{#ENV{action}}
<div class="editer-groupe">
#GENERER_SAISIES{#ENV{_saisies}}
</div>
<p class="boutons"><span class="image_loading">&nbsp;</span><input type="submit" class="submit" value="<:bouton_enregistrer:>" /></p>
</div>
</form>
</div>

2
lang/tarteaucitron_fr.php

@ -51,7 +51,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'cfg_group_services' => 'Regrouper les services',
'cfg_group_services_explication' => 'Par type de service',
'cfg_icon' => 'Icône',
'cfg_icon_explication' => 'Choisissez une image PNG de 50px de côté',
'cfg_icon_explication' => 'Choisissez une image carrée de 50px de côté',
'cfg_iconposition' => 'Positionner le bouton',
'cfg_image' => 'Image',
'cfg_installer' => 'Activer',

2
prive/squelettes/contenu/configurer_services.html

@ -2,9 +2,7 @@
<h1 class="grostitre"><:tarteaucitron:titre_page_configurer_tarteaucitron:></h1>
[(#VAL{configurer_tarteaucitron}|barre_onglets{configurer_services})]
<h3><:tarteaucitron:cfg_titre_ajouter_services:></h3>
#FORMULAIRE_CONFIGURER_TARTEAUCITRON_AJOUTER_SERVICES
<h3><:tarteaucitron:cfg_titre_activation_services:></h3>
<div class="ajax">
#FORMULAIRE_CONFIGURER_TARTEAUCITRON_SERVICES
</div>

22
prive/style_prive_plugin_tarteaucitron.html

@ -12,10 +12,32 @@
padding-left: 1.5rem;
}
.formulaire_configurer_tarteaucitron_services {
--spip-color-gray-lightest: #eee;
--spip-color-gray-dark: #000;
}
.formulaire_configurer_tarteaucitron_services .saisie_checkbox {
padding-left:1rem;
}
.formulaire_configurer_tarteaucitron_services .saisie_fieldset.pliable > fieldset {
border: none;
}
.formulaire_configurer_tarteaucitron_services .saisie_fieldset.pliable > fieldset > legend {
width: calc(100%);
color: var(--spip-color-gray-dark);
}
.formulaire_configurer_tarteaucitron_services .saisie_fieldset.pliable > fieldset > .editer-groupe {
position: relative;
top: -9px;
background: var(--spip-color-gray-lightest);
margin-left: 0;
margin-right: 0;
}
#tac_results li.item {
display: flex;
justify-content: space-between;

16
saisies/tac_upload.html

@ -0,0 +1,16 @@
[(#REM)
Parametres supplementaire :
- class : classe(s) css ajoutes a l'input
- disable : champ insaisissable ? 'oui' (defaut : '')
- autofocus : indique si le champ prend le focus a l'affichage (HTML5 requis)
- accept : Un ou plusieurs identifiants de type de fichier décrivants les types de fichier autorisés.
- src_img : source de l'image si déjà uploadée
]
[(#ENV{src_img}|oui)
[(#INCLURE{fond=formulaires/inc-apercu-logo,env,logo=#ENV{src_img},quoi=#ENV{nom},editable=oui,_options=#ARRAY{image_reduire,780}})]
]
[(#ENV{src_img}|non)
<input type="file" name="#ENV{nom}" class="file[ (#ENV{class})]" id="champ_[(#ENV{id,#ENV{nom}}|saisie_nom2classe)]"[ accept=(#ENV{accept})][ disabled="(#ENV{disable})"][(#HTML5|oui)[(#ENV{obligatoire}|et{#ENV{obligatoire}|!={non}}|oui) required="required"][(#ENV{autofocus}|et{#ENV{autofocus}|!={non}}|oui) autofocus="autofocus"]][ aria-describedby="(#ENV{describedby})"][ (#ENV*{attributs})] />
]
Loading…
Cancel
Save