Skip to main content
Skip table of contents

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 de l'interface utilisateur contenant des questions et des boutons d'action (OUI/NON, IMPRIMER/NON, OUI/NON/ANNULER). En fonction de la sélection 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 travaux. 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 :

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.
}

À 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 sur les 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 classe User. 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 classe Session 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 classe User 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 $text comme contenu et des boutons Oui et Non.

void dialogPrintNo(string $text)

Crée une boîte de dialogue avec le $text comme contenu et les boutons Imprimer et Non.

void dialogYesNoCancel(string $text)

Crée une boîte de dialogue avec le $text comme contenu et les boutons Oui, Non et Annuler.

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

Crée une boîte de dialogue avec le $text comme contenu et un tableau de champs personnalisés. Un champ peut être un bouton ou tout autre type de champ, comme une liste, par exemple. Les boutons sont toujours affichés sous les autres champs.

FieldButton button(string $title, string $id)

Crée un bouton personnalisé pouvant être utilisé dans la dialog() fonction. $title est le texte affiché sur le bouton. Le bouton $id est utilisé lors de l'exécution du gestionnaire de bouton. MyQ recherche un onXXX gestionnaire où XXX est la $id

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 dialog() fonction. Le $items est un tableau associatif où la clé est la référence d'un élément et la valeur est le nom d'affichage de l'élément visible dans l'interface utilisateur.

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 dialog() fonction. Le $items est un tableau associatif où la clé est la référence d'un élément et la valeur est le nom d'affichage de l'élément visible dans l'interface utilisateur.

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' pause . L'utilisateur doit réexécuter le script.

mixed getField(string $name)

Récupère la valeur du champ portant le $name après que l'utilisateur a interagi avec la boîte de dialogue. Le champ doit avoir été créé par les méthodes singleSelectList (le résultat est une valeur scalaire) ou multiSelectList (le résultat est un tableau de valeurs, qui peut être un tableau vide).

 

JavaScript errors detected

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

If this problem persists, please contact our support.