Skip to main content
Skip table of contents

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:

PHP
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:

image-20250311-104101.png

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 $text als Inhalt und den Schaltflächen „Ja“ und „Nein“.

void dialogPrintNo(string $text)

Erstellt ein Dialogfeld mit dem $text als Inhalt und den Schaltflächen „Drucken“ und „Nein“.

void dialogYesNoCancel(string $text)

Erstellt ein Dialogfeld mit dem $text als Inhalt und den Schaltflächen „Ja“, „Nein“ und „Abbrechen“.

void dialog(string $text, Field[] $fields)

Erstellt ein Dialogfeld mit dem $text als Inhalt und einem Array benutzerdefinierter Felder. Ein Feld kann eine Schaltfläche oder ein beliebiger anderer Feldtyp sein, wie beispielsweise eine Liste. Schaltflächen werden immer unterhalb anderer Felder angezeigt.

FieldButton button(string $title, string $id)

Erstellt eine benutzerdefinierte Schaltfläche, die in der dialog() Funktion verwendet werden kann. $title ist ein Text, der auf der Schaltfläche angezeigt wird. Die Schaltfläche $id wird bei der Ausführung des Schaltflächen-Handlers verwendet. MyQ sucht nach einem onXXX Handler, bei dem XXX ist die $id

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 dialog() Funktion verwendet werden. Das $items ist ein assoziatives Array, bei dem der Schlüssel die Referenz eines Elements und der Wert der in der Benutzeroberfläche sichtbare Anzeigename des Elements ist.

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 dialog() Funktion verwendet werden. Das $items ist ein assoziatives Array, bei dem der Schlüssel die Referenz eines Elements und der Wert der in der Benutzeroberfläche sichtbare Anzeigename des Elements ist.

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 pause Status. Der Benutzer muss das Skript erneut ausführen.

mixed getField(string $name)

Ruft den Wert des Feldes mit dem $name , nachdem der Benutzer mit dem Dialog interagiert hat. Das Feld muss mit den Methoden singleSelectList (das Ergebnis ist ein Skalarwert) oder multiSelectList (das Ergebnis ist ein Array von Werten, das ein leeres Array sein kann).

 

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.