scripts/wiki/macro/Questionnaire.py
bobot 0570881d34 Mettre une balise span permet d'integrer la macro dans tous style wiki. On peut ainsi
mettre le texte de la macro en gras, en couleur, dans un tableau,...

darcs-hash:20070124090448-9e428-335854bcc023b1b09e6c0fd86bcd4f4fb46a2009.gz
2007-01-24 10:04:48 +01:00

70 lines
2 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 """<span id="result"> 0 </span>"""
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)