1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/examples/Common/QuestionPlayer/Resources/distill_responses.xsl Sat Nov 22 23:30:49 2008 +0100
1.3 @@ -0,0 +1,44 @@
1.4 +<?xml version="1.0" encoding="utf-8"?>
1.5 +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
1.6 + version="1.0">
1.7 +
1.8 + <!-- Restructure questions. -->
1.9 +
1.10 + <xsl:template match="question">
1.11 + <xsl:copy>
1.12 + <xsl:if test="@selected">
1.13 + <xsl:element name="response">
1.14 + <xsl:apply-templates select="@selected"/>
1.15 + <xsl:for-each select="choice[position() = number(current()/@selected)]">
1.16 + <xsl:if test="not(response-type/@value = 'choice')">
1.17 + <xsl:apply-templates select="@response-text"/>
1.18 + </xsl:if>
1.19 + </xsl:for-each>
1.20 + </xsl:element>
1.21 + </xsl:if>
1.22 + <xsl:apply-templates select="choice"/>
1.23 + </xsl:copy>
1.24 + </xsl:template>
1.25 +
1.26 + <xsl:template match="choice">
1.27 + <xsl:if test="@selected = 'true' or response-type/@value='text'">
1.28 + <xsl:element name="response">
1.29 + <xsl:attribute name="selected"><xsl:value-of select="position()"/></xsl:attribute>
1.30 + <xsl:if test="not(response-type/@value = 'choice')">
1.31 + <xsl:apply-templates select="@response-text"/>
1.32 + </xsl:if>
1.33 + </xsl:element>
1.34 + </xsl:if>
1.35 + </xsl:template>
1.36 +
1.37 +
1.38 +
1.39 + <!-- Replicate unknown elements. -->
1.40 +
1.41 + <xsl:template match="@*|node()">
1.42 + <xsl:copy>
1.43 + <xsl:apply-templates select="@*|node()"/>
1.44 + </xsl:copy>
1.45 + </xsl:template>
1.46 +
1.47 +</xsl:stylesheet>
2.1 --- a/examples/Common/QuestionPlayer/Resources/player_template.xhtml Sat Nov 22 23:27:42 2008 +0100
2.2 +++ b/examples/Common/QuestionPlayer/Resources/player_template.xhtml Sat Nov 22 23:30:49 2008 +0100
2.3 @@ -12,6 +12,12 @@
2.4 <body template:element="questionnaire">
2.5 <h1>Questionnaire</h1>
2.6
2.7 +<div template:if="@submitted = 'true'">
2.8 + <p>
2.9 + Thank you for sending your answers!
2.10 + </p>
2.11 +</div>
2.12 +
2.13 <form method="POST" action="">
2.14
2.15 <div class="questionnaire">
2.16 @@ -46,15 +52,15 @@
2.17
2.18 <input template:if="../@choice-response = 'multiple'"
2.19 type="checkbox"
2.20 - name="{template:other-list-attributes('selected', 'value', ..)}" value="{@response-choice}"
2.21 - template:expr="count(../selected[@value = current()/@response-choice]) > 0" template:expr-attr="checked" />
2.22 + template:attribute-button="selected,true,checked"
2.23 + name="..." value="..." />
2.24
2.25 <!-- Show radio boxes. -->
2.26
2.27 <input template:if="not(../@choice-response = 'multiple')"
2.28 type="radio"
2.29 - name="{template:other-attributes('selected', ..)}" value="{@response-choice}"
2.30 - template:expr="../@selected = @response-choice" template:expr-attr="checked" />
2.31 + name="{template:other-attributes('selected', ..)}" value="{count(preceding-sibling::choice) + 1}"
2.32 + template:expr="../@selected = string(count(preceding-sibling::choice) + 1)" template:expr-attr="checked" />
2.33
2.34 </span>
2.35
2.36 @@ -81,7 +87,7 @@
2.37
2.38 </div>
2.39
2.40 -<div class="operations">
2.41 +<div class="operations" template:if="not(@submitted = 'true')">
2.42
2.43 <p>
2.44 <input type="submit" value="Update" name="update" /> to refresh the form.
3.1 --- a/examples/Common/QuestionPlayer/__init__.py Sat Nov 22 23:27:42 2008 +0100
3.2 +++ b/examples/Common/QuestionPlayer/__init__.py Sat Nov 22 23:30:49 2008 +0100
3.3 @@ -34,12 +34,15 @@
3.4 template_resources = {
3.5 "questionnaire" : output("player_template.xhtml")
3.6 }
3.7 - #init_resources = {
3.8 - # "questionnaire" : input("player_template.xhtml")
3.9 - # }
3.10 + init_resources = {
3.11 + "questionnaire" : input("player_template.xhtml")
3.12 + }
3.13 document_resources = {
3.14 "questions" : "questions.xml"
3.15 }
3.16 + transform_resources = {
3.17 + "distill" : ["distill_responses.xsl"]
3.18 + }
3.19
3.20 def select_activity(self, trans, form):
3.21 form.set_activity("questionnaire")
3.22 @@ -65,10 +68,16 @@
3.23 repository = DirectoryRepository(storage_directory)
3.24 key = str(time.time())
3.25 output_filename = repository.lock(key, 1)
3.26 + distilled_output_filename = repository.lock("distilled-" + key, 1)
3.27 try:
3.28 + distill_xsl = self.prepare_transform("distill")
3.29 + distilled = self.get_result(distill_xsl, questionnaire)
3.30 + distilled.toStream(open(distilled_output_filename, "wb"), "utf-8", prettyprint=1)
3.31 questionnaire.toStream(open(output_filename, "wb"), "utf-8", prettyprint=1)
3.32 + questionnaire.documentElement.setAttribute("submitted", "true")
3.33 finally:
3.34 repository.unlock(key)
3.35 + repository.unlock("distilled-" + key)
3.36
3.37 # Site map initialisation.
3.38
4.1 --- a/examples/Common/Questionnaire/Resources/question_template.xhtml Sat Nov 22 23:27:42 2008 +0100
4.2 +++ b/examples/Common/Questionnaire/Resources/question_template.xhtml Sat Nov 22 23:30:49 2008 +0100
4.3 @@ -75,7 +75,7 @@
4.4
4.5 <!-- Repeat the questionnaire in preview mode. -->
4.6
4.7 -<div class="preview">
4.8 +<div class="preview" template:if="question">
4.9
4.10 <p>The preview of your questionnaire is shown here:</p>
4.11