From 755469387fb9197ebe19f3996ff5647706232563 Mon Sep 17 00:00:00 2001
From: Cerdic <cedric@yterium.com>
Date: Fri, 1 Oct 2010 21:55:40 +0000
Subject: [PATCH] #FORMULAIRE_CONFIGURER_REDUCTEUR remplace
 configurer/reducteur a verifier dans IE7 qui gere mal les <button>

---
 .gitattributes                                |   3 +-
 ecrire/configuration/reducteur.php            | 161 ------------------
 prive/formulaires/configurer_reducteur.html   | 102 +++++++++++
 prive/formulaires/configurer_reducteur.php    |  99 +++++++++++
 .../contenu/page-configurer_avancees.html     |   7 +-
 prive/style_prive.html                        |   8 +-
 6 files changed, 211 insertions(+), 169 deletions(-)
 delete mode 100644 ecrire/configuration/reducteur.php
 create mode 100644 prive/formulaires/configurer_reducteur.html
 create mode 100644 prive/formulaires/configurer_reducteur.php

diff --git a/.gitattributes b/.gitattributes
index 796b1a7eec..44016637b4 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -76,7 +76,6 @@ ecrire/configuration/avertisseur.php -text
 ecrire/configuration/index.php -text
 ecrire/configuration/moderniseur_html.php -text
 ecrire/configuration/previsualiseur.php -text
-ecrire/configuration/reducteur.php -text
 ecrire/configuration/relayeur.php -text
 ecrire/core.xml -text
 ecrire/exec/403.php -text
@@ -373,6 +372,8 @@ prive/formulaires/configurer_preferences.html -text
 prive/formulaires/configurer_preferences.php -text
 prive/formulaires/configurer_redacteurs.html -text
 prive/formulaires/configurer_redacteurs.php -text
+prive/formulaires/configurer_reducteur.html -text
+prive/formulaires/configurer_reducteur.php -text
 prive/formulaires/configurer_rubriques.html -text
 prive/formulaires/configurer_rubriques.php -text
 prive/formulaires/configurer_transcodeur.html -text
diff --git a/ecrire/configuration/reducteur.php b/ecrire/configuration/reducteur.php
deleted file mode 100644
index 9bfb94c9c0..0000000000
--- a/ecrire/configuration/reducteur.php
+++ /dev/null
@@ -1,161 +0,0 @@
-<?php
-
-/***************************************************************************\
- *  SPIP, Systeme de publication pour l'internet                           *
- *                                                                         *
- *  Copyright (c) 2001-2010                                                *
- *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
- *                                                                         *
- *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
- *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
-\***************************************************************************/
-
-if (!defined("_ECRIRE_INC_VERSION")) return;
-
-include_spip('inc/presentation');
-include_spip('inc/config');
-
-function configuration_reducteur_dist()
-{
-	global $spip_lang_left, $spip_lang_right;
-	$image_process = _request('image_process');
-
-		// application du choix de vignette
-	if ($image_process) {
-			// mettre a jour les formats graphiques lisibles
-		switch ($image_process) {
-				case 'gd1':
-				case 'gd2':
-					$formats_graphiques = $GLOBALS['meta']['gd_formats_read'];
-					break;
-				case 'netpbm':
-					$formats_graphiques = $GLOBALS['meta']['netpbm_formats'];
-					break;
-				case 'convert':
-				case 'imagick':
-					$formats_graphiques = 'gif,jpg,png';
-					break;
-				default: #debug
-					$formats_graphiques = '';
-					$image_process = 'non';
-					break;
-			}
-		ecrire_meta('formats_graphiques', $formats_graphiques,'non');
-		ecrire_meta('image_process', $image_process,'non');
-	} else 	$formats_graphiques = $GLOBALS['meta']["formats_graphiques"];
-
-	$nb_process = 0;
-	$res = '';
-
-	// Tester les formats
-	if ( /* GD disponible ? */
-	function_exists('ImageGif')
-	OR function_exists('ImageJpeg')
-	OR function_exists('ImagePng')
-	) {
-		$res .= afficher_choix_vignette($p = 'gd1');
-		if (function_exists("ImageCreateTrueColor")) {
-			$res .= afficher_choix_vignette($p = 'gd2');
-		}
-	}
-
-	if (_PNMSCALE_COMMAND!='') {
-		$res .= afficher_choix_vignette($p = 'netpbm');
-	}
-
-	if (function_exists('imagick_readimage')) {
-		$res .=afficher_choix_vignette('imagick');
-	}
-
-	if (_CONVERT_COMMAND!='') {
-		$res .= afficher_choix_vignette($p = 'convert');
-	}
-
-		
-	$test_out = "";
-	if ($GLOBALS['meta']['image_process']=='gd1' OR $GLOBALS['meta']['image_process']=='gd2') {
-		effacer_meta('max_taille_vignettes');
-		$test_out .= "<p>"._T('info_taille_maximale_images')."</p>";
-		$time = time();
-		$url = generer_url_action("tester_taille", "arg=3000&time=$time");
-		$test_out .= "<iframe style='border:0;height:3em;overflow:hidden;' src='$url'></iframe>";
-		$test_out .= "<br style='clear:both;' />";
-	}
-	else {
-		effacer_meta('max_taille_vignettes');
-	}
-
-	return ajax_action_greffe("configurer-reducteur", '', 
-	  debut_cadre_trait_couleur("image-24.gif", true, "", _T("info_image_process_titre"))
-	.  "<p class='verdana2'>"
-	. _T('info_image_process')
-	. "</p>"
-	. $res
-	. "<br class='nettoyeur' />"
-	. _T('info_image_process2')
-	. $test_out
-	. (!$formats_graphiques ? '' : format_choisi())
-	. fin_cadre_trait_couleur(true));
-}
-
-function format_choisi()
-{
-	global $spip_lang_left, $spip_lang_right;
-	
-	$creer_preview = $GLOBALS['meta']["creer_preview"];
-	$taille_preview = $GLOBALS['meta']["taille_preview"];
-	if ($taille_preview < 10) $taille_preview = 120;
-
-	$res .= "<p class='verdana2'>";
-	$res .= _T('info_ajout_image');
-	$res .= "</p>\n";
-	$res .= "<div class='verdana2'>";
-	$res .= bouton_radio("creer_preview", "oui", _T('item_choix_generation_miniature'), $creer_preview == "oui", "changeVisible(this.checked, 'config-preview', 'block', 'none');");
-	$res .= '</div>';
-
-	if ($creer_preview == "oui") $style = "block;"; else $style = "none;";
-
-	$res .= "<div id='config-preview' class='verdana2' style='display: $style margin-$spip_lang_left: 40px;'>"
-	  . "<label for='taille_preview'>"
-	  ._T('info_taille_maximale_vignette')
-	  . "</label>"
-	  . "<br /><input type='text' name='taille_preview' id='taille_preview' value='$taille_preview' class='fondl' size='5' />";
-	$res .= " "._T('info_pixels');
-	
-	$res .= '<br /><br />';
-	$res .= "</div>";
-	$res .= bouton_radio("creer_preview", "non", _T('item_choix_non_generation_miniature'), $creer_preview != "oui", "changeVisible(this.checked, 'config-preview', 'none', 'block');");
-	
-	return 
-	  debut_cadre_relief("", true, "", _T('info_generation_miniatures_images'))
-	.  ajax_action_post('configuration', 'reducteur', 'config_fonctions', '#configurer-reducteur', $res)
-	. fin_cadre_relief(true);
-}
-
-// http://doc.spip.org/@afficher_choix_vignette
-function afficher_choix_vignette($process) {
-
-	//global $taille_preview;
-	$taille_preview = 120;
-
-	// Ici on va tester les capacites de GD independamment des tests realises
-	// dans les images spip_image -- qui servent neanmoins pour la qualite
-	/* if (function_exists('imageformats')) {
-		
-	} */
-
-
-	$class = '';
-	if ($process == $GLOBALS['meta']['image_process']) {
-	  $class = " selected";
-	} 
-	return "\n<div class='vignette_reducteur$class'"
-	. "><a href='"
-	. generer_url_ecrire("config_fonctions", "image_process=$process")
-	. "'><img src='"
-	. generer_url_action("tester", "arg=$process&time=".time())
-	. "' alt='$process' /></a><span>$process</span></div>\n";
-
-}
-
-?>
diff --git a/prive/formulaires/configurer_reducteur.html b/prive/formulaires/configurer_reducteur.html
new file mode 100644
index 0000000000..420423890e
--- /dev/null
+++ b/prive/formulaires/configurer_reducteur.html
@@ -0,0 +1,102 @@
+<div class="formulaire_spip formulaire_configurer formulaire_#FORM formulaire_#FORM-#ENV{id,nouveau}">
+<h3 class='titrem'><img src="#CHEMIN_IMAGE{image-24.png}" class="cadre-icone" /><:info_generation_miniatures_images:></h3>
+	[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
+	[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
+	[(#ENV{editable})
+	<form method='post' action='#ENV{action}' enctype='multipart/form-data'><div>
+		[(#REM) declarer les hidden qui declencheront le service du formulaire
+		parametre : url d'action ]
+		#ACTION_FORMULAIRE{#ENV{action}}
+		<input type='submit' class='submit' value='<:bouton_enregistrer:>' style="display:none;"/>
+		<ul>
+			#SET{name,image_process}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
+			<li class="haut editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
+				<label for="#GET{name}"><:info_image_process:>#AIDER{logoart}</label>[
+				<span class='erreur_message'>(#GET{erreurs})</span>
+				]
+				#SET{process,gd1}
+				[<button
+					type="submit"
+					class="vignette_reducteur[(#ENV{image_process}|=={#GET{process}}|oui)selected]"
+					style="background-image:url((#GET{process}|url_vignette_choix));"
+					name="image_process_#EVAL{chr(91)}[(#GET{process})]#EVAL{chr(93)}">
+				[(#GET{process}|strtoupper)]
+				</button>]
+				#SET{process,gd2}
+				[<button
+					type="submit"
+					class="vignette_reducteur[(#ENV{image_process}|=={#GET{process}}|oui)selected]"
+					style="background-image:url((#GET{process}|url_vignette_choix));"
+					name="image_process_#EVAL{chr(91)}[(#GET{process})]#EVAL{chr(93)}">
+				[(#GET{process}|strtoupper)]
+				</button>]
+				#SET{process,netpbm}
+				[<button
+					type="submit"
+					class="vignette_reducteur[(#ENV{image_process}|=={#GET{process}}|oui)selected]"
+					style="background-image:url((#GET{process}|url_vignette_choix));"
+					name="image_process_#EVAL{chr(91)}[(#GET{process})]#EVAL{chr(93)}">
+				[(#GET{process}|strtoupper)]
+				</button>]
+				#SET{process,imagick}
+				[<button
+					type="submit"
+					class="vignette_reducteur[(#ENV{image_process}|=={#GET{process}}|oui)selected]"
+					style="background-image:url((#GET{process}|url_vignette_choix));"
+					name="image_process_#EVAL{chr(91)}[(#GET{process})]#EVAL{chr(93)}">
+				[(#GET{process}|strtoupper)]
+				</button>]
+				#SET{process,convert}
+				[<button
+					type="submit"
+					class="vignette_reducteur[(#ENV{image_process}|=={#GET{process}}|oui)selected]"
+					style="background-image:url((#GET{process}|url_vignette_choix));"
+					name="image_process_#EVAL{chr(91)}[(#GET{process})]#EVAL{chr(93)}">
+				[(#GET{process}|strtoupper)]
+				</button>]
+				<p class="explication"><:info_image_process2:></p>
+			</li>
+			[(#ENV{image_process}|match{^(gd1|gd2)$}|oui)
+			#SET{name,max_taille_vignettes}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
+			<li class="long_label editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
+				<label for="#GET{name}"><:info_taille_maximale_images:></label>[
+				<span class='erreur_message'>(#GET{erreurs})</span>
+				]<iframe style='border:0;height:3em;overflow:hidden;' src='[(#SELF|parametre_url{action,tester_taille}|parametre_url{arg,3000}||parametre_url{time,#EVAL{time()}})]'></iframe>
+			</li>
+			][(#ENV{formats_graphiques}|oui)
+			<li class="fieldset">
+				<fieldset><legend><:info_generation_miniatures_images:></legend>
+					<p><:info_ajout_image:></p>
+					<ul>
+						#SET{name,creer_preview}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
+						<li class="editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
+							[
+							<span class='erreur_message'>(#GET{erreurs})</span>
+							]<div class="choix">
+								<input type="radio" name="#GET{name}" id="#GET{name}_non" value="non"
+									onchange="if ($(this).attr('checked')) $('.editer_taille_preview').hide('fast');"
+									[(#ENV{#GET{name}}|=={oui}|non)checked="checked"] /><label for="#GET{name}_non"><:item_choix_non_generation_miniature:></label>
+							</div>
+							<div class="choix">
+								<input type="radio" name="#GET{name}" id="#GET{name}_oui" value="oui"
+									onchange="if ($(this).attr('checked')) $('.editer_taille_preview').show('fast');"
+									[(#ENV{#GET{name}}|=={oui}|oui)checked="checked"] /><label for="#GET{name}_oui"><:item_choix_generation_miniature:></label>
+							</div>
+						</li>
+						#SET{name,taille_preview}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
+						<li class="editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]"[(#ENV{creer_preview}|=={oui}|non)style='display:none;']>
+							<label for="#GET{name}"><:info_taille_maximale_vignette:></label>[
+							<span class='erreur_message'>(#GET{erreurs})</span>
+							]<input type='text' name='#GET{name}' id='#GET{name}' value='#ENV{#GET{name}}' />
+						</li>
+					</ul>
+				</fieldset>
+			</li>
+			]
+		</ul>
+	  [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
+	  <!--extra-->
+	  <p class='boutons'><span class='image_loading'>&nbsp;</span><input type='submit' class='submit' value='<:bouton_enregistrer:>' /></p>
+	</div></form>
+	]
+</div>
\ No newline at end of file
diff --git a/prive/formulaires/configurer_reducteur.php b/prive/formulaires/configurer_reducteur.php
new file mode 100644
index 0000000000..bb1c0da712
--- /dev/null
+++ b/prive/formulaires/configurer_reducteur.php
@@ -0,0 +1,99 @@
+<?php
+
+/***************************************************************************\
+ *  SPIP, Systeme de publication pour l'internet                           *
+ *                                                                         *
+ *  Copyright (c) 2001-2010                                                *
+ *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
+ *                                                                         *
+ *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
+ *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
+\***************************************************************************/
+
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+function formulaires_configurer_reducteur_charger_dist(){
+	foreach(array(
+		"image_process",
+		"formats_graphiques",
+		"creer_preview",
+		"taille_preview",
+		) as $m)
+		$valeurs[$m] = $GLOBALS['meta'][$m];
+
+	$valeurs['taille_preview'] = intval($valeurs['taille_preview']);
+	if ($valeurs['taille_preview']<10)
+		$valeurs['taille_preview'] = 120;
+	return $valeurs;
+}
+
+
+function formulaires_configurer_reducteur_traiter_dist(){
+	$res = array('editable'=>true);
+
+	if (is_array($image_process = _request('image_process_'))) {
+		$image_process = array_keys($image_process);
+		$image_process = reset($image_process);
+
+			// application du choix de vignette
+		if ($image_process) {
+				// mettre a jour les formats graphiques lisibles
+			switch ($image_process) {
+					case 'gd1':
+					case 'gd2':
+						$formats_graphiques = $GLOBALS['meta']['gd_formats_read'];
+						break;
+					case 'netpbm':
+						$formats_graphiques = $GLOBALS['meta']['netpbm_formats'];
+						break;
+					case 'convert':
+					case 'imagick':
+						$formats_graphiques = 'gif,jpg,png';
+						break;
+					default: #debug
+						$formats_graphiques = '';
+						$image_process = 'non';
+						break;
+				}
+			ecrire_meta('formats_graphiques', $formats_graphiques,'non');
+			ecrire_meta('image_process', $image_process,'non');
+		}
+	}
+
+	foreach(array(
+		"creer_preview",
+		"taille_preview",
+		) as $m)
+		if (!is_null($v=_request($m)))
+			ecrire_meta($m, $v=='oui'?'oui':'non');
+
+	$res['message_ok'] = _T('config_info_enregistree');
+	return $res;
+}
+
+function url_vignette_choix($process){
+	switch ($process){
+		case 'gd2':
+			if (!function_exists("ImageCreateTrueColor"))
+				return '';
+		case 'gd1':
+			if (!function_exists('ImageGif')
+			  AND !function_exists('ImageJpeg')
+			  AND !function_exists('ImagePng'))
+				return '';
+			break;
+		case 'netpbm':
+			if (_PNMSCALE_COMMAND=='')
+				return '';
+			break;
+		case 'imagick':
+			if (!function_exists('imagick_readimage'))
+				return '';
+			break;
+		case 'convert':
+			if (_CONVERT_COMMAND=='')
+				return '';
+			break;
+	}
+	return generer_url_action("tester", "arg=$process&time=".time());
+}
diff --git a/prive/squelettes/contenu/page-configurer_avancees.html b/prive/squelettes/contenu/page-configurer_avancees.html
index 06adb61928..3aa7719d32 100644
--- a/prive/squelettes/contenu/page-configurer_avancees.html
+++ b/prive/squelettes/contenu/page-configurer_avancees.html
@@ -1,10 +1,13 @@
 [(#AUTORISER{configurer,interactions}|interdire_acces)]
 <h1><:onglet_fonctions_avances:></h1>
 
+<div class="ajax">
+	#FORMULAIRE_CONFIGURER_REDUCTEUR
+</div>
+
 <?php
 	include_spip('inc/presentation');
 
-	$reducteur = charger_fonction('reducteur', 'configuration');
 	$avertisseur = charger_fonction('avertisseur', 'configuration');
 	$previsualiseur = charger_fonction('previsualiseur', 'configuration');
 	$relayeur = charger_fonction('relayeur', 'configuration');
@@ -12,8 +15,6 @@
 
 	echo
 
-	  $reducteur(), // Creation automatique de vignettes
-
 	  $avertisseur(), // Notification de modification des articles
 
 	  $previsualiseur(), // Previsualisation sur le site public
diff --git a/prive/style_prive.html b/prive/style_prive.html
index 5916f7de6c..3b27db24f1 100644
--- a/prive/style_prive.html
+++ b/prive/style_prive.html
@@ -693,10 +693,10 @@ td.vu { background: #ccc; }
 .upload_message ol li {padding: 2px;}
 
 /* config/reducteur */
-.vignette_reducteur { text-align: center; vertical-align: middle; float: #GET{left}; padding:2px; border:2px solid #fff; width:150px; height:170px; }
-.vignette_reducteur.selected { font-weight: bold; border:2px dotted #GET{claire}; }
-.vignette_reducteur span { display: block; }
-
+.formulaire_configurer_reducteur .vignette_reducteur {text-align: center; float: #GET{left};padding:2px; border:2px solid #ddd; width:154px;padding-top:150px;margin:2px;background-position: top center;background-repeat: no-repeat;}
+.formulaire_configurer_reducteur .vignette_reducteur:hover {border-color:#bbb;}
+.formulaire_configurer_reducteur .vignette_reducteur.selected { font-weight: bold; border:2px dotted #GET{claire}; }
+.formulaire_configurer_reducteur .vignette_reducteur.selected:hover {border-color:#GET{foncee};}
 
 /* pour les puces de changement rapide de statut ; NB: ca buggue car ca s'affiche en-dessous du cadre */
 li .puce_statut { float: #GET{left}; padding-top: 5px; }
-- 
GitLab