Apparence du portail
L'apparence du portail peut être modifiée en agissant sur trois partie :
- Les images : icones, bandeau, etc.
- La feuille de styles (CSS) : couleurs, police, disposition des zones
- La feuille de rendu (XSL) : pour des modification de structure HTML
Le portail fonctionne avec un mécanisme de thème (skin en anglais), on peut avoir plusieurs thèmes disponibles dans le portail et l'utilisateur peut choisir celui qu'il désire utiliser.
Les images et la CSS sont inclues dans le thème.
Les thèmes
Ils se trouvent dans le dossier uPortal/webpages/media/org/jasig/portal/layout/tab-column/xhtml-theme
Le dossier contenant le thème doit avoir le nom du thème.
Par exemple le thème esup de base dans le package : uPortal/webpages/media/org/jasig/portal/layout/tab-column/xhtml-theme/esup
Le thème se décompose comme suit :
[SKIN_NAME]
- controls : images des boutons de contrôle dans la XSL (agrandir, supprimer un canal, etc. )
- institutional : images et logos autres du bandeau institutionnel
- navigation : images servant a la navigation (onglet, liste de canaux, etc.)
- skin
[SKIN_NAME].css : styles utilisés par le thème
[SKIN_NAME]_thumb.gif : image miniature utilisé lors du choix du thème
Découpage de la page
Voici le découpage en zones de la page HTML de base (pour vous faciliter la compréhension des styles)
- BODY
- portal-page-header
- logo
- welcome (bandeau de lien en haut a droite)
- tabs (les onglets)
- portal-page-body
- preference-items (bandeau des préférences)
- columns-table
- colonne_sAAA
- portal-page-header
-
-
-
-
- portlet_nXXX
- toolbar_nXXX
- portletContent_nXXX
- portlet_nYYY
- toolbar_nYYY
- portletContent_nYYY
- portlet_nXXX
- colonne_sBBB
- portlet_nZZZ
- toolbar_nZZZ
- portletContent_nZZZ
- portlet_nZZZ
-
-
- portal-page-footer
- pied de page
-
Déclarer le thème
Pour que le portail connaisse le thème il faut le déclarer dans le fichier Portal/webpages/media/org/jasig/portal/layout/tab-column/xhtml-theme/skinList.xml
<?xml version="1.0"?>
<skins>
<skin>
<skin>[SKIN_NAME]</skin>
<skin-name>[NOM AFFICHE A L'UTILISATEUR]</skin-name>
<skin-description>[DESCRIPTION AFFICHE A L'UTILISATEUR]</skin-description>
</skin>
Définir les thèmes par défaut
Une fois que votre thème est déclaré dans le portail et que vous l'avez testé avec un compte utilisateur via le menu préférence, il est
utile de pouvoir l'appliquer par défaut à un profil d'utilisateur. Cela permettra par exemple d'avoir un thème différent pour les utilisateurs
anonymes et connectés.
Pour ce faire il faut modifier la base de données du portail.
Si l'on se penche sur la table UP_SS_THEME :
SELECT * FROM UP_SS_THEME
on obtient la valeur du SS_ID du thème esup "ESUP DLM XHTML Theme", qui est utilisé par défaut dans Esup-Portail, par la suite la valeur de ce SS_ID sera désignée par [ESUP_THEME_SS_ID].
Pour modifier le thème par défaut :
Ici on va utiliser comme thème par défaut (pour les utilisateurs anonymes et authentifiés) le thème que nous avons créé précédemment
Supposons que votre thème se nomme [SKIN_NAME] alors il faut lancer la requête suivante :
UPDATE UP_SS_THEME_PARM SET PARAM_DEFAULT_VAL = '[SKIN_NAME]' WHERE UP_SS_THEME_PARM.SS_ID =[ESUP_THEME_SS_ID] AND UP_SS_THEME_PARM.PARAM_NAME = 'skin' AND UP_SS_THEME_PARM.TYPE =1;
On modifie ici le skin pour le thème ESUP, dont le SS_ID a pour valeur [ESUP_THEME_SS_ID].
Pour modifier le skin par défaut des utilisateurs connectés :
Par défaut les nouveaux utilisateurs héritent du skin de l'utilisateur 'demo' :
Le USER_ID du user 'demo' est disponible dans la table UP_USER, ici il aura pour valeur [USERDEMO_SS_ID].
Il suffit donc de spécifier que le skin de l'utilisateur demo pour le thème ESUP est [SKIN_NAME].
INSERT INTO `UP_SS_USER_PARM` ( `USER_ID` , `PROFILE_ID` , `SS_ID` , `SS_TYPE` , `PARAM_NAME` , `PARAM_VAL` ) VALUES ( '2', '1', '[ESUP_THEME_SS_ID]', '[USERDEMO_SS_ID]', 'skin', '[SKIN_NAME]' );
Pour gérer ces paramètres automatiquement lors d'un redéploiement du portail
Le fichier qui permet d'initialiser la base de données (lors du ant db.init) se nomme esup-2.6-esup-xxx/update/uPortal/properties/db/esup-data.xml. Il s'agit donc de le recopier dans esup-2.6-esup-xxx/custom/uPortal/properties/db/esup-data.xml puis de modifier ce dernier en deux endroits :
Pour modifier le skin par défaut :
<table>
<name>UP_SS_THEME_PARM</name>
<rows>
...
<row>
<column><name>SS_ID</name><value>[ESUP_THEME_SS_ID]</value></column>
<column><name>PARAM_NAME</name><value>skin</value></column>
-- remplacer 'esup' par [SKIN_NAME] dans la ligne ci-dessous :
<column><name>PARAM_DEFAULT_VAL</name><value>[SKIN_NAME]</value></column>
<column><name>PARAM_DESCRIPT</name><value>Esup themed skin</value></column>
<column><name>TYPE</name><value>1</value></column>
</row>
...
<rows>
</table>
Pour modifier le skin par défaut des utilisateurs connectés :
<table>
<name>UP_SS_USER_PARM</name>
<rows>
...
<row>
<column><name>USER_ID</name><value>2</value></column>
<column><name>PROFILE_ID</name><value>1</value></column>
<column><name>SS_ID</name><value>1</value></column>
<column><name>SS_TYPE</name><value>2</value></column>
<column><name>PARAM_NAME</name><value>skin</value></column>
<column><name>PARAM_VAL</name><value>esup</value></column>
</row>
-- Pour ajouter les lignes ci-dessous, on peut s'inspirer des lignes ci-dessus, présentent
-- dans la version d'origine du fichier
<row>
<column><name>USER_ID</name><value>[USERDEMO_SS_ID]</value></column>
<column><name>PROFILE_ID</name><value>1</value></column>
<column><name>SS_ID</name><value>[ESUP_THEME_SS_ID]</value></column>
<column><name>SS_TYPE</name><value>2</value></column>
<column><name>PARAM_NAME</name><value>skin</value></column>
<column><name>PARAM_VAL</name><value>[SKIN_NAME]</value></column>
</row>
...
</rows>
</table>
La XSL
Si vous voulez modifier la structure de la page (HTML) vous devez modifier la XSL de rendu du portail.
Ellle se trouve dans uPortal/webpages/stylesheets/org/esupportail/portal/layout/tab-column/xhtml-theme/xhtml-theme.xsl
Si vous venez a la modifier faite attention a conserver la tag de remplacement utilisé par le package (<title>@esup.title.html@</title>)