iwebcode - weblog
09/23/2002 - Seleccionar múltiples documentos en una vista web.

Permalink Seleccionar múltiples documentos en una vista web.



Una de las técnicas más utilizadas en las aplicaciones Lotus Notes consiste en la posibilidad de procesar múltiples documentos contenidos en una vista. Esta técnica, que en el cliente Notes es sumamente sencilla de utilizar, se complica cuando la aplicación debe gestionarse desde la Web. A partir de ese momento ya no se pueden utilizar la técnica de selección de documentos en la vista del cliente Notes ya que la vista Web no es más que una página HTML.
Para poder solucionar esto se puede optar por crear una columna que nos muestre en la vista Web un campo de tipo checkbox que contenga como valor el ID del documento correspondiente. Lo problemático de este sistema es que debe programarse manualmente toda la gestión del formulario HTML para que al pulsar un botón se lean solamente los documentos seleccionados. Aunque complicado, este sistema era el único que se podía utilizar hasta que llegó la versión 5.0.5 y el cliente de correo Web extendido. Este nuevo cliente Web sustituía las vistas Web mostradas como applets de Java por vistas HTML, pero que curiosamente ya incluían el famoso campo checkbox para la selección múltiple de documentos.

Después de investigar un poco en Internet y con la ayuda de los visitantes de iwebcode os he preparado este nuevo recurso que muestra una técnica sencilla para poder seleccionar múltiples documentos en vistas Web y procesarlos mediante un agente LotusScript en el servidor.

Vamos a ver los pasos a seguir:

1. Paso: Para este recurso se volverá a utilizar la vista de Libros que ya se vio en los recursos 20/12/2001 y 26/6/2002. Podéis crear una vista similar o utilizar cualquier vista que ya tengáis definida en una base de datos Notes. A continuación se muestra la vista de Libros llamada Libros:



2. Paso: Acceder a las propiedades de la vista y en la pestaña Avanzadas debe activarse el parámetro Permitir la selección de documentos ubicado dentro de la sección Acceso desde Web. La siguiente imagen muestra el dialogo de propiedades avanzadas de la vista:



3. Paso: Crearemos un botón de acción dentro de la vista al que titularemos Leer. Este botón de acción deberá tener el siguiente código JavaScript:

var cb = document.forms[0].$$SelectDoc;
// Encuentra el primer documento seleccionado
var selectcount = 0;
var docUNID = new Array();

for(i = 0; i < cb.length; i ++){
    if (cb[i].checked){
      docUNID[selectcount] = cb[i].value;
      selectcount++;
    }
}

if (docUNID != null){
    var agentname = "Libros";
    var thisURL = new Array();
    var newURL = new Array();

    for(j = 0; j < docUNID.length; j++){
      // Recuperar el path a la base de datos
      thisURL[j] = "http://www.servidorweb.com/basedatos.nsf"
      newURL[j] = thisURL[j] + "/" + agentname + "?OpenAgent" + "&docunid=" +
      docUNID[j];
      window.open(newURL[j], "Libros" + j,
      'scrollbars,menubar=yes,toolbar=yes,resizable=yes,screenX=150,screenY=200,
      width=550, height=640')
    }
}
else {
    alert("Debe seleccionarse un documento..");
}


4. Paso: Guardaremos la vista anterior y crearemos un agente compartido al que llamaremos Libros. Este agente debe tener los parámetros que se muestran en la siguiente imagen:



5. Paso: Teclearemos el siguiente código en la sección Initialize de LotusScript:

Sub Initialize
    Dim s As New notessession
    Set db = s.currentdatabase
    Set doc = s.documentcontext
    docUNID = Strright(doc.Query_String(0), "docunid=")

    Set selectdoc = db.getdocumentbyUNID(docUNID)
    If Not selectdoc Is Nothing Then
      Print "<h1><b>" + selectdoc.TituloLibro(0) + "</b></h1>"
      Print "<p><b>Autor:" + selectdoc.AutorLibro(0) + "</b><br>"
      Print "<b>Fecha compra:" + selectdoc.FechaLibro(0) + "</b>"
    End If
End Sub


6. Paso: Guardar el agente anterior y abrir el dialogo de propiedades del agente. Activar la opción Ejecutar el agente como usuario de Web del apartado Acceso desde Web tal como puede observarse en la siguiente imagen:



7. Paso: Probar la aplicación en el navegador Web. El resultado se muestra en la siguiente imagen:



Explicación:
El nuevo parámetro Permitir la selección de documentos descrito en el Paso 2 es el encargado de generar los campos tipo checkbox en la vista Web. Estos campos serán leídos por la función JavaScript descrita en el Paso 3 utilizando la propiedad del formulario $$SelectDoc generada por el servidor Domino. Esta función comprueba que existan documentos seleccionados  y si no existe ninguno muestra un mensaje de error.
Para cada documento seleccionado se crea un URL para llamar al agente Libros pasándole como parámetro del ID del documento. El agente recibe dicho parámetro y lo que hace es mostrar una página Web con el contenido de los campos del documento en el Paso 5. Este agente puede modificarse para hacer lo que se quiera con el documento seleccionado: moverlo a una carpeta, copiarlo, eliminarlo, etc. Finalmente, en el Paso 6, se activa el parámetro Ejecutar el agente como usuario de Web para asegurarnos el correcto funcionamiento de este agente al ser llamado desde el navegador.

Nota: Para la creación de este recurso se ha obtenido información desde el documento Processing documents selected in a web view ubicado en IBM DeveloperWorks: Lotus. Además quiero agradecer a Mónica Bergón su ayuda en la resolución de este recurso.



Comentarios

No documents found

Añade tus comentarios



La dirección de email no estara visible en esta web.





Puedes usar UUB Code en tus comentarios.

[b]bold[/b]  [i]italic[/i]  [u]underline[/u]  [s]strikethrough[/s]

Las URL seran convertidas autmaticamente en Links


:cry: :-p :-x :-o :lips: :grin: :angry: ;-) :-) :-D :rolleyes: :cool: :laugh: :-\ :huh: :-( :emb:






Recordarme (cookie)