Groupe 2D (outils de communication)

Date de création : 16 janvier 2004
Dernière modification : 20 janvier 2004
Diffusion : internet

Canal Announcements de Columbia

Vue d'ensemble

Le canal d'announcement est développé par l'université de Columbia. Il est disponible pour la communauté JASIG.

Vous pouvez le télécharger sur le site : https://www.mis4.udel.edu/JasigCH/ (accès restreint)

Ce canal gère 2 types d'éléments :

Un topic contient plusieurs announces.

Possibilités

Administration

Cette première partie va montrer les possibilités offerte au niveau de l'administration.

Les personnes sans droit particulier peuvent :

Une personne ayant créé le sujet Test peut :

Propriété d'un sujet

Un sujet est caractérisé par :

Sujet accessible depuis l'extérieur du portail

Si un sujet est accessible depuis l'extérieur du portail, il sera disponible dans un flux XML.
Ce flux XML sera obtenu en accédant à une page jsp fournit dans la distribution (CAnnouncements.jsp).
Cette page reçoit le numéro du sujet (topicID), il peut être obtenu en survolant un lien.

Par exmple : http://ent.univ-nancy2.fr/CAnnouncements.jsp?topicID=3

Le flux XML ainsi obtenu peut être utilisé par un autre portail afin d'afficher les informations de Nancy :-).
On peut utiliser ce flux de deux manières:

 

Permission sur un sujet "Assign Group"

Lorsque l'on créé un nouveau sujet, le canal va créé un groupe uPortal qui se nomme"Test" subscribers (nom du sujet + subscribers). Ceci est assez ingénieux et permet de voir les possibilités offerte par des groupes applicatif.

Les membres de ce groupe, ainsi créé,auront le droit de visualiser le sujet.

Forcer l'inscription

Il peut être intéressant de forcer l'inscription d'un groupe ou d'une personne à un sujet. Pour ce faire, on utilise la fonction "Assign Groups" (terme est assez mal choisit). Une fois un groupe ajouté (grâce aux "group manager" et "permission manager" de uPortal), il se verra automatiquement inscrit à un sujet et ne pourra pas s'en désinscrire.

Si on ajoute non pas un groupe mais une personne celle-ci sera automatiquement inscrite au sujet mais elle pourra se désincrire :

 

Autre permission "Assign Permission"

Les permissions possibles on déjà été listées :

Les combinaisons sont intéressantes, tels que :

Edit announcements + Draft : permet à une personne d'ajouter des annonces dans l'état de brouillon, elle ne pourra pas les valider.

Propriété des annonces

Une annonce est caractérisée par :

Une annonce peut avoir plusieurs états :

 

HTML or not

Comme vous pouvez le voir le texte de l'annonce se saisie dans une zonne multi-ligne, mais le rendu ne ce fait pas en multi-ligne, cela vient de la feuille de style (xsl) permettant l'affichage (cela se résoud facilement : fait à nancy)

Une question vient tout de suite si je tape du HTML dans le texte du message comme <b>Bonjour</b>
En l'état actuel du portail et des feuilles de style cela s'affichera <b>Bonjour</b> (HTML : &lt;b&gt;Bonjour&lt;/b&gt;).

Le problème est que la feuille de style (xsl) affiche brutalement le texte (les 200 premiers caractères):

<xsl:value-of select="substring(document/data/self::*,0,200)"/>

en ajoutant l'instruction : disable-output-escaping="yes" le moteur de transformation XSL ne devrait plus transformé le caractère < en &lt; (et > en &gt;) mais le portail n'acceptait pas ces instructions jusqu'a sa version 2.1.4.

Solution : modifier la feuille de style et utiliser une version supérieur à 2.1.5 qui comporte une nouvelle option dans le portal.properties :

org.jasig.portal.serialize.BaseMarkupSerializer.allow_disable_output_escaping=yes 


Le seul problème restant : pour avoir un affichage compact, le canal n'affiche que les X premiers caractères d'une annonce, si le découpage intervient dans une partie HTML on risque d'avoir des problème.

Rendu

L'affichage se fait de la manière suivante :


Sur le clic d'un sujet on voit toutes les annonces du sujet :

Selon les droits l'affichage peut varier :

Configuration

Le fichier de configuration CAnnouncements.properties ne comporte que très peu d'informations :

#The class which is responsible for generating an authoritative set of all topics available to th system
TopicStoreAuthority=TopicStore.RDBM


#true or false - use to enable or disable permission checking (should always be true in production)
usePermissions=true


# A Read-only topic store which pulls topic XML from a remote source over an http connection
# Note that local topics, if saved with servlet publication on,
# can be accessed via 'CAnnouncements.jsp?topicID={int}'
TopicStore.HTTP=edu.columbia.ais.portal.channels.announcements.HTTPTopicStore


# A topic store which utilizes a database
TopicStore.RDBM=edu.columbia.ais.portal.channels.announcements.RDBMTopicStore


#The default refresh period for topics - must be hourly, daily, weekly, monthly or yearly
Refresh.Period=hourly


#The default refresh frequency for topics - must be an integer, 1-12
Refresh.Frequency=12
 

Je pense que toutes ces options parle d'elle même.

Base de données

Ce canal utilise deux tables :

Ces tables sont créées dans la même base que uPortal (utilisation du pool uPortalDB).
Il est impossible de configurer le canal pour utiliser une autre source de données :-(.

Attention pour mysql il faut modifier le fichier XML de description des tables (la taille maxi d'un clé de 255)

Bilan

Points positifs

  1. Totalement intégré dans uPortal
  2. Gestion de droit se basant sur uPortal
  3. Possibilité de sujet exposé à l'extérieur
  4. HTML à voir
  5. Simplicité à mettre en place
  6. Personnalisation facile des feuilles de styles

 

Points négatifs

  1. Actuellement tous le monde peut ajouter un sujet (cela semble réalisable de filtrer ces personnes sur un groupe inscris en config)
  2. Il n'y pas de titre à une annonce cela permettra d'avoir un afficahge plus compact (et éviterait le problème du HTML soulevé précédemment)
  3. Un format de sorti en RSS ?
  4. Les groupes créés automatiquement par le canal (un par sujet) ne sont attachés nulle part dans le groupe manager. Une modification pourrait permettre de les rattacher à un groupe donné (en configuration) afin de faciliter la gestion.