]> git.ipfire.org Git - thirdparty/cups.git/commitdiff
Improve performance of web interface with large numbers of jobs (Issue #3819)
authorMichael Sweet <michael.r.sweet@gmail.com>
Wed, 25 May 2016 21:33:36 +0000 (17:33 -0400)
committerMichael Sweet <michael.r.sweet@gmail.com>
Wed, 25 May 2016 21:33:36 +0000 (17:33 -0400)
Also re-work web interface to not allow the order to be changed (since that
will negatively impact performance) but instead add first/last buttons to the
pager.

29 files changed:
CHANGES.txt
cgi-bin/classes.c
cgi-bin/ipp-var.c
cgi-bin/printers.c
scheduler/ipp.c
templates/classes.tmpl
templates/de/classes.tmpl
templates/de/jobs.tmpl
templates/de/pager.tmpl
templates/de/printers.tmpl
templates/es/classes.tmpl
templates/es/jobs.tmpl
templates/es/pager.tmpl
templates/es/printers.tmpl
templates/ja/classes.tmpl
templates/ja/jobs.tmpl
templates/ja/pager.tmpl
templates/ja/printers.tmpl
templates/jobs.tmpl
templates/pager.tmpl
templates/printers.tmpl
templates/pt_BR/classes.tmpl
templates/pt_BR/jobs.tmpl
templates/pt_BR/pager.tmpl
templates/pt_BR/printers.tmpl
templates/ru/classes.tmpl
templates/ru/jobs.tmpl
templates/ru/pager.tmpl
templates/ru/printers.tmpl

index f463af2306fa8734c28c3b5739bb76ce718b89c9..d8d1f724634471f731bf62402adedc34bd24f658 100644 (file)
@@ -1,8 +1,10 @@
-CHANGES.txt - 2.2b1 - 2016-05-18
+CHANGES.txt - 2.2b1 - 2016-05-25
 --------------------------------
 
 CHANGES IN CUPS V2.2b1
 
+       - Improved performance of web interface with large numbers of jobs
+         (Issue #3819)
        - Encrypted printing can now be limited to only trusted printers and
          servers (<rdar://problem/25711658>)
        - The scheduler now advertises PWG Raster attributes for IPP Everywhere
index 7c4ac9d25fafa44ec7b6c84a00b1317404b49232..ae76a0c9fc24bc5e5a2f1f46dbfdc6bd6944d6d0 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Class status CGI for CUPS.
  *
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2006 by Easy Software Products.
  *
  * These coded instructions, statements, and computer programs are the
@@ -297,8 +297,7 @@ show_all_classes(http_t     *http,  /* I - Connection to server */
                        *response;      /* IPP response */
   cups_array_t         *classes;       /* Array of class objects */
   ipp_attribute_t      *pclass;        /* Class object */
-  int                  ascending,      /* Order of classes (0 = descending) */
-                       first,          /* First class to show */
+  int                  first,          /* First class to show */
                        count;          /* Number of classes */
   const char           *var;           /* Form variable */
   void                 *search;        /* Search data */
@@ -370,25 +369,10 @@ show_all_classes(http_t     *http,        /* I - Connection to server */
     sprintf(val, "%d", count);
     cgiSetVariable("TOTAL", val);
 
-    if ((var = cgiGetVariable("ORDER")) != NULL && *var)
-      ascending = !_cups_strcasecmp(var, "asc");
-    else
-      ascending = 1;
-
-    if (ascending)
-    {
-      for (i = 0, pclass = (ipp_attribute_t *)cupsArrayIndex(classes, first);
-          i < CUPS_PAGE_MAX && pclass;
-          i ++, pclass = (ipp_attribute_t *)cupsArrayNext(classes))
-        cgiSetIPPObjectVars(pclass, NULL, i);
-    }
-    else
-    {
-      for (i = 0, pclass = (ipp_attribute_t *)cupsArrayIndex(classes, count - first - 1);
-          i < CUPS_PAGE_MAX && pclass;
-          i ++, pclass = (ipp_attribute_t *)cupsArrayPrev(classes))
-        cgiSetIPPObjectVars(pclass, NULL, i);
-    }
+    for (i = 0, pclass = (ipp_attribute_t *)cupsArrayIndex(classes, first);
+        i < CUPS_PAGE_MAX && pclass;
+        i ++, pclass = (ipp_attribute_t *)cupsArrayNext(classes))
+      cgiSetIPPObjectVars(pclass, NULL, i);
 
    /*
     * Save navigation URLs...
@@ -408,6 +392,12 @@ show_all_classes(http_t     *http, /* I - Connection to server */
       cgiSetVariable("NEXT", val);
     }
 
+    if (count > CUPS_PAGE_MAX)
+    {
+      snprintf(val, sizeof(val), "%d", CUPS_PAGE_MAX * (count / CUPS_PAGE_MAX));
+      cgiSetVariable("LAST", val);
+    }
+
    /*
     * Then show everything...
     */
index 827c55cfb3e86e86a15aeff21ee5c9da450de2c3..877d37c28de555b94cc8183458b150acf974022d 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * CGI <-> IPP variable routines for CUPS.
  *
- * Copyright 2007-2015 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2007 by Easy Software Products.
  *
  * These coded instructions, statements, and computer programs are the
@@ -1358,8 +1358,7 @@ cgiShowJobs(http_t     *http,             /* I - Connection to server */
                        *response;      /* IPP response */
   cups_array_t         *jobs;          /* Array of job objects */
   ipp_attribute_t      *job;           /* Job object */
-  int                  ascending,      /* Order of jobs (0 = descending) */
-                       first,          /* First job to show */
+  int                  first,          /* First job to show */
                        count;          /* Number of jobs */
   const char           *var,           /* Form variable */
                        *query,         /* Query string */
@@ -1395,6 +1394,17 @@ cgiShowJobs(http_t     *http,            /* I - Connection to server */
     ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, "which-jobs",
                  NULL, which_jobs);
 
+  if ((var = cgiGetVariable("FIRST")) != NULL)
+  {
+    if ((first = atoi(var)) < 0)
+      first = 0;
+  }
+  else
+    first = 0;
+
+  if (first > 0)
+    ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_INTEGER, "first-index", first + 1);
+
   cgiGetAttributes(request, "jobs.tmpl");
 
  /*
@@ -1417,7 +1427,7 @@ cgiShowJobs(http_t     *http,             /* I - Connection to server */
     }
 
     jobs  = cgiGetIPPObjects(response, search);
-    count = cupsArrayCount(jobs);
+    count = cupsArrayCount(jobs) + first;
 
     if (search)
       cgiFreeSearch(search);
@@ -1426,25 +1436,6 @@ cgiShowJobs(http_t     *http,            /* I - Connection to server */
     * Figure out which jobs to display...
     */
 
-    if ((var = cgiGetVariable("FIRST")) != NULL)
-      first = atoi(var);
-    else
-      first = 0;
-
-    if (first >= count)
-      first = count - CUPS_PAGE_MAX;
-
-    first = (first / CUPS_PAGE_MAX) * CUPS_PAGE_MAX;
-
-    if (first < 0)
-      first = 0;
-
-    if ((var = cgiGetVariable("ORDER")) != NULL && *var)
-      ascending = !_cups_strcasecmp(var, "asc");
-    else
-      ascending = !which_jobs || !*which_jobs ||
-                  !_cups_strcasecmp(which_jobs, "not-completed");
-
     section = cgiGetVariable("SECTION");
 
     cgiClearVariables();
@@ -1452,8 +1443,6 @@ cgiShowJobs(http_t     *http,             /* I - Connection to server */
     if (query)
       cgiSetVariable("QUERY", query);
 
-    cgiSetVariable("ORDER", ascending ? "asc" : "dec");
-
     cgiSetVariable("SECTION", section);
 
     sprintf(val, "%d", count);
@@ -1462,20 +1451,10 @@ cgiShowJobs(http_t     *http,           /* I - Connection to server */
     if (which_jobs)
       cgiSetVariable("WHICH_JOBS", which_jobs);
 
-    if (ascending)
-    {
-      for (i = 0, job = (ipp_attribute_t *)cupsArrayIndex(jobs, first);
-          i < CUPS_PAGE_MAX && job;
-          i ++, job = (ipp_attribute_t *)cupsArrayNext(jobs))
-        cgiSetIPPObjectVars(job, NULL, i);
-    }
-    else
-    {
-      for (i = 0, job = (ipp_attribute_t *)cupsArrayIndex(jobs, count - first - 1);
-          i < CUPS_PAGE_MAX && job;
-          i ++, job = (ipp_attribute_t *)cupsArrayPrev(jobs))
-        cgiSetIPPObjectVars(job, NULL, i);
-    }
+    for (i = 0, job = (ipp_attribute_t *)cupsArrayFirst(jobs);
+        i < CUPS_PAGE_MAX && job;
+        i ++, job = (ipp_attribute_t *)cupsArrayNext(jobs))
+      cgiSetIPPObjectVars(job, NULL, i);
 
    /*
     * Save navigation URLs...
@@ -1504,6 +1483,12 @@ cgiShowJobs(http_t     *http,            /* I - Connection to server */
       cgiSetVariable("NEXT", val);
     }
 
+    if (count > CUPS_PAGE_MAX)
+    {
+      snprintf(val, sizeof(val), "%d", CUPS_PAGE_MAX * (count / CUPS_PAGE_MAX));
+      cgiSetVariable("LAST", val);
+    }
+
    /*
     * Then show everything...
     */
index 7d2d5d6bee3707455735d02c380c010b8c27145f..932c699954ab8d06f552f52a8b3474a8ddf395d7 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Printer status CGI for CUPS.
  *
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2006 by Easy Software Products.
  *
  * These coded instructions, statements, and computer programs are the
@@ -304,8 +304,7 @@ show_all_printers(http_t     *http, /* I - Connection to server */
                        *response;      /* IPP response */
   cups_array_t         *printers;      /* Array of printer objects */
   ipp_attribute_t      *printer;       /* Printer object */
-  int                  ascending,      /* Order of printers (0 = descending) */
-                       first,          /* First printer to show */
+  int                  first,          /* First printer to show */
                        count;          /* Number of printers */
   const char           *var;           /* Form variable */
   void                 *search;        /* Search data */
@@ -387,25 +386,10 @@ show_all_printers(http_t     *http,       /* I - Connection to server */
     sprintf(val, "%d", count);
     cgiSetVariable("TOTAL", val);
 
-    if ((var = cgiGetVariable("ORDER")) != NULL && *var)
-      ascending = !_cups_strcasecmp(var, "asc");
-    else
-      ascending = 1;
-
-    if (ascending)
-    {
-      for (i = 0, printer = (ipp_attribute_t *)cupsArrayIndex(printers, first);
-          i < CUPS_PAGE_MAX && printer;
-          i ++, printer = (ipp_attribute_t *)cupsArrayNext(printers))
-        cgiSetIPPObjectVars(printer, NULL, i);
-    }
-    else
-    {
-      for (i = 0, printer = (ipp_attribute_t *)cupsArrayIndex(printers, count - first - 1);
-          i < CUPS_PAGE_MAX && printer;
-          i ++, printer = (ipp_attribute_t *)cupsArrayPrev(printers))
-        cgiSetIPPObjectVars(printer, NULL, i);
-    }
+    for (i = 0, printer = (ipp_attribute_t *)cupsArrayIndex(printers, first);
+        i < CUPS_PAGE_MAX && printer;
+        i ++, printer = (ipp_attribute_t *)cupsArrayNext(printers))
+      cgiSetIPPObjectVars(printer, NULL, i);
 
    /*
     * Save navigation URLs...
@@ -425,6 +409,12 @@ show_all_printers(http_t     *http,        /* I - Connection to server */
       cgiSetVariable("NEXT", val);
     }
 
+    if (count > CUPS_PAGE_MAX)
+    {
+      snprintf(val, sizeof(val), "%d", CUPS_PAGE_MAX * (count / CUPS_PAGE_MAX));
+      cgiSetVariable("LAST", val);
+    }
+
    /*
     * Then show everything...
     */
index c0c2222f003a57ba32b918edb69102ba08bbb983..75e127979e0cda41d9aa0472a0cdfa6aa08dd367 100644 (file)
@@ -6416,10 +6416,9 @@ get_jobs(cupsd_client_t  *con,           /* I - Client connection */
   ipp_jstate_t job_state;              /* job-state value */
   int          first_job_id = 1,       /* First job ID */
                first_index = 1,        /* First index */
-               current_index = 0;      /* Current index */
-  int          limit = 0;              /* Maximum number of jobs to return */
-  int          count;                  /* Number of jobs that match */
-  int          need_load_job = 0;      /* Do we need to load the job? */
+               limit = 0,              /* Maximum number of jobs to return */
+               count,                  /* Number of jobs that match */
+               need_load_job = 0;      /* Do we need to load the job? */
   const char   *job_attr;              /* Job attribute requested */
   ipp_attribute_t *job_ids;            /* job-ids attribute */
   cupsd_job_t  *job;                   /* Current job pointer */
@@ -6727,9 +6726,12 @@ get_jobs(cupsd_client_t  *con,           /* I - Client connection */
   }
   else
   {
-    for (count = 0, job = (cupsd_job_t *)cupsArrayFirst(list);
-        (limit <= 0 || count < limit) && job;
-        job = (cupsd_job_t *)cupsArrayNext(list))
+    if (first_index > 1)
+      job = (cupsd_job_t *)cupsArrayIndex(list, first_index - 1);
+    else
+      job = (cupsd_job_t *)cupsArrayFirst(list);
+
+    for (count = 0; (limit <= 0 || count < limit) && job; job = (cupsd_job_t *)cupsArrayNext(list))
     {
      /*
       * Filter out jobs that don't match...
@@ -6761,10 +6763,6 @@ get_jobs(cupsd_client_t  *con,           /* I - Client connection */
       if (job->id < first_job_id)
        continue;
 
-      current_index ++;
-      if (current_index < first_index)
-        continue;
-
       if (need_load_job && !job->attrs)
       {
         cupsdLoadJob(job);
index 51e454fb1cfe37c2ee985eca810d7d834a75530b..d19f433c6c1e1af732b21b7de13315ea352e4ea1 100644 (file)
@@ -1,7 +1,7 @@
 {#printer_name=0?:
 <TABLE CLASS="list" SUMMARY="Class List">
 <THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Queue Name <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Queue Name <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Description</TH><TH>Location</TH><TH>Members</TH><TH>Status</TH></TR>
+<TR><TH>Queue Name</TH><TH>Description</TH><TH>Location</TH><TH>Members</TH><TH>Status</TH></TR>
 </THEAD>
 <TBODY>
 {[printer_name]
index c04d02bda393c044ab948c972c3dd8fd38563cbf..9b4630496bb5a3786084335141354a6a878ddaff 100644 (file)
@@ -1,7 +1,7 @@
 {#printer_name=0?:
 <TABLE CLASS="list" SUMMARY="Class List">
 <THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Wartweschlange <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Warteschlange <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Beschreibung</TH><TH>Ort</TH><TH>Mitglieder</TH><TH>Status</TH></TR>
+<TR><TH>Wartweschlange</TH><TH>Beschreibung</TH><TH>Ort</TH><TH>Mitglieder</TH><TH>Status</TH></TR>
 </THEAD>
 <TBODY>
 {[printer_name]
index 3a5deeb13b183ee2b6b7578b54cbe2ae56613b32..7095926075bb8cfc195a9ec9925d400f525cac93 100644 (file)
@@ -1,7 +1,7 @@
 {#job_id=0?:
 <TABLE CLASS="list" SUMMARY="Auftragsliste">
 <THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> ID <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> ID <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Name</TH><TH>Benutzer</TH><TH>Grösse</TH><TH>Seiten</TH><TH>Status</TH><TH>Steuerung</TH></TR>
+<TR><TH>ID</TH><TH>Name</TH><TH>Benutzer</TH><TH>Grösse</TH><TH>Seiten</TH><TH>Status</TH><TH>Steuerung</TH></TR>
 </THEAD>
 <TBODY>
 {[job_id]
index 1164045a3ef63daa5cced87f4fa0e76ac421d029..2491b5921b13a89f044d9e5bd7a6c9c549e3902f 100644 (file)
@@ -1,6 +1,7 @@
 <TABLE CLASS="inset" SUMMARY="Seitenverwaltung">
 <TR>
-       <TD WIDTH="50%">{PREV?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{PREV}"><INPUT TYPE="SUBMIT" VALUE="&#x25c0; Vorherige anzeigen"></FORM>:&nbsp;}</TD>
-       <TD WIDTH="50%" ALIGN="RIGHT">{NEXT?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{NEXT}"><INPUT TYPE="SUBMIT" VALUE="Nächste anzeigen &#x25b6;"></FORM>:&nbsp;}</TD>
+       <TD WIDTH="50%">{PREV?{PREV>0?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="0"><INPUT TYPE="SUBMIT" VALUE="&#x25c0;&#x25c0; Show First"></FORM> :}<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{PREV}"><INPUT TYPE="SUBMIT" VALUE="&#x25c0; Vorherige anzeigen"></FORM>:&nbsp;}</TD>
+       <TD WIDTH="50%" ALIGN="RIGHT">{NEXT?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{NEXT}"><INPUT TYPE="SUBMIT" VALUE="Nächste anzeigen &#x25b6;"></FORM>:&nbsp;}
+       {LAST?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{LAST}"><INPUT TYPE="SUBMIT" VALUE="Show Last &#x25b6;&#x25b6;"></FORM>:}</TD>
 </TR>
 </TABLE>
index 360154fec205752dbfcfc2227d6dddbfeef389e0..42be95bf55cbc447884ae7339c395d7fb9e7509e 100644 (file)
@@ -1,7 +1,7 @@
 {#printer_name=0?:
 <TABLE CLASS="list" SUMMARY="Druckerliste">
 <THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Queue Name <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Queue Name <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Beschreibung</TH><TH>Ort</TH><TH>Marke und Modell</TH><TH>Status</TH></TR>
+<TR><TH>Queue Name</TH><TH>Beschreibung</TH><TH>Ort</TH><TH>Marke und Modell</TH><TH>Status</TH></TR>
 </THEAD>
 <TBODY>
 {[printer_name]
index 6fde7bf621273350ebaa0b34a5ebef93a37ffffb..30d4adbfaa942b26d159368c11b0f77dbc404e0f 100644 (file)
@@ -1,7 +1,7 @@
 {#printer_name=0?:
 <TABLE CLASS="list" SUMMARY="Lista de clases">
 <THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Nombre de la cola <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Nombre de la cola <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Descripci&oacute;n</TH><TH>Ubicaci&oacute;n</TH><TH>Miembros</TH><TH>Estado</TH></TR>
+<TR><TH>Nombre de la cola</TH><TH>Descripci&oacute;n</TH><TH>Ubicaci&oacute;n</TH><TH>Miembros</TH><TH>Estado</TH></TR>
 </THEAD>
 <TBODY>
 {[printer_name]
index 00f01ba01675224cc066ade9b8310d7874a4c73c..def2939e2f53b4e850eed0d107748e1eaef613b7 100644 (file)
@@ -1,7 +1,7 @@
 {#job_id=0?:
 <TABLE CLASS="list" SUMMARY="Lista de trabajos">
 <THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> ID <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> ID <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Nombre</TH><TH>Usuario</TH><TH>Tama&ntilde;o</TH><TH>P&aacute;ginas</TH><TH>Estado</TH><TH>Control</TH></TR>
+<TR><TH>ID</TH><TH>Nombre</TH><TH>Usuario</TH><TH>Tama&ntilde;o</TH><TH>P&aacute;ginas</TH><TH>Estado</TH><TH>Control</TH></TR>
 </THEAD>
 <TBODY>
 {[job_id]
index 5f27c106058d0c113296477d4323d9cee012914b..2b228cbdad7a5fb8c859441b3215741bc9c6dd68 100644 (file)
@@ -1,6 +1,7 @@
 <TABLE CLASS="inset" SUMMARY="Barra de paginaci&oacute;n">
 <TR>
-       <TD WIDTH="50%">{PREV?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{PREV}"><INPUT TYPE="SUBMIT" VALUE="&#x25c0; Mostrar anteriores"></FORM>:&nbsp;}</TD>
-       <TD WIDTH="50%" ALIGN="RIGHT">{NEXT?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{NEXT}"><INPUT TYPE="SUBMIT" VALUE="Mostrar siguientes &#x25b6;"></FORM>:&nbsp;}</TD>
+       <TD WIDTH="50%">{PREV?{PREV>0?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="0"><INPUT TYPE="SUBMIT" VALUE="&#x25c0;&#x25c0; Show First"></FORM> :}<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{PREV}"><INPUT TYPE="SUBMIT" VALUE="&#x25c0; Mostrar anteriores"></FORM>:&nbsp;}</TD>
+       <TD WIDTH="50%" ALIGN="RIGHT">{NEXT?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{NEXT}"><INPUT TYPE="SUBMIT" VALUE="Mostrar siguientes &#x25b6;"></FORM>:&nbsp;}
+       {LAST?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{LAST}"><INPUT TYPE="SUBMIT" VALUE="Show Last &#x25b6;&#x25b6;"></FORM>:}</TD>
 </TR>
 </TABLE>
index 6b97fd9e6c297376b07f870bb496680d79ffd1b9..5d84b1ab78f4c0662ec33445837cf03fab69e58a 100644 (file)
@@ -1,7 +1,7 @@
 {#printer_name=0?:
 <TABLE CLASS="list" SUMMARY="Lista de impresoras">
 <THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Nombre de la cola <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Nombre de la cola <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Descripci&oacute;n</TH><TH>Ubicaci&oacute;n</TH><TH>Marca y modelo</TH><TH>Estado</TH></TR>
+<TR><TH>Nombre de la cola</TH><TH>Descripci&oacute;n</TH><TH>Ubicaci&oacute;n</TH><TH>Marca y modelo</TH><TH>Estado</TH></TR>
 </THEAD>
 <TBODY>
 {[printer_name]
index 823a832a9e6a55b216a482da3e09fcd4af12ab5e..64cd8c0059b0be25cca776cd7b49bf23327ec1a7 100644 (file)
@@ -1,7 +1,7 @@
 {#printer_name=0?:
 <TABLE CLASS="list" SUMMARY="クラスの一覧">
 <THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> キュー名 <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> キュー名 <SMALL>&#x25bc;</SMALL>}</A></TH><TH>説明</TH><TH>場所</TH><TH>メンバー</TH><TH>状態</TH></TR>
+<TR><TH>キュー名</TH><TH>説明</TH><TH>場所</TH><TH>メンバー</TH><TH>状態</TH></TR>
 </THEAD>
 <TBODY>
 {[printer_name]
index b991438488937ed966e3ba9a20b6d7164dfe9f2a..6904df4ee4d09ba82c916d364da9f5ec1402e8ed 100644 (file)
@@ -1,7 +1,7 @@
 {#job_id=0?:
 <TABLE CLASS="list" SUMMARY="ジョブの一覧">
 <THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> ID <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> ID <SMALL>&#x25bc;</SMALL>}</A></TH><TH>名前</TH><TH>ユーザー</TH><TH>サイズ</TH><TH>ページ</TH><TH>状態</TH><TH>制御</TH></TR>
+<TR><TH>ID</TH><TH>名前</TH><TH>ユーザー</TH><TH>サイズ</TH><TH>ページ</TH><TH>状態</TH><TH>制御</TH></TR>
 </THEAD>
 <TBODY>
 {[job_id]
index ebba3a0040c16e06c8a8413ccf645b1320e2a6cc..ff7e976415c7534ffd3db24243747dd7b996b2b7 100644 (file)
@@ -1,6 +1,7 @@
 <TABLE CLASS="inset" SUMMARY="Paging Bar">
 <TR>
-       <TD WIDTH="50%">{PREV?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{PREV}"><INPUT TYPE="SUBMIT" VALUE="&#x25c0; 前を表示"></FORM>:&nbsp;}</TD>
-       <TD WIDTH="50%" ALIGN="RIGHT">{NEXT?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{NEXT}"><INPUT TYPE="SUBMIT" VALUE="次を表示 &#x25b6;"></FORM>:&nbsp;}</TD>
+       <TD WIDTH="50%">{PREV?{PREV>0?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="0"><INPUT TYPE="SUBMIT" VALUE="&#x25c0;&#x25c0; Show First"></FORM> :}<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{PREV}"><INPUT TYPE="SUBMIT" VALUE="&#x25c0; 前を表示"></FORM>:&nbsp;}</TD>
+       <TD WIDTH="50%" ALIGN="RIGHT">{NEXT?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{NEXT}"><INPUT TYPE="SUBMIT" VALUE="次を表示 &#x25b6;"></FORM>:&nbsp;}
+       {LAST?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{LAST}"><INPUT TYPE="SUBMIT" VALUE="Show Last &#x25b6;&#x25b6;"></FORM>:}</TD>
 </TR>
 </TABLE>
index a8caaffd2abdd0b7d802a33d188c7e243f699ded..70bbc8158647c56fe5e45464e4b79c4b9d7abe4a 100644 (file)
@@ -1,7 +1,7 @@
 {#printer_name=0?:
 <TABLE CLASS="list" SUMMARY="プリンターの一覧">
 <THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> キュー名 <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> キュー名 <SMALL>&#x25bc;</SMALL>}</A></TH><TH>説明</TH><TH>場所</TH><TH>メーカーとモデル</TH><TH>状態</TH></TR>
+<TR><TH>キュー名</TH><TH>説明</TH><TH>場所</TH><TH>メーカーとモデル</TH><TH>状態</TH></TR>
 </THEAD>
 <TBODY>
 {[printer_name]
index 75995d33c829bccc8dbfddd52d2f82c9da85d855..2f62855947c3a3c018508ee4cf816b2a754f8d05 100644 (file)
@@ -1,7 +1,7 @@
 {#job_id=0?:
 <TABLE CLASS="list" SUMMARY="Job List">
 <THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> ID <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> ID <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Name</TH><TH>User</TH><TH>Size</TH><TH>Pages</TH><TH>State</TH><TH>Control</TH></TR>
+<TR><TH>ID</TH><TH>Name</TH><TH>User</TH><TH>Size</TH><TH>Pages</TH><TH>State</TH><TH>Control</TH></TR>
 </THEAD>
 <TBODY>
 {[job_id]
index ebd688d51bd65d64242cedbd27e947698e315047..76e01675dc819fec92109f4734b49a30a26356c3 100644 (file)
@@ -1,6 +1,7 @@
 <TABLE CLASS="inset" SUMMARY="Paging Bar">
 <TR>
-       <TD WIDTH="50%">{PREV?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{PREV}"><INPUT TYPE="SUBMIT" VALUE="&#x25c0; Show Previous"></FORM>:&nbsp;}</TD>
-       <TD WIDTH="50%" ALIGN="RIGHT">{NEXT?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{NEXT}"><INPUT TYPE="SUBMIT" VALUE="Show Next &#x25b6;"></FORM>:&nbsp;}</TD>
+       <TD WIDTH="50%">{PREV?{PREV>0?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="0"><INPUT TYPE="SUBMIT" VALUE="&#x25c0;&#x25c0; Show First"></FORM> :}<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{PREV}"><INPUT TYPE="SUBMIT" VALUE="&#x25c0; Show Previous"></FORM>:&nbsp;}</TD>
+       <TD WIDTH="50%" ALIGN="RIGHT">{NEXT?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{NEXT}"><INPUT TYPE="SUBMIT" VALUE="Show Next &#x25b6;"></FORM>:&nbsp;}
+       {LAST?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{LAST}"><INPUT TYPE="SUBMIT" VALUE="Show Last &#x25b6;&#x25b6;"></FORM>:}</TD>
 </TR>
 </TABLE>
index e0a3228d040915a04ef0ac2a7b10b6231c4e8c50..a80763e0c2aabbc4d2473b710bae0d272334cea1 100644 (file)
@@ -1,7 +1,7 @@
 {#printer_name=0?:
 <TABLE CLASS="list" SUMMARY="Printer List">
 <THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Queue Name <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Queue Name <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Description</TH><TH>Location</TH><TH>Make and Model</TH><TH>Status</TH></TR>
+<TR><TH>Queue Name</TH><TH>Description</TH><TH>Location</TH><TH>Make and Model</TH><TH>Status</TH></TR>
 </THEAD>
 <TBODY>
 {[printer_name]
index ce1ff4ea87f76e7f5f38a62bd756aeaa4f380354..7240151b541b830166073586dacf312de2fb152f 100644 (file)
@@ -1,7 +1,7 @@
 {#printer_name=0?:
 <TABLE CLASS="list" SUMMARY="Class List">
 <THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Nome da fila <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Nome da fila <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Descri&ccedil;&atilde;o</TH><TH>Localiza&ccedil;&atilde;o</TH><TH>Membros</TH><TH>Estado</TH></TR>
+<TR><TH>Nome da fila</TH><TH>Descri&ccedil;&atilde;o</TH><TH>Localiza&ccedil;&atilde;o</TH><TH>Membros</TH><TH>Estado</TH></TR>
 </THEAD>
 <TBODY>
 {[printer_name]
index 772d630165c4d4a2d5c17b5d3f36b0b48e3b1f38..9f99dc766ef74ba7c07db1be14e3bd8e26a6ef32 100644 (file)
@@ -1,7 +1,7 @@
 {#job_id=0?:
 <TABLE CLASS="list" SUMMARY="Job List">
 <THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> ID <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> ID <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Nome</TH><TH>Usu&Atilde;&Acirc;¡rio</TH><TH>Tamanho</TH><TH>P&Atilde;&Acirc;¡ginas</TH><TH>Estado</TH><TH>Controle</TH></TR>
+<TR><TH>ID</TH><TH>Nome</TH><TH>Usu&Atilde;&Acirc;¡rio</TH><TH>Tamanho</TH><TH>P&Atilde;&Acirc;¡ginas</TH><TH>Estado</TH><TH>Controle</TH></TR>
 </THEAD>
 <TBODY>
 {[job_id]
index a94ed45bbf7a5c469566bd2bdfcc484dd034551e..b388105cd89e43c78af63180e733319e39c20f2b 100644 (file)
@@ -1,6 +1,7 @@
 <TABLE CLASS="inset" SUMMARY="Barra de pagina&ccedil;&atilde;o">
 <TR>
-       <TD WIDTH="50%">{PREV?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{PREV}"><INPUT TYPE="SUBMIT" VALUE="&#x25c0; Mostrar anterior"></FORM>:&nbsp;}</TD>
-       <TD WIDTH="50%" ALIGN="RIGHT">{NEXT?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{NEXT}"><INPUT TYPE="SUBMIT" VALUE="Mostrar pr&oacute;ximo &#x25b6;"></FORM>:&nbsp;}</TD>
+       <TD WIDTH="50%">{PREV?{PREV>0?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="0"><INPUT TYPE="SUBMIT" VALUE="&#x25c0;&#x25c0; Show First"></FORM> :}<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{PREV}"><INPUT TYPE="SUBMIT" VALUE="&#x25c0; Mostrar anterior"></FORM>:&nbsp;}</TD>
+       <TD WIDTH="50%" ALIGN="RIGHT">{NEXT?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{NEXT}"><INPUT TYPE="SUBMIT" VALUE="Mostrar pr&oacute;ximo &#x25b6;"></FORM>:&nbsp;}
+       {LAST?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{LAST}"><INPUT TYPE="SUBMIT" VALUE="Show Last &#x25b6;&#x25b6;"></FORM>:}</TD>
 </TR>
 </TABLE>
index 9331ab0b88724cfa3c4b1059fa346350571c83f6..74e62a20d09613a9e92ddb945ae28125c1dfc82f 100644 (file)
@@ -1,7 +1,7 @@
 {#printer_name=0?:
 <TABLE CLASS="list" SUMMARY="Lista de impressoras">
 <THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Nome da fila <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Nome da fila <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Descri&ccedil;&atilde;o</TH><TH>Localiza&ccedil;&atilde;o</TH><TH>Marca e modelo</TH><TH>Estado</TH></TR>
+<TR><TH>Nome da fila</TH><TH>Descri&ccedil;&atilde;o</TH><TH>Localiza&ccedil;&atilde;o</TH><TH>Marca e modelo</TH><TH>Estado</TH></TR>
 </THEAD>
 <TBODY>
 {[printer_name]
index 9b90b761c17fe03f7f2dc25ed20f8665453cd947..a482ec7bbd532d73855f9c9f8d205f03ba1a941a 100644 (file)
@@ -1,7 +1,7 @@
 {#printer_name=0?:
 <TABLE CLASS="list" SUMMARY="Список групп">
 <THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Наименование <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Наименование <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Описание</TH><TH>Расположение</TH><TH>Состав</TH><TH>Статус</TH></TR>
+<TR><TH>Наименование</TH><TH>Описание</TH><TH>Расположение</TH><TH>Состав</TH><TH>Статус</TH></TR>
 </THEAD>
 <TBODY>
 {[printer_name]
index ed320e85713f1016284a1d343ce6ca7801b490fc..0359c3458055469d28e3dc59d4d3acdb10c62675 100644 (file)
@@ -1,7 +1,7 @@
 {#job_id=0?:
 <TABLE CLASS="list" SUMMARY="Задания">
 <THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Номер <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> ID <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Название</TH><TH>Пользователь</TH><TH>Размер</TH><TH>Страниц</TH><TH>Статус</TH><TH>Управление</TH></TR>
+<TR><TH>Номер</TH><TH>Название</TH><TH>Пользователь</TH><TH>Размер</TH><TH>Страниц</TH><TH>Статус</TH><TH>Управление</TH></TR>
 </THEAD>
 <TBODY>
 {[job_id]
index 0d0459b160320eb51b8a96c4dff606d22b17e93a..14eac868cf8735d56d17fef528d19c1e3384e23a 100644 (file)
@@ -1,6 +1,7 @@
 <TABLE CLASS="inset" SUMMARY="Просмотр по страницам">
 <TR>
-       <TD WIDTH="50%">{PREV?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{PREV}"><INPUT TYPE="SUBMIT" VALUE="&#x25c0; Предыдущая"></FORM>:&nbsp;}</TD>
-       <TD WIDTH="50%" ALIGN="RIGHT">{NEXT?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{NEXT}"><INPUT TYPE="SUBMIT" VALUE="Следующая &#x25b6;"></FORM>:&nbsp;}</TD>
+       <TD WIDTH="50%">{PREV?{PREV>0?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="0"><INPUT TYPE="SUBMIT" VALUE="&#x25c0;&#x25c0; Show First"></FORM> :}<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{PREV}"><INPUT TYPE="SUBMIT" VALUE="&#x25c0; Предыдущая"></FORM>:&nbsp;}</TD>
+       <TD WIDTH="50%" ALIGN="RIGHT">{NEXT?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{NEXT}"><INPUT TYPE="SUBMIT" VALUE="Следующая &#x25b6;"></FORM>:&nbsp;}
+       {LAST?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{LAST}"><INPUT TYPE="SUBMIT" VALUE="Show Last &#x25b6;&#x25b6;"></FORM>:}</TD>
 </TR>
 </TABLE>
index 939835c19689924a6ed23a0886a459a58a9b8100..d71c51e18e05caec4418c5be29fb13615448e8be 100644 (file)
@@ -1,7 +1,7 @@
 {#printer_name=0?:
 <TABLE CLASS="list" SUMMARY="Список принтеров">
 <THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Наименование <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Наименование <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Описание</TH><TH>Расположение</TH><TH>Драйвер</TH><TH>Статус</TH></TR>
+<TR><TH>Наименование</TH><TH>Описание</TH><TH>Расположение</TH><TH>Драйвер</TH><TH>Статус</TH></TR>
 </THEAD>
 <TBODY>
 {[printer_name]