Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
problem-builder
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
OpenEdx
problem-builder
Commits
127c50db
Commit
127c50db
authored
Oct 26, 2015
by
Kelketek
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #84 from open-craft/instruction-message
Add instructional message to step blocks.
parents
dd144544
17aeea37
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
68 additions
and
3 deletions
+68
-3
problem_builder/public/css/problem-builder.css
+15
-0
problem_builder/public/js/mentoring_with_steps.js
+2
-0
problem_builder/public/js/step.js
+8
-1
problem_builder/step.py
+6
-1
problem_builder/templates/html/step.html
+5
-0
problem_builder/tests/integration/test_step_builder.py
+22
-1
problem_builder/tests/integration/xml_templates/step_builder_instruction.xml
+10
-0
No files found.
problem_builder/public/css/problem-builder.css
View file @
127c50db
...
...
@@ -229,3 +229,17 @@
.pb-clarification
span
.clarification
i
:hover
{
color
:
rgb
(
0
,
159
,
230
);
}
.mentoring
.sb-step
{
position
:
relative
;
}
.mentoring
.sb-step
.sb-step-message
{
position
:
absolute
;
top
:
50%
;
left
:
50%
;
transform
:
translate
(
-50%
,
-50%
);
padding
:
1.5em
;
background-color
:
white
;
box-shadow
:
0
10px
20px
#5C5C5C
;
}
\ No newline at end of file
problem_builder/public/js/mentoring_with_steps.js
View file @
127c50db
...
...
@@ -22,6 +22,7 @@ function MentoringWithStepsBlock(runtime, element) {
var
activeStep
=
$
(
'.mentoring'
,
element
).
data
(
'active-step'
);
var
reviewTipsTemplate
=
_
.
template
(
$
(
'#xblock-review-tips-template'
).
html
());
// Tips about specific questions the user got wrong
var
attemptsTemplate
=
_
.
template
(
$
(
'#xblock-attempts-template'
).
html
());
var
message
=
$
(
'.sb-step-message'
,
element
);
var
checkmark
,
submitDOM
,
nextDOM
,
reviewDOM
,
tryAgainDOM
,
gradeDOM
,
attemptsDOM
,
reviewTipsDOM
,
reviewLinkDOM
,
submitXHR
;
...
...
@@ -183,6 +184,7 @@ function MentoringWithStepsBlock(runtime, element) {
hideReviewStep
();
attemptsDOM
.
html
(
''
);
reviewTipsDOM
.
empty
().
hide
();
message
.
hide
();
}
function
updateNextLabel
()
{
...
...
problem_builder/public/js/step.js
View file @
127c50db
...
...
@@ -10,7 +10,8 @@ function MentoringStepBlock(runtime, element) {
}
}
var
submitXHR
,
resultsXHR
;
var
submitXHR
,
resultsXHR
,
message
=
$
(
element
).
find
(
'.sb-step-message'
);
function
callIfExists
(
obj
,
fn
)
{
if
(
typeof
obj
!==
'undefined'
&&
typeof
obj
[
fn
]
==
'function'
)
{
...
...
@@ -59,6 +60,12 @@ function MentoringStepBlock(runtime, element) {
submitXHR
=
$
.
post
(
handlerUrl
,
JSON
.
stringify
(
data
))
.
success
(
function
(
response
)
{
resultHandler
(
response
);
if
(
message
.
length
)
{
message
.
fadeIn
();
$
(
document
).
click
(
function
()
{
message
.
fadeOut
();
});
}
});
},
...
...
problem_builder/step.py
View file @
127c50db
...
...
@@ -107,7 +107,12 @@ class MentoringStepBlock(
default
=
_
(
"Next Step"
)
)
editable_fields
=
(
'display_name'
,
'show_title'
,
'next_button_label'
)
message
=
String
(
display_name
=
_
(
"Message"
),
help
=
_
(
"Feedback or instructional message which pops up after submitting."
),
)
editable_fields
=
(
'display_name'
,
'show_title'
,
'next_button_label'
,
'message'
)
@lazy
def
siblings
(
self
):
...
...
problem_builder/templates/html/step.html
View file @
127c50db
...
...
@@ -14,4 +14,9 @@
{% for child_content in child_contents %}
{{ child_content|safe }}
{% endfor %}
{% if self.message %}
<div
class=
"sb-step-message"
style=
"display:none;"
>
<div
class=
"sb-step-message-text"
>
{{ self.message }}
</div>
</div>
{% endif %}
</div>
problem_builder/tests/integration/test_step_builder.py
View file @
127c50db
...
...
@@ -100,7 +100,9 @@ class StepBuilderTest(MentoringAssessmentBaseTest, MultipleSliderBlocksTestMixin
runtime_patcher
.
start
()
self
.
addCleanup
(
runtime_patcher
.
stop
)
def
freeform_answer
(
self
,
number
,
step_builder
,
controls
,
text_input
,
result
,
saved_value
=
""
,
last
=
False
):
def
freeform_answer
(
self
,
number
,
step_builder
,
controls
,
text_input
,
result
,
saved_value
=
""
,
hold
=
False
,
last
=
False
):
self
.
expect_question_visible
(
number
,
step_builder
)
answer
=
step_builder
.
find_element_by_css_selector
(
"textarea.answer.editable"
)
...
...
@@ -111,6 +113,10 @@ class StepBuilderTest(MentoringAssessmentBaseTest, MultipleSliderBlocksTestMixin
self
.
assertEquals
(
saved_value
,
answer
.
get_attribute
(
"value"
))
if
not
saved_value
:
self
.
assert_disabled
(
controls
.
submit
)
if
last
:
self
.
assert_disabled
(
controls
.
review
)
else
:
self
.
assert_disabled
(
controls
.
next_question
)
answer
.
clear
()
...
...
@@ -119,13 +125,16 @@ class StepBuilderTest(MentoringAssessmentBaseTest, MultipleSliderBlocksTestMixin
self
.
assert_clickable
(
controls
.
submit
)
self
.
ending_controls
(
controls
,
last
)
if
not
last
:
self
.
assert_hidden
(
controls
.
review
)
self
.
assert_hidden
(
controls
.
try_again
)
controls
.
submit
.
click
()
self
.
do_submit_wait
(
controls
,
last
)
self
.
_assert_checkmark
(
step_builder
,
result
)
if
not
hold
:
self
.
do_post
(
controls
,
last
)
def
single_choice_question
(
self
,
number
,
step_builder
,
controls
,
choice_name
,
result
,
last
=
False
):
...
...
@@ -1217,3 +1226,15 @@ class StepBuilderTest(MentoringAssessmentBaseTest, MultipleSliderBlocksTestMixin
visible_overlays
=
[],
hidden_overlays
=
[
teacher_overlay
,
researchers_overlay
,
sheldon_overlay
,
yoda_overlay
]
)
def
test_instruction_message
(
self
):
step_builder
,
controls
=
self
.
load_assessment_scenario
(
"step_builder_instruction.xml"
,
{})
# Step 1
# Submit free-form answer, go to next step
self
.
freeform_answer
(
None
,
step_builder
,
controls
,
'This is the answer'
,
CORRECT
,
hold
=
True
,
last
=
True
)
message
=
step_builder
.
find_element_by_css_selector
(
'.sb-step-message'
)
self
.
wait_until_visible
(
message
)
self
.
assertEqual
(
message
.
text
,
'Hello!'
)
# Clicking in general should dismiss this message.
self
.
browser
.
execute_script
(
"$(document).trigger('click')"
)
self
.
wait_until_hidden
(
message
)
problem_builder/tests/integration/xml_templates/step_builder_instruction.xml
0 → 100644
View file @
127c50db
<step-builder
url_name=
"step-builder"
display_name=
"Step Builder"
max_attempts=
"1"
extended_feedback=
"True"
>
<sb-step
display_name=
"First step"
next_button_label=
"Next Challenge"
message=
"Hello!"
>
<pb-answer
name=
"goal"
question=
"What is your goal?"
/>
</sb-step>
<sb-review-step
/>
</step-builder>
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