Drupal

Consumir webservice HTTPS con autenticación usando Drupal

WebService sobre HTTP
Integrar e interconectar sistemas haciendo uso de servicios web hoy en dia no es una novedad, el término webservice es un recurso que a diario lo tenemos en mente para consumir datos externos, muchos de ellos de naturaleza financiera o privada, de acuerdo a este precedente quienes nos proporcionan este tipo de conexión tienen la sensatez y la precaución de asegurar estos servicios para evitar ser víctimas de hackers o infiltraciones no autorizadas, para lo cual tienen una infraestructura implementada con protocolos seguros, certificados digitales, mapeo de IP publica y credenciales de acceso como usuario y clave.
 
En la presente publicación voy a compartir mi conocimiento haciendo uso de estos servicios web integrados con un sitio web construido con una plataforma sólida y flexible como es Drupal, para lo cual voy a partir de que ya se tiene el conocimiento de la creación de un módulo personalizado utilizando el módulo webservice client (wsclient) que nos permite consumir SOAP o REST, en mi caso voy a hablar sobre la integración de servicios SOAP.
 
además es fundamental que quienes presten estos servicios brinden la seguridad necesaria mucho más cuando las operaciones son financieras, a través de esta publicación voy a compartir mi conocimiento acerca de como integrar estos servicios con Drupal, para lo cual necesitaremos del módulo: wsclient
 
El escenario es un webservice SOAP con autenticación y uso de certificado con protocolo https (protocolo seguro).
 
En la página de módulo existe la documentación para el consumo de webservice con autenticación sin embargo en mi caso no me funcionó así que decidí invertir un poco de tiempo googleando y llegue hasta la solución que voy a compartir.

//   Webservice Electronic Money call

  $ip = '182.214.100.45';
  $port = '8443';
  $context = stream_context_create(array(
      'ssl' => array(
                'local_cert' => '<path_to_cert>/unifi1.pem',
            )
   ));


  $service = new WSClientServiceDescription();
  $service->settings['options'] = array(
       'login' => 'usuario',
       'password' => 'clave',
       'stream_context' => $context,
       'trace' => TRUE,
     );
  $service->name = 'myservice';
  $service->label = 'My Service';
  $service->url = 'https://'. $ip . ':' . $port .'/enlace/services/MTSService?wsdl';
  $service->type = 'soap';
try {
    $service->endpoint()->initializeMetaData();
    $services[$service->name] = $service;
  }
  catch (WSClientException $e) {
    watchdog('wsclient', $e->__toString());
  }
  return $services;
}
 
Secciones: 

Autenticando Drupal con Open LDAP

LDAP

Cuando pensamos en implementar soluciones con drupal para empresas tipo intranet, como utilizar OpenAtrium u otro tipo de Sitios en donde tenemos la interacción de muchos usuarios, siempre se nos viene a la mente la posibilidad de autenticar contra un servidor de directorios y no tener que ingresar cientos de usuarios uno por uno en nuestro sitio web, para cuando suceden estos casos los que estamos en el mundo del software libre siempre nos viene a la mente OpenLDAP.
Con LDAP nosotros podemos crear usuarios, con varios atributos los mismos que nos sirve para diferentes necesidades, como el autenticar usuarios de correo, usuarios de sistemas de recaudación y entre otras cosas autenticar nuestros usuarios de intranet, como es el caso para el cual servirá esta publicación.

Requerimientos

Para interactuar nuestra autenticación, solo necesitamos del módulo LDAP, que lo podemos encontrar en http://drupal.org/project/ldap, tengo la idea de que tenemos claro como descargar e instalar este módulo dentro de nuestra instalación Drupal, este viene con varios submodulos por decirlo de alguna manera como(server, user module, autentication, authorization).
Necesitaremos de un árbol de directorio basado en OpenLdap.
Otra de los requerimientos que me sirvió fue el utilizar el administrador de ldap basado en php (phpldapadmin), eso con el fin de identificar los nombres de cada campo que voy a mapear hacia drupal.

Configurando el módulo LDAP

Ahora lo que vamos a hacer es activar los módulos:

  • LDAP Server
  • LDAP User Module
  • LDAP Autentication
  • LDAP Authorization

Una vez que hemos activado estos módulos procederemos a configurarlos bajo el siguiente path: admin/config/people/ldap
En el path anterior encontraremos la configuración de ldap basado en pestañas entre las más importantes son: Server, User, Autentication

Pestañas del módulo

Servers

Desde mi punto de vista, esta es la parte más sensible de la configuración y en la cual pondremos mayor énfasis para que se puedan guiar con facilidad.
A través de esta sección agregaremos una nueva configuración para el server LDAP, para lo cual necesitaremos un nombre del sistema y un nombre de para etiqueta, podemos elegir cualquier texto, para nuestro caso utilizaré “ldapserver” para ambos casos y otros parámetros que enumerare a continuación

  • Tipo de Servidor: OpenLdap
  • LDAP Server: 192.168.10.100 (ip donde se encuentra el servidor ldap)
  • Puerto: 389

También encontraremos casilleros de verificación para “Uses TLS” y “Follow LDAP Referreal” los cuales para este caso dejaremos sin marcar.
Luego procedemos a configurar el el Binding Method, para lo cual podemos elegir la opción:
Anonymous Bind for search, then Bind with Users Credentials: Searches for user dn then uses user's entered credentials to bind to LDAP.
Una de las partes importantes viene “LDAP User to Drupal User Relationship” en donde debemos configurar:
Base DNs for LDAP users, groups, and other entries, en donde proporcionaremos información de nuestro DN que lo tenemos definido en ldap, en mi caso sería:
ou=usuarios, dc=drwsoluciones, dc=net
Entre otros parámetros de esta sección definimos el mapeo de campos como:

  • AuthName attribute en el cual para mi caso es: uid
  • AccountName attribute: lo dejamos en blanco
  • Email attribute: mail

Estos campos de uid y mail son tomados de los que tengan definidos dentro de su directorio LDAP.
Hasta aquí finalizamos con la configuración de la sección del Server.

User

Durante la configuración de usuario elegimos las siguientes configuraciones:

  • Manual Drupal Account Creation and Updates:
  • Reject manual creation of Drupal accounts that conflict with LDAP Accounts. This only applies to accounts created on user logon; Account conflicts can still be generated
  • Basic Provisioning to Drupal Account Settings

    • En esta caso les apareceŕa el nombre de la conexión que se definió en el server, debe escogerla o seleccionarla.
  • Drupal Account Provisioning Events
  • Create or Synch to Drupal user on successful authentication with LDAP credentials. (Requires LDAP Authentication module).
  • Create or Synch to Drupal user anytime a Drupal user account is created or updated. Requires a server with binding method of "Service Account Bind" or "Anonymous
  • Existing Drupal User Account Conflict
  • Associate Drupal account with the LDAP entry. This option is useful for creating accounts and assigning roles before an LDAP user authenticates.
  • Application of Drupal Account settings to LDAP Authenticated Users *
  • Account creation settings at /admin/config/people/accounts/settings do not affect "LDAP Associated" Drupal accounts.
  • Action to perform on Drupal account that no longer have a corresponding LDAP entry
  • Perform no action, but email list of orphaned accounts. (All the other options will send email summaries also.)

Con esto finalizamos nuestra configuración del usuario.

Autentication

  • Allowable Authentications
  • Mixed mode. Drupal authentication is tried first. On failure, LDAP authentication is performed.
  • Authentication LDAP Server Configurations
  • Elegimos la que hemos definido en nuestro servidor en el paso 1

Las otras secciones puede ser “sal al gusto” :)
Y hasta aquí ya tenemos configurado nuestro servidor con conexión a LDAP

Pruebas de conexión

Para realizar las pruebas de conexión, podemos hacerlo a través de la sección de usuario, en donde disponemos de “Test LDAP User Configuration”, en donde podemos proveer un uid de lo que hemos configurado anteriormente dentro del LDAP.
Dentro de la configuración del modo de testeo podemos elegir que ejecute una acción: “Execute Action”, esta puede ser “On create or synch to Drupal user when successfully authenticated with LDAP credentials. (Requires LDAP Authentication module).”

Probando la autenticación

Una vez que hemos pasado la configuración y pruebas, podemos loguearnos contra nuestro servidor LDAP desde el formulario de autenticación de Drupal, si recibimos un mensaje que hubo problema creado el usuario, quizás es porque llenaste el dato dentro de la sección del server: AuthName, borralo y vuelve a intentarlo.

Espero les sea de utilidad, cualquier comentario o sugerencia es bienvenida.

 

Secciones: 

Consumiendo webservices con drupal desde el código

webservice

Hablar de webservices es sin duda hablar de versatilidad e integración de sistemas para interactuar en el intercambio y operación sobre los datos.

 

Y una de las ventajas de Drupal es su API de desarrollo que nos facilita el trabajo de manera impresionante, para que reinventar la rueda.

Hace un tiempo en mi trabajo surgió la necesidad de implementar un servicio de consulta que consuma un webservice generado en java (jboss) desde el sitio web institucional (drupal), para lo cual lo primero fue googlear un buen rato y encontrar un ejemplo de webservice implementado con reglas(rules) desde la interfaz de usuario https://www.drupal.org/node/1114308, sin embargo esto conllevaria a limitarse un poco para dar formato a los datos obtenidos y a exponer datos sensibles como datos de acceso al webservice.
Los módulos de las cuales hablaré en esta publicación son:

Como lo había mencionado anteriormente, lo primero que hice fue googlear un rato y proponer una solución de la cual tenía documentación, sin embargo para reutilizar esta configuración en otro sitio, era necesario llevar sus configuraciones, lo que sin duda es algo tedioso, para solventar este percance lo más obvio dirían los expertos, sería desarrollar un módulo personalizado y tener el control de todo, desde utilización de operaciones del webservice, así como en la presentación de los datos.
Puntualmente en este post no hablaré sobre la creación de un módulo personalizado, pero si lo que respecta a la utilización del webservice desde código.

LLamando al hook_default_wsclient_service

Lo primero que debemos hacer es invocar el HOOK dentro nuestro módulo personalizado, como lo veremos en el siguiente ejemplo:
/**
 * Implements hook_default_wsclient_service().
 */
function taxes_default_wsclient_service() {  

  // Taxes from another system (SOAP)
  $ip = '192.168.1.20'; // IP from webservice source
  $port = '8080';  
  
  $service = new WSClientServiceDescription();
  $service->name = 'taxes';
  $service->label = 'Taxes getting from another system';
  $service->url = 'http://' . $ip . ':'. $port . '/paymentPlatform?wsdl';
  $service->type = 'soap';
      
  try {
    $service->endpoint()->initializeMetaData();
    $services[$service->name] = $service;
  }
  catch (WSClientException $e) {
    watchdog('wsclient', $e->__toString());
  }  
  return $services;

  // Here we can call more webservices

}

Con el código que he mostrado nos permite realizar la conexión al webservice, es decir apuntar al ip, puerto y el nombre del webservice con su extensión que en este caso es wsdl, con esto ya hemos hecho lo que normalmente se haría desde la interfaz de usuario
http://www.misitio.com/admin/config/services/wsclient
El código lo he tomado de los ejemplos que proporciona el propio módulo wsclient, he cambiado los parametros que me sirven para mi escenario.

Operaciones del webservice

Para hacer uso de nuestro webservice podemos referirnos al README.txt del propio módulo en donde tiene la documentación para desarrolladores al final.

Usage for developers
--------------------

* You can create web service descriptions in code, see for example
   wsclient_examples.module
* You can easily invoke web services by loading the description and executing
   an operation (the operation name can be used a dynamic method name):

     $service = wsclient_service_load('google');
     $result = $service->translate('Hallo Welt', 'de|en');

Aqui claramente nos especifica que podemos referirnos al wsclient_examples.module para crear un web service description (lo que vimos en el apartado anterior).
Para invocar a uno de los web services que pudimos haber definido en el apartado anterior, lo podemos hacer así:

$service = wsclient_service_load('taxes');

Aquí debemos asegurarnos que el nombre que el enviamos a esta función es el mismo que definimos en el apartado anterior como $service->name = 'taxes' es decir el nombre del webservices, ya que como mencioné puede haber más de uno.
Luego podemos hace uso de las operaciones como se muestra en este caso:

$result = $service->taxesquery('1100232587');

En esta variable $result nos proporcionará los datos devueltos contenido en un arreglo, para ver como esta estructurado este arreglo, podemos hacer uso de la función dsm, que es propia del módulo devel.
dsm($result);

Tipos de datos y operaciones del webservices

Para conocer en detalle como fuciona cada operacion y que parametros requeiere podemos hacer un seguimiento desde la parte grafica http://www.misitio.com/admin/config/services/wsclient desde aqui podremos ver, las operaciones y los tipos de datos que requiere cada uno para su funcionamiento.

Espero les haya servido este pequeño tutorial y cualquier comentario o sugerencia es bienvenido.
 

Secciones: 

Primeros pasos en aplicaciones con Facebook

Facebook

Hoy en dia generar aplicaciones para facebook es una área que ha tenido mucha demanda, varios negocios promocionan sus productos y servicios a través de este sitio web, por lo que que sus necesidades van más allá de publicar fotografías y recibir “me gusta” dentro de su página.
A través del presente post voy a documentar mi inicio en este entorno de aplicaciones para facebook, también incluiré una solución a un error muy común al iniciar a desarrollar.

Encontrar el camino para iniciarse como desarrollador facebook es fácil, lo único que necesitas es disponer de una cuenta en esta plataforma y luego activar tu ambiente de desarrollador (https://developers.facebook.com) para lo cual será validada tu cuenta con tu numero de celular o con una tarjeta de crédito.

Existen diferentes ambientes para desarrollador de facebook, ya sea para PHP que es lo puntual que voy a documentar en este post, sin embargo también es necesario mencionar ambientes como IOS, Java, Android entre otros, para todos estos ambientes necesitas descargar estas librerías para disponer del API de desarrollo.

Dentro de las aplicaciones de facebook se contempla las plataformas, lo que tiene que ver con Aplicaciones en Facebook, Sitios Web entre otras, estas son las que hablaré ligeramente aqui.
En drupal podemos hacer lo que se conoce aplicaciones para “Sitios Web” para lo cual necesitaremos el modulo facebook (http://drupal.org/project/fb) en donde nos facilitará una interfaz en la cual introduciremos los datos indispensables de conexión a facebook como son:

  • Identificador de la aplicación
  • Codigo secreto de la aplicación

Más sobre este módulo lo documentare más adelante en otro post.

Aplicaciones en Facebook (Apps on Facebook)

Para generar aplicaciones facebook lo que se conoce como Canvas Pages podemos hacerlo siguiendo este tutorial proporcionado por la propia pagina https://developers.facebook.com/docs/php/howto/profilewithgraphapi/ para lo cual necesitas disponer de tu dominio un certificado de seguridad es decir https, a muchos como me paso a mi, puede sucitarles un problema como que la linea en ese script $facebook->getUser(); siempre les da como resultado 0, para lo cual deberian autenticarse en la aplicacion, pero dentro de ese script se debe agregar lineas adicionales como las siguientes.
Definir el alcance de permisos que tendrá la aplicación, para esto debemos seguir los pasos que se indica en este enlace.
https://developers.facebook.com/docs/games/canvas/canvas-tutorial#authenticate

La diferencia radica en las líneas al llamar la función getLoginUrl()
“If the player ID is 0 then create the Login URL. This Login URL uses the Login Dialog to prompt the player to authorize the game. We then direct the player to this URL in order to authenticate them. An important note: since on Canvas our game is loaded into an iframe, we can't do a server side redirect here as we need to redirect the top frame. For this reason, we implement a client side redirect in JavaScript with top.location.”

$loginUrl = $facebook->getLoginUrl(array(
        'scope' => $scope,
        'redirect_uri' => $app_url,
        ));
print('<script> top.location.href=\'' . $loginUrl . '\'</script>');

Luego de eso veremos que nuestras primeras líneas que ya funcionan.

Espero les sirva este pequeño tutorial.
 

Secciones: 
Tags: 

Drupal Picchu 2014

DrupalPicchu2014

 

La comunidad Drupal en todo latinoamérica se viene fortaleciendo cada día más, un evento tras otro, sin duda esta edición del Drupal Picchu no es la excepción, la cual se desarrolló en la ciudad de Cusco en Perú, el mismo que se convierte en otro precedente para futuros eventos y fortaleza de nuestra comunidad latina.

La planificación

Durante su planificación se contó con la participación, de la mayor cantidad de voluntarios de diferentes países, personas con una “bandera flameante” de entusiasmo para llevar a cabo un evento sin precedentes.
Nick Vidal(@nickvidal) un activista e impulsor del crecimiento y fortaleza de la comunidad Latina de Drupal, posteo la primera convocatoria el 26 de septiembre de 2012, la cual recibió la mejor de las acogidas dentro de la comunidad, conjuntamente con Fernando Paredes (@develcuy), Nancy Contreras (@JoyitaViajera) y Bonifacio Chambilla como organizadores principales del evento, invirtieron muchas horas de trabajo y esfuerzo para lograr llevar a cabo este fabuloso encuentro drupalero.

Mi arribo a Cusco fue a través de Guayaquil - Lima - Cusco, tuve que hacer una escala de diez horas en el aeropuerto de Lima para partir al siguiente dia entre las primeras horas a Cusco, el vuelo tuvo un ligero retraso, mi salud con un pequeño percance, pero a pesar de todo mantenía mi entusiasmo por llegar a reunirme con mis viejos y nuevos amigos drupaleros.

El evento

El evento empezó el día lunes 20 de enero con la agenda de talleres en diferentes niveles, cada taller contaba con un periodo de tiempo de dos horas, desde el primer día se podía evidenciar el trabajo de calidad que habían realizado los diferentes equipos de organización, el material gráfico era de primera, así como badget, camisetas (polos), guías, refrescos, programas impresos, publicidad, entre otras cosas.

Inauguracion
El siguiente día fue la inauguración en la cual se contó con la participación de la directora ejecutiva de la Asociación Drupal, Holly Ross (@drupalross), la intervención de las autoridades de la Universidad Andina del Cusco representada por el Rector de la Universidad dando por inaugurado el Drupal Picchu 2014.
Así fueron transcurriendo los días con varias conferencias el martes y miércoles, durante el cual he aprendido cosas que no sabía de Drupal 7 y su sucesor Drupal 8, conferencias y foros acerca de mejores prácticas, modelos de negocio, entornos de desarrollo, comunidad, organizaciones sin fines de lucro, educación entre otros.

El miércoles en la tarde alrededor de las 5pm se desarrolló la clausura del evento, con el agradecimiento a todos quienes sumaron su granito de arena para realizar este evento, así mismo se obsequió algunos presentes a los ponentes, los participantes también obtuvieron un libro a través de un sorteo, contamos con la grabación de un programa de televisión local, lo cual fue muy divertido, posteriormente se dejó abierta la invitación para los Drupal Devs durante el jueves y viernes de 9 a 1pm, coordinada por Marco Villegas.

El turismo

Druplicon

Desde el viernes partimos a las míticas ruinas de Machu Picchu para lo cual nos trasladamos en un interesante viaje en tren - Inca Rail, el viaje duró alrededor de una hora con treinta minutos desde Ollanta y Tambo hacia Aguas Calientes en donde pasariamos la noche.
El sábado desde las 4:30am emprendimos el camino a Machu Picchu con desafío de escalar el Wayna Picchu, debido a un derrumbre tuvimos que subir varios niveles de gradas hasta llegar a la estación de control, pero esto no fue un impedimento para poner a prueba nuestras capacidades físicas al momento de subir por mucho tiempo a la cima del Wayna Picchu, partimos alrededor de 32 personas de diferentes países, aqui escuchamos un poco de historia y admiramos la belleza del lugar.
Degustamos de la variedad de comidas y bebidas típicas de la localidad, la cual fue muy buena, también visitamos algunos centros de entretenimiento (Papachos, El templo en Cusco).

Los amigos

Como en todo evento Drupalero se amplía mi círculo de amigos, esta vez conocer a Victor Kane fue algo sorprendente, ver su capacidad física e intelectual sin dejar de lado su buen humor fue una grata experiencia, también la oportunidad de conocer a Carlos Ospina, Ivan Campana, Mauricio, Ariel, Vanessa, Renato, Sebas, Joao entre otros.
Además el reencuentro con viejos amigos como Nancy, Fernando, Nick Vidal, Luis Dueñas, Molly Byrnes, Joaquin Bravo, Liz Zabala, Erick Aguayo, Alberto Arancibia, Leandro Nunes, Eduardo Telaya, David Jeyachandran, Luis Curo, Cristian Mamani.
Conocer en persona a Holly Ross durante una grande y deliciosa cena con los líderes de las comunidades latinas para hablar sobre un posible DrupalCon en Latinoamérica.

Es bueno pertenecer a una comunidad sólida y que va fortaleciéndose cada día más, también aprovechamos la oportunidad de establecer una de las primeras reuniones de la comunidad Drupal Ecuador conjuntamente con Ivan Campana, Eric Aguayo y mi persona, hablando sobre los desafíos y tareas que nos esperan para fortalecer y sacar en adelante nuestra comunidad Nacional y local.

Las fotos

Las fotos como en todo evento han sido subidas en FLICKR y estan indexadas con dos hashtags #DrupalPicchu y #dlatino

Enlaces

Me llevo una experiencia grata de poder compartir este evento junto a personas muy profesionales, pero sobretodo muy humanas y amigables, que es un condimento especial dentro de la comunidad Latina de Drupal.

Llegas por la herramienta, te quedas por la comunidad.

Secciones: 

Analogías para enseñar Drupal

Analogías con DrupalA inicio de julio empecé realizando la capacitación a un alumno de un instituto de la ciudad de Loja (Ecuador), esta persona no sabía mucho de lo que es Drupal y es así que llegó hasta mí, sin embargo su entusiasmo por aprender era superada por su premura del tiempo para entregar un proyecto de dicho centro de estudios.

En esta publicación voy a escribir un poco sobre lo que se refiere a la creación de contenido, tipos de contenido y vistas, partiendo la analogía que he descrito en el título de esta publicación (contenido, formularios y consultas), justamente para cubrir algunas preguntas y dudas que nacieron de este alumno en particular.

Para todos quienes están empezando en el mundo de Drupal, voy a darles ciertas instancias para que se puedan ubicar en tiempo y espacio con los conceptos y términos de este CMS.
Como sabemos al momento de terminar de instalar Drupal disponemos de la creación de dos tipos de contenido (Artículos, Páginas) es decir contenido dinámico y contenido estático respectivamente, pero como siempre pasa se quiere un poco más de esos tipos de contenido, ahí es donde podemos crear nuevos “formularios” para poder ingresar este tipo de contenido.

Agregando “formularios”

Mi alumno de la capacitación durante todo el desarrollo tenía su idea centrada en la creación de formularios en PHP para agregar información de docentes, sin embargo me “canse” de hablar sobre los Tipos de Contenido de Drupal, esto me llevó a realizar la analogía de los “formularios” para que pueda llegar la idea mucho más clara.

En Drupal podemos crear “formularios” lo que se conoce como Tipos de contenido, esto lo encontramos en el menú principal de administración bajo “Estructura”.
Es aquí donde podemos definir estos “formularios” para que se puedan llenar con nuevos datos o contenido, dentro de esta sección se puede encontrar la manera de agregar campos, pero estos campos necesitan tener un tipo definido de almacenamiento, es decir TEXTO, IMÁGENES, ENLACES, FECHAS y disponemos de las facilidades para hacerlo a través del CCK (Kit de creación de contenido) que viene incorporado en drupal.

Definiendo “Consultas”

Al hablar de Vistas en primera instancia y en segunda nadie entiende a un usuario Drupal, pero es muy fácil tomar el concepto de consultas, es decir:

SELECT titulo, imagen, fecha FROM tabla WHERE tipo=docentes and publicado=si order by title desc

Pues bueno igual aqui se aplica el concepto de vistas, pero desde el lenguaje natural a través de un entorno gráfico.
Cuando definimos una VISTA (view) necesitamos mostrar ciertos campos, lo que serian los campos en la instrucción SQL, también necesitamos definir los FILTROS, lo mismo que hacemos en la sección WHERE en SQL.
Partiendo de esta analogía tenemos un panorama mucho más claro acerca de lo que se refieren a las VISTAS de forma introductoria en drupal.

Espero que les sirva de ayuda a quienes inician en el mundo Drupal, no es una guia muy avanzada pero tengo la impresión que les dará un poco más de claridad en su concepto.

Saludos Cordiales.

Los comentarios y sugerencias son bienvenidos.

Secciones: 

Reorganizando módulos Drupal

Reorganizar módulosAl iniciar en el mundo de sistemas de administración de contenido (CMS) tiendes a buscar como darle mayor funcionalidad a estos, a través de módulos, componentes o plugins dependiendo el caso del CMS.

Este caso en particular les voy a hablar acerca de mi primera experiencia con Drupal, esto fue con la  versión 5.x, en la queria darle mayor funcionalidad, como es el caso de instalar un módulo para disponer de un editor WYSIWYG (What you See is What you Get), he aqui mi primer error que quizá lo cometieron muchos, luego avance a las 6.x con algunas correcciones y finalmente a la 7.x, sin embargo es necesario recalcar los errores.
Error 1:
Instalar el módulo bajo <raíz del sitio>/modules
Error 2:
Instalar el módulo bajo <raíz del sitio>/sites/all/modules
Bueno según como vamos aprendiendo y desarrollando en drupal, te encuentras el caso como que es difícil organizar todos los módulos en un solo sitio, luego conoces la posibilidad de poder ordenarlos, pero OOPS ya tienes montado un sitio con los errores que te acabo de mencionar, pero hey tranquilo, se puede solucionar.

Los expertos recomiendan

Cuando implementas un sitio en Drupal 7.x, sabes que a través de esta plataforma puedes crecer en desarrollo, ya que es un framework y que cuenta con un API, investigando un poco más notas que esta funcionalidad del API busca los módulos en los directorios que te mencione y sus subdirectorios, e igual funciona, sin embargo esta no es la mejor manera.

Los expertos recomiendan hacerlo de la siguiente manera y te lo explicaré porqué.
¿Qué pasa si incluyes todos los módulos en modules como yo lo hice, es decir en el directorio de la raíz?
Pues bien pasa que no sabrás cuales son los módulos que descargaste adicionales y cuales vienen con el core de Drupal es decir con el paquete que descarga drupal-7.x.tar.gz.

Algo parecido sucede cuando los cargas en <raíz del sitio>/sites/all/modules
Qué pasa si creaste un módulo personalizado para tu empresa, pero alguien más debe darle soporte, creo que si te vas de la empresa deberían llamarte para saber en donde esta o lo colocaste.

Pues bien he aquí algunas buenas prácticas que recomiendan los expertos
crear dentro de <raiz del sitio>/sites/all/modules los siguientes directorios:

  • contrib este directorio contendrá todos los módulos adicionales que hayas descargado de Internet
  • features este directorio contendrá lo que se llama caracteristicas importadas desde otro sitio con el módulo features
  • custom este directorio estará disponible para los módulos a la medida o personalizados para la empresa en donde funciona el sitio

Reorganizando

Esperanza la tuya, aún puedes corregirlo y a través de esta sección te lo voy a decir
Lo primero que debo aclarar es que esta guia esta basada en un entorno Linux, instalado el paquete drush (drupal shell).
Lo primero que debes hacer es lo siguiente.

  • Ejecutar drush dl registry_rebuild
  • Luego ordenar los módulos en los directorios(moverlos) que te he mencionado en la recomendación de expertos.(contrib, features, custom).
  • Finalmente ejecutar el comando drush rr

Con esto ya tienes reorganizado tus módulos en los directorios adecuados.

Espero les sirva de ayuda.

Comentarios y sugerencias son bienvenidos.

Secciones: 
Tags: 

FLISOL Loja 2013

Afiche del eventoDesde el 2005 se viene desarrollando el FLISOL en la ciudad de Loja, han transcurrido 8 años y se mantiene viva la filosofía de compartir y distribuir libremente software.
En este año se realizó el 27 de abril en las instalaciones del Instituto Técnico Sudamericano bajo la coordinación general de Diego Saavedra (@Statick_ds), contando con demostraciones, exposiciones y conferencias.
Desde las 9am hasta las 17 horas tuvo lugar este importante evento de difusión el cual es totalmente gratuito, se pudo observar demostraciones sobre:

  • Blender
  • Drupal
  • Seguridad
  • Ofimática
  • Diseño Gráfico
  • Programación
  • Otros

La comunidad de software libre de Loja (Loxalibre) ha venido fortaleciendo e impulsando la evolución y mejora del evento, este año no podía ser la excepción, gracias al arduo trabajo de muchas personas y en especial de Jhon Calderón (@machutec) se logró establecer una buena plataforma para videoconferencias (BigBlueButton) la cual funcionó perfectamente, las conferencias de Loja estaban disponibles a nivel mundial bajo la dirección http://streaming.flisol.ec, sin duda es muy gratificante contar con este tipo de prestaciones.

DRW Soluciones, también participó con un espacio para demostraciones dentro del FLISOL 2013 mostrando el potencial de Drupal como herramienta de desarrollo e implementación de Sitios Web, y sobre todo obsequiando stickers proporcionados por la Drupal Association, además hablando sobre el futuro de Drupal con su nueva versión(D8) que está a punto de lanzarse en pocos meses, invitamos a los participantes a estar atentos a los talleres planificados para los próximos meses que serán dictados por  nuestra empresa y que serán promocionados en nuestra página y redes sociales.

Flisol 2013

Hemos podido notar que en Loja el aprendizaje Drupal es escaso, ya que muchas de las personas que se acercaron a nuestro lugar de demostraciones siempre hacia referencia o énfasis al CMS Joomla.

Esperamos que cada año se consolide la participación de entusiastas del software libre en Loja y dispongamos de una sociedad con herramientas de libre distribución en diferentes áreas de negocio y gobierno.

Espero sus comentarios.

Secciones: 
Tags: 

Drupal y el desarrollo de Código Abierto

En estos días cercanos a realizarse el noveno FLISOL es muy conveniente e importante compartir esta información para toda la comunidad Open Source en Loja y el mundo, a pocos días de haberse realizado el Drupal Summit Latino - Loja 2013, el cual es un evento para difundir y fortalecer el conocimiento de la herramienta Drupal, podremos ver más adelante cuan activa es la comunidad Drupalera a nivel mundial.

A través de twitter me llegó el artículo acerca de Drupal el cual titulaba: “Drupal entre las grandes comunidades de Open Source” en el mismo destaca los resultados presentados por la empresa de Software Black Duck mostrados durante la 7ma entrega anual de “The future open Source”, en él se puede enfatizar más adelante "Llegas por la herramienta y te quedas por la comunidad".
Dentro de la presentación del estudio del “Futuro del código abierto” la agenda contiene 6 puntos:

  • Quien realizó el estudio
  • Adopción y desarrollo
  • Innovación
  • Comunidad y cultura
  • Openomics
  • Conclusiones

No voy a resumir cada uno de ellos sin embargo sí lo haré con los que llamaron mi atención, empezando con los aportes de instituciones de diferente procedencia, las cuales contribuyen a la comunidad open source de la siguiente manera:

  • 48% de los aportes a la comunidad open source son de EMPRESAS
  • 52% son de otros sectores que no representan empresas

Es necesario recalcar que las instituciones y empresas están promoviendo el uso del open source, entre ellas los gobiernos son quienes lideran el camino y sobresalen con un 35.1%, a continuación detallaré como es el ámbito de instituciones que han adoptado el uso el open source

Porcentaje de adopción del Open Source
Sector Porcentaje
Gobierno 35.1%
Medicina 15.2%
Medios 13%
Financiero 8.9%
Otros 8%
Automotriz 7.5%
Retail 5.9%
Energía 4.2%
Aeroespacial 2.2%

El uso de open source es debido a factores como: Características competitivas, Seguridad, Costo de propiedad, Habilidades internas
Otra de las peculiaridades que llamó mi atención es lo que respecta a Innovación, en donde se puede ver un término común entre los desarrolladores Drupal, lo que respecta a al utilización de API: Open Source + Open Api = Era de la innovación
Apertura y crecimiento son las claves para el futuro crecimiento

Compromiso con la comunidad Open Source

Si te pones a inspeccionar minuciosamente aspectos como:

  • Reducción de su propio desarrollo y costos de mantenimiento
  • Atraer y retener talento
  • Influencia de proyectos

Se puede notar que existen muchos motivos para comprometerse con la comunidad de código abierto, como se puede observar el la imagen anterior Drupal es uno de las comunidades más destacadas, por no decir la más destacada en la contribución y crecimiento del Open Source, en otras palabras La innovación está aquí para quedarse.

Influencia de Drupal en la comunidad Open Source

Sin duda hoy en día los negocios enfrentan varios problemas pero que se podrán resolver en base al uso del Open Source, problemas como:

  • Bajo Costo
  • Almacenamiento
  • Interoperabilidad
  • Cloud
  • Seguridad

Espero les haya gustado este interesante artículo que ha sido resumido de la presentación de la empresa de Software Black Duck y que la pueden visualizar en slideshare con el título “Future of Open Source”.

Todos sus comentarios son bienvenidos y sigamos adelante con el Open Source y con el Software Libre.

Secciones: 

Loja drupalizada

Foto del evento

Durante el lapso del 13 al 15 de marzo de 2013 se cumplió el evento trascendental en Ecuador y en especial en la ciudad de Loja, se realizó el Drupal Summit Latino en las instalaciones de la Universidad Técnica Particular de Loja (Centro de convenciones), un evento que tuvo lugar en Lima (Perú) 2011 y en Guadalajara (Mexico) 2012.

Loja drupalizada, para quienes no tenían conocimiento sobre Drupal, ahora saben que es una tecnología de software libre que brinda muchas prestaciones para desarrollar e implementar Sitios Web de toda magnitud, desde blogs hasta sitios especializados y de gran demanda de tráfico como: diarios, redes sociales, gubernamentales, luego del evento con toda convicción me atrevería a decir que ya conocen quien es Dries Buytaert y tambien con que tecnología estan montados sitios como:

Contar con más de 15 representantes a nivel de Latinoamérica, el caribe, estados unidos y Europa es una gran satisfacción a nivel de convocatoria de la comunidad Latina de Drupal (Argentina, Chile, Brasil, Perú, Colombia, Panamá, Guatemala, México, Nicaragua, Honduras, EE.UU, Alemania, Francia, Australia). La atmósfera de comunidad nos embargaba de emoción tanto a conferencistas organizadores y participantes, compartir conocimientos, sembrar la semilla para que surjan nuevas comunidades a nivel de Ecuador es muy gratificante.

Empecé mi discurso de inauguración citando la frase de la Madre Teresa de Calcuta: "A veces sentimos que lo que hacemos es tan solo una gota en el mar, pero el mar sería menos si le faltara esa gota."

Fue impresionante ver la concurrencia que tuvo el evento desde todas partes del Ecuador y los vecinos de Perú y Colombia. el conocimiento compartido durante el evento a los participantes sin duda motivó a muchas personas a emprender sus negocios y estilo de vida alrededor del desarrollo Web, Drupal proporciona estas funcionalidades de potenciar las expectativas de crecimiento y producción.

Ámbito de conferencias

Los 16 talleres y alrededor de 50+ conferencias cubrieron muchos temas que son de interés general para todos quienes desarrollamos e implementamos soluciones Web:

  • Diseño Responsivo
  • Rendimiento
  • Web Semántica
  • Site building
  • Drush
  • Emprendimiento
  • Redes Sociales
  • SEO
  • Gestión de Proyectos
  • Educación
  • Usabilidad
  • Buenas Prácticas
  • Comercio Electrónico 

Conclusiones finales

El evento concluyó con las mejores expectativas y tiempo compartido entre organizadores y conferencistas, compartiendo espacios agradables para intercambiar conocimiento de costumbres, metodologías, lenguaje. Se desarrolló además con éxito el "Harlam Shake" y el BoF acerca de planeación del evento Drupal Picchu a desarrollarse en enero del 2014 en Machu Picchu (Perú), todos quienes participaron de este espacio vislumbraron con gran optimismo el desarrollo de un mega evento en latinoamérica que sin duda apoyaremos desde nuestro alcance.

Una foto que quedará para la historia de los Drupal Summit Latino es que Loja contó con la mayor participación de mujeres que sus antecesores.

Chicas Drupal

Agradecimientos

Quiero extender mi especial agradecimiento a:

  • Rommel Gutierrez
  • Iliana Burguan
  • Rommel Torres
  • Fernando Paredes
  • Nancy Contreras
  • Marlon Maldonado
  • Diego Saavedra
  • Carlos Betancourt
  • Willan Betancourt
  • Mi familia

Tambien entre los colaboradores quiero hacer un especial agradecimiento a Samantha Cornejo por todo su apoyo incondicional para el evento y en especial para conmigo, por ser una excelente persona.

Quienes colaboraron antes, durante y luego del evento, no me es posible nombrar a todos a quienes quisiera mencionar pero sin duda esta en mi mente.

Barbacoa Drupal

Agradecimiento especial a nuestros patrocinadores:

Finalice mi intervención en la clausura del evento citando la frase de Ben Johnson e igual la voy a utilizar para finalizar esta publicación:

“El conocimiento es como el fuego, que primero debe ser encendido por algún agente externo, pero que después se propaga por sí solo"

Secciones: