SlideShare una empresa de Scribd logo
1 de 9
Grails: Framework
para el desarrollo de
aplicaciones Web (3ra Parte)
Grails es un framework orientado al desarrollo de aplicaciones web de forma sencilla,
rápida y divertida.


                                              Personalizar apariencia
                                              La personalización de la apariencia en las
                                              aplicaciones web, generalmente se las
                                              realiza haciendo uso de hojas de estilo y
                                              javascript para algunos efectos.




En las anteriores entregas vimos desde la     Malla de diseño
creación de un proyecto, la creación de
                                              Dentro el mundo del diseño de aplicaciones
scafolding, hasta la la validación de
                                              web, se posee una estructura base sobre la
formularios mediante el uso de constraints,
                                              cual se pueden realizar personalizaciones
en esta entrega veremos la personalización
                                              para mejorar la apariencia y funcionalidad de
de la interfaz de la aplicación.
                                              la aplicación.
La gráfica siguiente muestra una estructura base, para nuestro ejemplo representa como
quedará nuestra aplicación.
donde:
   ✔     gutter: Proporciona un espacio en blanco sobre los bordes del navegador, de modo que
         el contenido del área principal se centra en el navegador.
   ✔     topbar: Proporciona la información referente al inicio de sesión (login, usuario
         conectado, etc)
   ✔     header: Muestra la información de la aplicación (título, logo, etc)
   ✔     content: Muestra el contenido principal de la aplicación
   ✔     right sidebar: Generalmente utilizado para mostrar opciones o detalles de la aplicación
         (menús, lista de opciones, etc)
   ✔     footer: Muestra la información de derechos de autor, desarrollo, etc


Creando un footer
Para esto debemos crear un fragmento de código GSP, llamado _footer.gsp dentro el
directorio grails­app/views/common. A continuación, agregue el _footer.gsp a la plantilla
mediante el tag <g:render   template="/common/footer"/>, para esto también debemos
considerar realizar una hoja de estilos para darle los efectos deseados.


grails­app/views/common/_footer.gsp 
<span class="copyright">&copy; 2009 Tutorial de Grails: Revista Atix<br/>Esteban
Saavedra López</span>


Para que este footer esté incluido en la presentación de la aplicación debemos incluir
<g:render template="/common/footer"/> al final del archivo main.gsp, como se muestra a
continuación:


<html>
    <head>
        <title><g:layoutTitle default="Grails" /></title>
        <link rel="stylesheet" href="${createLinkTo(dir:'css',file:'main.css')}" />
        <link rel="shortcut icon" href="$
{createLinkTo(dir:'images',file:'favicon.ico')}" type="image/x-icon" />
        <g:layoutHead />
        <g:javascript library="application" />
    </head>
    <body>
        <div id="spinner" class="spinner" style="display:none;">
            <img src="${createLinkTo(dir:'images',file:'spinner.gif')}" alt="Spinner" />
        </div>
        <div class="logo"><img src="$
{createLinkTo(dir:'images',file:'grails_logo.jpg')}" alt="Grails" /></div>
        <g:layoutBody />

          <g:render template="/common/footer" />

   </body>
</html>
Con esto obtendremos un resultado no como el que deseamos, así como se muestra en la
figura siguiente:




Pero si deseamos mejorar el resultado debemos hacer uso de una hoja de estilos, así:


<html>
    <head>
        <title><g:layoutTitle default="Grails" /></title>
        <link rel="stylesheet" href="${createLinkTo(dir:'css',file:'main.css')}" />
        <link rel="shortcut icon" href="$
{createLinkTo(dir:'images',file:'favicon.ico')}" type="image/x-icon" />
        <g:layoutHead />
        <g:javascript library="application" />
    </head>
    <body>
        <div id="spinner" class="spinner" style="display:none;">
            <img src="${createLinkTo(dir:'images',file:'spinner.gif')}" alt="Spinner" />
        </div>
        <div class="logo"><img src="$
{createLinkTo(dir:'images',file:'grails_logo.jpg')}" alt="Grails" /></div>
        <g:layoutBody />

         <div id="footer">
         <g:render template="/common/footer" />
         </div>

    </body>
</html>


la hoja de estilos utilizada es la siguiente:
#footer {
   clear:both;
   text-align: center;
   padding: 3px;
   border-top: 1px solid #333;
}
Cuyo efecto resultante será:




Creando un topbar
De forma análoga al footer, procedemos a crear el topbar.


grails­app/views/common/_topbar.gsp 
<div id="menu">
    <nobr>
       <g:if test="${session.user}">
         <b>${session.user?.firstName}&nbsp;${session.user?.lastName}</b> |
          <g:link controller="user" action="logout">Logout</g:link>
       </g:if>
     <g:else>
        <g:link controller="user" action="login">Login</g:link>
     </g:else>
  </nobr>
</div>


Este código también debe ser enlazado desde el archivo main.gsp, para que tenga el efecto
deseado, así:
<html>
    <head>
        <title><g:layoutTitle default="Grails" /></title>
        <link rel="stylesheet" href="${createLinkTo(dir:'css',file:'main.css')}" />
        <link rel="shortcut icon" href="$
{createLinkTo(dir:'images',file:'favicon.ico')}" type="image/x-icon" />
        <g:layoutHead />
        <g:javascript library="application" />
    </head>
    <body>
        <div id="spinner" class="spinner" style="display:none;">
            <img src="${createLinkTo(dir:'images',file:'spinner.gif')}" alt="Spinner" />
        </div>
<div id="topbar">
        <g:render template="/common/topbar" />
        </div>

        <div class="logo"><img src="$
{createLinkTo(dir:'images',file:'grails_logo.jpg')}" alt="Grails" /></div>
        <g:layoutBody />

        <div id="footer">
        <g:render template="/common/footer" />
        </div>

    </body>
</html>


Obviamente que para esta nueva sección, deberemos incluir la hoja de estilos respectiva, para
obtener el resultado deseado:


#topbar {
   text-align:left;
   width: 778px;
   margin: 0px auto;
   padding: 5px 0;
}
#topbar #menu {
   float: right;
   width: 240px;
   text-align: right;
   font-size: 10px;
}


La personalización obtenida hasta el momento será la mostrada a continuación
Completando la personalización
Es momento de dar una apariencia definitiva a nuestra aplicación, para ésto debemos crear una
hoja de estilo que personalizará la apariencia de nuestra aplicación, un ejemplo de hoja de
estilo es la siguiente:


#header {
   width: 778px;
   background: #FFFFFF url(../images/fondo_header.gif) repeat-x;
   height: 70px;
   margin: 0px auto;
}
#header h1 {
   font-family:Arial,sans-serif;
   color: white;
   padding: 20px 0 0 6px;
   font-size:1.6em;
}
body {
   margin: 0px;
   padding: 0px;
   text-align:center;
   font-family: "Trebuchet MS",Arial,Helvetica,sans-serif;
   font-style: normal;
   font-variant: normal;
   font-weight: normal;
   font-size: 13px;
   line-height: normal;
   font-size-adjust: none;
   font-stretch: normal;
   color: #333333;
}
#page {
   width: 778px;
   margin: 0px auto;
   padding: 4px 0;
   text-align:left;
}
#content {
   float: left;
   width: 560px;
   color: #000;
}
#sidebar {
   float: right;
   width: 200px;
   color: #000;
   padding: 3px;
}


Ahora que disponemos de la hoja de estilos, debemos hacer uso de las mismas en el archivo
main.gsp 
<html>
   <head>
        <title><g:layoutTitle default="Gestión de Eventos" />
        </title>
        <link rel="stylesheet"
           href="${createLinkTo(dir:'css',file:'main.css')}" />
        <link rel="shortcut icon"
           href="${createLinkTo(dir:'images',file:'favicon.ico')}"
           type="image/x-icon" />
     <g:layoutHead />
     <g:javascript library="application" />
  </head>
  <body>
     <div id="page">
          <div id="spinner" class="spinner" style="display: none;">
              <img src="${createLinkTo(dir:'images',   file:'spinner.gif')}"
                  alt="Spinner" />
          </div>
         <div id="topbar">
              <g:render template="/common/topbar" />
         </div>
          <div id="header">
               <h1>Gestión de Eventos</h1>
          </div>
          <div id="content">
               <g:layoutBody />
          </div>
          <div id="sidebar">
               <g:render template="/common/buddies" />
          </div>
          <div id="footer">
               <g:render template="/common/footer" />
          </div>
       </div>
   </body>
</html>


El efecto resultante lo vemos en la siguiente figura:
El paso final de la personalización de la apariencia es cambiar la página index.gsp, para que
no muestre el contenido que por defecto se crear al momento de iniciar un proyecto; el
contenido para nuestro caso será el siguiente:


<html>
    <head>
          <title>Bienvenido a Gestion de Eventos</title>
        <meta name="layout" content="main" />
    </head>
    <body>
          <h1 style="margin-left:20px;">Sistema de Gestion de Eventos</h1>
          <p style="margin-left:20px;width:80%">
           Bienvenido a la aplicación de Gestion de Eventos. Esta es una aplicación
consiste en mantener
           le registros de los detalles de conferencias y expositores de un conjunto de
eventos.
           Al ser una aplicación de ejemplo, trata de mostrar algunas de las muchas
caracteristicas que
           dispone el Framework Grails
          </p>
            <div class="dialog" style="margin-left:20px;width:60%;">
             <ul>
                <g:each var="c" in="${grailsApplication.controllerClasses}">
                      <li class="controller"><a href="${c.logicalPropertyName}">
                       ${c.fullName}</a></li>
                </g:each>
             </ul>
         </div>
    </body>
</html>


Cuyo resultado se muestra en la figura siguiente:
Referencias
[1]    http://www.grails.org
[2]    Getting Started with Grails
[3]    The Definitive Guide to Grails


Autor




Esteban Saavedra López
Líder de la Comunidad ATIX (Oruro – Bolivia)
Activista de Software Libre en Bolivia
jesaavedra@opentelematics.org
http://jesaavedra.opentelematics.org

Más contenido relacionado

La actualidad más candente

Web 2.0 ajax con SharePoint
Web 2.0 ajax con SharePointWeb 2.0 ajax con SharePoint
Web 2.0 ajax con SharePointgoreorti
 
Taller integracion jsf spring
Taller integracion jsf springTaller integracion jsf spring
Taller integracion jsf springIBM
 
JBossAS: Desarrollo con Java Server Faces
JBossAS: Desarrollo con Java Server FacesJBossAS: Desarrollo con Java Server Faces
JBossAS: Desarrollo con Java Server FacesAitor Acedo
 
Responsive Web Design (Diseño Web Adaptable)
Responsive Web Design (Diseño Web Adaptable)Responsive Web Design (Diseño Web Adaptable)
Responsive Web Design (Diseño Web Adaptable)Adolfo Sanz De Diego
 
Presentación extensiones interesantes joomla
Presentación extensiones interesantes joomlaPresentación extensiones interesantes joomla
Presentación extensiones interesantes joomlaMadBlake
 
Ejercicio basico jsf’s
Ejercicio basico jsf’sEjercicio basico jsf’s
Ejercicio basico jsf’sayreonmx
 
Joomla! en 10 minutos - JoomlaDay Sevilla 2015
Joomla! en 10 minutos  - JoomlaDay Sevilla 2015Joomla! en 10 minutos  - JoomlaDay Sevilla 2015
Joomla! en 10 minutos - JoomlaDay Sevilla 2015Carlos M. Cámara
 
Manual Admon Contenidos Joomla 1.5 V2 Gen
Manual Admon Contenidos Joomla 1.5 V2 GenManual Admon Contenidos Joomla 1.5 V2 Gen
Manual Admon Contenidos Joomla 1.5 V2 GenKnowldedge Factory
 
proyecto conexion netbeans con Mysql
proyecto conexion netbeans con Mysqlproyecto conexion netbeans con Mysql
proyecto conexion netbeans con MysqlBrenditaLr
 

La actualidad más candente (20)

Semana 4 Estructura y componentes SPA
Semana 4  Estructura y componentes SPASemana 4  Estructura y componentes SPA
Semana 4 Estructura y componentes SPA
 
Web 2.0 ajax con SharePoint
Web 2.0 ajax con SharePointWeb 2.0 ajax con SharePoint
Web 2.0 ajax con SharePoint
 
06. jsf (java server faces) (1)
06. jsf (java server faces) (1)06. jsf (java server faces) (1)
06. jsf (java server faces) (1)
 
Java server faces
Java server facesJava server faces
Java server faces
 
Magento Best Practices
Magento Best PracticesMagento Best Practices
Magento Best Practices
 
Taller integracion jsf spring
Taller integracion jsf springTaller integracion jsf spring
Taller integracion jsf spring
 
JqueryMobile
JqueryMobile JqueryMobile
JqueryMobile
 
JBossAS: Desarrollo con Java Server Faces
JBossAS: Desarrollo con Java Server FacesJBossAS: Desarrollo con Java Server Faces
JBossAS: Desarrollo con Java Server Faces
 
Tutorial ASP .NET
Tutorial ASP .NETTutorial ASP .NET
Tutorial ASP .NET
 
Responsive Web Design (Diseño Web Adaptable)
Responsive Web Design (Diseño Web Adaptable)Responsive Web Design (Diseño Web Adaptable)
Responsive Web Design (Diseño Web Adaptable)
 
Angularjs
AngularjsAngularjs
Angularjs
 
Google analytics tuning
Google analytics tuningGoogle analytics tuning
Google analytics tuning
 
patron de diseño MVVMo.pptx
patron de diseño MVVMo.pptxpatron de diseño MVVMo.pptx
patron de diseño MVVMo.pptx
 
Presentacion wpf
Presentacion wpfPresentacion wpf
Presentacion wpf
 
Presentación extensiones interesantes joomla
Presentación extensiones interesantes joomlaPresentación extensiones interesantes joomla
Presentación extensiones interesantes joomla
 
Ejercicio basico jsf’s
Ejercicio basico jsf’sEjercicio basico jsf’s
Ejercicio basico jsf’s
 
Joomla! en 10 minutos - JoomlaDay Sevilla 2015
Joomla! en 10 minutos  - JoomlaDay Sevilla 2015Joomla! en 10 minutos  - JoomlaDay Sevilla 2015
Joomla! en 10 minutos - JoomlaDay Sevilla 2015
 
Curso Ejb3
Curso Ejb3Curso Ejb3
Curso Ejb3
 
Manual Admon Contenidos Joomla 1.5 V2 Gen
Manual Admon Contenidos Joomla 1.5 V2 GenManual Admon Contenidos Joomla 1.5 V2 Gen
Manual Admon Contenidos Joomla 1.5 V2 Gen
 
proyecto conexion netbeans con Mysql
proyecto conexion netbeans con Mysqlproyecto conexion netbeans con Mysql
proyecto conexion netbeans con Mysql
 

Similar a Grails: Framework para el desarrollo de aplicaciones Web No 3

Similar a Grails: Framework para el desarrollo de aplicaciones Web No 3 (20)

Phonegap
PhonegapPhonegap
Phonegap
 
Fundamentos del diseño web front end
Fundamentos del diseño web front endFundamentos del diseño web front end
Fundamentos del diseño web front end
 
6.angular js
6.angular js6.angular js
6.angular js
 
Taller de Azure Cognitive Services
Taller de Azure Cognitive ServicesTaller de Azure Cognitive Services
Taller de Azure Cognitive Services
 
Estándares Web con Chico UI
Estándares Web con Chico UIEstándares Web con Chico UI
Estándares Web con Chico UI
 
Imagenes
ImagenesImagenes
Imagenes
 
Introducción a Foundation 5
Introducción a Foundation 5Introducción a Foundation 5
Introducción a Foundation 5
 
Introducción a Foundation 5
Introducción a Foundation 5Introducción a Foundation 5
Introducción a Foundation 5
 
Maquetar pagina html con css
Maquetar pagina html con cssMaquetar pagina html con css
Maquetar pagina html con css
 
De HTML a Express
De HTML a ExpressDe HTML a Express
De HTML a Express
 
Laboratorio 03
Laboratorio 03Laboratorio 03
Laboratorio 03
 
jQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogojQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogo
 
Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Faces
 
Introduccion a j query
Introduccion a j queryIntroduccion a j query
Introduccion a j query
 
Diseño web
Diseño webDiseño web
Diseño web
 
Diseño web
Diseño webDiseño web
Diseño web
 
Sencha touch - Proceso básico de desarrollo
Sencha touch - Proceso básico de desarrolloSencha touch - Proceso básico de desarrollo
Sencha touch - Proceso básico de desarrollo
 
Salesforce Bilbao Elevate '15 - 4th developer workshop
Salesforce Bilbao Elevate '15 - 4th developer workshopSalesforce Bilbao Elevate '15 - 4th developer workshop
Salesforce Bilbao Elevate '15 - 4th developer workshop
 
Trabajo jose 2
Trabajo jose 2Trabajo jose 2
Trabajo jose 2
 
Accesibilidad práctica con HTML5, CSS3 y WAI-ARIA
Accesibilidad práctica con HTML5, CSS3 y WAI-ARIAAccesibilidad práctica con HTML5, CSS3 y WAI-ARIA
Accesibilidad práctica con HTML5, CSS3 y WAI-ARIA
 

Más de Esteban Saavedra (20)

Atix30
Atix30Atix30
Atix30
 
Atix29
Atix29Atix29
Atix29
 
Atix28
Atix28Atix28
Atix28
 
Atix27
Atix27Atix27
Atix27
 
Atix26
Atix26Atix26
Atix26
 
Atix25
Atix25Atix25
Atix25
 
Rabbitmq
RabbitmqRabbitmq
Rabbitmq
 
Ansible
AnsibleAnsible
Ansible
 
Perl
PerlPerl
Perl
 
Atix24
Atix24Atix24
Atix24
 
Atix23
Atix23Atix23
Atix23
 
Lineas Base Migracion a Software Libre
Lineas Base Migracion a Software LibreLineas Base Migracion a Software Libre
Lineas Base Migracion a Software Libre
 
Seguridad Sistemas de Gobierno
Seguridad Sistemas de GobiernoSeguridad Sistemas de Gobierno
Seguridad Sistemas de Gobierno
 
Tunneling: Esquivando Restricciones de Proxies y Firewalls
Tunneling: Esquivando Restricciones de Proxies y FirewallsTunneling: Esquivando Restricciones de Proxies y Firewalls
Tunneling: Esquivando Restricciones de Proxies y Firewalls
 
Bi Un Modelo Eficiente para Gerenciar Empresas
Bi Un Modelo Eficiente para Gerenciar EmpresasBi Un Modelo Eficiente para Gerenciar Empresas
Bi Un Modelo Eficiente para Gerenciar Empresas
 
Clouds privadas
Clouds privadasClouds privadas
Clouds privadas
 
Introduccion Computacion Ubicua
Introduccion Computacion UbicuaIntroduccion Computacion Ubicua
Introduccion Computacion Ubicua
 
Frameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsFrameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web Grails
 
Avances Tecnologicos
Avances TecnologicosAvances Tecnologicos
Avances Tecnologicos
 
Dni Electronico Bolivia
Dni Electronico BoliviaDni Electronico Bolivia
Dni Electronico Bolivia
 

Último

Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 

Último (20)

Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 

Grails: Framework para el desarrollo de aplicaciones Web No 3

  • 1. Grails: Framework para el desarrollo de aplicaciones Web (3ra Parte) Grails es un framework orientado al desarrollo de aplicaciones web de forma sencilla, rápida y divertida. Personalizar apariencia La personalización de la apariencia en las aplicaciones web, generalmente se las realiza haciendo uso de hojas de estilo y javascript para algunos efectos. En las anteriores entregas vimos desde la Malla de diseño creación de un proyecto, la creación de Dentro el mundo del diseño de aplicaciones scafolding, hasta la la validación de web, se posee una estructura base sobre la formularios mediante el uso de constraints, cual se pueden realizar personalizaciones en esta entrega veremos la personalización para mejorar la apariencia y funcionalidad de de la interfaz de la aplicación. la aplicación. La gráfica siguiente muestra una estructura base, para nuestro ejemplo representa como quedará nuestra aplicación.
  • 2. donde: ✔ gutter: Proporciona un espacio en blanco sobre los bordes del navegador, de modo que el contenido del área principal se centra en el navegador. ✔ topbar: Proporciona la información referente al inicio de sesión (login, usuario conectado, etc) ✔ header: Muestra la información de la aplicación (título, logo, etc) ✔ content: Muestra el contenido principal de la aplicación ✔ right sidebar: Generalmente utilizado para mostrar opciones o detalles de la aplicación (menús, lista de opciones, etc) ✔ footer: Muestra la información de derechos de autor, desarrollo, etc Creando un footer Para esto debemos crear un fragmento de código GSP, llamado _footer.gsp dentro el directorio grails­app/views/common. A continuación, agregue el _footer.gsp a la plantilla mediante el tag <g:render   template="/common/footer"/>, para esto también debemos considerar realizar una hoja de estilos para darle los efectos deseados. grails­app/views/common/_footer.gsp  <span class="copyright">&copy; 2009 Tutorial de Grails: Revista Atix<br/>Esteban Saavedra López</span> Para que este footer esté incluido en la presentación de la aplicación debemos incluir <g:render template="/common/footer"/> al final del archivo main.gsp, como se muestra a continuación: <html> <head> <title><g:layoutTitle default="Grails" /></title> <link rel="stylesheet" href="${createLinkTo(dir:'css',file:'main.css')}" /> <link rel="shortcut icon" href="$ {createLinkTo(dir:'images',file:'favicon.ico')}" type="image/x-icon" /> <g:layoutHead /> <g:javascript library="application" /> </head> <body> <div id="spinner" class="spinner" style="display:none;"> <img src="${createLinkTo(dir:'images',file:'spinner.gif')}" alt="Spinner" /> </div> <div class="logo"><img src="$ {createLinkTo(dir:'images',file:'grails_logo.jpg')}" alt="Grails" /></div> <g:layoutBody /> <g:render template="/common/footer" /> </body> </html>
  • 3. Con esto obtendremos un resultado no como el que deseamos, así como se muestra en la figura siguiente: Pero si deseamos mejorar el resultado debemos hacer uso de una hoja de estilos, así: <html> <head> <title><g:layoutTitle default="Grails" /></title> <link rel="stylesheet" href="${createLinkTo(dir:'css',file:'main.css')}" /> <link rel="shortcut icon" href="$ {createLinkTo(dir:'images',file:'favicon.ico')}" type="image/x-icon" /> <g:layoutHead /> <g:javascript library="application" /> </head> <body> <div id="spinner" class="spinner" style="display:none;"> <img src="${createLinkTo(dir:'images',file:'spinner.gif')}" alt="Spinner" /> </div> <div class="logo"><img src="$ {createLinkTo(dir:'images',file:'grails_logo.jpg')}" alt="Grails" /></div> <g:layoutBody /> <div id="footer"> <g:render template="/common/footer" /> </div> </body> </html> la hoja de estilos utilizada es la siguiente: #footer { clear:both; text-align: center; padding: 3px; border-top: 1px solid #333; }
  • 4. Cuyo efecto resultante será: Creando un topbar De forma análoga al footer, procedemos a crear el topbar. grails­app/views/common/_topbar.gsp  <div id="menu"> <nobr> <g:if test="${session.user}"> <b>${session.user?.firstName}&nbsp;${session.user?.lastName}</b> | <g:link controller="user" action="logout">Logout</g:link> </g:if> <g:else> <g:link controller="user" action="login">Login</g:link> </g:else> </nobr> </div> Este código también debe ser enlazado desde el archivo main.gsp, para que tenga el efecto deseado, así: <html> <head> <title><g:layoutTitle default="Grails" /></title> <link rel="stylesheet" href="${createLinkTo(dir:'css',file:'main.css')}" /> <link rel="shortcut icon" href="$ {createLinkTo(dir:'images',file:'favicon.ico')}" type="image/x-icon" /> <g:layoutHead /> <g:javascript library="application" /> </head> <body> <div id="spinner" class="spinner" style="display:none;"> <img src="${createLinkTo(dir:'images',file:'spinner.gif')}" alt="Spinner" /> </div>
  • 5. <div id="topbar"> <g:render template="/common/topbar" /> </div> <div class="logo"><img src="$ {createLinkTo(dir:'images',file:'grails_logo.jpg')}" alt="Grails" /></div> <g:layoutBody /> <div id="footer"> <g:render template="/common/footer" /> </div> </body> </html> Obviamente que para esta nueva sección, deberemos incluir la hoja de estilos respectiva, para obtener el resultado deseado: #topbar { text-align:left; width: 778px; margin: 0px auto; padding: 5px 0; } #topbar #menu { float: right; width: 240px; text-align: right; font-size: 10px; } La personalización obtenida hasta el momento será la mostrada a continuación
  • 6. Completando la personalización Es momento de dar una apariencia definitiva a nuestra aplicación, para ésto debemos crear una hoja de estilo que personalizará la apariencia de nuestra aplicación, un ejemplo de hoja de estilo es la siguiente: #header { width: 778px; background: #FFFFFF url(../images/fondo_header.gif) repeat-x; height: 70px; margin: 0px auto; } #header h1 { font-family:Arial,sans-serif; color: white; padding: 20px 0 0 6px; font-size:1.6em; } body { margin: 0px; padding: 0px; text-align:center; font-family: "Trebuchet MS",Arial,Helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 13px; line-height: normal; font-size-adjust: none; font-stretch: normal; color: #333333; } #page { width: 778px; margin: 0px auto; padding: 4px 0; text-align:left; } #content { float: left; width: 560px; color: #000; } #sidebar { float: right; width: 200px; color: #000; padding: 3px; } Ahora que disponemos de la hoja de estilos, debemos hacer uso de las mismas en el archivo main.gsp 
  • 7. <html> <head> <title><g:layoutTitle default="Gestión de Eventos" /> </title> <link rel="stylesheet" href="${createLinkTo(dir:'css',file:'main.css')}" /> <link rel="shortcut icon" href="${createLinkTo(dir:'images',file:'favicon.ico')}" type="image/x-icon" /> <g:layoutHead /> <g:javascript library="application" /> </head> <body> <div id="page"> <div id="spinner" class="spinner" style="display: none;"> <img src="${createLinkTo(dir:'images', file:'spinner.gif')}" alt="Spinner" /> </div> <div id="topbar"> <g:render template="/common/topbar" /> </div> <div id="header"> <h1>Gestión de Eventos</h1> </div> <div id="content"> <g:layoutBody /> </div> <div id="sidebar"> <g:render template="/common/buddies" /> </div> <div id="footer"> <g:render template="/common/footer" /> </div> </div> </body> </html> El efecto resultante lo vemos en la siguiente figura:
  • 8. El paso final de la personalización de la apariencia es cambiar la página index.gsp, para que no muestre el contenido que por defecto se crear al momento de iniciar un proyecto; el contenido para nuestro caso será el siguiente: <html> <head> <title>Bienvenido a Gestion de Eventos</title> <meta name="layout" content="main" /> </head> <body> <h1 style="margin-left:20px;">Sistema de Gestion de Eventos</h1> <p style="margin-left:20px;width:80%"> Bienvenido a la aplicación de Gestion de Eventos. Esta es una aplicación consiste en mantener le registros de los detalles de conferencias y expositores de un conjunto de eventos. Al ser una aplicación de ejemplo, trata de mostrar algunas de las muchas caracteristicas que dispone el Framework Grails </p> <div class="dialog" style="margin-left:20px;width:60%;"> <ul> <g:each var="c" in="${grailsApplication.controllerClasses}"> <li class="controller"><a href="${c.logicalPropertyName}"> ${c.fullName}</a></li> </g:each> </ul> </div> </body> </html> Cuyo resultado se muestra en la figura siguiente:
  • 9. Referencias [1] http://www.grails.org [2] Getting Started with Grails [3] The Definitive Guide to Grails Autor Esteban Saavedra López Líder de la Comunidad ATIX (Oruro – Bolivia) Activista de Software Libre en Bolivia jesaavedra@opentelematics.org http://jesaavedra.opentelematics.org