https://foro.gambas-es.org/viewtopic.php?f=5&t=6429
-----------------------------------
vicr
Jueves, 08 Junio 2017, 18:23

Proyecto Web En Gambas Paso A Paso. Del Papel A Su Funcionamiento Web.
-----------------------------------
Hola todos,

Creo este hilo para poner el paso a paso de un proyecto para hacerlo web usando Gambas como servidor.

[b]MiniMensajes[/b]

[u]Intro:[/u]
La idea de este proyecto viene una característica que me pidió un cliente para su web (en PHP) que no estaba pensada en el inicio del trabajo al igual que otra media docena de ideas que se le ocurrió en una reunión... por esto y otros motivos el proyecto fue finalmente abandonado.

En esa ocasión quedé con la idea de realizar un pequeño foro, con mensajes cortos y que luego he soñado con hacerlo como una web de mensajes, que sea sencilla y rápida de cargar... Sólo que a veces con tanto Fb Messenger, Whatsapp, Telegram y otros me da dudas de reinventar la rueda.

Pero sirva ésta vez como forma de introducirme en esa área no vista por mi de Gambas como servidor web.  Por lo tanto serán testigos de los éxitos y fracasos del mismo, esperando sea más de lo primero que de lo segundo.

[i]Boceto del proyecto[/i]

Muestro una imagen inicial de como ordené las ideas que rondaban sobre este proyecto:

 [img]https://foro.gambas-es.org/files/images/2361/borrador_minim.jpg[/img] 

Luego lo trasladé a un diagrama para ordenar el sitio en LibreOffice Draw quedando así:

 [img]https://foro.gambas-es.org/files/images/2361/sitiowebminim.jpg[/img] 

Con eso planteo que la base de datos a usar debe tener las siguiente tablas y registros:
--------------------------------
usuarios(idUsuario, nombreUsuario, email, clave, fechaRegistro, avatar, habilitado) //obs. La clave será encriptada. Avatar puede ser una imagen de unos 150x150 px y se guardará la ruta de donde quedará guardada al subirla

roles(idRol, NombreRol)  //obs. al inicio será Admin y Usuario.  Quizá sea interesante añadir un moderador

usuarioRol(idUR, fk_IdUsuario, fk_IdRol)

foros(idForo, nombreForo, fechaCreación, habilitado)

tiposMsj(idTM, Nombre) //obs. Es un mensaje inicial (padre) o la respuesta a otro (hijo)

mensajes(idM, texto, fk_IdForo, fk_idTipoMsj, numeroMensaje, fechaHora, numeroIp, habilitado)

usuarioMensaje(idUM, fk_idUsuario, fk_Mensaje)

peticionForos(idPF, texto, fk_idUsuario, habilitado)

---------------------------------------------------

Eso por el momento. Hasta pronto.

----
Edito: Me falta guardar número de mensaje padre, quedando así:
mensajes(idM, texto, fk_IdForo, fk_idTipoMsj, numeroMensaje, fechaHora, numeroIp, habilitado, numeroMsjPadre)  // Si es el inicial es 0 - se podría indicar otros números si es que son mensajes creados luego de intervención del Admin/Moderador.


-----------------------------------
tincho
Jueves, 08 Junio 2017, 21:52

Re: Proyecto Web En Gambas Paso A Paso. Del Papel A Su Funcionamiento Web.
-----------------------------------
Perfecto, voy a seguir este hilo.
Saludos.


-----------------------------------
vicr
Sabado, 10 Junio 2017, 15:22

Re: Proyecto Web En Gambas Paso A Paso. Del Papel A Su Funcionamiento Web.
-----------------------------------
Hola a todos...
Hoy dejo archivo comprimido con la base de datos para mysql y sqlit3 para quien la quiera mirar sin tener que instalar nada de MySql...
La base la hice con MySql Workbench, programa que por algún motivo que desconozco siempre me deja mi computador lento, por lo que terminé ingresando algunos registros  (Foro "General", dos usuarios, un mensaje de bienvenida, los tipos de mensajes) con phpMyAdmin.

En SQLite trabajé con el plugin de Firefox llamado "SQLite Manager", no sé si tiene una parte gráfica para hacer la relación de claves foráneas por lo que finalmente terminé escribiendo la sentencia sql, de la siguiente manera:

[quote]
CREATE TABLE "usuariosmsjs" ("idusuariosmsjs" INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL  UNIQUE , "usuarios_idusuarios" INTEGER, "mensajes_idmensajes" INTEGER, FOREIGN KEY("usuarios_idusuarios") REFERENCES usuarios("idusuarios") , FOREIGN KEY("mensajes_idmensajes") REFERENCES mensajes("idmensajes"))
[/quote]

Los nombres de los campos de claves foraneas tienen la siguiente forma [b]mensajes_idmensajes[/b], lo hice así ya que en MySql Workbench al realizar la conexión (arrastrando y conectando las tablas con la herramienta gráfica para ello los deja con nombres de esa manera, por defecto.  Sí, se puede cambiar y yo no lo hice).  Para que al hacer pruebas con la base de datos podamos usar mysql o sqlite con las mismas sentencias sql mantuve el nombre de los campos en SQLite.

Mientras hacia la bd, pensé en mejoras que dejaré a futuro ya que ahora quiero hacer algo abarcable.  Las mejoras serían comunicaciones de los usuarios con el administrador, con el moderador -cuando exista-.  La presentación de los mensajes, también lo he pensado, agrupados o todos.. etc, etc.
---
Fin de semana, no sé que tanto pueda avanzar.  Nos leemos...


-----------------------------------
shordi
Sabado, 10 Junio 2017, 19:23

Re: Proyecto Web En Gambas Paso A Paso. Del Papel A Su Funcionamiento Web.
-----------------------------------
Ta chulo. Te observamos... que pisas terreno casi virgen con eso del gambas web (magnifica cosa con la que Benoit se gana la vida, pero que nadie sabe manejar)  :mrorange:  :mrorange:  :mrorange:


-----------------------------------
tincho
Domingo, 11 Junio 2017, 22:04

Re: Proyecto Web En Gambas Paso A Paso. Del Papel A Su Funcionamiento Web.
-----------------------------------
Descargado. Le echare un vistazo.

Saludos.


-----------------------------------
tincho
Domingo, 11 Junio 2017, 22:20

Re: Proyecto Web En Gambas Paso A Paso. Del Papel A Su Funcionamiento Web.
-----------------------------------
Vcir: Estoy mirando la base de datos sqlite que subiste. Creo que yo haré un ejemplo mas sencillo desde el punto de vista de la base de datos ya que mi interés es hacer una aplicación sencilla pero que me permita entender como funciona webform. Creo que hace una agenda de contactos muy sencilla.
Por su puesto tu has lo que te parezca oportuno ya que veo que controlas mas el tema, yo intentare seguirte.

Saludos.


-----------------------------------
vicr
Viernes, 16 Junio 2017, 22:47

Re: Proyecto Web En Gambas Paso A Paso. Del Papel A Su Funcionamiento Web.
-----------------------------------
Buenas tardes,

He tenido una semana con poco tiempo libre y poco he avanzado con el proyecto.
Veamos que tengo hasta ahora:
 [img]https://foro.gambas-es.org/files/images/2361/bocetos.jpg[/img] 

Es una foto de los bocetos de las vistas, ordenando los componentes dentro del sitio web.  Son 9 vistas dibujadas a mano, algunas en la sala de espera de los lugares a los que tuve que ir.

El miércoles y jueves quise comenzar a traspasarlo a una extensión de Firefox que no me funcionó.  Se llama "Pencil" y permite hacer bocetos de aplicaciones entregando imágenes de controles y figuras básicas.  Creo que el programa fue víctima de alguna actualización de Firefox, lo probé en el Firefox que tengo de Windows y también falló.  No me muestra la hoja en blanco para empezar a trabajar. 

Por lo que seguí dibujando las vistas a lápiz y papel.  Con eso tengo la estructura para organizar la estructura HTML y después podré entrar a trabajar en Gambas.

Mencionaba en otro hilo, a propósito del editor Atom, la existencia de un plugin llamado Emmet, antes llamado ZenCoding, que permite acelerar la escritura del HTML (y el CSS) gracias a abreviaturas que cargan porciones de códigos.  Este plugin se puede encontrar para casi todos los editores y yo lo he instalado en Netbeans, Geany, Gedit, etc.  (el etc son editores de Windows).  Por lo que con eso espero tener en pocas horas el HTML del sitio.

Saludos a todos...


-----------------------------------
mckaygerhard
Sabado, 17 Junio 2017, 01:17

Re: Proyecto Web En Gambas Paso A Paso. Del Papel A Su Funcionamiento Web.
-----------------------------------
en toda web, una cosa importante es que hay mucho reuso de componente o partes de codigo.. 

gambas carece de algo parecido a un framework, y eso complica el trabajo cuando uno realiza un sistema web con componente como foros junto a carrito de compra..

deberias emplear instancias de una libreria que conecte todo en la web..

yo comence con lo de la web, recomeindo montes el projecto en gitlab asi el codigo podras reusarlo empleando submodulos git.. o librerias gambas esta ultima es la recomendable si no sabes git

ejemplo todo lo que es conectar a la db y emplearla debe ser en una lib.. 

si usas sqlite tendras problemas de I/O por la concurrencia

EDITADO> UPDATE>

en las estructura de la DB enfocas mucho en usuarios y perfiles y muy poco en el sistem de mensages y foro...


