Actualités

[19/11/2014] Portails d'entreprise, la nouvelle version du livre blanc Smile

Qu'est-ce qu'un portail d'entreprise ? Quels sont ses fonctionnalités et domaines d'application ? Quelles sont les meilleures solutions du marché ? C'est à découvrir dans le livre blanc Smile !

[16/10/2014] L'édition 2014 du livre blanc de Smile : "Bonnes pratiques du web"

Smile publie une nouvelle version du livre blanc "Bonnes pratiques du web – Toutes les clés pour concevoir son site web". A télécharger gratuitement !

[14/10/2014] Smile vous donne RDV sur les forums de recrutement de 2014-2015 !

Vous aimez le web et les technologies de pointe, vous souhaitez mettre votre expertise au service du meilleur de l’open source ? Venez rencontrer Smile durant les prochains forums écoles de cette année 2014-2015.

Toutes les actualités picto
       

Vous avez besoin de mettre à jour votre Lecteur Flash Flash 7

Guillemet ouvrant l'actualité des solutions
et des technologies open source Guillemet fermant
picto

Hippo CMS, un CMS pensé pour s'intégrer avec vos applications

Hippo CMS est un CMS open source qui fait partie de la (petite) famille des CMS écrits en JAVA. Il a été créé par l’éditeur néerlandais OneHippo. Il est fortement utilisé dans les pays nordiques et tout particulièrement aux Pays-Bas.

This article in English

Le projet est très actif, il en est à sa version 7.5 JSR 170 et les releases sont fréquentes, environ une par trimestre.

Il possède l'essentiel des fonctionnalités que l'on peut attendre d'un CMS :

  • édition de modèle de document,
  • création de contenu,
  • multilinguisme,
  • templating,
  • workflow de publication,
  • multi site,
  • import/export des contenus,
  • édition de contenu en direct
  • ...

Le but de cet article étant de présenter les spécificités techniques du CMS dans le cadre de la réalisation d'un nouveau site, nous ne nous attarderons pas sur les aspects fonctionnels sur lesquels nous aurons l'occasion de revenir dans un prochain article.
Nous présentons les points essentiels de l'architecture d'Hippo CMS qui en font un produit particulièrement « developer-friendly ».

Architecture du produit

Packaging et résolution des dépendances

L'application s'appuie sur Maven pour réaliser toutes les tâches de construction et de gestion des dépendances sur le CMS.

HST

Le HST (Hippo Site Toolkit) est un outil qui permet de générer le squelette d'un nouveau projet en y incluant toutes les bibliothèques nécessaires au fonctionnement du CMS. Il génère un site minimaliste avec quelques exemples d'utilisation. C'est avec cet outil que la création d'un projet commence. Techniquement, c'est un archetype Maven.

Composants du CMS

Le CMS est découpé en 2 parties:

  • Le backend est le CMS à proprement parler, c'est ici que l'on trouve le repository (qui gère les contenus) ainsi que l'interface de paramétrage du CMS.
  • Le frontend est le site résultant du CMS, c'est ici que l'on édite notamment les templates de rendu du site. Le site est une application web sous forme de WAR.

Le backend et le frontend peuvent dialoguer de deux manières :

  • Accès indirect (mode par défaut) => la communication se fait via RMI, ce type de communication permet d'avoir le backend sur une autre machine que le frontend. Dans ce cas, le backend sera une application web séparée, déployable dans un conteneur de servlet.
  • Accès direct => la communication se fait directement via l'accès aux api du backend. Ce qui veut dire que le backend est intégré au frontend, ce qui permet d'avoir un accès plus rapide, mais nécessite un couplage fort entre les deux composants. Dans ce cas, le backend sera juste une dépendance Maven supplémentaire.

Le backend

Personnalisation de l'interface :

Le backend repose sur le framework de présentation orienté composant Apache Wicket. Ce choix permet de créer des composants visuels avec des fonctionnalités supplémentaires que l'on peut inclure dans l'interface déjà existante. Ici, il est possible de faire pratiquement tout ce que l'on veut dans la limite du framework.

Personnalisation des services :

Les services sont injectés dans l'application via Spring, ce qui permet d'utiliser de nombreuses API sans difficulté et de pouvoir surcharger les services déjà existants. De plus, toutes les fonctionnalités du backend sont « surchargeables » via le mécanisme de WAR overlay supporté par Maven. Ce mécanisme va permet de surcharger le cœur du backend sans avoir à le modifier directement.

Utilisation des standards :

Hippo CMS supporte la norme JSR 170 (qui permet la gestion des contenus de façon standardisée) et les JSR 168 et 286 assurant une compatibilité avec les portails JEE. Hippo CMS propose d'ailleurs une intégration simplifiée avec Apache jetspeed.

Le frontend

Gestion des templates et des composants :

Les templates par défaut sont définis en JSP, mais il est tout à fait possible d'en créer dans d'autres formats, tel que velocity ou freemarker en s'appuyant sur les api du HST. Il est aussi possible de définir des blocs appelés 'composants' qui pourront être intégrés dans plusieurs templates.

Intégration avec les frameworks :

Le HST contient des filtres permettant d'utiliser des frameworks de présentation couramment utilisés tel que Spring MVC, JSF, Wicket et Ruby. Par conséquent, les développeurs sont assez libres dans le choix des frameworks.

Intégration avec le repository JCR :

Il est possible d'interroger directement le repository JCR à partir du frontend en s'appuyant sur des apis utilitaires du HST, ce qui peut être très pratique si l'on veut utiliser le JCR pour d'autres fonctionnalités inhérentes au site.

Exposition de services :

Le HST fournit une API permettant d'exposer des services manipulant le repository JCR en REST. Ces services sont activables en modifiant certains paramètres dans la configuration Spring.

Sécurité et authentfication :

L'authentification est directement liée à celle du repository, il est possible de récupérer la session utilisateur du JCR dans le frontend via les API du HST. Le repository étant standard, l'authentification peut s'opérer via les standards habituels de sécurité tel que JAAS ou Spring security.
L'autorisation peut être configurée directement à partir du repository en ajoutant de nouveau nodes dans les bons chemins.

Personnalisation du menu de modification de contenu :

Il est possible, via des annotations, de définir des contenus personnalisables - en live - directement dans le frontend, et ainsi d'y associer des données paramétrables qui peuvent être de type texte, couleur, numérique et type de documents.

Récupération de la mise en forme des contenus :

Dans le backoffice il est possible de définir des layouts sur des types de documents, la mise en forme peut être récupérée par défaut sous forme de taglib, ce qui permet de garder la mise en forme effectuée côté backoffice dans son template.

Conclusion

Bien conçu techniquement, Hippo CMS offre de réels avantages pour l'intégration du besoin fonctionnel par les développeurs. Visiblement, les concepteurs de HippoCMS ont eu a coeur de respecter les standards, d'utiliser des outils éprouvés tels que Spring, JackRabbit et Maven, et de définir une architecture clair et extensible. Ces efforts facilitent une prise en main rapide par les développeurs. L'interface utilisateur est moins riche que dans certains autres produits mais elle reste ergonomique et fonctionnelle et inclut l'essentiel des fonctionnalités courantes attendues d'un bon CMS (éditions de type de document,création de contenu, liaison des contenus à un template, etc.). La roadmap du produit semble par ailleurs particulièrement dynamique et promet une belle suite.

Pour plus d'informations:

Site de l'éditeur:
http://www.onehippo.com/
Site de la communauté:
http://www.onehippo.org/
Fonctionnalités:
http://www.onehippo.com/en/products/cms/features
Démonstrations:
http://www.onehippo.com/en/products/cms/try
Documentation:
http://www.onehippo.org/cms7/index.html
Le wiki:
https://wiki.onehippo.com/display/CMS7/Welcome+to+the+Hippo+CMS+7+Wiki+pages

Nicolas Gapaillard
picto

Commentaires

Soyez la premiere personne à ajouter un commentaire sur cet article.
Ecrire un nouveau commentaire