The Ultra Extension Framework allows an integration to provide Originality Reporting for assignments in Learn Ultra in conjunction with Learn's Submission Services framework.
The Submission Services framework in Learn exposes extension points for custom Building Blocks (B2s)
to be notified of new gradable content in a course and students' submissions against those content
items. UEF builds on that with APIs to support UI integration into Learn Ultra so that those custom
extensions from Learn B2s can be configured and displayed in Ultra courses. Details about how to
implement the Learn side of a Submission Services tool in a custom B2 via the SubmissionService
,
SubmittableItemEventHandler
, and ItemSubmissionEventHandler
interfaces is outside the scope of
this document.
Each UEF originality reporting extension is linked to its corresponding Submission Services extension in Learn by specifying the same unique handle in both places. All Submission Services extensions must provide a unique handle, and any UEF extension designed to work with that Learn B2 extension must have the same handle.
sendMessage({
type: 'submission-tool:register',
submissionServicesUniqueHandle: '<your_unique_handle>',
});
Learn Ultra discovers available Submission Services tools via its own internal API to Learn, and the unique handles provided by Learn are the source of record. UEF originality reporting extensions will only show up in Ultra UI if Learn reports that a Submission Services tool of the same unique handle is available for use on that content item, subject to Learn's built-in mechanisms for B2/tool availability.
A UEF portal has been added to the Assessment settings panel, in which an extension can render its
own settings after Originality Reporting is enabled by an instructor. The portal's selector is
course.content.assessment.settings.originalityReport.panel.settings
, and will pass along the
courseId
and contentId
as parameters:
{
"courseId": "<course_id>",
"contentId": "<content_id>"
}
When the instructor saves the Assessment settings, a UEF message will be passed to the extension notifying it that it should save the settings changes made by the instructor, and Ultra will wait for the extension to respond, indicating that the save succeeded or failed. When a successful response is received from the integration, Learn will notify the corresponding B2 of the new Originality enablement state for the current content item.
The message from Ultra will provide a correlationId
that will need to be provided when responding
to the message, as well as the contentId
of the item being saved and its contentHandle
that
indicates its content type. It will also include the enabled state of the originality report
setting:
{
"data": {
"eventType": "submission-tool:settings-saved",
"correlationId": "<uuid>",
"contentId": "<content_id>",
"contentHandle": "<content_handle>",
"enabled": <boolean>
}
}
After sending that message to the extension, UEF expects an extension to check its rendered DOM and save off the corresponding settings by whatever mechanism it communicates to its tool implementation, e.g. via a Rest API provided by the custom Learn B2 that does the Submission Services implementation in Learn.
The UEF extension must respond with a success or failure message within 5 seconds:
sendMessage({
type: 'submission-tool:settings-saved:response',
correlationId: '<uuid>',
success: true,
});
sendMessage({
type: 'submission-tool:settings-saved:response',
correlationId: '<uuid>',
success: false,
// you may supply a human readable error message to display to the user
error: 'There was an error saving the configuration',
});
If 5 seconds isn't enough time to save the configuration changes, the extension can request more
processing time by responding with a submission-tool:settings-saved:processing
message:
sendMessage({
type: 'submission-tool:settings-saved:processing',
correlationId: '<uuid>',
});
UEF provides two different portals for displaying Originality information.
The first portal is for an icon indicating the overall status of each submission in the submission
list and will appear in each submission's row. The portal's selector is
components.directives.grade.submission-list-row.originality
.
Two portals are provided for displaying the results of the Originality report, one from the grader's
perspective and one from the student's. An assignment's grader will see a portal with the selector
components.directives.attempt-grading.originality-report
, and a student will see one with
components.directives.attempt-review.originality-report
.
Generated using TypeDoc