samedi, août 19, 2006

SITE - Modification d'URL pour le fil RSS

Le fil RSS de ce blog change d'URL. La nouvelle adresse est : http://feeds.feedburner.com/DominoWeb20. En effet je viens de m'inscrire sur FeedBurner qui permet non seulement d'assurer une meilleure compatibilité avec les aggrégateurs (au contraire du flux atom précédent) mais aussi pour suivre les statistiques d'accès au site via ce média. Comme vient justement de le faire remarquer Julien sur domlike.net, la majorité des accès sur un blog se fait à travers les aggrégateurs et non depuis un navigateur Web.

L'ancien fil atom restera encore actif quelques semaines. N'hésitez pas à laisser un commentaire en cas de problème.

[mise à jour]J'ai aussi profité de l'occasion pour offrir la possibilité de consulter le flux RSS du site au format PDF et pour Mobile via xFruits. Ce site permet de transformer et d'aggréger des flux RSS vers différents formats. De plus, l'interface est simple, fluide et visuellement agréable. Bref, un outil indispensable que je vous recommande.

jeudi, août 17, 2006

ASTUCE - Garder une session Domino ouverte

L'un des problèmes qui m'ennuie le plus avec les application full-web est l'expiration de session. Encore ce matin un utilisateur m'a appelé paniqué car au moment d'enregistrer son article, patiemment rédigé pour un blog interne de l'entreprise, le serveur Domino lui a répondu que la session était expirée.

En parcourrant l'excellent blog de William Beh "Lotus Notes on Web 2.0" j'ai enfin trouvé une solution simple et rapide à mettre en place. Il propose tout simplement d'appeler en Ajax un fichier sur serveur périodiquement avec la classe PeriodicalExecuter de prototype.js. Ceci permet de garder ouverte la session Domino.

Cette méthode n'est certes pas parfaite d'un point de vue sécurité. L'utilisateur doit absolument fermer son navigateur pour fermer la session. Le coutournement de ce problème sera l'occasion de rédiger un nouvel article.

INFO - Nouvelle version de scriptaculous

La version 1.6.2 de scriptaculous vient de sortir. Elle corrige un certains nombre (voire un nombre certains) de bugs divers. La version 1.5.0 rc0 de prototype.js est aussi fournie dans le nouveau package d'installation que vous pouvez télécharger depuis la page downloads.

Pour rappel, la librairie scriptaculous est très régulièrement présenté dans ce blog. Elle est très pratique pour gérer notament le drag & drop ainsi que l'autocomplétion. Quelques exemples en ligne sont disponibles sur le site annexe Domino & Web 2.0 : Exemples

La bibliothèque prototype.js est elle utilisée dans de nombreuses bilbiothèques javascript comme scriptaculous, mais aussi Rico ou moo.fx qui ont aussi été présentées ici (livegrid et accordion pour Rico, Smooth Slideshow pour moo.fx).

mercredi, août 16, 2006

AJAX - Photos de vacances

De retour d'un long week-end du 15 Août, il est temps d'exposer les photos souvenir. Le but n'est pas de présenter une application de gestion de photos mais plutôt de présenter deux solutions AJAX que je trouve esthétique et très facilement intégrable avec Lotus Domino. La première solution présentée dans cet article présente les photos sous forme de bandeau avec effet de transition fondu enchainé et la possibilité d'ajouter un titre, une description ainsi qu'un lien. La seconde solution sera présentée dans le prochain article. Elle permet d'ouvrir les photos depuis des imagettes sous forme de boite de dialogue modale. Cet effet est notamment utilisé sur zoomr.


Smooth Slideshow de Jonathan Schemoul

La bibliothèque JonDesign's Smooth SlideShow permet de créer rapidement un bandeau avec effet fondu enchainé comme on en trouve déjà beaucoup en Flash. Cette bibliothèque s'appuie sur prototype.js et moo.fx. Le tout pèse 21,6 ko ce qui me semble très raisonnable surtout si l'on utilise ces bibliothèques pour d'autres usages sur le site. Pour comparaison, dewslider.swf, un excellent équivalent en flash, pèse 30,4 ko. Cependant, n'y connaissant rien en Flash, je ne me permettrais pas d'avancer d'arguments pour ou contre l'une de ces solutions. Le choix de cette bibliothèque est avant tout motivé par le but principal de ce blog, présenter des solutions AJAX pour Lotus Domino.


Installation de la bibliothèque

Pour utiliser la bilbiothèque il faut tout d'abord télécharger le package disponible sur la page de présentation de la bibliothèque. Une fois le fichier décompressé, ajouter les fichiers javascript et la feuille de style dans les ressources partagées de la base Lotus Notes. Les fichiers à ajouter sont :

  • moo.fx.js
  • moo.fx.pack.js
  • protoype.lite.js
  • showcase.slideshow.js
  • timed.slideshow.js
  • jd.slideshow.css

Si l'on utilise déjà prototype.js, inutile d'ajouter prototype.lite.js.


Utilisation de la biliothèque

Comme décrit dans la documentation, il faut

  1. déclarer les bibliothèques javascript et la feuille de style
  2. déclarer les images à présenter
  3. personnaliser la taille de la zone d'affichage
  4. définir la zone d'affichage dans la page

La déclaration des images à présenter se fait à travers un tableau déclaré en javascript sous la forme :

mySlideData[countArticle++] = new Array(
'image1.jpg',
'article1.html',
'Item 1 Title',
'Item 1 Description'
);

Intégration dans Lotus Notes

Pour faciliter la mise à jour des photos, je passerais par un masque pour gérer les photos à afficher. Ce masque est défini avec les champs suivants :

  • Titre : champ texte libre
  • Lien : champ texte libre
  • Description : champ texte libre
  • Photo : champ texte riche

Une fois le masque créé, reste à définir une vue "Photos". Pour me faciliter la tache, la vue présentera directement le code Javascript à intégrer dans ma page. La formule de colonne sera :

"mySlideData[countArticle++] = new Array('"
+ "0/" + @Text(@DocumentUniqueID) + "/$file/"
+ @subset(@attachmentnames; 1) + "', '"
+ Lien + "', '"
+ Titre + "', '"
+ Description + "');"

Ne pas oublier de trier la première colonne dans la vue pour pouvoir extraire les données avec @dbColumn.

Pour créer ma page Web, je vais passer par une page Notes mais on peut aussi l'intégrer dans un masque.

Comme contenu de titre HTML il faut intégrer les librairies javascript, ajouter un évenement Onload pour lancer le bandeau à l'ouverture de la page puis définir les images à afficher à partir de la vue précédemment créée et enfin définir les options de style pour définir la taille du bandeau, soit :

Photos:= @DbColumn("":"";"";"Photos" 1);
@If(@IsError(val); "" ;
"<script src=\"prototype.lite.js\" type=\"text/javascript\"></script>
<script src=\"moo.fx.js\" type=\"text/javascript\"></script>
<script src=\"moo.fx.pack.js\" type=\"text/javascript\"></script>
<script src=\"timed.slideshow.js\" type=\"text/javascript\"></script>
<link rel=\"stylesheet\" href=\"jd.slideshow.css\"
type=\"text/css\" media=\"screen\" />

<script type=\"text/javascript\">
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func; }
else {
window.onload = function() {
oldonload();
func();
}
}
}
function startSlideshow() {
initSlideShow($('mySlideshow'), mySlideData);
}

countArticle = 0;
var mySlideData = new Array();"
+ @Implode(Photos) +
"addLoadEvent(startSlideshow); </script>
<style>
#mySlideshow {
width: 400px !important;
height: 200px !important;
}
</style>");

Il ne reste plus qu'à indiquer dans la page où afficher le bandeau en ajoutant en tant que texte HTML relais :

<div id="mySlideshow"></div>

C'est fini, voici un exemple de résultat avec quelques photos du Golfe du Morbihan.

mardi, août 08, 2006

ASTUCE - CSS dans Notes

J'ai découvert très récemment que l'on pouvait appliquer les feuilles CSS sur le client Lotus Notes 6. C'était pourtant écrit dans l'aide, mais je n'avais même pas osé imaginer que celà était possible. Attention, cependant il y a de très fortes limitations. Pour le moment on ne peut appliquer un style CSS qu'à quelques éléments, de plus les classes et style semblent ne pas être gérés sur le client.

Une application qui peut être éventuellement intéressante est la personnalisation des tableaux créés dans un champ texte riche.

Pour appliquer un style à un masque, il faut commencer par créer sa feuille de style dans un fichier texte avec notepad, ou un autre éditeur de texte (j'utilise PSPad). La feuille de style pourra par exemple ressembler à :
TD {
border : 1px solid #ddd;
background : #eee;
color : #333;
font-family : tahoma;
font-size : 12px;
}

Une fois le fichier enregistré, il faut l'intégrer dans une base Notes comme ressource "Feuille de style".


Pour appliquer la feuille de style à un masque :
  • Ouvrir le masque,
  • Sélectionner dans le menu "Création\Ressource\Insérer ressource"
  • Sélectionner "Feuille de style" comme type de ressource
  • Sélectionner le fichier puis cliquer sur OK
Un(e) icone symbolisant la ressource doit apparaitre dans le masque Notes.

Il ne reste plus qu'à enregistrer le masque, c'est terminé. Lorsqu'un utilisateur créera un nouveau tableau dans un champ texte riche de ce masque, ce tableau s'affichera avec les options de style définies.


On peut aussi appliquer un style à la balise IMG pour ajouter automatiquement une bordure autour des images iportées ou collées. La feuille de style pourra alors être :
IMG {
padding : 5px;
border : 4px solid #373;
}

Les possibilités semblent encore trop limitées pour être vraiment interressantes à exploiter. Il faudrait voir si le support des feuilles CSS évolue avec les prochaines versions de Notes.

lundi, août 07, 2006

ASTUCE - Forcer les propriétés de mise en forme du texte d'un champ texte riche sur le Web

Rien de plus désagréable qu'un site Web où les fontes de caractères diffèrent d'une page à l'autre. S'il est possible de maitriser une charte graphique pour un site à vocation publique, il est beaucoup plus difficile, voire impossible, de l'imposer pour les importantes bases documentaires internes. A la décharge des utilisateurs, Lotus Notes préserve les propriétés de texte lors des copier/coller depuis les applications Office ou depuis les pages Web.

Heureusement, le moteur de conversion Web Domino n'est pas toujours propre. Il utilise toujours les "vieilles" balises HTML et plus particulièrement la balise <font> pour définir la police de caractère et sa taille. Pour maitriser le rendu du champ texte riche sur le Web il suffit donc de redéfinir le style de cette balise. Ainsi on peut par exemple ajouter en entête de la page web :
<style>
font {
font-family : tahoma, arial, helvetica, sans-serif;
font-size : 1em;
}
</style>

Quelque soit la fonte utilisée et quelque soit sa taille définie dans Notes, le contenu du champ apparaitra toujours en fonte tahoma taille 1em. L'utilisateur pourra par contre mettre en gras ou souligner les caractères afin d'ajouter un peu d'effets au contenu.

On peut bien sûr aussi entourer le champ texte riche d'un div avec une classe définie afin de limiter la portée de l'effet à ce champ. On aura alors dans le masque :
<div class="mybody">
Champ texte riche
</div>
et pour la définition du style :
<style>
#mybody font {
font-family : georgia, "Times New Roman", Times, Roman, serif;
font-size : 12px;
}
</style>

GRAPHISME - Amélioration des graphiques Excel

C'est l'été, il fait beau et chaud. Je vais donc profiter du mois d'août, non pas pour faire une pause, mais pour aborder des sujets que certains pourront trouver plus futiles. Je commencerai par l'aspect graphique lié au Web 2.0. Chaque décennies voit apparaitre une nouvelle mode graphique : les coins carrés, les coins arrondis, les ombres portées, etc... Avec le Web 2.0 (et aussi Apple) est arrivé l'effet reflet.

Le mois d'août étant le mois le moins chargé de l'année, je profite toujours de cette période pour revoir ma documentation et les présentations que je suis amené à diffuser. J'ai donc profiter de l'occasion pour voir comment améliorer le rendu des graphiques générés par Excel. Même si le plus important reste le contenu, l'auditeur est toujours plus attentif si le visuel est agréable.

ETAPE 1 : Préparation du graphique sous Microsoft Excel (ou Calc avec Open Office)
Je ne vais pas donner de cours d'Excel étant très limité en ce domaine. Les seules recommandations que je donnerai est de ne pas se soucier des couleurs car elles pourront être modifiée sous Adobe Photoshop, mais faire très attention de supprimer les bordures des graphiques.
Une fois le graphique prêt, supprimer la légende et agrandir le graphique le plus possible selon la mémoire que vous possédez sur votre ordinateur. L'agrandissement du graphique permettra de supprimer l'effet "escalier". Copier le graphique et coller le comme nouvelle image dans votre éditeur graphique. J'utiliserais Adobe Photoshop mais celà doit aussi pouvoir fonctionner avec Paint Shop Pro ou Gimp.

ETAPE 2 : Préparation du graphique sous l'éditeur graphique
Je commence par modifier les couleurs de mon graphique. Photoshop m'offre beaucoup plus de possibilités que la palette limitée d'Excel. Je décommande d'appliquer des dégradés sur les graphiques qui allourdissent un peu trop à mon goût.
Pour coloriser mon graphique, j'utilise la "baguette magique" pour sélectionner la zone à colorisée puis le pot de peiture pour appliquer la nouvelle couleur.

ETAPE 3 : Préparation de la zone de travail
Avant de redimensionner l'image, je supprime les zone de blanc en trop autour du graphique en utilisant l'outil de recadrage. Il est maintenant possible de redimensionner l'image à la taille souhaitée. Pour redimensionner l'image sous photoshop il faut sélectionner l'option du menu "Image\Taille de l'image" puis indiquer la largeur et/ou la hauteur souhaitée. J'utilise de nouveau la baguette magique pour sélectionner le fond bland et je le supprime. Il ne doit plus que rester le graphique et éventuellement l'échelle dans le cas de graphiques à barres.

L'effet de reflet doit être affichée sous le graphique il faut donc agrandir la zone de travail. Sous Photoshop il faut sélectionner l'option du menu "Image\Taille de la zone de travail". Dans la boite de configuration j'indique une hauteur deux fois plus importante que celle proposée et clique sur la case du haut pour lui indiquer d'agrandir la zone vers le bas.

ETAPE 4 : Application de l'effet reflet
Depuis la zone de calque, click droit sur le calque du graphique puis sélectionner l'option "dupliquer calque".
Sélection du nouveau calque créer puis sélectionner dans le menu "Edition\Transformation\Symétrie axe vertical". Déplacer alors le graph retourné sous l'autre graphique.

Sélectionner l'option "masque de fusion" sur le calque du graphique retourné dans la boite de visualisation des calques.

Sélectionner l'outil de dégradé en spécifiant comme type de dégradé noir vers transparent.

Appliquer le dégradé sur le graphique inversé en partant du milieu de ce graphique vers le haut du graphique.

Vous devriez obtenir un résultat comme celui-ci :

Il ne reste plus qu'à règler l'opacité du calque de reflet en le baissant à 15% par exemple puis en appliquant un fond sur un nouveau calque si nécessaire.


Cette méthode peut bien sûr s'appliquer à tout type d'image et de texte et pas seulement de graphiques Excel.
Rechercher sur ce blog
Effacer résultat