Version Notes
* Small bug fixed
Download this release
Release Info
Developer | Apptrian |
Extension | Apptrian_Minify_HTML_CSS_JS |
Version | 2.0.1 |
Comparing to | |
See all releases |
Code changes from version 2.0.0 to 2.0.1
- app/code/community/Apptrian/Minify/etc/config.xml +1 -1
- lib/Apptrian/Minify/Css.php +0 -2
- lib/Apptrian/Minify/Html.php +0 -2
- lib/Apptrian/Minify/Js.php +41 -24
- package.xml +4 -8
app/code/community/Apptrian/Minify/etc/config.xml
CHANGED
@@ -11,7 +11,7 @@
|
|
11 |
<config>
|
12 |
<modules>
|
13 |
<Apptrian_Minify>
|
14 |
-
<version>2.0.
|
15 |
</Apptrian_Minify>
|
16 |
</modules>
|
17 |
<global>
|
11 |
<config>
|
12 |
<modules>
|
13 |
<Apptrian_Minify>
|
14 |
+
<version>2.0.1</version>
|
15 |
</Apptrian_Minify>
|
16 |
</modules>
|
17 |
<global>
|
lib/Apptrian/Minify/Css.php
CHANGED
@@ -7,8 +7,6 @@
|
|
7 |
* @license http://opensource.org/licenses/osl-3.0.php Open Software License
|
8 |
*/
|
9 |
|
10 |
-
// @codingStandardsIgnoreFile
|
11 |
-
|
12 |
/**
|
13 |
* This class is taken from tubalmartin/cssmin library and modified into Magento
|
14 |
* compatible class. Some additional features are added to it for seamless
|
7 |
* @license http://opensource.org/licenses/osl-3.0.php Open Software License
|
8 |
*/
|
9 |
|
|
|
|
|
10 |
/**
|
11 |
* This class is taken from tubalmartin/cssmin library and modified into Magento
|
12 |
* compatible class. Some additional features are added to it for seamless
|
lib/Apptrian/Minify/Html.php
CHANGED
@@ -7,8 +7,6 @@
|
|
7 |
* @license http://opensource.org/licenses/osl-3.0.php Open Software License
|
8 |
*/
|
9 |
|
10 |
-
// @codingStandardsIgnoreFile
|
11 |
-
|
12 |
/**
|
13 |
* This class is taken from mrclay/minify library and modified into Magento
|
14 |
* compatible class. Some additional features are added to it for seamless
|
7 |
* @license http://opensource.org/licenses/osl-3.0.php Open Software License
|
8 |
*/
|
9 |
|
|
|
|
|
10 |
/**
|
11 |
* This class is taken from mrclay/minify library and modified into Magento
|
12 |
* compatible class. Some additional features are added to it for seamless
|
lib/Apptrian/Minify/Js.php
CHANGED
@@ -7,8 +7,6 @@
|
|
7 |
* @license http://opensource.org/licenses/osl-3.0.php Open Software License
|
8 |
*/
|
9 |
|
10 |
-
// @codingStandardsIgnoreFile
|
11 |
-
|
12 |
/**
|
13 |
* This class is taken from tedivm/jshrink library and modified into Magento
|
14 |
* compatible class. Some additional features are added to it for seamless
|
@@ -46,6 +44,11 @@
|
|
46 |
|
47 |
class Apptrian_Minify_Js
|
48 |
{
|
|
|
|
|
|
|
|
|
|
|
49 |
/**
|
50 |
* The input javascript to be minified.
|
51 |
*
|
@@ -106,6 +109,22 @@ class Apptrian_Minify_Js
|
|
106 |
*/
|
107 |
public $locks = array();
|
108 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
109 |
/**
|
110 |
* Takes a string containing javascript and removes unneeded characters in
|
111 |
* order to shrink the code without altering it's functionality.
|
@@ -118,15 +137,14 @@ class Apptrian_Minify_Js
|
|
118 |
public static function minify($js, $options = array())
|
119 |
{
|
120 |
try {
|
121 |
-
ob_start();
|
122 |
-
|
123 |
$jshrink = new Apptrian_Minify_Js();
|
124 |
$js = $jshrink->lock($js);
|
125 |
$jshrink->minifyDirectToOutput($js, $options);
|
126 |
|
127 |
// Sometimes there's a leading new line, so we trim that out here.
|
128 |
-
$js = ltrim(
|
129 |
$js = $jshrink->unlock($js);
|
|
|
130 |
unset($jshrink);
|
131 |
|
132 |
return $js;
|
@@ -135,11 +153,10 @@ class Apptrian_Minify_Js
|
|
135 |
// Since the breakdownScript function probably wasn't finished
|
136 |
// we clean it out before discarding it.
|
137 |
$jshrink->clean();
|
|
|
138 |
unset($jshrink);
|
139 |
}
|
140 |
|
141 |
-
// without this call things get weird, with partially outputted js.
|
142 |
-
ob_end_clean();
|
143 |
throw $e;
|
144 |
}
|
145 |
}
|
@@ -196,7 +213,7 @@ class Apptrian_Minify_Js
|
|
196 |
// if the next line is something that can't stand alone
|
197 |
// preserve the newline
|
198 |
if (strpos('(-+{[@', $this->b) !== false) {
|
199 |
-
|
200 |
$this->saveString();
|
201 |
break;
|
202 |
}
|
@@ -212,7 +229,7 @@ class Apptrian_Minify_Js
|
|
212 |
|
213 |
case ' ':
|
214 |
if (static::isAlphaNumeric($this->b)) {
|
215 |
-
|
216 |
}
|
217 |
|
218 |
$this->saveString();
|
@@ -222,12 +239,12 @@ class Apptrian_Minify_Js
|
|
222 |
switch ($this->b) {
|
223 |
case "\n":
|
224 |
if (strpos('}])+-"\'', $this->a) !== false) {
|
225 |
-
|
226 |
$this->saveString();
|
227 |
break;
|
228 |
} else {
|
229 |
if (static::isAlphaNumeric($this->a)) {
|
230 |
-
|
231 |
$this->saveString();
|
232 |
}
|
233 |
}
|
@@ -248,7 +265,7 @@ class Apptrian_Minify_Js
|
|
248 |
continue;
|
249 |
}
|
250 |
|
251 |
-
|
252 |
$this->saveString();
|
253 |
break;
|
254 |
}
|
@@ -394,21 +411,21 @@ class Apptrian_Minify_Js
|
|
394 |
&& $thirdCommentString === '!')
|
395 |
|| ($thirdCommentString === '@') ) {
|
396 |
// If conditional comments or flagged comments are not the first
|
397 |
-
// thing in the script we need to
|
398 |
// a space before moving on.
|
399 |
if ($startIndex > 0) {
|
400 |
-
|
401 |
$this->a = " ";
|
402 |
|
403 |
// If the comment started on a new line we let it stay on
|
404 |
// the new line
|
405 |
if ($this->input[($startIndex - 1)] === "\n") {
|
406 |
-
|
407 |
}
|
408 |
}
|
409 |
|
410 |
$endPoint = ($this->index - 1) - $startIndex;
|
411 |
-
|
412 |
|
413 |
return $char;
|
414 |
}
|
@@ -477,8 +494,8 @@ class Apptrian_Minify_Js
|
|
477 |
// String type is the quote used, " or '
|
478 |
$stringType = $this->a;
|
479 |
|
480 |
-
//
|
481 |
-
|
482 |
|
483 |
// Loop until the string is done
|
484 |
while (true) {
|
@@ -516,14 +533,14 @@ class Apptrian_Minify_Js
|
|
516 |
break;
|
517 |
}
|
518 |
|
519 |
-
//
|
520 |
-
|
521 |
break;
|
522 |
|
523 |
// Since we're not dealing with any special cases we simply
|
524 |
// output the character and continue our loop.
|
525 |
default:
|
526 |
-
|
527 |
}
|
528 |
}
|
529 |
}
|
@@ -536,7 +553,7 @@ class Apptrian_Minify_Js
|
|
536 |
*/
|
537 |
public function saveRegex()
|
538 |
{
|
539 |
-
|
540 |
|
541 |
while (($this->a = $this->getChar()) !== false) {
|
542 |
if ($this->a === '/') {
|
@@ -544,7 +561,7 @@ class Apptrian_Minify_Js
|
|
544 |
}
|
545 |
|
546 |
if ($this->a === '\\') {
|
547 |
-
|
548 |
$this->a = $this->getChar();
|
549 |
}
|
550 |
|
@@ -554,7 +571,7 @@ class Apptrian_Minify_Js
|
|
554 |
);
|
555 |
}
|
556 |
|
557 |
-
|
558 |
}
|
559 |
|
560 |
$this->b = $this->getReal();
|
7 |
* @license http://opensource.org/licenses/osl-3.0.php Open Software License
|
8 |
*/
|
9 |
|
|
|
|
|
10 |
/**
|
11 |
* This class is taken from tedivm/jshrink library and modified into Magento
|
12 |
* compatible class. Some additional features are added to it for seamless
|
44 |
|
45 |
class Apptrian_Minify_Js
|
46 |
{
|
47 |
+
/**
|
48 |
+
* @var string
|
49 |
+
*/
|
50 |
+
public $buffer = '';
|
51 |
+
|
52 |
/**
|
53 |
* The input javascript to be minified.
|
54 |
*
|
109 |
*/
|
110 |
public $locks = array();
|
111 |
|
112 |
+
/**
|
113 |
+
* Accessor method
|
114 |
+
*/
|
115 |
+
public function getBuffer()
|
116 |
+
{
|
117 |
+
return $this->buffer;
|
118 |
+
}
|
119 |
+
|
120 |
+
/**
|
121 |
+
* Empty the baffer.
|
122 |
+
*/
|
123 |
+
public function emptyBuffer()
|
124 |
+
{
|
125 |
+
$this->buffer = '';
|
126 |
+
}
|
127 |
+
|
128 |
/**
|
129 |
* Takes a string containing javascript and removes unneeded characters in
|
130 |
* order to shrink the code without altering it's functionality.
|
137 |
public static function minify($js, $options = array())
|
138 |
{
|
139 |
try {
|
|
|
|
|
140 |
$jshrink = new Apptrian_Minify_Js();
|
141 |
$js = $jshrink->lock($js);
|
142 |
$jshrink->minifyDirectToOutput($js, $options);
|
143 |
|
144 |
// Sometimes there's a leading new line, so we trim that out here.
|
145 |
+
$js = ltrim($jshrink->getBuffer());
|
146 |
$js = $jshrink->unlock($js);
|
147 |
+
$jshrink->emptyBuffer();
|
148 |
unset($jshrink);
|
149 |
|
150 |
return $js;
|
153 |
// Since the breakdownScript function probably wasn't finished
|
154 |
// we clean it out before discarding it.
|
155 |
$jshrink->clean();
|
156 |
+
$jshrink->emptyBuffer();
|
157 |
unset($jshrink);
|
158 |
}
|
159 |
|
|
|
|
|
160 |
throw $e;
|
161 |
}
|
162 |
}
|
213 |
// if the next line is something that can't stand alone
|
214 |
// preserve the newline
|
215 |
if (strpos('(-+{[@', $this->b) !== false) {
|
216 |
+
$this->buffer .= $this->a;
|
217 |
$this->saveString();
|
218 |
break;
|
219 |
}
|
229 |
|
230 |
case ' ':
|
231 |
if (static::isAlphaNumeric($this->b)) {
|
232 |
+
$this->buffer .= $this->a;
|
233 |
}
|
234 |
|
235 |
$this->saveString();
|
239 |
switch ($this->b) {
|
240 |
case "\n":
|
241 |
if (strpos('}])+-"\'', $this->a) !== false) {
|
242 |
+
$this->buffer .= $this->a;
|
243 |
$this->saveString();
|
244 |
break;
|
245 |
} else {
|
246 |
if (static::isAlphaNumeric($this->a)) {
|
247 |
+
$this->buffer .= $this->a;
|
248 |
$this->saveString();
|
249 |
}
|
250 |
}
|
265 |
continue;
|
266 |
}
|
267 |
|
268 |
+
$this->buffer .= $this->a;
|
269 |
$this->saveString();
|
270 |
break;
|
271 |
}
|
411 |
&& $thirdCommentString === '!')
|
412 |
|| ($thirdCommentString === '@') ) {
|
413 |
// If conditional comments or flagged comments are not the first
|
414 |
+
// thing in the script we need to concat a and fill it with
|
415 |
// a space before moving on.
|
416 |
if ($startIndex > 0) {
|
417 |
+
$this->buffer .= $this->a;
|
418 |
$this->a = " ";
|
419 |
|
420 |
// If the comment started on a new line we let it stay on
|
421 |
// the new line
|
422 |
if ($this->input[($startIndex - 1)] === "\n") {
|
423 |
+
$this->buffer .= "\n";
|
424 |
}
|
425 |
}
|
426 |
|
427 |
$endPoint = ($this->index - 1) - $startIndex;
|
428 |
+
$this->buffer .= substr($this->input, $startIndex, $endPoint);
|
429 |
|
430 |
return $char;
|
431 |
}
|
494 |
// String type is the quote used, " or '
|
495 |
$stringType = $this->a;
|
496 |
|
497 |
+
// Concat that starting quote
|
498 |
+
$this->buffer .= $this->a;
|
499 |
|
500 |
// Loop until the string is done
|
501 |
while (true) {
|
533 |
break;
|
534 |
}
|
535 |
|
536 |
+
// Concat the escaped character and restart the loop.
|
537 |
+
$this->buffer .= $this->a . $this->b;
|
538 |
break;
|
539 |
|
540 |
// Since we're not dealing with any special cases we simply
|
541 |
// output the character and continue our loop.
|
542 |
default:
|
543 |
+
$this->buffer .= $this->a;
|
544 |
}
|
545 |
}
|
546 |
}
|
553 |
*/
|
554 |
public function saveRegex()
|
555 |
{
|
556 |
+
$this->buffer .= $this->a . $this->b;
|
557 |
|
558 |
while (($this->a = $this->getChar()) !== false) {
|
559 |
if ($this->a === '/') {
|
561 |
}
|
562 |
|
563 |
if ($this->a === '\\') {
|
564 |
+
$this->buffer .= $this->a;
|
565 |
$this->a = $this->getChar();
|
566 |
}
|
567 |
|
571 |
);
|
572 |
}
|
573 |
|
574 |
+
$this->buffer .= $this->a;
|
575 |
}
|
576 |
|
577 |
$this->b = $this->getReal();
|
package.xml
CHANGED
@@ -1,22 +1,18 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Apptrian_Minify_HTML_CSS_JS</name>
|
4 |
-
<version>2.0.
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://opensource.org/licenses/osl-3.0.php">Open Software License (OSL 3.0)</license>
|
7 |
<channel>community</channel>
|
8 |
<extends/>
|
9 |
<summary>Minify HTML CSS JS including inline CSS/JS and speed up your site. Works with default Magento CSS/JS merger.</summary>
|
10 |
<description>Apptrian Minify HTML CSS JS is a very small and efficient extension. It will minify HTML including inline CSS and JS code. Minification of CSS and JS files is compatible with default Magento CSS and JS file merger. There are no complex setups nor query strings on minified CSS and JS files. Extension is very easy to install and use. Compatible with FPC and Varnish cache extensions. If there is a serious error in some page code that page will not be minified. Extension will log the error and url of the page where this error occurs so developers can track it down and fix the code.</description>
|
11 |
-
<notes>*
|
12 |
-
+ Support for Knockout JavaScript library comments
|
13 |
-
+ Support for script tags of type="text/x-magento-template"
|
14 |
-
+ Logging of errors with url where errors occur
|
15 |
-
+ Compliance with Magento's Extension Quality Program (EQP)</notes>
|
16 |
<authors><author><name>Apptrian</name><user>apptrian</user><email>apptrian@yahoo.com</email></author></authors>
|
17 |
<date>2017-01-06</date>
|
18 |
-
<time>
|
19 |
-
<contents><target name="magecommunity"><dir name="Apptrian"><dir name="Minify"><dir name="Block"><dir name="Adminhtml"><file name="About.php" hash="f64192564d4cf23ff796d019e6cc59fd"/><dir name="Button"><file name="Minify.php" hash="fb682754c2959e3faa976f949c1f62c2"/></dir><file name="Info.php" hash="ff8203653ffc21f22613c8a07150efb4"/></dir></dir><dir name="Helper"><file name="Data.php" hash="da081b337c9daab9ab0f0a5908adc318"/></dir><dir name="Model"><file name="Observer.php" hash="c88016f8414982f615e47d21420fa478"/></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Apptrian"><file name="MinifyController.php" hash="ff9d7192ade05edbf0aee65a2763cde5"/></dir></dir></dir><dir name="etc"><file name="config.xml" hash="
|
20 |
<compatible/>
|
21 |
<dependencies><required><php><min>5.1.0</min><max>8.0.0</max></php></required></dependencies>
|
22 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Apptrian_Minify_HTML_CSS_JS</name>
|
4 |
+
<version>2.0.1</version>
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://opensource.org/licenses/osl-3.0.php">Open Software License (OSL 3.0)</license>
|
7 |
<channel>community</channel>
|
8 |
<extends/>
|
9 |
<summary>Minify HTML CSS JS including inline CSS/JS and speed up your site. Works with default Magento CSS/JS merger.</summary>
|
10 |
<description>Apptrian Minify HTML CSS JS is a very small and efficient extension. It will minify HTML including inline CSS and JS code. Minification of CSS and JS files is compatible with default Magento CSS and JS file merger. There are no complex setups nor query strings on minified CSS and JS files. Extension is very easy to install and use. Compatible with FPC and Varnish cache extensions. If there is a serious error in some page code that page will not be minified. Extension will log the error and url of the page where this error occurs so developers can track it down and fix the code.</description>
|
11 |
+
<notes>* Small bug fixed</notes>
|
|
|
|
|
|
|
|
|
12 |
<authors><author><name>Apptrian</name><user>apptrian</user><email>apptrian@yahoo.com</email></author></authors>
|
13 |
<date>2017-01-06</date>
|
14 |
+
<time>23:36:36</time>
|
15 |
+
<contents><target name="magecommunity"><dir name="Apptrian"><dir name="Minify"><dir name="Block"><dir name="Adminhtml"><file name="About.php" hash="f64192564d4cf23ff796d019e6cc59fd"/><dir name="Button"><file name="Minify.php" hash="fb682754c2959e3faa976f949c1f62c2"/></dir><file name="Info.php" hash="ff8203653ffc21f22613c8a07150efb4"/></dir></dir><dir name="Helper"><file name="Data.php" hash="da081b337c9daab9ab0f0a5908adc318"/></dir><dir name="Model"><file name="Observer.php" hash="c88016f8414982f615e47d21420fa478"/></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Apptrian"><file name="MinifyController.php" hash="ff9d7192ade05edbf0aee65a2763cde5"/></dir></dir></dir><dir name="etc"><file name="config.xml" hash="02612426a06ba8afa72b72a60419f862"/><file name="system.xml" hash="e356c9e13699a3550fd02955ffda675a"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Apptrian_Minify.xml" hash="c46de9988ef639ef94525ad207da6ef2"/></dir></target><target name="magelocale"><dir name="en_US"><file name="Apptrian_Minify.csv" hash="694d5a244eeaaa7293520581b82ffcf7"/></dir></target><target name="magelib"><dir name="Apptrian"><dir name="Minify"><file name="Css.php" hash="38c36acd692f9c117bd0c90dad9712b8"/><file name="Html.php" hash="00eb1ad9230c159b7dccee91fc8e6f18"/><file name="Js.php" hash="771ac8c98a9e55246bae6859283dcb37"/></dir></dir></target></contents>
|
16 |
<compatible/>
|
17 |
<dependencies><required><php><min>5.1.0</min><max>8.0.0</max></php></required></dependencies>
|
18 |
</package>
|