Personnaliser la page d accueil web créée par 4ème Dimension 2003 Par David ADAMS Note technique 4D-200403-07-FR Version 1 Date 1 Mars 2004 Résumé En 4D 2003, une page d'accueil web par défaut, index.html, est générée automatiquement si le dossier Web et la page d accueil par défaut sont tous deux absents des préférences. Cette page par défaut est stockée dans 4ème Dimension dans une ressource de type Html et d identifiant 1. Cette note technique explique comment modifier le code HTML contenu dans la page d accueil par défaut, ce qui est particulièrement utile pour les développeurs d applications verticales qui veulent inclure une page d accueil personnalisée en partant du seul fichier de structure. 4D Notes techniques Copyright 1985-2004 4D SA - Tous droits réservés Tous les efforts ont été faits pour que le contenu de cette note technique présente le maximum de fiabilité possible. Néanmoins, les différents éléments composant cette note technique, et le cas échéant, le code, sont fournis sans garantie d'aucune sorte. L'auteur et 4D S.A. déclinent donc toute responsabilité quant à l'utilisation qui pourrait être faite de ces éléments, tant à l'égard de leurs utilisateurs que des tiers. Les informations contenues dans ce document peuvent faire l'objet de modifications sans préavis et ne sauraient en aucune manière engager 4D SA. La fourniture dulogiciel décrit dans ce document est régie par un octroi de licence dont les termes sont précisés par ailleurs dans la licence électronique figurant sur le support du Logiciel et de la Documentation afférente. Le logiciel et sa documentation ne peuvent être utilisés, copiés ou reproduits sur quelque support que ce soit et de quelque manière que ce soit, que conformément aux termes de cette licence. Aucune partie de ce document ne peut être reproduite ourecopiée de quelque manière que ce soit, électronique ou mécanique, y compris par photocopie, enregistrement, archivage outout autre procédé de stockage, de traitement et de récupération d'informations, pour d'autres buts que l'usage personnel de l'acheteur, et ce exclusivement aux conditions contractuelles, sans la permission explicite de 4D SA. 4D, 4D Calc, 4D Draw, 4D Write, 4D Insider, 4ème Dimension, 4D Server, 4D Compiler ainsi que les logos 4e Dimension, sont des marques enregistrées de 4D SA. Windows,Windows NT,Win 32s et Microsoft sont des marques enregistrées de Microsoft Corporation. Apple, Macintosh, Power Macintosh, LaserWriter, ImageWriter, QuickTime sont des marques enregistrées ou des noms commerciaux de Apple Computer,Inc. Mac2Win Software Copyright 1990-2002 est un produit de Altura Software,Inc. 4D Write contient des éléments de "MacLink Plus file translation", un produit de DataViz, Inc,55 Corporate drive,trumbull,ct,usa. XTND Copyright 1992-2002 4D SA. Tous droits réservés. XTND Technology Copyright 1989-2002 Claris Corporation.. Tous droits réservés ACROBAT Copyright 1987-2002, Secret Commercial Adobe Systems Inc.Tous droits réservés. ACROBAT est une marque enregistrée d'adobe Systems Inc. Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs. 1 / 10
Personnaliser la page d accueil web créée automatiquement par 4 ème Dimension 2003 Présentation Le serveur Web de 4 ème Dimension crée automatiquement une page d accueil si aucune page n est présente dans le dossier par défaut du serveur Web, comme celle représentée ci-dessous : Cette page par défaut est préférable à une erreur 404 Page non trouvée, mais elle est moins bien qu une page personnalisée accordée à une base de données spécifique. Cette note technique explique comment modifier le code HTML contenu dans la page d accueil par défaut, ce qui est particulièrement utile pour les développeurs d applications verticales qui veulent inclure une page d accueil personnalisée en partant du seul fichier de structure. A quel moment 4 ème Dimension crée la page d accueil par défaut Lorsque le serveur Web de 4 ème Dimension démarre, il vérifie la présence du dossier Web par défaut et de la page d accueil comme défini dans la fenêtre Publication Web du dialogue des préférences de la base. Depuis la version 2003, si le dossier Web et la page d accueil sont absents, ils sont créés automatiquement. 2 / 10
Définition du dossier Web et de la page d accueil par défaut Emplacement du HTML par défaut Le contenu de la page d accueil par défaut est stocké dans 4 ème Dimension lui-même, dans une ressource de type Html et d identifiant 1, comme on peut le voir ci-dessous à l aide de l éditeur de ressources Resorcerer sous Mac OS X : 3 / 10
Ressource Html stockée dans 4 ème Dimension Arrière plan : les ressources Le serveur Web de 4 ème Dimension stocke tous ses HTML par défaut, comme les descriptions d erreurs de page non trouvée ou d erreur de licence, dans des ressources de type Html. Les ressources ont été une des caractéristiques majeures de la programmation pour Mac OS classique. Le langage et l environnement de 4 ème Dimension exploitent les ressources sous Windows, Mac OS et OS X. Ci-dessous, voici un rappel des points-clés sur les ressources : Les ressources sont des données structurées telles des blocs de texte, images, curseurs, chaînes de caractères ou tout ce dont un programme peut avoir besoin. Les ressources ont chacune un identifiant numérique unique et un type défini par un code à 4 caractères sensibles à la casse, tels que TEXT, PICT ou Html. Dès lors qu un programme peut ouvrir plusieurs documents en même temps, lorsqu une ressource est nécessaire, typiquement, le programme cherche la ressource en commençant par le dernier document ouvert et en remontant jusqu au plus ancien. Par exemple, 4 ème Dimension cherche une ressource qui convient dans le fichier de structure avant de regarder dans 4 ème Dimension lui-même. Ce comportement permet aux développeurs de remplacer la valeur par défaut d une ressource en mettant une copie mise à jour de la ressource dans leur structure. L intervalle des valeurs possibles pour un identifiant de ressource est de 32 767 à 32 767 inclus. Le système 4 / 10
et 4 ème Dimension réservent tous les numéros inférieurs à 15 000. Tous les plug-ins et le code utilisateur se partagent l intervalle de 15 000 à 32 767. Remplacer la page d accueil HTML par défaut Pour remplacer la page d accueil HTML par défaut, il suffit des étapes suivantes : Composer le HTML souhaité. Sauver le texte HTML dans la structure de la base de données comme une ressource de type Html avec l identifiant 1. Après ces étapes, le fichier de structure contient le HTML par défaut. Si, au démarrage, le serveur Web de 4 ème Dimension ne trouve pas le dossier Web et la page d accueil par défaut, il cherche la ressource Html #1. Comme le fichier de structure est ouvert après 4 ème Dimension, le contenu de la page d accueil est dessiné d après la structure et non d après 4 ème Dimension. C est un avantage pour les raisons suivantes : C est le même HTML qui est produit, quels que soient la version ou le type (client / monoposte / serveur ) de 4 ème Dimension utilisés. Il n est pas nécessaire de toucher à 4 ème Dimension ou de le modifier. Exemple de code : copier du texte dans une ressource Html Une ressource Html est structurellement identique à une ressource TEXT. Les textes de 4 ème Dimension et les commandes TEXTE VERS BLOB et ECRIRE RESSOURCE simplifient le processus pour travailler avec des ressources Html. Le code ci-dessous illustre la manière de copier le contenu d un paramètre texte dans une ressource Html : `SetHtmlResource C_ENTIER LONG($1;$resourceID_l) C_TEXTE($2;$html_t) $resourceid_l:=$1 $html_t:=$2 C_BLOB($html_blob) FIXER TAILLE BLOB($html_blob;0) TEXTE VERS BLOB($html_t;$html_blob;Texte sans longueur ECRIRE RESSOURCE("Html";$resourceID_l;$html_blob) FIXER TAILLE BLOB($html_blob;0) Le code ci-dessous montre comment lire le contenu d une ressource Html pour le stocker ou l afficher : ` GetHtmlResource C_TEXTE($0;$html_t) C_ENTIER LONG($1;$resourceID_l) $resourceid_l:=$1 C_BLOB($html_blob) FIXER TAILLE BLOB($html_blob;0) 5 / 10
LIRE RESSOURCE("Html";$resourceID_l;$html_blob) $html_t:="" $html_t:=blob vers texte($html_blob;texte sans longueur ) $0:=$html_t FIXER TAILLE BLOB($html_blob;0) Améliorer le HTML personnalisé Il n y a aucune raison pour que la page d accueil personnalisée par défaut se limite à du texte seul. Vous pouvez, par exemple, inclure des références à des images et à des feuilles de style liées. Le HTML peut inclure des références à tout document, enregistrement ou ressource que le serveur Web de 4 ème Dimension peut trouver. Il y a de nombreuses stratégies pour s assurer que les éléments nécessaires sont disponibles, notamment les suivantes : Réaliser un programme d installation personnalisé qui configure correctement le système. Stocker les éléments sous forme d enregistrements et créer automatiquement les documents requis. Stocker et fournir les éléments à partir d enregistrements. Stocker les éléments sous forme de ressources et créer automatiquement les documents requis. Stocker et fournir les éléments à partir de ressources. Chacune de ces stratégies a ses avantages, mais nous n étudierons que la dernière. Dans le même esprit que la génération automatique de la page d accueil, les éléments stockés et fournis directement par des ressources sont disponibles même lorsque l utilisateur démarre sans rien d autre qu un fichier de structure. L exemple de HTML fourni ci-dessous utilise une CSS (feuille de style en cascade) dans une ressource TEXT et un logo de société stocké dans une ressource PICT : <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> <title>acme Black Dot Home Page</title> <link href="/4daction/webgetstyles/" rel="stylesheet" type="text/css" title="acme Styles" rev="stylesheet"> </head> <body bgcolor="#ffffff"> Welcome to the world of Acme Black Dot!<br> <img src="/4daction/webgetpictureresource/logo" alt="acme Logo" height="260" width="101"> </body> </html> Fournir des styles depuis une ressource TEXT Le HTML ci-dessous inclut un rétro-appel au serveur Web pour une CSS (feuille de style en cascade) liée : <link href="/4daction/webgetstyles/" 6 / 10
Dans cet exemple, l URL de la feuille de style est /4daction/WebGetStyles/. Lorsque 4 ème Dimension reçoit cette requête, il exécute la méthode appelée WebGetStyles, listée ci-dessous : C_TEXTE($0) C_TEXTE($1) C_TEXTE($styles_t) $styles_t:="" $styles_t:=lire ressource texte(getstylesresourceid ) ENVOYER TEXTE HTML($styles_t) Cet exemple suppose que les styles soient inclus dans une ressource TEXT personnalisée d identifiant 16000. Il est simple d écrire en dur l identifiant de la ressource, et c est suffisant pour une seule page d accueil par défaut. Si nécessaire, le code peut être amélioré pour permettre le chargement de différentes feuilles de style dans diverses ressources TEXT. Avec très peu de travail, le système peut être étendu au stockage de diverses feuilles de style, librairies JavaScript et éléments de pages dans des ressources TEXT. Note : Activez l attribut Disponible via 4DACTION pour chaque méthode appelée par 4DACTION. Stocker du texte dans des ressources Il est facile de lire et d écrire des ressources TEXT dans 4 ème Dimension à l aide des commandes Lire ressource texte et ECRIRE RESSOURCE TEXTE. La ligne de code ci-dessous lit le contenu d une ressource utilisateur de type TEXT et d identifiant 16000. $0 :=Lire ressource texte(16000) Il est aussi facile d écrire une ressource TEXT que d en lire une, comme le montre la ligne de code ci-dessous : ECRIRE RESSOURCE TEXTE(16000 ;$1) Lire des images dans des ressources Le HTML listé plus haut contient le lien vers une image montré à nouveau ci-dessous : <img src="/4daction/webwebgetpictureresource/logo" Ci-dessous, voici le code de la méthode WebGetPictureResource appelée par le lien : C_TEXTE($0) ` Non utilisé C_TEXTE($1;$pictureName_t) $picturename_t:=$1 $0:="" ` Non utilisé mais nécessaire pour les méthodes appelées par `4DACTION. C_ENTIER LONG($pictureID_l) Au cas ou : ($picturename_t="logo") $pictureid_l:=16001 : ($picturename_t="dog") $pictureid_l:=9000 Sinon ` Logo par défaut $pictureid_l:=16001 Fin de cas 7 / 10
C_IMAGE($pictureSource_g) LIRE RESSOURCE IMAGE($pictureID_l;$pictureSource_g) C_BLOB($gif_x) FIXER TAILLE BLOB($gif_x;0) ` Note: IMAGE VERS GIF ne nécessite pas QuickTime. IMAGE VERS GIF($pictureSource_g;$gif_x) ENVOYER BLOB HTML($gif_x;".gif") La méthode reçoit le nom de l image dans $1, Logo sur cet exemple, et détermine la ressource à charger. La ressource PICT est alors chargée dans une variable image de 4 ème Dimension. Le format d image PICT utilisé par les ressources PICT et les variables images de 4 ème Dimension n est pas reconnu par la plupart des navigateurs Web, c est pourquoi elle est convertie en GIF avant d être renvoyée au navigateur. On peut aussi utiliser la commande IMAGE VERS BLOB pour convertir l image PICT en JPEG, à condition que les fichiers QuickTime nécessaires soient installés sur la machine où tourne 4 ème Dimension. Note : N'oubliez pas, cette fois-ci encore, d'activez l attribut Disponible via 4DACTION. Stocker des images dans des ressources PICT 4 ème Dimension utilise de manière interne le format PICT pour les variables images, ainsi la ressource PICT devient-elle un moyen naturel de stocker des images. Les commandes de haut niveau LIRE RESSOURCE IMAGE et ECRIRE RESSOURCE IMAGE simplifient le déplacement des images vers et depuis des ressources. Conseils de développement 4 ème Dimension ne crée la page d accueil par défaut que lorsque le dossier Web et la page d accueil sont tous deux absents. Il est plus facile de modifier le HTML directement dans le fichier index.html, mais ces changements ne sont pas automatiquement répercutés dans la structure. Il est nécessaire de mettre à jour la structure avec la version finale du HTML avant distribution. Une manière simple de tester le système est de copier la structuredans un dossier vide, lancer la base, démarrer le serveur Web, puis afficher la page d accueil nouvellement créée dans un navigateur. Rappels : les ressources et 4D Server Si 4D Client détecte une modification des ressources en se connectant à 4D Server, 4D Client copie toutes les ressources dans un document local. Ce processus de chargement des ressources est déclenché par un compteur spécial, stocké à l intérieur de la structure. Après avoir modifié des ressources, incrémentez la ressource Mise à jour à l aide de 4D Customizer Plus. Les commandes de 4 ème Dimension sur les ressources modifient les ressources sur le poste courant. Si vous développez sous 4D Client, les modifications de ressources ne sont pas automatiquement répercutées sur la structure de la base de données sur le poste serveur. Ce problème peut être résolu en modifiant les ressources en tournant sous 4 ème Dimension, ou par une programmation spécifique. Pour plus d informations sur les ressources 8 / 10
Pour les objectifs décrits dans cette note technique, les commandes natives de 4 ème Dimension sont suffisantes et aucun outil externe n est nécessaire. Si vous souhaitez en savoir plus, éditer directement des ressources, ou effectuer des tâches plus complexes liées aux ressources, vous pouvez consulter les outils et documents suivants : ResEdit L éditeur de ressources gratuit d Apple vous permet de consulter, modifier et supprimer directement toutes les ressources. Il permet de travailler facilement avec les ressources de type TEXT, PICT et Html. Sous MacOSX, ce programme tourne uniquement en mode Classic, et il ne tourne pas sous Windows. ResEdit et son importante documentation sont disponibles pour le téléchargement sur le Web. Resorcerer http://www.mathemaesthetics.com/resorcererindex.html Resorcerer est le premier programme commercial d édition de ressources pour à la fois OS X et les versions antérieures de Mac OS. Orchard Software http://www.orchardsoft.com/news_links/4dapps/resource_editor.htm Orchard Software offre généreusement un éditeur de ressources gratuit, en open source, pour Windows seulement, écrit en 4 e Dimension. Cet outil peut lire et écrire les types de ressources standard, y compris TEXT, PICT, STR, et STR#. ResFool http://www.ljug.com/sw/resfool.html ResFool est un éditeur de ressources en shareware à 20 $ pour OS X. Les ressources et 4 ème Dimension Article http://www.deepskytech.com/dls_techarticles.html Deep Sky Technology propose un article détaillé sur 4 ème Dimension et les ressources, incluant des exemples utiles, des informations de fond, et des techniques avancées. Les ressources et 4 ème Dimension Livres http://www.4dcompanion.com/products/ Les livres suivants contiennent des discussions sur ce sujet : Programming 4th Dimension contient une discussion détaillée sur les ressources. The 4D 6.5 Companion contient des informations complémentaires sur les types de ressources personnalisés dans 4 ème Dimension et un exemple d éditeur de ressources. The 4D Web Companion contient des informations détaillées sur la ressource Html. Résumé: Système de génération automatique de pages Les points ci-dessous résument les principaux aspects du système de génération automatique de page. La génération automatique de index.html nécessite 4 ème Dimension 2003 ou postérieure. La page index par défaut est générée uniquement si le dossier Web par défaut et la page d accueil par défaut sont tous deux absents. 9 / 10
Comme le contenu de la page d accueil par défaut est stocké dans une ressource, ni le fichier de données ni des documents externes ne sont nécessaires. Une fois que le dossier par défaut et la page d accueil sont créés, ils ne sont pas recréés. Le contenu de la page par défaut est stocké dans 4 e Dimension dans une ressource de type Html et d identifiant 1. Comme les ressources sont lues en priorité dans le fichier ouvert en dernier, une ressource Html dans la structure de la base remplace la ressource Html de même identifiant de 4 ème Dimension. 10 / 10