Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Development: Adapt LTI advantage deep linking service for exercise selection from Moodle #7425

Merged
merged 141 commits into from
Dec 4, 2023

Conversation

basak-akan
Copy link
Contributor

@basak-akan basak-akan commented Oct 19, 2023

Warning

Deploy only locally or on ts11! The LTI feature is only available on TS11.

Checklist

General

Server

  • Important: I implemented the changes with a very good performance and prevented too many (unnecessary) database calls.
  • I followed the coding and design guidelines.
  • I added multiple integration tests (Spring) related to the features (with a high test coverage).
  • I added pre-authorization annotations according to the guidelines and checked the course groups for all new REST Calls (security).
  • I documented the Java code using JavaDoc style.

Client

  • Important: I implemented the changes with a very good performance, prevented too many (unnecessary) REST calls and made sure the UI is responsive, even with large data.
  • I followed the coding and design guidelines.
  • Following the theming guidelines, I specified colors only in the theming variable files and checked that the changes look consistent in both the light and the dark theme.
  • I added multiple integration tests (Jest) related to the features (with a high test coverage), while following the test guidelines.
  • I added authorities to all new routes and checked the course groups for displaying navigation elements (links, buttons).
  • I documented the TypeScript code using JSDoc style.
  • I added multiple screenshots/screencasts of my UI changes.
  • I translated all newly inserted strings into English and German.

Motivation and Context

Deep Linking in the context of LTI Advantage refers to a standard that allows instructors to create links directly to specific course materials or exercises within a learning platform like Artemis. It makes it easier to integrate external learning tools and content into a Learning Management System like Moodle.
The deep linking service simplifies the workflow by eliminating manual copy/paste exercise links to Moodle.

Description

This update introduces a new deep linking service compliant with the LTI Deep Linking Specifications. It simplifies the instructors' workflow in Moodle by enabling them to embed direct links to Artemis exercises, eliminating the need for complex navigation or manual link copying. Additionally, a user-friendly exercise selection interface is now accessible through Moodle via a pop-up frame after clicking on 'Select Content.' Instructors can choose the desired exercise, and upon clicking 'Link,' the exercise URL is automatically copied to Moodle inside a JWT through an auto-submit form (implemented according to specification). Future enhancements include a new course selection page and the ability to link multiple exercises in a single operation, after implementation of #7185.

Steps for Testing

Prerequisites:

  • Please use TS11 to test this PR since lti profile is enabled
  • 1 Instructor
  1. Log in to Artemis with an instructor credentials ( e.g. artemis_test_user_11)
  2. Navigate to https://moodle.ase.in.tum.de/
  3. Login using the same credentials as Artemis
  4. Navigate to "LTI Testing Course"
  5. Enable "Edit Mode" in the top right corner.
  6. Click on "Add activity or resource" under any topic.
  7. A pop-up window will come out. Select "External Tool"
  8. You will be navigated to the "Adding a new External Tool" page
  9. On this page, select preconfigured tool as "TS11 - ltitestcourse"
  10. If you may encounter "Required Activity Name" warning please ignore it and follow the remaining steps.
  11. After selecting the preconfigured tool click on the "Select Content" button
  12. An Artemis frame will pop up. Verify this frame contains exercises from "LTI Testing Course"
  13. Select one of the exercises and click the "Link" button
  14. Verify the exercise link appeared on the "Tool Url" input field.
  15. Select save and display at the bottom of the page.
  16. Verify you can see the Artemis exercise.

Testserver States

Note

These badges show the state of the test servers.
Green = Currently available, Red = Currently locked







Review Progress

Performance Review

  • I (as a reviewer) confirm that the client changes (in particular related to REST calls and UI responsiveness) are implemented with a very good performance
  • I (as a reviewer) confirm that the server changes (in particular related to database calls) are implemented with a very good performance

Code Review

  • Code Review 1
  • Code Review 2

Manual Tests

  • Test 1
  • Test 2

Test Coverage

Client

Class/File Line Coverage Confirmation (assert/expect)
course-lti-configuration.component.ts 100%
lti13-deep-linking.component.ts 89.83%
lti13-exercise-launch.component.ts 95.52%
lti13-select-content.component.ts 91.66%
lti-initializer-modal.component.ts 78.57%
lti-initializer.component.ts 100%

Server

Class/File Line Coverage Confirmation (assert/expect)
CustomLti13Configurer.java 100%
Claims.java 100%
Lti13ClientRegistration.java 83%
Lti13DeepLinkingResponse.java 82%
LtiAuthenticationResponseDTO.java 100%
Lti13LaunchFilter.java 100%
Lti13TokenRetriever.java 98%
Lti13Service.java 93%
LtiDeepLinkingService.java 96%
LtiResource.java 69%

Screenshots

deep_linking

@krusche krusche dismissed lennart-keller’s stale review December 1, 2023 22:54

The base branch was changed.

@basak-akan basak-akan removed the stacked-pr PR that depends on another PR label Dec 2, 2023
laurenzfb
laurenzfb previously approved these changes Dec 2, 2023
Copy link
Contributor

@laurenzfb laurenzfb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reapprove

@basak-akan basak-akan requested a review from laurenzfb December 2, 2023 12:44
Copy link
Contributor

@laurenzfb laurenzfb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

reapprove after changes

Copy link
Contributor

@lennart-keller lennart-keller left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Recent code changes lgtm

Copy link

@vinceclifford vinceclifford left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reapproval

Copy link
Contributor

@sarpsahinalp sarpsahinalp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-approve

@krusche krusche added this to the 6.7.1 milestone Dec 4, 2023
@krusche krusche merged commit e43999e into develop Dec 4, 2023
35 of 41 checks passed
@krusche krusche deleted the feature/lti-deep-linking branch December 4, 2023 22:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
client Pull requests that update TypeScript code. (Added Automatically!) component:LTI ready to merge server Pull requests that update Java code. (Added Automatically!) tests
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Deep Linking Service Implementation - One-Click Exercise Addition for Moodle Courses