Apartamento En Familia

Apartamento En Familia
Apartamento de playa para vacaciones. http://www.apartamentoenfamilia.es. Número registro HUTT-005768

viernes, 28 de mayo de 2010

¿Crear una aplicación eGroupWare?

Para crear un aplicación que podamos usar en nuestra web corportativa con eGroupWare nos tendremos que familiarizar con la API que nos ofrecen. Recordemos la definición de API:

Una interfaz de programación de aplicaciones o API (del inglés application programming interface) es el conjunto de funciones y procedimientos (o métodos, en la programación orientada a objetos) que ofrece cierta biblioteca para ser utilizado por otro software como una capa de abstracción. Usados generalmente en las bibliotecas.


(Fuente Wikipedia)

Para ello obtendremos información de su própia página web:


No es el fin de este documento enseñar a programar, ni tan siquiera explicar como funciona la API de eGroupWare. Sería muy complejo como para explicarlo en un solo artículo. Hoy nos vamos a conformar con saber crear un "Hola Mundo". También dejaremos de explicar como instalar la aplicación que vamos a crear, dado que eso ya se explicó en un artículo pasado:
Bien, para crear una aplicación eGroupWare lo que primero haremos es crear una estructura de directorios necesaria para la instalación y funcionamiento del programa. Creamos una carpeta y luego dentro creamos una serie de subcarpetas y un archivo index.php. La estructura de será la siguiente:


Pero eso no es todo. Dentro de las subcarpetas anteriores deberemos crear (en algunas de ellas), otras subcarpetas. En definitiva, la estructura en árbol de carpetas quedará así:


En donde vacation en este caso será el nombre de nuestra aplicación (podeis cambiarle el nombre para poner vuestro própio titulo de aplicación).

Así pues, siguiendo el ejemplo de una supuesta aplicación llamada "vacation", nos encontraremos con una estructura de directorios como la anterior y crearemos unos archivos (de momento vacios, que ya rellenaremos) y un icono png al que llamaremos navbar.png de tamaño aproximado de 32x32:

Dentro de vacation: index.php
Dentro de inc: class.uivacation.inc.php
Dentro de vacation/templates/default/images: navbar.png

El archivo class.uivacation.inc.php se llama de esta manera porque nuestra aplicacion se llama vacation. Así  pues, si nuestra aplicación se llamara ejemplo, nuestra carpeta raíz se llamaria ejemplo y el archivo de dentro de la carpeta inc se llamaría class.uiejemplo.inc.php.
La imagen navbar.png será el icono que veremos en nuestra barra de tareas y que nos servirá para ejecutar nuestra aplicación:


Bien, pues ahora ya tenemos la estructura. Ahora os explicaré un poco como funciona el engranaje de la aplicación y os será más facil entender porque luego escribiremos el código de una o otra manera. 
eGroupWare canaliza todas las acciones por un archivo que se llama index.php. De esa manera, cada click que hacemos va a pasar por él y luego redirige el flujo del programa hacia la aplicación en cuestión. El archivo index.php al que me refiero tendrá un aspecto en vuestro egroupware así:

http://egroupware.midominio.es/index.php

Cuando nosotros hagamos click en nuestro navbar.png que estará en la barra de iconos, eGroupWare le lanzará la petición a ese index.php, que hará las acciones necesarias y luego lo redirigirá (por decirlo de una manera muy simplista) a nuestro "vacation/index.php". Es decir, el index.php general del eGroupWare le pasa el control a nuestro index.php de programa. A su vez, nuestro index.php lo que hará es llamar a una función (que esta dentro de la clase class.uivacacion.inc.php). Es decir, le pasa el control a esa función (como os he dicho antes, mi intención no es enseñaros a programar, y por tanto, usaré un lenguaje impreciso pero espero que más fácil de entender que el própio de programación). Una vez el control le pasa a nuestra función, simplemente esta función se encargará de escribir "Hola Mundo" por la pantalla.

Pues manos a la obra:


index.php








class.uivacation.inc.php
















Como vemos, nuestro index.php redirije el flujo del programa a vacation.uivacation.vacationinterface, que es una función dentro de la clase class.uivacation. ¡Recordar que en cada sitio que veais vacation vosotros teneis que renombrarlo por vuestra própia aplicación!


Las lineas create_header y create_footer son las que "pintaran" la parte de arriba de egroupware y la parte de abajo. Es decir, la cabecera y el pie de la aplicación egroupware. En medio, entre la cabecera y el pie, estará nuestra aplicación, en nuestro caso, "Hola Mundo".

Pues bien, con ello ya tendreis escrito un programa en PHP integrado en vuestro entorno de trabajo colaborativo. 

Enlaces de interés:



8 comentarios:

  1. Muy buena la guia. tienes algo mas profundo?

    es que quiero hacer reportes personalizados de las actividades en pdf o word. sabes de alguna aplicacion que ya este hecha ? Gracias por el tuto. Roal

    ResponderEliminar
  2. Hola Roaldys,

    pues la verdad es que aplicaciones realizadas para egroupware no conozco mucho. Lo que si es verdad que aqui en la empresa ya hemos realizado 3 o 4 sin problemas. Una vez uno se ha documentado de la API de eGW y sabe como crear su hola mundo, luego ya es programar en php para realizar lo que necesites. Si lo que quieres es crear pdf's, te aconsejo que uses el php para llamar un cgi (o un bash, etc) en donde ese script realice todas las cosas que necesites dado unos parámetros que le envies mediante el php. En breve publicare como cambiar la contraseña en un servidor LDAP mediante una aplicación própia de egroupware.

    Saludos,

    ResponderEliminar
  3. Hola,

    Muy interesante, justo lo que necesitaba... información al respecto.

    Quiero crear una aplicación que me autentifique en una aplicacion externa y he empezado a practicar con el "Hola Mundo" y es cuando empiezan mis problemas... como hago para instalar la aplicacion "Hola Mundo"?

    Si intento acceder directamente al index.php me dice: Permission denied!

    Gracias.

    ResponderEliminar
  4. Perdon...

    Se me habia pasado....
    Estoy utilizando la versión 1.8.001 y en
    Administración --> Aplicaciones
    No existe ningún botón para añadir/editar.

    Saludos y gracias...

    ResponderEliminar
  5. Hola Daniel,

    gracias por tu interés en el blog. Espero que te sea de utilidad :D

    Lo que quieres saber ya esta explicado en otro artículo dentro de este blog:

    http://eithel-inside.blogspot.com/2010/05/instalar-una-aplicacion-en-egroupware.html

    Te recomiendo que le eches un vistazo ya que creo que te despejará esas dudas. Ya me diras alguna cosa!

    Saludos,

    ResponderEliminar
  6. Hola Eduardo,

    Gracias por tu respuesta.... la instalación de mi aplicación ha sido un éxito...

    Ahora quiero complicarlo un poco más:
    Lo que estoy intentando es llamar a una aplicación externa y mediante una pasarela que me haga la autentificación, para no tener que loguearme en la aplicación externa.

    Esto es lo que me dicen los propietarios de la aplicación externa:

    ----#####----
    Tal como hemos hablado, te comento cómo funciona la pasarela:
    * Deberéis colocar un enlace a vuestra aplicación Qualiteasy dentro de vuestro portal Web, que le pase como parámetro el login del usuario (normalmente es su dirección de correo) y el ID de sesión que se genera cuando accede al portal, por ejemplo:
    1.- http://localhost/qualiteasy_521/elink/?linkext_usr=login_usuario&linkext_sess=sesión_valida
    2.- Debéis crear una página que reciba esos dos parámetros como argumento y después de comprobar que la sesión del usuario devuelva:
    * Si la sesión es valida:
    true
    * Si la sesión no es valida:
    false

    3.- Por último solo falta acceder con un login de administrador a vuestra aplicación Qualiteasy y crear los usuarios que van a tener acceso a la aplicación, especificando en el campo login de cada usuario el mismo valor que reciba la aplicación por la pasarela: login_usuario (este valor debe ser único, es decir, no debe haber dos usuarios con el mismo login… para evitar problemas, se suele utilizar la dirección de correo electrónico de cada usuario, pero no es obligatorio).
    ----#####----

    La verdad es que voy un poco perdido, ya que la programación no es mi fuerte... y tu pagina ha sido la que más me ha aportado.

    Gracias de antemano.

    ResponderEliminar
  7. Hola Daniel!

    Cuando entras a egroupware, el usuario genera una identificación única. Esto lo verás mejor si miras la tabla de eGroupWare egw_access_log en tu MySQL. Verás un campo sessionid. Es tu id de sesión y en donde el login_usuario es el loginid de esa misma tabla.

    Resumiendo, te piden crear una página que reciba dos parámetros (login y sesión) y tendras que conectarte a la base de datos para comprobar si esa sesión y usuario son correctos (existen básicamente).

    ¿Cómo hacer eso?. Yo te recomendaria PHP, es bastante sencillo. No tengo artículos de programación, pero este enlace puede ser de ayuda:

    http://www.webestilo.com/php/php09b.phtml

    Saludos!

    ResponderEliminar
  8. Me has salvado la vida, estoy modificando una aplicación eGroupware y no sabía ni por dónde empezar, muchísimas gracias

    ResponderEliminar


That u don't know what you've got 'til it's gone