FriendsOfREDAXO / developer

Ermöglicht die Bearbeitung von Templates, Modulen und Aktionen im Dateisystem (also mit einem beliebigen Editor).
MIT License
90 stars 11 forks source link

Editor API Integration #69

Closed staabm closed 5 years ago

staabm commented 6 years ago

Module und templates via „im editor öffnen“ buttons ermöglichen (für lokale installation)

Wenn developer in kombination mit ydeploy verwendet wird, sollten die editorUrls so umgebogen werden dass automatisch die korrekten lokalen files geöffnet werden

alxndr-w commented 5 years ago

Mir scheint, als funktioniert das nicht... bei einem Whoops kann ich beim Klick auf den Link zum Modul dieses im Backend öffnen. Leider jedoch nicht im Editor.

staabm commented 5 years ago

ist dein developer addon aktuell genug (min. 3.8.0)?

falls ja, könnte ich mir vorstellen dass es bei dir im konkreten fall an der leidereihenfolge der addons liegt, falls du diese "manipuliert" hast.

kannst du es mal lokal mit einer demo probieren?

alxndr-w commented 5 years ago

~Siehe https://github.com/redaxo/redaxo/issues/2769~

alxndr-w commented 5 years ago

Description / Beschreibung Kein Link aufs Dateisystem, sondern ins REDAXO-Backend bei einem Whoops im Template/Modul

image

Affected versions / Verwendete Versionen REDAXO: 5.7.1 PHP: 7.3 Browser: * AddOns: developer 3.8

alxndr-w commented 5 years ago

Die Reihenfolge der Addons habe ich nicht manipuliert.

gharlan commented 5 years ago

Hmm, ich kann das bei mir nicht reproduzieren, bei mir führt der Link ins Dateisystem.

gharlan commented 5 years ago

Ggf. kannst du debuggen, bei welchem return hier ausgestiegen wird?

alxndr-w commented 5 years ago

gerade das Issue nochmals gelesen: Liegt es daran, dass ich kein YDeploy verwende? Sollte doch auch ohne funktionieren

Ich debugge es Mal, komme aber erst später dazu.

gharlan commented 5 years ago

Ich habe es ohne ydeploy getestet.

gharlan commented 5 years ago

ping

alxndr-w commented 5 years ago

Ich habe mir nochmal eine Erinnerung erstellt und mir vorgenommen, bis zum Wochenende darauf zu antworten.

alxndr-w commented 5 years ago

Dieser Bereich wird innerhalb eines Whoooops scheinbar mehrfach aufgerufen, sodass mir ein sinnvolles Debuggen nicht möglich erscheint. Ich bekomme hier ganz viele Logeinträge mit einem Aufruf erzeugt, wenn ich das hier bei deiner Code-Markierung einsetze:


rex_extension::register('EDITOR_URL', function (rex_extension_point $ep) {
    if (!preg_match('@^rex:///(template|module|action)/(\d+)(?:/([^/]+))?@', $ep->getParam('file'), $match)) {
        rex_logger::logError(E_WARNING, (string)$ep->getParam('file'), "", 24);
        return null;
    }

    $type = $match[1];
    $id = $match[2];

    if (!$this->getConfig($type.'s')) {
        rex_logger::logError(E_WARNING, (string)$this->getConfig($type.'s'), "", 32);
        return null;
    }

    if ('template' === $type) {
        $subtype = 'template';
    } elseif (!isset($match[3])) {
        rex_logger::logError(E_WARNING, "Line 39", "", 39);
        return null;
    } else {
        rex_logger::logError(E_WARNING, "Line 42", "", 42);
        $subtype = $match[3];
    }

    $path = rtrim(rex_developer_manager::getBasePath(), '/\\').'/'.$type.'s';

    if (!$files = rex_developer_synchronizer::glob("$path/*/$id.rex_id", GLOB_NOSORT)) {
        rex_logger::logError(E_WARNING, "Line 49", "", 49);
        return null;
    }

    $path = dirname($files[0]);

    if (!$files = rex_developer_synchronizer::glob("$path/*$subtype.php", GLOB_NOSORT)) {
        return null;
    }

    return rex_editor::factory()->getUrl($files[0], $ep->getParam('line'));
}, rex_extension::LATE);

Darunter auch leere Logeinträge:

2019-08-17 15:09:28 | Warning | 
2019-08-17 15:09:28 | Warning | 
2019-08-17 15:09:28 | Warning | 
2019-08-17 15:09:28 | Warning | 
2019-08-17 15:09:28 | Warning | D:\xampp\htdocs\website.de\redaxo\cache\addons\structure\3.1.content
2019-08-17 15:09:28 | Warning | D:\xampp\htdocs\website.de\redaxo\cache\addons\structure\3.1.content
2019-08-17 15:09:28 | Warning | D:\xampp\htdocs\website.de\redaxo\src\addons\structure\plugins\content\lib\article_content.php
2019-08-17 15:09:28 | Warning | D:\xampp\htdocs\website.de\redaxo\src\addons\structure\plugins\content\lib\article_content.php
2019-08-17 15:09:28 | Warning | 
2019-08-17 15:09:28 | Warning | 
2019-08-17 15:09:28 | Warning | D:\xampp\htdocs\website.de\redaxo\src\addons\structure\plugins\content\lib\article_content_base.php
2019-08-17 15:09:28 | Warning | D:\xampp\htdocs\website.de\redaxo\src\addons\structure\plugins\content\lib\article_content_base.php
2019-08-17 15:09:28 | Warning | D:\xampp\htdocs\website.de\redaxo\src\addons\structure\plugins\content\boot.php
2019-08-17 15:09:28 | Warning | D:\xampp\htdocs\website.de\redaxo\src\addons\structure\plugins\content\boot.php
2019-08-17 15:09:28 | Warning | D:\xampp\htdocs\website.de\redaxo\src\core\lib\extension.php
2019-08-17 15:09:28 | Warning | D:\xampp\htdocs\website.de\redaxo\src\core\lib\extension.php
2019-08-17 15:09:28 | Warning | D:\xampp\htdocs\website.de\redaxo\src\core\frontend.php
2019-08-17 15:09:28 | Warning | D:\xampp\htdocs\website.de\redaxo\src\core\frontend.php
2019-08-17 15:09:28 | Warning | D:\xampp\htdocs\website.de\redaxo\src\core\boot.php
2019-08-17 15:09:28 | Warning | D:\xampp\htdocs\website.de\redaxo\src\core\boot.php
2019-08-17 15:09:28 | Warning | D:\xampp\htdocs\website.de\index.php
2019-08-17 15:09:28 | Warning | D:\xampp\htdocs\website.de\index.php
2019-08-17 15:09:30 | Warning | D:\xampp\htdocs\website.de\redaxo\data\core\system.log
gharlan commented 5 years ago

Die leeren Einträge kommen sicherlich aus diesem Part:

    if (!$this->getConfig($type.'s')) {
        rex_logger::logError(E_WARNING, (string)$this->getConfig($type.'s'), "", 32);
        return null;
    }

Wenn die Config nicht gesetzt ist (also false oder null), dann loggst du diesen Configwert, also einen leeren String. Somit wissen wir, dass an dieser Stelle teilweise ausgestiegen wird. Sieht für mich auf den ersten Blick so aus, als wäre in den Developer Einstellungen das Syncing gar nicht aktiv. Das kannst du aber vermutlich ausschließen?

alxndr-w commented 5 years ago

Genau. Sync wird ausgeführt. Brauchst du bestimme Einstellungen zum Nachstellen?

Der sync über das theme-Add-on ist aktiv, falls das Querschießen könnte.

gharlan commented 5 years ago

Das heißt in den Developer-Einstellungen ist das Syncing nicht aktiv? Dann wäre das der Grund. (Weiß nicht wie das beim Theme-Addon ist)

alxndr-w commented 5 years ago

@skerbis ist mein Issue vlt ein Theme-Problem?

gharlan commented 5 years ago

das theme-addon deaktiviert scheinbar in der tat das native syncing des developer-addons: https://github.com/FriendsOfREDAXO/theme/blob/d2c020477241586ffdc650635bcf7051c6b1b9c3/lib/developer/theme_manager.php#L12-L21

Ich denke, das kann man hier im Addon nicht sinnvoll lösen, sondern müsste eher im theme-Addon gelöst werden. Entweder indem die Extension an dem EP in das theme-Addon dupliziert wird (dort dann mit den eigenen Einstellungen), oder indem das theme-Addon nicht mehr die Sync-Einstellungen überschreibt. War das nicht nur ein Workaround, da man den Developer-Pfad nicht programmatisch ändern konnte? Inzwischen geht das ja. Ping @DanielWeitenauer

Hier schließe ich erstmal.

DanielWeitenauer commented 5 years ago

Ich schaue es mir die Tage an. Diese Woche bin ich allerdings noch unterwegs.