1. Indice
1. Introducción…………………………………………………………………………………………..
2. Propósito……………………………………………………………………………………………….
3. Alcance………………………………………………………………………………………………….
4. Especificaciones Técnicas………………………………………………………………………
5. Documentos de Referencia……………………………………………………………………
6. Diccionario de Datos……………………………………………………………………………..
7. Instalación…………………………………………………………………………………………….
8. Desplegar la aplicación………………………………………………………………………….
9. Estructura del Proyecto…………………………………………………………………………
10.Módulos del Sistema……………………………………………………………………………..
11.Paquetes de Laravelincluidos al Sistema………………………………………………
2. Manual Técnico
1.Introducción
El presente manual técnico tiene como finalidad mostrar las tecnologías que fueron usadas
para desarrollar el Sistema Umatest (Sistema de Evaluación de Exámenes En línea), breve
manual para preparar los ambientes de desarrollo del proyectos, así como también
referencias y documentación de paquetes de Laravel 5.1 que se usan actualmente en el
proyecto.
La implementación de UMATEST en ambientes web se basa en el framework Laravel, una
plataforma para crear aplicaciones web en tiempo real construida sobre PHP. Laravel se
localiza entre la base de datos de la aplicación y su interfaz de usuario y se encarga que las
dos partes estén sincronizadas. Como Laravel usa PHP, El resultado es una plataforma muy
potente y muy sencilla ya que Laravel abstrae muchas de las molestias y dificultades que
nos encontramos habitualmente en el desarrollo de aplicaciones web.
Como mención especial, podemos decir que utiliza Eloquent, que es una base de datos
orientada a Objetos. Esto quiere decir Que la manipulación de datos se lo realiza bajo este
paradigma.
2.Propósito
El propósito del presente es dar a conocer todas las tecnologías que fueron usadas para
implementar el sistema UMATEST.
3. 3.Alcance
El alcance del presente documento es de proveer información importante acerca del
Sistema SAETIS (Sistema de Apoyo a la Empresa TIS), como ser tecnologías usadas, pasos
para la instalación de un ambiente de desarrollo, además de referencias a la documentación
de las tecnologías que fueron usadas para implementar dicho sistema.
4.Especificaciones Técnicas
Sistema Operativo: Windows 7, 8.1, 10 o GNU/Linux 16.04 o versiones superiores
Base de datos: MySQL
Leguaje de Programación: PHP 5.6, HTML5, CSS3, Framework (Laravel 5.1), JavaScript,
Jquery
Navegador Web: Google Chrome, IE, Firefox, Opera
IDE: Sublime Text 3
5.Documentación de referencia
Laravel: http://docs.laravel.com/#/basic/
Trello: https://trello.com/
GIT: http://git-scm.com/documentation/
6.Diccionario de Datos
A continuación se detallan todas las colecciones del sistema Umatest.
4. Colección 1. Variables del sistema
CAMPO TIPO OBSERVACIONES
_id String
Identificador autogenerado
por Laravel
num Number
variable autogenerado por
Laravel
state Number
Solo permite los valores [0,
1,2] que representan ['No
iniciada', 'En progreso',
'Finalizado'] respectivamente.
role_id Int
Representa el rol que
desempeña dentro del sistema
el usuario
Colección 2. Administrador
CAMPO TIPO OBSERVACIONES
nombre_user String Nombre del usuario
apellido_user String
genero_user String
password_user String
5. Colección 3. Registro
CAMPO TIPO OBSERVACIONES
Id_user
String _id del usuario
nombre_user
String
apellido_user
String
email_user
String
telefono_user
Number
Dirección_user
String
Id_acceso
String _id que se encarga del
acceso del administrador
Id_student
[String] _id’s de los estudiantes que
están registrados en la
materia
Enabled
Boolean Indica si la materia ha sido
habilitada o no
adviser
String _id del docente habilitado
por el administrador
task
String _id de la tarea asignada en el
grupo del docente
Colección 4. backups
CAMPO TIPO OBSERVACIONES
num
Number
description
String
6. check
Boolean
activityId
String _id de la Actividad a la que
pertenece este entregable
weekId
String _id de la Semana a la que
pertenece este entregable
Colección 5. Examenes
CAMPO TIPO OBSERVACIONES
collection
String Nombre de la colección de
datos a la que perteneceria
el Examen(ProjectDocument,
GlobalDocument)
key
String Id llave para relacionar con
colección correspondiente
access
String Tipo de acceso del
documento(publico, privado)
documentId
String Id del documento fisico al
cual va relacionado
Num_preg
String Colección de preguntas
insertadas al examen
entregado
Boolean Muestra si el examen fue
enviado o no al grupo de la
materia
Verificado
Boolean Muestra si el examen fue
verificado por el docente
Colección 6. Preguntas
CAMPO TIPO OBSERVACIONES
8. activityId
String
weekId
String
Colección 9. Estado-envio
CAMPO TIPO OBSERVACIONES
startDate
Date
endDate
Date
name
String
Colección 10. foros
CAMPO TIPO OBSERVACIONES
publicationDate
Date
summary
String
extraText
String
publisherName
String
publisherId
String
Colección 11. notas
CAMPO TIPO OBSERVACIONES
userId
String Id del usuario docente que
crea la nota
managementId
String Id de la gestion actual
name
String
10. finishPresentationTime
String
delayPresentationTime
Number Tiempo de retraso permitido
para la entrega en horas
Colección 13. estudiante
CAMPO TIPO OBSERVACIONES
Nombre_id
String
Apellido_id
String
roI_id
String
legalAgent
Boolean
Colección 14. Usuarios
CAMPO TIPO OBSERVACIONES
username
String
email
String
password
String
7.Estructura Del Proyecto
El proyecto Umatest (Sistema de Evaluaciones en linea) presenta la siguiente estructura de
folders y archivos:
11. 7.1. archivo .ENV
Es la definición de las variables de entorno. Podemos tener varios entornos donde vamos a mantener la
ejecución de la aplicación con varias variables que tengan valores diferentes. Temas como si estamos
trabajando con el debug activado, datos de conexión con la base de datos, servidores de envío de
correo, caché, etc. Datos de conexión con la base de datos, servidores de envío de correo, caché, etc.
7.2. archivo composer json
Que contiene información para Composer. Además en la raíz hay una serie de archivos que
tienen que ver con Git, el readme, o del lado frontend el package.json o incluso un gulpfile.js
que no vendria muy al caso comentar aquí porque no son cosas específicas de Laravel.
7.3. Carpeta Vendor
12. Esta carpeta contiene una cantidad de librerías externas, creadas por diversos desarrolladores
que son dependencias de Laravel. La carpeta vendor no la debemos tocar para nada, porque la
gestiona Composer, que es nuestro gestor de dependencias. Si nosotros tuviésemos que usar
una librería que no estuviera en la carpeta vendor la tendríamos que especificar en el archivo
composer.json en el campo require. Luego hacer un "composer update" para que la nueva
dependencia se instale.
7.4. Carpeta Storage
Es el sistema de almacenamiento automático del framework, donde se guardan cosas como la
caché, las sesiones o las vistas, logs, etc. Esta carpeta tampoco la vamos a tocar directamente,
salvo que tengamos que vaciarla para que todos esos archivos se tengan que generar de nuevo.
También podemos configurar Laravel para que use otros sistemas de almacenamiento para
elementos como la caché o las sesiones. En cuanto a las vistas cabe aclarar que no son las vistas
que vamos a programar nosotros, sino las vistas una vez compiladas, algo que genera Laravel
automáticamente en función de nuestras vistas que meteremos en otro lugar.
Esta carpeta contiene una cantidad de librerías externas, creadas por diversos desarrolladores
que son dependencias de Laravel. La carpeta vendor no la debemos tocar para nada, porque la
gestiona Composer, que es nuestro gestor de dependencias. Si nosotros tuviésemos que usar
una librería que no estuviera en la carpeta vendor la tendríamos que especificar en el archivo
composer.json en el campo require. Luego hacer un "composer update" para que la nueva
dependencia se instale.
7.5. Carpeta Resources
En Laravel 5 han creado esta carpeta, englobando distintos tipos de recursos, que antes
estaban dentro de la carpeta app. En resumen, en esta carpeta se guardan assets, archivos de
idioma (lang) y vistas.
Dentro de views tienes las vistas que crearás tú para el desarrollo de tu aplicación. En la
instalación básica encontrarás una serie de subcarpetas con diversos tipos de vistas que
13. durante el desarrollo podrias crear, vistas de emails, errores, de autenticación. Nosotros
podremos crear nuevas subcarpetas para organizar nuestras vistas. A propósito, en Laravel se
usa el motor de plantillas Blade.
7.6. Carpeta Public
Es el denominado "document root" del servidor web. Es el único subdirectorio que estará
accesible desde fuera mediante el servidor web. Dentro encontrarás ya varios archivos:
.htaccess
En el caso de Apache, este es el archivo que genera las URL amigables a buscadores. <7p>
favicon.ico
Es el icono de nuestra aplicación, que usará el navegador para el título de la página o al agregar
la página a favoritos.
index.php
Este es un archivo muy importante, que hace de embudo por el cual pasan todas las solicitudes
a archivos dentro del dominio donde se está usando Laravel. Estaría bien que abrieras ese
index.php para observar lo que tiene dentro. Para el que conozca el patrón "controlador
frontal" o "front controller" cabe decir que este index.php forma parte de él.
robots.txt
Que es algo que indica las cosas que puede y no puede hacer a la araña de Google y la de otros
motores de búsqueda. En la carpeta public podrás crear todas las subcarpetas que necesites en
tu sitio web para contener archivos con código Javascript, CSS, imágenes, etc.
7.7. Carpeta Database
14. Contiene las alimentaciones y migraciones de la base de datos que veremos más adelante.
7.8. Carpeta Bootstrap
Permite el sistema de arranque de Laravel, es otra carpeta que en principio no necesitamos
tocar.
7.9. Carpeta Config
Esta carpeta contiene toda una serie de archivos de configuración. La configuración de los
componentes del framework se hace por separado, por lo que encontraremos muchos archivos
PHP con configuraciones específicas de varios elementos que seguramente reconoceremos
fácilmente. La configuración principal está en app.php y luego hay archivos aparte para
configurar la base de datos, las sesiones, vistas, caché, mail, etc.
8.Modulos Del Sistema
8.1. Módulo autoform
Es el modulo encargado de la creación de formularios, este módulo se
caracteriza por generar un formulario de manera automática a partir del
Esquema de una colección. Su uso en la aplicación es de la siguiente manera:
15. Solo se necesita definir el template “autoform” y adicionar algunos parámetros
necesarios como ser:
onSubmit: Es una función que se llamara cuando en el formulario se haga click
en el botón de submit.
customValidation: Es una función que nos permite adicionar una validacion a
los campos del formulario.
Title: El titulo del formulario
submitButtonLabel: El nombre del botón de submit.
cancelButtonLabel: El nombre del botón cancelar
icon: Algun Icono necesario para el titulo
showLabel: Si se desea que se muestren los nombres de los campos
8.2. Módulo Auntentificacion
Es encargado de validar el ingreso del usuario al sistema
16. Auth: recibe los parámetros de acceso al Sistema
8.3. Módulo NuevoExamen
Modulo Encargado de la creación de un nuevo examen:
17. Primero ira llamando a la función validate , para corroborar los datos.
Luego se ira introduciendo los datos a los campos correspondientes, como ser:
• nombre_examen: es un campo donde se pondrá el nombre del Examen
• fecha_examen: En este campo se pondrá la fecha del nuevo examen
• puntaje_totalm: la cantidad de puntaje que valdrá el nuevo examen
8.4. Módulo EnviarExamen
Este módulo trabaja con la información que genera la creación de un nuevo
examen, ya que trabaja cuando existe creado un nuevo examen
Otra de la utilidades que realiza es que verifica que el examen fue enviado a los
estudiantes inscritos en el curso.
18. 9.Paquetes Laravel Incluidos Al Proyecto
adminLTE(https://almsaeedstudio.com/themes/AdminLTE/index2.html)
AdminLTE es una plantilla open source para paneles de control o dashboards
desarrollada con Bootstrap 3 , la cual nos brinda vistas reusables y responsive de
muchos componentes comunes para la parte administrativa de un proyecto.
Crud-generator(https://packagist.org/packages/appzcoder/crud-generator)
La mayoría de nuestros proyectos utilizan modelos, vistas, controladores, entre
otros archivos comunes. Este paquete nos facilita en tiempo de creado de
módulos para manipular eventos de tipo CRUD (Create, Read, Update y Delete).
Collective(https://laravelcollective.com)
Este paquete nos ayuda para utilizar las etiquetas dinámicas de Form y HTML
como por ejemplo: Html::style() y Form::text(), que fueron eliminados del
núcleo del framework (Illuminate.