Browse Source

Ajout des sources

ladnet 3 years ago
commit
8e0096cff6

+ 23
- 0
action/htmlminifier_appliquer_options.php View File

@@ -0,0 +1,23 @@
1
+<?php
2
+
3
+if (!defined('_ECRIRE_INC_VERSION')) return;
4
+
5
+function action_htmlminifier_appliquer_options_dist() {
6
+
7
+    $securiser_action = charger_fonction('securiser_action', 'inc');
8
+    $arg = $securiser_action();
9
+    if(empty($arg) || !is_string($arg)) {
10
+        $arg = 'super_safe';
11
+    }
12
+
13
+    $options = HTMLMinifier::get_presets($arg);
14
+
15
+    ecrire_config('htmlminifier', $options);
16
+
17
+    if ($redirect = _request('redirect')) {
18
+        include_spip('inc/headers');
19
+        $redirect = parametre_url($redirect, 'message_ok_config', 'oui');
20
+        redirige_par_entete($redirect);
21
+    }
22
+
23
+}

+ 1036
- 0
class/HTMLMinifier.php
File diff suppressed because it is too large
View File


+ 234
- 0
formulaires/configurer_htmlminifier.html View File

@@ -0,0 +1,234 @@
1
+
2
+<div class="formulaire_spip formulaire_configurer formulaire_#FORM">
3
+
4
+	<h3 class="titrem"><:htmlminifier:cfg_titre_parametrages:></h3>
5
+
6
+	[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
7
+	[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV{message_ok_config})</p>]
8
+	[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
9
+
10
+	<form method="post" action="#ENV{action}">
11
+	<div>
12
+		#ACTION_FORMULAIRE
13
+		<input type="hidden" name="_meta_casier" value="htmlminifier" />
14
+		
15
+		<div class="barre_onglet clearfix">
16
+			<p>
17
+				<:htmlminifier:config_label:>:
18
+				<ul>
19
+					<li><a class="ajax nohistory" href="[(#URL_ACTION_AUTEUR{htmlminifier_appliquer_options, super_safe, #SELF})]"><:htmlminifier:config_super_safe:></a></li>
20
+					<li><a class="ajax nohistory" href="[(#URL_ACTION_AUTEUR{htmlminifier_appliquer_options, safe, #SELF})]"><:htmlminifier:config_safe:></a></li>
21
+					<li><a class="ajax nohistory" href="[(#URL_ACTION_AUTEUR{htmlminifier_appliquer_options, moderate, #SELF})]"><:htmlminifier:config_moderate:></a></li>
22
+					<li><a class="ajax nohistory" href="[(#URL_ACTION_AUTEUR{htmlminifier_appliquer_options, fully_optimised, #SELF})]"><:htmlminifier:config_fully_optimised:></a></li>
23
+				</ul>
24
+			</p>
25
+		</div>
26
+		
27
+		<div class="tabs" style="margin-bottom: 2em;">
28
+			<ul>
29
+				<li>
30
+					<a href="#section-general"><:htmlminifier:section_general:></a>
31
+				</li>
32
+				<li>
33
+					<a href="#section-css"><:htmlminifier:section_css:></a>
34
+				</li>
35
+				<li>
36
+					<a href="#section-javascript"><:htmlminifier:section_javascript:></a>
37
+				</li>
38
+			</ul>
39
+			<div id="section-general">
40
+					<div class="editer-groupe">
41
+
42
+						[(#SAISIE{selection, compression_mode,
43
+							conteneur_class=pleine_largeur,
44
+							defaut=all_whitespace_not_newlines,
45
+							cacher_option_intro=oui,
46
+							explication=<:htmlminifier:compression_mode_explication:>,
47
+							datas=#ARRAY{
48
+								none, <:htmlminifier:compression_mode_none:>,
49
+								all_whitespace_not_newlines, <:htmlminifier:compression_mode_all_whitespace_not_newlines:>,
50
+								all_whitespace, <:htmlminifier:compression_mode_all_whitespace:>}
51
+						})]
52
+						
53
+						[(#SAISIE{case, clean_html_comments,
54
+							conteneur_class=pleine_largeur,
55
+							valeur_oui=1,
56
+							defaut=on,
57
+							label_case=<:htmlminifier:clean_html_comments_label_case:>,
58
+							explication=<:htmlminifier:clean_html_comments_explication:>})]
59
+
60
+						[(#SAISIE{case, merge_multiple_head_tags,
61
+							conteneur_class=pleine_largeur,
62
+							valeur_oui=1,
63
+							defaut=on,
64
+							label_case=<:htmlminifier:merge_multiple_head_tags_label_case:>,
65
+							explication=<:htmlminifier:merge_multiple_head_tags_explication:>})]
66
+
67
+						[(#SAISIE{case, merge_multiple_body_tags,
68
+							conteneur_class=pleine_largeur,
69
+							valeur_oui=1,
70
+							defaut=on,
71
+							label_case=<:htmlminifier:merge_multiple_body_tags_label_case:>,
72
+							explication=<:htmlminifier:merge_multiple_body_tags_explication:>})]
73
+
74
+						[(#SAISIE{case, show_signature,
75
+							conteneur_class=pleine_largeur,
76
+							valeur_oui=1,
77
+							defaut=on,
78
+							label_case=<:htmlminifier:show_signature_label_case:>,
79
+							explication=<:htmlminifier:show_signature_explication:>})]
80
+
81
+						[(#SAISIE{textarea, compression_ignored_tags,
82
+							conteneur_class=pleine_largeur,
83
+							label=<:htmlminifier:compression_ignored_tags_label_case:>,
84
+							explication=<:htmlminifier:compression_ignored_tags_explication:>,
85
+							rows=3})]
86
+					</div>
87
+			</div>
88
+			<div id="section-css">
89
+				<div class="editer-groupe">
90
+
91
+					[(#SAISIE{case, clean_css_comments,
92
+						valeur_oui=1,
93
+						conteneur_class= pleine_largeur parent,
94
+						defaut=on,
95
+						label_case=<:htmlminifier:clean_css_comments_label_case:>,
96
+						explication=<:htmlminifier:clean_css_comments_explication:>})]
97
+
98
+					[(#REM) sub-setting de clean_css_comments ]	
99
+					[(#SAISIE{case, remove_comments_with_cdata_tags_css,
100
+						valeur_oui=1,
101
+						defaut="",
102
+						conteneur_class=enfant,
103
+						label_case=<:htmlminifier:remove_comments_with_cdata_tags_css_label_case:>,
104
+						explication=<:htmlminifier:remove_comments_with_cdata_tags_css_explication:>})]
105
+
106
+					[(#SAISIE{case, shift_link_tags_to_head,
107
+						valeur_oui=1,
108
+						conteneur_class= pleine_largeur parent,
109
+						defaut=on,
110
+						label_case=<:htmlminifier:shift_link_tags_to_head_label_case:>,
111
+						explication=<:htmlminifier:shift_link_tags_to_head_explication:>})]
112
+
113
+					[(#REM) sub-setting de shift_link_tags_to_head ]	
114
+					[(#SAISIE{case, ignore_link_schema_tags,
115
+						valeur_oui=1,
116
+						defaut=on,
117
+						conteneur_class=enfant,
118
+						label_case=<:htmlminifier:ignore_link_schema_tags_label_case:>,
119
+						explication=<:htmlminifier:ignore_link_schema_tags_explication:>})]
120
+
121
+					[(#SAISIE{case, shift_meta_tags_to_head,
122
+						valeur_oui=1,
123
+						conteneur_class= pleine_largeur parent,
124
+						defaut=on,
125
+						label_case=<:htmlminifier:shift_meta_tags_to_head_label_case:>,
126
+						explication=<:htmlminifier:shift_meta_tags_to_head_explication:>})]
127
+
128
+					[(#REM) sub-setting de shift_meta_tags_to_head ]
129
+					[(#SAISIE{case, ignore_meta_schema_tags,
130
+						valeur_oui=1,
131
+						defaut=on,
132
+						conteneur_class=enfant,
133
+						label_case=<:htmlminifier:ignore_meta_schema_tags_label_case:>,
134
+						explication=<:htmlminifier:ignore_meta_schema_tags_explication:>})]
135
+
136
+					[(#SAISIE{case, shift_style_tags_to_head,
137
+						valeur_oui=1,
138
+						conteneur_class= pleine_largeur parent,
139
+						defaut=on,
140
+						label_case=<:htmlminifier:shift_style_tags_to_head_label_case:>,
141
+						explication=<:htmlminifier:shift_style_tags_to_head_explication:>})]
142
+
143
+					[(#REM) defaut="", Only works if shift_style_tags_to_head is true.]
144
+					[(#SAISIE{case, combine_style_tags,
145
+						valeur_oui=1,
146
+						conteneur_class=enfant,
147
+						defaut="",
148
+						label_case=<:htmlminifier:combine_style_tags_label_case:>,
149
+						explication=<:htmlminifier:combine_style_tags_explication:>})]
150
+
151
+				</div>
152
+			</div>
153
+			<div id="section-javascript">
154
+				<div class="editer-groupe">
155
+
156
+					[(#SAISIE{case, clean_js_comments,
157
+						valeur_oui=1,
158
+						conteneur_class= pleine_largeur parent,
159
+						defaut=on,
160
+						label_case=<:htmlminifier:clean_js_comments_label_case:>,
161
+						explication=<:htmlminifier:clean_js_comments_explication:>})]
162
+
163
+					[(#SAISIE{case, remove_comments_with_cdata_tags_js,
164
+						valeur_oui=1,
165
+						conteneur_class=enfant,
166
+						defaut="",
167
+						label_case=<:htmlminifier:remove_comments_with_cdata_tags_js_label_case:>,
168
+						explication=<:htmlminifier:remove_comments_with_cdata_tags_js_explication:>})]
169
+					
170
+
171
+					[(#SAISIE{case, shift_script_tags_to_bottom,
172
+						valeur_oui=1,
173
+						conteneur_class= pleine_largeur parent,
174
+						defaut="",
175
+						label_case=<:htmlminifier:shift_script_tags_to_bottom_label_case:>,
176
+						explication=<:htmlminifier:shift_script_tags_to_bottom_explication:>})]
177
+
178
+					[(#SAISIE{case, combine_javascript_in_script_tags,
179
+						valeur_oui=1,
180
+						conteneur_class=enfant,
181
+						defaut="",
182
+						label_case=<:htmlminifier:combine_javascript_in_script_tags_label_case:>,
183
+						explication=<:htmlminifier:combine_javascript_in_script_tags_explication:>})]
184
+					
185
+					[(#SAISIE{case, ignore_async_and_defer_tags,
186
+						valeur_oui=1,
187
+						conteneur_class=enfant,
188
+						defaut="",
189
+						label_case=<:htmlminifier:ignore_async_and_defer_tags_label_case:>,
190
+						explication=<:htmlminifier:ignore_async_and_defer_tags_explication:>})]
191
+				</div>
192
+			</div>
193
+		</div>
194
+
195
+		<p class="boutons clearfix">
196
+			<span class="image_loading">&nbsp;</span>
197
+			<input type="submit" class="submit" name="valider" value="<:bouton_enregistrer:>" />
198
+		</p>
199
+
200
+	</div>
201
+	</form>
202
+	<script type="text/javascript">
203
+		$('.parent').each(function(){
204
+			var parent = $(this);
205
+			var selection = $(this).find('input:checkbox');
206
+			selection.on("change rightnow", function(){
207
+				if(selection.is(':checked')) {
208
+					parent
209
+					.nextUntil('.parent')
210
+					.show("normal");
211
+				}else{
212
+					parent
213
+					.nextUntil('.parent')
214
+					.hide();
215
+				}
216
+			}).triggerHandler("rightnow");
217
+		});
218
+
219
+		$(function() {
220
+			$(".tabs").tabs({
221
+				create: function (event, ui) {
222
+					var scrollTop = $(window).scrollTop();
223
+					window.location.hash = ui.panel.attr('id');
224
+					$(window).scrollTop(scrollTop);
225
+				},
226
+				activate: function (event, ui) {
227
+					var scrollTop = $(window).scrollTop();
228
+					window.location.hash = ui.newPanel.attr('id');
229
+					$(window).scrollTop(scrollTop);
230
+				}
231
+			});
232
+		});
233
+	</script>
234
+</div>

+ 122
- 0
formulaires/configurer_htmlminifier.php View File

@@ -0,0 +1,122 @@
1
+<?php
2
+
3
+if (!defined('_ECRIRE_INC_VERSION')) {
4
+	return;
5
+}
6
+
7
+
8
+function formulaires_configurer_htmlminifier_charger_dist() {
9
+
10
+    $valeurs = array();
11
+    $est_valide = _request('valider');
12
+
13
+    if(is_null($est_valide)){
14
+
15
+        $valeurs = lire_config('htmlminifier', array());
16
+
17
+        if(empty($valeurs)) {
18
+            $valeurs = HTMLMinifier::get_presets('super_safe');
19
+        }
20
+
21
+        $valeurs = applatir_config($valeurs);
22
+
23
+    }
24
+    else {
25
+
26
+        $valeurs = array(
27
+            'compression_mode' => _request('compression_mode'),
28
+            'clean_html_comments' => _request('clean_html_comments'),
29
+            'merge_multiple_head_tags' => _request('merge_multiple_head_tags'),
30
+            'merge_multiple_body_tags' => _request('merge_multiple_body_tags'),
31
+            'show_signature' => _request('show_signature'),
32
+
33
+            'clean_css_comments' => _request('clean_css_comments'),
34
+            'remove_comments_with_cdata_tags_css' => _request('remove_comments_with_cdata_tags_css'),
35
+            'shift_link_tags_to_head' => _request('shift_link_tags_to_head'),
36
+            'ignore_link_schema_tags' => _request('ignore_link_schema_tags'),
37
+            'shift_meta_tags_to_head' => _request('shift_meta_tags_to_head'),
38
+            'ignore_meta_schema_tags' => _request('ignore_meta_schema_tags'),
39
+            'shift_style_tags_to_head' => _request('shift_style_tags_to_head'),
40
+            'combine_style_tags' => _request('combine_style_tags'),
41
+
42
+            'clean_js_comments' => _request('clean_js_comments'),
43
+            'remove_comments_with_cdata_tags_js' => _request('remove_comments_with_cdata_tags_js'),
44
+            'compression_ignored_tags' => _request('compression_ignored_tags'),
45
+            'shift_script_tags_to_bottom' => _request('shift_script_tags_to_bottom'),
46
+            'combine_javascript_in_script_tags' => _request('combine_javascript_in_script_tags'),
47
+            'ignore_async_and_defer_tags' => _request('ignore_async_and_defer_tags'),
48
+        );
49
+
50
+    }
51
+
52
+    if(_request('message_ok_config', $_GET) == "oui") {
53
+        $valeurs['message_ok_config'] = _T('config_info_enregistree');
54
+    }
55
+
56
+    return $valeurs;
57
+    
58
+}
59
+
60
+
61
+function formulaires_configurer_htmlminifier_verifier_dist() {
62
+
63
+	$erreurs = array();
64
+    return $erreurs;
65
+    
66
+}
67
+
68
+
69
+function formulaires_configurer_htmlminifier_traiter_dist() {
70
+
71
+    $res = array();
72
+
73
+    $compression_ignored_tags = array();
74
+    $ignored_tags = _request('compression_ignored_tags');
75
+    $elements = explode(",", $ignored_tags);
76
+    foreach ($elements as $key => $element) {
77
+        if(!empty(trim($element)))
78
+            $compression_ignored_tags[] = trim($element);
79
+    }
80
+
81
+    $valeurs = array(
82
+        'compression_mode' => boolval(_request('compression_mode')),
83
+        'clean_html_comments' => boolval(_request('clean_html_comments')),
84
+        'merge_multiple_head_tags' => boolval(_request('merge_multiple_head_tags')),
85
+        'merge_multiple_body_tags' => boolval(_request('merge_multiple_body_tags')),
86
+        'show_signature' => boolval(_request('show_signature')),
87
+
88
+        'clean_css_comments' => boolval(_request('clean_css_comments')) ? array('remove_comments_with_cdata_tags_css' => boolval(_request('remove_comments_with_cdata_tags_css'))) : false,
89
+        'shift_link_tags_to_head' => boolval(_request('shift_link_tags_to_head')) ? array('ignore_link_schema_tags' => boolval(_request('ignore_link_schema_tags'))) : false,
90
+        'shift_meta_tags_to_head' => boolval(_request('shift_meta_tags_to_head')) ? array('ignore_meta_schema_tags' => boolval(_request('ignore_meta_schema_tags'))) : false,
91
+        'shift_style_tags_to_head' => boolval(_request('shift_style_tags_to_head')) ? array('combine_style_tags' => boolval(_request('combine_style_tags'))) : false,
92
+
93
+        'clean_js_comments' => boolval(_request('clean_js_comments')) ? array('remove_comments_with_cdata_tags_js' => boolval(_request('remove_comments_with_cdata_tags_js'))) : false,
94
+        'compression_ignored_tags' => $compression_ignored_tags,
95
+        'shift_script_tags_to_bottom' => boolval(_request('shift_script_tags_to_bottom')) ? array('combine_javascript_in_script_tags' => boolval(_request('combine_javascript_in_script_tags')), 'ignore_async_and_defer_tags' => boolval(_request('ignore_async_and_defer_tags'))) : false
96
+    );
97
+
98
+    ecrire_config('htmlminifier', $valeurs);
99
+
100
+    $res['message_ok'] = _T('config_info_enregistree');
101
+
102
+	return $res;
103
+}
104
+
105
+function applatir_config(array $array) {
106
+
107
+    $return = array();
108
+
109
+    foreach ($array as $key => $value) {
110
+        if($key == 'compression_ignored_tags') {
111
+            $return[$key] = implode(", ", $value);
112
+        }
113
+        else if (is_array($value)){
114
+            $return[$key] = "1";
115
+            $return = array_merge($return, applatir_config($value));
116
+        } else {
117
+            $return[$key] = $value;
118
+        }
119
+    }
120
+
121
+    return $return;
122
+}

+ 61
- 0
htmlminifier_administrations.php View File

@@ -0,0 +1,61 @@
1
+<?php
2
+/**
3
+ * Fichier gérant l'installation et désinstallation du plugin HTML Minifier
4
+ *
5
+ * @plugin     HTML Minifier
6
+ * @copyright  2018
7
+ * @author     ladnet
8
+ * @licence    GNU/GPL
9
+ * @package    SPIP\HTMLMinifier\Installation
10
+ */
11
+
12
+if (!defined('_ECRIRE_INC_VERSION')) {
13
+	return;
14
+}
15
+
16
+/**
17
+ * Fonction d'installation et de mise à jour du plugin HTML Minifier.
18
+ *
19
+ * @param string $nom_meta_base_version
20
+ *     Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
21
+ * @param string $version_cible
22
+ *     Version du schéma de données dans ce plugin (déclaré dans paquet.xml)
23
+ * @return void
24
+**/
25
+function htmlminifier_upgrade($nom_meta_base_version, $version_cible) {
26
+	$maj = array();
27
+
28
+	// 1ère installation : passe la config en opt-in
29
+	$maj['create'] = array(
30
+		array('htmlminifier_maj_create'),
31
+	);
32
+	
33
+	include_spip('base/upgrade');
34
+	maj_plugin($nom_meta_base_version, $version_cible, $maj);
35
+}
36
+
37
+
38
+/**
39
+ * Fonction de désinstallation du plugin HTML Minifier.
40
+ *
41
+ * @param string $nom_meta_base_version
42
+ *     Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
43
+ * @return void
44
+**/
45
+function htmlminifier_vider_tables($nom_meta_base_version) {
46
+	effacer_meta($nom_meta_base_version);
47
+}
48
+
49
+
50
+/**
51
+ * Fonction privée pour la mise à jour create (1ère installation)
52
+ * On passe la config des protocoles en opt-in
53
+ *
54
+ * @return Void
55
+ */
56
+function htmlminifier_maj_create(){
57
+	include_spip('inc/config');
58
+	include_spip('class/HTMLMinifier');
59
+	$config = HTMLMinifier::get_presets('super_safe');
60
+	ecrire_config('htmlminifier', $config);
61
+}

+ 16
- 0
htmlminifier_options.php View File

@@ -0,0 +1,16 @@
1
+<?php
2
+/**
3
+ * Options au chargement du plugin HTML Minifier
4
+ *
5
+ * @plugin     HTML Minifier
6
+ * @copyright  2018
7
+ * @author     ladnet
8
+ * @licence    GNU/GPL
9
+ * @package    SPIP\Htmlminifier\Options
10
+ */
11
+
12
+if (!defined('_ECRIRE_INC_VERSION')) {
13
+	return;
14
+}
15
+
16
+include_spip('class/HTMLMinifier');

+ 32
- 0
htmlminifier_pipelines.php View File

@@ -0,0 +1,32 @@
1
+<?php
2
+/**
3
+ * Utilisations de pipelines par HTML Minifier
4
+ *
5
+ * @plugin     HTML Minifier
6
+ * @copyright  2018
7
+ * @author     ladnet
8
+ * @licence    GNU/GPL
9
+ * @package    SPIP\Htmlminifier\Pipelines
10
+ */
11
+
12
+if (!defined('_ECRIRE_INC_VERSION')) {
13
+	return;
14
+}
15
+
16
+function htmlminifier_affichage_final($page) {   
17
+	
18
+	if (!$GLOBALS['html']) return $page;
19
+
20
+	$config_hmtlminifier = lire_config('htmlminifier', array());
21
+
22
+	if (empty($config_hmtlminifier)) {
23
+		$config_hmtlminifier = HTMLMinifier::get_presets('super_safe');
24
+	}
25
+
26
+	$page = HTMLMinifier::process(
27
+		$page,
28
+		$config_hmtlminifier
29
+	);  
30
+	
31
+    return $page;
32
+}

+ 68
- 0
lang/htmlminifier_en.php View File

@@ -0,0 +1,68 @@
1
+<?php
2
+if (!defined('_ECRIRE_INC_VERSION')) {
3
+	return;
4
+}
5
+
6
+$GLOBALS[$GLOBALS['idx_lang']] = array(
7
+
8
+	// C
9
+	'cfg_titre_parametrages' => 'Paramétrages',
10
+
11
+	// H
12
+	'htmlminifier_titre' => 'HTML Minifier',
13
+
14
+	// T
15
+	'titre_page_configurer_htmlminifier' => 'Configurer le plugin HTML Minifier',
16
+
17
+	// General		
18
+	'clean_html_comments_label_case' => 'Removes HTML comments',
19
+	'clean_html_comments_explication' => 'Removes all HTML comments (except those that contain conditional comments',
20
+
21
+	'show_signature_label_case' => 'Show signature in source,',
22
+	'show_signature_explication' => 'Adds a comment at the end of the minified output saying the source was minified by HTML Minifier',
23
+
24
+		
25
+	'compression_mode_explication' => 'Compression Mode',
26
+	'compression_mode_none' => 'do not remove whitespace',
27
+	'compression_mode_all_whitespace_not_newlines' => 'remove extra whitespace but keep newlines',
28
+	'compression_mode_all_whitespace' => 'removeall whitespaces',
29
+	
30
+	// CSS				
31
+	'clean_css_comments_label_case' => 'Removes comments in &lt;style&gt; tags',
32
+	'clean_css_comments_explication' => 'Removes all comments inside &lt;style&gt; blocks',
33
+
34
+	'shift_link_tags_to_head_label_case' => 'Shift all &lt;link&gt; stylesheet tags into &lt;head&gt;',
35
+	'shift_link_tags_to_head_explication' => 'Convenience option for pages that are built dynamically in the backend. Moves any &lt;link rel="stylesheet"&gt; tags outside of &lt;head&gt; into &lt;head&gt;',
36
+
37
+	'shift_style_tags_to_head_label_case' => 'Shift all &lt;style&gt; tags into &lt;head&gt;',
38
+	'shift_style_tags_to_head_explication' => 'Convenience option for pages that are built dynamically in the backend. Moves any &lt;style&gt; tags outside of &lt;head&gt; into &lt;head&gt;',
39
+
40
+	'combine_style_tags_label_case' => 'Combines CSS in &lt;style&gt; tags',
41
+	'combine_style_tags_explication' => 'Combines all of the on-page CSS inside separate &lt;style&gt; tags into one. Will not combine tags with different media attributes.',
42
+
43
+	// Javascript		
44
+	'clean_js_comments_label_case' => 'Remove Javascript comments,',
45
+	'clean_js_comments_explication' => 'Removes all comments inside &lt;script&gt; blocks.',
46
+
47
+	'remove_comments_with_cdata_tags_label_case' => 'Remove comments with CDATA tags,',
48
+	'remove_comments_with_cdata_tags_explication' => 'Only works if clean_js_comments is true. In XHTML content inside &lt;script&gt; tags are sometimes encapsulated in commented CDATA blocks to make them XML-compatible. By default these commented CDATA tags are preserved for document integrity.',
49
+
50
+	'compression_ignored_tags_label_case' => 'Compression ignored tags',
51
+	'compression_ignored_tags_explication' => 'Array containing a list of all the tags (in lowercase) to skip compression for. This is to prevent HTML Minifier from messing with the behaviour of tags like &lt;textarea&gt; and &lt;pre&gt;, where removed whitespace can affect displayed content.',
52
+
53
+	'shift_script_tags_to_bottom_label_case' => 'Shift all &lt;script&gt; tags to the end of &lt;body&gt;,',
54
+	'shift_script_tags_to_bottom_explication' => 'Convenience option for pages that are built dynamically in the backend. Moves all &lt;script&gt; tags to the end of &lt;body&gt;.',
55
+
56
+	'combine_javascript_in_script_tags_label_case' => 'Combine Javascript in &lt;script&gt; tags,',
57
+	'combine_javascript_in_script_tags_explication' => 'Only works if shift_script_tags_to_bottom is true. Combines all of the on-page Javascript inside separate &lt;style&gt; tags into one. Might break certain pages.',
58
+
59
+	'section_general' => 'Général options',
60
+	'section_css' => 'CSS Options',
61
+	'section_javascript' => 'Javascript Options',
62
+
63
+	'config_super_safe' => 'super safe',
64
+	'config_safe' => 'safe',
65
+	'config_moderate' => 'moderate',
66
+	'config_fully_optimised' => 'fully optimised',
67
+	'config_label' => 'Apply compression and optimization options',
68
+);

+ 89
- 0
lang/htmlminifier_fr.php View File

@@ -0,0 +1,89 @@
1
+<?php
2
+if (!defined('_ECRIRE_INC_VERSION')) {
3
+	return;
4
+}
5
+
6
+$GLOBALS[$GLOBALS['idx_lang']] = array(
7
+
8
+	// C
9
+	'cfg_titre_parametrages' => 'Paramétrages',
10
+
11
+	// H
12
+	'htmlminifier_titre' => 'HTML Minifier',
13
+
14
+	// T
15
+	'titre_page_configurer_htmlminifier' => 'Configurer le plugin HTML Minifier',
16
+
17
+	// Général
18
+	'clean_html_comments_label_case' => 'Supprimer les commentaires HTML',
19
+	'clean_html_comments_explication' => 'Supprime tous les commentaires HTML, sauf les commentaires conditionnels. Préserve également &lt;!-- extra --&gt; et  &lt;!-- keepme: --&gt;',
20
+
21
+	'show_signature_label_case' => 'Afficher la signature dans la source',
22
+	'show_signature_explication' => 'Ajoute un commentaire en fin de page indiquant que la source a été minifiée par HTML Minifier',
23
+
24
+	'compression_mode_explication' => 'Mode de compression',
25
+	'compression_mode_none' => 'aucune',
26
+	'compression_mode_all_whitespace_not_newlines' => 'supprimer les espaces mais garder les retours à la ligne',
27
+	'compression_mode_all_whitespace' => 'supprimer les espaces et les retours à la ligne',
28
+
29
+	'merge_multiple_head_tags_label_case' => 'Fusionner les balises &lt;head&gt; multiples',
30
+	'merge_multiple_head_tags_explication' => 'S\'il y a plusieurs balises &lt;head&gt; dans le document, leur contenu sera fusionné dans la première.',
31
+
32
+	'merge_multiple_body_tags_label_case' => 'Fusionner les balises &lt;body&gt; multiples',
33
+	'merge_multiple_body_tags_explication' => 'S\'il y a plusieurs balises &lt;body&gt; dans le document, leur contenu sera fusionné dans la première.',
34
+
35
+	// CSS
36
+	'clean_css_comments_label_case' => 'Supprimer les commentaires des balises &lt;style&gt;',
37
+	'clean_css_comments_explication' => 'Supprime tous les commentaires situés dans les balises &lt;style&gt;',
38
+
39
+	'remove_comments_with_cdata_tags_css_label_case' => 'Supprimer les commentaires CDATA',
40
+	'remove_comments_with_cdata_tags_css_explication' => 'en XHTML, les contenus à l\'intérieur des balises de &lt;style&gt; sont parfois encapsulés dans des commentaires CDATA pour la compatibilité XML. Si cette option est activée, les commentaires CDATA sont supprimés.',
41
+
42
+	'shift_link_tags_to_head_label_case' => 'Déplacer les balises &lt;link&gt; stylesheet dans le &lt;head&gt;',
43
+	'shift_link_tags_to_head_explication' => 'Déplace toutes les balises &lt;link rel = "stylesheet"&gt; situées en dehors du &lt;head&gt; à l\'intérieur',
44
+
45
+	'ignore_link_schema_tags_label_case' => 'Ignorer les balises &lt;link&gt; Schema.org (microdata)',
46
+	'ignore_link_schema_tags_explication' => 'Les balises &lt;link&gt; peuvent aussi être utilisées dans les balises &lt;body&gt; pour spécifier des Microdatas (Schema.org). A juste titre, ces balises n\'appartiennent pas au &lt;head&gt;, elles sont donc ignorées par défaut.',
47
+
48
+	'shift_meta_tags_to_head_label_case' => 'Déplacer les balises &lt;meta&gt; dans le &lt;head&gt;',
49
+	'shift_meta_tags_to_head_explication' => 'Option de commodité pour les pages qui sont construites dynamiquement dans le back-end. Déplace n\'importe quelle balise situées en dehors du &lt;head&gt; à l\'intérieur.',
50
+
51
+	'ignore_meta_schema_tags_label_case' => 'Ignorer les balises &lt;meta&gt; Schema.org (microdata)',
52
+	'ignore_meta_schema_tags_explication' => '&lt;meta&gt; les balises peuvent aussi être utilisées dans les balises &lt;body&gt; pour spécifier les microdonnées Schema.org. A juste titre, ces balises n\'appartiennent pas à &lt;head&gt;, elles sont donc ignorées par défaut.',
53
+
54
+	'shift_style_tags_to_head_label_case' => 'Déplacer les balises &lt;style&gt; dans le &lt;head&gt;',
55
+	'shift_style_tags_to_head_explication' => 'Déplace toutes les balises &lt;style&gt; situées en dehors du &lt;head&gt; à l\'intérieur',
56
+
57
+	'combine_style_tags_label_case' => 'Combiner les CSS inline dans une seule balise &lt;style&gt;',
58
+	'combine_style_tags_explication' => 'Combine les CSS inline de la page dans une seule balise &lt;style&gt;. Ne combinera pas les balises ayant des attributs media différents.',
59
+
60
+	// Javascript
61
+	'clean_js_comments_label_case' => 'Supprimer les commentaires Javascript',
62
+	'clean_js_comments_explication' => 'Supprime tous les commentaires situés dans les balises &lt;script&gt;.',
63
+
64
+	'remove_comments_with_cdata_tags_js_label_case' => 'Supprimer les commentaires CDATA',
65
+	'remove_comments_with_cdata_tags_js_explication' => 'en XHTML, les contenus à l\'intérieur des balises de &lt;script&gt; sont parfois encapsulés dans des commentaires CDATA pour la compatibilité XML. Si cette option est activée, les commentaires CDATA sont supprimés.',
66
+
67
+	'compression_ignored_tags_label_case' => 'Balises ignorées par la compression',
68
+	'compression_ignored_tags_explication' => 'Liste des balises (en minuscules) pour lesquelles ignorer la compression. Ceci afin d\'empêcher HTML Minifier d\'interférer avec le comportement des balises comme &lt;textarea&gt; et &lt;pre&gt;, où les espaces blancs supprimés peuvent affecter le contenu affiché.',
69
+
70
+	'shift_script_tags_to_bottom_label_case' => 'Déplacer toutes les balises &lt;script&gt; à la fin du &lt;body&gt;',
71
+	'shift_script_tags_to_bottom_explication' => 'Déplace toutes les balises &lt;script&gt; à la fin de de la page html',
72
+
73
+	'combine_javascript_in_script_tags_label_case' => 'Combiner les Javascripts inline dans une seule balise &lt;script&gt;',
74
+	'combine_javascript_in_script_tags_explication' => 'Combine les Javascripts inline de la page dans une seule balise &lt;script&gt;. Attention peut casser certaines pages.',
75
+
76
+	'ignore_async_and_defer_tags_label_case' => 'Ne pas déplacer les balises &lt;script&gt; ayant un attribut async ou defer',
77
+	'ignore_async_and_defer_tags_explication' => 'Les balises &lt;script&gt; qui ont les attributs async ou defer ne seront pas déplacées vers le bas de la page. Il est recommandé d\'activer ce paramètre, car ces balises ne sont pas bloquantes et n\'ont donc pas besoin d\'être déplacées.',
78
+
79
+	// Autres
80
+	'section_general' => 'Options générales',
81
+	'section_css' => 'Options CSS',
82
+	'section_javascript' => 'Options Javascript',
83
+
84
+	'config_super_safe' => 'ultra-sûres',
85
+	'config_safe' => 'sûres',
86
+	'config_moderate' => 'modérées',
87
+	'config_fully_optimised' => 'optimisées au maximum',
88
+	'config_label' => 'Appliquer les options de compression et d’optimisation',
89
+);

+ 14
- 0
lang/paquet-htmlminifier_fr.php View File

@@ -0,0 +1,14 @@
1
+<?php
2
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
3
+
4
+if (!defined('_ECRIRE_INC_VERSION')) {
5
+	return;
6
+}
7
+
8
+$GLOBALS[$GLOBALS['idx_lang']] = array(
9
+
10
+	// H
11
+	'htmlminifier_description' => 'Minifier les pages HTML servies par SPIP.',
12
+	'htmlminifier_nom' => 'HTML Minifier',
13
+	'htmlminifier_slogan' => '',
14
+);

+ 22
- 0
paquet.xml View File

@@ -0,0 +1,22 @@
1
+<paquet
2
+	prefix="htmlminifier"
3
+	categorie="performance"
4
+	version="1.1.0"
5
+	schema="1.0.0"
6
+	etat="dev"
7
+	compatibilite="[3.1.0;3.2.*]"
8
+	logo="prive/themes/spip/images/htmlminifier-64.png"
9
+	documentation=""
10
+>
11
+
12
+	<nom>HTML Minifier</nom>
13
+	
14
+	<auteur>ladnet</auteur>
15
+
16
+	<licence>GNU/GPL</licence>
17
+
18
+	<necessite nom="saisies" compatibilite="[2.18.0;]" />
19
+
20
+	<pipeline nom="affichage_final" inclure="htmlminifier_pipelines.php" />
21
+
22
+</paquet>

+ 7
- 0
prive/squelettes/contenu/configurer_htmlminifier.html View File

@@ -0,0 +1,7 @@
1
+[(#AUTORISER{configurer,_htmlminifier}|sinon_interdire_acces)]
2
+
3
+<h1 class="grostitre"><:htmlminifier:titre_page_configurer_htmlminifier:></h1>
4
+
5
+<div class="ajax">
6
+	#FORMULAIRE_CONFIGURER_HTMLMINIFIER
7
+</div>

BIN
prive/themes/spip/images/htmlminifier-128.png View File


BIN
prive/themes/spip/images/htmlminifier-32.png View File


BIN
prive/themes/spip/images/htmlminifier-64.png View File


Powered by TurnKey Linux.