Remplacement du sélecteur de document par un input['file']

pull/19/head
paidge 2 years ago
parent 02abbaf853
commit 301fcde004

@ -3,7 +3,7 @@
[<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}">
<form method="post" action="#ENV{action}" enctype="multipart/form-data">
<div>
#ACTION_FORMULAIRE{#ENV{action}}
@ -12,10 +12,22 @@
<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>
</div>
</form>
</div>
</div>

@ -1,13 +1,125 @@
<?php
if (!defined('_ECRIRE_INC_VERSION')) return;
include_spip('inc/cvtupload');
/**
* Un simple formulaire de config,
* on a juste à déclarer les saisies
**/
* @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',
['previsualiser' => true, 'editer_class' => '']
);
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']),
'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;
return $valeurs;
}
function formulaires_configurer_tarteaucitron_ouverture_verifier_dist(){
$erreurs = array();
if (!in_array(_request("ouverture"),array('','image','alertSmall'))) {
$erreurs['ouverture'] = _T('avis_1_erreur_saisie');
}
if (!in_array(_request("iconPosition"),array('BottomRight','BottomLeft','TopRight','TopLeft'))) {
$erreurs['iconPosition'] = _T('avis_1_erreur_saisie');
}
if (_request("supprimer_icon")) {
// rien à vérifier
} elseif (!empty($_FILES['upload_icon'])) {
$file = $_FILES['upload_icon'];
$chemin = $file['tmp_name'];
$infos_image = @getImageSize($chemin);
$largeur = $infos_image[0];
$hauteur = $infos_image[1];
if (($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']);
}
}
return $erreurs;
}
function formulaires_configurer_tarteaucitron_ouverture_traiter_dist(){
$retours = [
'message_ok' => _T('config_info_enregistree'),
'editable' => true,
];
$data = formulaires_configurer_tarteaucitron_ouverture_data();
$dest = $data['icon'];
if (_request("supprimer_icon")) {
ecrire_config('tarteaucitron/icon', '');
@unlink($dest);
} elseif (!empty($_FILES['upload_icon'])) {
$file = $_FILES['upload_icon'];
include_spip('inc/documents');
deplacer_fichier_upload($file['tmp_name'], $dest);
ecrire_config('tarteaucitron/icon', $dest);
}
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;
}
function formulaires_configurer_tarteaucitron_ouverture_saisies_dist(){
// $saisies est un tableau décrivant les saisies à afficher dans le formulaire de configuration
$saisies = array(
array(
'saisie' => 'selection',
@ -26,9 +138,8 @@ function formulaires_configurer_tarteaucitron_ouverture_saisies_dist(){
'saisie' => 'selection',
'options' => array(
'nom' => 'iconPosition',
'option_intro' => '<:tarteaucitron:cfg_choose_option:>',
'label' => '<:tarteaucitron:cfg_iconposition:>',
'defaut' => 'BottomRight',
'cacher_option_intro' => 'oui',
'data' => array(
'BottomRight' => '<:tarteaucitron:cfg_position_bd:>',
'BottomLeft' => '<:tarteaucitron:cfg_position_bg:>',
@ -38,15 +149,6 @@ function formulaires_configurer_tarteaucitron_ouverture_saisies_dist(){
'afficher_si' => '@ouverture@ == "image"'
)
),
array(
'saisie' => 'selecteur_document',
'options' => array(
'nom' => 'icon',
'label' => '<:tarteaucitron:cfg_icon:>',
'media' => 'image',
'afficher_si' => '@ouverture@ == "image"'
)
),
array(
'saisie' => 'checkbox',
'options' => array(

@ -15,9 +15,7 @@
/* Gestion de la petite icone Cookie */
"showIcon": [(#CONFIG{tarteaucitron/ouverture}|=={'image'}|?{true,false})], /* Show cookie Icon or not */
<BOUCLE_image(DOCUMENTS){tout}{id_document=#CONFIG{tarteaucitron/icon}}>
"iconSrc" : "#URL_DOCUMENT",
</BOUCLE_image>
["iconSrc" : "(#CONFIG{tarteaucitron/icon})",]
"iconPosition": "#CONFIG{tarteaucitron/iconPosition, BottomRight}", /* BottomRight, BottomLeft, TopRight and TopLeft */
"adblocker": [(#CONFIG{tarteaucitron/adblocker}|table_valeur{0}|?{true,false})], /* Afficher un message si un adblocker est détecté */

@ -51,6 +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_iconposition' => 'Positionner le bouton',
'cfg_image' => 'Image',
'cfg_installer' => 'Activer',
@ -88,6 +89,9 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'cfg_titre_bandeau' => 'Affichage',
'cfg_titre_technique' => 'Technique',
// E
'erreur_taille_icone' => 'Le fichier « @name@ » doit faire 50px de côté',
// I
'id_contenu' => 'Insérer l\'id de votre contenu :',

@ -19,6 +19,7 @@
<credit lien="https://31mille.net">Logo au format SVG par Philippe Guillot</credit>
<necessite nom="saisies" compatibilite="[3.43.2;]" />
<necessite nom="cvtupload" compatibilite="[2.0.0;]" />
<pipeline nom="autoriser" inclure="tarteaucitron_autorisations.php" />
<pipeline nom="insert_head" inclure="tarteaucitron_pipelines.php" />

@ -53,6 +53,10 @@ function tarteaucitron_upgrade($nom_meta_base_version, $version_cible) {
* @return void
**/
function tarteaucitron_vider_tables($nom_meta_base_version) {
$icon = _DIR_IMG . "tarteaucitron_icon.png";
if (file_exists($icon)) {
@unlink($icon);
}
effacer_meta('tarteaucitron');
effacer_meta($nom_meta_base_version);
}

Loading…
Cancel
Save