Ajouter un lien dans la "toolcase" de Topaze

Bonjour à tous,

Je me demandais s’il était possible d’ajouter un lien (dans la colonne de gauche de Topaze) permettant d’afficher une page (pop up) à tout moment.

Je m’explique : je modifie une charte pour un jeu sérieux et j’aimerais qu’un « tableau de bord » soit accessible à tout moment, je me suis dit que le système utilisé pour les abréviations, bibliographie etc. pourrait être pratique mais je n’ai pas réussi à ajouter un « li » à la suite de ces éléments en passant par du jQuery (est-ce à cause de l’iframe ?).

Ou si cela est trop complexe, peut-on faire en sorte que la mascotte soit cliquable ? Ou avez-vous d’autres solutions ?
(j’ai bien pensé à ajouter l’étape « tableau de bord » au niveau de chaque enchaînement, mais il me semble qu’on ne peut pas encore détecter à quelle étape était le joueur juste avant pour le faire revenir sur cette étape…)

Merci d’avance,

Gaëlle

Bonjour,
Peut être une piste pour afficher un tableau de bord.
Pour ma part, je suis passé par un « indicateur calculé automatiquement ».
Dans le script en javascript j’ai généré le code html pour mon tableau de bord:

var html;
html='<p><B> Tableau de bord </B>';
html+='<div id="id1">';
html+='<label>Temps écoulé :</label><progress   value="'++'" max="40"> </progress>' ++' jour(s)<br>';
html+='</div>';
return html;

Ensuite j’affiche l’indicateur à l’endroit souhaité.

Willy

Bonjour,
Merci Willy. Nous avons actuellement la même chose pour notre tableau de bord, mais j’aimerais qu’il soit disponible n’importe quand, qu’un lien permette de se rendre sur cette page puis de revenir à l’endroit précédemment visité, mais je doute que cela soit possible. Je pense que je vais devoir trouver une solution plus simple (par exemple un accès depuis une map principale).
(Si quelqu’un a une autre idée, je suis preneuse, cela peut toujours servir !)

Bien cordialement,
Gaëlle

Salut Gaëlle,

Si tu t’autorises à faire une extension qui ajoute un générateur, tu peux :

  • dupliquer les templates existants et y ajouter une div id=« board »
    hidden=« true » avec la structure html de ton tableau de bord.
  • ajouter un lien ou bouton qui affiche la div (masque la div de
    contenu et affiche la div board) et complète le tableau de bord avec des
    indicateurs que tu récupères en javascript.

Comme ça, tu resteras sur le même nœud Topaze, donc si tu switch
l’affichage de tes div, tu gardes tout le contexte de l’utilisateur
(page, réponses, etc.).
La présence du bouton d’affichage du tableau de bord dans le template te
certifie que le bouton sera bien présent sur toutes les pages (qui
utilisent ce template).

Tu peux faire la même chose, complètement en js dans le skin.js (ajout
d’une div et d’un bouton dans des endroits repérés dans le template). Je
te conseille néanmoins la première solution.

Si ça peut t’aider, tu peux utiliser les libs standards de Scenari
scPaLib
et
scDynLib
qui servent respectivement à sélectionner des nœuds html dans une page
ou à modifier du html.
Thibaut

Bonjour Thibaut,
Merci, d’après ce que je comprends c’est exactement ce que je recherche !
J’aurais juste besoin de quelques petites précisions pour la première option :

  • par « faire une extension qui ajoute un générateur » cela signifie juste de créer une nouvelle charte ?
  • comment ajouter une div avec la structure html de mon tableau de bord ? car (à moins que je n’ai pas cherché au bon endroit) je n’ai pas accès à l’html. Est-ce avec les libs donnés à la fin de ton message ou ils ne sont utiles que pour la 2e option ?

Merci d’avance,
Gaëlle

Si tu n’as jamais manipulé SCENARIbuilder, oublies l’option 1, il faut
rentrer dans le framework et modifier un générateur.

Donc, l’option 2 dans le skin.js, tu ajoutes un scOnloads qui ajoute une
div#board et qui contient le contenu de ton tableau de bord.
Toujours dans le onload, tu ajoutes un bouton ou un lien dans ta page
qui affiche le tableau.

Si tu n’arrives pas à modifier ta page, dans skin.js, ça peut être à
cause de la frame. Est-ce que tu aurais un lien vers une version du jeu
sérieux avec le bout de code du skin.js qui tente de modifier la page ?
Thibaut

Ah d’accord, en effet je n’ai jamais manipulé SCENARIbuilder. Le scOnloads serait une fonction (ou une variable ?) dans laquelle je rentrerai tout le code de mon tableau de bord dans une div ainsi qu’un bouton à côté ?
(Pour l’instant je n’ai pas encore de version du jeu à présenter, j’utilise un ancien jeu ECSPER fait sur Topaze pour refaire complètement la charte et ajouter cette fonctionnalité par la même occasion pour notre prochain jeu)

Gaëlle

Le scOnLoads est un service qui gère l’inscription à l’évènement onload
dans les publications Scenari.

Sam a publié un exemple il n’y a pas longtemps :

Tu peux copier coller l’exemple dans le fichier skin.js et modifier le
contenu de la fonction onLoad. C’est là que tu crées ton tableau de bord
et que tu ajoutes les bouton. Pour créer facilement du html, tu peux
soit utiliser les fonctions de jQuery, soit utiliser le framework
Scenari avec les fonctions scDynUiMgr.addElement et scPaLib.findNode,
scPaLib.findNodes documentées dans les liens de mes précédents messages.

Thibaut

D’accord, je vais essayer tout ça alors !
Merci pour tes conseils,

Gaëlle

Bonjour,

Dans le cadre de la dérivation de Topaze utilisé pour créer https://www.faq2sciences.fr/ je pense qu’on a ajouter exactement ce que vous cherchez :

  • un Cas peut pointer un grain (item générique Opale - et un seul) en temps que « Synthèse de l’étude » :
  • Ce grain peut contenir tout ce que vous voulez, il est publié en subWindow ce qui donne :

Je me trompe ? Si c’est bien cela il reste voir si et quand cette fonctionnalité peut être ré-intégré à Topaze. A discuter…

Samuel.

Bonjour Samuel,

Oui c’est exactement ce que je cherche ! Ce serait vraiment pratique d’avoir cette fonctionnalité, n’hésitez pas à me tenir au courant quand elle sera disponible :slight_smile:

Gaëlle

Dans ce cas je t’invite à te rapprocher de Katia pour lui soumettre cette évolution.

Pas de soucis, je lui transmets le message.
Merci pour les conseils,

Gaëlle

Le mieux serait qu tu puisses te connecter sur une autre box pour effectuer la mise à jour.