This is an old revision of the document!


CAS Themes

Référence

Arborescence Custom

Nous allons créer une arborescence de personnalisation des themes et view pour notre institut (Telecom & Management SudParis , simplifié ici en tmsp1)

Arbre FS

[root@cas2 cas-toolbox-3.3.5-3]# mkdir -p custom/webpages/themes/
[root@cas2 cas-toolbox-3.3.5-3]# cp -a update.esup/webpages/themes/esup custom/webpages/themes/
[root@cas2 cas-toolbox-3.3.5-3]# ls custom/webpages/themes/
esup
[root@cas2 cas-toolbox-3.3.5-3]# ls custom/webpages/themes/esup/
cas.css  images

Theme

CSS

Le theme est essentiellement le fichier css, ici ce sera tmsp1cas.css qui sera chargé par toutes les pages statiques (jsp) car elles inclus toutes top.jsp (et bottom.jsp)

[root@cas2 cas-toolbox-3.3.5-3]# grep css /root/cas-toolbox-3.3.5-3/update.esup/webpages/WEB-INF/view/jsp/default/ui/includes/top.jsp
		<style type="text/css" media="screen">@import '<spring:theme code="css" />'/**/;</style>

cette directive @import va chercher dans le config.properties le nom du theme parametré , ici tmsp1:

ce qui resultera au final en

<style type="text/css" media="screen">@import 'themes/tmsp1Theme/tmsp1cas.css'/**/;</style>

parametrage

Il faut indiquer a ant que nous allons utliser l'arborescence custom et les themes/views tmsp1:

[root@cas3 cas-toolbox-3.4.7-1]# grep custom build.properties
custom.path=${basedir}/custom
cas.custom.webpage.path=${custom.path}/webpages
cas.custom.source.path=${custom.path}/source
[root@cas3 cas-toolbox-3.4.7-1]# grep tmsp1 config.properties 
theme=tmsp1Theme
views=tmsp1Vue

Création

Préparer l'arborescence de custom

$ mkdir -p custom/webpages/WEB-INF/classes/

recopier le fichier esup.properties

[root@cas3 cas-toolbox-3.4.7-1]# cp /root/cas-toolbox-3.4.7-1/update.esup/webpages/WEB-INF/classes/esup.properties custom/webpages/WEB-INF/classes/tmsp1Theme.properties

Fichier tmsp1Theme.properties appel les css:

[root@cas3 cas-toolbox-3.4.7-1]# cat custom/webpages/WEB-INF/classes/tmsp1Theme.properties
mobile.custom.css.file=themes/tmsp1Theme/default-mobile-custom.css
standard.custom.css.file=themes/tmsp1Theme/cas.css

arborescence de theme tmsp1

[root@cas3 cas-toolbox-3.4.7-1]# mkdir custom/webpages/themes/tmsp1Theme

Recopie du modele de cas.css et ajout d'images, dont le logo“ qui est chargé dans la css !:

[root@cas3 cas-toolbox-3.4.7-1]# cp /root/cas-toolbox-3.4.7-1/update.esup/webpages/themes/esup/cas.css custom/webpages/themes/tmsp1Theme/

[root@cas3 cas-toolbox-3.4.7-1]# mkdir -p  custom/webpages/themes/tmsp1Theme/images

[root@cas3 cas-toolbox-3.4.7-1]# cp tmp/images/it.png custom/webpages/themes/tmsp1Theme/images

[root@cas3 cas-toolbox-3.4.7-1]# grep it.png custom/webpages/themes/tmsp1Theme/cas.css
	background:#fff url(images/it.png) no-repeat scroll 99% 32px;

Logo dans la section #header

views JSP

Les views sont des pages statique (jsp) visibles dans /webpages/WEB-INF/view/jsp/theme/ui

modele

On reprend l'ensemble des jsp du theme par defaut pour les adapter à notre site.

[root@cas2 cas-toolbox-3.3.5-3]# mkdir -p custom/webpages/WEB-INF/view/jsp/tmsp1Vues/ui

[root@cas2 cas-toolbox-3.3.5-3]# cp -a build/cas/WEB-INF/view/jsp/default/ui/* custom/webpages/WEB-INF/view/jsp/tmsp1Vues/ui/

[root@cas2 cas-toolbox-3.3.5-3]# ls -LtR custom/webpages/WEB-INF/view/jsp/tmsp1Vues/ui/
custom/webpages/WEB-INF/view/jsp/tmsp1Vues/ui/:
includes            casLoginView.jsp    casGenericSuccess.jsp  serviceErrorSsoView.jsp
casBlockedView.jsp  casConfirmView.jsp  casLogoutView.jsp      serviceErrorView.jsp

custom/webpages/WEB-INF/view/jsp/tmsp1Vues/ui/includes:
top.jsp  bottom.jsp

Attention a top.jsp qui peut-etre ecrasé par la manip ci-dessus, s'assurer qu'il contient bien l'appel spring au parametage du theme:

$ grep css custom/webpages/WEB-INF/view/jsp/tmsp1Vues/ui/includes/top.jsp 
            <style type="text/css" media="screen">@import '<spring:theme code="css" />'/**/;</style>

et non le top.jsp par defaut qui force l'usage de css/cas.css autrement tout notre travail de personnalisation echoue. Initialement

<style type=“text/css” media=“screen”>@import 'css/cas.css'/**/;</style>

Views tmsp1

Pour chaque jsp il faut definir son appel dans *theme_name*_views.properties

[root@cas2 cas-toolbox-3.3.5-3]# cp build/cas/WEB-INF/classes/default_views.properties custom/webpages/WEB-INF/classes/tmsp1Vues_views.properties

On remplace toute auccorence de “default” par “tmsp1Vues” ici, (cf vi ”:1,$s/default/tmsp1Vues/“)

[root@cas2 cas-toolbox-3.3.5-3]# cat custom/webpages/WEB-INF/classes/tmsp1Vues_views.properties
### Login view (/login)
casLoginView.(class)=org.springframework.web.servlet.view.JstlView
casLoginView.url=/WEB-INF/view/jsp/tmsp1Vues/ui/casLoginView.jsp

### Login confirmation view (logged in, warn=true)
casLoginConfirmView.(class)=org.springframework.web.servlet.view.JstlView
casLoginConfirmView.url=/WEB-INF/view/jsp/tmsp1Vues/ui/casConfirmView.jsp

### Logged-in view (logged in, no service provided)
casLoginGenericSuccessView.(class)=org.springframework.web.servlet.view.JstlView
casLoginGenericSuccessView.url=/WEB-INF/view/jsp/tmsp1Vues/ui/casGenericSuccess.jsp

### Logout view	(/logout)
casLogoutView.(class)=org.springframework.web.servlet.view.JstlView
casLogoutView.url=/WEB-INF/view/jsp/tmsp1Vues/ui/casLogoutView.jsp

### CAS error view
serviceErrorView.(class)=org.springframework.web.servlet.view.JstlView
serviceErrorView.url=/WEB-INF/view/jsp/tmsp1Vues/ui/serviceErrorView.jsp

viewServiceErrorView.(class)=org.springframework.web.servlet.view.JstlView
viewServiceErrorView.url=/WEB-INF/view/jsp/tmsp1Vues/ui/serviceErrorView.jsp

viewServiceSsoErrorView.(class)=org.springframework.web.servlet.view.JstlView
viewServiceSsoErrorView.url=/WEB-INF/view/jsp/tmsp1Vues/ui/serviceErrorSsoView.jsp

### Services Management Views
addServiceView.(class)=org.springframework.web.servlet.view.JstlView
addServiceView.url=/WEB-INF/view/jsp/services/add.jsp

editServiceView.(class)=org.springframework.web.servlet.view.JstlView
editServiceView.url=/WEB-INF/view/jsp/services/add.jsp

manageServiceView.(class)=org.springframework.web.servlet.view.JstlView
manageServiceView.url=/WEB-INF/view/jsp/services/manage.jsp

serviceLogoutView.(class)=org.springframework.web.servlet.view.JstlView
serviceLogoutView.url=/WEB-INF/view/jsp/services/logout.jsp

viewStatisticsView.(class)=org.springframework.web.servlet.view.JstlView
viewStatisticsView.url=/WEB-INF/view/jsp/services/viewStatistics.jsp

JSP Login

Adaptation de la page premiere de Login CAS; casLoginView.jsp

[root@cas2 cas-toolbox-3.3.5-3]# diff -ur custom/webpages/WEB-INF/view/jsp/tmsp1Vues/ui/casLoginView.jsp build/cas/WEB-INF/view/jsp/default/ui/casLoginView.jsp

Notament les images/drapeaux pour les langues et les logos en bas de pages:

<li class="first"><a href="login?${query}${not empty query ? '&' : ''}locale=en"title="English"><img src="themes/tmsp1Theme/images/flags/english.png" alt="English"></a></li>
...
                               <li class="last"><a href="${loginUrl}tr"title="Turkish"><img src="themes/tmsp1Theme/images/flags/turkey.png" alt="Turkish"></a>
                        </ul>
                </div>
        </div>
        <div id="IT"><a href="http://www.institut-telecom.fr/fr_accueil.html" title="Go to Institut T&#233;l&#233;com home page"><img id="logo" src="themes/tmsp1Theme/images/it.png" alt="Institut T&#233;l&#233;com" title="Go to Institut T&#233;l&#233;com home page" /></a></div>
        <div id="logos">
                <ul>
                        <li id="TSP"><a href="http://www.telecom-sudparis.eu/" title="Go to T&#233;l&#233;com SudParis home page"><img src="themes/tmsp1Theme/images/tsp.png" alt="T&#233;l&#233;com SudParis"></a></li>
                        <li id="TEM"><a href="http://www.telecom-em.eu/" title="Go to T&#233;l&#233;com &#201;cole de Management home page"><img src="themes/tmsp1Theme/images/tem.png" alt="T&#233;l&#233;com Ecole de Management"></a></li>
                </ul>
        </div>
</form:form>
<jsp:directive.include file="includes/bottom.jsp" />