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