Skip to main content
Skip table of contents

Scripts de interacción con el usuario

Un script de interacción con el usuario permite programar una interacción con el propietario del trabajo y modificar el trabajo en función de la respuesta del usuario. En concreto, permite mostrar una serie de cuadros de diálogo de la interfaz de usuario con preguntas y botones de acción (SÍ/NO, IMPRIMIR/NO, SÍ/NO/CANCELAR). Dependiendo de la selección del usuario, se pueden mostrar más cuadros de diálogo y se pueden realizar acciones. Finalmente, cuando se procesa el último cuadro de diálogo, el script finaliza y el trabajo se establece como ready y puede liberarse.

Si hay un script de interacción con el usuario, este debe ejecutarse correctamente antes de que el trabajo pueda liberarse. Hasta entonces, el trabajo permanece en el pause estado hasta ese momento.

Se pueden utilizar funciones básicas de PHP, así como casi todas las descritas en la Referenciade scripts de trabajo. Los únicos dos métodos que no son compatibles con esta función son $this->job->setPrinted() y $this->job->pause(). Aparte de las clases, métodos y propiedades comunes, puede utilizar varias funciones adicionales para comunicarse con la aplicación MyQ Desktop Client.

Cómo escribir un script de interacción con el usuario

En la pestaña MyQ Desktop Client de una cola, en la sección Interacción con el usuario, añada el script en el campo y haga clic en Guardar.

En primer lugar, debe definir la main(). Esta función determina si debe abrirse el cuadro de diálogo (en qué condiciones) y qué cuadro de diálogo debe mostrarse.

A continuación, puede definir funciones al hacer clic con reacciones a la opción seleccionada: onYes(), onNo(), onPrint(), onCancel().

Las propiedades públicas se conservan entre llamadas. De hecho, se envían al cliente y se devuelven.

Estructura del script

Véase el siguiente script:

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

Utilizando el script anterior, este cuadro de diálogo se muestra en MDC:

Si estás familiarizado con el lenguaje PHP, el script es en realidad el cuerpo de la class UserScript {...} .

Puede definir propiedades como $hasMoreThan10pages. Las propiedades son persistentes entre múltiples invocaciones del script para el mismo trabajo. Úsalas para almacenar un estado entre múltiples cuadros de diálogo.

Existe la main función. Se llama una vez cuando se inicia el script. Úsala para mostrar el primer cuadro de diálogo.

Luego están las onXXX funciones. Son los controladores de acción que se invocan cuando se XXX se pulsa un botón. Por ejemplo, el Yes se gestiona mediante la onYes función.

Si no se muestra ningún cuadro de diálogo, el script ha finalizado.

Referencia de la API

Consulte la Referencia de scripts de trabajo para saber cómo modificar el trabajo y conocer muchas otras operaciones que puede realizar.

El script de interacción con el usuario se ejecuta en el contexto de la clase User. Se puede acceder al trabajo enviado como $this->job.

Se puede acceder a los objetos de todas las clases, excepto a los de la clase Session, a través del objeto de trabajo, por ejemplo, el owner $this->job->owner. Se puede acceder a los objetos de la clase Session a través de la MyQ() característica global; por ejemplo: MyQ()->logInfo("This message appears in the MyQ log.");.


Clase UserScript

El script de interacción del usuario es el cuerpo de la UserScript clase, tal y como se ha descrito anteriormente. MyQ también proporciona varios métodos integrados de la clase User, además de sus propios métodos.

Métodos de creación de diálogos

Función

Descripción

void dialogYesNo(string $text)

Crea un cuadro de diálogo con el $text como contenido y los botones Sí y No.

void dialogPrintNo(string $text)

Crea un cuadro de diálogo con $text como contenido y los botones Imprimir y No.

void dialogYesNoCancel(string $text)

Crea un cuadro de diálogo con $text como contenido y los botones Sí, No y Cancelar.

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

Crea un cuadro de diálogo con el $text como contenido y una matriz de campos personalizados. Un campo puede ser un botón o cualquier otro tipo de campo, como una lista, por ejemplo. Los botones siempre se muestran debajo de los demás campos.

FieldButton button(string $title, string $id)

Crea un botón personalizado que se puede utilizar en la dialog() función. $title es el texto que se muestra en el botón. El botón $id se utiliza al ejecutar el controlador del botón. MyQ busca un onXXX controlador donde XXX es el $id

FieldList singleSelectList(string $name, array $items)

Crea una lista de opciones de las que el usuario solo puede elegir una (grupo de botones de radio). Se puede utilizar en la dialog() función. El $items es un array asociativo donde la clave es la referencia de un elemento y el valor es el nombre de visualización del elemento visible en la interfaz de usuario.

FieldMultiSelectList multiSelectList(string $name, array $items)

Crea una lista de opciones de las que el usuario puede elegir varias (casillas de selección). Se puede utilizar en la dialog() función. El $items es un array asociativo donde la clave es la referencia de un elemento y el valor es el nombre de visualización del elemento visible en la interfaz de usuario.

Método onCancel

onCancel gestiona el botón Cancelar y se proporciona por defecto. Llama a terminate(). Puede proporcionar su propia implementación para cambiar el comportamiento.

Otros métodos

Función

Descripción

void terminate()

Finaliza el procesamiento del script. El script no se ha ejecutado correctamente y el trabajo permanece en el pause estado. El usuario debe volver a ejecutar el script.

mixed getField(string $name)

Obtiene el valor del campo con el $name después de que el usuario haya interactuado con el cuadro de diálogo. El campo debe haber sido creado mediante los métodos singleSelectList (el resultado es un valor escalar) o multiSelectList (el resultado es una matriz de valores, que puede ser una matriz vacía).

 

JavaScript errors detected

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

If this problem persists, please contact our support.