Seite 1 von 1

Plugins zerschiessen Frontend im IE

Verfasst: Mo 28. Jul 2014, 12:49
von McHubi
Hallo zusammen,

ich habe ein interessantes - aber nerviges Problem: Ich kann keine zwei selbst entwickelten Plugins gleichzeitig aktivieren ohne das im IE (egal welche Versionen per F12 emuliert werden) das Layout im Frontend zerschossen wird. Im Firefox 30, Chrome36 und Opera 12.02 dagegen wird die Seite im Frontend korrekt dargestellt. Betroffen ist dabei nicht die Startseite, sondern lediglich die per Navigation aufgerufenen Unterseiten.

Um der Sache auf den Grund zu gehen und mögliche Einflüsse von eigenen Modueln usw. auszuschließen, habe ich lokal xampp und dort die 4.9.4 mit dessen Demomandanten installiert. Dann habe ich ein "Rumpf-Plugin" namens "hallowelt" erstellt und eine anders benannte Dublette "hallouniversum".

1) hallowelt
a) plugin.xml

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<plugin>

<general active="1">
        <plugin_name>hallowelt</plugin_name>
        <plugin_foldername>hallowelt</plugin_foldername>
        <uuid>B1761838-EBE8-1FA5-DE4F-C7232E942FA9</uuid>
        <description>testplugin</description>
        <author>ich</author>
        <copyright>ich</copyright>
        <mail>ich@da.de</mail>
        <website>https://www.ich.de</website>
        <version>1.0.0</version>
</general>

    <requirements php="5.2.3">
        <contenido minversion="4.9.0" />
    </requirements>

    <contenido>

        <areas>
            <area menuless="1">hallowelt</area>
            <area parent="hallowelt" menuless="1">uebersicht</area>
        </areas>

        <actions>
            <action area="hallowelt">hallowelt</action>
            <action area="hallowelt">uebersicht</action>
        </actions>

        <frames>
            <frame area="hallowelt" filetype="main" name="hallowelt/includes/include.hallowelt.php" frameId="4" />
            <frame area="uebersicht" filetype="main" name="hallowelt/includes/include.hallowelt.php" frameId="4" />
        </frames>

        <nav_sub>
            <nav area="hallowelt" level="0" navm="1">hallowelt/xml/;navigation/content/hallowelt/main</nav>
            <nav area="uebersicht" level="1" navm="0">hallowelt/xml/;navigation/content/hallowelt/uebersicht</nav>
        </nav_sub>

    </contenido>

</plugin>
b) xml/lang_de_DE.xml

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8"?>
<!-- CONTENIDO XML language file -->
<language>
    <navigation>
        <content>
            <hallowelt>
                <main>hallowelt</main>
				<uebersicht>uebersicht</uebersicht>
            </hallowelt>
        </content>
    </navigation>
</language>
c) includes/config.plugin.php

Code: Alles auswählen

<?php
defined('CON_FRAMEWORK') || die('Illegal call: Missing framework initialization - request aborted.');
$plugin_name = "hallowelt";
$cfg['plugins']['hallowelt'] = cRegistry::getBackendPath() . "plugins/" . $plugin_name . "/";
?>
d) includes/include.hallowelt.php

Code: Alles auswählen

<?php
echo 'Hallo Welt!';
?>
2) hallouniversum
a) plugin.xml

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<plugin>

<general active="1">
        <plugin_name>hallouniversum</plugin_name>
        <plugin_foldername>hallouniversum</plugin_foldername>
        <uuid>4888A9CA-43F3-08FF-7578-6B77AE756460</uuid>
        <description>kopie von hallowelt</description>
        <author>ich2</author>
        <copyright>ich2</copyright>
        <mail>ich@da.de</mail>
        <website>https://www.ich.de</website>
        <version>1.0.0</version>
</general>

    <requirements php="5.2.3">
        <contenido minversion="4.9.0" />
    </requirements>

    <contenido>

        <areas>
            <area menuless="1">hallouniversum</area>
            <area parent="hallouniversum" menuless="1">gesamt</area>
        </areas>

        <actions>
            <action area="hallouniversum">hallouniversum</action>
            <action area="hallouniversum">gesamt</action>
        </actions>

        <frames>
            <frame area="hallouniversum" filetype="main" name="hallouniversum/includes/include.hallouniversum.php" frameId="4" />
            <frame area="gesamt" filetype="main" name="hallouniversum/includes/include.hallouniversum.php" frameId="4" />
        </frames>

        <nav_sub>
            <nav area="hallouniversum" level="0" navm="1">hallouniversum/xml/;navigation/content/hallouniversum/main</nav>
            <nav area="gesamt" level="1" navm="0">hallouniversum/xml/;navigation/content/hallouniversum/gesamt</nav>
        </nav_sub>

    </contenido>

</plugin>
b) xml/lang_de_DE.xml

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8"?>
<!-- CONTENIDO XML language file -->
<language>
    <navigation>
        <content>
            <hallouniversum>
                <main>hallouniversum</main>
				<gesamt>gesamt</gesamt>
            </hallouniversum>
        </content>
    </navigation>
</language>
c) includes/config.plugin.php

Code: Alles auswählen

<?php
defined('CON_FRAMEWORK') || die('Illegal call: Missing framework initialization - request aborted.');
$plugin_name = "hallouniversum";
$cfg['plugins']['hallouniversum'] = cRegistry::getBackendPath() . "plugins/" . $plugin_name . "/";
?>
d) includes/include.hallouniversum.php

Code: Alles auswählen

<?php
echo 'Hallo Universum!';
?>
Die sonstigen Ordner und ggf. deren Unterordner "classes", "locale" und "templats" sind bei beiden ebenfalls vorhanden aber leer.

Beide Plugins ließen sich über den PIM ohne Probleme installieren und funktionieren im Backend auch ganz normal. Im Frontend wird jedoch, wie eingangs erwähnt, im IE - egal welche Version - das Layout zerschossen. Symptome als wenn die CSS-Dateien nicht geladen werden. Schaut man sich den Quelltext im FF an, sieht er so aus:

Code: Alles auswählen

[...]<base href="http://localhost/cms/" />

        <meta charset="utf-8" />

        <title>Features dieser Website - Content - Bildergalerie - Bildergalerie</title><link rel="stylesheet" type="text/css" href="//localhost/cms/cache/picture_gallery.css" id="m12" />

        <link rel="stylesheet" type="text/css" href="css/reset.css" />
        <link rel="stylesheet" type="text/css" href="css/main.css" />
        <link rel="stylesheet" type="text/css" href="css/contenido_backend.css" />
		[...]
Im IE exakt das Gleiche, Null Unterschied.

Bemüht man im IE allerdings die Entwicklerkonsole per F12 und protokolliert unter "Netzwerk" den Seitenaufbau, findet man folgendes:

a) nur ein Plugin aktiviert (egal welches), AMR aktiv
screenshot-fe-a-nur-ein-plugin-aktiviert-amr-aktiv-001.jpg
(180.12 KiB) Noch nie heruntergeladen
b) beide Plugins aktiviert, AMR aktiv
screenshot-fe-b-beide-plugins-aktiviert-amr-aktiv-001.jpg
(246.05 KiB) Noch nie heruntergeladen
Es scheint so, dass hier die CSS-Klassen erneut geladen werden sollen, allerdings von einer anderen Quelle aus. Durch den 404er-Fehler scheint der Inhalt der jeweiligen CSS-Dateien - die vorher ja korrekt geladen wurden, gelöscht zu werden. Da der Pfad zum neuerlichen Einlesen eine Clean-URL des AMR beinhaltet, habe ich das AMR einmal testweise deaktiviert, aber beide Plugins aktiviert. Jetzt wird die Seite im FE auch im IE korrekt dargestellt:

c) beide Plugins aktiviert, AMR deaktiviert Es macht keinen Unterschied, ob eines der Plugins nur deaktiviert oder komplett deinstalliert wurde. Sobald nur eines "läuft" oder AMR deaktiviert ist, klappt das FE im IE reibungslos. Caches der Browser oder von Contenido leeren, zahlreiches Ab- und wieder Anmelden usw. bringt auch nichts. In den Error-Logs ist übrigens auch nichts vermerkt.

Hat jemand eine Idee? Habe mir die Plugin-Dateien schon X-Mal angeschaut und finde nichts, was falsch sein könnte. :motz: :evil:

Dank euch!


VG,


Markus

Re: Plugins zerschiessen Frontend im IE

Verfasst: Mo 28. Jul 2014, 13:04
von McHubi
Wenn jemand zum Testen die beiden Plugins bräuchte und keine Lust hat sie zu Fuß anzulegen, siehe Anlage... :wink:

Re: Plugins zerschiessen Frontend im IE

Verfasst: Do 31. Jul 2014, 07:32
von frederic.schneider_4fb
Guten Tag,

es wird Dir keine befriedigende Antwort geben, aber ich kann die Probleme nicht reproduzieren. Ich habe Deine Testplugins (einzeln und zusammen) installiert und das AMR-Plugin aktiviert bzw. deaktiviert und kann keinerlei Probleme im IE darstellen. Möglicherweise hast Du weitere Anpassungen am System vorgenommen? Die Struktur der PIM-Plugins dürfen eigentlich keinerlei Einfluss auf das Frontend haben, außer die Plugins selbst nehmen irgendwelchen Einfluss auf Dateien Deiner Mandanten. In Deinen Beispielplugins ist das ausdrücklich nicht der Fall.

Re: Plugins zerschiessen Frontend im IE

Verfasst: Do 31. Jul 2014, 09:50
von McHubi
Hallo Frederic,

Danke Dir für Deine Antwort.
Möglicherweise hast Du weitere Anpassungen am System vorgenommen?
Um das auszuschließen, habe ich ja den "nackten" Demomandanten mit Beispielinhalten und Modulen lokal installiert (xampp ist Version 3.2.1). Die beiden Plugins installiert und schon kracht es... Welche Version vom IE hast Du verwendet? Vielleicht hat ja die Unterunterunterversion ja einen Hau... Bei mir ist es die 11.0.9600.17105

:roll: Grübel... Aber zumindest schon mal gut zu wissen, dass an den Plugins nicht grundsätzlich was falsch ist.

Re: Plugins zerschiessen Frontend im IE

Verfasst: Do 31. Jul 2014, 09:56
von frederic.schneider_4fb
IE 11.0.9600.17207
Wie sieht es mit den anderen aus? Könnt Ihr seine Probleme bestätigen?

Re: Plugins zerschiessen Frontend im IE

Verfasst: Mo 2. Mär 2015, 17:53
von McHubi
Nachdem ich mir zeitweise damit geholfen habe Funktionen eines zweiten Plugins einfach in ein Modul auszulagern - was wunderbar klappt - hänge ich immer noch bei dem Problem, dass ein zweites Plugin auch in der aktuellen 4.9.6er im IE das Frontend zerschiesst. Version vom IE: 11.0.9600.17633
Kann doch nicht wahr sein sowas... :motz:

Schaut man sich den Quelltext vom Frontend an, fällt dieser Unterschied auf:
Nur ein Plugin aktiviert:

Code: Alles auswählen

<!DOCTYPE html>
<head>
Beide Plugins aktiviert:

Code: Alles auswählen

  <!DOCTYPE html>
<head>
Hier sind zwei Leerzeichen zuviel.

Edit 02.03.2015 19:54:
Super. In anderer Installation läuft's auch im IE, dafür wird beim Aufruf eines Artikels im Reiter Editor nichts mehr angezeigt. WTF! Hier muss doch was an den Plugin-Dateien faul sein!

Re: Plugins zerschiessen Frontend im IE

Verfasst: Mo 2. Mär 2015, 22:16
von frederic.schneider_4fb
Und die Errorlog schweigt sich aus? Sieht ja so aus als würde er etwas laden wollen, aber er gibt nichts aus. Wenn Du mir einen aktuellen Dump Deines Plugins mal an frederic.schneider@4fb.de schickst, würde ich es mir am Donnerstag mal anschauen. Ggf. liegt ja wirklich ein Systemfehler vor.

Re: Plugins zerschiessen Frontend im IE

Verfasst: Mo 2. Mär 2015, 23:12
von homtata
Ich kann das in einem Demo-Mandanten in der 4.9.4 reproduzieren mit den angebotenen Plugins aus der zip-Datei.
Ist nur EIN Plugin installiert, egal welches, gibt es die beiden Leerzeichen am Anfang der Seite nicht.
Sobald das zweite Plugin dazukommt, sind die Leerzeichen da - und die beeinflussen das Layout.

Ich habe in der Demo noch weitere Plugins installiert: Smarty, Form Assistant, User Form, Newsletter, waShop Editor - die machen alle keine Probleme in dieser Richtung.

Und wie beschrieben, tritt das Problem nur im IE 11 (bei mir: 11.0.9600.17633) auf, will heißen: die Leerzeichen sind auch im FF im Quellcode, werden dort aber ignoriert und nicht ausgegeben.
Ich sehe jetzt allerdings auch nicht, wo diese beiden extremst einfachen Plugins sich in von den anderen so unterscheiden, dass die entsprechend interagieren...

Re: Plugins zerschiessen Frontend im IE

Verfasst: Di 3. Mär 2015, 08:52
von McHubi
@homtata:
"Gut", dass bis jetzt zumindest einer das Ganze reproduzieren konnte und ich keine weißen Mäuse sehe... :?

@frederic:
# die Plugins sind als zip zu Dir unterwegs
# das Errorlog schweigt sich aus
# da ich das Ganze bisher immer von einer 4.9.4er kommend getestet habe, hab ich eben einen frischen 4.9.6er Demomandanten aufgesetzt - das Problem bleibt.

Danke euch! :D

Re: Plugins zerschiessen Frontend im IE

Verfasst: Di 3. Mär 2015, 09:56
von Faar
Leerzeichen am Anfang des Dokumentes können manchmal daher kommen, dass hinter einem schließenden ?> noch Leerzeichen stehen und danach irgendwie HTML ausgegeben wird.
Aber auch bei einer String Übergabe können diese Leerzeichen drin stehen, womöglich noch Zeilenschub \n\r oder ähnliches. Der IE ist da empfindlich.
Vielleicht gibt es im Code irgendeine Ausgabe, die man vorher mit trim() behandeln könnt?

Aber auch der UTF-8 BOM macht sich am Anfang eines Dokumentes störend bemerkbar.
Manche Editoren zeigen den nicht als Hiroglyphen an und oft noch nicht einmal als Leerstellen, aber er ist trotzdem da und stört in der HTML-Ausgabe, falls er mal irgendwann eingefügt wurde.
Der muss dann mit einem Editor, der den BOM anzeigen kann, entfernt werden.

... nur so meine Gedanken.

Re: Plugins zerschiessen Frontend im IE

Verfasst: Di 3. Mär 2015, 10:09
von Oldperl
Servus Markus,

also ich kann es nicht nachvollziehen. Hier mal meine Serverdaten
CONTENIDO Version 4.9.4
Webserver-Version Apache/2.4.7 (Ubuntu)
Installierte PHP-Version 5.5.9-1ubuntu4.5
Datenbankserver-Version 5.5.38-0ubuntu0.14.04.1
PHP-Datenbankerweiterung mysqli
Ob nun mit oder ohne aktiviertem AMR, bei mir kommen keine Leerzeichen, egal ob ich 1 oder 2 deiner Plugins aktiviere, nix im Quelltext, weder im FF noch im IE

Gruß aus Franken

Ortwin

Re: Plugins zerschiessen Frontend im IE

Verfasst: Di 3. Mär 2015, 10:40
von McHubi
Moin!
Tja. Was soll ich sagen. Fällt mir nix mehr zu ein. Wo ist die Papiertüte, die ich mir über den Kopf ziehen darf? :oops:
Der Zaunpfahl von Faar scheint des Rätsels Lösung gewesen zu sein. Habe per Notepad++ die Kodierung aller Dateien auf dem Server der beiden Plugins auf "UTF8 ohne BOM" geändert und beim Seitenreload im IE kracht's auf einmal nicht mehr... :roll: Wo ist der hüpfende Smiley?! :mrgreen:

Re: Plugins zerschiessen Frontend im IE

Verfasst: Di 3. Mär 2015, 10:57
von Faar
Nun, der BOM hatte mir mal ähnlich hartnäckige Probleme verursacht, als es noch weniger bekannt war, das hat sich tief bei mir eingeprägt :?
Freut mich, dass es half :)