====== Chainedit 3 ======
====== Création du projet à Partir de Esup-Blank ======
* [[https://www.esup-portail.org/wiki/pages/viewpage.action?pageId=100663444|Lien vers la doc Esup]]
* Le projet est maintenant sur le trunk du SVN de ChainEdit (27/08/2014)
* Le choix est d'utiliser l'archétype web-jsf-servlet
* Toute référence à esup-commons a été retirée (annonce fin du support esup-commons v2), le projet est donc maintenant un projet JSF 2 (View), Spring (Model/Controler), Hibernate / Jaxb (Accès bas et données XML)
====== Ajout d'une base de donnée embarquée ======
* A la place d'utiliser certains fichiers XML, il parait plus judicieux d'utiliser une base embarquée.
* [[http://hsqldb.org/|HSQL]]
* [[http://squirrel-sql.sourceforge.net/|Squirrel pour éditer la base]]
* [[http://www.liferay.com/community/wiki/-/wiki/Main/HSQLInspect|Tuto pour brancher Squirrel sur HSQL]]
* Modifier les accès base : chainedit3-web-servlet/src/main/resources/properties/default.properties -> hibernate.connection.jdbc.url
* User par défaut : admin / admin
* [[http://docs.jboss.org/hibernate/validator/4.3/reference/en-US/html_single/|Annotation hibernate pour la validation]]
====== Analyse pour la base ======
[[https://launchpad.net/analysesi/+download|Analyse SI pour faire le MCD car pas d'outil UML fonctionnel]]
====== Lancement de l'application sous Tomcat ======
* [[http://stackoverflow.com/questions/6210757/java-lang-classnotfoundexception-org-springframework-web-context-contextloaderl|En cas d'erreur java.lang.ClassNotFoundException: org.springframework.web.context.request.RequestContextListener]]
* Surprise sur le CAS, il faut modifier le Web.xml : CAS Authentication Filter avec /* dans URL-pattern
* Inspiration [[https://www.esup-portail.org/wiki/pages/viewpage.action?pageId=282099720|EsupDematEC]]
====== Upload des fichiers ======
Dans le fichier server.XML du tomcat préciser :
Et dans le Web.xml de l'application il faut préciser la taille maxi des fichiers :
.......
52428800
52428800
0
====== Mise en place de Spring-Security ======
* A priori plus besoin des classes dans domain.services.auth
* Ni du domain-services-auth.xml
* Ni de la propriété liée dans default.properties et config.properties : auth.bean
* Ni de l'import du auth.xml dans l'applicationContext.xml
* Ni des filtres CAS dans le WEB.xml
* La documentation : [[http://docs.spring.io/spring-security/site/docs/3.2.5.RELEASE/reference/htmlsingle/|Spring-Security]]
* Documentation pour le module CAS : [[http://docs.spring.io/spring-security/site/docs/3.0.x/reference/cas.html|Paramétrage]]
* Un tuto sur la personnalisation de l'authentification [[http://www.cleancode.co.nz/blog/937/customization-spring-security-authentication|tuto UserDetailService]]
* Il y a 2 modes d'authentification livrés avec Chainedit : CAS et MANUAL (saisie d'un login/password). Il y a donc 2 fichiers application-context-security-cas et un application-context-security-manual. Il n'est pas possible de le passer en paramètre. Il faut donc indiquer le bon nom de fichier dans le import du application-context-security.
*
====== Mise en place de Spring-Ldap ======
* Pour l'accès aux utilisateur dans la page de gestion d'un utilisateur.
* Remplace le LdapService de Esup-commons, la configuration est conservée à l'identique (config.properties) par contre le LDAP.XML est mofifié pour utiliser Spring-LDAP.
====== Zip Zip ======
[[https://truezip.java.net/|TrueZip pour l'édition des fichiers zip]]
====== Intégration i18n ======
* Le RessourceBundle de Spring est utilisé (appelé msgs en Spring). Un objet ResourceBundleBean (appelé msg en Spring) a été ajouté pour permettre de transmettre les messages aux JSF sans avoir à re-déclarer les bundles dans la partie View JSF (faces-config). Ainsi tous les bundles passent par Spring.
* Les fichiers custom ne doivent pas être utilisés, ils sont à laisser au client pour surcharger les chaines de messages livrés avec l'application.
* Ajout d'un éditeur de bundles [[http://marketplace.eclipse.org/content/jspresso-translation|JExpresso Translation]] qui permet d'éditer les variables directement depuis la classe où il est utilisé
* Ajout d'un éditeur de bundles [[http://marketplace.eclipse.org/content/properties-editor|Properties Editor]] coloration du contenu et gestion de l'Unicode pour un fichier
====== Spring JPA Repositories ======
* [[http://docs.spring.io/spring-data/jpa/docs/1.7.0.RELEASE/reference/html/|Spring data repositories]]
* [[http://junit.org/|Junit]]
* [[http://docs.jboss.org/hibernate/orm/4.0/manual/en-US/html/queryhql.html|Aide HQL Hibernate]]
====== JSF ======
* [[http://www.tutorialspoint.com/jsf/index.htm|Tuto JSF]]
* [[http://www.mkyong.com/jsf2/jsf-2-templating-with-facelets-example/|Templating JSF]]
* [[http://stackoverflow.com/questions/18808823/primefaces-how-to-make-the-theme-dynamic|Tenir compte des préférence de l'utilisateur concernant son thème (Skin dans ChainEdit)]]
* [[http://jqueryui.com/themeroller/|Liste des icones Primefaces]]
* [[http://www.primefaces.org/showcase/|Showcase Primefaces]]
* [[http://www.primefaces.org/showcase/ui/panel/layout/full.xhtml|Layout primefaces]]
* Un fichier prime_override.css a été ajouté pour permettre de surcharger les classes css standard de prime
* [[http://omnifaces.org/|Compléments à JSF Omnifaces]]
L'éditeur CKEditor fourni avec Primefaces ne peut pas être customisé simplement. Le choix est fait d'intégrer directement l'éditeur :
* [[http://ckeditor.com/|CKEditor 4]] 1 éditeur maximum accepté sur le même écran.
* [[http://ckeditor.com/addon/mathjax|Plugin mathjax pour latex]] dans fr.js et en.js //button: Math// a été changé en //button : Latex// pour éviter les confusions avec le plugin MathMl
* [[https://github.com/matismasters/ckeditor_mathml/tree/master/vendor/assets/javascripts/ckeditor|Plugin mathjax modifié pour gérer du mathml : renommé en mathjaxmathml]]
* [[https://sourcesup.renater.fr/wiki/chainedit|Wiki ChainEdit sourcesup sur CKEditor]]
====== Bean validation ======
* Il est possible depuis Java EE 6 d'annoter les beans pour ajouter des contraintes sur leurs valeurs (JSR 303) : [[http://beanvalidation.org/1.1/spec/|spécification Bean Validation 1.1]]
* [[http://hibernate.org/validator/|Hibernate Validator]] spécifie la JSR 349 qui est plus complète : [[https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/]]
* [[http://commons.apache.org/proper/commons-lang/|Apache Commons Lang]] pour faire des validation simple et d'autres utilitaires sur les Beans (equals, hashcode, ..)
====== Imports dans ChainEdit 3 ======
[[chainedit3:imports|Les imports]]
====== Preview dans ChainEdit 3 ======
[[chainedit3:preview|Les chartes preview]]