From 8f8675e92bd1ddf5379b47280faa5460adfdd121 Mon Sep 17 00:00:00 2001 From: bobot Date: Tue, 30 Jan 2007 23:12:30 +0100 Subject: [PATCH] * Macro plus propre : 1 seul script au milieu du body * Ajout du calcul du pourcentage * Ajout d'un afficheur pour le pourcentage et pour le maximum de point * Plusieurs zone d'affichage de score sont supporte darcs-hash:20070130221230-9e428-ed8afdef281a339462d4107c93cd4f60e75cb21d.gz --- wiki/macro/Questionnaire.py | 127 ++++++++++++++++++++++++++---------- 1 file changed, 92 insertions(+), 35 deletions(-) diff --git a/wiki/macro/Questionnaire.py b/wiki/macro/Questionnaire.py index c4323949..0a76c819 100755 --- a/wiki/macro/Questionnaire.py +++ b/wiki/macro/Questionnaire.py @@ -3,6 +3,18 @@ #generation d'une question de questionnaire si il y a des arguments, sinon affiche le résultat +class questionnaire: + execute = 0 + liste_questions = [] + max_point = 0 + fonction_affiche = True + +def int_try(point): + try: + return int(point) + except ValueError : + return 0 + def parse(text): ligne = text.split("\\") question = [] @@ -12,59 +24,104 @@ def parse(text): question+=[(l[0],l[1])] return question -def question_choix_unique(f,QR): +def question_choix_unique(f,QR,quest): r="" id = QR[0][0] - r+=f.rawHTML(""" -

%(Q)s

- """ % { "id" : id , "Q" : QR[0][1]}) + r+=f.rawHTML(""" +

%(id)i : %(Q)s
+ """ % { "id" : quest.execute , "Q" : QR[0][1]}) QR=QR[1:] + max = 0 for (point,rep) in QR: - r+=f.rawHTML(""" %(rep)s
\n"""% { "point" : point , "id" : id, "rep" : rep}) + point = int_try(point) + if (max %(rep)s
\n"""% { "point" : point , "id" : quest.execute, "rep" : rep}) + quest.max_point += max + r += f.rawHTML("\n

\n") return r -def question_choix_multiple(f,QR): - r="" - id = QR[0][0] - r+=f.rawHTML(""" -

%(Q)s

- """ % { "id" : id , "Q" : QR[0][1]}) - QR=QR[1:] - for (point,rep) in QR: - r+=f.rawHTML(""" %(rep)s
\n"""% { "point" : point , "id" : id, "rep" : rep}) - return r + function ajoute(id_Q,point) + { + if(isNaN(pointQ[id_Q])){pointQ[id_Q]=0} + point_globale = point_globale + point - pointQ[id_Q] + pointQ[id_Q] = point + update() + } + +""" % {"max_point" : quest.max_point , "nb_quest" : quest.execute}) + else: + return "" +def result(f,quest): + return f.rawHTML(""" 0 """) -def result(f): - return """ 0 """ +def result_pourcent(f,quest): + return f.rawHTML(""" 0 """) + +def result_max(f,quest): + return f.text("%i" % quest.max_point) def execute(macro,text): + try: + macro._macro_questionnaire.execute +=1 + except : + macro._macro_questionnaire = questionnaire() + f = macro.formatter + quest = macro._macro_questionnaire + if text == "": - return result(f) + return fonction_javascript(f,quest) + result(f,quest) + elif text == "%": + return fonction_javascript(f,quest) + result_pourcent(f,quest) + elif text == "m": + return fonction_javascript(f,quest) + result_max(f,quest) else: QR = parse(text) if QR[0][0][0]=='*': - return question_choix_multiple(f,QR) + return question_choix_multiple(f,QR,quest) else: - return question_choix_unique(f,QR) + return question_choix_unique(f,QR,quest)