![]() | Guide SCENARIbuilder |
Mise en placeStructureIntroduction
Dans cette partie, nous allons copier HelloWorld sous le nom HelloUniverse, et travailler sur cette copie en ajoutant et modifiant des fichiers .model pour que l'éditeur Scenari prenne en compte nos nouveaux paragraphes de données. Point de départ Vous partez du même atelier que celui du tutoriel précédent Copiez le répertoire"helloworld à la racine de votre atelier (cliquez sur son titre pour sélectionner la racine). Ensuite, quelques renommages sont à effectuer Vérification Vérifiez l'écran de contrôle et assurez vous par test que votre copie est pleinement fonctionnelle. Mais pour faire une déclinaison de modèle
Pour faire une déclinaison d'un modèle, vous n'êtes pas obligé de faire toute cette série de renommage, mais vous pouvez aussi copier vos fichiers dans un atelier différent. Ou prendre le risque de conserver les 2 répertoires côte à côte sans changer les codes, à partir du moment où il n'y a aucune interaction d'items entre les 2 répertoires il n'y aura pas d'erreur. Mais alors, surveillez bien l'écran de contrôle et assurez vous que les auteurs n'utiliseront pas l'autre version du modèle sans avoir conscience des risques ou différences. (ceci est toutefois déconseillé) Les librairies
En cas de modèles différents qui partagent des .model ou ressources communes, le mieux est de créer un répertoire "librairie" qui contiendra l'intersection des 2 modèles, un ensemble d'items SCENARIbuilder réutilisables à l'intérieur de .model d'un même atelier. Ce n'est pas le cas entre nos 2 modèles puisque notre micro-helloworld ne contient qu'un seul fichier .model. Nouvelle compositionPrim pour astrobj.model et partie.model
Copiez 2 fois le fichier universe.model et nommez les copies part.model et astrobj.model dans le même répertoire. Nous allons simplifier l'ensemble "titre + contenu" en un seule composition partie. Vous allez mettre le sTitle en tant que meta et ajouter le contenu de la part. astrobj.model
Nous définissons les blocs de texte suivant la méthode que nous avions choisie précédemment : un astre est souvent décrit par 4 parties de texte prédéfinies, et plusieurs paragraphes libres. Les 4 premiers paragraphes sont à l'extérieur du set, ce qui force l'auteur à respecter leur ordre. Ils sont en required="optional", l'auteur peut choisir d'en laisser certaines vides par manque d'information. Contrairement au helloworld, notre titre est placé dans la composition du "sous-modèle" et non à l'intérieur du paragraphe, il est intégré à l'item part.model. Référencer astrobj.model depuis universe.model
Il ne reste plus qu'à modifier notre élément racine pour faire appel à astrobj.model (car tout simplement : l'univers contient des astres). Un choix intéressant est d'obliger l'auteur à créer un fichier distinct par planète : Internalized = never. Dernière étape, pour que astrobj.model puisse être utilisé en tant qu'objet externe, il faut qu'il soit dans les publicClasses de notre compositionPrim. Tests
Vous pouvez à nouveau tester votre modèle mais attention : les transformeurs sont "cassés"... Ils ne correspondent plus aux .model et les générateurs ne fonctionnent plus. Pour le moment, seul l'éditeur est fonctionnel. Publication HTMLIntroduction
Nous avons modifié la structure du modèle, mais les transformeurs utilisent toujours les anciennes données : résultat, le générateur ne fonctionne plus du tout ou ne publie presque rien. Il faut donc aussi modifier les transformeurs, les "réparer" pour que les publications fonctionnent à nouveau. universe.transf
Que ce soit en HTML ou en OD, le transformeur est toujours partiellement exact, avec juste une différence : le titre est intégré dans les metas du sous modèle, et non intégré à la part. Les commentaires
Comme dans SCENARIchain, il est possible de désactiver des lignes en le passant en commentaire par . Il est alors affiché en vert dans l'éditeur. Mode "navigation" et mode "content"
Lorsque vous créez un transformer (
universe.model (et helloworld.model) est notre item racine de la publication et nous devons commencer en mode navigation. Nous y avons défini une page, et n'en définirons aucune autre à l'avenir, donc dans les transformers des submodels, nous devons utiliser le mode content. sm:page
sm:page permet de créer physiquement les fichiers html qui constitueront le site web. astrobj.transf
Le transformer pour astrobj.model pourrait être réalisé de manière très simple : for code="*" > WHeadingBlock > (title > subModelTitle) | callSubModel Mais nous voulons que chaque partie "Atmosphére", "Surface"... ait un titre par défaut si l'auteur ne le précise pas. Voici un moyen de le faire, créez ce nouveau transformer : On sélectionne avec plusieurs for chaque part une par une grâce au code. Lorsque vous précisez plusieurs title à la suite l'un de l'autre, c'est le premier existant qui est choisi : si le subModelTitle existe, le titre de l'auteur sera utilisé. Pour les parties libres nous ne leur donnons pas de titre si l'auteur ne le spécifie pas. part.transf
Cette fois-ci, c'est plus simple : il s'agit juste de transférer le travail de transformation à la primitive texte : for code="*" > callSubModel. Mettez à jour les transflists
Mettez à jour le fichier .transflist du générateur HTML, ajoutez-y les 2 nouveaux transformers. checklist
En cas d'erreur, pensez toujours à vérifier :
Publication ODPour l'OpenDocument Text, il n'y a aucune difficulté supplémentaire, vous devez faire les mêmes changements ou nouveaux transformers que pour le HTML. Pensez à modifier le for dans universe.transf : il y a toujours for code="hello", qu'il faut mettre en for code="*". Vous devez aussi refaire le stylage pour obtenir un résultat plus esthétique, mais cela fera l'objet d'une autre partie dans ce guide. |
(c) scenari-platform.org 2007 |
Vous n'avez pas besoin de changer les namespaces et prefix tant que les codes sont uniques. Vous pourriez aussi faire l'inverse : changer uniquement les namespaces mais garder le même code. C'est le couple namespace + code qui identifie un item.