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

General: Support lti learning activities for multiple exercises #10576

Open
wants to merge 53 commits into
base: develop
Choose a base branch
from

Conversation

raffifasaro
Copy link
Contributor

@raffifasaro raffifasaro commented Mar 24, 2025

Checklist

General

Server

  • Important: I implemented the changes with a very good performance and prevented too many (unnecessary) and too complex database calls.
  • I strictly followed the principle of data economy for all database calls.
  • I strictly followed the server 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 (e.g. using paging).
  • I strictly followed the principle of data economy for all client-server REST calls.
  • I strictly followed the client 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 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

Currently, instructors can only link learning activities to single exercises. This PR enables instructors to group multiple exercises into one learning activity to reflect an exercise week, for example.

Description

This pull request introduces a new feature for grouping exercises in the content selection table. When activated, Moodle creates a new learning activity that links to the earliest selected exercise. Additionally, a sidebar will display all other exercises chosen by the instructor within the group.

Steps for Testing

Prerequisites:

  • Access to Moodle
  • Testserver 3
  1. Make sure you are logged in to Artemis with a Test User 16)

  2. Navigate to Moodle and login with the same test user (Test User 16}, same PW as for the Artemis Test Server)

  3. Go to My Courses and open the lti test course

  4. Activate Edit mode in top right corner

  5. Add a learning activity by clicking on the blue + in "Test Topic"
    image

  6. Select Linhuber TS3
    image

  7. Click on "Select content"
    image

  8. Select the LTI test course
    image

  9. Select multiple exercises and activate the grouping
    image

  10. If the content was selected successfully, scroll down and hit "Save and display"
    image
    (If you get an error after linking, this is due to server sync, just try again by pressing the back button in your browser)

  11. You should be able to see the grouped exercises view with the sidebar showing all selected exercises
    image

Testserver States

You can manage test servers using Helios. Check environment statuses in the environment list. To deploy to a test server, go to the CI/CD page, find your PR or branch, and trigger the deployment.

Review Progress

Code Review

  • Code Review 1
  • Code Review 2

Manual Tests

  • Test 1
  • Test 2

Test Coverage

Screenshots

Grouped exercise view within Moodle:
image

New grouping feature in content selection table:
image

Summary by CodeRabbit

Summary by CodeRabbit

  • New Features

    • Added support for grouped exercise deep linking. Users can now enable an exercise grouping mode via a new checkbox, allowing multiple exercises to be grouped and displayed in the course sidebar.
    • Enhanced multi-launch support improves navigation when launching exercises via LTI, ensuring a smoother overall experience.
    • New translations added for exercise grouping functionality in both English and German.
  • Style

    • Updated UI layout and control styling for the grouping feature for a more consistent and user-friendly interface.

…ctivities-for-multiple-exercises' into chore/lti/support-lti-learning-activities-for-multiple-exercises
coderabbitai[bot]
coderabbitai bot previously approved these changes Mar 25, 2025
KonstiAnon
KonstiAnon previously approved these changes Mar 25, 2025
Copy link
Contributor

@KonstiAnon KonstiAnon 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

Jan-Thurner
Jan-Thurner previously approved these changes Mar 25, 2025
Copy link
Contributor

@Jan-Thurner Jan-Thurner left a comment

Choose a reason for hiding this comment

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

reapprove

az108
az108 previously approved these changes Mar 26, 2025
Copy link
Contributor

@az108 az108 left a comment

Choose a reason for hiding this comment

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

Thanks for the quick changes, Code LGTM 👍

raffifasaro and others added 2 commits March 26, 2025 18:13
…lti-learning-activities-for-multiple-exercises

# Conflicts:
#	src/main/webapp/app/core/course/overview/course-exercises/course-exercises.component.ts
#	src/test/javascript/spec/component/course/course-exercises.component.spec.ts
@helios-aet helios-aet bot temporarily deployed to artemis-test3.artemis.cit.tum.de March 27, 2025 17:15 Inactive
Copy link
Contributor

@florian-glombik florian-glombik left a comment

Choose a reason for hiding this comment

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

Followed the testing steps, tested on ts3

image

The contrast is very low here (step 8) - I had a pretty hard time reading something there, can we change that? Was that part of this PR (maybe add a PR description 😉 )?

I am not familiar with the LTI feature, how do I get to the view described in step 11? 😅

Copy link

End-to-End (E2E) Test Results Summary

TestsPassed ☑️Skipped ⚠️Failed ❌️Time ⏱
End-to-End (E2E) Test Report202 ran195 passed3 skipped4 failed58m 42s 59ms
TestResultTime ⏱
End-to-End (E2E) Test Report
e2e/exam/ExamParticipation.spec.ts
ts.Exam participation › Programming exam with Git submissions › Participates in exam by Git submission using ssh❌ failure5m 13s 628ms
e2e/exercise/programming/ProgrammingExerciseParticipation.spec.ts
ts.Programming exercise participation › Programming exercise participation using secure git › Programming exercise participation using SSH › Makes a git submission using SSH with RSA key❌ failure4m 45s 965ms
ts.Programming exercise participation › Programming exercise participation using secure git › Programming exercise participation using SSH › Makes a git submission using SSH with ED25519 key❌ failure4m 45s 88ms
e2e/exercise/programming/ProgrammingExerciseStaticCodeAnalysis.spec.ts
ts.Static code analysis tests › Configures SCA grading and makes a successful submission with SCA errors❌ failure1m 44s 31ms

Copy link
Contributor

@az108 az108 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 merge conflict

Copy link
Contributor

@Jan-Thurner Jan-Thurner 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 mergeconflict

Copy link

End-to-End (E2E) Test Results Summary

TestsPassed ☑️Skipped ⚠️Failed ❌️Time ⏱
End-to-End (E2E) Test Report202 ran195 passed3 skipped4 failed58m 34s 225ms
TestResultTime ⏱
End-to-End (E2E) Test Report
e2e/exam/ExamParticipation.spec.ts
ts.Exam participation › Programming exam with Git submissions › Participates in exam by Git submission using ssh❌ failure5m 12s 194ms
e2e/exercise/programming/ProgrammingExerciseParticipation.spec.ts
ts.Programming exercise participation › Programming exercise participation using secure git › Programming exercise participation using SSH › Makes a git submission using SSH with RSA key❌ failure4m 42s 781ms
ts.Programming exercise participation › Programming exercise participation using secure git › Programming exercise participation using SSH › Makes a git submission using SSH with ED25519 key❌ failure4m 44s 957ms
e2e/exercise/programming/ProgrammingExerciseStaticCodeAnalysis.spec.ts
ts.Static code analysis tests › Configures SCA grading and makes a successful submission with SCA errors❌ failure1m 45s 186ms

@helios-aet helios-aet bot temporarily deployed to artemis-test3.artemis.cit.tum.de March 28, 2025 18:53 Inactive
Copy link

End-to-End (E2E) Test Results Summary

TestsPassed ☑️Skipped ⚠️Failed ❌️Time ⏱
End-to-End (E2E) Test Report202 ran195 passed3 skipped4 failed58m 51s 934ms
TestResultTime ⏱
End-to-End (E2E) Test Report
e2e/exam/ExamParticipation.spec.ts
ts.Exam participation › Programming exam with Git submissions › Participates in exam by Git submission using ssh❌ failure5m 8s 637ms
e2e/exercise/programming/ProgrammingExerciseParticipation.spec.ts
ts.Programming exercise participation › Programming exercise participation using secure git › Programming exercise participation using SSH › Makes a git submission using SSH with RSA key❌ failure4m 45s 142ms
ts.Programming exercise participation › Programming exercise participation using secure git › Programming exercise participation using SSH › Makes a git submission using SSH with ED25519 key❌ failure4m 45s 85ms
e2e/exercise/programming/ProgrammingExerciseStaticCodeAnalysis.spec.ts
ts.Static code analysis tests › Configures SCA grading and makes a successful submission with SCA errors❌ failure1m 42s 879ms

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!) core Pull requests that affect the corresponding module lti Pull requests that affect the corresponding module ready for review server Pull requests that update Java code. (Added Automatically!) tests
Projects
Status: Ready For Review
Status: Ready
Development

Successfully merging this pull request may close these issues.

Create and support LTI learning activities for multiple exercises
5 participants