Script d’interaction avec l’utilisateur
Un script d'interaction utilisateur permet de programmer une interaction avec le propriétaire du travail et de modifier le travail en fonction de la réponse de l'utilisateur. Plus précisément, il permet d'afficher une série de boîtes de dialogue avec des questions et des boutons d'action (OUI/NON, IMPRIMER/NON, OUI/NON/ANNULER). En fonction du choix de l'utilisateur, d'autres boîtes de dialogue peuvent s'afficher et des actions peuvent être effectuées. Enfin, lorsque la dernière boîte de dialogue est traitée, le script est terminé et le travail est défini comme ready et peut être lancé.
Si un script d'interaction utilisateur est présent, il doit d'abord être exécuté avec succès avant que le travail puisse être lancé. Le travail est maintenu en pause jusqu’à ce moment-là.
Les fonctions PHP de base peuvent être utilisées, ainsi que la quasi-totalité de celles décrites dans le Guide deréférence sur les scripts de travail. Les deux seules méthodes non prises en charge par cette fonctionnalité sont $this->job->setPrinted() et $this->job->pause(). Outre les classes, méthodes et propriétés courantes, vous pouvez utiliser plusieurs fonctions supplémentaires pour communiquer avec l’application MyQ Desktop Client.
Comment écrire un script d'interaction utilisateur
Dans l'onglet MyQ Desktop Client d'une file d'impression, dans la section Interaction utilisateur, ajoutez le script dans le champ, puis cliquez sur Enregistrer.
Vous devez d'abord définir la main(). Cette fonction détermine si la boîte de dialogue doit s’ouvrir (dans quelles conditions) et quelle boîte de dialogue doit s’afficher.
Vous pouvez ensuite définir des fonctions de clic avec des réactions à l'option sélectionnée : onYes(), onNo(), onPrint(), onCancel().
Les propriétés publiques sont conservées entre les appels. En fait, elles sont envoyées au client puis renvoyées.
Structure du script
Consultez le script suivant :
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.
}
À l'aide du script ci-dessus, cette boîte de dialogue s'affiche dans MDC :

Si vous connaissez le langage PHP, le script correspond en réalité au corps de l'instruction class UserScript {...} .
Vous pouvez définir des propriétés telles que $hasMoreThan10pages. Les propriétés sont persistantes entre plusieurs exécutions du script pour le même travail. Utilisez-les pour stocker un état entre plusieurs boîtes de dialogue.
Il existe la main . Elle est appelée une fois au démarrage du script. Utilisez-la pour afficher la première boîte de dialogue.
Il y a ensuite les onXXX fonctions. Il s'agit des gestionnaires d'action appelés lorsqu'un XXX bouton est enfoncé. Par exemple, le Yes bouton est géré via la onYes .
Si vous n'affichez aucune boîte de dialogue, le script est terminé.
Référence API
Consultez la référence surles scripts de travaux pour savoir comment modifier le travail et découvrir les nombreuses autres opérations que vous pouvez effectuer.
Le script d'interaction utilisateur s'exécute dans le contexte de la classeUser. Le travail envoyé est accessible en tant que $this->job.
Les objets de toutes les classes, à l'exception de la classe Session, sont accessibles via l'objet de travail, par exemple la owner $this->job->owner. Les objets de la classeSession sont accessibles via la MyQ() fonctionnalité globale ; par exemple : MyQ()->logInfo("This message appears in the MyQ log.");.
Classe UserScript
Le script d'interaction utilisateur constitue le corps de la UserScript classe, comme décrit ci-dessus. MyQ fournit également plusieurs méthodes embarquées de la classeUser en plus de vos propres méthodes.
Méthodes de création de boîtes de dialogue
Fonction | Description |
|---|---|
void dialogYesNo(string $text) | Crée une boîte de dialogue avec le |
void dialogPrintNo(string $text) | Crée une boîte de dialogue avec le |
void dialogYesNoCancel(string $text) | Crée une boîte de dialogue avec le |
void dialog(string $text, Field[] $fields) | Crée une boîte de dialogue avec le |
FieldButton button(string $title, string $id) | Crée un bouton personnalisé pouvant être utilisé dans la |
FieldList singleSelectList(string $name, array $items) | Crée une liste d'options parmi lesquelles l'utilisateur ne peut en choisir qu'une seule (groupe de boutons radio). Elle peut être utilisée dans la |
FieldMultiSelectList multiSelectList(string $name, array $items) | Crée une liste d'options parmi lesquelles l'utilisateur peut en sélectionner plusieurs (cases à cocher). Elle peut être utilisée dans la |
Méthode onCancel
onCancel gère le bouton Annuler et est fournie par défaut. Elle appelle terminate(). Vous pouvez fournir votre propre implémentation pour modifier le comportement.
Autres méthodes
Fonction | Description |
|---|---|
void terminate() | Mette fin au traitement du script. Le script n'a pas été exécuté avec succès et le travail reste dans l' |
mixed getField(string $name) | Récupère la valeur du champ portant le |