José Aparicio García SPORTALIA37 WEB DE EVENTOS DEPORTIVOS PROYECTO FINAL DE CARRERA dirigido per la Dr. Carlos Molina Clemente Ingeniería Técnica en Informática de Gestión Tarragona 2014 Documentación general Página 2 Documentación general Tabla de contenido 1. Prefacio........................................................................................................................................................ 7 1. Prefaci.......................................................................................................................................................... 9 1. Abstract ..................................................................................................................................................... 11 2. Introducción.............................................................................................................................................. 13 2.1 Eventos deportivos .............................................................................................................................. 13 2.2 CMS .................................................................................................................................................... 14 2.2.1 - ¿Qué es un gestor de contenidos o CMS? .................................................................................. 14 2.2.2- Historia ....................................................................................................................................... 15 2.2.3- Funcionalidades .......................................................................................................................... 16 2.2.4 Clasificación de los CMS ............................................................................................................... 16 2.2.5 Ejemplos de los CMS más utilizados ....................................................................................... 17 2.3. Drupal ................................................................................................................................................ 19 2.3.1 Definición ..................................................................................................................................... 19 2.3.2 Arquitectura de Drupal ................................................................................................................ 20 2.3.3 Principales características de DRUPAL......................................................................................... 21 2.3.4 Ventajas de trabajar con Drupal .................................................................................................. 22 2.3.5 Conceptos .................................................................................................................................... 24 2.3.6 Instalación y configuración .......................................................................................................... 25 2.3.7 Sitios web desarrollados con Drupal ............................................................................................ 26 2.3.8 Conceptos Drupal......................................................................................................................... 30 2.3.8.1 Núcleo .................................................................................................................................... 30 2.3.8.2 Módulos ................................................................................................................................. 31 2.3.8.3 Hooks ..................................................................................................................................... 31 2.3.8.4 Temas .................................................................................................................................... 32 2.3.8.5 Nodos..................................................................................................................................... 33 2.3.8.6 Regiones ................................................................................................................................ 33 2.3.8.7 Bloques .................................................................................................................................. 34 Página 3 Documentación general 3. Objetivos.................................................................................................................................................... 36 3.1 Objetivo principal ................................................................................................................................ 36 3.2 Propósito del proyecto ........................................................................................................................ 36 3.3 Antecedentes ...................................................................................................................................... 37 4. Especificaciones ......................................................................................................................................... 38 4.1 Especificaciones del proyecto .............................................................................................................. 38 4.1.1 Usabilidad .................................................................................................................................... 38 4.1.2 Modos de acceso ......................................................................................................................... 38 4.1.3 Usuarios y roles ............................................................................................................................ 39 4.1.4 Navegadores ................................................................................................................................ 40 4.1.5 Publicidad .................................................................................................................................... 40 4.2 Casos de uso ........................................................................................................................................ 41 4.2.1 Creación de usuarios .................................................................................................................... 41 4.2.1.2 Clases de usuarios ..................................................................................................................... 42 4.2.2 Acceso a la información de sitio .................................................................................................. 42 4.2.3 Publicación de eventos ................................................................................................................ 42 4.2.4 Comentarios................................................................................................................................. 44 4.2.5 Creación de blogs (cuaderno de bitácora) ................................................................................... 45 4.2.6 Actualidad RSS ............................................................................................................................. 46 4.2.7 Crear encuestas ........................................................................................................................... 47 4.2.8 Votar encuestas ........................................................................................................................... 48 4.2.9 RSS Really Simple Syndication...................................................................................................... 48 4.2.10 Consultar los eventos propios publicados .................................................................................. 49 4.2.11 Acceso a contenido mediante la nube de tags .......................................................................... 50 4.2.12 Acceso a los eventos a través del rotor de la página principal .................................................. 53 4.2.13 Compartir contenido en redes sociales ...................................................................................... 53 4.2.14 Votar evento .............................................................................................................................. 55 4.2.15 Image upload ............................................................................................................................. 56 4.2.16 Crear una Historia anónima....................................................................................................... 57 5. Diseño y desarrollo .................................................................................................................................... 58 5.1 Instalación ........................................................................................................................................... 58 5.1.1 Instalación de Drupal paso a paso ............................................................................................... 58 5.1.2 Recomendaciones funcionales ..................................................................................................... 62 5.1.2.1 Programación automática del ejecutable cron.php ................................................................. 62 Página 4 Documentación general 5.1.2.2 URL´s limpia ............................................................................................................................. 66 5.2 Bloques ................................................................................................................................................ 68 5.3 Taxonomía .......................................................................................................................................... 76 5.4 Tipos de contenido .............................................................................................................................. 77 5.4.1 Contenidos modificados y/o importados con módulos ................................................................ 77 5.4.2 Contenidos creados y diseñados para Sportalia37 ...................................................................... 80 5.5 Módulos utilizados .............................................................................................................................. 81 5.5.1 Core modules ............................................................................................................................... 81 5.5.2 Contributed modules ................................................................................................................... 83 5.5.3 Directrices para crear un módulo ................................................................................................ 90 5.5.4 Módulos creados ......................................................................................................................... 92 5.5.4.1 Módulo recomienda .............................................................................................................. 92 5.5.4.1.1 Descripción ..................................................................................................................... 92 5.5.4.1.2 Estructura ....................................................................................................................... 92 5.5.4.1.3 Hooks .............................................................................................................................. 92 5.5.4.1.4 Funcionamiento .............................................................................................................. 93 5.5.4.2 Módulo expiración ................................................................................................................. 94 5.5.4.2.1 Descripción ..................................................................................................................... 94 5.5.4.2.2 Estructura ....................................................................................................................... 94 5.5.4.2.3 Hooks .............................................................................................................................. 95 5.5.4.2.4 Base de datos ................................................................................................................. 96 5.5.4.2.5 Permisos ......................................................................................................................... 96 5.5.4.2.6 Funcionamiento .............................................................................................................. 97 5.5.4.3 Módulo depuración ............................................................................................................... 98 5.5.4.3.1 Descripción ..................................................................................................................... 98 5.5.4.3.2 Estructura ....................................................................................................................... 98 5.5.4.3.3 Hooks .............................................................................................................................. 99 5.5.4.3.4 Base de datos ............................................................................................................... 101 5.5.4.3.5 Funcionamiento ............................................................................................................ 102 5.5.5 Tema creado .............................................................................................................................. 104 Página 5 Documentación general 5.5.6 Lenguajes de programación utilizados ...................................................................................... 106 5.5.7 Programas y aplicaciones utilizados .......................................................................................... 107 6. Pruebas .................................................................................................................................................... 112 7. Planificación temporal............................................................................................................................. 114 8. Costes ...................................................................................................................................................... 116 8.1 Estudio previo.................................................................................................................................... 116 8.2 Conclusiones...................................................................................................................................... 120 9. Legislación ............................................................................................................................................... 122 9.1 Ley orgánica de protección de datos................................................................................................. 122 10. Mejoras ................................................................................................................................................. 124 10.1 Mantenimiento ............................................................................................................................... 124 10.2 Actualización a Drupal 8 ................................................................................................................. 125 11. Conclusiones generales ......................................................................................................................... 128 12. Referencias / Bibliografía ...................................................................................................................... 130 13. Glosario ................................................................................................................................................. 132 Página 6 Documentación general 1. Prefacio Son ya muchos los eventos deportivos en los que mi grupo de amigos y yo hemos acudido como participantes, triatlones, maratones, travesías… Siempre que se acaba una prueba los atletas hablamos sobre que tal ha sido la organización, si ha habido buenos avituallamientos, si todo ha estado bien señalizado, si el precio que se ha pagado por participar se ajusta a la calidad de lo ofrecido y un largo etcétera, opiniones que, siempre se quedan entre nosotros y nunca llegan a los organizadores con la contundencia y la transparencia que debería. En las páginas web de los organizadores no es nada fácil encontrar la posibilidad de que los participantes puedan expresar dichas inquietudes libremente una vez todo ha finalizado. Aunar en una misma web a organizadores y atletas haciéndoles partícipes de los contenidos, comentarios, encuestas y demás funcionalidades y que todos ellos puedan opinar con total libertad del evento realizado fue la idea inicial que dio paso al desarrollo de esta página web. Sportalia37 será una solución a esta falta de transparencia, pretendiendo ser de utilidad a todos los implicados (organizadores y atletas). Esta web permitirá, por un lado, mejorar los futuros eventos de los organizadores y por el otro, los atletas sabrán las virtudes y carencias del evento en cuestión. El motor que sostiene el sitio web es DRUPAL, un sistema de gestión de contenidos web (CMS), desarrollado por una extensa comunidad de programadores independientes que comparten y mejoran continuamente sus módulos, temas y demás partes del dicho sistema de forma gratuita y altruista. Página 7 Documentación general Su enorme potencial, total flexibilidad y uso extendido fueron determinantes para su elección frente a otros CMS existentes. Página 8 Documentación general 1. Prefaci Són ja molts els esdeveniments esportius en els que el meu grup d'amics i jo hem acudit com a participants , triatlons , maratons , travesses ... Sempre que s'acaba una prova els atletes parlem sobre com ha estat l'organització , si hi ha hagut bons avituallaments , si tot ha estat ben senyalitzat , si el preu que s'ha pagat per participar s'ajusta a la qualitat de l'ofert i un llarg etcètera , opinions que , sempre es queden entre nosaltres i mai arriben als organitzadors amb la contundència i la transparència que hauria de ser. A les pàgines web dels organitzadors no és gens fàcil trobar la possibilitat que els participants puguin expressar aquestes inquietuds lliurement una vegada tot ja ha acabat . Unir en una mateixa web a organitzadors i atletes fent-los partícips dels continguts , comentaris , enquestes i altres funcionalitats i que tots ells puguin opinar amb total llibertat sobre els esdeveniments va ser la idea inicial que va donar pas al desenvolupament d'aquesta pàgina web . Sportalia37 serà una solució a aquesta manca de transparència , pretenent ser d'utilitat a tots els implicats ( organitzadors i atletes ) . Aquest web permetrà , d'una banda , promocionar i millorar els esdeveniments dels organitzadors ja que aquests sabran de boca dels propis participants quines han estat les mancances i virtuts de l'esdeveniment i de l'altra , els atletes més d'opinar i interactuar amb múltiple contingut també sabran aquests encerts i errors de l'esdeveniment en qüestió gràcies a l'opinió de companys . Aquesta serà una condició que tot organitzador haurà d'assumir si pretén promocionar-se a la web. Página 9 Documentación general El motor que sosté el lloc web és DRUPAL , un sistema de gestió de continguts web ( CMS ) , desenvolupat per una extensa comunitat de programadors independents que comparteixen i milloren contínuament els seus mòduls , temes i altres parts de la dita sistema de forma gratuïta i altruista . El seu enorme potencial, total flexibilitat i ús estès van ser determinants per a la seva elecció davant d'altres CMS existents. Página 10 Documentación general 1. Abstract It has already been many sport events that my group of friends and I have participated in, triathlons, marathons, cruises… Every time we finish a competition we talk and give our opinion about it, for example if refreshments have really been good, if everything has been well explained, if the price we have paid matches the general quality and other aspects of the event. These opinions are always forgotten and are never known by the organizers. In their websites is not easy and most times is imposible that participants can freely express those concerns once everything is finished. Joining in the same website organizers and athletes making them participants in the content, comments, polls and other features and that all these can freely comment about the events it was the initial idea wich led to the development of this project. Sportalia37 will be a solution to this lack of transparency, pretending to be helpful to all the people involved (organizers and athletes). This site will allow, on one hand, promote and enhance the organizer´s events because they will know from the athletes what kind of things are deficiencies and what are virtues of the event and the other hand, the athletes besides reviewing and interacting with multiple contents will also know these successes and failures of the event through their friend‟s opinions. This is a mandatory condition that an organizer must asume if he wants to promote his event to the web. The engine holding this project is is a popular web content management system (CMS) whose name is DRUPAL, developed by a large community of independent developers who share and continually improve their modules, Página 11 Documentación general themes and others parts of the system in a free and altruistic way. His great potential, full flexibility and widespread use were the key to choose him over other existing CMS. Página 12 Documentación general 2. Introducción Esta memoria explicará todo el proceso de construcción de la web a través del CMS Drupal. Decisiones tomadas, módulos necesarios, costes de su puesta en marcha, horas a dedicar y futuro mantenimiento una vez esté puesta en marcha. Además de todo lo nombrado anteriormente intentaremos indagar en otros aspectos con el fin de ampliar nuestros conocimientos a propósito de los diferentes tipos de CMS que existen en la actualidad y de que nos pueden ofrecer. 2.1 Eventos deportivos Definición Los eventos deportivos son actividades físicas que se realizan de manera esporádica teniendo multitud de repercusiones positivas en el lugar donde estas se organizan: Infraestructuras, turismo, económicas, deportivas y un largo etcétera. Es obvio que a medida que han pasado los años estos han mejorado considerablemente en muchos aspectos pero aun así los atletas que participan en ellos habitualmente se quejan de ciertos aspectos que deberían mejorar. Experiencia personal Debido a mi implicación como miembro activo del Club Triatlón Tarragona y participante de multitud de pruebas de todo tipo (maratones, triatlones, ironman, duatlones, carreras de orientación, travesías, etcétera) puedo certificar de primera mano que dichas carencias existen con independencia de la popularidad y prestigio del evento. Es por este motivo por el que Sportalia37 pretende ser Página 13 Documentación general una web referente y plural sin ningún tipo de restricciones a la hora de comentar los eventos deportivos y sus críticas pertinentes. Carencias organizativas y problemática La mayor parte de las carencias tienen que ver con los siguientes aspectos: Poca visibilidad. Escasez de plazas. Mala señalización. Malos accesos. Confluencia de horarios. Saturación y problemas circulatorios. Falta de árbitros reguladores. Escasez de alojamientos cercanos y a precios competitivos. Poca vigilancia del material deportivo en boxes. Falta de personal de socorro en travesías en mar abierto. El principal problema es que no se da voz a las críticas de los participantes de estas pruebas ya que los medios que la organización utiliza para promocionar tales eventos (webs, radio, televisión, etcétera) no permiten comentarios con críticas constructivas por miedo a que se desvirtúe dicha prueba. Posibles soluciones Está claro que existen soluciones para apaliar estas carencias y la piedra angular de todo esto es recoger la voz de los atletas y crear un sitio donde se agrupen todas las opiniones y críticas constructivas a propósito de las pruebas. Sportalia37 pretende ser un portal donde organizadores podrán promocionar sus eventos con la condición de que no pueden vetar los comentarios que se hagan por parte de los participantes de sus eventos realizados. Una vez recopilados ya será problema de dichos organizadores en paliar esas carencias y mejorar la calidad de sus eventos. 2.2 CMS 2.2.1 - ¿Qué es un gestor de contenidos o CMS? Un gestor de contenidos o CMS (Content management system) es una aplicación para la creación de webs utilizada con el fin de poder crear, gestionar Página 14 Documentación general y editar contenidos. Especialmente diseñados para crear webs, todo buen CMS tiene que permitir actualizar sus contenidos digitales regularmente además de separar el diseño del contenido de forma clara para poder ser manejados de forma independiente y con mayor flexibilidad. Además de lo nombrado anteriormente también debe soportar múltiples usuarios con distintos perfiles, ha de ser seguro, estable y soportar diferentes idiomas. Tales gestores de contenidos permiten adaptarse a nuestras necesidades a través de módulos específicos que se pueden acoplar a la estructura inicial genérica con el fin de gestionar mejor el contenido digital moldeándose más a las funcionalidades propias de cada diseño. Dichos contenidos digitales pueden ser ficheros, galerías de fotos, encuestas, fórums, artículos, blogs, etcétera. A través de un panel de administración los CMS permiten editar todo el contenido así como de tener control total de todos los demás aspectos tales como seguridad, criterios de autenticación, permisos para cada tipo de usuario, y otros. En el mercado existen numerosos CMS como por ejemplo, Joomla, OpenCms, WordPress, Plone, Typo3, Liferay, Blogger, etcétera. A continuación veremos los más utilizados por la comunidad de creadores de webs analizando sus principales virtudes. 2.2.2- Historia A principios de los años 90 no se conocían los sistemas de gestión de contenidos. Los primeros sistemas de gestión fueron desarrollados por empresas del sector de las publicaciones, tales como revistas y periódicos digitales, que necesitaban publicar en sus webs grandes cantidades de contenido digital necesitando numerosas actualizaciones como consecuencia del flujo constante de nueva información que estas manejaban en sus redacciones. RedDot fue una de las empresas pioneras en desarrollar un gestor de contenidos a finales del año 1995, pero uno de los primeros CMS que ofrecía su código en abierto y por lo tanto, de libre acceso para toda la comunidad de cibernautas, fue Typo3 cuyo propulsor, Kasper Skarhoj, empezaría su desarrollo a mediados del año 1997. No fue hasta el nacimiento de PHPNuke, desarrollado en 2000, cuando este tipo de herramientas empezó a ser utilizado mayoritariamente por las comunidades internautas. La utilización masiva de portales web por parte de empresas, Página 15 Documentación general instituciones, administración y un largo etcétera que necesitaban gestionar de manera ágil, segura y compacta grandes cantidades de contenido digital catapultaron definitivamente a los CMS a la cima de las aplicaciones de creación de páginas web. 2.2.3- Funcionalidades El sistema CMS funciona en el servidor web en el que se halla ubicado el portal. Mediante el navegador web se accederá al gestor de contenidos pudiendo requerir el uso de FTP (File transfer protocol) para la subida de contenidos al sitio debido a que su arquitectura es, como acabamos de decir, cliente-servidor. Cada acceso a una URL por parte de un usuario implica que se ejecute en el servidor esa llamada seleccionando el interfaz gráfico y la introducción de datos asociados a tal acceso de la base de datos en la que se esté trabaje generando dinámicamente la página para ese usuario en cuestión. 2.2.4 Clasificación de los CMS Un primer criterio de clasificación de los CSM es según para que tipo de utilización final estén enfocados, así por ejemplo, las posibilidades pueden ser para crear una web de una empresa, hacer un blog, un sistema de e-learning, una wiki, una tienda, conferencias, una revista, enseñanza on-line, comercio electrónico, etcétera. Un segundo criterio sería en función del lenguaje de programación empleado, por ejemplo, Asp.net, Java, PHP, Python y muchos otros más. Por último el criterio más relevante para muchos es el comercial. Existen múltiples plataformas realizadas por empresas privadas con el fin de obtener beneficios comerciales a través de la venta de su software, el más destacado sin duda es Vignette siendo este el primero de pago en salir al mercado. Por otro lado, los más utilizados por la comunidad internauta son los de código libre, cuyas futuras actualizaciones y mejoras son desarrolladas por las propias comunidades de internautas de forma libre y desinteresada. Los más populares son Blogger, Wordpress, Joomla, Oscommerce y Drupal. Página 16 Documentación general 2.2.5 Ejemplos de los CMS más utilizados Blogger - Definición: CMS on-line diseñado para la creación de Blogs. - Historia: Creado por Pyra Labs y finalmente adquirido por goolge en el año 2003. Permite a los usuarios crear cuadernos de bitácora on-line. - Principales funcionalidades: Permite personalizar el aspecto del blog sin saber código específico, restringir el acceso al sitio, adaptar los contenidos para dispositivos móviles, publicación a través de correo electrónico, sindicación RSS de entradas al blog, publicación de dominios personalizados, número ilimitado de publicaciones por blog. www.blogger.com Wordpress - Definición: Gestor de contenidos diseñado para utilizarlo en la creación de blogs on-line. - Historia: Desarrollado por Matt Mullenweg y Ryan Boren en PHP y MySQL, destaca la versión actualizada de 2005 en la que se incorporaron las más relevantes funcionalidades como el uso de páginas estáticas. - Principales funcionalidades: Actualización automática del sistema a partir de la versión 2.7, capacidad de crear páginas estáticas, fácil personalización del sitio, publicación mediante e-mail, cinco posibles estados para una entrada (publicado, borrador, en espera de revisión, Página 17 Documentación general privado y protegido), permite comentarios y herramientas de comunicación entre blogs, subida y gestión de adjuntos y multimedia. www.wordpress.org Joomla - Definición: CMS diseñado para desarrollar sitios web dinámicos e interactivos permitiendo la gestión integral del sitio web a través de su panel de administración. - Historia: Nace el 17 de agosto de 2005 como consecuencia de la división de Mambo Open Source gracias a la corporación Miro of Australia con la finalidad de proteger el proyecto protegiéndolo de futuros pleitos. El 22 de enero de 2008 se lanzó la version 1.5 estable de Joomla desarrollada en PHP siendo esta la que dio su sello personal inconfundible ya que hasta el momento el código y aspecto seguían siendo muy parecidos a mambo. - Principales funcionalidades: Se puede ejecutar en Linux, MacOSX server, Solaris y Aix, sólido soporte para teléfonos móviles, preparado para trabajar en redes locales (intranet) o por internet requiriendo una base de datos creada a través de MySQL, soporta múltiples idiomas. Capacidad de soportar extensiones disponibles para dar una gran variedad de funcionalidades adicionales como generar formularios dinámicos, gestor de documentos, software de foros y chats, herramientas de registro de datos, servicios de suscripción y un largo etcétera. www.joomla.org Oscommerce - Definición: CMS orientado al comercio electrónico y administración on- line permitiendo de manera fácil crear una tienda on-line usando una base de datos MySQL para su funcionalidad. Página 18 Documentación general - Historia: Si inicio en marzo del 2000 en Alemania por Harald Ponce de León. En agosto de 2008 es cuando Oscommerce desvela que son más de 14.000 sitios “en vivo” que estarían desarrollados con dicho CMS. - Principales funcionalidades: Los clientes pueden comprobar el histórico y el estado de sus pedidos una vez registrados, búsqueda de productos, posibilidad de que los usuarios valoren el producto adquirido, plataforma multi-idiomas, medios de pago offline (transferencias, cheques, etc…), notificaciones por correo electrónico, soporte de ssl, totalmente modular, control por parte del administrador de las zonas de impuestos, clases y ratios, el sistema de administración puede ser instalado en otro servidor separado del catálogo, utilidad de copia de seguridad. www.oscommerce.com 2.3. Drupal 2.3.1 Definición Drupal es un sistema gestor de contenidos modular totalmente configurable de código libre que permite la creación de páginas web dinámicas multipropósito. Pese a su excelente adaptabilidad sea cual sea la funcionalidad final del sitio que se desee crear destaca para webs en las que el objetivo principal sea construir y gestionar a comunidades en internet con diferentes niveles de usuarios. Escrito en PHP bajo licencia de GNU/GPL es desarrollado y mantenido por una activa comunidad de usuarios. El dinamismo de su sistema se debe a la capacidad de almacenar todos sus contenidos en una base de datos editándolos a través de un entorno web. Destaca por la calidad tanto de su código como de las páginas generadas además de respetar los estándares web y de ser un CMS muy consistente. Existe una gran cantidad de documentación y fórums donde se pueden solucionar dudas o problemas que puedan surgir en el desarrollo del sitio. Algunos ejemplos de páginas web desarrolladas en Drupal se muestran en Drupal Sites en las que se pueden que muchas instituciones y compañías de relevancia internacional como Las webs de la Casablanca de E.E.U.U, el gobierno de Bélgica, la Federación de natación Francesa, Voice of Sport entre otras. Página 19 Documentación general Aspecto de la página web de muestras de sitios desarrollados con Drupal www.drupalsites.net 2.3.2 Arquitectura de Drupal El secreto de Drupal para conseguir su reconocida flexibilidad y facilidad en la creación de sitios web es la abstracción y organización en capas que aplica en el tratamiento de los contenidos. En lugar de considerar el sitio web como un conjunto de páginas interrelacionadas, Drupal estructura los contenidos en una serie de elementos básicos. Estos son los nodos (nodes) , módulos (modules), bloques y menús (blocks & menus) , permisos de usuario y plantillas (templates). Los Nodes son los elementos básicos en que Drupal almacena la información, los contenidos. Así a medida que el sitio web crece, lo va haciendo el número de Nodes los cuales van formando un “depósito de Nodes” cada vez mayor. Se puede decir que la primera capa de la estructura de Drupal la forma este “deposito” de Nodes. Página 20 Documentación general Los Modules son los elementos que operan sobre los Nodes y otorgan funcionalidad a Drupal permitiendo incrementar sus capacidades o adaptarlas a las necesidades de cada sitio web. Son como Plug-Ins que se instalan en el sitio web proporcionándole nuevas funcionalides. La siguiente capa de Drupal la consitituyen los “Blocks & Menus”. Estos permiten estructurar y organizar los contenidos en la página web. Es decir que son los elementos que albergan y permiten acceder al usuario a la salida generada y procesada por los módulos a partir de la información almacenada en los nodos. La siguiente capa importante en Drupal es la de control de usuarios y permisos. Actualmente, la mayor parte de sitios web son multiusuario, por lo que la seguridad y control de los usuarios es un punto clave para garantizar la integridad de la información almacenada. Con esta finalidad Drupal dispone de un registro de usuarios y de roles que permiten especificar que tareas pueden realizar y a que contenidos puede acceder cada tipo de usuario. Es decir que las operaciones que se pueden realizar sobre los elementos provenientes de las capas inferiores (lectura, modificación, creación … ) se encuentran limitadas por la capa de control de usuarios y permisos de Drupal. La ultima capa, es la capa de “Themes” y es la que establece la apariencia gráfica o estilo de la información que se le muestra al usuario. Esta separación entre información y aspecto gráfico permite cambiar el diseño u apariencia del sitio web sin necesidad de modificar los contenidos, lo que es muy práctico si lo único que queremos es renovar la apariencia de un sitio web. Cron es otro elemento importante en Drupal. Es una aplicación que se ejecuta periódicamente con la finalidad de realizar las tareas básicas de mantenimiento del sitio web, como limpiar los logs, indexar los nuevos contenidos, etc. La configuración de Cron variará dependiendo del SO en que estemos trabajando, no obstante existen algunas alternativas, menos efectivas, pero más sencillas de utilizar Cron. Una de ellas es ejecutarlo manualmente yendo a "Administer > Reports > Status repport > Run cron Manually". Otra opción es utilizar el “Contributed module” “Poormanscron”. Este módulo hace que Cron se ejecute cada vez que el sitio recibe una visita, en lugar de hacerlo de forma periódica cada X tiempo. 2.3.3 Principales características de DRUPAL Página 21 Documentación general Ayuda on-line Amplio sistema de ayuda on-line al que se añade una gran multitud de páginas para los módulos del núcleo, tanto para usuarios como para los administradores del sitio. Código abierto El código fuente en Drupal es libre bajo la licencia GNU/GPL. Módulos La comunidad de desarrolladores han aportado una gran cantidad de módulos aportando nuevas funcionalidades que inicialmente no se habían desarrollado. Búsqueda Todo el contenido en Drupal es indexado en tiempo real pudiéndose consultar en cualquier momento. Personalización Robusto entorno de personalización implementado en el núcleo de Drupal. Presentación y contenidos pueden ser individualizados de acuerdo con las preferencias definidas por el usuario. URL alias permite la asignación de direcciones legibles por buscadores y por humanos para una mayor usabilidad y rendimiento. Taxonomía Sistema robusto que permite etiquetar y organizar contenido. Cada vocabulario (conjunto de categorias) se puede limitar a ciertos contenidos. Títulos de las páginas y etiquetas Meta Ofrece un control personalizado a los elementos de HTML <title>, mientras que el modulo Meta Tags permite el control sobre la descripción del meta etiquetas en sus páginas individuales. Esto es bastante tedioso en otros sistemas de gestión de contenidos. Gestión de usuarios Posee un sistema íntegro para asignar las funcionalidades que tendrá cada tipo de usuario que acceda al sitio web. Además el control de acceso y de privacidad esta totalmente controlado. 2.3.4 Ventajas de trabajar con Drupal Desarrollar un sitio con Drupal ofrece una serie de ventajas en comparación con otros CMS las cuales se describen a continuación: Página 22 Documentación general Concepto de usuario intrínseco a la aplicación Un usuario registrado en un sitio implementado con Drupal estará registrado para todas las aplicaciones que se introduzcan en el CMS tales como foros, encuestas, blogs… provocando un control centralizado del usuario imprescindible en las webs de hoy en día. Todos los tipos de diseños son posibles Sea cual sea la funcionalidad final de la web a desarrollar seremos capaces de adaptarnos a tales necesidades gracias al uso de módulos implementados por la comunidad Drupal que ofrecen todo tipo de funcionalidades. PHP como base del sitio Permite agregar código PHP a medida habilitando de este modo la posibilidad de personalización total de la web. Plataforma multi-idioma Se habilita la posibilidad de traducción del sitio a varios idiomas a través de una simple acción. Además si se desea se puede dar permiso a los usuarios para que estos elijan el idioma de la web. Multimedia Perfectamente implementado para soportar todo tipo de archivos multimedia. Control total por parte del administrador Permite tener un control total al administrador del sitio web en todos los aspectos, permisos, módulos, contenidos, etc… Respaldo de informes y estadísticas Robustez en cuanto a informes de registros, de formularios… estando disponibles por defecto siendo muy fácil exportación a otros programas como el Excel. Preparado para dispositivos móviles Permite el desarrollo de versiones para dispositivos móviles. Ya sea haciendo pequeñas adaptaciones de la versión desktop, iniciando el desarrollo con metodología mobile-first o bien desarrollando un versión específica completamente nueva teniendo en cuenta criterios específicos. Página 23 Documentación general Sistema de control en roles y permisos Permite asignar a los usuarios diferentes permisos o perfiles y realizar unas acciones u otras en función de este permiso. Seguridad Drupal fué una de las primeros Open CMS en disponer de un equipo de seguridad. Cada dos meses salen actualizaciones de seguridad y de manera más frecuentes paths, para soluciones inmediatas. A un usuario malintencionado encontrará tan difícil atacar a través de Drupal como de otras aplicaciones que estén instaladas en el servidor. 2.3.5 Conceptos Como ya se comentó en puntos anteriores Drupal se creó para ser un sistema totalmente flexible, siendo de este modo, capaz de adaptarse a los diferentes entornos. Para conseguirlo su desarrollo siempre estuvo arraigado a una abstracción singular y una organización por capas. Cada capa se encarga de unas tareas determinadas y no tiene conocimiento de la funcionalidad de las demás capas. A continuación se muestran las diferentes capas definidas en el núcleo que posee Drupal. Esto permite ciertas ventajas como la posibilidad de recuperar información de la base de datos a través e PHP sin tener que conocer qué tipo de base de datos tenemos (mySQL, Oracle...). Además facilita que pueda ser puesto en marcha en los diferentes entornos sin grandes cambios. Página 24 Documentación general 2.3.6 Instalación y configuración Para trabajar con Drupal hay que tener una infraestructura de internet compuesta por un servidor web, un gestor de base de datos y un lenguaje de programación en PHP. Toda esta infraestructura es sostenida y gestionada por una sola aplicación WampServer cuyo acrónimo significa lo siguiente: W Sistema operativo (Windows). A Servidor web (Apache). M Gestor de bases de datos (MySQL). P Lenguaje de programación (PHP). Drupal puede ser instalado desde un servidor remoto. Para este proyecto se instalará desde el local. Una vez instalado todo lo anterior pasaremos a descargar la versión Drupal deseada, en este caso será la versión 6.X Crearemos la base de datos en phpMyAdmin con el nombre del sitio. Página 25 Documentación general Una vez completado todo el proceso instalaremos Drupal a través de http://localhost. Si se desea se puede instalar el módulo del lenguaje con el que se desee trabajar en la construcción del sitio web desde la web oficial de Drupal e instalarlo. 2.3.7 Sitios web desarrollados con Drupal La flexibilidad y solidez de Drupal ha convencido a una gran multitud de empresas y organizaciones de gran renombre en todo el mundo quienes han considerado el CMS de Drupal como el adecuado para desarrollar sus sitios. A continuación se muestran algunos de los más destacados. http://www.ubuntu.com/ Página 26 Documentación general http://software.intel.com/en-us/appup Página 27 Documentación general http://www.mtv.co.uk/ Página 28 Documentación general http://www.whitehouse.gov/ Página 29 Documentación general 2.3.8 Conceptos Drupal 2.3.8.1 Núcleo Página 30 Documentación general El núcleo de drupal aporta funcionalidades básicas e imprescindibles para el desarrollo web como pueden ser la capacidad para crear y publicar contenido, crear y administrar usuarios, foros, encuestas y menús así como otras para gestionar el sitio a través de un interfaz muy intuitivo. Las mejoras con nuevas características y comportamiento personalizado mediante la descarga de módulos adicionales también conocidos como módulos contribuidos (contrib) ampliarán nuestras funcionalidades cubriendo un amplio campo de posibilidades como ya se comento en apartados anteriores. 2.3.8.2 Módulos Un módulo es un conjunto de funciones en php que implementan funcionalidades pudiendo ampliar las ya existentes en el núcleo. El administrador podrá activarlos y desactivarlos en cualquier momento sin afectar al funcionamiento general del resto de la web. Como ya se ha apreciado con anterioridad se pueden dividir en dos grandes grupos en función de si pertenecen o no al núcleo de drupal: Módulos de núcleo (Core modules). Módulos contribuidos (Contributed modules). 2.3.8.3 Hooks Son un tipo determinado de funciones en php integradas dentro de los módulos para permitir interactuar con el núcleo. Para desarrollar un nuevo Página 31 Documentación general módulo en drupal simplemente se necesita un hook. Cada uno de estos tiene definidos parámetros y un resultado. Gracias a ellos se consigue que los módulos sean independientes los unos de los otros. Drupal 6 posee más de 70 hooks cuya sintaxis siempre empieza por hook_funcionalidad. Algunas de las más utilizadas suelen ser: Hook_menu: se definen las entradas al menú y las urls que utilizará nuestro módulo permitiendo enlaces en algún menú. Hook_perm: permite añadir nuevos permisos necesarios para que usuarios del módulo puedan accedes a su utilización. Hook_block: permite definir bloques que utilizará el módulo. Hook_form: formulario de edición de un nodo. Hook_mail: permite enviar email. Hook_comment: soporta acciones sobre comentarios. 2.3.8.4 Temas Un tema es un conjunto de archivos y recursos en php, css, javascript e imágenes que dan la forma visual al sitio. El tema instalado por defecto en drupal 6 para que el administrador pueda empezar a desarrollar el sitio es Garland aunque podemos escoger entre otros 5 en función de nuestro gusto. Drupal separa la interface del administrador de los diferentes tipos de usuarios pudiendo asignar a cada uno de ellos un tema diferente según las Página 32 Documentación general especificaciones de diseño de la web, otra muestra más de la gran flexibilidad de este CMS. 2.3.8.5 Nodos Los nodos (término genérico) son la unidad básica donde drupal guarda un trozo de contenido pudiendo ser de diferentes tipos. La información principal que almacena y que es comuna para todos los tipos de contenidos es el título, la fecha de creación, el autor, cuerpo y un identificador único. Por defecto drupal posee dos tipos de contenidos inicialmente, las páginas y las historias. Aparentemente pueden parecer muy similares pero cada una posee una configuración inicial diferente. En el siguiente cuadro se visualizan las más importantes en cuanto a funcionalidad se refiere. PÁGINA HISTORIA Configurados los comentarios por defecto NO SI Activados comentarios por defecto NO SI Se publican los contenidos en la página de inicio NO SI 2.3.8.6 Regiones Página 33 Documentación general Las regiones delimitan el espacio donde podemos insertar contenido. Dichas regiones son definidas por los temas, de esta manera cada tema posee una estructuración diferente a propósito del posicionamiento de estas. Por defecto drupal genera cinco regiones por página, Drupal permite, como no podía ser de otro modo, configurar para cada región que tipo de contenido alojará a través de la interfaz de diseño que tiene para el administrador del sitio. 2.3.8.7 Bloques Página 34 Documentación general Los bloques son contenidos independientes de información que pueden estar situados en diferentes regiones del sitio. Una región puede no tener contenido sin ningún tipo de bloque asignado. En un módulo se pueden crear directamente desde la página del administrador o mediante la programación gracias a los Hooks, explicados en puntos anteriores, proporcionados por la API para tal efecto. Los bloques se pueden configurar para cada tema, es decir el bloque de navegación, por ejemplo, puede estar en la región izquierda del sitio para simples usuarios registrados y en la región izquierda para usuarios administradores. Los bloques pueden tomar la forma de menús (menú de navegación), visualización de módulos e información estática o dinámica creada por algún usuario. Página 35 Documentación general 3. Objetivos 3.1 Objetivo principal El objetivo de este proyecto es lograr crear una web que sea una referencia y punto de encuentro entre organizadores y participantes de eventos deportivos. Las publicaciones aportadas por los atletas en la web a propósito de las pruebas realizadas deberían mejorar la calidad de los eventos ya que los organizadores sabrán de primera mano que deficiencias ha habido y la manera de solucionarlas en futuras ediciones. Este sería por tanto el principal cometido de este sitio web, aportar información directa e interactiva entre unos y otros para ayudar a dar una mayor calidad a los eventos locales haciéndolos más competitivos y de mayor calidad en comparación con los de otras ciudades o países. No olvidemos tampoco que en la actualidad la voz de los participantes en eventos deportivos se minimiza cuando salen críticas sobre algún aspecto. Las webs promocionales ocultan o matizan dichas opiniones dando así una visión interesada y distorsionada de la realidad. La claridad será otro de los objetivos que este sitio intentará solucionar. 3.2 Propósito del proyecto Los propósitos del proyecto es la instalación completa del CMS Drupal como gestor de contenidos, activar los módulos del core que sean necesarios para adaptarse a las necesidades del sitio así como utilizar módulos contribuidos que también puedan ser de utilidad, el desarrollo de módulos más específicos que aporten funcionalidades que no se encuentran en los creados por la comunidad y el diseño de la web personalizando el sitio. Resumiendo y siendo más esquemáticos el desarrollo del proyecto se dividirá en las siguientes partes: Módulos de la comunidad Drupal: Se estudiaran los módulos necesarios para que el sitio se adapte a las necesidades requeridas en su diseño. Creación de un tema propio: A través de las opciones que drupal ofrece en su interfaz de administrador se modificarán los rasgos iniciales del sitio para personalizar su apariencia y diseño web (logos, favicons, colores, etc…). Página 36 Documentación general Creación de un módulo propio: Realizaremos un módulo propio que se adapte totalmente a las necesidades de la web. Creación de páginas y bloques: Desde el propio navegador del CMS crearemos páginas y bloques colocándolos en regiones determinadas para hacer más atractivo su aspecto visual. 3.3 Antecedentes El diseñador de este proyecto no tenía ningún conocimiento de Drupal o de ningún otro CMS. Esto ha implicado que se ha necesitado una cantidad de tiempo notoria para familiarizarse con el entorno y poder desarrollar la web. Puesto que a lo largo de la carrera no ha tenido ninguna asignatura de programación de páginas web se decantó por este tipo de PFC con el objetivo de ampliar conocimientos en este campo. Página 37 Documentación general 4. Especificaciones 4.1 Especificaciones del proyecto La aplicación estará enfocada a los eventos deportivos y a sus participantes. Tiene que permitir a los organizadores publicar toda la información de sus futuros eventos tales como fechas, lugares, premios, tipo de evento, etcétera… permitiendo que los atletas puedan opinar al respecto de dicho evento a través de foros, encuestas y blogs. Esta participación activa de los atletas en las críticas del evento es el eje principal de la web puesto que no es habitual que se les dé la oportunidad de opinar libremente sobre el acontecimiento disputado. A través de sus comentarios informarán a todos los visitantes del sitio de las virtudes y las carencias a propósito de la organización de la prueba. Los organizadores tendrán la oportunidad de saber de primera mano que están haciendo bien y que deberían mejorar en el futuro para que la calidad del evento sea mejor edición tras edición. También tendrán información sobre la intención de participación de los atletas a priori pudiéndose hacer una idea del número total. Resumiendo, estos podrán promocionar sus eventos en el sitio siempre y cuando acepten las críticas que puedan salir por parte de los atletas y se comprometan a hacer algún tipo de pequeño descuento, ventaja o regalo si dichos atletas se apuntan al evento a través de la web. Para promocionar y hacer más atractiva su propuesta, estos últimos podrán aportar todo tipo de documentación como publicación de fotos, estadísticas de participación, resultados de atletas de otras ediciones, entrevistas de los corredores profesionales que participarán, crear encuestas, etcétera… 4.1.1 Usabilidad La usabilidad de la web será fácil para que todo tipo de usuarios puedan participar aunque tengan escasos conocimientos informáticos. Además mediante el módulo CCK, que permite la creación de tipos de contenido, no será nada difícil ampliar el abanico de posibles eventos a cubrir por parte del sitio. 4.1.2 Modos de acceso Existirán dos tipos de modos de acceso, el normal (atletas, organizadores, visitantes, invitados…) y el modo administrador (administrator) Página 38 Documentación general que será el encargado del mantenimiento y de las futuras modificaciones del sitio además de tener el control absoluto de este. 4.1.3 Usuarios y roles Existirán cuatro tipos de roles asociados al tipo de usuario que interactúe con el sitio web especificados a continuación: Usuario anónimo: Visitante no registrado al que se le permitirá ver la mayoría de los contenidos pero sin poder modificarlos ni dejar sus opiniones. Usuario autenticado: Atletas autenticados que podrán participar en el sitio aportando opiniones y demás tipos de participación. Solamente los atletas que tengan algún tipo de acreditación en alguna sociedad o federación deportiva podrán ser dados de alta en el sitio como usuarios autenticados. Por lo tanto, será el administrador el que compruebe la veracidad de la documentación y permita dar de alta al atleta en el sitio. Usuario organizador: Organizadores de las pruebas deportivas autenticados que aportarán toda la información del evento pudiendo modificar únicamente sus propios contenidos. Los usuarios que deseen acceder a la web con este perfil deberán acreditar la documentación como propietarios o trabajadores de tiendas dedicadas al sector. Usuario administrador: Administrador del sitio encargado de incorporar futuras mejoras y cambios del sitio con acceso a todo tipo de acciones de todos los contenidos del sitio además de poder dar de baja a usuarios cuyo comportamiento no sea correcto y constructivo. Página 39 Documentación general 4.1.4 Navegadores La web se diseñará teniendo en cuenta que pueda ser funcional con los navegadores más utilizados por los usuarios de internet. Goolge Chrome, Mozilla, Safari e Internet Explorer 7. El funcionamiento general de la página tendrá que ser el mismo con independencia del navegador. Si dicho navegador no posee soporte para javascript seguramente alguna estructura se verá afectada mínimamente pero en ningún caso dejará de perder las funcionalidades esenciales de la web. 4.1.5 Publicidad La web inicialmente no tendrá ánimo de lucro con lo que no se permitirá ningún tipo de publicidad en ella y será de carácter puramente informativo. A los organizadores se les obligará a eliminar la publicidad de las imágenes de sus contenidos en el caso de que existan. La idea será hacer crecer la popularidad de la web hasta alcanzar un número de visitantes suficientemente importante como para darse a conocer entre las marcas de material deportivo del sector. Será en este momento en el que se desarrollarían pensamientos de marketing de futuro para poder obtener ingresos de Sportalia37. Parte de tales ingresos se reinvertirían en proyectos futuros de mejoras de la web. Página 40 Documentación general 4.2 Casos de uso 4.2.1 Creación de usuarios Para acceder a la totalidad de las funcionalidades del sitio los usuarios deberán registrarse mediante el formulario correspondiente que aparecerá al hacer clic sobre la pestaña „Register‟. En este formulario se les pedirá que introduzcan nombre de usuario, correo electrónico y contraseña tal y como se muestra en la figura, Usuario y contraseña serán necesarios a partir de ese momento para acceder como usuario registrado y el correo electrónico será utilizado para estar en Página 41 Documentación general contacto con el usuario y en el caso que se le olvide la contraseña, poder reenviársela a través de éste. 4.2.1.2 Clases de usuarios Existen dos clases de usuarios, anónimos y autenticados. Los usuarios anónimos son aquellos que no se han registrado en el sitio por lo que sus acciones, como se ha comentado con anterioridad, quedarán limitadas a ver parte de la información total del sitio. Por contra, los usuarios autenticados (organizadores y atletas) podrán interactuar con muchas más opciones además de poder acceder a contenidos especiales. 4.2.2 Acceso a la información de sitio Acción que pueden ejercer todos los tipos de usuarios que accedan al sitio haciendo clic sobre la pestaña del menú „nosotros‟, de esta manera se accede a la información referente al sitio (diseñador, objetivos, supervisor, etcétera). 4.2.3 Publicación de eventos Limitado a los usuarios organizadores, es la principal funcionalidad de la web. Seleccionando la pestaña „Crear evento‟ se accede a una página que muestra las diferentes opciones de publicación de contenido tal y como se muestra a continuación, Página 42 Documentación general Tras seleccionar el tipo de evento que se desee publicar, aparecerá un formulario específico para cada tipo de prueba ya que, por poner un ejemplo, en un torneo de tenis el campo „distancia total‟ carece de sentido. Los campos comunes a rellenar por el organizador serán los siguientes: Nombre del evento: Nombre de la prueba. Disciplina general: Con el fin de clasificar el contenido mediante taxonomía, se selecciona el tipo de evento que se va a publicar (ciclismo, futbol, natación, etcétera). Fecha inicio: Primer día de la celebración del evento. Fecha fin: Último día que se celebra el evento. Inicio inscripción: Fecha del primer día que se puede efectuar la inscripción de la prueba. Fin inscripción: Fecha del último día habilitado para efectuar la inscripción a la prueba. Provincia: Provincia donde se celebra la prueba. Se debe seleccionar de una lista habilitada para ello. Lista desplegable para su selección. Localidad: Localidad donde se celebra la prueba. Lugar: Lugar exacto del inicio de la prueba. Categorías: Categorías y rangos de edad. Organizador: Nombre de la empresa organizadora del evento. Web entidad organizadora: URL de la web de la empresa organizadora. Será de tipo link con lo que se podrá acceder directamente a dicha web haciendo clic sobre esta. E-mail contacto: Dirección de correo electrónico donde dirigirse para consultar cualquier duda sobre el evento. Premios: Listado de trofeos, premios en metálico y obsequios otorgados a los participantes. Precio: Precio de la inscripción a la prueba. Contenido adicional: Editor de texto para que el organizador pueda aportar otra información que considere de interés. Página 43 Documentación general Los campos específicos que se muestran en función del tipo de evento son: Distancia total: Especificar la distancia total a realizar en la prueba. Drafting: Posibilidad de ir a rueda durante la carrera (exclusivo para eventos de ciclismo). CheckBox habilitado para su selección. 4.2.4 Comentarios Reservado para usuarios registrados de tipo „atleta‟, se pueden hacer comentarios a propósito de las publicaciones de eventos y blogs. Al final del contenido existe un link „añadir nuevo comentario‟ tal y como se muestra a continuación, y través del cual se permite hacer comentarios referentes a dicha publicación. Página 44 Documentación general Destacar como punto importante que ningún atleta tiene restringido comentarios a propósito de los eventos disputados como desgraciadamente pasa en casi la totalidad de les webs de promoción de eventos. Además el organizador no puede dejar ningún comentario de sus eventos ni de cualquier otro. Este es uno de los objetivos principales de este proyecto, de este modo, los organizadores podrán saber de primera mano que carencias han tenido y que mejorar de cara a futuros eventos. 4.2.5 Creación de blogs (cuaderno de bitácora) Acción reservada para usuarios registrados. Permite crear blogs individuales útiles para cuando se desee actualizar contenido de forma periódica. Ideal para contenido variante, es decir, que se prevea que pueda variar con cierta facilidad. Habilitada la opción de comentarios de los atletas. Se le proporciona al usuario un editor de texto (ckeditor) que le proporciona todo tipo de herramientas al fin de hacer más atractivo el aspecto visual de la publicación, con él se pueden insertar imágenes y demás utilidades. Aparecerá publicado en la página principal del sito. Página 45 Documentación general Aspecto global de la interface, 4.2.6 Actualidad RSS Privilegio del que disfrutan usuarios registrados, a través de la pestaña „actualidad‟ se tiene acceso a las últimas noticias deportivas actualizadas cada hora. Las noticias están agrupadas en función de su taxonomía, Página 46 Documentación general Una vez seleccionado el tipo disciplina aparecerá un listado de links de todas las noticias disponibles, Haciendo clic sobre cualquiera de ellas se accederá a una nueva ventana mostrando todo el contenido de la fuente. 4.2.7 Crear encuestas La creación de encuestas está reservada para los usuarios registrados de tipo organizador. Actuando del mismo modo que en el apartado 4.2.3 pero seleccionando esta vez la opción „encuesta‟ se accede al siguiente formulario, Página 47 Documentación general Una vez debidamente rellenado la encuesta aparecerá en el bloque lateral derecho de la página web estando habilitada para su votación. 4.2.8 Votar encuestas Cuando una nueva encuesta aparece para ser votada el formato del bloque destinado a tal fin cambia ligeramente para que el usuario que aún no ha interactuado con esta se percate, tan solo deberá hacer clic sobre los diferentes checkbox (uno para cada opción de voto) y posteriormente hacer lo propio con el botón que aparece debajo de la encuesta „votar‟. El voto no podrá ser rectificado y está configurado para qué usuario solamente pueda votar una sola vez. Bloque encuesta antes de votar. Bloque encuesta después de haber votado. Acción reservada sólo para los usuarios registrados tipo „organizador‟ sin que estos puedan votarse ellos mismos ni otros eventos con la finalidad de no adulterar el resultado. 4.2.9 RSS Really Simple Syndication Existe la posibilidad de suscribirse mediante sindicación a los contenidos del sitio por parte de todo tipo de usuarios. Mediante el icono que aparece en el bloque de la derecha de la web en su parte inferior, se accederá a la configuración de enlace, Página 48 Documentación general El usuario podrá disponer de los contenidos de Sportalia37 siempre actualizados cuando haga clic en „Suscribirse a esta fuente‟ y validando la siguiente ventana, 4.2.10 Consultar los eventos propios publicados Caso de uso reservado solo para los usuarios registrados tipo „organizadores‟. Muestra únicamente un listado de los eventos publicados en el sitio del propio organizador, de esta manera, éste puede acceder de forma rápida a cualquiera de sus eventos para modificar o consultar lo que desee. Para poder acceder a dicho contenido deberá primeramente clicar en la pestaña „Tus eventos publicados‟ del menú, Página 49 Documentación general Los eventos aparecerán agrupados por modalidad para facilitar aún más la búsqueda por parte del usuario. Una vez seleccionada la modalidad del evento aparece un listado con el nombre de la prueba (que será un link al contenido de ese evento) y la fecha de publicación tal y como se muestra en la figura siguiente, 4.2.11 Acceso a contenido mediante la nube de tags Destinado a cualquier tipo de usuario, dicha funcionalidad aparece en el lado superior derecha del sitio web, Al pasar con el ratón por encima provocará que los tags existentes se muevan aleatoriamente permitiéndolos ver con claridad. En el momento que el usuario divise la categoría deseada bastará con hacer clic para que dicho enlace se active llevándolo a una nueva página donde quedará expuesta todos los tipos de contenido (eventos y entradas de bitácora) que estén publicados. Página 50 Documentación general En la figura anterior se muestra una parte de todo el contenido de la categoría „Natación aguas abiertas‟, como podemos observar existen dos eventos publicados al respecto. Página 51 Documentación general En este otro caso, vemos como aparecen dos contenidos de tipo diferente, el primero es una entrada de bitácora (blog) de un usuario (atleta2) haciendo referencia a un tema de avituallamiento y el segundo es un evento publicado por un organizador (Apa), Página 52 Documentación general 4.2.12 Acceso a los eventos a través del rotor de la página principal Funcionalidad abierta a todo tipo de usuarios, se encarga de hacer una exposición aleatoria de todos los eventos deportivos publicados en el sitio. Dicho bloque está situado en la parte superior izquierda y cambia de contenido haciendo un barrido hacia arriba. El usuario que decida tener más información del evento promocionado en este bloque solamente tiene que colocarse encima del título (de color naranja) y hacer clic sobre éste. 4.2.13 Compartir contenido en redes sociales La web también está diseñada para poder compartir su contenido de en cualquier red social. El usuario deberá colocarse con el cursor encima del link habilitado para ello, Página 53 Documentación general Le aparecerá un desplegable para seleccionar en que red social desea postear la url del contenido, Una vez insertado, si lo desea, el título con el que aparecerá la url del contenido aparecerá en su red social como link de enlace al sitio tal y como se muestra en la figura, El proceso quedará por tanto finalizado. Tal acción podrá ser ejercida por cualquier tipo de usuario para no limitar la promoción del sitio web en la red. Página 54 Documentación general 4.2.14 Votar evento Cada evento publicado puede ser votado libremente por la comunidad de Sportalia37. Este es otro de los puntos de interés y principales objetivos de la web ya que en casi ninguna página de promoción de eventos se permite la valoración de los participantes respecto a dichas pruebas deportivas. Al final de cada evento publicado hay unas estrellas de valoración, El usuario deberá posicionarse sobre las estrellas de valoración (cuadrado en rojo de la figura anterior) y votar clicando sobre alguna de estas. Las opciones por cada estrella son: poor, okay, good, great y awesome. Caso de uso exclusivo para atletas. Página 55 Documentación general 4.2.15 Image upload Proporciona una interface específica para visualizar las fotos de las publicaciones del sitio. El usuario podrá ver las fotos en varios tamaños al hacer clic encima de una de ellas. Sportalia37 permite ver los siguientes tamaños: Original Muestra la foto en su tamaño origina. Thumbnail (Miniatura) Visión en miniatura de la foto. 30x30 Redimensiona la foto en el tamaño especificado 30x30. 300x180 Idem para tamaño 300x180, Página 56 Documentación general 400x500 Idem para tamaño 400x500. Funcionalidad habilitada para todo tipo de usuarios. 4.2.16 Crear una Historia anónima Similar a una entrada de bitácora, el objetivo de este contenido es que un usuario que quiera comentar algo comprometido o denunciar alguna cosa tenga la privacidad necesaria para no tener miedo a hacerlo. Ofrece las siguientes singularidades: Asegura el anonimato del usuario puesto que no aparecerá la autoría de este. El administrador es el único conocedor de la autoría pudiendo retirar la publicación si no fuera adecuada o se ajustara a la realidad. No aparece publicada en la página principal. No permite opción a comentarios por parte de otros usuarios. La interface es la misma que en el caso de las entradas de bitácora quedando habilitado también el editor de texto (ckeditor) para facilitar la publicación. Página 57 Documentación general 5. Diseño y desarrollo 5.1 Instalación 5.1.1 Instalación de Drupal paso a paso Primeramente se descargó la versión de Drupal 6.2X de la web oficial de dicho CMS, Nota: Se realiza la instalación en modo local (la propia máquina) aunque desde un ordenador remoto actuaríamos de idéntica manera. A continuación descargamos la traducción al español de la interface y copiamos todos sus archivos dentro del directorio de Drupal para que dicho módulo de traducción esté habilitado, Seleccionamos todo el contenido de la carpeta de traducción al español, Página 58 Documentación general Copiando este dentro de la carpeta de Drupal-6.28, de este modo la traducción de toda la interface de Drupal al español quedó habilitada. Cómo ya se explicó en el punto 2.2.6 de esta memoria, este gestor de contenidos necesita una infraestructura de internet compuesta por un servidor web, un gestor de base de datos y un lenguaje de programación en PHP. Todas estos requisitos son proporcionados por la aplicación WampServer. Una vez instalada esta aplicación introducimos la carpeta de Drupal que antes hemos hecho referencia dentro del directorio .../wamp/www/ Fue el momento de crear la base de datos que utilizaríamos introduciendo el nombre el nombre deseado dentro de la interface mysql (Sportalia37), phpMyAdmin nos avisó de que el proceso de creación había finalizado correctamente a través del siguiente mensaje A continuación se tuvo que realizar una copia del archivo „default.settings.php‟ renombrándolo con el nombre „settings.php‟ y ubicándolo en el mismo directorio puesto que la comunidad de desarrolladores de Drupal advierte que a veces suele dar problemas si no se hace dicho duplicado, Página 59 Documentación general A continuación se inició la configuración inicial de Drupal, dentro de nuestro navegador introduciendo la url http://localhost/drupal y realizando los siguientes pasos, Configuración del idioma: Elegir nombre de usuario y contraseña: Página 60 Documentación general La interface de Drupal certifica la correcta instalación, Finalmente introducimos el nombre del sitio, correo electrónico del administrador, contraseña de este y franja horaria para dar por finalizado el proceso de instalación, Proceso de instalación finalizado, el sitio web esta creado y activado. Página 61 Documentación general 5.1.2 Recomendaciones funcionales Está claro que, con lo explicado en el apartado anterior, ya podríamos empezar a construir nuestro sitio, sin embargo, existen unas recomendaciones que si es verdad que no son de carácter obligatorio sí que son muy recomendables para el óptimo funcionamiento del gestor. 5.1.2.1 Programación automática del ejecutable cron.php Drupal se encuentra siempre en continuo desarrollo para adaptarse a las nuevas necesidades que van apareciendo tecnológicamente. Existe un archivo ejecutable llamado cron.php que se encarga de enlazar con la web de la comunidad de desarrollo de este CMS descargando estas modificaciones y actualizando posteriormente el llamado núcleo de Drupal. Cron.php se puede ejecutar manualmente cada vez que se desee por el administrador del sitio tal y como se muestra en la siguiente figura, Sin embargo se recomienda programar la ejecución de este archivo de manera automática. A continuación se explica cómo se realiza con sistema operativo Windows: 1) Inicializar el programador de tareas de Windows creando una nueva tarea básica, Página 62 Documentación general 2) Darle un nombre a la nueva tarea y una descripción de la finalidad de esta, 3) En la siguiente ventana que aparece se debe indicar la periodicidad con la que se desea que se ejecute esta tarea. En el caso de Sportalia37 no existe mucha necesidad de que se esté ejecutando a menudo a diferencia de otra web enfocada, por ejemplo, a la actualidad de sucesos u otra finalidad que requiera una actualización cada poco tiempo. Sportalia37 por lo tanto basta con que la periodicidad sea diaria, Página 63 Documentación general 3.1 Especificamos cuando queremos que empiece, 4) En el apartado de acción seleccionamos que se desea iniciar un programa, 5) Puesto que cron.php utiliza la red para descargar actualizaciones deberemos especificar que el programa a iniciar sea el navegador, en el caso de Sportalia37 el elegido es Internet Explorer proporcionando a la tarea programada el directorio de ubicación de este, Se podría haber configurado para cualquier otro tipo de navegador como Firefox, Crome, Opera, etcétera. Página 64 Documentación general 6) El siguiente paso será finalizar el proceso de configuración activando el checkbox señalado en la figura siguiente para….. 7) Tras haber seleccionado el checkbox Abrir el diálogo Propiedades para esta tarea al hacer clic en finalizar aparecerá una ventana resumen con las características que hemos programado, allí deberemos seleccionar editar acción introduciendo, al final de la ruta, el lugar donde está ubicado el archivo cron.php. De esta forma le estaremos diciendo a la tarea programada que habrá primero el navegador y posteriormente ejecute el archivo cron.php, Finalmente para comprobar que la acción que hemos programado está almacenada en el programador de tareas bastará con mirar en la lista de tareas y ver que aparece, Página 65 Documentación general 5.1.2.2 URL´s limpia Otro aspecto importante de la instalación de Drupal es configurar el CMS para que las URLs aparezcan limpias. Normalmente cuando se hace referencia a una página web u otro direccionamiento aparece en la barra de direcciones símbolos propios de lenguaje php dificultando la legibilidad y futuro trabajo con estas, Primeramente deberemos activar una línea de código específica que suele estar comentada dentro del fichero httpd.config del Apache, en el caso de que se esté trabajando con WampServer (caso de Sportalia37), ubicado en el apartado de settings de Apache, Página 66 Documentación general Una vez abierto buscaremos la línea de código donde aparezca mod_rewrite, Y borraremos la almohadilla al inicio de la línea de código para que pase de ser un comentario a estar activa. Guardamos el archivo y volvemos a la interface del CMS. Finalmente accediendo al menú de administradores en configuración del sitio/URL´s limpios aparecerá la ventana que da opción a solucionar dicho problema. Deberemos activar el checkbox correspondiente tal y como se muestra en la siguiente figura dando por finalizado dicho problema de URLs limpias. Página 67 Documentación general 5.2 Bloques El tema del sitio se divide en cuatro regiones, encabezado, contenido, lateral izquierdo y pié de página. Por defecto inicialmente existían los siguientes bloques: Encabezado Ningún bloque. Contenido Ningún bloque. Lateral izquierdo Inicio de sesión y Navegación. Pié de página Sitio elaborado con Drupal. Era obvio que con los bloques iniciales Sportalia37 no podía ser funcional por lo que se le agregó los siguientes: Encabezado Rotor Block, Cumulus Tag Cloud y Listado de eventos. Contenido Ningún bloque. Lateral izquierdo Quien está en línea, Encuesta más reciente, Sindicar, Alternador de idioma. Pié de página Información del autor. A continuación se explica con detalle que funcionalidad tiene cada uno de ellos. Inicio de sesión: 1- Permite a un usuario registrado autenticarse en el sitio para acceder a su cuenta. 2- Permite registrarse a nuevos usuarios. Estos deberán esperar a que el administrador los habilite el permiso (Crear nueva cuenta). 3- Si a un usuario se le ha olvidado la contraseña, tiene la opción de obtener una de nueva para autenticarse de nuevo vía e-mail (Solicitar nueva contraseña). Una vez introducida la nueva contraseña este podrá cambiarla cuando lo desee. Página 68 Documentación general Navegación: 1- Permite hacer una búsqueda inteligente. Introduciendo la palabra/as deseada, El sitio efectuará una búsqueda en la base de datos buscando que contenidos albergan este léxico mostrando una lista, En el ejemplo de la figura solamente se ha encontrado un tipo de contenido donde aparece la palabra buscada ciclismo. Haciendo clic en el link del título del contenido accederemos a la totalidad de la publicación. 2- En Mi cuenta se accede a la página que da acceso a los datos personales del usuario permitiendo modificarlos, a través de la pestaña editar se puede cambiar detalles como e-mail, foto, contraseña, firma (texto que aparecerá al final de sus publicaciones), zona horaria, etcétera. Página 69 Documentación general 3- Da acceso al formulario para publicar contenido. El contenido que pueda publicar irá en función del rol del usuario. Sportalia37 ofrece posibilidades diferentes a roles diferentes como ya se ha explicado en apartados anteriores, Contenido permitido para usuarios con rol de atletas una vez hayan hecho clic sobre la opción Crear contenido, Como se aprecia, estos pueden crear un blog (entrada de bitácora) y una publicación anónima para dejar alguna queja o inquietud. Veamos ahora el contenido permitido para usuarios con rol de organizadores una vez hayan hecho clic sobre la misma opción, Página 70 Documentación general Como ya se ha comentado con anterioridad, las opciones de ambos roles están personalizadas y adaptadas a sus necesidades interactivas. 4- Terminar sesión es la opción para los usuarios registrados que les permitirá dejar la sesión iniciada. Sitio elaborado con Drupal: Este icono situado en el pié de página del sitio informa a los internautas del tipo de CMS que se ha utilizado para realizar el sitio dando además acceso directo a través de un link a la web oficial de Drupal, https://drupal.org/ Rotor block: Situado en el encabezado del sitio, este bloque cumple tres cometidos, por un lado muestra imágenes de los deportes de los que Sportalia37 ha sido partícipe en su divulgación online, por otro da acceso a la web de los organizadores que han colaborado con la web. Funcionalidad apta para cualquier tipo de usuario a través de la que, situándose encima de la imagen con el cursor y haciendo un clic accede a una nueva ventana del navegador en la que se abre la web del organizador y finalmente y a nivel estético, le da un aspecto más vistoso al sitio haciéndolo más atractivo al visitante del sitio, Página 71 Documentación general Cumulus Tag Cloud: Bloque situado a la derecha del encabezado permite, a todo tipo de usuarios, acceder a todos los contenidos a propósito de un deporte en concreto. Como se explicará en el apartado siguiente (Taxonomía) todos los contenidos están categorizados con el fin de agruparlos, este agrupamiento es útil en casos como este. Al pasar el cursor sobre el interior de este bloque la nube de tags se pone en movimiento realizando un efecto óptico similar al de una nube (cloud). Cuando el usuario está situado encima del deporte deseado deberá hacer clic sobre este, automáticamente se le redigirá a una nueva página en la que aparecerá todo el contenido de la web relacionado con el tag que ha seleccionado. Listado de eventos: A través de creación de las vistas, funcionalidad que el módulo CCK ofrece, se ha conseguido crear un bloque que muestra la información más relevante para el atleta de todos los eventos publicados en el sitio (fecha inicio evento, fecha fin evento, inicio inscripción evento, fin inscripción evento, provincia y precio). Este aparece en el encabezado en la parte izquierda, Página 72 Documentación general Funcionalidad disponible para cualquier rol de usuario, permite el acceso al contenido total del evento haciendo clic sobre el título del evento. El contenido de este bloque cambia cada 3 segundos de forma aleatória. Quién está en línea: Bloque opcional dentro del core inicial de Drupal, se ha activado, posicionado y configurado para mostrar en la barra de la izquierda de la web los usuarios que están en línea en tiempo real, En la figura se aprecia que el bloque citado informa que solamente se encuentra en línea en administrador. Encuesta reciente: Bloque situado en la barra de la derecha de la web, justo debajo del explicado con anterioridad, realiza dos funciones, una abierta para todos los tipos de usuarios y otra reservada a los de tipo atleta como se describe a continuación: Página 73 Documentación general 1- Visualizar la última encuesta publicada en Sportalia37 (funcionalidad abierta a todos los tipos de usuario). 2- Permite la votación: Mientras que un usuario atleta no haya votado en la encuesta del sitio la estructura visual del bloque cambia para hacer percatar al usuario de que aún no ha votado en ella y que dicha acción la puede hacer cuando quiera habilitándole un checkbox para cada opción de respuesta y un botón (votar) para registrar su voto en la web. Hasta que este no vota no tiene acceso al recuento de la votación a tiempo real, Sindicar: Llamada también sindicación web, esta pretende ser una web dinámica con continuos cambios en lo que a contenido se refiere, por ello, el sitio incorpora un enlace (sindicar) en la parte de abajo del todo de la región de la derecha, Página 74 Documentación general Haciendo clic sobre el icono de la imagen anterior, el usuario accede a una nueva ventana en la que podrá asociarse a todo el contenido del sitio recibiendo notificaciones sobre los cambios en el contenido y en las nuevas publicaciones, Una vez aquí si hacemos clic en suscribirse a esta fuente se nos abrirá una ventana en la que podremos formalizar la suscripción al contenido web, En las opciones del ejemplo se ha seleccionado el checkbox Agregar a la barra de favoritos con lo que al darle al botón Suscribirse nos aparecerá en la barra de favoritos un icono que mostrará un desplegable de todo el contenido de Sportalia37 actualizado a tiempo real, Página 75 Documentación general En síntesis, se reenvía los contenidos desde la fuente original (Sportalia37) hasta otro sitio web de destino (receptor) y que a su vez se convierte en un emisor ya que se puede repetir de nuevo el proceso desde este sitio. 5.3 Taxonomía La taxonomía es, como definición general, la ciencia que estudia la clasificación de los elementos. La definición anterior nos da una pista del papel que la taxonomía juega en la web. Instalando en módulo Taxonomyy realizando las configuraciones pertinentes, se decide que cada contenido que se añada al sitio deberá clasificarse en función de la disciplina a la que pertenezca de forma que, todo evento, entrada de bitácora (blog) e historia que sea publicada quedará categorizada. Hay un campo habilitado, de carácter obligatorio, llamado Disciplina general a través del que todo usuario autenticado que desee publicar cualquier tipo de contenido deberá indicar a que categoría pertenece, Página 76 Documentación general Dicha categorización permite, por ejemplo, al bloque Cumulus Tag Cloud, explicado con anterioridad, mostrar todo el contenido referente a una disciplina en concreto además de mejorar la clasificación y búsqueda de información a nivel general. En el caso de Sportalia37 ha sido necesario crear el vocabulario Disciplina general con los siguientes términos: Ciclismo de carretera Mountain bike Golf Karate Surf Tenis tierra batida Tenis Hierba Tenis pista cubierta Futbol 11 Futbol 7 Futbol sala Triatlón olímpico Triatlón media distancia Triatlón larga distancia Natación aguas abiertas Natación piscina cubierta Running carrereta Running montaña Destacar como último inciso que dicho vocabulario se puede ampliar en función de los tipos de eventos que se desee publicar en la web. 5.4 Tipos de contenido Para explicar que tipos de contenido ofrece Sportalia37 a sus usuarios dividiremos a estos en dos grupos bien diferenciados, primero los que venían por defecto o simplemente se han agregado tras importar su módulo correspondiente modificándolos ligeramente y en segundo lugar los que se han creado debido a la singularidad del sitio y la necesidad de incorporarlos para hacer funcional la web. 5.4.1 Contenidos modificados y/o importados con módulos Dentro de los tipos de contenidos que ofrecía por defecto la instalación de Drupal se han utilizado: Página 77 Documentación general Entrada de bitácora: Conocido también como blog, permite la publicación de texto y artículos de uno o varios usuarios cronológicamente permitiendo el adjunte de archivos. A los campos de obligado cumplimiento que drupal imponía por defecto se le agregó el de disciplina general para categorizar el contenido. A continuación se muestra un ejemplo de este tipo de contenido, Como vemos aparece el día de publicación, categoría (triatlón de larga distancia), autor (atleta3), foto, contenido (¡Hola a todos… …¡¡Salud y kilómetros), archivo adjunto (casal de foc archivo.png). Este tipo de contenido puede ser comentado (Añadir nuevo comentario) y publicado en redes sociales (compartir). Page: Enfocado para contenidos que no suelen cambiar con frecuencia permite crear y mostrar información sin permitir los comentarios de ninguno de los usuarios. Tampoco aparecen promocionados en su página principal. Un ejemplo sería el de la página de la web Nosotros en la que siempre se suele mostrar la misma información teniendo escasa movilidad. Contenido apto solo para el administrador. Página 78 Documentación general Los que se describen a continuación han sido importados a través de algún módulo: Encuesta: Permite publicar encuestas interactuando con los atletas. Sus atributos más relevantes son: pregunta (campo en el que se escribirá la pregunta de la encuesta), opción (campos donde se debe introducir las opciones de las que dispondrá el atleta para votar) y duración de la encuesta (aparecerá un desplegable para que se seleccione el tiempo que la encuesta se desea que aparezca publicada en el sitio). En esta imagen se muestra los atributos mencionados y la interface que se ofrece para crear contenido tipo encuesta, En la figura anterior se ha decidido que la duración de la encuesta en el sitio sea de 8 semanas. Página 79 Documentación general 5.4.2 Contenidos creados y diseñados para Sportalia37 Finalmente en otro grupo encontramos los que se han debido de crear “desde cero” por la naturaleza del sitio: Evento: Específico para Sportalia37, este tipo de contenido es la base de la web. Reservado para ser usado por usuarios con rol de organizadores, se ha diseñado y creado teniendo en cuenta la información imprescindible que todo atleta de un evento deportivo necesita saber. Además se ha personalizado para cada uno de los eventos teniendo en cuenta que era necesario en cada tipo de prueba. Por ejemplo, en un torneo de tenis carece de sentido el atributo distancia y sin embargo en una maratón será imprescindible dicho atributo. De esta forma se puede crear de forma individualizada los siguientes eventos: Los atributos comunes a todos los tipos de contenido EVENTO son: - Fecha inicio - Fecha fin - Provincia - Localidad - Lugar - Inicio inscripción - Fin inscripción - Categorías - Organizador - e-mail contacto - Web entidad organizadora - Inscripción on-line - Premios - Precio Atributos específicos en función del evento: - Distancia total Eventos de ciclismo, running y natación. - Drafting (ir a rueda) Ciclismo y triatlón. - Modalidad Triatlón. - Estilos Natación. Página 80 Documentación general Publicación anónima: Diseñado para Sportalia37, se adapta a las necesidades para la publicación sin autoría. Este tipo de contenido no muestra el autor que lo ha realizado. Los atributos que se deben introducir son los siguientes, -Título. - Contenido, dentro del cual se podrá insertar fotos. - Adjuntar archivo de carácter opcional. Nota: El módulo que ha permite crear contenido “desde cero” es el CCK (content construction kit) explicado con detalle en el siguiente punto de la memoria. 5.5 Módulos utilizados Una vez queda instalada la base de Drupal, tal y como se explicó en el apartado 5 de esta memoria, el sitio web aún no está funcional porque esta instalación inicial es genérica debiendo instalar los módulos apropiados que personalicen y den las funcionalidades para las que inicialmente se diseñó Sportalia37. Diferenciaremos dos grupos de módulos utilizados, Core modules Módulos que por defecto vienen dentro de la base inicial de Drupal pero que no están activados por defecto. Contributed modules Módulos independientes desarrollados por la comunidad de Drupal que deberán ser descargados e instalados modificando código para su perfecto ajuste al sitio. 5.5.1 Core modules Aggregator (https://drupal.org/project/aggregation) Integra contenido sindicado (RSS). Permite alimentarse de otras webs con su contenido. Recoge, lee y muestra noticias, textos, imágenes y otros contenidos de sitios externos a Sportalia37. En esta web se ha utilizado para alimentar al sitio con las noticias que se han creído más importantes de periódicos y revistas deportivas que permiten esta funcionalidad tal y como se explicó en el punto 4.2.6 de esta documentación. Página 81 Documentación general Blog (https://drupal.org/project/advanced_blog) Permite mantener fácilmente y actualizar regularmente páginas web de usuarios autorizados o bitácoras teniendo en cuenta la marca del tiempo en el cual se van agregando y ordenándolos por esta. Comment (https://drupal.org/project/usercomment) Permite a usuarios comentar y discutir contenido publicado. Crea una interface (panel de debate) para cada nodo del sitio. Upload (https://drupal.org/project/upload) Permite a los usuarios subir archivos y anexarlos al contenido publicado. Contact (https://drupal.org/project/contact) Habilita el uso de formularios de contacto personal y a nivel de sitio. También configura todo internamente para contactar entre estos mediante correo electrónico. Content translation (https://drupal.org/documentation/modules/translation) Permite que el contenido sea traducido a varios idiomas. Help (https://drupal.org/documentation/modules/help) Administra el despliegue de la ayuda on-line. Enlaza con Drupal.org para solventar dudas de acciones u otras funcionalidades de usuario y administrador. Poll (https://drupal.org/project/poll) Como su propio nombre indica, permite al sitio capturar votos sobre las encuestas en forma de opción múltiple. Profile (https://drupal.org/project/nodeprofile) Módulo que da soporte a la configuración de los perfiles de usuario. Se puede personalizar el contenido del perfil para usuarios con diferente rol. Taxonomy (https://drupal.org/project/module_taxonomy) Habilita la categorización del contenido explicado en el apartado 6.2. Página 82 Documentación general 5.5.2 Contributed modules AddThis (https://drupal.org/project/addthis) Proporciona una caja de herramientas o desplegable para que los usuarios puedan compartir en cualquier red social los contenidos de Sportalia37. Administration menu (https://drupal.org/project/admin_menu) Proporciona un menú desplegable para la mayoría de tareas y funcionalidades. Reservado al rol de administrador, facilita la navegación de funciones administrativas. Content constructor editor CCK (https://drupal.org/project/cck) Este es uno de los módulos con más importancia para Sportalia37 y la mayoría de sitios creados con Drupal. Permite a los administradores la creación de contenido con una gran cantidad de módulos de terceros para extender su funcionalidad diseñando campos personalizados con el tipo de contenido deseado. Página 83 Documentación general En este proyecto ha sido de vital importancia para poder crear el contenido de tipo Evento explicado en el apartado 6.3.2. Como se muestra en la siguiente figura se ha personalizado los campos a las necesidades del contenido, La figura anterior muestra parte del contenido de un Evento. El administrador ha creado con anterioridad a través del CCK los campos de texto Fecha inicio, Fecha fin, Localidad y Lugar además del desplegable que permite seleccionar la provincia. La interface que ofrece para agregar contenido y en la que se ha trabajado para crear los contenidos anteriores y los restantes de todos los eventos deportivos es la siguiente, En este ejemplo se ha creado el tipo de contenido Ejemplo contenido cuya estructura será de checkbox conteniendo campos de texto en cada uno de estos. Tendríamos por tanto un nuevo contenido creado que inicialmente no existía. Página 84 Documentación general En el desplegable se ve claramente la multitud de tipos de contenido que se pueden crear pudiendo ampliarse en el caso de que se necesitara con nuevos tipos (video, libros, etcétera). Backup and Emigrate (https://drupal.org/project/backup_migrate) Permite realizar copias de seguridad y restaurar la base de datos y los archivos de Drupal MySQL. Este módulo utilizado solo por el administrador ha permitido ir teniendo copias por si se producía algún error de hardware y se perdía lo diseñado hasta el momento. La interface que este módulo proporciona para realizar dichas copias de seguridad es la siguiente, Una vez se configura el tipo de copia de seguridad que se desea salvar solamente hace falta hacer clic sobre el botón de Backup now y Windows nos pedirá donde deseamos guardar la copia a través de su ventana tradicional, Una vez seleccionado la copia quedará almacenada para utilizar en el caso de que fuera necesario su uso. CKEditor (http://ckeditor.com/release/CKEditor-3.6.6) Este módulo habilita un editor de texto para los que los usuarios puedan escribir con mayores posibilidades y evitar tener que hacerlo con etiquetas PHP ya que es este mismo el que hace esta conversión. Este es el aspecto del editor una vez ha sido personalizado para adaptarse al entorno visual y a las necesidades de los usuarios del sitio, Página 85 Documentación general Toolbar (https://drupal.org/node/972120) Proporciona al sitio de un menú de estilo “barra de herramientas” con accesos directos a las páginas de mayor interés. Image (https://drupal.org/project/image) Permite a los usuarios registrados subir imágenes creando miniaturas y tamaños adicionales automáticamente si el administrador lo configura de este modo. Five Stars (https://drupal.org/node/248531) Habilita la posibilidad de que usuarios con permiso valoren el contenido de los nodos. Sportalia37 ha necesitado su importación para que los atletas puedan dar una calificación a los eventos publicados. La interface que se le proporciona a los atletas para valorar las citadas publicaciones es la siguiente, Página 86 Documentación general Rotor banner (https://drupal.org/project/rotor) Permite crear bloques con efecto giratorio. Suele ser muy útil para publicidad pero en el caso de este proyecto se ha utilizado para promocionar las webs de los diferentes organizadores del sitio. Dicho rotor de imágenes se ha configurado para que aparezca en encabezado de la web rotando cada 5 segundos cambiando la imagen que muestra y proporcionando acceso directo a través de la propia imagen que ejerce de link a la web del organizador si el usuario hace clic sobre esta. Las imágenes que Sportalia37 ha configurado para que aparezcan en su portada a través de este módulo son las siguientes: Upload element (https://drupal.org/project/upload_element) Permite la subida de archivos y anexarlos al contenido. La interface que ofrece a los usuarios es la siguiente, Seleccionando el botón de Examinar se accederá a la ventana tradicional de Windows que permite la navegación entre directorios y seleccionar el archivo deseado. Pathauto (https://drupal.org/project/pathauto) Permite crear alias para las URL de Drupal para facilitar la legibilidad de los enlaces ayudando a los buscadores de la red a indexar el contenido. Explicado con en más detalle en el apartado 5.2.2 de esta memoria. Página 87 Documentación general Views (https://drupal.org/project/views) Siendo uno de los módulos más importantes utilizados, se puede recuperar el contenido de la base de datos y presentarla al usuario del sitio como listas, mensajes, galerías, cuadros, mapas, bloques. Su interfaz es: Esta interface está asociada a un generador de consultas de SQL que puede acceder a prácticamente cualquier información de la base de datos y mostrarla en casi cualquier formato. Algunas de las vistas más importantes que Sportalia37 ha creado utilizando este módulo son las siguientes: Actualidad deportiva Funcionalidad que gozan los usuarios registrados. Explicada con más detalle en el punto 4.2.6, la vista permite la visualización en modo “sub-galería” de artículos RSS (sindicación) de las principales webs deportivas actualizadas en tiempo real. Página 88 Documentación general Rotor de eventos deportivos La vista aparece en formato bloque el cual se posicionó en la parte del encabezado y a través de CSS se ajusto exactamente donde se pretendía tal y como se muestra en la figura, A través de la interface de este módulo se configuró el tiempo de rotación (3 segundos por evento), selección de los atributos que aparecerían (Fecha inicio, fecha fin, inicio inscripción, fin inscripción, provincia y precio) y como se ha dicho en el inicio, que apareciera como tipo de bloque. Listado de eventos Vista que agrupa todos los eventos deportivos de la web por categoría (gracias a la taxonomía). Posteriormente, al hacer clic sobre la categoría deseada, el módulo retorna otra vista diferente en forma de cuadrícula (grid) de tres columnas mostrando únicamente la fecha de inicio, fecha de fin y precio de los eventos, Página 89 Documentación general Para que nos hagamos una idea de la potencia de este módulo este es el código final generado automáticamente por el módulo views al configurar los campos necesarios para generar la vista mencionada en este apartado, SELECT term_data.name AS term_data_name, COUNT(node.nid) AS num_records FROM node node INNER JOIN users users ON node.uid = users.uid LEFT JOIN term_node term_node ON node.vid = term_node.vid LEFT JOIN term_data term_data ON term_node.tid = term_data.tid WHERE (node.status = 1) AND (node.type in ('ciclismo', 'futbol', 'natacion', 'running', 'tenis')) AND (users.uid = ***CURRENT_USER***) GROUP BY term_data_name ORDER BY term_data_name ASC Efectuará una consulta SQL a la base de datos del sitio para cada vista deseada. 5.5.3 Directrices para crear un módulo Primeramente se necesita hacer un estudio previo de qué necesidades debe cubrir el módulo a crear y tener nociones de que hooks (ganchos) serán necesarios para la implementación de este además de nociones de PHP. Tales conocimientos se han conseguido a base de práctica y empezando por módulos sencillos que se han realizado con la ayuda del libro Aprende Drupal 6 de forcontu. El primer paso consiste en crear el directorio donde se incluirán todos los archivos necesarios para el módulo, la ruta debe ser sites/all/modules/nombre_modulo Una vez creado el directorio existen tres archivos totalmente básicos y necesarios para que un módulo pueda funcionar correctamente tal y como recomienda la comunidad Drupal, tales archivos son: 1. Nombre_modulo.info Será donde se introducirá la información básica del módulo. En este archivo se guardaran singularidades como la fecha de creación, el nombre del módulo (name), versión mínima del core de Drupal necesario para el que está diseñado (core), descripción (description), dependencias de otros módulos (dependence) y demás rasgos valiosos para estandarizar y asentar las bases del módulo. Dichos datos son utilizados por el propio Página 90 Documentación general CMS para su clasificación y por los demás miembros de la comunidad drupal que en un futuro lo puedan utilizar. 2. Nombre_modulo.install Este módulo es imprescindible y sirve principalmente para crear las tablas en la base de datos que después serán utilizadas por el propio módulo para almacenar y manejar la información que este requiera. Es importante destacar que se debe implementar como mínimo dos hooks, uno de instalación y otro de desinstalación (hook_install, hook_uninstall), este último se encargará de eliminar las tablas y variables globales que fueron creadas inicialmente en la base de datos por el hook_install. Destacar finalmente que el hook_install se ejecuta al habilitar inicialmente el módulo necesitado y el hook_uninstall hace lo propio cuando se desactiva el módulo desde la interface que goza el administrador del sitio. 3. Nombre_modulo.module Es el archivo donde se encuentran principalmente todas las funciones que implementan a los hooks que inicialmente se han estudiado que necesitará el módulo. Es decir si necesitamos que un módulo tenga ayuda legible solo por ciertos roles de usuarios necesitaremos implementar dos funciones asociadas a los hooks relacionados con los permisos a los usuarios (hook_permission) determinando de este modo que usuarios tendrán acceso a esta ayuda y otra función que se encargará de mostrar la ayuda propiamente dicha referente al modulo (hook_help). Una vez acabadas todas las implementaciones deberemos asegurarnos de que todos los archivos estén dentro del directorio que da nombre al módulo (debe de estar sin espacios). Finalmente activaremos el módulo en Administrar/Configuración del sitio/Módulos (admin/build/modules) y daremos los permisos de utilización para los roles deseados en (admin/users/permissions). De esta forma el módulo quedará habilitado por completo. A continuación ampliaremos lo conocimientos descritos con anterioridad explicando los módulos creados para Sportalia37. Página 91 Documentación general 5.5.4 Módulos creados Se han creado módulos específicos (modulo_expiración, modulo_recomienda) para esta web dada la naturaleza y singularidad de algunas funcionalidades que se querían desarrollar y que carecían de existencia en los módulos desarrollados por la comunidad Drupal hasta el momento. Veamos a continuación sus funcionalidades e implementación llevadas a cabo. 5.5.4.1 Módulo recomienda 5.5.4.1.1 Descripción Permite a los usuarios recomendar el sitio web mediante el envío de emails a múltiples destinatarios. 5.5.4.1.2 Estructura Este módulo se nutre de 2 archivos para su funcionamiento tal y como se muestra a continuación, La lógica del módulo se encuentra el modulo_recomienda.module, es aquí donde reside el código principal de funcionamiento que implementará los hooks necesarios para su funcionamiento. 5.5.4.1.3 Hooks Modulo_recomienda_menu() Se implementa puesto que será una opción que aparecerá en el menú de navegación del sitio y es este hook precisamente en el que se especifica esa singularidad además de la descripción, título que aparecerá como link para realizar la recomendación y demás especificaciones. Modulo_recomienda_form() Se encarga de definir el formulario que el usuario dispondrá para realizar la recomendación. Este constará de un título, un campo (textfield) para introducir los correos electrónicos (deberán estar separados por comas) y un botón de envío, Página 92 Documentación general Modulo_recomienda_mail () Especifica parámetros necesarios para el envío de e-mails además de configurar dinámicamente la estructura del mail que recibirán los destinatarios. Modulo_recomienda_from_validate () Se encarga de validar el correcto formato de los e-mails así como de tratar la coma que habrá entre estos si desean mandar más de una recomendación. 5.5.4.1.4 Funcionamiento Cuando un usuario desee recomendar Sportalia37 a alguno de sus amigos deberá hacer clic sobre el link que aparece en la barra de opciones general con el nombre de ¡Recomiéndanos!, Aparecerá el formulario del punto 5.5.4.1.3 en el que deberá introducir las direcciones de correo electrónico deseadas separadas por comas en el caso de que haya más de una. Finalmente haciendo clic sobre el botón de ¡Haz clic para enviar! finalizará todo el proceso y se enviaran las recomendaciones pertinentes a todas las direcciones de correo electrónico con el siguiente formato, Página 93 Documentación general En este caso aparece la palabra administrador pero esta se sustituirá dinámicamente por el nombre del usuario que envíe el mail gracias a la programación en PHP. Como vemos además de la invitación se adjunta un link de acceso directo a la web. 5.5.4.2 Módulo expiración 5.5.4.2.1 Descripción La finalidad de este módulo es no arrastrar contenido caducado en la web, es decir, eventos pasados tendrán un periodo de publicación finito. De esta manera el sitio auto-gestionará los contenidos evitando mostrar al usuario información de carreras ya pasadas y permitiendo, de este modo, un ciclo de inactividad por parte del administrador mucho mayor ya que la finalidad es que Sportalia37 se pueda prácticamente auto-gestionar por sí sola. 5.5.4.2.2 Estructura El modulo_expiracion contiene los siguientes archivos tal y como se muestra a continuación, En este módulo observamos que existen algunos archivos más que en el módulo explicado con anterioridad. Esto es debido a que se han agrupado hooks específicos en archivos separados (modulo_expiracion.rules.inc, modulo_expiracion.rules.inc, etc..) con la finalidad de agrupar y facilitar la legibilidad de los archivos que siempre forman la columna vertebral de cualquier módulo (archivos.module, archivos.info y archivos.install). También se observa un archivo especial modulo_expiracion.js que no es más que código en texto plano que contiene un script para que sea ejecutado por el Página 94 Documentación general navegador e inicialice por defecto la fecha máxima mínima permitida de publicación de un contenido cuando este módulo está funcional. 5.5.4.2.3 Hooks En el archivo modulo_expiracion.install se implementan los hooks relacionados con la creación de tablas necesarias en la base de datos para el correcto funcionamiento de este. Modulo_expiracion_schema () Informa al sistema de que cuando se instale el módulo se deberá crear una tabla a través de la función modulo_expiracion_install() definida a continuación. Modulo_expiración_install () Crea la tabla en la base de datos del sitio especificando sus atributos y el tipo de estos. Modulo_expiracion_uninstall () Elimina la tabla de la base de datos y de sus variables definidas por el propio módulo. Esta función que implementa al hook hook_uninstall () se ejecutará cuando se decida inhabilitar el módulo por algún motivo en especial desde la interface que drupal ofrece al administrador del sitio ubicada en admin/build/modules Dicho análisis general del archivo .install se extiende para el resto de módulos creados. Analizando ahora el archivo modulo_expiracion.module que es en el que se implementa el “nucleo funcional” de este módulo tenemos como funciones destacadas las siguientes: Página 95 Documentación general Modulo_expiracion_cron () Realiza el chequeo de los contenidos y de su fecha de expiración en relación a la fecha actual. Este hook (hook_cron) es el buscado por Drupal para cada módulo instalado cada vez que se ejecuta el Cron y en caso de que exista ejecutará el código que venga dentro de él. En nuestro caso es obvio que este “gancho” es imprescindible ya que se deberá comprobar diariamente la caducidad de todos los contenidos del sitio y esta como muchas otras actualizaciones (contenido rss, etc…) es realizada por el Cron de Drupal. Modulo_expiracion_form_alter () Modifica el formulario de la interface del administrador de los nodos añadiendo la funcionalidad de fecha de expiración y fecha limite por defecto para todos ellos. Esta función se respalda de la función modulo_expiracion_form_node_type_form_alter del propio archivo modulo_expiracion_form_alter y del archivo modulo_expiracion.nodeapi.inc. Modulo_expiracion_perm Define el permiso que utiliza el módulo. 5.5.4.2.4 Base de datos Este módulo crea una tabla en la base de datos para almacenar el identificador (nid) de cada contenido publicado y otros campos (expire,expired,lastnotify) que ofrecen información sobre el estado de estos en función de si se encuentran o no expirados. La estructura creada en la base de datos del sitio es la siguiente, 5.5.4.2.5 Permisos Existen dos tipos de permisos creados por este módulo: Administer modulo expiracion Por si se desea que algún rol en especial pueda gestionar el módulo con los privilegios del administrador (no recomendado si el usuario es externo a la administración del sitio). Página 96 Documentación general Edit modulo expiración Permite seleccionar que roles podrán utilizar el módulo y por tanto podrán poner fecha de expiración a su contenido. Por lo tanto los permisos que quedaran marcados para que este módulo sea funcional y con total integridad serán, PERMISO Usuario Anónimo Usuario Autenticado Usuario Atleta Usuario Organizador 5.5.4.2.6 Funcionamiento Todo usuario tiene permisos para crear ciertos tipos de contenido, gracias a este módulo aparecerá en la interface pertinente de cada tipo un nuevo cuadro de texto (textfield) en el que se especifica mediante un texto plano encima de dicho cuadro el deber de introducir una fecha de expiración para dicho contenido. Por lo tanto, todo contenido que se publique en Sportalia37 expirará pasado el tiempo especificado por el usuario que lo publica. De este modo conseguiremos que no existan contenidos obsoletos e innecesarios. Veamos a continuación el cuadro de texto descrito anteriormente, Destacar por último que el administrador puede inicializar por defecto este campo además de poner un tope a la fecha máxima de expiración de todo tipo de contenido. Esto es posible gracias a haber modificado el formulario a través del hook_form_alter descrito en los apartados anteriores. De este modo el formulario que hace de interface para que administrador controle lo descrito y una vez se ha retocado con código CSS para que encuadre en el sitio deseado es el siguiente, Página 97 Documentación general Además se da la opción al administrador de que dicha fecha de expiración de contenido pueda ser de carácter obligatorio para el usuario o no. Si no es así el contenido expirará según la fecha introducida por el administrador en el campo Límite de la fecha de expiración. 5.5.4.3 Módulo depuración 5.5.4.3.1 Descripción Se comentó en puntos anteriores que uno de los objetivos era que Sportalia37 tuviera la máxima auto-gestión posible de forma que el administrador no tuviera que intervenir excesivamente. Siguiendo esta línea sera necesario tener un control de los comentarios por parte de la comunidad sportalia37 asegurando que no utilicen palabras malsonantes u otras restringidas por cualquier otro motivo de control. Por este motivo se decidió implementar este módulo para evitar tener que estar pendiente de si algún miembro descalifica de manera agresiva a otros o si utiliza vocabulario inapropiado. Se encarga por lo tanto de efectuar un filtrado al contenido publicado de Sportalia37 depurando estas palabras indeseadas por la simbología XXX. 5.5.4.3.2 Estructura El modulo_depuracion posee la siguiente estructura de archivos, Al igual que el primer módulo creado este posee el archivo modulo_depuracion.info y el módulo_depuración este último contiene todo el código de funcionamiento pero se observa una añadido, el Página 98 Documentación general modulo_depuracion.install encargado de crear las tablas necesarias en la base de datos para su correcto funcionamiento. 5.5.4.3.3 Hooks Dentro del archivo modulo_depuracion.install se encuentran los siguientes hooks de creación de tablas en la base de datos, Modulo_expiracion_schema () Comunica al sistema de la creación de la tabla en su base de datos llamada (modulo_depuracion) cuando se realice la instalación del módulo a través de la función modulo_expiracion_install() definida a continuación. Modulo_expiración_install () Crea físicamente la tabla anteriormente comentada en la base de datos del sitio especificando sus atributos y el tipo de estos. Modulo_expiracion_uninstall () Funcion que eliminara la tabla modulo_depuracion de la base de datos y de sus variables definidas por el propio módulo. Esta función que implementa al hook hook_uninstall () y se ejecutará cuando se decida inhabilitar el módulo por algún motivo en especial desde la interface que drupal ofrece al administrador del sitio ubicada en admin/build/modules funcionando de igual modo que en modulo explicado en el punto anterior. Pasaremos ahora a analizar los hooks más relevantes implementados en el archivo modulo_depuracion.module que es donde reside el núcleo principal de implementación de este módulo, Modulo_depuracion_help () Función que implementa el hook_help encargándose de proporcionar información del módulo al administrador cuando este acceda al correspondiente link del menú de administrador admin/help Página 99 Documentación general Mostrando la siguiente información al administrador, Modulo_depuracion_perm () Aquí nos encargamos de habilitar los checkboks para que el administrador pueda otorgar el privilegio a ciertos roles de controlar las palabras a depurar (no recomendable para roles ordinarios), Como se muestra en la figura se pueden seleccionar que roles tendrán el citado privilegio (admin/users/permissions). Modulo_depuracion_menu Define el tipo de formulario que tendrá en cada url definida y a la función que deberá llamar para crearlo. Como ejemplo tomaremos el que define la url admin/settings/modulo_depuracion, Página 100 Documentación general Vemos claramente que la función modulo_depuracion_menu implementa un hook, el hook_menu y que define que cada vez que se acceda a la url admin/settings/modulo_depuracion aparecerá un formulario en la página especificada por page callback con titulo Modulo depuración. Esta interface a modo de página se implementa a través de la función modulo_depuracion_admin_list (implementado en el mismo fichero) y que especifica la estructura de esta (campos, parámetros de salida y entrada y demás rasgos identificativos). Modulo_depuracion_filter () Es el encargado de efectuar el filtrado en el contenido antes de realizar su publicación. Cuando un usuario realiza una publicación de algun tipo de contenido Drupal busca este hook para comprobar si se debe realizar algún tipo de tratamiento de “filtrado” para este. Este tratamiento se implementará en una función externa dentro del propio fichero, en nuestro caso la función modulo_depuracion_filter_process, que es la que se encarga de personalizar nuestro filtrado que en este caso pasará por substituir las palabras malsonantes o restringidas por la expresión XXX. 5.5.4.3.4 Base de datos Este módulo crea una tabla en la base de datos para almacenar: Id identificador de cada pareja de palabras (incorrecta/substituta). Word palabras a depurar. Replacement palabra que substituirá a la palabra incorrecta. Language aporta información del lenguaje utilizado (info necesaria para uso interno de Drupal). Página 101 Documentación general Standalone Es un booleano que indica si las palabras incorrectas a substituir pueden ir o no mezcladas con otras (es para asegurar que nadie ponga palabras incorrectas camufladas con otras). La estructura que se crea en la base de datos del sitio es la siguiente, 5.5.4.3.5 Funcionamiento Accediendo al sitio como administrador, se tiene acceso a la interface gráfica general de manejo del módulo desde la URL admin/settings/modulo_depuracion desde ahí aparece el siguiente formulario, Como se observa se puede configurar para que filtre el titulo de los nodos y comentarios de los usuarios de forma independiente (checkbox). En el caso de Sportalia37 se ha decidido que el filtrado se realice en ambos. Página 102 Documentación general En el campo de texto se especifica la palabra a depurar por defecto cuando se encuentre alguna que sea restringida. Para agregar una palabra a la lista de depuración bastará con hacer clic sobre la pestaña con nombre agregar obteniendo de este modo el siguiente formulario, Como se aprecia simplemente hará falta introducir la palabra a restringir en el campo de texto palabras poniendo dicha palabra seguida del carácter especial „|‟ y a continuación la palabra a sustituir. En el caso de que no se especifique palabra se sustituirá por la configurada por defecto que aparece en el primer formulario mostrado. Finalmente haciendo clic sobre el botón Salvar palabra a depurar se habrá habilitado todo correctamente para su filtrado. Página 103 Documentación general Una vez realizado esto aparecerá un listado de todas las palabras insertadas en la interface inicial, Evidentemente a través del campo operaciones se podrá borrar o editar la palabra en función de las necesidades o cambios posteriores necesarios. 5.5.5 Tema creado Para crear Sportalia37 se analizaron con detenimiento múltiples temas base que la comunidad de desarrolladores ofrecía. Se valoró el número de regiones que harían falta, la disposición del contenido general y demás variantes hasta que finalmente y debido a la naturaleza del sitio se utilizó el tema base elements theme (https://drupal.org/project/elements_theme). Seleccionar un tema ofrece simplemente una base a partir de la cual se deberá modificar a través de CSS (Cascading Style Sheets) para ceñirse a la estructura y a la finalidad decidida por el diseñador de la página web. El tema está compuesto por una hoja de estilo externa en CSS, que es la página donde se han especificado los aspectos gráficos de cada uno de los elementos que se visualizan en el sitio web. Elementos tales como: Anchuras de los bordes. Colores del texto en cada región. Tamaño de las imágenes. Posicionamiento de cada elemento. Colores fondo web. Anchura y altura de los elementos de la web. Fuente de texto. Márgenes entre los elementos del sitio. Etcétera… Pero, ¿Qué es CSS? A modo de resumen y sin entrar a fondo en cuestiones puramente técnicas, CSS es el acrónimo de Cascading Style Sheets (Hojas de estilo en Página 104 Documentación general cascada) y sirve para organizar la presentación y el aspecto semántico de una página web. Utilizado por la mayoría de navegadores web de internet, intenta separar lo que es la estructura del documento HTML de su presentación. Por explicarlo de una manera coloquial, la página web sería la base (contenido) y CSS sería como una especie de cristal de color que hace que se vea de una forma u otra en función de su diseño. A continuación se muestra el tema original sin aplicar los estilos de la hoja CSS, Y este es el tema modificado con CSS, Se puede apreciar claramente la diferente disposición de los elementos del sitio, colores y anchuras. El tema incorpora HOOKS propios (módulos creados) que modifican las funcionalidades de Drupal para ceñirse al máximo a las necesidades de la web. Finalmente destacar las regiones en las que se divide Sportalia37: Página 105 Documentación general Cabecera: Aquí encontramos en Logo, eslogan y la tollbar. Barra lateral derecha: Inicio de sesión, navegación, quién está en línea, alternador de idioma, encuesta más reciente y sindicación. Contenido: Eventos deportivos, blogs, publicaciones anónimas y comentarios de los usuarios a propósito de los eventos y blogs. Pié de página: Sitio elaborado con Drupal e información del autor. 5.5.6 Lenguajes de programación utilizados Para la realización de este proyecto han sido necesarios aprender los siguientes lenguajes de programación: HTML (HiperText Markup Language) Es el lenguaje de maquetación que se utiliza para el desarrollo de páginas web en internet. La traducción más satisfactoria en español sería Lenguaje de formato de documentos para hipertexto. El HTML se encarga de alguna forma de desarrollar una descripción sobre los contenidos que aparecen en las páginas tales como textos fotografías y demás objetos y de la estructura de estos. Basando su filosofía en referencias ningún elemento es incrustado directamente en el código de la página, sino que se hace una referencia a la ubicación de este mediante texto. Por lo tanto la página web contiene solamente texto mientras que el navegador web es en el que recae la tarea de unir todos los elementos y mostrar la página final. CSS (Cascading Style Sheets) Lenguaje de hoja de estilos para controlar el aspecto o la presentación de documentos definidos con HTML. Es la mejor forma de separar los contenidos y su presentación. Mejora la accesibilidad del documento, reduce la complejidad de su mantenimiento y permite visualizar el mismo documento en infinidad de dispositivos diferentes. A modo de resumen podríamos relacionar el lenguaje HTML y el CSS a través de la siguiente visión general: Al crear una página web, se utiliza en primer lugar el lenguaje HTML para marcar los contenidos, es decir, para designar la función de cada elemento dentro de la página: párrafo, titular, texto destacado, tabla, lista de elementos, etcétera. Página 106 Documentación general Una vez creados los contenidos, se utiliza el lenguaje CSS para definir el aspecto de cada elemento: color, tamaño y tipo de letra de texto, separación horizontal y vertical entre elementos, posición de cada elemento dentro de la página, etcétera. PHP De código abierto, es utilizado para generar páginas dinámicas como Sportalia37. Este lenguaje se procesa en los servidores del sitio que acceden a la base de datos asociada enviando a la página lo solicitado. De alguna forma PHP convierte una página dinámica en una estática de la siguiente forma: Petición de la página web al servidor El servidor recibe la petición, reúne la información necesaria consultando a la/as base de datos o a otras páginas web, otros servidores, etcétera El servidor responde enviando una página web estática cuya creación ha sido dinámica (la página web devuelta no siempre será igual). MYSQL Es un sistema de administración de base de datos de tipo relacional que utiliza el lenguaje SQL. Una base de datos relacional almacena los datos en tablas separadas en lugar de poner los datos en un solo lugar agilizando la velocidad y proporcionando mayor flexibilidad. 5.5.7 Programas y aplicaciones utilizados Del mismo modo que en el apartado anterior, los programas que se han necesitado para desarrollar el proyecto de Sportalia37 y su uso específico han sido los siguientes: GIMP (http://www.gimp.org.es/) Programa utilizado para el diseño de las imágenes del sitio, Página 107 Documentación general PAINT (http://www.getpaint.net/) Programa utilizado para el mismo fin que el comentado anteriormente, NOTEPAD++ (http://notepad-plus-plus.org/download/v6.5.1.html) Utilizado para edición de archivos referentes a los módulos y la hoja de estilo de CSS del tema creado, Página 108 Documentación general INTERNET EXPLORER (Navegador que viene por defecto en Windows) Navegador utilizado para la visualización del sitio. A medida que se iban introduciendo modificaciones en el diseño y mejoras esta herramienta permitía ver como quedaba el aspecto final en la red. CINSOLA DE DESARROLLO WEB (F12) PARA LA DEPURACIÓN Consola del propio navegador que aparece al apretar la tecla F12, permite seleccionar cualquier elemento de la página web y comprobar cuál es su nombre, la clase a la que pertenece y demás atributos. Realizando las modificaciones sobre esta consola sobre algún atributo, clase, etcétera, se puede comprobar el resultado final que esa modificación tendrá en el sitio al momento tras haberla actualizado apretando F5. En la figura anterior vemos como se ha seleccionado un campo al azahar (title) que corresponde al título del blog del atleta3 (Crónica del Maresme Challenger 2013 by atleta3). Desde la consola inferior (ventana de la derecha) podríamos modificar algún atributo de el título del blog (tamaño, fuente texto, color, etcétera) comprobando al momento si el cambio/os realizados son satisfactorios o no. Página 109 Documentación general PHOTOSHOP (http://www.photoshop.com/) Utilizado para el diseño del logo de la web y de su correspondiente favicon, COLOR PIKER (http://www.colorpicker.com/) Herramienta on-line que ha sido de gran utilidad para agilizar el diseño de colores de la web. A través de una simple interface permite seleccionar el tono de color exacto en formato hexadecimal (como utiliza CSS) al mostrado en una ventana que la propia interface ofrece al usuario, Página 110 Documentación general GANTT PROJECT (http://www.ganttproject.biz/) Programa utilizado para documentar la planificación temporal de la web. Proporciona una interface para hacer la relación tarea – duración en un diagrama para todo tipo de proyectos, CAMTASIA STUDIO 8 (http://www.photoshop.com/) Programa utilizado para realizar la presentación en formato de video del proyecto, Página 111 Documentación general 6. Pruebas Para comprobar el correcto funcionamiento del sitio se han realizado múltiples juegos de prueba intentando buscar casos críticos y situaciones de riesgo con el fin de localizar posibles errores. A modo de resumen se expone a continuación una lista detallada de lo realizado: Se han creado 7 usuarios registrados de los cuales 4 han sido de tipo atleta (atleta1, atleta2… …atleta4) y los 3 restantes de modo organizador (organizador1, organizador2 y organizador3). Generados 15 eventos deportivos de los cuales 6 han sido creados por el organizador1, 4 por el organizador2 y 3 por el organizador3 y 2 por el administrador del sitio. Se han posteado 7 blogs de los cuales 2 han sido publicados por el atleta1, 1 por el atleta2, 2 por el atleta3, 2 por el atleta4. Múltiples comentarios en todos los tipos de contenido publicado. Borrado de contenido de todo tipo. Posteado de encuestas. Se han comprobado las actualizaciones de las sindicaciones tanto propias como de otras webs de las que Spoertalia37 se nutre. Intento de violar el password entrando con contraseñas erróneas. Modificado estas por otras con resultado satisfactorio en ambos casos. Se ha creado 3 publicaciones anónimas por parte de los atletas1, 2 y 4 respectivamente. Se ha comprobado el correcto funcionamiento de todos los bloques y funcionalidades habilitadas (compartir contenido con las redes sociales, links, nube de tags, rotor de eventos deportivos, etcétera). Se ha comprobado que la modificación de un módulo puede afectar al comportamiento de terceros por lo que se ha verificado el sistema siempre que se ha agregado algún cambio. Página 112 Documentación general Página 113 Documentación general 7. Planificación temporal A continuación se detalla mediante un diagrama de Gantt la planificación temporal que se ha llevado a cabo para la realización de la web, El periodo total para la realización de este proyecto ha sido de 218 días. Página 114 Documentación general Página 115 Documentación general 8. Costes 8.1 Estudio previo En el apartado de costes solamente hace falta decidir el tipo de respaldo web que tendrá el sitio. La elección final de una u otra opción repercutirá al coste final. Para que un sitio web este accesible a los internautas es necesario que los archivos que lo forman se encuentren alojados en un servidor web, un ordenador especial equipado con la tecnología y software necesario para estar conectado 24 horas y mostrar la web cada vez que un navegador lo solicita. En el caso de Sportalia37 existen varias posibilidades de satisfacer los requisitos mencionados en el párrafo anterior mediante un servidor local, compartido o uno dedicado 100% con unos costes totales diferentes. El esquema de estudio seguido para seleccionar una u otra opción fue el siguiente, I.Elección del tipo de servidor Servidor local La opción más económica, tan solo nos hará falta una conexión a internet desde casa o lugar deseado con una buena velocidad de subida y lógicamente un ordenador con buena capacidad de respuesta. Hoy en día existen ordenadores que ofrecen prestaciones muy elevadas como para dar una respuesta óptima a sitios web similares a este. Página 116 Documentación general Ventajas - Control total de la máquina donde se respalda la web. - El único coste a la larga sería el de la luz que alimentaría al servidor. - Autosuficiencia de funcionamiento sin depender de empresas de hospedaje web. Inconvenientes - Máquina encendida las 24 horas al día del año para no interrumpir el acceso de los usuarios. - Inversión inicial en hardware y sistema operativo. - El ordenador que haría de servidor deberá tener gran capacidad de respuesta y prestaciones para responder a diversas peticiones a la vez. - Tiempos de respuesta exponenciales al número de peticiones simultáneas. Servidor web compartido Múltiples sitios web alojados en el mismo servidor compartiendo todos los recursos de la máquina. Ventajas - Bajo coste. - No es necesario grandes conocimientos de hospedaje web ya que la mayoría de tareas las suele hacer el proveedor. - Los clientes no se hacen responsables del mantenimiento del servidor. Inconvenientes - Suele haber límites en el espacio de disco. - El cliente no tiene acceso root o raíz de servidor. - Suele ser difícil las tareas de backup y restauración. Página 117 Documentación general Servidor web 100% dedicado él solo. En este último caso Sportalia37 dispondría de un servidor exclusivo para Ventajas - El cliente dispone de todos los recursos de la máquina. - La configuración del servidor puede estar completamente adaptada a las necesidades del sitio. - El mantenimiento y las actualizaciones se realizan con mayor facilidad y total control. Desventajas - Coste elevado del servicio alrededor de 5 a 15 veces más que uno de compartido. II. Elegir el sistema operativo La principal diferencia entre ambos son los lenguajes de programación que soportan. En nuestro caso la elección será Windows ya que es el S.O. más conocido por el diseñador del sitio web. Estas dos tablas ofrecen información de las funcionalidades de un S.O. u otro, Página 118 Documentación general III. Elegir el plan de alojamiento Selección que viene determinada en función de los recursos que se prevea consumir: IV. Elegir proveedor de alojamiento De entre todas las empresas que ofrecen servicios de hosting y teniendo en cuenta las recomendaciones de la comunidad Drupal se han preseleccionado las siguientes: Página 119 Documentación general Todas ofrecen muy buenas prestaciones pero sin duda alguna 1&1 es la que mejor se adapta a nuestras necesidades precio-prestaciones tal y como se muestra en la siguiente comparativa de hosting de web compartida, Espacio disco Dominios Editor web móvil Acceso FTP Precio €/mes 1&1 50 Gb 1 Sí Sí 2,99 HostGator Ilimitado 1 Sí Sí 3,96 Arsys 200 Mb 1 No Sí 4,9 8.2 Conclusiones Llegados a este punto se tenía que decidir cuál de estas opciones se escoger descartando la de servidor local ya que la necesidad de dedicar una máquina para dar respaldo al sitio dando funcionalidad 24 horas sin interrupción era una inversión costosa y no optimizaba el perfecto rendimiento del Sportalia37. Puesto que esta web no está pensada para generar beneficios y los recursos necesarios no son muy importantes nos decantaremos por la opción más económica y, por lo tanto, la opción seleccionada será la de un servicio web compartido. La empresa seleccionada a día de hoy sería 1&1 por ofrecernos mejores precios finales. Finalmente tendremos, Coste total de Sportalia37 = 2,99 € + IVA mensuales Página 120 Documentación general Página 121 Documentación general 9. Legislación Drupal se ampara en la licencia GPL (GNU General Public Licence) que garantiza la libertad de usar, estudiar, compartir y modificar el software. Pudiendo ser usada por cualquiera, su finalidad es la de proteger a los usuarios finales de cualquier apropiación que restringa estas libertades. Creada en origen por Richard Stallman fundador de FSF (Free Software foundation). Esta licencia no implica que no se tenga que tener en cuenta la L.O.P.D. (Ley orgánica de protección de datos) para garantizar los derechos fundamentales de las personas físicas que serán usuarias de Sportalia37. 9.1 Ley orgánica de protección de datos Texto oficial consolidado a fecha 5 de marzo de 2011, según la agencia española de protección de datos (http://www.agpd.es/portalwebAGPD/indexides-idphp.php) que tiene por objetivo garantizar y proteger, en lo que concierne al tratamiento de de los datos personales, las libertades públicas y los derechos fundamentales de las personas físicas, en especial de su intimidad personal y familiar. Es aplicable a los datos de carácter personal registrados en soporte físico que los hagan susceptibles de tratamiento. Puntualiza también que los usuarios deberán ser comunicados previamente de manera precisa e inequívoca de la finalidad de la petición de datos personales y de que se hará con estos en un futuro. Página 122 Documentación general Página 123 Documentación general 10. Mejoras Una web Drupal sin optimizar utiliza muchos recursos en el servidor tanto de CPU como de accesos a bases de datos. Para no aumentar el gasto en alojamiento servidores más potentes y por consiguiente más caros, se han tomado las siguientes medidas recomendadas por la comunidad Drupal, Agrupación de todos los estilos CSS en un solo archivo. Activación del modo caché para - Comprimir las páginas utilizando el menor ancho de banda en cada petición. - Para que no se regenere cada petición de página, por ejemplo, los posts más leídos en vez de generarse cada visita lo pueden hacer cada hora. - Servir únicamente los ficheros js y css en la primera visita de cada usuario. Desinstalación de los módulos que han podido ser utilizados para crear el sitio pero finalmente no serán de más servicio para el funcionamiento de la web. 10.1 Mantenimiento Con la finalidad de garantizar la estabilidad del gestor debido a la continua evolución soportada por este CMS se explicarán los pasos a seguir para realizar las actualizaciones pertinentes que permitirán a la web estar renovada y puesta al día. La versión con la que se ha diseñado Sportalia37 es la 6.90, esto implica que cuando se ejecute el cron (explicado en el apartado 5.1.2.1) y detecte que existe una nueva actualización nuestro gestor nos avisará a través de un mensaje de texto de que deberemos hacer la actualización correspondiente, Esta advertencia solo podrá visualizarla el administrador del sitio. Página 124 Documentación general Los pasos a seguir para que el proceso de actualización sea satisfactorio y sin fisuras es el siguiente: Hacer copia de seguridad del sitio. Poner la página en modo mantenimiento para advertir a los usuarios de que temporalmente y hasta que se descargue e instale la nueva actualización la web no estará funcional. Instalar las actualizaciones (mediante el „cron‟). Comprobar su correcto funcionamiento. Volver a habilitar la web. En el caso de que existieran problemas con dicha actualización se debería restaurar la copia de seguridad realizada con anterioridad. 10.2 Actualización a Drupal 8 Proceso necesario para mantener al día el sitio igual que en apartado anterior, cuando una actualización difiere mucho de la existente la comunidad renombra dicho CMS incrementando el número de la versión Drupal. Recientemente ha aparecido la versión 8 de Drupal para dar soluciones específicas y personalizadas a dispositivos móviles, tablets, android, ios y demás tecnologías relacionadas con este sector. A continuación se explicará el proceso de la migración de Drupal 6 a Drupal 8. Esta tarea es delicada y puede dar múltiples problemas migratorios y de asentamiento final del sitio por lo que los pasos que se describirán a continuación podrían tener singularidades con problemáticas específicas en función del desarrollo del sitio. Además la comunidad de desarrolladores de este CMS recomienda realizar la migración a Drupal 7 en primer lugar. A continuación y para no hacer tedioso la explicación de todo el proceso Drupal 6 Drupal 7 Drupal 8 se explica la primera migración (Drupal 6 Drupal 7) por lo que los pasos a seguir sería los siguientes: 1. Respaldar el sitio mediante un backup. 2. Actualizar el sitio a la versión más reciente de Drupal 6. Página 125 Documentación general 3. Descargar la versión más reciente de Drupal 7 http://drupal.ord/download 4. Leer con detenimiento el archivo UPGRADE.txt situado en la raíz de los archivos de instalación de Drupal 7. 5. Iniciar la sesión con el usuario #1, que es el que se creó por defecto al ser instalado. 6. Poner el sitio en mantenimiento para que se le deniegue el acceso a la web a todo usuario que intente accedes a esta y se le advierta mediante un cuadro de texto de los motivos de la inhabilitación de Sportalia37. http://localhost:8082/admin/settings/site-maintenance 7. Activar el tema <Garldand> como predeterminado. 8. Desactivar los módulos que no forman parte del núcleo de Drupal. http://localhost/admin/build/modules 9. Borrar el archivo sites/default//default.settings.php. 10. Borrar archivos y directorios del núcleo de Drupal 6 exceptuando el directorio sites. 11. Extraer y copiar los archivos de Drupal 7 en el directorio de Sportalia37. 12. Asignar permisos de lectura y escritura a todos los usuarios para el archivo sites/default/settings.php: $ chmod 777 /var/www./drupal7/sites/default/settings.php 13. Entrar en la página actualización http://www.localhost/update.php y pulsar el botón de continuar. 14. Descargar la versión 7 para todos los módulos contribuidos de Sportali37 y actualizar posteriormente. 15. Cambiar los permisos del archivo de configuración settings.php: $ chmod 550 /var/www/drupal7/sites/default/settings.php 16. Verificar el perfecto funcionamiento de la web. 17. Volver a la página de administración y sacar el sitio de modo mantenimiento. 18. Proceso finalizado. Página 126 Documentación general Página 127 Documentación general 11. Conclusiones generales El desarrollo de este PFC me ha permitido entender la estructura general y funcionamiento interno de las páginas web de contenido dinámico cosa que desconocía por completo hasta el momento. Me ha resultado muy apasionante y porque no decirlo, un poco tedioso, aprender toda la cantidad de conceptos, lenguajes de programación, funcionamiento interno del gestor de contenidos y demás aspectos necesarios para lograr que Sportalia37 sea una web totalmente funcional y de utilidad para atletas y organizadores tal y como se pretendía inicialmente. También me ha sorprendido mucho la enorme cantidad de portales web de empresas de primer nivel y demás proyectos que están implementados con esta tecnología de contenidos. Por otra parte, he certificado que, a través de la adaptación de los módulos contribuidos por la comunidad de desarrolladores de Drupal se puede generar prácticamente cualquier funcionalidad necesaria para todo tipo de webs. La creación de módulos personalizados ha sido clave para entender que, a veces, será necesario ayudar a la comunidad y crear nuevas funcionalidades específicas ya que estas pueden ser que aún no hayan aparecido. Un aspecto importantísimo y que en los foros de este CMS se destacaba con mucha frecuencia era la importancia de seleccionar un tema adecuado a la finalidad del sitio y la importancia del aspecto visual de este. Sportalia37 se diseñó para tener un aspecto diferente al resto de webs con el fin de destacar y llamar la atención del usuario. Colores intensos y una distribución singular de los diferentes bloques de los que se compone han intentado llevar a cabo esta tarea de impacto visual. Finalmente destacaré un par de puntos que considero importantes, 1. La gran versatilidad y solidez para dar respaldo a sitios web con finalidades tan dispares como pueden ser inmobiliarias, eventos deportivos, catálogos de fotos, blogs, etcétera. 2. Es un CMS en continua evolución y de código libre que constantemente es actualizado por los miembros de su comunidad con la finalidad de no perder potencialidad y adaptabilidad a los nuevos desafíos que ofrecen las nuevas tecnologías emergentes. Página 128 Documentación general Página 129 Documentación general 12. Referencias / Bibliografía Página oficial de Drupal: www.drupal.org Página drupal en castellano: www.drupal.org.es API de Drupal: http://api.drupal.org/api/drupal Webs de aprendizaje Drupal: http://illasaron.com o http://cursosdrupal.com o http://cocinandocondrupal.net o http://aprende.drupal-centroamerica.org/ o http://www.drupalescuela.com/ o http://www.cursosdrupal.com/ o Libros: o Estudio de los sistemas de gestión de contenidos web, Centro de apoyo tecnológico a emprendedores, Fundación parque científico y tecnológico de Albacete (PDF), 2012. o “Learning Drupal 6 Module Development”, Matt Butcher 2008 o Aprende Drupal 6 Curso de creación y gestión de portales web con Drupal 6 Nivel Inicial, Fran Gil y Adolfo Romaní 2011 o Aprende Drupal 6 Curso de creación y gestión de portales web con Drupal 6 Nivel Intermedio, Fran Gil y Adolfo Romaní 2011 o Aprende Drupal 6 Curso de creación y gestión de portales web con Drupal 6 Nivel Avanzado, Fran Gil y Adolfo Romaní 2011 o Drupal, Angela Byron, Addyson Berry, Nathan Haug, Jeff Eaton, James Walker y Jeff Robbins 2010 Páginas sobre alojamiento web: o http://www.1and1.es/hosting-windows o http://www.arsys.es/hosting o http://www.hostgator.com/shared Página 130 Documentación general Página 131 Documentación general 13. Glosario CMS (Content manager system) Sistema de gestor de contenidos. Interface asociada a un programa que permite crear una estructura para la creación y administración de contenidos. PHP (Hypertext preprocessor) Lenguaje de código abierto utilizado por el servidor para el desarrollo de páginas web dinámicas. FTP (File transfer protocol) Protocolo de red para la transferencia de archivos en sistemas conectados a un red. SQL (Structured query language) Lenguaje declarativo de acceso a bases de datos relacionales que permite hacer múltiples operaciones en cada una de ellas. ASP.Net Framework para aplicaciones web desarrollado y comercializado por Microsoft. Es el reflejo de Drupal para Windows y de código no liberalizado. JAVA Lenguaje de programación y primera plataforma informática creada por Sun Microsystems en 1995. Importantísimo gracias a que puede ejecutarse desde cualquier máquina virtual Java sin importar la arquitectura de la computadora. PYTON Lenguaje de programación interpretado de sintaxis limpia con el objetivo de favorecer la legibilidad. MySQL Sistema de gestión de bases de datos relacional multiusuario. GNU/GPL Licencia pública general que garantiza al usuario final la libertad de usar, estudiar, compartir y modificar software. Página 132 Documentación general HTML (HyperText Markup Language) Lenguaje para la elaboración de páginas web. Basado en la referenciación permite la definición de contenido de las páginas como texto, imágenes, etcétera. Oracle Sistema de gestión de bases de datos desarrollado por Oracle Corporation. WampServer Sistema de infraestructura de internet que usa Windows como sistema operativo, Apache como servidor web, MySql como gestor de bases de datos y PHP como lenguaje de programación. Permite virtualmente establecer una conexión PC-Servidor desde una sola máquina sin tener que ser esta un servidor propiamente dicho. JavaScript Lenguaje de programación interpretado y dinámico implementado como parte del navegador web permitiendo mejoras en la interfaz de usuario y páginas web dinámicas. Incrustado en HTML lo ejecuta la máquina del cliente con lo que la rapidez es notablemente superior. API (Application Programming Interface) Interfaz que documenta caractgeristicas y funcionalidades de una aplicación determinada. CCK (Content Construction Kit) Interface de Drupal que permite crear y modificar tipos de contenido sin necesidad de crearlos manualmente en la base de datos. RSS (Really Simple Syndication) Formato XML para sindicar o compartir contenido en la web el cual se actualiza frecuentemente a los sitios web que se han suscrito. URL (Uniform resource locator) Secuencia de caracteres, de acuerdo a un formato modélico y estándar, que se usa para nombrar recursos en internet para su localización o identificación. Página 133