Valider 6c18da83 rédigé par tofulm's avatar tofulm Validation de marcimat
Parcourir les fichiers

feat: Le retaillage utilise la configuration pour SPIP, si définie.

Le formulaire de configuration des dimensions de retaillage côté navigateur
utilise la configuration de SPIP (constantes `_IMG_MAX_WIDTH` et `_IMG_MAX_HEIGH`),
si définie. Dans ce cas, le formulaire n’est pas éditable d’une part,
et la constante `_IMG_GD_QUALITE` est utilisée pour la qualité de compression.

Sinon, le formulaire permet de saisir les valeurs désirées.

Refs: #4538 https://git.spip.net/spip/bigup/pulls/4865#issuecomment-43623
parent ac95b721
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+9 −3
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -60,9 +60,15 @@ function bigup_insert_head($flux) {
function bigup_header_prive($flux) {
	include_spip('inc/config');
	$maxFileSize = intval(lire_config('bigup/max_file_size', 0));
	$clientWidth = floatval(lire_config('bigup/client_width', 0));
	$clientHeight = floatval(lire_config('bigup/client_height', 0));
	$clientQuality = floatval(lire_config('bigup/client_quality', 0));
	if (defined('_IMG_MAX_WIDTH') and defined('_IMG_MAX_HEIGHT')) {
		$clientWidth   = _IMG_MAX_WIDTH;
		$clientHeight  = _IMG_MAX_HEIGHT;
		$clientQuality = defined('_IMG_GD_QUALITE') ? _IMG_GD_QUALITE : 85;
	} else {
		$clientWidth   = intval(lire_config('bigup/client_width'));
		$clientHeight  = intval(lire_config('bigup/client_height'));
		$clientQuality = intval(lire_config('bigup/client_quality'));
	}
	$formatLogos = json_encode($GLOBALS['formats_logos'], JSON_THROW_ON_ERROR);
	$flux .= <<<EOS
<script type='text/javascript'>jQuery.bigup_config = {maxFileSize: $maxFileSize, formatsLogos: $formatLogos, clientWidth: $clientWidth, clientHeight: $clientHeight, clientQuality: $clientQuality}</script>
+37 −13
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -35,30 +35,54 @@

		</div>

		#SET{retaillageIsActif,''}
		[(#CONST{_IMG_MAX_WIDTH}|ou{#CONST{_IMG_MAX_HEIGHT}}|oui) #SET{retaillageIsActif,oui}]

		[(#GET{retaillageIsActif}|non)
			<h3 class="titrem"><:bigup:cfg_titre_retailler_image:></h3>
			<p class="explication"><:bigup:cfg_explication_retailler_image:></p>
		]
		[(#GET{retaillageIsActif}|oui)
			<h3 class="titrem"><:bigup:cfg_titre_retailler_image_actif:></h3>
		]

		<div class="editer-groupe">
			#SET{name,client_width}#SET{obli,''}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
			#SET{name,client_width}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
			<div class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
				<label for="#GET{name}"><:bigup:cfg_client_width:></label>[
				<span class='erreur_message'>(#GET{erreurs})</span>
				]<input type="text" name="#GET{name}" class="text" value="#ENV*{#GET{name},#GET{defaut}}" id="#GET{name}" [(#HTML5|et{#GET{obli}})required='required']/>
				<label for="#GET{name}"><:bigup:cfg_client_width:></label>
				[<span class='erreur_message'>(#GET{erreurs})</span>]
				[(#GET{retaillageIsActif}|oui)
					<input type="text" class="text" value="#CONST{_IMG_MAX_WIDTH}" id="#GET{name}" disabled/>
				]
				[(#GET{retaillageIsActif}|non)
					<input type="text" name="#GET{name}" class="text" value="#ENV*{#GET{name},#GET{defaut}}" id="#GET{name}"/>
				]
				<p class="explication"><:bigup:cfg_client_width_explication:></p>
			</div>

			#SET{name,client_height}#SET{obli,''}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
			<div class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
				<label for="#GET{name}"><:bigup:cfg_client_height:></label>[
				<span class='erreur_message'>(#GET{erreurs})</span>
				]<input type="text" name="#GET{name}" class="text" value="#ENV*{#GET{name},#GET{defaut}}" id="#GET{name}" [(#HTML5|et{#GET{obli}})required='required']/>
				<label for="#GET{name}"><:bigup:cfg_client_height:></label>
				[<span class='erreur_message'>(#GET{erreurs})</span>]
				[(#GET{retaillageIsActif}|oui)
					<input type="text" class="text" value="#CONST{_IMG_MAX_HEIGHT}" id="#GET{name}" disabled/>
				]
				[(#GET{retaillageIsActif}|non)
					<input type="text" name="#GET{name}" class="text" value="#ENV*{#GET{name},#GET{defaut}}" id="#GET{name}"/>
				]
				<p class="explication"><:bigup:cfg_client_height_explication:></p>
			</div>

			#SET{name,client_quality}#SET{obli,''}#SET{defaut,0.8}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
			#SET{name,client_quality}#SET{obli,''}#SET{defaut,85}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
			<div class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
				<label for="#GET{name}"><:bigup:cfg_client_quality:></label>[
				<span class='erreur_message'>(#GET{erreurs})</span>
				]<input type="text" name="#GET{name}" class="text" value="#ENV*{#GET{name},#GET{defaut}}" id="#GET{name}" [(#HTML5|et{#GET{obli}})required='required']/>
				<label for="#GET{name}"><:bigup:cfg_client_quality:></label>
				[<span class='erreur_message'>(#GET{erreurs})</span>]
				[(#GET{retaillageIsActif}|oui)
					<input type="text" class="text" value="[(#CONST{_IMG_GD_QUALITE}|sinon{85})]" id="#GET{name}" disabled/>
				]
				[(#GET{retaillageIsActif}|non)
					<input type="text" name="#GET{name}" class="text" value="#ENV*{#GET{name},#GET{defaut}}" id="#GET{name}"/>
				]
				<p class="explication"><:bigup:cfg_client_quality_explication:></p>
			</div>
		</div>
+6 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -1073,6 +1073,11 @@ async function compress(file, me) {
		opts.maxHeight = me.defaults.contraintes.clientHeight;
	}
	const data = await loadImage(file.file, opts);
	let quality = me.defaults.contraintes.clientQuality;
	if (quality > 1) {
		quality = quality / 100;
	}
	console.log('quality = ', quality);
	data.image.toBlob(
		(blob) => {
			file.file = blob;
@@ -1081,6 +1086,6 @@ async function compress(file, me) {
			me.flow.upload();
		},
		file.file.type,
		me.defaults.contraintes.clientQuality
		quality
	);
}
+4 −3
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -19,14 +19,15 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
	'cfg_max_file_size' => 'Taille maximum des fichiers',
	'cfg_max_file_size_explication' => 'Taille maximum des fichiers (en Mb).',
	'cfg_titre_parametrages' => 'Téléversement des fichiers',
	'cfg_titre_retailler_image' => 'Options pour activer le retaillage des images sur le client',
	'cfg_titre_retailler_image' => 'Activer le retaillage des images par le navigateur',
	'cfg_titre_retailler_image_actif' => 'Le retaillage des images par le navigateur est activé avec les valeurs suivantes',
	'cfg_client_width' => 'Largeur',
	'cfg_client_width_explication' => 'Largeur maximale de l’image (px)',
	'cfg_client_height' => 'Hauteur',
	'cfg_client_height_explication' => 'Hauteur maximale de l’image (px)',
	'cfg_client_quality' => 'Qualité',
	'cfg_client_quality_explication' => 'Compression de l’image après retaillage, valeur entre 0 et 1, défaut : 0.8',
	'cfg_explication_retailler_image' => 'Méthode de réduction des images dans le cas ou la hauteur <strong>et / ou </strong> la largeur sont renseignées.',
	'cfg_client_quality_explication' => 'Compression de l’image après retaillage, valeur entre 0 et 100, défaut : 85',
	'cfg_explication_retailler_image' => 'Si largeur et/ou hauteur sont renseignées, les images seront redimensionnées par le navigateur avant envoi sur le serveur',
	'choisir' => 'Choisir',

	// D