Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-platform
Commits
efb99da8
Commit
efb99da8
authored
May 25, 2016
by
muhammad-ammar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
address cale's feedback
parent
8d354302
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
270 additions
and
255 deletions
+270
-255
common/lib/xmodule/xmodule/capa_base.py
+1
-1
common/lib/xmodule/xmodule/css/capa/display.scss
+4
-4
common/lib/xmodule/xmodule/templates/problem/circuitschematic.yaml
+24
-24
common/lib/xmodule/xmodule/templates/problem/customgrader.yaml
+64
-62
common/lib/xmodule/xmodule/templates/problem/drag_and_drop.yaml
+25
-25
common/lib/xmodule/xmodule/templates/problem/formularesponse.yaml
+61
-56
common/lib/xmodule/xmodule/templates/problem/jsinput_response.yaml
+48
-41
common/lib/xmodule/xmodule/templates/problem/latex_problem.yaml
+0
-0
common/lib/xmodule/xmodule/templates/problem/problem_with_hint.yaml
+19
-18
common/lib/xmodule/xmodule/templates/problem/problem_with_hint_in_latex.yaml
+23
-23
common/lib/xmodule/xmodule/tests/test_capa_module.py
+1
-1
No files found.
common/lib/xmodule/xmodule/capa_base.py
View file @
efb99da8
...
@@ -663,7 +663,7 @@ class CapaMixin(CapaFields):
...
@@ -663,7 +663,7 @@ class CapaMixin(CapaFields):
else
:
else
:
check_button
=
False
check_button
=
False
check_button_checking
=
False
check_button_checking
=
False
content
=
{
content
=
{
'name'
:
self
.
display_name
,
'name'
:
self
.
display_name
,
'html'
:
html
,
'html'
:
html
,
...
...
common/lib/xmodule/xmodule/css/capa/display.scss
View file @
efb99da8
...
@@ -129,6 +129,10 @@ div.problem-progress {
...
@@ -129,6 +129,10 @@ div.problem-progress {
font-size
:
em
(
16
);
font-size
:
em
(
16
);
}
}
h3
.problem-header
{
margin-bottom
:
0
!
important
;
// needed to overrided the %hd-2 margin-bottom
}
// +Problem - Base
// +Problem - Base
// ====================
// ====================
div
.problem
{
div
.problem
{
...
@@ -153,10 +157,6 @@ div.problem {
...
@@ -153,10 +157,6 @@ div.problem {
div
.question
:not
(
:last-child
)
{
div
.question
:not
(
:last-child
)
{
margin-bottom
:
$baseline
;
margin-bottom
:
$baseline
;
}
}
h3
.problem-header
{
margin-bottom
:
0
!
important
;
// needed to overrided the %hd-2 margin-bottom
}
}
}
// +Problem - Choice Group
// +Problem - Choice Group
...
...
common/lib/xmodule/xmodule/templates/problem/circuitschematic.yaml
View file @
efb99da8
...
@@ -28,16 +28,16 @@ data: |
...
@@ -28,16 +28,16 @@ data: |
initial_value="[["v",[168,144,0],{"value":"dc(1)","_json_":0},["1","0"]],["r",[296,120,0],{"r":"1","_json_":1},["1","output"]],["L",[296,168,3],{"label":"output","_json_":2},["output"]],["w",[296,216,168,216]],["w",[168,216,168,192]],["w",[168,144,168,120]],["w",[168,120,296,120]],["g",[168,216,0],{"_json_":7},["0"]],["view",-67.49999999999994,-78.49999999999994,1.6000000000000003,"50","10","1G",null,"100","1","1000"]]"/>
initial_value="[["v",[168,144,0],{"value":"dc(1)","_json_":0},["1","0"]],["r",[296,120,0],{"r":"1","_json_":1},["1","output"]],["L",[296,168,3],{"label":"output","_json_":2},["output"]],["w",[296,216,168,216]],["w",[168,216,168,192]],["w",[168,144,168,120]],["w",[168,120,296,120]],["g",[168,216,0],{"_json_":7},["0"]],["view",-67.49999999999994,-78.49999999999994,1.6000000000000003,"50","10","1G",null,"100","1","1000"]]"/>
</center>
</center>
<answer type="loncapa/python">
<answer type="loncapa/python">
dc_value = "dc analysis not found"
dc_value = "dc analysis not found"
for response in submission[0]:
for response in submission[0]:
if response[0] == 'dc':
if response[0] == 'dc':
for node in response[1:]:
for node in response[1:]:
dc_value = node['output']
dc_value = node['output']
if dc_value == .5:
if dc_value == .5:
correct = ['correct']
correct = ['correct']
else:
else:
correct = ['incorrect']
correct = ['incorrect']
</answer>
</answer>
</schematicresponse>
</schematicresponse>
<solution>
<solution>
...
@@ -52,7 +52,7 @@ data: |
...
@@ -52,7 +52,7 @@ data: |
</div>
</div>
</solution>
</solution>
</question>
</question>
<question>
<question>
<p>Make a high-pass filter.</p>
<p>Make a high-pass filter.</p>
<schematicresponse>
<schematicresponse>
...
@@ -62,21 +62,21 @@ data: |
...
@@ -62,21 +62,21 @@ data: |
initial_value="[["v",[160,152,0],{"name":"v1","value":"sin(0,1,1,0,0)","_json_":0},["1","0"]],["w",[160,200,240,200]],["g",[160,200,0],{"_json_":2},["0"]],["L",[240,152,3],{"label":"NodeA","_json_":3},["NodeA"]],["s",[240,152,0],{"color":"cyan","offset":"0","_json_":4},["NodeA"]],["view",64.55878906250004,54.114697265625054,2.5000000000000004,"50","10","1G",null,"100","1","1000"]]"/>
initial_value="[["v",[160,152,0],{"name":"v1","value":"sin(0,1,1,0,0)","_json_":0},["1","0"]],["w",[160,200,240,200]],["g",[160,200,0],{"_json_":2},["0"]],["L",[240,152,3],{"label":"NodeA","_json_":3},["NodeA"]],["s",[240,152,0],{"color":"cyan","offset":"0","_json_":4},["NodeA"]],["view",64.55878906250004,54.114697265625054,2.5000000000000004,"50","10","1G",null,"100","1","1000"]]"/>
</center>
</center>
<answer type="loncapa/python">
<answer type="loncapa/python">
ac_values = None
ac_values = None
for response in submission[0]:
for response in submission[0]:
if response[0] == 'ac':
if response[0] == 'ac':
for node in response[1:]:
for node in response[1:]:
ac_values = node['NodeA']
ac_values = node['NodeA']
print "the ac analysis value:", ac_values
print "the ac analysis value:", ac_values
if ac_values == None:
if ac_values == None:
correct = ['incorrect']
correct = ['incorrect']
elif ac_values[0][1] < ac_values[1][1]:
elif ac_values[0][1] < ac_values[1][1]:
correct = ['correct']
correct = ['correct']
else:
else:
correct = ['incorrect']
correct = ['incorrect']
</answer>
</answer>
</schematicresponse>
</schematicresponse>
<solution>
<solution>
<div class="detailed-solution">
<div class="detailed-solution">
<p>Explanation</p>
<p>Explanation</p>
...
...
common/lib/xmodule/xmodule/templates/problem/customgrader.yaml
View file @
efb99da8
...
@@ -4,35 +4,37 @@ metadata:
...
@@ -4,35 +4,37 @@ metadata:
markdown
:
!!null
markdown
:
!!null
data
:
|
data
:
|
<problem>
<problem>
<question>
<question>
<p>
<p>
In custom Python-evaluated input (also called "write-your-own-grader"
In custom Python-evaluated input (also called "write-your-own-grader"
problems), the grader uses a Python script that you create and embed in
problems), the grader uses a Python script that you create and embed in
the problem to evaluate a learner's response or provide hints. These
the problem to evaluate a learner's response or provide hints. These
problems can be any type. Numerical input and text input problems are
problems can be any type. Numerical input and text input problems are
the most common write-your-own-grader problems.
the most common write-your-own-grader problems.
</p>
</p>
<p>
<p>
You can use script tag format or answer tag format to create these problems.
You can use script tag format or answer tag format to create these problems.
</p>
</p>
<p>
<p>
You can create custom Python-evaluated input problems that provide
You can create custom Python-evaluated input problems that provide
partial credit or that randomize variables in the Python code. You can
partial credit or that randomize variables in the Python code. You can
also add images to the solution by using an HTML "img" tag. Note that
also add images to the solution by using an HTML "img" tag. Note that
the "img" tag must be between the "div" tags that are inside the
the "img" tag must be between the "div" tags that are inside the
"solution" tags, and that learners do not see these images until they
"solution" tags, and that learners do not see these images until they
click the "Show Answer" button.
click the "Show Answer" button.
</p>
</p>
<p> For more information, see <a
<p>
href="http://edx.readthedocs.io/projects/edx-partner-course-staff/en/latest/exercises_tools/custom_python.html" target="_blank">
For more information, see <a
Write-Your-Own-Grader Problem</a> in <i>Building and Running an edX Course</i>.
href="http://edx.readthedocs.io/projects/edx-partner-course-staff/en/latest/exercises_tools/custom_python.html" target="_blank">
</p>
Write-Your-Own-Grader Problem</a> in <i>Building and Running an edX Course</i>.
<p>When you add the problem, be sure to select <strong>Settings</strong>
</p>
to specify a <strong>Display Name</strong> and other values that apply.</p>
<p>
<p>You can use the following example problem as a model.</p>
When you add the problem, be sure to select <strong>Settings</strong>
<hr />
to specify a <strong>Display Name</strong> and other values that apply.</p>
<p>You can use the following example problem as a model.</p>
<script type="loncapa/python">
<hr />
<script type="loncapa/python">
def test_add(expect, ans):
def test_add(expect, ans):
try:
try:
...
@@ -45,37 +47,36 @@ data: |
...
@@ -45,37 +47,36 @@ data: |
def test_add_to_ten(expect, ans):
def test_add_to_ten(expect, ans):
return test_add(10, ans)
return test_add(10, ans)
</script>
</script>
<p>Enter two integers that sum to 10.</p>
<p>Enter two integers that sum to 10.</p>
<customresponse cfn="test_add_to_ten">
<customresponse cfn="test_add_to_ten">
<textline size="40" correct_answer="3" label="Integer #1"/><br/>
<textline size="40" correct_answer="3" label="Integer #1"/><br/>
<textline size="40" correct_answer="7" label="Integer #2"/>
<textline size="40" correct_answer="7" label="Integer #2"/>
</customresponse>
</customresponse>
<solution>
<solution>
<div class="detailed-solution">
<div class="detailed-solution">
<p>Explanation</p>
<p>Explanation</p>
<p>Any set of integers on the line \(y = 10 - x\) satisfy these constraints.</p>
<p>Any set of integers on the line \(y = 10 - x\) satisfy these constraints.</p>
</div>
</div>
</solution>
</solution>
</question>
</question>
<question>
<question>
<p>Enter two integers that sum to 20.</p>
<p>Enter two integers that sum to 20.</p>
<customresponse cfn="test_add" expect="20">
<customresponse cfn="test_add" expect="20">
<textline size="40" correct_answer="11" label="Integer #1"/><br/>
<textline size="40" correct_answer="11" label="Integer #1"/><br/>
<textline size="40" correct_answer="9" label="Integer #2"/>
<textline size="40" correct_answer="9" label="Integer #2"/>
</customresponse>
</customresponse>
<solution>
<solution>
<div class="detailed-solution">
<div class="detailed-solution">
<p>Explanation</p>
<p>Explanation</p>
<p>Any set of integers on the line \(y = 20 - x\) satisfy these constraints.</p>
<p>Any set of integers on the line \(y = 20 - x\) satisfy these constraints.</p>
<p>To add an image to the solution, use an HTML "img" tag. Make sure to include alt text.</p>
<p>To add an image to the solution, use an HTML "img" tag. Make sure to include alt text.</p>
<img src="/static/images/placeholder-image.png" width="400"
<img src="/static/images/placeholder-image.png" width="400"
alt="Description of image, with a primary goal of explaining its
alt="Description of image, with a primary goal of explaining its
relevance to the problem or concept being illustrated for someone
relevance to the problem or concept being illustrated for someone
who is unable to see the image."/>
who is unable to see the image."/>
</div>
</div>
</solution>
</solution>
</question>
</question>
</problem>
</problem>
\ No newline at end of file
common/lib/xmodule/xmodule/templates/problem/drag_and_drop.yaml
View file @
efb99da8
...
@@ -37,22 +37,22 @@ data: |
...
@@ -37,22 +37,22 @@ data: |
<draggable id="11" label="few"/>
<draggable id="11" label="few"/>
</drag_and_drop_input>
</drag_and_drop_input>
<answer type="loncapa/python">
<answer type="loncapa/python">
correct_answer = {
correct_answer = {
'1': [[70, 150], 121],
'1': [[70, 150], 121],
'6': [[190, 150], 121],
'6': [[190, 150], 121],
'8': [[190, 150], 121],
'8': [[190, 150], 121],
'2': [[310, 150], 121],
'2': [[310, 150], 121],
'9': [[310, 150], 121],
'9': [[310, 150], 121],
'11': [[310, 150], 121],
'11': [[310, 150], 121],
'4': [[420, 150], 121],
'4': [[420, 150], 121],
'7': [[420, 150], 121],
'7': [[420, 150], 121],
'3': [[550, 150], 121],
'3': [[550, 150], 121],
'5': [[550, 150], 121],
'5': [[550, 150], 121],
'10': [[550, 150], 121]}
'10': [[550, 150], 121]}
if draganddrop.grade(submission[0], correct_answer):
if draganddrop.grade(submission[0], correct_answer):
correct = ['correct']
correct = ['correct']
else:
else:
correct = ['incorrect']
correct = ['incorrect']
</answer>
</answer>
</customresponse>
</customresponse>
</question>
</question>
...
@@ -77,15 +77,15 @@ data: |
...
@@ -77,15 +77,15 @@ data: |
<target id="t10" x="591" y="132" w="70" h="70"/>
<target id="t10" x="591" y="132" w="70" h="70"/>
</drag_and_drop_input>
</drag_and_drop_input>
<answer type="loncapa/python">
<answer type="loncapa/python">
correct_answer = [{
correct_answer = [{
'draggables': ['1', '2'],
'draggables': ['1', '2'],
'targets': ['t2', 't3', 't4' ],
'targets': ['t2', 't3', 't4' ],
'rule':'anyof'
'rule':'anyof'
}]
}]
if draganddrop.grade(submission[0], correct_answer):
if draganddrop.grade(submission[0], correct_answer):
correct = ['correct']
correct = ['correct']
else:
else:
correct = ['incorrect']
correct = ['incorrect']
</answer>
</answer>
</customresponse>
</customresponse>
</question>
</question>
...
...
common/lib/xmodule/xmodule/templates/problem/formularesponse.yaml
View file @
efb99da8
...
@@ -3,58 +3,63 @@ metadata:
...
@@ -3,58 +3,63 @@ metadata:
display_name
:
Math Expression Input
display_name
:
Math Expression Input
markdown
:
!!null
markdown
:
!!null
data
:
|
data
:
|
<problem>
<problem>
<question>
<question>
<p>
<p>
In math expression input problems, learners enter text that represents a
In math expression input problems, learners enter text that represents a
mathematical expression into a field, and text is converted to a symbolic
mathematical expression into a field, and text is converted to a symbolic
expression that appears below that field. You can refer learners to
expression that appears below that field. You can refer learners to
<a href="http://edx.readthedocs.io/projects/edx-guide-for-students/en/latest/completing_assignments/SFD_mathformatting.html" target="_blank">
<a href="http://edx.readthedocs.io/projects/edx-guide-for-students/en/latest/completing_assignments/SFD_mathformatting.html" target="_blank">
Entering Mathematical and Scientific Expressions</a> in the <i>EdX Learner's
Entering Mathematical and Scientific Expressions</a> in the <i>EdX Learner's
Guide</i> for information about how to enter text into the field.
Guide</i> for information about how to enter text into the field.
</p>
</p>
<p>
<p>
Math expression problems can include unknown variables and relatively
Math expression problems can include unknown variables and relatively
complicated symbolic expressions. The grader uses a numerical sampling to
complicated symbolic expressions. The grader uses a numerical sampling to
determine whether the student’s response matches your math expression, to a
determine whether the student’s response matches your math expression, to a
specified numerical tolerance. You must specify the allowed variables in the
specified numerical tolerance. You must specify the allowed variables in the
expression as well as the range of values for each variable.
expression as well as the range of values for each variable.
</p>
</p>
<p>
<p>
To create these problems, you use MathJax to change your plain text into
To create these problems, you use MathJax to change your plain text into
"beautiful math." For more information about how to use MathJax in Studio,
"beautiful math." For more information about how to use MathJax in Studio,
see <a href="http://edx.readthedocs.io/projects/edx-partner-course-staff/en/latest/exercises_tools/mathjax.html" target="_blank">
see <a href="http://edx.readthedocs.io/projects/edx-partner-course-staff/en/latest/exercises_tools/mathjax.html" target="_blank">
A Brief Introduction to MathJax in Studio</a> in <i>Building and Running an edx
A Brief Introduction to MathJax in Studio</a> in <i>Building and Running an edx
Course</i>.
Course</i>.
</p>
</p>
<p>When you add the problem, be sure to select <strong>Settings</strong>
<p>
to specify a <strong>Display Name</strong> and other values that apply.</p>
When you add the problem, be sure to select <strong>Settings</strong>
<p>You can use the following example problems as models.</p>
to specify a <strong>Display Name</strong> and other values that apply.
</p>
<p>Write an expression for the product of \( R_1\), \( R_2\), and
<p>You can use the following example problems as models.</p>
the inverse of \( R_3\) .</p>
<formularesponse type="ci" samples="R_1,R_2,R_3@1,2,3:3,4,5#10" answer="$VoVi">
<p>
<responseparam type="tolerance" default="0.00001"/>
Write an expression for the product of \( R_1\), \( R_2\), and
<formulaequationinput size="40" label="Enter the equation"/>
the inverse of \( R_3\) .
</formularesponse>
</p>
<formularesponse type="ci" samples="R_1,R_2,R_3@1,2,3:3,4,5#10" answer="$VoVi">
<script type="loncapa/python">
<responseparam type="tolerance" default="0.00001"/>
VoVi = "(R_1*R_2)/R_3"
<formulaequationinput size="40" label="Enter the equation"/>
</script>
</formularesponse>
</question>
<script type="loncapa/python">
<question>
VoVi = "(R_1*R_2)/R_3"
<p>Let \( x\) be a variable, and let \( n\) be an arbitrary constant.
</script>
What is the derivative of \( x^n\)?</p>
</question>
<script type="loncapa/python">
<question>
derivative = "n*x^(n-1)"
<p>
</script>
Let \( x\) be a variable, and let \( n\) be an arbitrary constant.
What is the derivative of \( x^n\)?
<formularesponse type="ci" samples="x,n@1,2:3,4#10" answer="$derivative">
</p>
<responseparam type="tolerance" default="0.00001"/>
<formulaequationinput size="40" label="Enter the equation"/>
<script type="loncapa/python">
</formularesponse>
derivative = "n*x^(n-1)"
</question>
</script>
</problem>
<formularesponse type="ci" samples="x,n@1,2:3,4#10" answer="$derivative">
\ No newline at end of file
<responseparam type="tolerance" default="0.00001"/>
<formulaequationinput size="40" label="Enter the equation"/>
</formularesponse>
</question>
</problem>
\ No newline at end of file
common/lib/xmodule/xmodule/templates/problem/jsinput_response.yaml
View file @
efb99da8
...
@@ -5,33 +5,37 @@ metadata:
...
@@ -5,33 +5,37 @@ metadata:
showanswer
:
never
showanswer
:
never
data
:
|
data
:
|
<problem>
<problem>
<question>
<question>
<p>
<p>
In these problems (also called custom JavaScript problems or JS Input
In these problems (also called custom JavaScript problems or JS Input
problems), you add a problem or tool that uses JavaScript in Studio.
problems), you add a problem or tool that uses JavaScript in Studio.
Studio embeds the problem in an IFrame so that your students can
Studio embeds the problem in an IFrame so that your students can
interact with it in the LMS. You can grade your students' work using
interact with it in the LMS. You can grade your students' work using
JavaScript and some basic Python, and the grading is integrated into the
JavaScript and some basic Python, and the grading is integrated into the
edX grading system.
edX grading system.
</p>
</p>
<p>
<p>
The JS Input problem that you create must use HTML, JavaScript, and
The JS Input problem that you create must use HTML, JavaScript, and
cascading style sheets (CSS). You can use any application creation tool,
cascading style sheets (CSS). You can use any application creation tool,
such as the Google Web Toolkit (GWT), to create your JS Input problem.
such as the Google Web Toolkit (GWT), to create your JS Input problem.
</p>
</p>
<p>
<p>
For more information, see
For more information, see
<a href="http://edx.readthedocs.io/projects/edx-partner-course-staff/en/latest/exercises_tools/custom_javascript.html" target="_blank">
<a href="http://edx.readthedocs.io/projects/edx-partner-course-staff/en/latest/exercises_tools/custom_javascript.html" target="_blank">
Custom JavaScript Problem</a> in <i>Building and Running an edX Course</i>.
Custom JavaScript Problem</a> in <i>Building and Running an edX Course</i>.
</p>
</p>
<p>JavaScript developers can also see
<p>
<a href="http://edx.readthedocs.io/projects/edx-developer-guide/en/latest/extending_platform/javascript.html" target="_blank">
JavaScript developers can also see
Custom JavaScript Applications</a> in the <i>EdX Developer's Guide</i>.</p>
<a href="http://edx.readthedocs.io/projects/edx-developer-guide/en/latest/extending_platform/javascript.html" target="_blank">
<p>When you add the problem, be sure to select <strong>Settings</strong>
Custom JavaScript Applications</a> in the <i>EdX Developer's Guide</i>.
to specify a <strong>Display Name</strong> and other values that apply.</p>
</p>
<p>You can use the following example problem as a model.</p>
<p>
When you add the problem, be sure to select <strong>Settings</strong>
<script type="loncapa/python">
to specify a <strong>Display Name</strong> and other values that apply.
</p>
<p>You can use the following example problem as a model.</p>
<script type="loncapa/python">
<![CDATA[
<![CDATA[
import json
import json
def vglcfn(e, ans):
def vglcfn(e, ans):
...
@@ -53,18 +57,20 @@ data: |
...
@@ -53,18 +57,20 @@ data: |
return selectedObjects["cylinder"] and not selectedObjects["cube"]
return selectedObjects["cylinder"] and not selectedObjects["cube"]
'''
'''
]]>
]]>
</script>
</script>
<p>In the following image, click the objects until the cone is yellow
<p>
and the cube is blue.</p>
In the following image, click the objects until the cone is yellow
<customresponse cfn="vglcfn">
and the cube is blue.
<jsinput gradefn="WebGLDemo.getGrade"
</p>
get_statefn="WebGLDemo.getState"
<customresponse cfn="vglcfn">
set_statefn="WebGLDemo.setState"
<jsinput gradefn="WebGLDemo.getGrade"
initial_state='{"selectedObjects":{"cube":true,"cylinder":false}}'
get_statefn="WebGLDemo.getState"
width="400"
set_statefn="WebGLDemo.setState"
height="400"
initial_state='{"selectedObjects":{"cube":true,"cylinder":false}}'
html_file="https://studio.edx.org/c4x/edX/DemoX/asset/webGLDemo.html"
width="400"
sop="false"/>
height="400"
</customresponse>
html_file="https://studio.edx.org/c4x/edX/DemoX/asset/webGLDemo.html"
</question>
sop="false"/>
</customresponse>
</question>
</problem>
</problem>
\ No newline at end of file
common/lib/xmodule/xmodule/templates/problem/latex_problem.yaml
View file @
efb99da8
This diff is collapsed.
Click to expand it.
common/lib/xmodule/xmodule/templates/problem/problem_with_hint.yaml
View file @
efb99da8
...
@@ -4,14 +4,14 @@ metadata:
...
@@ -4,14 +4,14 @@ metadata:
markdown
:
!!null
markdown
:
!!null
data
:
|
data
:
|
<problem>
<problem>
<question>
<question>
<text>
<text>
<p>
<p>
<h4>Problem With Adaptive Hint</h4>
<h4>Problem With Adaptive Hint</h4>
</p>
</p>
<p>
<p>
This problem demonstrates a question with hints, based on using the <tt class="tt">hintfn</tt> method. </p>
This problem demonstrates a question with hints, based on using the <tt class="tt">hintfn</tt> method. </p>
<script type="text/python" system_path="python_lib">
<script type="text/python" system_path="python_lib">
def test_str(expect, ans):
def test_str(expect, ans):
print expect, ans
print expect, ans
ans = ans.strip("'")
ans = ans.strip("'")
...
@@ -36,14 +36,14 @@ data: |
...
@@ -36,14 +36,14 @@ data: |
if hint:
if hint:
hint = "<font color='blue'>Hint: {0}</font>".format(hint)
hint = "<font color='blue'>Hint: {0}</font>".format(hint)
new_cmap.set_hint_and_mode(aid,hint,'always')
new_cmap.set_hint_and_mode(aid,hint,'always')
</script>
</script>
<label>
<label>
What is the best programming language that exists today? You may enter your answer in upper or lower case, with or without quotes.
What is the best programming language that exists today? You may enter your answer in upper or lower case, with or without quotes.
<customresponse cfn="test_str" expect="python">
<customresponse cfn="test_str" expect="python">
<textline correct_answer="python"/>
<textline correct_answer="python"/>
<hintgroup hintfn="hint_fn"/>
<hintgroup hintfn="hint_fn"/>
</customresponse>
</customresponse>
</label>
</label>
</text>
</text>
</question>
</question>
</problem>
</problem>
\ No newline at end of file
common/lib/xmodule/xmodule/templates/problem/problem_with_hint_in_latex.yaml
View file @
efb99da8
...
@@ -58,30 +58,30 @@ data: |
...
@@ -58,30 +58,30 @@ data: |
This problem demonstrates a question with hints, based on using the <tt class="tt">hintfn</tt> method.
This problem demonstrates a question with hints, based on using the <tt class="tt">hintfn</tt> method.
</p>
</p>
<script type="text/python" system_path="python_lib">
<script type="text/python" system_path="python_lib">
def test_str(expect, ans):
def test_str(expect, ans):
print expect, ans
print expect, ans
ans = ans.strip("'")
ans = ans.strip("'")
ans = ans.strip('"')
ans = ans.strip('"')
return expect == ans.lower()
return expect == ans.lower()
def hint_fn(answer_ids, student_answers, new_cmap, old_cmap):
def hint_fn(answer_ids, student_answers, new_cmap, old_cmap):
aid = answer_ids[0]
aid = answer_ids[0]
ans = str(student_answers[aid]).lower()
ans = str(student_answers[aid]).lower()
print 'hint_fn called, ans=', ans
print 'hint_fn called, ans=', ans
hint = ''
hint = ''
if 'java' in ans:
if 'java' in ans:
hint = 'that is only good for drinking'
hint = 'that is only good for drinking'
elif 'perl' in ans:
elif 'perl' in ans:
hint = 'not that rich'
hint = 'not that rich'
elif 'pascal' in ans:
elif 'pascal' in ans:
hint = 'that is a beatnick language'
hint = 'that is a beatnick language'
elif 'fortran' in ans:
elif 'fortran' in ans:
hint = 'those were the good days'
hint = 'those were the good days'
elif 'clu' in ans:
elif 'clu' in ans:
hint = 'you must be invariant'
hint = 'you must be invariant'
if hint:
if hint:
hint = "<font color='blue'>Hint: {0}</font>".format(hint)
hint = "<font color='blue'>Hint: {0}</font>".format(hint)
new_cmap.set_hint_and_mode(aid,hint,'always')
new_cmap.set_hint_and_mode(aid,hint,'always')
</script>
</script>
<label>
<label>
What is the best programming language that exists today? You may enter your answer in upper or lower case, with or without quotes.
What is the best programming language that exists today? You may enter your answer in upper or lower case, with or without quotes.
...
...
common/lib/xmodule/xmodule/tests/test_capa_module.py
View file @
efb99da8
...
@@ -1344,7 +1344,7 @@ class CapaModuleTest(unittest.TestCase):
...
@@ -1344,7 +1344,7 @@ class CapaModuleTest(unittest.TestCase):
# Check the AJAX call that gets the hint by question id and hint index
# Check the AJAX call that gets the hint by question id and hint index
for
question_id
in
range
(
num_questions
):
for
question_id
in
range
(
num_questions
):
for
hint_index
in
(
0
,
1
,
2
):
for
hint_index
in
range
(
3
):
result
=
module
.
get_demand_hint
(
question_id
,
hint_index
)
result
=
module
.
get_demand_hint
(
question_id
,
hint_index
)
hint_num
=
hint_index
%
2
hint_num
=
hint_index
%
2
self
.
assertEqual
(
self
.
assertEqual
(
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment