-`student_view_user_state`: XBlock handler which returns user state data in
e.g.,
JSON format.
```
GET https://<lms_server_url>/api/courses/v1/blocks/?course_id=<course_id>&username=<username>&depth=all&requested_fields=student_view_data&student_view_data=<xblock_types>
```
Does not include user-specific data, which is available from `student_view_user_state`.
- `student_view_user_state`: XBlock handler which returns the currently logged
in user's state data in JSON format (e.g. items derived from `Scope.user_state`
fields).
```
GET https://<lms_server_url>/courses/<course_id>/xblock/<xblock_id>/handler/student_view_user_state
```
- Custom XBlock handlers used for submitting user input and recording user actions.
- Custom XBlock handlers used for submitting user input and recording user actions.
Problem Builder (`problem-builder`)
Problem Builder (`problem-builder`)
...
@@ -16,45 +25,46 @@ Problem Builder (`problem-builder`)
...
@@ -16,45 +25,46 @@ Problem Builder (`problem-builder`)
### `student_view_data`
### `student_view_data`
-`max_attempts`: Max number of allowed attempts (integer).
- `max_attempts`: (integer) Max number of allowed attempts.
-`extended_feedback`: `true` if extended feedback is enabled for this block
- `extended_feedback`: (boolean) `true` if extended feedback is enabled for this
-`messages`: A dict with three string entries: `completed`, `incomplete`, and
- `messages`: (object) A dict with three string entries: `completed`,
`max_attempts_reached`. See below for info on each (object).
`incomplete`, and `max_attempts_reached`. See below for info on each.
-`components`: A list of `student_view_data` output of all immediate child
- `components`: (array) A list of `student_view_data` output of all immediate
components which implement `student_view_data`. Child components which don't
child components which implement `student_view_data`. Child components which
implement `student_view_data` are omitted from the list (array).
don't implement `student_view_data` are omitted from the list.
#### `messages`
#### `messages`
These messages are displayed as feedback, depending on the state of the block.
These messages are displayed as feedback, depending on the state of the
block. Any of these may be `null`.
-`completed`: Message to be shown if the user successfully completes the
- `completed`: (string) Message to be shown if the user successfully completes
problem. May contain HTML (string).
the problem. May contain HTML.
-`incomplete`: Message to be shown if the user did not successfully complete
- `incomplete`: (string) Message to be shown if the user did not successfully
the problem, but still has available attempts left. May contain HTML (string).
complete the problem, but still has available attempts left. May contain HTML.
-`max_attempts_reached`: Message to be shown if the user did not complete the
- `max_attempts_reached`: (string) Message to be shown if the user did not
problem and has no available attempts left.
complete the problem and has no available attempts left.
### `student_view_user_state`
### `student_view_user_state`
-`num_attempts`: Number of attempts used so far (integer).
- `num_attempts`: (integer) Number of attempts used so far.
-`completed`: `true` if the user successfully completed the problem at least
- `completed`: (boolean) `true` if the user successfully completed the problem at least once.
once (boolean).
- `student_results`: (array) A list of user submitted answers with metadata for
-`student_results`: A list of user submitted answers with metadata for each
each child component. See below for more info.
child component. See below for more info (array).
- `components`: (object) Contains the `student_view_user_state` output of all
-`components`: A dict of `student_view_user_state` output of all immediate
immediate child components which implement `student_view_user_state`. Each key
child components which implement `student_view_user_state`. Dict keys are
is a component ID (string), and the value is the component's
component IDs and the value corresponding to each key is the output of
`student_view_user_state` (object). Child components which don't implement
`student_view_user_state`(object). Child components which don't implement
student_view_user_state are not included in the dict.
`student_view_user_state` are not included in the dict.
#### `student_results`
#### `student_results`
The `student_results` field is an array of two-element arrays. Each nested array
The `student_results` field is an array of two-element arrays. Each nested array
has the form of `[component_name, data]`. Only components which the student
has the form of `[component_name, data]`. If the user has not made any
already submitted are present in the array. The structure of the `data` object
submissions to particular component, then the element corresponding to that
component may be omitted from the array. The structure of the `data` object
depends on the type of the child component and is described separately for each
depends on the type of the child component and is described separately for each
type of child component below.
type of child component below.
...
@@ -67,42 +77,49 @@ The `submit` XBlock JSON handler is used for submitting student input. The
...
@@ -67,42 +77,49 @@ The `submit` XBlock JSON handler is used for submitting student input. The
depend on the component type and are described separately for each type of child
depend on the component type and are described separately for each type of child
component below.
component below.
Example URL:
```
POST https://<lms_server_url>/courses/<course_id>/xblock/<xblock_id>/handler/submit
```
Returns a JSON object which contains these fields:
Returns a JSON object which contains these fields:
-`results`: Same as `student_results` described under
- `results`: (array) Same as `student_results` described under
`student_view_user_state` above.
`student_view_user_state` above.
-`completed`: Same as `completed` described under `student_view_user_state`
- `completed`: (boolean) Same as `completed` described under
above.
`student_view_user_state` above.
-`message`: One of the `completed`, `incomplete`, or `max_attempts_reached`
- `message`: (string) One of the `completed`, `incomplete`, or
feedback messages described under `messages` above. Can be `null` if no
`max_attempts_reached` feedback messages described under `messages` above. Can
messages has been defined. May contain HTML (string).
be `null` if no messages has been defined. May contain HTML.
-`max_attempts`: Same as `max_attempts` under `student_view_data`.
- `max_attempts`: (integer) Same as `max_attempts` under `student_view_data`.
-`num_attempts`: Same as `num_attempts` under `student_view_user_state`.
- `num_attempts`: (integer) Same as `num_attempts` under
`student_view_user_state`.
Step Builder (`step-builder`)
Step Builder (`step-builder`)
-----------------------------
-----------------------------
### `student_view_data`
### `student_view_data`
-`title`: The display name of the component (string).
- `title`: (string) The display name of the component.
-`show_title`: `true` if the title should be displayed (boolean).
- `show_title`: (boolean) `true` if the title should be displayed.
-`weight`: The weight of the problem (float).
- `weight`: (float) The weight of the problem.
-`extended_feedback`: `true` if extended feedback is enabled for this block
- `extended_feedback`: (boolean) `true` if extended feedback is enabled for this
(boolean).
block.
-`max_attempts`: Max number of allowed attempts (integer).
- `max_attempts`: (integer) Max number of allowed attempts.
-`components`: A list of `student_view_data` output of all immediate child
- `components`: (array) A list of `student_view_data` output of all immediate
components which implement `student_view_data`. For `step-builder`, immediate
child components which implement `student_view_data`. For `step-builder`,
children are typically `sb-step` and `sb-review-step` type components. Child
immediate children are typically `sb-step` and `sb-review-step` type
components which don't implement `student_view_data` are omitted from the list
components. Child components which don't implement `student_view_data` are
(array).
omitted from the list.
### `student_view_user_state`
### `student_view_user_state`
Same as Problem Builder above, but also contains these additional fields:
Same as [Problem Builder above](#problem-builder-problem-builder), but also
contains these additional fields:
-`active_step`: The index of the step which is currently active. Starts at zero
- `active_step`: (integer) The index of the step which is currently
(integer).
active. Starts at zero.
### Custom Handlers
### Custom Handlers
...
@@ -116,6 +133,12 @@ component below.
...
@@ -116,6 +133,12 @@ component below.
In addition to child component names, the `POST` data should also include the
In addition to child component names, the `POST` data should also include the
`active_step` field. The value should be the index of the current step.
`active_step` field. The value should be the index of the current step.
Example URL:
```
POST https://<lms_server_url>/courses/<course_id>/xblock/<xblock_id>/handler/submit --data '{"bf9c37a":[{"name":"input","value":"Freeform answer"}],"71f85d0d3e7dabfc1a8cfecf72dce4284f18b13a":"3","71c526b60ec97364214ac70860def69914de84e7":["000bc8e","da9691e"],"477847c4f3540f37b8b3815430a74632a352064d":0.59,"b66a6115af051939c5ce92fb5ff739ccf704d1e9":false}'
```
#### `try_again`
#### `try_again`
The `try_again` XBlock JSON handler can be used when the student reaches the
The `try_again` XBlock JSON handler can be used when the student reaches the
...
@@ -124,38 +147,44 @@ all of its children.
...
@@ -124,38 +147,44 @@ all of its children.
Returns a JSON object containing the new value of `active_step`.
Returns a JSON object containing the new value of `active_step`.
Example URL:
```
POST https://<lms_server_url>/courses/<course_id>/xblock/<xblock_id>/handler/try_again
```
Mentoring Step (`sb-step`)
Mentoring Step (`sb-step`)
--------------------------
--------------------------
### `student_view_data`
### `student_view_data`
-`type`: Always equals `"sb-step"` for Mentoring Step components (string).
-`type`: (string) Always equals `"sb-step"` for Mentoring Step components.
-`title`: Step component's display name (string).
-`title`: (string) Step component's display name.
-`show_title`: `true` if the title should be displayed (boolean).
-`show_title`: (boolean) `true` if the title should be displayed.
-`next_button_label`: Text label of the "Next Step" button (string).
-`next_button_label`: (string) Text label of the "Next Step" button.
-`message`: Feedback or instructional message which should be displayed after
-`message`: (string) Feedback or instructional message which should be
student submits the step (string).
displayed after student submits the step. May be `null`.
-`components`: A list of `student_view_data` output of all immediate child
-`components`: (array) A list of `student_view_data` output of all immediate
components which implement `student_view_data`. Child components which don't
child components which implement `student_view_data`. Child components which
implement `student_view_data` are omitted from the list (array).
don't implement `student_view_data` are omitted from the list.
### `student_view_user_state`
### `student_view_user_state`
-`student_results`: Same as `student_results` described under
-`student_results`: (array) Same as `student_results` described under
`student_view_user_state` in the Problem Builder section.
-`components`: (object) Same as `components` described under
`student_view_user_state` in the Problem Builder section.
`student_view_user_state` in the Problem Builder section.
-`components`: Same as `components` described under `student_view_user_state`
in the Problem Builder section.
Review Step (`sb-review-step`)
Review Step (`sb-review-step`)
------------------------------
------------------------------
### `student_view_data`
### `student_view_data`
-`type`: Always equals `"sb-review-step`" for Review Step components (string).
-`type`: (string) Always equals `"sb-review-step`" for Review Step components.
-`title`: Display name of the component (string).
-`title`: (string) Display name of the component.
-`components`: A list of `student_view_data` output of all immediate child
-`components`: (array) A list of `student_view_data` output of all immediate
components which implement `student_view_data`. Child components which don't
child components which implement `student_view_data`. Child components which
implement `student_view_data` are omitted from the list (array).
don't implement `student_view_data` are omitted from the list.
Conditional Message (`sb-conditional-message`)
Conditional Message (`sb-conditional-message`)
----------------------------------------------
----------------------------------------------
...
@@ -164,254 +193,256 @@ Conditional Message component is always child of a Review Step component.
...
@@ -164,254 +193,256 @@ Conditional Message component is always child of a Review Step component.
### `student_view_data`
### `student_view_data`
-`type`: Always equals `"sb-conditional-message"` for Conditional Message
-`type`: (string) Always equals `"sb-conditional-message"` for Conditional
components (string).
Message components.
-`content`: Content of the message. May contain HTML (string).
-`content`: (string) Content of the message. May contain HTML.
-`score_condition`: One of `"perfect"`, `"imperfect"`, or `"any"` (string).
-`score_condition`: (string) One of `"perfect"`, `"imperfect"`, or `"any"`.
-`num_attempts_condition`: One of `"can_try_again"`, `"cannot_try_again"`, or
-`num_attempts_condition`: (string) One of `"can_try_again"`,
`"any"` (string).
`"cannot_try_again"`, or `"any"`.
Score Summary (`sb-review-score`)
Score Summary (`sb-review-score`)
---------------------------------
---------------------------------
### `student_view_data`
### `student_view_data`
-`type`: Always equals `"sb-review-score"` for Score Summary components
-`type`: (string) Always equals `"sb-review-score"` for Score Summary