Manual de Usuario Componentes de Menús Versión 1.7 Área de Aplicaciones Especiales y Arquitectura de Software Framework Atlas Componentes de Menu Hoja de Control Título Manual de usuario Componentes de Menú Documento de Referencia NORMATIVA ATLAS Responsable Área de Aplicaciones Especiales y Arquitectura de Software Versión 1.7 Fecha Versión 30/04/2014 Registro de Cambios Versión Causa del Cambio Responsable del Cambio Fecha del Cambio Área de Integración y Arquitectura de 1.0 Versión inicial del documento 1.1 Actualizadas capturas de las diferentes tipos de plantillas. 1.2 Se modifica el nombre del Area 1.3 Ampliada la descripción del atributo perfil 1.4 Corregidos errores en los atributos del menú horizontal. 1.5 Incluida la posibilidad de menús personalizados por usuario 1.6 Incluido apartado de personalización de plantillas 1.7 Incluido punto 4.8 uso de menu’s Unidad de Arquitectura obtenidos de base de datos Aplicaciones 25/05/2010 Área de Integración y Arquitectura de Aplicaciones 15/02/2011 Área de Aplicaciones Especiales y Arquitectura de Software 27/09/2011 Área de Aplicaciones Especiales y Arquitectura de Software 11/01/2012 Área de Aplicaciones Especiales y Arquitectura de Software 07/08/2012 Área de Aplicaciones Especiales y Arquitectura de Software 27/11/2013 Área de Aplicaciones Especiales y Arquitectura de Software 2 de 30 13/03/2014 22/4/2014 Framework Atlas Componentes de Menu Índice 1. INTRODUCCIÓN ................................................................................................................................................................ 4 1.1. 1.2. AUDIENCIA OBJETIVO .............................................................................................................................................. 4 CONOCIMIENTOS PREVIOS ...................................................................................................................................... 4 2. DESCRIPCIÓN .................................................................................................................................................................... 5 3. INSTALACIÓN Y CONFIGURACIÓN............................................................................................................................. 5 3.1. INSTALACIÓN .............................................................................................................................................................. 5 3.2. CONFIGURACIÓN ....................................................................................................................................................... 5 3.2.1. Paso 1: Edición del fichero de opciones del menú ................................................................................................. 6 4. USO ........................................................................................................................................................................................ 7 4.1. PASO 1: SELECCIÓN DE LA PLANTILLA ............................................................................................................................ 7 4.2. PASO 3: CREACIÓN DEL FICHERO XHTML BASADO EN LA PLANTILLA ............................................................................. 14 4.3. PASO 3: INSERCIÓN DE LA ETIQUETA DE MENÚ HORIZONTAL........................................................................................ 17 4.4. PASO 4: INSERCIÓN DE LA ETIQUETA DE MENÚ VERTICAL ............................................................................................ 18 4.5. PASO 5: INSERCIÓN DE LA ETIQUETA DE MENÚ VISUAL ................................................................................................ 20 4.6. PERSONALIZACIÓN DE PLANTILLAS................................................................................................................... 23 4.7. USO DE MENÚS PERSONALIZADOS POR USUARIO ........................................................................................... 25 4.8. USO DE MENU’S OBTENIDOS DE BASE DE DATOS ............................................................................................ 27 4.8.1. Crear el menú en base de datos ............................................................................................................................ 27 4.8.2. Configuración para el uso de los menús en base de datos.................................................................................... 27 4.9. RECOMENDACIONES Y BUENAS PRÁCTICAS .................................................................................................... 28 4.10. EJEMPLO DE USO .................................................................................................................................................. 28 5. PREGUNTAS MÁS FRECUENTES ................................................................................................................................ 29 6. ENLACES RELACIONADOS .......................................................................................................................................... 30 3 de 30 Framework Atlas Componentes de Menu 1. INTRODUCCIÓN Este documento contiene el manual de uso de los componentes visuales de Menú del Framework Atlas. Actualmente se incluyen tres componentes claramente diferenciados, uno para el menú horizontal (en la parte superior de la página), otro para el menú vertical (en la zona izquierda de la página), y otro para el menú visual (en la zona central de la página, con imágenes para cada opción de menú). Dichos componentes pueden combinarse, de manera que sólo se muestre uno de ellos, dos, o incluso los tres. En este documento se incluye información sobre cómo utilizar dichos componentes en una aplicación Web, así como información acerca de la configuración de los parámetros fundamentales de estos componentes. 1.1. AUDIENCIA OBJETIVO Este documento está orientado a toda aquella persona que esté desarrollando una aplicación Web basada en el Framework Atlas y necesite utilizar los componentes de menús en su aplicación Web. 1.2. CONOCIMIENTOS PREVIOS Para un completo entendimiento del documento, el lector deberá tener conocimientos previos sobre las siguientes tecnologías: · Java Server Faces (JSF) · Facelets · Spring Framework · Hibernate Para saber más sobre dichas tecnologías, consultar el apartado de este documento, Enlaces Relacionados. 4 de 30 Framework Atlas Componentes de Menu 2. DESCRIPCIÓN Se dispone de tres componentes visuales, uno para el menú horizontal, otro para el vertical y otro para el visual. Estos componentes pueden combinarse en la pantalla, de manera que cuando se pulse sobre una opción de uno de los menús, se actualicen los otros con la nueva opción seleccionada. Para combinar varios menús en la misma página, estos recuperan de la request el id seleccionado y cambian su estado para actualizarse. El contenido del menú se define dinámicamente en un fichero de configuración XML que contiene todos los elementos de menú de la aplicación. A continuación se muestra un ejemplo de los menús horizontal, vertical y visual combinados en la misma pantalla: 3. INSTALACIÓN Y CONFIGURACIÓN En este apartado se incluye información sobre la instalación y la configuración de los componentes de Menú que vienen incluidos en el framework Atlas. 3.1. INSTALACIÓN Los componentes de menú ya vienen instalados en el arquetipo Web, incluidos en el módulo de componentes visuales. Por este motivo no es necesaria una instalación adicional si se parte del arquetipo. 3.2. CONFIGURACIÓN 5 de 30 Framework Atlas Componentes de Menu Para configurar los componentes de menú para poder ser utilizados es necesario seguir los pasos descritos a continuación: 3.2.1. Paso 1: Edición del fichero de opciones del menú El contenido del menú se obtiene dinámicamente de un fichero de configuración XML que contiene todos los elementos de menú de la aplicación. En el arquetipo de aplicaciones Web viene incluido este fichero, que se encuentra en la ruta src/main/resources/menu.xml del módulo web del arquetipo. El fichero contiene todos los elementos de menú de la aplicación, cada componente de menú (horizontal, vertical o visual) puede decidir qué grupo de estos elementos mostrará, a través de los atributos de la etiqueta que se describe en la sección de uso del componente. Un ejemplo de un fichero de menú XML es el siguiente: menu.xml <?xml version="1.0" encoding="UTF-8"?> <!-- edited with XMLSPY v2004 rel. 3 U (http://www.xmlspy.com) by ICM (Comunidad de Madrid) --> <menu xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="menu_aplicacion.xsd"> <elemento id="1" nombre="Home" nombre_navegacion="Inicio" url="/secure/index.jsf" perfil="ROLE_1"> </elemento> <elemento id="3" nombre="Menu1" nombre_navegacion="Menu1" url=""> <elemento id="3_1" nombre="Submenu1" nombre_navegacion="Submenu1" url="/secure/index.jsf"> </elemento> <elemento id="3_2" nombre="Submenu2" nombre_navegacion="Submenu2" url="/secure/index.jsf"> </elemento> </elemento> <elemento id="4" nombre="Información del usuario" nombre_navegacion="infoUsuario" url="/secure/infoUsuario.jsf"> </elemento> </menu> En la siguiente tabla se describe cada uno de los atributos de los elementos del menú: Nombre atributo Obligatorio Descripción id SI Identificador de la opción. En subopciones de menú, el id debe empezar por el id de la opción, seguido de un guión bajo y el id de la subopción. 6 de 30 Framework Atlas Componentes de Menu nombre SI Nombre a mostrar en el menú nombre_navegacion SI Nombre a mostrar en el rastro de migas url SI URL asociada a esa opción de menú. perfil NO Perfiles de usuario que pueden ver esa opción de menú (si son varios deben aparecer separados por punto y coma). 4. USO Una vez editado el fichero de definición del menú, puede procederse a su utilización. Para ello, en el arquetipo web se incluyen una serie de plantillas para todas las posibles combinaciones de menús (horizontal sólo, horizontal con vertical, etc.). Además de estas plantillas, existen tres componentes jsf que pueden utilizarse a través de etiquetas que incrustan el menú adecuado en la página. A continuación se describen los pasos necesarios para utilizar los menús, primero seleccionando la plantilla y luego incrustando las etiquetas adecuadas. 4.1. Paso 1: Selección de la Plantilla Para utilizar los menús, lo primero que hay que hacer es decidir cuál va a ser el layout o plantilla de nuestra página (cuáles de los tres menús disponibles se van a utilizar). Los ficheros de plantillas están en el arquetipo en el directorio src/main/webapp/WEB-INF/layout, y son los siguientes: 7 de 30 Framework Atlas Componentes de Menu - hc.xhtml: (Horizontal+Contenido). Incluye un menú horizontal, y en el resto de la página se muestra el contenido. Ejemplo: 8 de 30 Framework Atlas Componentes de Menu - hvc.xhtml: (Horizontal+Vertical+Contenido). Incluye un menú horizontal, uno vertical y en el resto de la página se muestra el contenido. Ejemplo: 9 de 30 Framework Atlas Componentes de Menu - hv.xhtml: (Horizontal+Visual). Incluye un menú horizontal, y en el resto de la página se muestra el menú visual. Ejemplo: 10 de 30 Framework Atlas Componentes de Menu - hvv.xhtml: (Horizontal+Vertical+Visual). Incluye un menú horizontal, menú vertical y en el resto de la página se muestra el menú visual. Ejemplo: 11 de 30 Framework Atlas Componentes de Menu - vc.xhtml: (Vertical + Contenido). Incluye un menú vertical, y en el resto de la página se muestra el contenido. Ejemplo: 12 de 30 Framework Atlas Componentes de Menu - vv.xhtml: (Vertical + Visual). Incluye un menú vertical, y en el resto de la página se muestra el menú visual. Ejemplo: 13 de 30 Framework Atlas Componentes de Menu - c.xhtml: (Contenido). No incluye menús, muestra directamente el contenido de la página en la zona central. Ejemplo: 4.2. Paso 3: Creación del fichero xhtml basado en la plantilla Una vez seleccionada la plantilla, debemos crear nuestro fichero xhtml que utilice dicha plantilla, y defina los componentes que se desean insertar en cada zona de la plantilla. En el arquetipo web vienen varios ejemplos de ficheros que utilizan las plantillas, por ejemplo en la página index.xhtml se utiliza la plantilla vc.xhtml (Menú Vertical + Contenido): index.html 14 de 30 Framework Atlas Componentes de Menu <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:t="http://myfaces.apache.org/tomahawk" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:atlas="http://atlas.core.componentes/jsf" xmlns:a4j="http://richfaces.org/a4j"> <ui:composition template="/WEB-INF/layout/vc.xhtml"> <ui:define name="titulo"> <ui:include src="/secure/titulo.xhtml" /> </ui:define> <ui:define name="rastroMigas"> <ui:include src="/rastroMigas/rastro.xhtml" /> </ui:define> <ui:define name="menuVertical"> <!-- Se hace referencia al fichero con el menú vertical --> <ui:include src="/menu/menu.xhtml" /> </ui:define> <ui:define name="content"> Aquí va el contenido… </ui:define> </ui:composition> </html> Este fichero xhtml tiene que contener las siguientes zonas: 1) Definición del espacio de nombres de etiquetas de Atlas Es necesario establecer la definición del espacio de nombres para las etiquetas de componentes de Atlas. Esto nos permitirá utilizar las etiquetas que incrustan los componentes de menú en la página. Un ejemplo de cabecera de fichero xhtml es la siguiente: Cabecera de fichero xhtml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:t="http://myfaces.apache.org/tomahawk" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:atlas="http://atlas.core.componentes/jsf" xmlns:a4j="http://richfaces.org/a4j"> 15 de 30 Framework Atlas Componentes de Menu 2) Inclusión de la plantilla, y definición del contenido de cada zona En nuestro fichero xhtml es necesario incluir la plantilla a utilizar, así como definir los componentes que van a ir en cada una de las zonas. Por ejemplo, en la página principal del arquetipo web se incluye un menú vertical+contenido (plantilla vc.xhtml), donde la zona del menú vertical hace referencia a otro fichero (menu.xhtml), y el contenido se incluye tal cuál: Ejemplo.xhtml … <ui:composition template="/WEB-INF/layout/vc.xhtml"> <ui:define name="titulo"> <ui:include src="/secure/titulo.xhtml" /> </ui:define> <ui:define name="rastroMigas"> <ui:include src="/rastroMigas/rastro.xhtml" /> </ui:define> <ui:define name="menuVertical"> <!-- Se hace referencia al fichero con el menú vertical --> <ui:include src="/menu/menu.xhtml" /> </ui:define> <ui:define name="content"> Aquí va el contenido… </ui:define> </ui:composition> </html> Otro ejemplo para un menú horizontal, vertical y visual juntos sería el siguiente: Ejemplo.xhtml 16 de 30 Framework Atlas Componentes de Menu <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:a4j="http://richfaces.org/a4j" xmlns:rich="http://richfaces.org/rich" xmlns:c="http://java.sun.com/jstl/core"> <ui:composition template="/WEB-INF/layout/hvv.xhtml"> <ui:define name="titulo"> <ui:include src="/secure/titulo.xhtml" /> </ui:define> <ui:define name="menuHorizontal"> <ui:include src="/secure/menuHorizontal/menuHorizontalHeaderSample.xhtml"/> </ui:define> <ui:define name="rastroMigas"> <ui:include src="/rastroMigas/rastroMigasICM.xhtml"/> </ui:define> <ui:define name="menuVisual"> <ui:include src="/secure/menuVisual/menuVisualSample.xhtml"/> </ui:define> <ui:define name="menuVertical"> <ui:include src="/menu/menuICM.xhtml"/> </ui:define> </ui:composition> </html> En este fichero se hace referencia a otros xhtml en los que se definirá el contenido de cada una de las áreas de la plantilla. En algunas de ellas se deberá incluir cada uno de los tres componentes de menú, según se explica en el siguiente punto. Para ver con detalle las diferentes partes que se pueden incorporar a cada plantilla vea el apartado PERSONALIZACIÓN DE PLANTILLAS 4.3. Paso 3: Inserción de la etiqueta de Menú Horizontal Una vez definida nuestra plantilla y fichero xhtml, debemos de definir el contenido de cada una de las zonas. Concretamente, si estamos utilizando una plantilla con menú horizontal, se utiliza la etiqueta menuHorizontal. A continuación se muestra un ejemplo de cómo se inserta esta etiqueta dentro de una pagina XHTML: Ejemplo.xhtml 17 de 30 Framework Atlas Componentes de Menu <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:atlasc="http://atlas.core.componentes/jsf/composite"> <ui:composition> <f:loadBundle basename="msg/messages" var="bundle" /> <atlasc:menuHorizontal id="menu" menu="#{menuBean.menu}" /> </ui:composition> </html> En la siguiente tabla se muestra el significado de cada uno de los atributos de la etiqueta: 4.4. Nombre atributo Obligatorio Descripción menu SI Lista de los elementos de menu de tipo MenuItem height NO Altura del menú. Por defecto 26px mode NO Modo del menu. Por defecto “ajax” bundle NO Nombre del bundle del que se obtendrán las etiquetas styleClassTexto NO Estilos para el texto de los elementos de menú styleClassTextoAdicional NO Estilos para el texto adicional de cada elemento de menú Paso 4: Inserción de la etiqueta de Menú Vertical Si estamos utilizando una plantilla con menú vertical, se utiliza la etiqueta menuVertical. A continuación se muestra un ejemplo de cómo se inserta esta etiqueta dentro de una pagina XHTML: Ejemplo.xhtml 18 de 30 Framework Atlas Componentes de Menu <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:atlas="http://atlas.core.componentes/jsf"> <ui:composition> <div id="MenuLateralSeccion"> <div id="menu" class="menu_vert"> <atlas:menuVertical authorizationEnabled="true"/> </div> </div> </ui:composition> </html> Este componente sirve para mostrar un conjunto de elementos de menú del fichero de menú XML de la aplicación con una dirección vertical. Tiene estructura jerárquica de árbol, con lo que se puede incluir distintos nodos que aparecerán agrupados por niveles. En la siguiente tabla se muesta el significado de cada uno de los atributos de la etiqueta: Nombre atributo Obligatorio Descripción id NO Identificador del componente authorizationEnabled NO Valor true|false para establecer si este componente va a filtrar los elementos del menú dependiendo del perfil del usuario que se ha logado en el sistema. Por defecto es true menuCode NO Clave del fichero de pares clave-valor application.properties para identificar el fichero de menú cuyos elementos serán presentados por el componente de menú. El valor por defecto es MENU_XML_FILE. nivelFinal NO Valor para el nivel hasta el que se quiere que se filtren los elementos de menú. nivelInicial NO Valor para el nivel a partir de cual se quiere que se filtren los elementos de menú. rendered NO Valor true|false para seleccionar si este componente se va a mostrar. Por defecto es true 19 de 30 Framework Atlas Componentes de Menu subMenuId 4.5. NO Identificador por el cual filtrar los elementos del menú vertical. Es un identificador propio en el fichero de menú XML. Tiene prioridad sobre el valor puesto en este atributo el identificador que se estableció en la request con la misma semántica que este atributo, y que fue establecido por otro componente, como el menú Horizontal, en caso de que se haya establecido Paso 5: Inserción de la etiqueta de Menú Visual Si estamos utilizando una plantilla con menú visual, se utiliza la etiqueta menuVisual. Este componente sirve para mostrar un conjunto de elementos de menú estructurado mediante una tabla. Se apoya en el componente de RichFaces dataGrid. El aspecto del componente es el siguiente: Figura Menú visual A continuación se muestra un ejemplo de cómo se inserta esta etiqueta dentro de una pagina XHTML: Ejemplo.xhtml 20 de 30 Framework Atlas Componentes de Menu <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:c="http://java.sun.com/jstl/core" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:a4j="http://richfaces.org/a4j" xmlns:rich="http://richfaces.org/rich" xmlns:atlas="http://atlas.core.componentes/jsf"> <ui:composition> <f:loadBundle basename="msg/messages" var="bundle" /> <h:form id="provinciasFormBean"> <atlas:menuVisual id="indexVisual" dataModel="#{menuVisualSampleBean.menuGeneral}" menuCode="MENU_XML_FILE" columns="3" tablaMenuVisualClass="tabla_menuvisual" tituloClass="legend" txtelementoClass="label" imagenClass="imagen_mv" /> </h:form> </ui:composition> </html> En la siguiente tabla se muesta el significado de cada uno de los atributos de la etiqueta: Nombre atributo Obligatorio Descripción id SI Identificador del componente datamodel SI EL ( Expression Language) que indica el bean que da respaldo a este componente. Además debe ser del tipo MenuHorizontalBean. El backing bean que contenga una instancia de este bean necesita inyectarle el objeto AtlasFacade en su método init columns NO Establece el número de columnas que se quiere establecer en la tabla principal del menú visual. El valor por defecto para este valor es 1 idElemento SI Identificador por el cual filtrar los elementos del Menú Visual Es un identificador propio en el fichero de menú XML. Los elementos que se mostrarán con este componente corresponde con los hijos de este elemento. 21 de 30 Framework Atlas Componentes de Menu imagenClass NO Estilo para las imágenes de cada celda del menú. menuCode NO Clave del fichero de pares clave-valor application.properties para identificar el fichero de menú cuyos elementos serán presentados por el componente de menú. El valor por defecto es MENU_XML_FILE. rendered NO Valor true|false para seleccionar si este componente se va a mostrar. Por defecto es true tablaMenuVisualClass NO Estilo para la tabla principal del menú visual tituloClass NO Estilo del título para cada celda del menú. txtelementoClass NO Estilo para el texto de la descripcion de cada celda del menú. 22 de 30 Framework Atlas Componentes de Menu 4.6. PERSONALIZACIÓN DE PLANTILLAS Los diferentes layouts están realizados con la tecnología Facelet la cual permite, a través de un sistema de plantillas, la personalización de ciertas partes de las páginas. Para definir el contenido que se quiere incorporar en una plantilla hay que utilizar la etiqueta <ui:define> indicando, en el atributo name, el mismo valor que el de la etiqueta de definición <ui:insert> que se quiere rellenar. Para ver los diferentes <ui:insert> que existen en las diferentes plantillas se recomienda ver el xhtml de los layout (carpeta \web\src\main\webapp\WEB-INF\layout). A continuación se muestra, de nuevo, el ejemplo del index.xhtml que viene incorporado en el arquetipo web: index.html <!-- … --> <ui:composition template="/WEB-INF/layout/vc.xhtml"> <ui:define name="titulo"> <h:outputText styleClass="tituloPagina" value="Titulo"/> <h:outputText styleClass="subtituloPagina" value="Subtitulo"/> </ui:define> <ui:define name="rastroMigas"> <ui:include src="/rastroMigas/rastro.xhtml" /> </ui:define> <ui:define name="menuVertical"> <ui:include src="/menu/menuVertical.xhtml" /> </ui:define> <ui:define name="content"> <!-- … --> </ui:define> </ui:composition> <!-- … --> Como se puede apreciar, en esa página se ha definido el contenido de las partes título, rastroMigas, menuVertical y content. Dependiendo de la plantilla que se esté utilizando habrá que definir algunos contenido u otros. Lista completa de contenidos personalizables: Nombre Plantilla Descripción headerInsert c,errorLayout, hc, hv, Contenido que será insertado en el hvc, hvv, loginLayout, vc, <h:head> de la aplicación vv cabeceraCentral c,errorLayout, hc, hv, Contenido que será insertado en la parte hvc, hvv, loginLayout, vc, central de la cabecera de la aplicación. vv Por defecto no se inserta nada. La clase CSS .cabeceraCentral define el estilo del div que lo contiene. 23 de 30 Framework Atlas Componentes de Menu rastroMigas c, hc, hv, hvc, hvv, vc, vv Contenido que será insertado en la zona reservada para el rastro de migas panelAyuda c, hc, hv, hvc, hvv, vc, vv Contenido que será insertado en la zona reservada para el panel de ayuda titulo c, hc, hv, hvc, hvv, vc, vv Contenido que será insertado en la zona reservada para el título content c,errorLayout, hc, loginLayout, vc hvc, Contenido que será insertado en la zona reservada para la parte principal de la aplicación footer c,errorLayout, hc, hvc, hvv, vc, vv hv, Contenido que será insertado en la zona reservada para el footer menuHorizontal hc, hv, hvc, hvv Contenido que será insertado en la zona reservada para el menú horizontal menuVertical hvc, hvv, vc, vv Contenido que será insertado en la zona reservada para el menú vertical menuVisual hv, hvv, vv Contenido que será insertado en la zona reservada para el menú visual 24 de 30 Framework Atlas Componentes de Menu 4.7. USO DE MENÚS PERSONALIZADOS POR USUARIO A partir de la versión 1.2.5 de ATLAS, es posible modificar el menú que se muestra a cada usuario, personalizándolo. Nota: Para usar esta funcionalidad es necesaria la autorización explícita por parte de ICM. Para personalizar el menú de un usuario, se puede utilizar la clase atlas.componentes.utiles.AtlasMenuUtils. A continuación se muestran los métodos de dicha clase, que pueden utilizarse para establecer el menú personalizado de un usuario, u obtener el menú por defecto de la aplicación: atlas.componentes.utiles.AtlasMenuUtils import atlas.componentes.jaxb.menuaplicacion.Menu; /** * Establece un menú personalizado para un usuario * @param menu El menú para el usuario. Null para utilizar el menú por defecto */ public static void setCustomMenu(Menu menu); /** * Obtiene el menú personalizado de un usuario, o null si no tiene menú personalizado * @return El menú personalizado de un usuario, o null si no tiene menú personalizado */ public static Menu getCustomMenu(); /** * Obtiene un menú * @param menuCode defecto) * @return El menú */ public static Menu por defecto de la aplicación codigo del menu (si null, entonces menu por por defecto de la aplicación getMenu(String menuCode) throws ServiceException; /** * Establece el menú por defecto de la aplicación * @param menuCode codigo del menu (si null, entonces menu por defecto) * @param menu * @throws ServiceException */ public static void setMenu(String menuCode, Menu menu) throws ServiceException; 25 de 30 Framework Atlas Componentes de Menu A continuación se muestra un ejemplo de personalización el menú para el usuario actualmente autenticado. El ejemplo obtiene el menú por defecto (definido en el fichero menu.xml), y le añade algunas opciones al final: Ejemplo de menú personalizado import import import import atlas.componentes.jaxb.menuaplicacion.CeldaMenuType; atlas.componentes.jaxb.menuaplicacion.ElementoType; atlas.componentes.jaxb.menuaplicacion.Menu; atlas.componentes.utiles.AtlasMenuUtils; … // Establece menu personalizado, incluye una nueva opcion en el menu actual Menu menu = AtlasMenuUtils.getMenu(null); /*****************************************/ /*************** 1 ***********************/ ElementoType elemento1 = new ElementoType(); elemento1.setId("1"); elemento1.setPerfil("ROLE_1"); elemento1.setUrl("/secure/menusApp/indexGeneral.jsf"); elemento1.setNombreNavegacion("Look and Feel"); elemento1.setNoUrl(false); elemento1.setNombre("Maquetación"); CeldaMenuType celdaMenuType1 = new CeldaMenuType(); celdaMenuType1.setUrlImagen("img/componentes/estilos.jpg"); celdaMenuType1.setApartado("Maquetación"); celdaMenuType1.setUrlApartado("/secure/menusApp/indexGeneral.jsf"); celdaMenuType1.setTexto("Ejemplos de estilos e iconos disponibles"); elemento1.setCeldaMenu(celdaMenuType1); /*****************************************/ /*************** 1_1 *********************/ ElementoType elemento11 = new ElementoType(); elemento11.setId("1_1"); elemento11.setPerfil("ROLE_1"); elemento11.setUrl("/secure/estilos/estilosOption.jsf"); elemento11.setNombreNavegacion("Estilos"); elemento11.setNoUrl(false); elemento11.setNombre("Estilos"); CeldaMenuType celdaMenuType11 = new CeldaMenuType(); celdaMenuType11.setUrlImagen("img/componentes/estilos.jpg"); celdaMenuType11.setApartado("Estilos"); celdaMenuType11.setUrlApartado("/secure/estilos/estilosOption.jsf"); celdaMenuType11.setTexto("Pagina de ejemplo con estilos del framework"); elemento11.setCeldaMenu(celdaMenuType11); elemento1.getElemento().add(elemento11); menu.getElemento().add(elemento1); AtlasMenuUtils.setCustomMenu(menu); 26 de 30 Framework Atlas Componentes de Menu 4.8. USO DE MENU’S OBTENIDOS DE BASE DE DATOS Se pueden configurar los menú para que en vez de leerse del fichero XML de menú se lean de base de datos y además sean distintos por roles, e incluso por usuario. 4.8.1. Crear el menú en base de datos Los elementos de menu y los roles habrá que darlos de alta en BBDD en las tabla MENU_ELEMENT y MENU_ELEMENT_ROL del esquema DBA_GAT La tabla MENU_ELEMENT contendrá los elementos de menu y su relación padre/hijo entre ellos La tabla MENU_ELEMENT_ROL contendrá que elementos de menu puede ver cada rol 4.8.2. Configuración para el uso de los menús en base de datos Modificar el applicattionContext-database que se escaneen las entidades de bbdd para menús applicationContext-database.xml <property name="packagesToScan"> <list> <!-- Necesario si se quiere utilizar el componente de calendario -> <value>atlas.componentes.domain</value> <value>atlas.core.seguridad.domain</value> <value>atlas.componentes.menu.domain</value> … … </list> </property> 27 de 30 Framework Atlas Componentes de Menu Modificar el provider interno del cacheProvider definiendolo como atlasDabaseMenuProvider y poner las opciones de cacheo y el tiempo de cacheo (en segundos) applicationContext-services.xml <bean id="cacheMenuProvider" class="atlas.componentes.menu.impl.CacheMenuProvider"> <constructor-arg ref="atlasDatabaseMenuProvider" /> <property name="cachearPorUsuario" value="true" /> <property name="cachearPorRoles" value="true" /> <property name="tiempoCache" value="86400" /> </bean> <bean id="menuManager" class="atlas.componentes.menu.MenuManager" p:provider-ref="cacheMenuProvider" /> Añadir al applicattion.properties la variable menu.aplicacion que será el código de aplicación y que es el que hay que meter en todos los registros de nuestro menú en la tabla GAT_MENU_ELEMENT application.properties # Configuracion para el menu de la aplicación en BBDD menu.aplicacion=EJPL Una vez hechos estos cambios al ejecutar la aplicación el menú se cargará desde la definición del mismo en base de datos. 4.9. RECOMENDACIONES Y BUENAS PRÁCTICAS Se debe de validar el XML de menú contra su esquema: menu_aplicacion.xsd, que es el esquema de menús existente en ICM, en su versión que admite elementos del tipo celda-menu. Estos elementos están diseñados para soportar componentes del tipo Menú Visual. 4.10. EJEMPLO DE USO Se puede ver un ejemplo de los componentes de menú en la aplicación de demostración de componentes, bajo la siguiente secuencia de navegación: Inicio > Menú > Menú Horizontal / Vertical / …. 28 de 30 Framework Atlas Componentes de Menu 5. PREGUNTAS MÁS FRECUENTES Pregunta: ¿Dónde puedo encontrar información general sobre los componentes? Respuesta: En la aplicación de demostración de los componentes del Framework Atlas Pregunta: ¿Qué interacción un componente de menú con el resto de elementos de Menú? Respuesta: Puesto que los enlaces que construye este componente tienen un parámetro id con el valor del elemento de menú correspondiente, cualquier otro componente de menú comprueba, cuando se produce una petición, este parámetro en el objeto Request y su valor. Entonces, determina cuál es la opción que se ha elegido y se proceden a representar con el elemento de menú seleccionado como destacado. Pregunta: ¿Cómo se ha implementado el componente en su capa de presentación? Respuesta: Mediante un componente de Facelets. Los mensajes de error se extraen del contexto de Faces. Pregunta: ¿Cómo puedo modificar los estilos del componente? Respuesta: Mediante los atributos de estilo del componente. Para más información consultar la tabla de atributos en la sección de Uso del componente. 29 de 30 Framework Atlas Componentes de Menu 6. ENLACES RELACIONADOS Producto URL Ajax4JSF http://www.jboss.org/jbossrichfaces/ Barbecue http://barbecue.sourceforge.net/ Commons BeanUtils commons.apache.org/beanutils/ Commons Configurations http://commons.apache.org/configuration/ Facelets https://facelets.dev.java.net/ Hibernate http://www.hibernate.org/ Hibernate Annotations http://www.hibernate.org/hib_docs/annotations/reference/en/html_single/ JAXB http://java.sun.com/webservices/jaxb/ Jcaptcha jcaptcha.sourceforge.net/ JPA http://java.sun.com/developer/technicalArticles/J2EE/jpa/ JSF http://java.sun.com/javaee/javaserverfaces/ JSFUnit http://www.jboss.org/jsfunit/ Log4J http://logging.apache.org/log4j/ MyFaces Core http://myfaces.apache.org/ RichFaces http://www.jboss.org/jbossrichfaces/ Spring http://www.springframework.org/ Spring Security http://www.springframework.org/ Tomahawk http://myfaces.apache.org/tomahawk/ Velocity http://velocity.apache.org/ 30 de 30
© Copyright 2024