scripts/wiki/macro/Questionnaire.py
bobot 52e9091bae Ajout de la possibilitéede choix multiples en mettant une * au débutde
l'argument

darcs-hash:20070123094006-9e428-7fcc357779bacd860bc707b1509ae03c4ea31bb7.gz
2007-01-23 10:40:06 +01:00

70 lines
1.9 KiB
Python
Executable file

#! /usr/bin/env python
# -*- encoding: iso-8859-15 -*-
#generation d'une question de questionnaire si il y a des arguments, sinon affiche le résultat
def parse(text):
ligne = text.split("\\")
question = []
for l in ligne:
l = l.split(":",1)
if len(l)>=2:
question+=[(l[0],l[1])]
return question
def question_choix_unique(f,QR):
r=""
id = QR[0][0]
r+=f.rawHTML("""<script type="text/javascript">
var point_%(id)s = 0
var point_globale = 0
function ajoute_Q%(id)s(point)
{
point_globale = point_globale + point - point_%(id)s
point_%(id)s = point
document.getElementById('result').innerHTML = point_globale
}
</script>
<p> %(Q)s </p>
""" % { "id" : id , "Q" : QR[0][1]})
QR=QR[1:]
for (point,rep) in QR:
r+=f.rawHTML("""<input type="radio" name="radio%(id)s" onclick="ajoute_Q%(id)s(%(point)s)" > %(rep)s<br>\n"""% { "point" : point , "id" : id, "rep" : rep})
return r
def question_choix_multiple(f,QR):
r=""
id = QR[0][0]
r+=f.rawHTML("""<script type="text/javascript">
var point_globale = 0
function ajoute_multiple(point,on)
{
if(on)
{point_globale = point_globale + point}
else
{point_globale = point_globale - point}
document.getElementById('result').innerHTML = point_globale
}
</script>
<p> %(Q)s </p>
""" % { "id" : id , "Q" : QR[0][1]})
QR=QR[1:]
for (point,rep) in QR:
r+=f.rawHTML("""<input type="checkbox" name="radio%(id)s" onclick="ajoute_multiple(%(point)s,this.checked)" > %(rep)s<br>\n"""% { "point" : point , "id" : id, "rep" : rep})
return r
def result(f):
return """<p id="result"> 0 </p>"""
def execute(macro,text):
f = macro.formatter
if text == "":
return result(f)
else:
QR = parse(text)
if QR[0][0][0]=='*':
return question_choix_multiple(f,QR)
else:
return question_choix_unique(f,QR)