Skip to content

Commit

Permalink
Development: Update thymeleaf email templates (#10114)
Browse files Browse the repository at this point in the history
  • Loading branch information
krusche authored Jan 12, 2025
1 parent c832f96 commit 031c0bf
Show file tree
Hide file tree
Showing 26 changed files with 271 additions and 312 deletions.
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ Artemis brings interactive learning to life with instant, individual feedback on
* **Integrated feedback**: Reviews can provide feedback and points directly next to the text segments.
* **Language detection**: Artemis detects the language of the submission and shows the word and character count.
7. **[File upload exercises](https://docs.artemis.cit.tum.de/user/exercises/file-upload/)** allow full flexibility to instructors. Students can create any kind of file (e.g. PDF, PNG) and submit it to Artemis when they have completed their work. Artemis allows instructors and tutors to download the files and assess them manually based on structured grading criteria (see below in the section Assessment).
8. **[Exam mode](https://docs.artemis.cit.tum.de/user/exam_mode/)**: Instructors can create online exams with exercise variants, integrated plagiarism checks, test runs and student reviews. You can find more information on [Exam mode student features](https://artemis.cit.tum.de/features/students) and on [Exam mode instructor features](https://artemis.cit.tum.de/features/instructors).
8. **[Exam mode](https://docs.artemis.cit.tum.de/user/exam_mode/)**: Instructors can create online exams with exercise variants, integrated plagiarism checks, test runs and student reviews. You can find more information on [Exam mode student features](https://artemis.tum.de/features/students) and on [Exam mode instructor features](https://artemis.tum.de/features/instructors).
9. **[Assessment](https://docs.artemis.cit.tum.de/user/exercises/assessment/)**: Artemis uses double-blind grading and structured grading criteria to improve consistency and fairness.
* **Training process**: It integrates an assessment training process (based on example submissions and example assessments defined by the instructor), has a grading leader board, and allows students to rate the assessments. Students can complain or ask for more feedback.
* **Grading**: Instructors can configure grade keys for courses and exams to automatically calculate grades and display them to students. Grades can be easily exported as csv files to upload them into university systems (such as Campus online). They can define bonus configurations for final exams to improve student grades according to their grades from a midterm exam or course exercises.
Expand All @@ -59,7 +59,7 @@ Artemis brings interactive learning to life with instant, individual feedback on
* **[Adaptive learning](https://docs.artemis.cit.tum.de/user/adaptive-learning)**: Artemis allows instructors and students to define and track competencies. Students can monitor their progress towards these goals, while instructors can provide tailored feedback. This approach integrates lectures and exercises under overarching learning objectives.
* **[Learning analytics](https://docs.artemis.cit.tum.de/user/learning-analytics)**: Artemis integrated different statistics for students to compare themselves to the course average. It allows instructors to evaluate the average student performance based on exercises and competencies.
* **[Learning paths](https://docs.artemis.cit.tum.de/user/adaptive-learning/adaptive-learning-student.html#learning-paths)**: Based on the competency model and students' individual progress, Artemis creates learning paths that guide students through the course content.
13. **[Iris](https://artemis.cit.tum.de/about-iris)**: Artemis integrates Iris, a LLM based virtual assistant that supports students and instructors with common questions and tasks.
13. **[Iris](https://artemis.tum.de/about-iris)**: Artemis integrates Iris, a LLM based virtual assistant that supports students and instructors with common questions and tasks.
* **Questions**: Iris supports students with answering questions about exercises, lectures, and the learning performance instantly.
* **Pro-active assistance**: Iris can pro-actively communicate with the students, help them with the next steps in their learning experience and motivate them to continue.
14. **[Athena](https://github.com/ls1intum/Athena)**: Artemis integrates Athena, a machine learning-based tool that supports instructors with the assessment of text, modeling and programming exercises. Athena offers different modules including automatic feedback suggestions based on generate AI.
Expand Down Expand Up @@ -242,7 +242,7 @@ We communicate using GitHub issues and pull requests. Additionally, you can join
The following universities are actively using Artemis or are currently evaluating Artemis.

* **Technical University of Munich**
https://artemis.cit.tum.de
https://artemis.tum.de
Main contact person: [Stephan Krusche](mailto:[email protected])

* **LFU Innsbruck, Uni Salzburg, JKU Linz, AAU Klagenfurt, TU Wien**
Expand Down
2 changes: 1 addition & 1 deletion docs/admin/registration.rst
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ Example:
trust: <host>
jhipster:
mail:
base-url: https://artemis.cit.tum.de
base-url: https://artemis.tum.de
from: [email protected]
management:
health:
Expand Down
4 changes: 2 additions & 2 deletions docs/user/mobile-applications.rst
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ Server Selection

After installation, users have to first decide which Artemis server they want to connect to. Per default, the user can choose between the following instances:

* TUM: https://artemis.cit.tum.de
* TUM: https://artemis.tum.de
* CodeAbility: https://artemis.codeability.uibk.ac.at
* KIT: https://artemis.praktomat.cs.kit.edu

Expand Down Expand Up @@ -170,7 +170,7 @@ Server Selection

After installation, users have to first decide which Artemis server they want to connect to. Per default, the user can choose between the following instances:

* TUM: https://artemis.cit.tum.de
* TUM: https://artemis.tum.de
* CodeAbility: https://artemis.codeability.uibk.ac.at
* KIT: https://artemis.praktomat.cs.kit.edu
* Hochschule Munich: https://artemis.cs.hm.edu/
Expand Down
4 changes: 2 additions & 2 deletions docs/user/orion.rst
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@ Settings

Orion's settings are at *Settings -> Tools -> Orion*. The settings include:

- Artemis base url: Can be changed to switch to a specific Artemis instance. Defaults to https://artemis.cit.tum.de. **Important:** The url must not end with a ``/``, otherwise it does not work!
- Artemis git url: Can be changed to switch to a specific Artemis instance. Defaults to https://artemis.cit.tum.de/git
- Artemis base url: Can be changed to switch to a specific Artemis instance. Defaults to https://artemis.tum.de. **Important:** The url must not end with a ``/``, otherwise it does not work!
- Artemis git url: Can be changed to switch to a specific Artemis instance. Defaults to https://artemis.tum.de/git
- Artemis exercise paths: Orion suggests to store newly downloaded exercises at ``default-path/course/exercise-name``, with the default path dependent of the setting.
- Default commit message: The default message for each commit.
- Change user agent: The user agent is sent to Artemis to identify Orion. Usually, no changes are required.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,10 +101,10 @@ public LocalVCRepositoryUri(String urlString) {
*
* Examples:
* <ul>
* <li>Correct URL: "https://artemis.cit.tum.de/git/projectKey/repositorySlug.git" - Returns 1 as "git" is at index 1.</li>
* <li>Incorrect URL: "https://artemis.cit.tum.de/projectKey/repositorySlug.git" - Throws LocalVCInternalException because the "git" segment is missing.</li>
* <li>Incorrect URL: "https://artemis.cit.tum.de/git/projectKey" - Throws LocalVCInternalException because there are not enough segments after "git".</li>
* <li>Incorrect URL: "https://artemis.cit.tum.de/git/projectKey/repositorySlug" - Throws LocalVCInternalException because the repository slug does not end with ".git".</li>
* <li>Correct URL: "https://artemis.tum.de/git/projectKey/repositorySlug.git" - Returns 1 as "git" is at index 1.</li>
* <li>Incorrect URL: "https://artemis.tum.de/projectKey/repositorySlug.git" - Throws LocalVCInternalException because the "git" segment is missing.</li>
* <li>Incorrect URL: "https://artemis.tum.de/git/projectKey" - Throws LocalVCInternalException because there are not enough segments after "git".</li>
* <li>Incorrect URL: "https://artemis.tum.de/git/projectKey/repositorySlug" - Throws LocalVCInternalException because the repository slug does not end with ".git".</li>
* </ul>
*
* @param urlString The full URL string being analyzed, provided for context in error messages.
Expand Down Expand Up @@ -148,13 +148,13 @@ private static int getGitPartStartIndex(String urlString, Path urlPath) throws L
* <ul>
* <li>
* Input: Local repository path - {@code Paths.get("/local/path/projectX/my-repo/.git")}
* and Local VC server URL - {@code new URI("https://artemis.cit.tum.de").getURL()}
* Output: {@code https://artemis.cit.tum.de/git/projectX/my-repo.git}
* and Local VC server URL - {@code new URI("https://artemis.tum.de").getURL()}
* Output: {@code https://artemis.tum.de/git/projectX/my-repo.git}
* </li>
* <li>
* Input: Remote repository path - {@code Paths.get("/remote/path/projectY/my-repo")}
* and Local VC server URL - {@code new URI("https://artemis.cit.tum.de").getURL()}
* Output: {@code https://artemis.cit.tum.de/git/projectY/my-repo.git}
* and Local VC server URL - {@code new URI("https://artemis.tum.de").getURL()}
* Output: {@code https://artemis.tum.de/git/projectY/my-repo.git}
* </li>
* </ul>
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title th:text="#{email.dataExportFailedAdmin.title(${user.login})}">Data export for one of the users failed</title>
<th:block th:replace="mail/notification/fragments :: headMetaDataAndIconLink"/>
<th:block th:replace="mail/notification/fragments :: css"/>
<th:block th:replace="~{mail/notification/fragments :: headMetaDataAndIconLink}"/>
<th:block th:replace="~{mail/notification/fragments :: css}"/>
</head>
<body>
<th:block th:replace="mail/notification/fragments :: header"/>
<th:block th:replace="~{mail/notification/fragments :: header}"/>
<!-- Message Body Start -->
<div id="message-body">
<span th:text="#{email.dataExportFailedAdmin.text}">A data export creation failed. </span>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<th:block th:replace="mail/notification/fragments :: head"/>
<th:block th:replace="~{mail/notification/fragments :: head}"/>
<body>
<th:block th:replace="mail/notification/fragments :: header"/>
<th:block th:replace="~{mail/notification/fragments :: header}"/>
<!-- Message Body Start -->
<div id="message-body">
<th:block th:replace="mail/notification/fragments :: greetingsFullName"/>
<th:block th:replace="~{mail/notification/fragments :: greetingsFullName}"/>
<div class="notification-content">
<span th:text="#{email.notification.title.post.announcement(
${notificationSubject.getTitle()},
${notificationSubject.getConversation().getCourse().getTitle()}
)}">Notification Content for Announcement Posts
</span>
</span>
<div class="bordered-content">
<p th:utext="${notificationSubject.getContent()}">Post Content</p>
</div>
<th:block th:replace="mail/notification/fragments :: openInArtemisButton"/>
<th:block th:replace="~{mail/notification/fragments :: openInArtemisButton}"/>
</div>
<th:block th:replace="mail/notification/fragments :: farewell"/>
<th:block th:replace="~{mail/notification/fragments :: farewell}"/>
</div>
<!-- Message Body End -->
<th:block th:replace="mail/notification/fragments :: footer"/>
<th:block th:replace="~{mail/notification/fragments :: footer}"/>
</body>
</html>
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<th:block th:replace="mail/notification/fragments :: head"/>
<th:block th:replace="~{mail/notification/fragments :: head}"/>
<body>
<th:block th:replace="mail/notification/fragments :: header"/>
<th:block th:replace="~{mail/notification/fragments :: header}"/>
<!-- Message Body Start -->
<div id="message-body">
<th:block th:replace="mail/notification/fragments :: greetingsFullName"/>
<th:block th:replace="~{mail/notification/fragments :: greetingsFullName}"/>
<div class="notification-content">
<span th:text="#{email.notification.title.attachment(
${notificationSubject.getName()},
${notificationSubject.getLecture().getTitle()},
${notificationSubject.getLecture().getCourse().getTitle()}
)}">Notification Content for Attachment Changed</span>
<!-- Change message : notification text -->
<th:block th:replace="mail/notification/fragments :: notificationText"/>
<th:block th:replace="mail/notification/fragments :: openInArtemisButton"/>
<th:block th:replace="~{mail/notification/fragments :: notificationText}"/>
<th:block th:replace="~{mail/notification/fragments :: openInArtemisButton}"/>
</div>
<th:block th:replace="mail/notification/fragments :: farewell"/>
<th:block th:replace="~{mail/notification/fragments :: farewell}"/>
</div>
<!-- Message Body End -->
<th:block th:replace="mail/notification/fragments :: footer"/>
<th:block th:replace="~{mail/notification/fragments :: footer}"/>
</body>
</html>
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<th:block th:replace="mail/notification/fragments :: head"/>
<th:block th:replace="~{mail/notification/fragments :: head}"/>
<body>
<th:block th:replace="mail/notification/fragments :: header"/>
<th:block th:replace="~{mail/notification/fragments :: header}"/>
<!-- Message Body Start -->
<div id="message-body">
<th:block th:replace="mail/notification/fragments :: greetingsFullName"/>
<th:block th:replace="~{mail/notification/fragments :: greetingsFullName}"/>
<span th:text="#{email.notification.title.dataExportCreated}">Your data export has been successfully created</span>
<th:block th:replace="mail/notification/fragments :: openInArtemisButton"/>
<th:block th:replace="mail/notification/fragments :: farewell"/>
<th:block th:replace="~{mail/notification/fragments :: openInArtemisButton}"/>
<th:block th:replace="~{mail/notification/fragments :: farewell}"/>
</div>
<!-- Message Body End -->
<th:block th:replace="mail/notification/fragments :: footer"/>
<th:block th:replace="~{mail/notification/fragments :: footer}"/>
</body>
</html>
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<th:block th:replace="mail/notification/fragments :: head"/>
<th:block th:replace="~{mail/notification/fragments :: head}"/>
<body>
<th:block th:replace="mail/notification/fragments :: header"/>
<th:block th:replace="~{mail/notification/fragments :: header}"/>
<!-- Message Body Start -->
<div id="message-body">
<th:block th:replace="mail/notification/fragments :: greetingsFullName"/>
<th:block th:replace="~{mail/notification/fragments :: greetingsFullName}"/>
<span th:text="#{email.notification.title.dataExportFailed}">Your data export creation failed.</span>
<th:block th:replace="mail/notification/fragments :: farewell"/>
<th:block th:replace="~{mail/notification/fragments :: farewell}"/>
</div>
<!-- Message Body End -->
<th:block th:replace="mail/notification/fragments :: footer"/>
<th:block th:replace="~{mail/notification/fragments :: footer}"/>
</body>
</html>
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<th:block th:replace="mail/notification/fragments :: head"/>
<th:block th:replace="~{mail/notification/fragments :: head}"/>
<body>
<th:block th:replace="mail/notification/fragments :: header"/>
<th:block th:replace="~{mail/notification/fragments :: header}"/>
<!-- Message Body Start -->
<div id="message-body">
<th:block th:replace="mail/notification/fragments :: greetingsFullName"/>
<th:block th:replace="~{mail/notification/fragments :: greetingsFullName}"/>
<div class="notification-content">
<th:block th:replace="mail/notification/fragments :: exerciseTypeTranslation"/>
<th:block th:replace="~{mail/notification/fragments :: exerciseTypeTranslation}"/>
<span th:text="#{email.notification.title.duplicate.test.cases(
${notificationSubject.getTitle()},
${notificationSubject.getCourseViaExerciseGroupOrCourseMember().getTitle()}
Expand All @@ -21,11 +21,11 @@
<li th:text="#{email.notification.aux.information.due.date(${timeService.convertToHumanReadableDate(notificationSubject.getDueDate())})}">Due Date</li>
</th:block>
</ul>
<th:block th:replace="mail/notification/fragments :: openInArtemisButton"/>
<th:block th:replace="~{mail/notification/fragments :: openInArtemisButton}"/>
</div>
<th:block th:replace="mail/notification/fragments :: farewell"/>
<th:block th:replace="~{mail/notification/fragments :: farewell}"/>
</div>
<!-- Message Body End -->
<th:block th:replace="mail/notification/fragments :: footer"/>
<th:block th:replace="~{mail/notification/fragments :: footer}"/>
</body>
</html>
Original file line number Diff line number Diff line change
@@ -1,28 +1,28 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<th:block th:replace="mail/notification/fragments :: head"/>
<th:block th:replace="~{mail/notification/fragments :: head}"/>
<body>
<th:block th:replace="mail/notification/fragments :: header"/>
<th:block th:replace="~{mail/notification/fragments :: header}"/>
<!-- Message Body Start -->
<div id="message-body">
<th:block th:replace="mail/notification/fragments :: greetingsFullName"/>
<th:block th:replace="~{mail/notification/fragments :: greetingsFullName}"/>
<div class="notification-content">
<th:block th:replace="mail/notification/fragments :: exerciseTypeTranslation"/>
<th:block th:replace="~{mail/notification/fragments :: exerciseTypeTranslation}"/>
<span th:utext="#{email.notification.title.exercise.practice(
${notificationSubject.getTitle()},
${notificationSubject.getCourseViaExerciseGroupOrCourseMember().getTitle()}
)}">Notification Content for Exercise opened for Practice</span>
<th:block th:if="${notificationSubject.getDifficulty()}">
<p class="bold-text" th:text="#{email.notification.title.exercise.information}">Information about this exercise:</p>
<ul>
<li th:include="mail/notification/fragments :: difficultyTranslation"/>
<li th:include="~{mail/notification/fragments :: difficultyTranslation}"/>
</ul>
</th:block>
<th:block th:replace="mail/notification/fragments :: openInArtemisButton"/>
<th:block th:replace="~{mail/notification/fragments :: openInArtemisButton}"/>
</div>
<th:block th:replace="mail/notification/fragments :: farewell"/>
<th:block th:replace="~{mail/notification/fragments :: farewell}"/>
</div>
<!-- Message Body End -->
<th:block th:replace="mail/notification/fragments :: footer"/>
<th:block th:replace="~{mail/notification/fragments :: footer}"/>
</body>
</html>
Loading

0 comments on commit 031c0bf

Please sign in to comment.