Nouveau décompte Topaze / modification builder

Bonjour,

Voilà, j’ai créé des parcours avec Topaze, et j’aimerai mettre un temps limite sur chaque page d’exo. Cependant, le décompte actuel nécessite que je stipule vers quelle page renvoyer l’apprenant à la fin du décompte.
Or, je voudrais qu’à la fin du décompte, les réponses complétées de l’étudiant soient validées et que l’étudiant soit donc renvoyé vers tel ou tel autre parcours en fonction de son score, comme c’est le cas lorsqu’il appuie sur le bouton pour valider ses réponses.

J’ai ajouté dans builder (CountDown.XML et CountDown.xed) une nouvelle option de décompte dont le code est « valider » → oui/non. Seulement, je n’arrive pas à coder l’action de ce bouton pour que les réponses soient automatiquement validées à la fin du décompte.
Il me semble que c’est le fichier XSL CountDown qui gère ça.
Est-ce que quelqu’un pourrait m’aider pour rajouter dans ce fichier les lignes de code dont j’ai besoin ?

Merci

Salomé

Merci

Bonjour,

je vois que vous n’avez pas eu de réponse à votre question. Votre besoin est-il toujours d’actualité ?

Cdt,

Bonjour,

Si vous avez une solution oui cela m’intéresse toujours =)

Merci

Je mentionne @oliverka qui est la personne référente sur Topaze.

Bonjour,
Merci Loïc, mais builder dépasse hélas mes compétences, désolée, je ne peux pas répondre. @nicolas.boyer de Kelis pourrait sans doute apporter une réponse.
Bonne journée,
Katia

Bonjour

S’il était possible de voir ce que vous avez modifié exactement via une image ou un scar, ce serait plus pratique.
En gros si je comprend bien vous avez ajouté un champ valider à oui/non qui est sensé permettre de valider l’exercice et renvoyer vers l’étape correspondante.
Il y a effectivement un changement à faire dans : /mirage/web/transf/_xxx@countDown.xsl

ça se passe ici :

countDownMgr.fActionAfterCountDown = <xsl:value-of select="if(*/sp:countDown/*/sp:actionAfterCountDown/sp:next,concat('&quot;',getUrl(gotoSubModel(*/sp:countDown/*/sp:actionAfterCountDown/sp:next)),'&quot;'),if(*/sp:countDown/*/sp:actionAfterCountDown/sp:end,'&quot;end&quot;',*/sp:countDown/*/sp:actionAfterCountDown/sp:attemptsNumber))"/>;<xsl:if test="*/sp:countDown/*/sp:display">

Cela permet d’indiquer au javascript ce qui sera fait à la fin du décompte.
En admettant que vous ayez ajouter le champ au même endroit que : sp:actionAfterCountDown/sp:end, il faudrait donc rajouter une condition du type:

countDownMgr.fActionAfterCountDown = <xsl:value-of select="if(*/sp:countDown/*/sp:actionAfterCountDown/sp:next,concat('&quot;',getUrl(gotoSubModel(*/sp:countDown/*/sp:actionAfterCountDown/sp:next)),'&quot;'),if(*/sp:countDown/*/sp:actionAfterCountDown/sp:end,'&quot;end&quot;',if(*/sp:countDown/*/sp:actionAfterCountDown/sp:valid,'&quot;valid&quot;',*/sp:countDown/*/sp:actionAfterCountDown/sp:attemptsNumber)))"/>;<xsl:if test="*/sp:countDown/*/sp:display">

Cela dit comme il n’est pas prévu aujourd’hui de gérer la validation d’un exercice pour aller à l’étape suivante, il faut également modifier le javascript suivant : /mirage/web/wdt/mgr/countDownMgr.doss/countDownMgr.js

Cela se passe ligne 94 :

stop : function(){
	if (countDownMgr.fActionAfterCountDown =='end') {
		var vBarClassName = vRgt.className.indexOf("Open") != -1 ? "barOpened" : "barClosed";
		vRgt.className = vBarClassName + " endArcFra";
		vArc.innerHTML = '<div class="arcBk endArc"><h1 class="arcBk_ti"><span>'+countDownMgr.fStrings[0]+'</span></h1><div class="arcBk_co "><div class="endMsg">'+countDownMgr.fStrings[1]+'</div></div></div>';
	}
	else if(!isNaN(countDownMgr.fActionAfterCountDown)) {
		if(vCounter<countDownMgr.fActionAfterCountDown || countDownMgr.fActionAfterCountDown==0){
			vClock.reset();
			vClock.start();
			vCounter++;
		}
	}
	else if(scServices.scPreload) scServices.scPreload.goTo(scServices.scLoad.resolveDestUri("/co/"+countDownMgr.fActionAfterCountDown));
	else window.location.href = scServices.scLoad.resolveDestUri("/co/"+countDownMgr.fActionAfterCountDown);
},

Il faudrait probablement rajouter une condition du type:

if (countDownMgr.fActionAfterCountDown === 'valid') {
	document.querySelector('.validBtn').click();
}

Attention je ne sais pas si la classe validBtn existe, il faudrait vérifier qu’elle existe bien sur le bouton de validation
Par ailleurs, ce code n’est absolument pas testé et est donné à titre indicatif.

Cordialement,
Nicolas

1 « J'aime »

Bonjour,

Un grand merci pour votre aide, j’essaierai tout cela prochainement.
Je ne peux pas vous envoyer d’image pour l’instant parce que j’avais effacé le code en voyant qu’après cela dépassait mes compétences. Mais oui, effectivement valider oui/non que j’avais créé

Cordialement,
Salomé