Logo geekia

Migrando y rediseñando el que es y será nuestro último drupal

Uno de los últimos proyectos en el que hemos trabajado ha sido la migración de un marketplace ( más o menos 😛 ) bajo drupal con una estructura un poco liosa y un theme bastante antiguo.

Debido a que algunos de los módulos creados y usados todavía no se habían migrado a drupal 8, pensamos que la opción más correcta era seguir con drupal 7, especialmente también por tiempos y presupuesto 😉

En principio, el cliente solo nos solicitó pequeñas cambios estéticos y de funcionalidad pero comprabando como estaba el site, nuestra propuesta fue un rediseño completo, tanto del theme como del propio funcionamiento.

Antes del rediseño visual nos encargamos de unificar y simplificar la arquitectura de contenidos, basándonos principalmente en el nodo anuncio, que es el principal del site.

Diseño antiguo

Diseño antiguo

El cliente nos comentaba que las llamadas para modificar algo del anuncio o para darlo de alta eran constantes, así que, una vez unificados los diferentes tipos de contenido en uno, se preparó para que su creación no fuera tan “liosa”.

Usamos el módulo create and reg para que cuando se creara un anuncio, se cree tambien un usuario ya que muchos de los problemas de la anterior versión eran que tenían que dar de alta antes un usuario para poder generar despues el anuncio.

Además, para crear el anuncio, eliminamos todos los posibles distractores para que el usuario se centrara exclusivamente en eso.

El resultado hay sido una mejora considerable en el tiempo a la hora de crear un anuncio y la minimización de posibles errores.

Una vez habiamos resuelto la creación del anuncio, lo demás ha sido trabajar en base a él, creando las vistas y demás.

 

Nuevo diseño

Nuevo diseño

Para la migración de los anuncios antiguos al nuevo sitio no hemos usado migrate, hemos creado un pequeño módulo para ello ya que además de migrar necesitabamos crear nuevos campos y rellenarlos con información dependiente de otros campos.
“Poco despues hemos descubierto que se podría haber hecho tambien con migrate :(”

Sin embargo, para la otra parte de la web, el foro, si la hemos utilazado y ha sido bastante sencilla su implementación.

En el nuevo diseño visual, se han mantenido los colores oscuros y se ha basado en el framework Foundation si, somos de los raros que no usan Bootstrap para el front-end pero nos hemos adaptado a trabajar con él y de momento cubre la mayoría de nuestras necesidades.

La home se ha unificado con la vista anuncios y se ha mejorado la presentación de los mismos.

Listado antiguo

Nueva home y listado

 

Otro de los puntos creados han sido los nuevos banners, menos intrusivos e incorporados al propio grid del theme, y los destacados en un carrusel en la parte superior y dentro de cada anuncio en la parte inferior del mismo.

Pero, como antes comentaba, sin duda alguna el cambio visual en el nodo anuncio ha sido el más completo.

Se ha dado más importancia a las imágenes, se ha mejorado la validación, se ha incorporado un sistema de favoritos y se han taxonomizado los anuncios para un mejor resultado en la búsqueda, la cual tambien ha sido mejorada, entre otras muchas más cosas.

Antigua vs Nueva

Internamente, el panel del usuario para poder gestionar sus anuncios también se ha diseñado desde cero así como el del administrador.

En definitiva, lo que iba a ser un pequeño trabajo de theming se convirtió en un proyecto completo, el cual está funcionando bastante bien.

pd: no se cual ha sido el equipo de desarrollo anterior, pero con mensajes como éste en el código, me han ganado, eso es comentar y lo demás tontería.

codigo


Drupal 8, mucho más que corazón

He de reconocerlo… me encanta Drupal y su actual rama 8 mucho más 😛

Hace unos meses escribía que estamos usando Drupal 8 en Geekia como parte del desarrollo de una App. Esta última semana decidí actualizar a la versión 0.40 del framework que usamos, React Native, ya que necesitaba una serie de módulos que solo funcionaban a partir de esta versión. Aunque se puede actualizar a través de CLI con reactnativegitupgrade, no paraba de darme errores con algunos de los módulos. Así que la mejor forma ha sido con una instalación limpia. Salvo algunos “problemillas”, con fácil solución, creo que ha sido lo más sencillo.

Una mejora notable ha sido el menor consumo en la App, de momento los esfuerzos se centran en la versión iOS, así como una mejor compatibilidad con algunos módulos.
"dependencies": {
"base-64": "^0.1.0",
"react": "15.4.2",
"react-native": "^0.40.0",
"react-native-checkbox-field": "^1.1.2",
"react-native-datepicker": "^1.4.3",
"react-native-extended-stylesheet": "^0.3.1",
"react-native-keyboard-aware-scroll-view": "^0.2.6",
"react-native-linear-gradient": "^2.0.0",
"react-native-maps": "^0.13.0",
"react-native-push-notification": "^2.2.1",
"react-native-qr-barcode": "^0.6.4",
"react-native-radio-buttons": "^0.14.0",
"react-native-router-flux": "^3.37.0",
"react-native-swiper": "^1.5.4",
"react-native-vector-icons": "^4.0.0",
"react-redux": "^5.0.2",
"redux": "^3.6.0",
"redux-thunk": "^2.2.0"
}

Pero, donde más se ha notado el cambio, ha sido con Drupal ya que a partir de ahora y gracias al módulo Push Notifications, va a ser tambien el encargado del envio de push a los dispositivos en vez de parse que fue con el que comenzamos.

De esta forma Drupal pasa a ser también el “cerebro” de la App ya que, además de gestionar los usuarios, las ofertas y la geoposición de los establecimientos, será también el encargado del envio de notificaciones a los dispositivos (rules)

Ésta va a ser la primera App en la que Geekia se ha encargado de todo el diseño, desarrollo, lógica de funcionamiento…


Lo que hemos hecho en 2016 (técnicamente hablando)

Si hace unos días en geekia publicabamos lo que habíamos hecho durante el pasado año, ahora voy a intentar hacer lo mismo pero desde un punto de vista más técnico.

Este año, como anteriores 😉 el desarrollo principal ha sido bajo drupal, si bien todavía la mayor parte ha sido con la versión 7, por fin hemos podido preparar un par de proyectos en su nueva versión 8. Una API para alimentar una futura aplicación y una web para una clínica neurológica de Almería. Ya solo con este trabajo, nos ha convencido para tenerlo en cuenta para futuros proyectos durante este año.

WordPress, aunque hemos preparado un sitio, todavía no es un CMS con el que nos encontremos muy a gusto, ojo, sigo pensando que es la mejor opción para un blog, de echo, éste está funcionando con él. Eso sí, Genesis nos ha enamorado 😉

En cuanto a frameworks PHP seguimos con PhalconPHP y Symfony y aunque nos gustaría empezar con algún otro, por ejemplo Laravel, todavía estamos más que servidos con éstos.

Además este año también ha sido el cambio en la versión de PHP, ya estamos con la 7.0, aunque en producción todavía estamos simultaneandola con la versión 5.6 ya que tenemos varios proyectos que no funcionan con la nueva versión.

Para front-end seguimos con Foundation y de momento no pensamos en cambiarlo, aunque no tenga ya soporte para IE 8 😉

Además, durante este año hemos “subido” en desarrollos javascript, para ello hemos usado frameworks como Sencha (manteniendo varios simuladores), continuado con angularjs en el proyecto de cambia tu mundo para Cáritas y empezando con reactjs para la UXSpain 2016 y react native para una próxima aplicación.

En definitiva un año en lo técnico completito, espero que este nuevo año que acabamos de empezar nos permita seguir aprendiendo y mejorando en todo y algo que he echado mucho en falta ha sido la de compartir y cooperar un poco más con la comunidad 🙁

Por cierto, Feliz Año nuevo… un poco atrasado.


Drupal 8, el mejor corazón para un desarrollo

Hace unos meses empezamos a trabajar con una empresa que tiene tiendas por toda España, la mayor parte del trabajo es y ha sido relacionado con el marketing, tanto online como offline pero ahora ha tocado la parte técnica, más concretamente en “mejorar” su programa de fidelización.

Actualmente cuentan con un programa de bonos los cuales se reparten en unas fechas determinadas del año. Para romper la estacionalidad decidimos crear unos bonos que se “consumirán” a través de una App. Salvo una serie de condiciones que nos exigió el cliente, algunas que no compartimos, nos aceptaron la creación de la app.

Limpiando para mejorar

El primer problema con el que nos encontramos fue su ERP, aunque bastante potente, estaba un poco limitado para extraer datos, además de que necesitaba urgentemente  un saneo de los mismos. Estamos hablando de una bbdd de aproximadamente 500.000 usuarios, la gran mayoría recurrentes y repartidos por mucha parte de la geografía española. Esa “limpieza” se ha estado llevando a cabo durante estos últimos meses y gracias a la empresa desarrolladora del ERP se ha podido mejorar su conexión con el exterior, con una serie de servicios web tanto para la gestión de usuarios, como para el consumo de bonos.

El corazón de la app

Una vez estaba resuelta la conexión, comenzamos con la creación de una API que “alimentaría” la propia app. Para ello decidimos usar… a ver si lo adivinas… pues si, drupal y más concretamente pensamos en la versión 8 ya que su desarrollo potenciando la omnicanalidad lo hace el más adecuado para ello, además de servirnos como banco de pruebas para el uso de esta nueva versión de nuestro CMS favorito 😉

El desarrollo lo comenzamos con la versión 8.0.0, pero actualmente lo hemos migrado a la 8.2.0, con todo lo que ello ha conllevado. Todos los servicios se han segurizado con OAuth 2.0, además del propio basic_auth del core de drupal. Desde el CMS se gestionan las ofertas que se mostrarán en la app así como la conexión con el gestor de notificaciones, para ello hemos usado parse, y nos está dando muy buenos resultados.

Otra de las funcionalidades que se gestionan desde aquí, es la geoposición de las distintas tiendas que dispone el cliente, mediante la creación de un nodo específico y su correspondiente service.

Drupal 8 nos ha permitido integrar a través de su API REST, todo lo necesario para poder servir los datos de forma correcta, sencilla y segura.

…y por fin, la app

Para el desarrollo de la app hemos optado por un desarrollo híbrido y, aunque tenemos experiencia ya en Ionic, hemos elegido React-Native, a pesar de que solo hemos hecho un desarrollo (en React), su flexibilidad y potencia nos hizo creer que era la mejor opción. De momento, y salvo el cambio tan rápido de versiones que están teniendo, lo cual no está del todo mal, pensamos que la opción ha sido la más acertada.

Durante esta fase, todavía en desarrollo, se ha tenido que “experimentar” muchísimo, tanto que daría para un nuevo post, eso si, por si os puede interesar los módulos que estoy usando son estos:
"dependencies": {
"base-64": "^0.1.0",
"immutable": "^3.8.1",
"parse": "^1.9.2",
"react": "^15.3.2",
"react-native": "^0.34.1",
"react-native-checkbox-field": "^1.0.8",
"react-native-datepicker": "^1.3.2",
"react-native-extended-stylesheet": "^0.2.0",
"react-native-linear-gradient": "^1.5.4",
"react-native-maps": "^0.8.2",
"react-native-nav": "^1.1.4",
"react-native-push-notification": "^2.1.1",
"react-native-qr-barcode": "^0.6.4",
"react-native-radio-buttons": "^0.11.0",
"react-native-remote-push": "^1.0.3",
"react-native-router-flux": "^3.26.16",
"react-native-side-menu": "^0.19.0",
"react-native-swiper": "^1.4.5",
"react-native-vector-icons": "^2.1.0",
"react-redux": "^4.4.5",
"redux": "^3.6.0",
"redux-thunk": "^2.0.1"
}

De ellos, sin duda alguna el que más me ha parecido “magia” ha sido redux… cómo he podido estar desarrollando sin conocer esta maravilla 😉

Para esta parte del desarrollo cambiamos del IDE (o editor) que estábamos usando hasta ahora, NetBeans, por Atom con Nuclide y ya se ha convertido en nuestro editor de código de cabecera… tranquilos, SublimeText todavía no lo he desinstalado y lo sigo usando para otros menesteres 😉

El soporte que tiene Nuclide de React-Native es sin duda alguna mejor que en otros editores, lógico por una parte ya que ha sido desarrollado también por los mismos, Facebook

Una vez todo funcione junto, el flujo de la app deberá ser como esto:

Flujo de la app

 

Esperemos poder presentar el desarrollo muy pronto 😉


Los libros digitales en enseñanza en Andalucia, o que bien se lo montan las editoriales

En Andalucía el año pasado empezó el programa de gratuidad de libros, una acción muy buena por parte de la junta para alumnos de primaria y ESO.

El alumnado de enseñanza obligatoria en los centros docentes andaluces sostenidos con fondos públicos puede disponer gratuitamente de los correspondientes libros de texto. Dichos libros serán propiedad de la Administración educativa y, una vez concluido el curso escolar, permanecerán en el centro docente para que puedan ser utilizados por otros alumnos o alumnas en el curso siguiente. Todos los libros de texto serán renovados cada cuatro cursos escolares.

Algo que cuando yo iba al colegio ya hacía por mi cuenta…bueno más bien por cuenta de mi madre 😛 buscar libros de los cursos siguientes entre amigos y vecinos con niños mayores que yo. Algunas veces encontrándome algunas “sorpresas” dentro de los libros del tipo “quiero a tal…”, “te comería…” y eso que yo recuerde en libros de 6º de EGB.

Sociedad EGB

Libro de sociales de EGB

Salvo excepciones, eran casos muy aislados, solíamos cuidar bastante el material y los libros podían pasar por más de 4 manos, algunos incluso teniendo que “tunear” esas portadas tan características, claro está, si no se cambiaba el libro.

En mi colegio por ejemplo, solo pasó una vez, cambiamos de Lengua Santillana (el rojo) a Lengua Anaya.

Vale, me centro, lo que quería hablar es de lo que me ha pasado este año.

Tengo una hija que ya está en 4º y el año pasado empezamos con los libros. El libro está totalmente subvencionado por la junta con el programa de cheques. Los libros son de la editorial SM y tienen una licencia de uso como libro electrónico.

El libro electrónico no deja de ser un PDF del propio libro en papel, pero es cierto que tiene una serie de recursos interactivos que lo hacen bastante ameno a nuestros hijos. Problemas, prácticas, más historias y una autoevaluación son algunas de las cosas que podemos encontrarnos en ellos.

Este año, ya nos ha tocado usar los libros que otro alumno usó el año anterior. Concretamente, los recursos que más usamos el año pasado fueron los de matemáticas, y este año no iba ser menos ( que conste que se le dan bien las mates 😛 ) así que cogí el libro y lo di de alta.

Genial, me acepta la licencia, lo único es que lo marca como Free ¿?¿? El libro está pero… no aparecen los recursos interactivos. Que raro, si se han reiniciado las licencias, de hecho, en el panel de mis libros ya no aparecen los del año pasado.

Matematicas

Ingenuo de mi, pienso que puede ser un error y me pongo en contacto con soporte, esta es la respuesta:

Buenas tardes, 

Le informamos que la licencia impresa en los libros de texto, es un obsequio de la editorial para nuestros usuarios de libros en papel. Esta licencia es válida durante un curso escolar y en su versión Premium, esto es, con todos los recursos y herramientas desarrollados por la editorial para enriquecer el libro digital.
 
En el caso de Andalucía, como los libros se socializan durante 4 años, los alumnos podrán disfrutar también durante ese periodo del libro digital, pero en versión Free, es decir, sin enriquecer.
 
No obstante, si desea disponer de los recursos extras del libro, ponemos a su disposición nuestra web www.smsavia.com, en la que podrá adquirir una licencia Premium.
Si quiero volver a tener los recursos, o bien tengo la suerte de que el libro que me toca no lo han dado de alta, o sino me toca pagar por una licencia Premium, o bien tendré que buscar en the pirate bay 😉
Son listos estos de las editoriales (nótese el sarcasmo)

No me aclaro

Hace unos meses (ya casi un año) migré este blog a Drupal 8, en principio solo para “practicar” con el nuevo CMS. Me gusta, y cada vez más, esta versión de Drupal y está haciendo que sea más “elegante” a la hora de programar…pues sí, también se puede ser elegante cuando se programa 😉 pero, y tal y como ponía en el blog, creo que WP es más correcto para este cometido, el de blog.

Con ello no quiero decir que Drupal no sirva para esto, al contrario, pero creo que si se trata “solo” de un blog, WP es más que suficiente.

Ahora vendrán los WP lovers a darme “caña” y decirme que con este CMS también se pueden crear más cosas a parte de un blog…

Entonces, ¿qué co#o hago con el otro blog? 😛