Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-ora2
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-ora2
Commits
b69f9925
Commit
b69f9925
authored
Jan 31, 2015
by
Usman Khalid
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Studio editor can edit multiple prompts in student training step.
TNL-708
parent
8d5a842e
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
91 additions
and
14 deletions
+91
-14
openassessment/templates/openassessmentblock/edit/oa_edit_student_training.html
+5
-0
openassessment/templates/openassessmentblock/edit/oa_training_example.html
+7
-1
openassessment/xblock/schema.py
+1
-1
openassessment/xblock/static/js/openassessment-studio.min.js
+0
-0
openassessment/xblock/static/js/src/studio/oa_container_item.js
+31
-4
openassessment/xblock/static/js/src/studio/oa_edit.js
+7
-2
openassessment/xblock/static/js/src/studio/oa_edit_assessment.js
+1
-1
openassessment/xblock/static/js/src/studio/oa_edit_listeners.js
+23
-1
openassessment/xblock/static/js/src/studio/oa_edit_prompts.js
+3
-2
openassessment/xblock/studio_mixin.py
+13
-2
No files found.
openassessment/templates/openassessmentblock/edit/oa_edit_student_training.html
View file @
b69f9925
...
...
@@ -33,6 +33,11 @@
<ol
id=
"openassessment_training_example_criterion_template"
class=
"is--hidden"
>
{% include "openassessmentblock/edit/oa_training_example_criterion.html" %}
</ol>
<ol
id=
"openassessment_training_example_part_template"
class=
"is--hidden"
>
<li
class=
"openassessment_training_example_essay_part"
>
<textarea
maxlength=
"100000"
></textarea>
</li>
</ol>
</div>
</li>
...
...
openassessment/templates/openassessmentblock/edit/oa_training_example.html
View file @
b69f9925
...
...
@@ -28,7 +28,13 @@
<div
class=
"openassessment_training_example_essay_wrapper"
>
<h2>
{% trans "Response" %}
</h2>
<textarea
class=
"openassessment_training_example_essay"
maxlength=
"100000"
>
{{ example.answer }}
</textarea>
<ol
class=
"openassessment_training_example_essay"
>
{% for part in example.answer.parts %}
<li
class=
"openassessment_training_example_essay_part"
>
<textarea
maxlength=
"100000"
>
{{ part.text }}
</textarea>
</li>
{% endfor %}
</ol>
</div>
</div>
</li>
...
...
openassessment/xblock/schema.py
View file @
b69f9925
...
...
@@ -88,7 +88,7 @@ EDITOR_UPDATE_SCHEMA = Schema({
'must_be_graded_by'
:
All
(
int
,
Range
(
min
=
0
)),
'examples'
:
[
Schema
({
Required
(
'answer'
):
utf8_validator
,
Required
(
'answer'
):
[
utf8_validator
]
,
Required
(
'options_selected'
):
[
Schema
({
Required
(
'criterion'
):
utf8_validator
,
...
...
openassessment/xblock/static/js/openassessment-studio.min.js
View file @
b69f9925
This diff is collapsed.
Click to expand it.
openassessment/xblock/static/js/src/studio/oa_container_item.js
View file @
b69f9925
...
...
@@ -112,9 +112,34 @@ OpenAssessment.Prompt.prototype = {
return
OpenAssessment
.
Fields
.
stringField
(
sel
,
text
);
},
addHandler
:
function
(){},
addEventListeners
:
function
()
{},
removeHandler
:
function
()
{},
/**
Hook into the event handler for addition of a prompt.
*/
addHandler
:
function
(){
this
.
notifier
.
notificationFired
(
"promptAdd"
,
{
"index"
:
this
.
element
.
index
()
}
);
},
/**
Hook into the event handler for removal of a prompt.
*/
removeHandler
:
function
(){
this
.
notifier
.
notificationFired
(
"promptRemove"
,
{
"index"
:
this
.
element
.
index
()
}
);
},
updateHandler
:
function
()
{},
/**
...
...
@@ -588,7 +613,7 @@ OpenAssessment.RubricCriterion.prototype = {
OpenAssessment
.
TrainingExample
=
function
(
element
){
this
.
element
=
element
;
this
.
criteria
=
$
(
".openassessment_training_example_criterion_option"
,
this
.
element
);
this
.
answer
=
$
(
'.openassessment_training_example_essay
'
,
this
.
element
).
first
();
this
.
answer
=
$
(
'.openassessment_training_example_essay
_part textarea'
,
this
.
element
)
};
OpenAssessment
.
TrainingExample
.
prototype
=
{
...
...
@@ -609,7 +634,9 @@ OpenAssessment.TrainingExample.prototype = {
).
get
();
return
{
answer
:
this
.
answer
.
prop
(
'value'
),
answer
:
this
.
answer
.
map
(
function
()
{
return
$
(
this
).
prop
(
'value'
);
}).
get
(),
options_selected
:
optionsSelected
};
},
...
...
openassessment/xblock/static/js/src/studio/oa_edit.js
View file @
b69f9925
...
...
@@ -25,9 +25,14 @@ OpenAssessment.StudioView = function(runtime, element, server) {
// Initialize the validation alert
this
.
alert
=
new
OpenAssessment
.
ValidationAlert
().
install
();
var
studentTrainingListener
=
new
OpenAssessment
.
StudentTrainingListener
();
// Initialize the prompt tab view
this
.
promptsView
=
new
OpenAssessment
.
EditPromptsView
(
$
(
"#oa_prompts_editor_wrapper"
,
this
.
element
).
get
(
0
)
$
(
"#oa_prompts_editor_wrapper"
,
this
.
element
).
get
(
0
),
new
OpenAssessment
.
Notifier
([
studentTrainingListener
])
);
// Initialize the settings tab view
...
...
@@ -57,7 +62,7 @@ OpenAssessment.StudioView = function(runtime, element, server) {
this
.
rubricView
=
new
OpenAssessment
.
EditRubricView
(
$
(
"#oa_rubric_editor_wrapper"
,
this
.
element
).
get
(
0
),
new
OpenAssessment
.
Notifier
([
new
OpenAssessment
.
StudentTrainingListener
()
studentTrainingListener
])
);
...
...
openassessment/xblock/static/js/src/studio/oa_edit_assessment.js
View file @
b69f9925
...
...
@@ -421,7 +421,7 @@ OpenAssessment.EditStudentTrainingView.prototype = {
{
examples: [
{
answer:
"I love pokemon"
,
answer:
("I love pokemon 1", "I love pokemon 2")
,
options_selected: [
{
criterion: "brevity",
...
...
openassessment/xblock/static/js/src/studio/oa_edit_listeners.js
View file @
b69f9925
/**
Dynamically update student training examples based on
changes to the rubric.
changes to the
prompts or the
rubric.
**/
OpenAssessment
.
StudentTrainingListener
=
function
()
{
this
.
element
=
$
(
'#oa_student_training_editor'
);
...
...
@@ -8,6 +8,28 @@ OpenAssessment.StudentTrainingListener = function() {
};
OpenAssessment
.
StudentTrainingListener
.
prototype
=
{
/**
Add a answer part in the training examples when a prompt is added.
*/
promptAdd
:
function
(
data
)
{
var
view
=
this
.
element
;
var
essay_part
=
$
(
"#openassessment_training_example_part_template"
)
.
children
().
first
()
.
clone
()
.
removeAttr
(
'id'
)
.
toggleClass
(
'is--hidden'
,
false
)
.
appendTo
(
".openassessment_training_example_essay"
,
view
);
},
/**
Remove the answer part in the training examples when a prompt is removed.
*/
promptRemove
:
function
(
data
)
{
var
view
=
this
.
element
;
$
(
".openassessment_training_example_essay li:nth-child("
+
(
data
.
index
+
1
)
+
")"
,
view
).
remove
();
},
/**
Event handler for updating training examples when a criterion option has
been updated.
...
...
openassessment/xblock/static/js/src/studio/oa_edit_prompts.js
View file @
b69f9925
...
...
@@ -8,7 +8,7 @@ Returns:
OpenAssessment.EditPromptsView
**/
OpenAssessment
.
EditPromptsView
=
function
(
element
)
{
OpenAssessment
.
EditPromptsView
=
function
(
element
,
notifier
)
{
this
.
element
=
element
;
this
.
promptsContainer
=
new
OpenAssessment
.
Container
(
...
...
@@ -17,7 +17,8 @@ OpenAssessment.EditPromptsView = function(element) {
templateElement
:
$
(
"#openassessment_prompt_template"
,
this
.
element
).
get
(
0
),
addButtonElement
:
$
(
"#openassessment_prompts_add_prompt"
,
this
.
element
).
get
(
0
),
removeButtonClass
:
"openassessment_prompt_remove_button"
,
containerItemClass
:
"openassessment_prompt"
containerItemClass
:
"openassessment_prompt"
,
notifier
:
notifier
}
);
this
.
promptsContainer
.
addEventListeners
();
...
...
openassessment/xblock/studio_mixin.py
View file @
b69f9925
...
...
@@ -14,7 +14,7 @@ from xblock.fields import List, Scope
from
xblock.fragment
import
Fragment
from
openassessment.xblock.defaults
import
DEFAULT_EDITOR_ASSESSMENTS_ORDER
,
DEFAULT_RUBRIC_FEEDBACK_TEXT
from
openassessment.xblock.validation
import
validator
from
openassessment.xblock.data_conversion
import
create_rubric_dict
,
make_django_template_key
from
openassessment.xblock.data_conversion
import
create_rubric_dict
,
make_django_template_key
,
update_assessments_format
from
openassessment.xblock.schema
import
EDITOR_UPDATE_SCHEMA
from
openassessment.xblock.resolve_dates
import
resolve_dates
from
openassessment.xblock.xml
import
serialize_examples_to_xml_str
,
parse_examples_from_xml_str
...
...
@@ -191,6 +191,10 @@ class StudioMixin(object):
)}
# This is where we default to EASE for problems which are edited in the GUI
assessment
[
'algorithm_id'
]
=
'ease'
if
assessment
[
'name'
]
==
'student-training'
:
for
example
in
assessment
[
'examples'
]:
example
[
'answer'
]
=
{
'parts'
:
[{
'text'
:
text
}
for
text
in
example
[
'answer'
]]}
xblock_validator
=
validator
(
self
,
self
.
_
)
success
,
msg
=
xblock_validator
(
...
...
@@ -269,13 +273,20 @@ class StudioMixin(object):
# could be accomplished within the template, we are opting to remove logic from the template.
student_training_module
=
self
.
get_assessment_module
(
'student-training'
)
student_training_template
=
{
'answer'
:
""
}
student_training_template
=
{
'answer'
:
{
'parts'
:
[
{
'text'
:
''
}
for
prompt
in
self
.
prompts
]
}
}
criteria_list
=
copy
.
deepcopy
(
self
.
rubric_criteria_with_labels
)
for
criterion
in
criteria_list
:
criterion
[
'option_selected'
]
=
""
student_training_template
[
'criteria'
]
=
criteria_list
if
student_training_module
:
student_training_module
=
update_assessments_format
([
student_training_module
])[
0
]
example_list
=
[]
# Adds each example to a modified version of the student training module dictionary.
for
example
in
student_training_module
[
'examples'
]:
...
...
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