Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: MODUL: OIL.js Cookie Consent Management

    hpzeller

    • Experte
    • Beiträge: 3.510
    • Geschlecht:
    Re: MODUL: OIL.js Cookie Consent Management
    Antwort #255 am: 12. Oktober 2020, 14:35:02
    Hallo Timm,

    ersetze im geposteten Code testweise folgende Codesequenz:

    Code: PHP  [Auswählen]
                    /**
                     * Strips single line Comments from the buffer
                     *
                     * @access private
                     * @param string $code Code string
                     * @return string
                     */

        private function _removeMultiLineAndSingleLineComments($code) {  
          if ($this->_options['compress_css'] == false) {
            $code = preg_replace('/(?:(?<!\:|\\\|\'|\")\/\/.*)/', '', $code);  // entfernt single line '//' comments. hpzeller
          }
          $code = preg_replace('/(?:\/\*(?:[^*]|(?:\*+[^*\/]))*\*+\/)/', '', $code); // entfernt multi line '/* */' comments. hpzeller        
          return $code;
        }

    mit dieser:

    Code: PHP  [Auswählen]
                    /**
                     * Strips single line  and  multi line Comments from the buffer
                     *
                     * @access private
                     * @param string $code Code string
                     * @return string
                     */

        private function _removeMultiLineAndSingleLineComments($code) {
          // Wegen https://www.modified-shop.org/forum/index.php?topic=41168.msg377654#msg377654
          // zuerst multi line '/* */' comments entfernen
          // und erst danach gegebenenfalls single line '//' comments entfernen.
          $code = preg_replace('/(?:\/\*(?:[^*]|(?:\*+[^*\/]))*\*+\/)/', '', $code); // entfernt multi line '/* */' comments. hpzeller      
          if ($this->_options['compress_css'] == false) {
            $code = preg_replace('/(?:(?<!\:|\\\|\'|\")\/\/.*)/', '', $code);  // entfernt single line '//' comments. hpzeller
          }        
          return $code;
        }

    Gruss
    Hanspeter
    Haendlerbund_Leistungen_728x90_animiert

    FräuleinGarn

    • Fördermitglied
    • Beiträge: 4.198
    Re: MODUL: OIL.js Cookie Consent Management
    Antwort #256 am: 12. Oktober 2020, 21:59:34
    Hallo Hanspeter

    Mit deiner neuen Lösung funktioniert es. Hat etwas gedauert, bis ich gemerkt habe, dass man die tpl_plugin.min.js mit einer leeren Version austauschen muss, um eine Veränderung zu sehen.

    Vielen Dank!!!

    Was ich am Code aber nicht ganz verstehe ist

    Code: PHP  [Auswählen]
    if ($this->_options['compress_css'] == false) {

    Was hat die css Komprimierung mit dem entfernen in einer Javascript Datei zu tun und warum hat es keine Auswirkung, ob die css Komprimierung an oder aus ist?

    Wenn ich deine Lösung richtig verstehe, dann macht er bei der ersten Variante aus

    Code: Javascript  [Auswählen]
    /*2p: 7a !1C;*//*}*/.1d-1c-4V {.............
    das
    Code: Javascript  [Auswählen]
    /*2p: 7a !1C;*
    er löscht also alles nach den //, da alles folgende in dem Skript in einer Zeile steht.

    Und nun macht er aus

    Code: Javascript  [Auswählen]
    /*2p: 7a !1C;*//*}*/.1d-1c-4V {...............
    das
    Code: Javascript  [Auswählen]
    .1d-1c-4V {............
    entfernt also die beiden multiline Kommentare (die aber in einer Zeile stehen) und es bleibt kein singleline Kommentar übrig, der zu löschen wäre und alles dahinter bleibt damit auch bestehen. Hab ich das richtig gedeutet?

    Gruss Timm

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 10.865
    • Geschlecht:
    Re: MODUL: OIL.js Cookie Consent Management
    Antwort #257 am: 12. Oktober 2020, 23:17:45
    [...] Hat etwas gedauert, bis ich gemerkt habe, dass man die tpl_plugin.min.js mit einer leeren Version austauschen muss, um eine Veränderung zu sehen.
    [...]

    Um genau zu sein:
    Wenn die von dir genannte Datei (also die mit den komprimierten Files) leer ist
    oder
    sich eines der Skripte welche komprimiert werden geändert hat.
    Da die sog. filetime jedes Files gemessen und mit der der Datei die die komprimierten Files enthält verglichen wird, kann man einfach ein Skript öffnen, zum Schein etwas änderen z.B. (Leerzeichen und wieder zurück), und speichern.

    Gruß,
    noRiddle

    hpzeller

    • Experte
    • Beiträge: 3.510
    • Geschlecht:
    Re: MODUL: OIL.js Cookie Consent Management
    Antwort #258 am: 13. Oktober 2020, 00:36:34
    [...]
    Was ich am Code aber nicht ganz verstehe ist

    Code: PHP  [Auswählen]
    if ($this->_options['compress_css'] == false) {

    Was hat die css Komprimierung mit dem entfernen in einer Javascript Datei zu tun und warum hat es keine Auswirkung, ob die css Komprimierung an oder aus ist?
    [...]

    Die Funktion "_removeMultiLineAndSingleLineComments" wird sowohl bei der Komprimierung von JavaScript-Dateien als auch bei der Komprimierung von CSS-Dateien ausgeführt, da aber in CSS-Dateien nur /* */ Kommentare zugelassen sind ist das Ausführen der Funktion "preg_replace" für // Kommentare nicht nötig.

    [...]
    Wenn ich deine Lösung richtig verstehe, dann macht er bei der ersten Variante aus

    Code: Javascript  [Auswählen]
    /*2p: 7a !1C;*//*}*/.1d-1c-4V {.............
    das
    Code: Javascript  [Auswählen]
    /*2p: 7a !1C;*
    er löscht also alles nach den //, da alles folgende in dem Skript in einer Zeile steht.

    Und nun macht er aus

    Code: Javascript  [Auswählen]
    /*2p: 7a !1C;*//*}*/.1d-1c-4V {...............
    das
    Code: Javascript  [Auswählen]
    .1d-1c-4V {............
    entfernt also die beiden multiline Kommentare (die aber in einer Zeile stehen) und es bleibt kein singleline Kommentar übrig, der zu löschen wäre und alles dahinter bleibt damit auch bestehen. Hab ich das richtig gedeutet?
    [...]

    Präzis, das hast du richtig gedeutet :thumbs:

    Gruss
    Hanspeter

    Nachtrag:
    Gelinde gesagt finde ich eine solche Auskommentiererei

    Code: Javascript  [Auswählen]
    /*2p: 7a !1C;*//*}*/.1d-1c-4V {...............

    etwas merkwürdig, für gewöhnlich würde man das ja so auskommentieren.

    Code: Javascript  [Auswählen]
    /*2p: 7a !1C;}*/.1d-1c-4V {...............

    Aber egal, syntaktisch ist es ja korrekt.

    FräuleinGarn

    • Fördermitglied
    • Beiträge: 4.198
    Re: MODUL: OIL.js Cookie Consent Management
    Antwort #259 am: 13. Oktober 2020, 10:26:22
    Danke dir. Warum Magictoolbox das so auskommentiert hat, kann ich nicht sagen. Es gibt diesen Fall in meinen 3 sehr langen JS Dateien auch nur einmal.

    Gruss Timm

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 44.500
    • Geschlecht:
    Re: MODUL: OIL.js Cookie Consent Management
    Antwort #260 am: 17. Oktober 2020, 13:47:27
    Ich habe das Changeset r12918 ins Modul aus Beitrag 1 mit aufgenommen.

    Grüße

    Torsten