hbarthel
New Responder

Template Debugger Usability / Features

Jump to solution

Hallo Community,

der Template Debugger hat mir schon oft geholfen, schnell Fehler zu analysieren. Deswegen Danke an e-Spirit für diese Erleichterung. Aber: das Hin- und Hergeschiebe der Fenster nervt ohne Ende oder hat jemand von Euch mal horizontale Scrollbalken gefunden, damit man längere Werte von Variablen auch lesen kann?

Mit dem Template Debugger will ich oft die Generierung simulieren, nur ich finde nirgends eine Möglichkeit, den UrlCreator zu konfigurieren, so wie das im GenerateTask geht. Geht das oder muss ich einen Feature-Request aufmachen? Wenn letzteres: vermisst Ihr das auch?

Ich würde mir wünschen, dass man im Settings-Bereich ein Stück Code pflegen kann, das einfach vorher immer ausgeführt wird. So könnte ich den UrlCreator setzen und evtl. auch den Datensatz, der bei Content-Projektionen verwendet werden soll. Heute helfe ich mir damit, das im Template temporär für die Debugging-Session reinzuschreiben. Leider habe ich aber auch schonmal vergessen, den Debug-Code wieder rauszunehmen ...

Gruß Heiko

1 Solution

Accepted Solutions

Hallo Heiko, hallo Felix,

ob man sich gerade im Debugger befindet, lässt sich auch über die Art des aktuellen Contexts herausfinden:

Auswahl_002.png

Dann brauchst Du im Skript nicht über den TemplateDebuggerService zu gehen, Heiko.

Viele Grüße

Donato

View solution in original post

8 Replies
felix_reinhold
Returning Responder

Hallo Heiko,

Ich würde mir wünschen, dass man im Settings-Bereich ein Stück Code pflegen kann, das einfach vorher immer ausgeführt wird.

über den TemplateDebuggerService kannst du abfragen, ob der Debugger gerade läuft.

Ich würde also empfehlen den Code in das Projekteinstellungstemplate zu übernehmen, da darin enthaltener Template-Code auch in der Preview immer vor dem Generieren einer Seite ausgeführt würde. So könntest du dort einfach einen Abschnitt mit TemplateDebugger-Settings machen, die nur gesetzt werden, wenn der Debugger läuft.

Beste Grüße

Felix

0 Kudos

Die Idee ist genial. Habe mir ein Skript gemacht:

//!Beanshell

import de.espirit.firstspirit.access.ServicesBroker;

import de.espirit.firstspirit.access.ServiceNotFoundException;

import de.espirit.firstspirit.debugger.client.TemplateDebuggerService;

final ServicesBroker servicesBroker = context.requestSpecialist(ServicesBroker.TYPE);

try {

  final TemplateDebuggerService tds = servicesBroker.getService(TemplateDebuggerService.class);

  result.setValue(tds.isDebuggerRunning());

} catch (ServiceNotFoundException e) {

  return "TemplateDebuggerService not found";

}

Kriege allerdings einen Fehler:

ERROR (Script 'debug_stuff' (id=1289446) at 0, 0):  at 0, 0: Script 'debug_stuff' (id=1289446) - Typed variable declaration : Class: TemplateDebuggerService not found in namespace : at Line: 9 : in file: inline evaluation of: ``__execute() { //!Beanshell import de.espirit.firstspirit.access.ServicesBroker;  . . . '' : TemplateDebuggerService

Und Zeile 9 ist:

final TemplateDebuggerService tds = servicesBroker.getService(TemplateDebuggerService.class);

0 Kudos
felix_reinhold
Returning Responder

Hmm, schade.. Bin einfach davon ausgegangen, dass der Service normal verfügbar ist. Habe aber gerade in die module.xml des fs-debugger.fsm geschaut und leider sind die Klassen nur im Modul verfügbar. Der einzige Weg über die API wäre dann wohl nur noch den Status des Debugger-Fensters abzufragen --> Alles andere als schön Smiley Sad

0 Kudos

Hallo Heiko, hallo Felix,

ob man sich gerade im Debugger befindet, lässt sich auch über die Art des aktuellen Contexts herausfinden:

Auswahl_002.png

Dann brauchst Du im Skript nicht über den TemplateDebuggerService zu gehen, Heiko.

Viele Grüße

Donato

Hey Donato,

cool, vielen Dank für die Info!

Gruß

Felix

0 Kudos

Hallo Felix,

ist deine Frage damit beantwortet oder benötigst du noch weitere Hilfe? Smiley Happy

Sollte deine Frage beantwortet sein, wäre es super, wenn du Donatos "richtige Antwort" entsprechend markierst.

Viele Grüße

Michaela

0 Kudos

Hallo Michaela,

die Frage war von Heiko. Ich konnte Donatos Antwort somit nur als hilfreich und nicht als richtig markieren /abschließen.

Gruß

Felix

0 Kudos

Danke Donato, der Tipp ist super. Dieses Stück Code in der Seitenvorlage der Project Settings habe ich für meine Zwecke eingebaut:

$CMS_IF(#global.class.name.contains("Debugger"))$

    $CMS_VALUE(#global.logInfo("Running in Debugger"))$

    $-- for the Developer: put in here code to be executed for your debugging session, e.g. set variables --$

$CMS_END_IF$

0 Kudos