Skripting der Benutzerinteraktion
Ein Benutzerinteraktionsskript ermöglicht es, eine Interaktion mit dem Auftragsinhaber zu programmieren und den Auftrag basierend auf der Antwort des Benutzers anzupassen. Konkret ermöglicht es die Anzeige einer Reihe von UI-Dialogfeldern mit Fragen und Aktionsschaltflächen (JA/NEIN, DRUCKEN/NEIN, JA/NEIN/ABBRECHEN). Je nach Auswahl des Benutzers können weitere Dialogfelder angezeigt und Aktionen ausgeführt werden. Sobald der letzte Dialogfeld verarbeitet wurde, ist das Skript beendet und der Auftrag wird auf ready und kann freigegeben werden.
Wenn ein Benutzerinteraktionsskript vorhanden ist, muss dieses zunächst erfolgreich ausgeführt werden, bevor der Auftrag freigegeben werden kann. Bis dahin bleibt der Auftrag im pause Zustand versetzt.
Es können grundlegende PHP-Funktionen verwendet werden, darunter fast alle, die in der Job-Skript-Referenz beschrieben sind. Die einzigen beiden Methoden, die von dieser Funktion nicht unterstützt werden, sind $this->job->setPrinted() und $this->job->pause(). Neben den üblichen Klassen, Methoden und Eigenschaften können Sie mehrere zusätzliche Funktionen nutzen, um mit der MyQ-Desktop-Client-Anwendung zu kommunizieren.
So schreiben Sie ein Benutzerinteraktionsskript
Fügen Sie auf der Registerkarte „MyQ Desktop Client“ einer Warteschlange im Abschnitt „Benutzerinteraktion“ das Skript in das Feld ein und klicken Sie auf „Speichern“.
Zunächst müssen Sie die main(). Diese Funktion legt fest, ob das Dialogfeld geöffnet werden soll (unter welchen Bedingungen) und welches Dialogfeld angezeigt werden soll.
Anschließend können Sie Klickfunktionen mit Reaktionen auf die ausgewählte Option definieren: onYes(), onNo(), onPrint(), onCancel().
Öffentliche Eigenschaften bleiben zwischen Aufrufen erhalten. Tatsächlich werden sie an den Client gesendet und zurückgesendet.
Skriptstruktur
Siehe das folgende Skript:
public $hasMoreThan10pages;
// script entry point
function main() {
/** Job object */
$job = $this->job;
$this->hasMoreThan10pages = $job->pageCount > 10;
// Show dialog if the job has more than 10 pages
if ($this->hasMoreThan10pages === true) {
$this->dialogYesNo("Job has more than 10 pages. Do you want to print in duplex?");
}
}
// If yes clicked
function onYes() {
// $this->hasMoreThan10pages is available also here
$this->job->duplex = 'longEdge';
}
// If no clicked
function onNo() {
// nothing. Job will be released.
}
Mit dem obigen Skript wird dieses Dialogfeld in MDC angezeigt:

Wenn Sie mit der Sprache PHP vertraut sind: Das Skript ist eigentlich der Hauptteil einer class UserScript {...} Anweisung.
Sie können Eigenschaften wie $hasMoreThan10pages. Eigenschaften bleiben über mehrere Skriptaufrufe für denselben Job hinweg erhalten. Verwenden Sie sie, um einen Zustand zwischen mehreren Dialogen zu speichern.
Es gibt die main Funktion. Sie wird einmal aufgerufen, wenn das Skript startet. Verwenden Sie sie, um den ersten Dialog anzuzeigen.
Dann gibt es die onXXX Funktionen. Sie sind die Aktionshandler, die aufgerufen werden, wenn eine XXX Schaltfläche gedrückt wird. Beispielsweise wird die Yes Schaltfläche wird über die onYes Funktion.
Wenn Sie keinen Dialog anzeigen, ist das Skript beendet.
API-Referenz
Informationen zum Anpassen des Jobs sowie zu vielen weiteren möglichen Vorgängen finden Sie unter „Job-Skript-Referenz“.
Das Benutzerinteraktionsskript läuft im Kontext der User-Klasse. Auf den gesendeten Job kann wie folgt zugegriffen werden $this->job.
Objekte aus allen Klassen, mit Ausnahme der Session-Klasse, können über das Job-Objekt aufgerufen werden, zum Beispiel die owner $this->job->owner. Auf Objekte der Session-Klasse kann über die MyQ() globale Funktion; zum Beispiel: MyQ()->logInfo("This message appears in the MyQ log.");.
UserScript-Klasse
Das Benutzerinteraktionsskript ist der Hauptteil der UserScript Klasse, wie oben beschrieben. MyQ stellt zusätzlich zu Ihren eigenen Methoden auch mehrere integrierte Methoden der User-Klasse bereit.
Methoden zur Dialogerstellung
Funktion | Beschreibung |
|---|---|
void dialogYesNo(string $text) | Erstellt ein Dialogfeld mit dem |
void dialogPrintNo(string $text) | Erstellt ein Dialogfeld mit dem |
void dialogYesNoCancel(string $text) | Erstellt ein Dialogfeld mit dem |
void dialog(string $text, Field[] $fields) | Erstellt ein Dialogfeld mit dem |
FieldButton button(string $title, string $id) | Erstellt eine benutzerdefinierte Schaltfläche, die in der |
FieldList singleSelectList(string $name, array $items) | Erstellt eine Liste von Optionen, aus der der Benutzer nur eine auswählen kann (Radio-Gruppe). Sie kann in der |
FieldMultiSelectList multiSelectList(string $name, array $items) | Erstellt eine Liste von Optionen, aus der der Benutzer mehrere auswählen kann (Kontrollkästchen). Sie kann in der |
onCancel-Methode
onCancel behandelt die Schaltfläche „Abbrechen“ und wird standardmäßig bereitgestellt. Sie ruft terminate(). Sie können eine eigene Implementierung bereitstellen, um das Verhalten zu ändern.
Andere Methoden
Funktion | Beschreibung |
|---|---|
void terminate() | Beendet die Skriptverarbeitung. Das Skript wurde nicht erfolgreich ausgeführt und der Job verbleibt im |
mixed getField(string $name) | Ruft den Wert des Feldes mit dem |