a-r-m-i-n / min

TYPO3 CMS extension "min" - Compressed CSS, JS and HTML output for TYPO3
7 stars 8 forks source link

#!#protected_XXX#!# #3

Closed plojewski closed 2 years ago

plojewski commented 2 years ago

Hi, after upgrade to 2.0 there is "protected" instead of loading .js: Zrzut ekranu 2022-03-4 o 14 28 46

a-r-m-i-n commented 2 years ago

Thanks for reporting, I will check this ASAP

a-r-m-i-n commented 2 years ago

I am sorry, but I'm unable to reconstruct this issue. Tested in TYPO3 11 with PHP 8 and TYPO3 10 with PHP 7.4. Also with invalid regular expressions, I don't get your result.

Can you give me more info and dump your plugin.tx_min config?

plojewski commented 2 years ago

@a-r-m-i-n Thanks for checking. I've tested on Typo3 10.4.16 / PHP 7.4 and additional config like this:

plugin.tx_min.tinysource {
    head {
        protectCode {
            10 = /(<script.*?>.*?<\/script>)/is
        }
    }
    body {
        protectCode {
            10 = /(<script.*?>.*?<\/script>)/is
        }
    }
}
neonic commented 2 years ago

Hello,

we do have the same behavior. Textareas will be replaced with #!#protected_XXX#!#. The XXX is a hash and regenerates with every refresh.

We use the latest T3 10 LTS with PHP 7.4 and the following configuration:

plugin.tx_min.tinysource {
    enable = 1
    head {
        stripTabs = 1
        stripNewLines = 1
        stripDoubleSpaces = 1
        stripTwoLinesToOne = 1
        stripSpacesBetweenTags = 0
    }
    body {
        stripComments = 1
        stripTabs = 1
        stripNewLines = 1
        stripDoubleSpaces = 1
        stripSpacesBetweenTags = 0
        stripTwoLinesToOne = 0
        preventStripOfSearchComment = 1
        protectCode {
            10 = /(<textarea.*?>.*?<\/textarea>)/is
            20 = /(<pre.*?>.*?<\/pre>)/is
        }
    }
    oneLineMode = 1
}
config {
    compressCss = 1
    concatenateCss = 1
    compressJs = 1
    concatenateJs = 1
}

The static template of min 2.0.0 is not included.

a-r-m-i-n commented 2 years ago

Okay thanks. Locally I'm still not able to reconstruct this issue, but on my own website's dev environment, I was able to reconstruct.

I'm going to fix it as soon as possible.

a-r-m-i-n commented 2 years ago

Okay, I see the problem. I've moved the "protectCode" to the root level of tinysource configuration. In your code, it is still located within head and body.

This was a major upgrade, which breaks old configurations, which is also well documented: https://docs.typo3.org/p/t3/min/2.0/en-us/Configuration.html#html-source-compression

a-r-m-i-n commented 2 years ago

I reopen this issue, because I want to fix this behaviour. If you provide inconsistent config, this should not be the result.

The reason why this is happening: At the place where the protection applies, the body version of protectCode is defined as fallback, in case the root version is missing.

But when restoring the protected code, this fallback is missing.

I'm going to replace the fallback at all. In worst case, you will get no protected textareas, then.

Also I want to improve documentation, when upgrading from v1.

plojewski commented 2 years ago

Thank you!

neonic commented 2 years ago

Thank you. With changing the configuration, min works like a charm.