Rocksolid Custom Elements: Problem beim Speichern

Titus's Avatar

Titus

14 Oct, 2013 12:56 PM

Hallo,
wenn ich diese Elemente der RSCE benutzen möchte, kann ich zwar ein Element anlegen, dieses aber nicht fehlerfrei bearbeiten und speichern. Es erfolgt dann eine Fehlermeldung "Ungültige Eingabe: rsce_main_image_text".
Der Fehler lässt sich regelmäßig so reproduzieren:

a) Element vom Typ "rsce_main_image_text" (Main-Image-Text) anlegen
b) Daten eintragen und auf "speichern" klicken
c) Fehlermeldung wird angezeigt => Element ist aber als "rsce_main_image" abgespeichert

Contao 3.1.4
Theme RS Vision 1.2
Ext. RS Custom Elements 1.05

Habt ihr eine Idee, was da schief läuft? Danke für eure Hilfe.
Titus

  1. 1 Posted by Titus on 14 Oct, 2013 12:57 PM

    Titus's Avatar

    Fehlermeldung als Bild

  2. Support Staff 2 Posted by RockSolid Theme... on 14 Oct, 2013 02:10 PM

    RockSolid Themes's Avatar

    Vielen Dank für Ihre Frage.

    Versuchen Sie über System › Systemwartung › Daten bereinigen alle Daten zu bereinigen. Falls das Problem weiterhin besteht, überprüfen Sie bitte ob auf Ihrem Webspace die Datei system/cache/rocksolid_custom_elements_config.php existiert und senden Sie uns den Inhalt der Datei.

    Um den Fehler reproduzieren zu können, benötigen wir noch weitere Informationen:

    • Hat der verwendete Contao-Benutzer Administrator-Rechte?
    • Ist der Safe-Mode-Hack aktiv?
    • Welche Erweiterungen sind installiert?
    • Haben Sie Änderungen an den System-Einstellungen vorgenommen?
  3. 3 Posted by Titus on 14 Oct, 2013 02:37 PM

    Titus's Avatar

    Hallo,
    ich habe die Stelle identifiziert, die Probleme bereitet:

     >>
    system/modules/rocksolid-custom-elements/src/MadeYourDay/CustomElements.php

     >> CustomElements::loadConfig()
    Zeile 615 ff.

    Hier scheint es so, dass die Cache-Datei nicht zuverlässig erstellt wird
    und so zu Problemen führt. Kommentiere ich Zeile 620 aus (return;),
    kann ich das Element regelmäßig korrekt abspeichern.

    Leider habe ich noch ein weiteres Problem im Zusammenhang mit dn
    CustomElements identifiziert: sobald ich die Extension installiere, kann
    ich keine Bilder mehr aus dem Pagetree auswählen, was natürlich
    unglücklich ist. Der XHR-Post zu

    <server>/contao/main.php?do=article&table=tl_content&act=edit&id=5&rt=cf9bb01a5430b50a716e37084c6010ae&ref=07dde46e

    mit Inhalt

    REQUEST_TOKEN cf9bb01a5430b50a716e37084c6010ae
    action reloadFiletree
    name singleSRC
    value files/music_academy/admin.gif

    führt zu einem 500er-HTTP-Error.

    Sobald ich die Extension deinstalliere, läuft alles wieder. Kann es
    sein, dass hier ein Problem mit einem Callback auftritt? Ich untersuche
    das gerade noch, würde mich aber natürlich über Feedback freuen.

    Viele Grüße
    Titus

  4. Support Staff 4 Posted by RockSolid Theme... on 14 Oct, 2013 03:03 PM

    RockSolid Themes's Avatar

    Wir konnten den Fehler mit Contao 3.1.4 nicht reproduzieren. Die Action reloadFiletree wird in den Custom Elements 1.0.5 nicht abgefangen und sollte deshalb auch keinen 500er verursachen können, siehe: https://github.com/madeyourday/contao-rocksolid-custom-elements/blo...

    Wenn Sie uns die oben gestellten Fragen beantworten, können wir versuchen den Fehler zu reproduzieren. Alternativ können Sie uns auch die Zugangsdaten zu Ihrem Webspace in einem privaten Ticket unter http://help.rocksolidthemes.com/discussion/new zukommen lassen.

  5. 5 Posted by Titus on 14 Oct, 2013 03:19 PM

    Titus's Avatar

    Es scheint so, als würde nach der Installation der Extension die
    DB-Verbindung frühzeitig beendet. Im Error-Log erhalte ich ab dem
    Zeitpunkt der Installation von "rocksolid_custom_elements" folgende
    Fehlermeldung:

    [14-Oct-2013 15:09:39 UTC] PHP Fatal error: Uncaught exception
    'Exception' with message 'Invalid connection resource' in
    D:\WEBSERVER\vhosts\kreativmanufaktur\core-master\system\modules\core\library\Contao\Database\Statement.php:79
    Stack trace:
    #0
    D:\WEBSERVER\vhosts\kreativmanufaktur\core-master\system\modules\core\library\Contao\Database\Mysql.php(327):
    Contao\Database\Statement->__construct(Resource id #15, false)
    #1
    D:\WEBSERVER\vhosts\kreativmanufaktur\core-master\system\modules\core\library\Contao\Database.php(176):
    Contao\Database\Mysql->createStatement(Resource id #15, false)
    #2
    D:\WEBSERVER\vhosts\kreativmanufaktur\core-master\system\modules\core\classes\BackendUser.php(126):
    Contao\Database->prepare('UPDATE tl_user ...')
    #3 [internal function]: Contao\BackendUser->__destruct()
    #4 {main}
       thrown in
    D:\WEBSERVER\vhosts\kreativmanufaktur\core-master\system\modules\core\library\Contao\Database\Statement.php
    on line 79

    Das könnte dann auch beim XHR-Request zum 500er-Fehler führen, der dann
    das Pagetree-Reload aufhängt. Aktiviere ich die Fehlermeldungen inder
    der localconf.php ($GLOBALS['TL_CONFIG']['displayErrors'] = true) kann
    ich wieder Bilder auswählen, bekomme aber den Fehler direkt im Formular
    angezeigt.

    Die Anworten auf die Fragen:
     > * Hat der verwendete Contao-Benutzer Administrator-Rechte?
    Ja.

     > * Ist der Safe-Mode-Hack aktiv?
    Nein.

     > * Welche Erweiterungen sind installiert?
    rocksolid-slider
    rocksolid-icon-picker
    rocksolid-custom-elements

     > * Haben Sie Änderungen an den System-Einstellungen vorgenommen?
    nein, nur displayErrors (s.o.)

  6. Support Staff 6 Posted by RockSolid Theme... on 14 Oct, 2013 03:51 PM

    RockSolid Themes's Avatar

    Wenn Sie folgenden Code vor Zeile 620 (über return;) einfügen und erneut ein rsce_main_image_text-Element erstellen, sollte im Systemlog zu sehen sein welchen Inhalt das Cache-File zum Zeitpunkt des Fehlers hat:

    static::log(file_get_contents($fileFullPath), 'MadeYourDay\Contao\CustomElements::loadConfig', TL_ERROR);
    
  7. 7 Posted by Titus on 14 Oct, 2013 04:26 PM

    Titus's Avatar

    Es werden (leider ohne erkennbares Muster) leere wie volle Dateien
    generiert. Beste Lösung war für mich, den Cache zu "deaktivieren".

    Leider löst das noch nicht den Folgefehler mit der fehlerhaften
    Datenbankverbindung, ich berichte, wenn ich auch dafür einen Workaround
    gefunden habe.

    Vielen Danke auf jeden Fall bisher für den schnellen Support.

  8. 8 Posted by Titus on 14 Oct, 2013 04:48 PM

    Titus's Avatar

    Es scheint mir so, dass irgendwo in der Extension etwas mit den
    DB-Verbindungen durcheinander kommt, leider habe ich nciht rausgefunden,
    wo das passiert. Letztlich habe ich nun folgenden, ziemlich bösen
    Workaround für mich gefunden.

    In der Datei system\modules\core\classes\BackendUser.php
    habe ich in Zeile 126 vor

    $this->Database->prepare("UPDATE "....)

    die Zeile

    $this->Database = \Database::getInstance();

    zugefügt, die auch eine geschlossene DB-Instanz noch einmal öffnet.
    Das hat den Fehler für mich behoben.

    Mit den beiden oben beschriebenen Workarounds funktioniert die Extension
    jetzt auch mit dem Vision-Theme 1.2. Leider bin ich zeitlich etwas knapp
    und müsste jetzt erstmal "ugly" weitermachen. Vielleicht fällt euch noch
    was ein?

    Ich hoffe, ihr habt noch eine Idee...

  9. Support Staff 9 Posted by RockSolid Theme... on 15 Oct, 2013 02:08 PM

    RockSolid Themes's Avatar

    Sie könnten noch versuchen die Funktion purgeCache folgendermaßen zu ändern:

    public static function purgeCache()
    {
        $filePath = 'system/cache/rocksolid_custom_elements_config.php';
        $fileFullPath = TL_ROOT . '/' . $filePath;
        if (file_exists($fileFullPath)) {
            file_put_contents($fileFullPath, '');
        }
    }
    

    und die Funktion loadConfig von Zeile 667 bis 669 folgendermaßen:

    vorher:

    $file = new \File($filePath, true);
    $file->write(implode("\n", $contents));
    $file->close();
    

    nachher:

    file_put_contents($fileFullPath, $contents);
    

    Könnten Sie uns bitte zusätzlich noch folgende Datenbank-Einstellungen bekannt geben (localconfig.php)?

    • $GLOBALS['TL_CONFIG']['dbDriver']
    • $GLOBALS['TL_CONFIG']['dbPconnect']
    • $GLOBALS['TL_CONFIG']['dbCharset']
  10. 10 Posted by Titus on 16 Oct, 2013 09:38 AM

    Titus's Avatar

    Zunächst habe ich auf die Version RSCE 1.0.6 Build 1 aktualisiert.

    Zudem habe ich die oben genannten Änderungen eingebaut, leider hatte das
    noch nicht den gewünschten Effekt.

    Kommentiere ich in der Methode loadConfig() die Zeile 649 aus (return;),
    läuft's bei mir.

    Die Einstellungen lauten wie folgt:

    $GLOBALS['TL_CONFIG']['dbDriver'] = MySQL
    $GLOBALS['TL_CONFIG']['dbPconnect'] = false
    $GLOBALS['TL_CONFIG']['dbCharset'] = 'UTF8'

  11. Support Staff 11 Posted by RockSolid Theme... on 16 Oct, 2013 10:05 AM

    RockSolid Themes's Avatar

    Versuchen Sie bitte noch die Zeile 51 ($this->reloadConfig();) auszukommentieren, eventuell behebt das den Fehler. Wir können leider nach wie vor den Fehler nicht reproduzieren, bitte geben Sie uns noch Betriebsystem, Betriebsystemversion, PHP-Version und Webserverversion bekannt.

  12. 12 Posted by Titus on 16 Oct, 2013 12:55 PM

    Titus's Avatar

    Ich würde vorschlagen, den Fehler zunächst einmal zu ignorieren, sofern
    ich der einzige Kunde mit dem Problem bin. Ich nutze jetzt einfach den
    beschriebenen Workaround, das wird für mich funktionieren.
    Vielen Dank bis hierher.

  13. Support Staff 13 Posted by RockSolid Theme... on 12 Dec, 2013 12:38 PM

    RockSolid Themes's Avatar

    Wir konnten den Fehler nun reproduzieren und haben ihn in der Version 1.0.12 der RockSolid Custom Elements behoben. Der Fehler trat nur in Verbindung mit PHP-Opcode-Caches mit einer speziellen Konfiguration auf.

Reply to this discussion

Internal reply

Formatting help / Preview (switch to plain text) No formatting (switch to Markdown)

Attaching KB article:

»

Attached Files

You can attach files up to 10MB

If you don't have an account yet, we need to confirm you're human and not a machine trying to post spam.

Keyboard shortcuts

Generic

? Show this help
ESC Blurs the current field

Comment Form

r Focus the comment reply box
^ + ↩ Submit the comment

You can use Command ⌘ instead of Control ^ on Mac