diff --git a/CHANGELOG.md b/CHANGELOG.md index 6df8c4fbf..8a82ef56c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,17 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [25.10.0](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v25.9.3...v25.10.0) (2021-04-15) + + +### Features + +* **workflows:** list involved users ([d8878a9](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/d8878a905e07f1b5fb5159ecdaf70f27e9c1dc37)) + +## [25.9.3](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v25.9.2...v25.9.3) (2021-04-14) + +## [25.9.2](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v25.9.1...v25.9.2) (2021-04-14) + ## [25.9.1](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v25.9.0...v25.9.1) (2021-04-14) ## [25.9.0](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v25.8.1...v25.9.0) (2021-04-13) diff --git a/messages/uniworx/uniworx_new/categories/I18n/de-de-formal.msg b/messages/uniworx/categories/I18n/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/I18n/de-de-formal.msg rename to messages/uniworx/categories/I18n/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/categories/I18n/en-eu.msg b/messages/uniworx/categories/I18n/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/I18n/en-eu.msg rename to messages/uniworx/categories/I18n/en-eu.msg diff --git a/messages/uniworx/uniworx_new/categories/admin/de-de-formal.msg b/messages/uniworx/categories/admin/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/admin/de-de-formal.msg rename to messages/uniworx/categories/admin/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/categories/admin/en-eu.msg b/messages/uniworx/categories/admin/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/admin/en-eu.msg rename to messages/uniworx/categories/admin/en-eu.msg diff --git a/messages/uniworx/uniworx_new/categories/authorization/de-de-formal.msg b/messages/uniworx/categories/authorization/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/authorization/de-de-formal.msg rename to messages/uniworx/categories/authorization/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/categories/authorization/en-eu.msg b/messages/uniworx/categories/authorization/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/authorization/en-eu.msg rename to messages/uniworx/categories/authorization/en-eu.msg diff --git a/messages/uniworx/uniworx_new/categories/courses/allocation/de-de-formal.msg b/messages/uniworx/categories/courses/allocation/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/courses/allocation/de-de-formal.msg rename to messages/uniworx/categories/courses/allocation/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/categories/courses/allocation/en-eu.msg b/messages/uniworx/categories/courses/allocation/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/courses/allocation/en-eu.msg rename to messages/uniworx/categories/courses/allocation/en-eu.msg diff --git a/messages/uniworx/uniworx_new/categories/courses/courses/application/de-de-formal.msg b/messages/uniworx/categories/courses/courses/application/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/courses/courses/application/de-de-formal.msg rename to messages/uniworx/categories/courses/courses/application/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/categories/courses/courses/application/en-eu.msg b/messages/uniworx/categories/courses/courses/application/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/courses/courses/application/en-eu.msg rename to messages/uniworx/categories/courses/courses/application/en-eu.msg diff --git a/messages/uniworx/uniworx_new/categories/courses/courses/de-de-formal.msg b/messages/uniworx/categories/courses/courses/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/courses/courses/de-de-formal.msg rename to messages/uniworx/categories/courses/courses/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/categories/courses/courses/en-eu.msg b/messages/uniworx/categories/courses/courses/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/courses/courses/en-eu.msg rename to messages/uniworx/categories/courses/courses/en-eu.msg diff --git a/messages/uniworx/uniworx_new/categories/courses/courses/event/de-de-formal.msg b/messages/uniworx/categories/courses/courses/event/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/courses/courses/event/de-de-formal.msg rename to messages/uniworx/categories/courses/courses/event/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/categories/courses/courses/event/en-eu.msg b/messages/uniworx/categories/courses/courses/event/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/courses/courses/event/en-eu.msg rename to messages/uniworx/categories/courses/courses/event/en-eu.msg diff --git a/messages/uniworx/uniworx_new/categories/courses/courses/news/de-de-formal.msg b/messages/uniworx/categories/courses/courses/news/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/courses/courses/news/de-de-formal.msg rename to messages/uniworx/categories/courses/courses/news/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/categories/courses/courses/news/en-eu.msg b/messages/uniworx/categories/courses/courses/news/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/courses/courses/news/en-eu.msg rename to messages/uniworx/categories/courses/courses/news/en-eu.msg diff --git a/messages/uniworx/uniworx_new/categories/courses/exam/exam/de-de-formal.msg b/messages/uniworx/categories/courses/exam/exam/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/courses/exam/exam/de-de-formal.msg rename to messages/uniworx/categories/courses/exam/exam/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/categories/courses/exam/exam/en-eu.msg b/messages/uniworx/categories/courses/exam/exam/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/courses/exam/exam/en-eu.msg rename to messages/uniworx/categories/courses/exam/exam/en-eu.msg diff --git a/messages/uniworx/uniworx_new/categories/courses/exam/exam_office/de-de-formal.msg b/messages/uniworx/categories/courses/exam/exam_office/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/courses/exam/exam_office/de-de-formal.msg rename to messages/uniworx/categories/courses/exam/exam_office/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/categories/courses/exam/exam_office/en-eu.msg b/messages/uniworx/categories/courses/exam/exam_office/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/courses/exam/exam_office/en-eu.msg rename to messages/uniworx/categories/courses/exam/exam_office/en-eu.msg diff --git a/messages/uniworx/uniworx_new/categories/courses/exam/external_exam/de-de-formal.msg b/messages/uniworx/categories/courses/exam/external_exam/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/courses/exam/external_exam/de-de-formal.msg rename to messages/uniworx/categories/courses/exam/external_exam/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/categories/courses/exam/external_exam/en-eu.msg b/messages/uniworx/categories/courses/exam/external_exam/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/courses/exam/external_exam/en-eu.msg rename to messages/uniworx/categories/courses/exam/external_exam/en-eu.msg diff --git a/messages/uniworx/uniworx_new/categories/courses/material/de-de-formal.msg b/messages/uniworx/categories/courses/material/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/courses/material/de-de-formal.msg rename to messages/uniworx/categories/courses/material/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/categories/courses/material/en-eu.msg b/messages/uniworx/categories/courses/material/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/courses/material/en-eu.msg rename to messages/uniworx/categories/courses/material/en-eu.msg diff --git a/messages/uniworx/uniworx_new/categories/courses/participants/de-de-formal.msg b/messages/uniworx/categories/courses/participants/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/courses/participants/de-de-formal.msg rename to messages/uniworx/categories/courses/participants/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/categories/courses/participants/en-eu.msg b/messages/uniworx/categories/courses/participants/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/courses/participants/en-eu.msg rename to messages/uniworx/categories/courses/participants/en-eu.msg diff --git a/messages/uniworx/uniworx_new/categories/courses/sheet/de-de-formal.msg b/messages/uniworx/categories/courses/sheet/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/courses/sheet/de-de-formal.msg rename to messages/uniworx/categories/courses/sheet/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/categories/courses/sheet/en-eu.msg b/messages/uniworx/categories/courses/sheet/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/courses/sheet/en-eu.msg rename to messages/uniworx/categories/courses/sheet/en-eu.msg diff --git a/messages/uniworx/uniworx_new/categories/courses/submission/de-de-formal.msg b/messages/uniworx/categories/courses/submission/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/courses/submission/de-de-formal.msg rename to messages/uniworx/categories/courses/submission/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/categories/courses/submission/en-eu.msg b/messages/uniworx/categories/courses/submission/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/courses/submission/en-eu.msg rename to messages/uniworx/categories/courses/submission/en-eu.msg diff --git a/messages/uniworx/uniworx_new/categories/courses/tutorial/de-de-formal.msg b/messages/uniworx/categories/courses/tutorial/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/courses/tutorial/de-de-formal.msg rename to messages/uniworx/categories/courses/tutorial/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/categories/courses/tutorial/en-eu.msg b/messages/uniworx/categories/courses/tutorial/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/courses/tutorial/en-eu.msg rename to messages/uniworx/categories/courses/tutorial/en-eu.msg diff --git a/messages/uniworx/uniworx_new/categories/error/de-de-formal.msg b/messages/uniworx/categories/error/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/error/de-de-formal.msg rename to messages/uniworx/categories/error/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/categories/error/en-eu.msg b/messages/uniworx/categories/error/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/error/en-eu.msg rename to messages/uniworx/categories/error/en-eu.msg diff --git a/messages/uniworx/uniworx_new/categories/health/de-de-formal.msg b/messages/uniworx/categories/health/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/health/de-de-formal.msg rename to messages/uniworx/categories/health/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/categories/health/en-eu.msg b/messages/uniworx/categories/health/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/health/en-eu.msg rename to messages/uniworx/categories/health/en-eu.msg diff --git a/messages/uniworx/uniworx_new/categories/help/de-de-formal.msg b/messages/uniworx/categories/help/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/help/de-de-formal.msg rename to messages/uniworx/categories/help/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/categories/help/en-eu.msg b/messages/uniworx/categories/help/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/help/en-eu.msg rename to messages/uniworx/categories/help/en-eu.msg diff --git a/messages/uniworx/uniworx_new/categories/info/de-de-formal.msg b/messages/uniworx/categories/info/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/info/de-de-formal.msg rename to messages/uniworx/categories/info/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/categories/info/en-eu.msg b/messages/uniworx/categories/info/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/info/en-eu.msg rename to messages/uniworx/categories/info/en-eu.msg diff --git a/messages/uniworx/uniworx_new/categories/jobs_handler/de-de-formal.msg b/messages/uniworx/categories/jobs_handler/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/jobs_handler/de-de-formal.msg rename to messages/uniworx/categories/jobs_handler/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/categories/jobs_handler/en-eu.msg b/messages/uniworx/categories/jobs_handler/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/jobs_handler/en-eu.msg rename to messages/uniworx/categories/jobs_handler/en-eu.msg diff --git a/messages/uniworx/uniworx_new/categories/metrics/de-de-formal.msg b/messages/uniworx/categories/metrics/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/metrics/de-de-formal.msg rename to messages/uniworx/categories/metrics/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/categories/metrics/en-eu.msg b/messages/uniworx/categories/metrics/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/metrics/en-eu.msg rename to messages/uniworx/categories/metrics/en-eu.msg diff --git a/messages/uniworx/uniworx_new/categories/model_types/de-de-formal.de b/messages/uniworx/categories/model_types/de-de-formal.de similarity index 100% rename from messages/uniworx/uniworx_new/categories/model_types/de-de-formal.de rename to messages/uniworx/categories/model_types/de-de-formal.de diff --git a/messages/uniworx/uniworx_new/categories/model_types/en-eu.msg b/messages/uniworx/categories/model_types/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/model_types/en-eu.msg rename to messages/uniworx/categories/model_types/en-eu.msg diff --git a/messages/uniworx/uniworx_new/categories/news/de-de-formal.msg b/messages/uniworx/categories/news/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/news/de-de-formal.msg rename to messages/uniworx/categories/news/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/categories/news/en-eu.msg b/messages/uniworx/categories/news/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/news/en-eu.msg rename to messages/uniworx/categories/news/en-eu.msg diff --git a/messages/uniworx/uniworx_new/categories/school/de-de-formal.msg b/messages/uniworx/categories/school/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/school/de-de-formal.msg rename to messages/uniworx/categories/school/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/categories/school/en-eu.msg b/messages/uniworx/categories/school/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/school/en-eu.msg rename to messages/uniworx/categories/school/en-eu.msg diff --git a/messages/uniworx/uniworx_new/categories/send/send_notifications/de-de-formal.msg b/messages/uniworx/categories/send/send_notifications/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/send/send_notifications/de-de-formal.msg rename to messages/uniworx/categories/send/send_notifications/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/categories/send/send_notifications/en-eu.msg b/messages/uniworx/categories/send/send_notifications/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/send/send_notifications/en-eu.msg rename to messages/uniworx/categories/send/send_notifications/en-eu.msg diff --git a/messages/uniworx/uniworx_new/categories/settings/auth_settings/de-de-formal.msg b/messages/uniworx/categories/settings/auth_settings/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/settings/auth_settings/de-de-formal.msg rename to messages/uniworx/categories/settings/auth_settings/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/categories/settings/auth_settings/en-eu.msg b/messages/uniworx/categories/settings/auth_settings/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/settings/auth_settings/en-eu.msg rename to messages/uniworx/categories/settings/auth_settings/en-eu.msg diff --git a/messages/uniworx/uniworx_new/categories/settings/csv_options/de-de-formal.msg b/messages/uniworx/categories/settings/csv_options/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/settings/csv_options/de-de-formal.msg rename to messages/uniworx/categories/settings/csv_options/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/categories/settings/csv_options/en-eu.msg b/messages/uniworx/categories/settings/csv_options/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/settings/csv_options/en-eu.msg rename to messages/uniworx/categories/settings/csv_options/en-eu.msg diff --git a/messages/uniworx/uniworx_new/categories/settings/de-de-formal.msg b/messages/uniworx/categories/settings/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/settings/de-de-formal.msg rename to messages/uniworx/categories/settings/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/categories/settings/en-eu.msg b/messages/uniworx/categories/settings/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/settings/en-eu.msg rename to messages/uniworx/categories/settings/en-eu.msg diff --git a/messages/uniworx/uniworx_new/categories/settings/personal_settings/de-de-formal.msg b/messages/uniworx/categories/settings/personal_settings/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/settings/personal_settings/de-de-formal.msg rename to messages/uniworx/categories/settings/personal_settings/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/categories/settings/personal_settings/en-eu.msg b/messages/uniworx/categories/settings/personal_settings/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/settings/personal_settings/en-eu.msg rename to messages/uniworx/categories/settings/personal_settings/en-eu.msg diff --git a/messages/uniworx/uniworx_new/categories/system_message/de-de-formal.msg b/messages/uniworx/categories/system_message/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/system_message/de-de-formal.msg rename to messages/uniworx/categories/system_message/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/categories/system_message/en-eu.msg b/messages/uniworx/categories/system_message/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/system_message/en-eu.msg rename to messages/uniworx/categories/system_message/en-eu.msg diff --git a/messages/uniworx/uniworx_new/categories/term/de-de-formal.msg b/messages/uniworx/categories/term/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/term/de-de-formal.msg rename to messages/uniworx/categories/term/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/categories/term/en-eu.msg b/messages/uniworx/categories/term/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/term/en-eu.msg rename to messages/uniworx/categories/term/en-eu.msg diff --git a/messages/uniworx/uniworx_new/categories/user/de-de-formal.msg b/messages/uniworx/categories/user/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/user/de-de-formal.msg rename to messages/uniworx/categories/user/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/categories/user/en-eu.msg b/messages/uniworx/categories/user/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/user/en-eu.msg rename to messages/uniworx/categories/user/en-eu.msg diff --git a/messages/uniworx/uniworx_new/categories/workflows/de-de-formal.msg b/messages/uniworx/categories/workflows/de-de-formal.msg similarity index 99% rename from messages/uniworx/uniworx_new/categories/workflows/de-de-formal.msg rename to messages/uniworx/categories/workflows/de-de-formal.msg index 8d189aff5..1b4d1dcd1 100644 --- a/messages/uniworx/uniworx_new/categories/workflows/de-de-formal.msg +++ b/messages/uniworx/categories/workflows/de-de-formal.msg @@ -137,3 +137,4 @@ YAMLFieldDecodeFailure yamlFailure@String: Konnte YAML nicht parsen: #{yamlFailu WGFTextInput: Textfeld WGFFileUpload: Dateifeld +WorkflowWorkflowListPersons: Beteiligte Benutzer \ No newline at end of file diff --git a/messages/uniworx/uniworx_new/categories/workflows/en-eu.msg b/messages/uniworx/categories/workflows/en-eu.msg similarity index 99% rename from messages/uniworx/uniworx_new/categories/workflows/en-eu.msg rename to messages/uniworx/categories/workflows/en-eu.msg index 194136706..dacd9d738 100644 --- a/messages/uniworx/uniworx_new/categories/workflows/en-eu.msg +++ b/messages/uniworx/categories/workflows/en-eu.msg @@ -137,3 +137,4 @@ YAMLFieldDecodeFailure yamlFailure: Could not parse YAML: #{yamlFailure} WGFTextInput: Text field WGFFileUpload: File field +WorkflowWorkflowListPersons: Involved users \ No newline at end of file diff --git a/messages/uniworx/uniworx_new/categories/yesod_middleware/de-de-formal.msg b/messages/uniworx/categories/yesod_middleware/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/yesod_middleware/de-de-formal.msg rename to messages/uniworx/categories/yesod_middleware/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/categories/yesod_middleware/en-eu.msg b/messages/uniworx/categories/yesod_middleware/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/categories/yesod_middleware/en-eu.msg rename to messages/uniworx/categories/yesod_middleware/en-eu.msg diff --git a/messages/uniworx/misc/en-eu.msg b/messages/uniworx/misc/en-eu.msg index 79796ed9a..4ccb34bd1 100644 --- a/messages/uniworx/misc/en-eu.msg +++ b/messages/uniworx/misc/en-eu.msg @@ -76,4 +76,4 @@ DefinitionCourseEvents: Course occurrences DefinitionCourseNews: Course news Invitations: Invitations FormFieldRequiredTip: Required fields -FormFieldWorkflowDatasetTip: At least one of the marked fields must be filled \ No newline at end of file +FormFieldWorkflowDatasetTip: At least one of the marked fields must be filled diff --git a/messages/uniworx/uniworx_new/utils/buttons/de-de-formal.msg b/messages/uniworx/utils/buttons/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/utils/buttons/de-de-formal.msg rename to messages/uniworx/utils/buttons/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/utils/buttons/en-eu.msg b/messages/uniworx/utils/buttons/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/utils/buttons/en-eu.msg rename to messages/uniworx/utils/buttons/en-eu.msg diff --git a/messages/uniworx/uniworx_new/utils/handler_form/massinput/de-de-formal.msg b/messages/uniworx/utils/handler_form/massinput/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/utils/handler_form/massinput/de-de-formal.msg rename to messages/uniworx/utils/handler_form/massinput/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/utils/handler_form/massinput/en-eu.msg b/messages/uniworx/utils/handler_form/massinput/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/utils/handler_form/massinput/en-eu.msg rename to messages/uniworx/utils/handler_form/massinput/en-eu.msg diff --git a/messages/uniworx/uniworx_new/utils/handler_form/occurrences/de-de-formal.msg b/messages/uniworx/utils/handler_form/occurrences/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/utils/handler_form/occurrences/de-de-formal.msg rename to messages/uniworx/utils/handler_form/occurrences/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/utils/handler_form/occurrences/en-eu.msg b/messages/uniworx/utils/handler_form/occurrences/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/utils/handler_form/occurrences/en-eu.msg rename to messages/uniworx/utils/handler_form/occurrences/en-eu.msg diff --git a/messages/uniworx/uniworx_new/utils/navigation/breadcrumbs/de-de-formal.msg b/messages/uniworx/utils/navigation/breadcrumbs/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/utils/navigation/breadcrumbs/de-de-formal.msg rename to messages/uniworx/utils/navigation/breadcrumbs/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/utils/navigation/breadcrumbs/en-eu.msg b/messages/uniworx/utils/navigation/breadcrumbs/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/utils/navigation/breadcrumbs/en-eu.msg rename to messages/uniworx/utils/navigation/breadcrumbs/en-eu.msg diff --git a/messages/uniworx/uniworx_new/utils/navigation/menu/de-de-formal.msg b/messages/uniworx/utils/navigation/menu/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/utils/navigation/menu/de-de-formal.msg rename to messages/uniworx/utils/navigation/menu/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/utils/navigation/menu/en-eu.msg b/messages/uniworx/utils/navigation/menu/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/utils/navigation/menu/en-eu.msg rename to messages/uniworx/utils/navigation/menu/en-eu.msg diff --git a/messages/uniworx/uniworx_new/utils/rating/de-de-formal.msg b/messages/uniworx/utils/rating/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/utils/rating/de-de-formal.msg rename to messages/uniworx/utils/rating/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/utils/rating/en-eu.msg b/messages/uniworx/utils/rating/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/utils/rating/en-eu.msg rename to messages/uniworx/utils/rating/en-eu.msg diff --git a/messages/uniworx/uniworx_new/utils/site_layout/de-de-formal.msg b/messages/uniworx/utils/site_layout/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/utils/site_layout/de-de-formal.msg rename to messages/uniworx/utils/site_layout/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/utils/site_layout/en-eu.msg b/messages/uniworx/utils/site_layout/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/utils/site_layout/en-eu.msg rename to messages/uniworx/utils/site_layout/en-eu.msg diff --git a/messages/uniworx/uniworx_new/utils/table_column/de-de-formal.de b/messages/uniworx/utils/table_column/de-de-formal.de similarity index 100% rename from messages/uniworx/uniworx_new/utils/table_column/de-de-formal.de rename to messages/uniworx/utils/table_column/de-de-formal.de diff --git a/messages/uniworx/uniworx_new/utils/table_column/en-eu.msg b/messages/uniworx/utils/table_column/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/utils/table_column/en-eu.msg rename to messages/uniworx/utils/table_column/en-eu.msg diff --git a/messages/uniworx/uniworx_new/utils/table_pagination/de-de-formal.msg b/messages/uniworx/utils/table_pagination/de-de-formal.msg similarity index 100% rename from messages/uniworx/uniworx_new/utils/table_pagination/de-de-formal.msg rename to messages/uniworx/utils/table_pagination/de-de-formal.msg diff --git a/messages/uniworx/uniworx_new/utils/table_pagination/en-eu.msg b/messages/uniworx/utils/table_pagination/en-eu.msg similarity index 100% rename from messages/uniworx/uniworx_new/utils/table_pagination/en-eu.msg rename to messages/uniworx/utils/table_pagination/en-eu.msg diff --git a/messages/uniworx/uniworx_new/utils/utils/de-de-formal.de b/messages/uniworx/utils/utils/de-de-formal.de similarity index 98% rename from messages/uniworx/uniworx_new/utils/utils/de-de-formal.de rename to messages/uniworx/utils/utils/de-de-formal.de index d5f31281f..7cb2902ff 100644 --- a/messages/uniworx/uniworx_new/utils/utils/de-de-formal.de +++ b/messages/uniworx/utils/utils/de-de-formal.de @@ -73,7 +73,7 @@ UtilExamResultGrade: Note UtilExamResultPass: Bestanden/Nicht Bestanden UtilExamResultNoShow: Nicht erschienen UtilExamResultVoided: Entwertet -CourseOption tid@TermId ssh@SchoolId coursen@CourseName: #{tid} - #{ssh} - #{coursen} +CourseOption tid@TermId ssh@SchoolId csh@CourseShorthand coursen@CourseName: #{tid} - #{ssh} - #{csh}: #{coursen} RoomReferenceNone: — RoomReferenceSimple: Text RoomReferenceLink: Link & Anweisungen diff --git a/messages/uniworx/uniworx_new/utils/utils/en-eu.msg b/messages/uniworx/utils/utils/en-eu.msg similarity index 99% rename from messages/uniworx/uniworx_new/utils/utils/en-eu.msg rename to messages/uniworx/utils/utils/en-eu.msg index a969dd8e8..e81a62045 100644 --- a/messages/uniworx/uniworx_new/utils/utils/en-eu.msg +++ b/messages/uniworx/utils/utils/en-eu.msg @@ -73,7 +73,7 @@ UtilExamResultGrade: Grade UtilExamResultPass: Passed/Failed UtilExamResultNoShow: Not present UtilExamResultVoided: Voided -CourseOption tid ssh coursen: #{tid} - #{ssh} - #{coursen} +CourseOption tid ssh csh coursen: #{tid} - #{ssh} - #{csh}: #{coursen} RoomReferenceNone: — RoomReferenceSimple: Text RoomReferenceLink: Link & Instructions diff --git a/package-lock.json b/package-lock.json index 1666220d7..400589d5f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "uni2work", - "version": "25.9.1", + "version": "25.10.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index e81fa6dd3..2f8013dd7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "uni2work", - "version": "25.9.1", + "version": "25.10.0", "description": "", "keywords": [], "author": "", diff --git a/package.yaml b/package.yaml index 6f48c0774..f6de3f536 100644 --- a/package.yaml +++ b/package.yaml @@ -1,5 +1,5 @@ name: uniworx -version: 25.9.1 +version: 25.10.0 dependencies: - base - yesod diff --git a/src/Foundation/I18n.hs b/src/Foundation/I18n.hs index 981d3ebd7..a9f3183c6 100644 --- a/src/Foundation/I18n.hs +++ b/src/Foundation/I18n.hs @@ -143,41 +143,41 @@ maybeToMessage before (Just x) after = before <> toMessage x <> after -- Messages creates type UniWorXMessage and RenderMessage UniWorX instance mkMessage ''UniWorX "messages/uniworx/misc" "de-de-formal" mkMessageAddition ''UniWorX "Test" "messages/uniworx/test" "de-de-formal" -mkMessageAddition ''UniWorX "Settings" "messages/uniworx/uniworx_new/categories/settings" "de-de-formal" -mkMessageAddition ''UniWorX "Help" "messages/uniworx/uniworx_new/categories/help" "de-de-formal" -mkMessageAddition ''UniWorX "Navigation" "messages/uniworx/uniworx_new/utils/navigation" "de-de-formal" -mkMessageAddition ''UniWorX "Workflow" "messages/uniworx/uniworx_new/categories/workflows" "de-de-formal" -mkMessageAddition ''UniWorX "Course" "messages/uniworx/uniworx_new/categories/courses/courses" "de-de-formal" -mkMessageAddition ''UniWorX "Allocation" "messages/uniworx/uniworx_new/categories/courses/allocation" "de-de-formal" -mkMessageAddition ''UniWorX "Exam" "messages/uniworx/uniworx_new/categories/courses/exam" "de-de-formal" -mkMessageAddition ''UniWorX "Sheet" "messages/uniworx/uniworx_new/categories/courses/sheet" "de-de-formal" -mkMessageAddition ''UniWorX "Admin" "messages/uniworx/uniworx_new/categories/admin" "de-de-formal" -mkMessageAddition ''UniWorX "Submission" "messages/uniworx/uniworx_new/categories/courses/submission" "de-de-formal" -mkMessageAddition ''UniWorX "Tutorial" "messages/uniworx/uniworx_new/categories/courses/tutorial" "de-de-formal" -mkMessageAddition ''UniWorX "Material" "messages/uniworx/uniworx_new/categories/courses/material" "de-de-formal" -mkMessageAddition ''UniWorX "Authorization" "messages/uniworx/uniworx_new/categories/authorization" "de-de-formal" -mkMessageAddition ''UniWorX "Health" "messages/uniworx/uniworx_new/categories/health" "de-de-formal" -mkMessageAddition ''UniWorX "Info" "messages/uniworx/uniworx_new/categories/info" "de-de-formal" -mkMessageAddition ''UniWorX "Metrics" "messages/uniworx/uniworx_new/categories/metrics" "de-de-formal" -mkMessageAddition ''UniWorX "News" "messages/uniworx/uniworx_new/categories/news" "de-de-formal" -mkMessageAddition ''UniWorX "School" "messages/uniworx/uniworx_new/categories/school" "de-de-formal" -mkMessageAddition ''UniWorX "SystemMessage" "messages/uniworx/uniworx_new/categories/system_message" "de-de-formal" -mkMessageAddition ''UniWorX "Participants" "messages/uniworx/uniworx_new/categories/courses/participants" "de-de-formal" -mkMessageAddition ''UniWorX "Term" "messages/uniworx/uniworx_new/categories/term" "de-de-formal" -mkMessageAddition ''UniWorX "Error" "messages/uniworx/uniworx_new/categories/error" "de-de-formal" -mkMessageAddition ''UniWorX "I18n" "messages/uniworx/uniworx_new/categories/I18n" "de-de-formal" -mkMessageAddition ''UniWorX "JobsHandler" "messages/uniworx/uniworx_new/categories/jobs_handler" "de-de-formal" -mkMessageAddition ''UniWorX "ModelTypes" "messages/uniworx/uniworx_new/categories/model_types" "de-de-formal" -mkMessageAddition ''UniWorX "Send" "messages/uniworx/uniworx_new/categories/send" "de-de-formal" -mkMessageAddition ''UniWorX "YesodMiddleware" "messages/uniworx/uniworx_new/categories/yesod_middleware" "de-de-formal" -mkMessageAddition ''UniWorX "User" "messages/uniworx/uniworx_new/categories/user" "de-de-formal" -mkMessageAddition ''UniWorX "Button" "messages/uniworx/uniworx_new/utils/buttons" "de-de-formal" -mkMessageAddition ''UniWorX "Form" "messages/uniworx/uniworx_new/utils/handler_form" "de-de-formal" -mkMessageAddition ''UniWorX "TableColumn" "messages/uniworx/uniworx_new/utils/table_column" "de-de-formal" -mkMessageAddition ''UniWorX "TablePagination" "messages/uniworx/uniworx_new/utils/table_pagination" "de-de-formal" -mkMessageAddition ''UniWorX "Util" "messages/uniworx/uniworx_new/utils/utils" "de-de-formal" -mkMessageAddition ''UniWorX "Rating" "messages/uniworx/uniworx_new/utils/rating" "de-de-formal" -mkMessageAddition ''UniWorX "SiteLayout" "messages/uniworx/uniworx_new/utils/site_layout" "de-de-formal" +mkMessageAddition ''UniWorX "Settings" "messages/uniworx/categories/settings" "de-de-formal" +mkMessageAddition ''UniWorX "Help" "messages/uniworx/categories/help" "de-de-formal" +mkMessageAddition ''UniWorX "Navigation" "messages/uniworx/utils/navigation" "de-de-formal" +mkMessageAddition ''UniWorX "Workflow" "messages/uniworx/categories/workflows" "de-de-formal" +mkMessageAddition ''UniWorX "Course" "messages/uniworx/categories/courses/courses" "de-de-formal" +mkMessageAddition ''UniWorX "Allocation" "messages/uniworx/categories/courses/allocation" "de-de-formal" +mkMessageAddition ''UniWorX "Exam" "messages/uniworx/categories/courses/exam" "de-de-formal" +mkMessageAddition ''UniWorX "Sheet" "messages/uniworx/categories/courses/sheet" "de-de-formal" +mkMessageAddition ''UniWorX "Admin" "messages/uniworx/categories/admin" "de-de-formal" +mkMessageAddition ''UniWorX "Submission" "messages/uniworx/categories/courses/submission" "de-de-formal" +mkMessageAddition ''UniWorX "Tutorial" "messages/uniworx/categories/courses/tutorial" "de-de-formal" +mkMessageAddition ''UniWorX "Material" "messages/uniworx/categories/courses/material" "de-de-formal" +mkMessageAddition ''UniWorX "Authorization" "messages/uniworx/categories/authorization" "de-de-formal" +mkMessageAddition ''UniWorX "Health" "messages/uniworx/categories/health" "de-de-formal" +mkMessageAddition ''UniWorX "Info" "messages/uniworx/categories/info" "de-de-formal" +mkMessageAddition ''UniWorX "Metrics" "messages/uniworx/categories/metrics" "de-de-formal" +mkMessageAddition ''UniWorX "News" "messages/uniworx/categories/news" "de-de-formal" +mkMessageAddition ''UniWorX "School" "messages/uniworx/categories/school" "de-de-formal" +mkMessageAddition ''UniWorX "SystemMessage" "messages/uniworx/categories/system_message" "de-de-formal" +mkMessageAddition ''UniWorX "Participants" "messages/uniworx/categories/courses/participants" "de-de-formal" +mkMessageAddition ''UniWorX "Term" "messages/uniworx/categories/term" "de-de-formal" +mkMessageAddition ''UniWorX "Error" "messages/uniworx/categories/error" "de-de-formal" +mkMessageAddition ''UniWorX "I18n" "messages/uniworx/categories/I18n" "de-de-formal" +mkMessageAddition ''UniWorX "JobsHandler" "messages/uniworx/categories/jobs_handler" "de-de-formal" +mkMessageAddition ''UniWorX "ModelTypes" "messages/uniworx/categories/model_types" "de-de-formal" +mkMessageAddition ''UniWorX "Send" "messages/uniworx/categories/send" "de-de-formal" +mkMessageAddition ''UniWorX "YesodMiddleware" "messages/uniworx/categories/yesod_middleware" "de-de-formal" +mkMessageAddition ''UniWorX "User" "messages/uniworx/categories/user" "de-de-formal" +mkMessageAddition ''UniWorX "Button" "messages/uniworx/utils/buttons" "de-de-formal" +mkMessageAddition ''UniWorX "Form" "messages/uniworx/utils/handler_form" "de-de-formal" +mkMessageAddition ''UniWorX "TableColumn" "messages/uniworx/utils/table_column" "de-de-formal" +mkMessageAddition ''UniWorX "TablePagination" "messages/uniworx/utils/table_pagination" "de-de-formal" +mkMessageAddition ''UniWorX "Util" "messages/uniworx/utils/utils" "de-de-formal" +mkMessageAddition ''UniWorX "Rating" "messages/uniworx/utils/rating" "de-de-formal" +mkMessageAddition ''UniWorX "SiteLayout" "messages/uniworx/utils/site_layout" "de-de-formal" mkMessageVariant ''UniWorX ''CampusMessage "messages/auth/campus" "de" mkMessageVariant ''UniWorX ''DummyMessage "messages/auth/dummy" "de" mkMessageVariant ''UniWorX ''PWHashMessage "messages/auth/pw-hash" "de" diff --git a/src/Foundation/Yesod/ErrorHandler.hs b/src/Foundation/Yesod/ErrorHandler.hs index 4fa5cf095..af67f5b8b 100644 --- a/src/Foundation/Yesod/ErrorHandler.hs +++ b/src/Foundation/Yesod/ErrorHandler.hs @@ -4,7 +4,6 @@ module Foundation.Yesod.ErrorHandler import Import.NoFoundation hiding (errorHandler) - import Foundation.Type import Foundation.I18n import Foundation.Authorization diff --git a/src/Handler/Exam/Show.hs b/src/Handler/Exam/Show.hs index 735ad4c2b..63d235e81 100644 --- a/src/Handler/Exam/Show.hs +++ b/src/Handler/Exam/Show.hs @@ -109,7 +109,7 @@ getEShowR tid ssh csh examn = do showFinishWidget = lecturerInfoShown && is _Nothing examFinished showAutoOccurrenceCalculateWidget = lecturerInfoShown showRegisteredCount = lecturerInfoShown - examFinishedMsg = if lecturerInfoShown then (SomeMessage MsgExamFinished) else (SomeMessage MsgExamFinishedParticipant) + examFinishedMsg = if lecturerInfoShown then SomeMessage MsgExamFinished else SomeMessage MsgExamFinishedParticipant sumMaxPoints = sum [ fromRational examPartWeight * mPoints | (Entity _ ExamPart{..}, _, _) <- examParts, mPoints <- examPartMaxPoints ^.. _Just ] diff --git a/src/Handler/News.hs b/src/Handler/News.hs index d7be7045d..f70512caf 100644 --- a/src/Handler/News.hs +++ b/src/Handler/News.hs @@ -194,7 +194,7 @@ newsUpcomingSheets uid = do in (==b) <$> hasReadAccessTo (CSheetR tid ssh csh shn SShowR) :: DB Bool ] , dbtFilterUI = mempty - , dbtStyle = def { dbsEmptyStyle = DBESNoHeading, dbsEmptyMessage = (SomeMessage MsgNoUpcomingSheetDeadlines) } + , dbtStyle = def { dbsEmptyStyle = DBESNoHeading, dbsEmptyMessage = SomeMessage MsgNoUpcomingSheetDeadlines } , dbtParams = def , dbtIdent = "upcoming-sheets" :: Text , dbtCsvEncode = noCsvEncode diff --git a/src/Handler/Participants.hs b/src/Handler/Participants.hs index 6a27a8375..70bd2383f 100644 --- a/src/Handler/Participants.hs +++ b/src/Handler/Participants.hs @@ -96,23 +96,21 @@ postParticipantsIntersectR = do } intersectionsRes <- formResultMaybe coursesRes . fmap (fmap Just) $ \cids -> runDB $ do - let coursePairs = do - cid <- Set.toList cids - other <- Set.toList . snd $ Set.split cid cids - return (cid, other) - intersections <- fmap Map.fromList . forM coursePairs $ \cidPair@(lCid, uCid) -> fmap (\[E.Value n] -> (cidPair, n)) . E.select . E.from $ \user -> do - E.where_ . E.exists . E.from $ \courseParticipant -> - E.where_ $ courseParticipant E.^. CourseParticipantUser E.==. user E.^. UserId - E.&&. courseParticipant E.^. CourseParticipantCourse E.==. E.val lCid - E.&&. courseParticipant E.^. CourseParticipantState E.==. E.val CourseParticipantActive - E.where_ . E.exists . E.from $ \courseParticipant -> - E.where_ $ courseParticipant E.^. CourseParticipantUser E.==. user E.^. UserId - E.&&. courseParticipant E.^. CourseParticipantCourse E.==. E.val uCid - E.&&. courseParticipant E.^. CourseParticipantState E.==. E.val CourseParticipantActive - return E.countRows :: E.SqlQuery (E.SqlExpr (E.Value Int)) - selfIntersections <- fmap Map.fromList . forM (Set.toList cids) $ \cid -> ((cid, cid), ) <$> count [CourseParticipantCourse ==. cid, CourseParticipantState ==. CourseParticipantActive] - let intersections' = Map.union intersections selfIntersections + courseUsers <- flip mapFromSetM cids $ \cid -> fmap (Set.fromList . map E.unValue) . E.select . E.from $ \participant -> do + E.where_ $ participant E.^. CourseParticipantCourse E.==. E.val cid + E.&&. participant E.^. CourseParticipantState E.==. E.val CourseParticipantActive + return $ participant E.^. CourseParticipantUser courses <- sortOn (view $ _entityVal . $(multifocusL 3) _courseTerm _courseSchool _courseShorthand) <$> forM (Set.toList cids) getEntity404 + + let coursePairs = Set.fromAscList $ do + cid <- Set.toAscList cids + other <- Set.toAscList . snd $ Set.split cid cids + return (cid, other) + intersections = flip Map.fromSet coursePairs $ \(lCid, uCid) + -> Set.size $ Map.findWithDefault Set.empty lCid courseUsers `Set.intersection` Map.findWithDefault Set.empty uCid courseUsers + selfIntersections = Map.mapKeysMonotonic (\cid -> (cid, cid)) $ Set.size <$> courseUsers + intersections' = Map.union intersections selfIntersections + return (courses, intersections') let diff --git a/src/Handler/Utils/Form.hs b/src/Handler/Utils/Form.hs index a9e67ca8f..3bc02b7ef 100644 --- a/src/Handler/Utils/Form.hs +++ b/src/Handler/Utils/Form.hs @@ -2098,12 +2098,13 @@ courseSelectForm query coursePred miButtonAction' miIdent' fSettings fRequired m course <- query E.orderBy [ E.desc $ course E.^. CourseTerm , E.asc $ course E.^. CourseSchool + , E.asc $ course E.^. CourseShorthand , E.asc $ course E.^. CourseName ] return course miAdd' nudge btn csrf = do - let courseOptions = optionsCryptoIdE query' (\Course{..} -> MsgCourseOption courseTerm courseSchool courseName) >>= fmap (fmap entityKey . mkOptionList) . filterM (coursePred . optionInternalValue) . olOptions + let courseOptions = optionsCryptoIdE query' (\Course{..} -> MsgCourseOption courseTerm courseSchool courseShorthand courseName) >>= fmap (fmap entityKey . mkOptionList) . filterM (coursePred . optionInternalValue) . olOptions (courseRes, addView) <- mpopt (hoistField liftHandler $ selectField courseOptions) (fslI MsgTableCourse & addName (nudge "course")) Nothing let res = courseRes <&> \newCourse oldCourses -> pure (Set.toList $ Set.singleton newCourse `Set.difference` Set.fromList oldCourses) diff --git a/src/Handler/Utils/Table/Pagination.hs b/src/Handler/Utils/Table/Pagination.hs index 2514f0761..b76538200 100644 --- a/src/Handler/Utils/Table/Pagination.hs +++ b/src/Handler/Utils/Table/Pagination.hs @@ -1699,13 +1699,13 @@ maybeLinkEitherCellCM' mCache xM x2route (x2widgetAuth,x2widgetUnauth) = cell $ toWidget $ x2widgetUnauth Nothing -listCell :: (IsDBTable m a, Traversable f) => f r' -> (r' -> DBCell m a) -> DBCell m a +listCell :: (IsDBTable m a, MonoFoldable mono) => mono -> (Element mono -> DBCell m a) -> DBCell m a listCell = listCell' . return -listCell' :: (IsDBTable m a, Traversable f) => WriterT a m (f r') -> (r' -> DBCell m a) -> DBCell m a +listCell' :: (IsDBTable m a, MonoFoldable mono) => WriterT a m mono -> (Element mono -> DBCell m a) -> DBCell m a listCell' mkXS mkCell = review dbCell . ([], ) $ do xs <- mkXS - cells <- forM xs $ + cells <- forM (toList xs) $ \(view dbCell . mkCell -> (attrs, mkWidget)) -> (attrs, ) <$> mkWidget return $(widgetFile "table/cell/list") diff --git a/src/Handler/Workflow/Instance/Form.hs b/src/Handler/Workflow/Instance/Form.hs index e31924820..41e582a50 100644 --- a/src/Handler/Workflow/Instance/Form.hs +++ b/src/Handler/Workflow/Instance/Form.hs @@ -39,7 +39,7 @@ workflowInstanceScopeForm scopeRestr fs mPrev = multiActionA scopeOptions' fs $ , WSCourse <$> apopt (selectField' Nothing courseOptions) (fslI MsgTableCourse) (mPrev ^? _Just . _wisCourse) ) ] - where courseOptions = fmap (fmap entityKey) . optionsPersistCryptoId [] [ Desc CourseTerm, Asc CourseSchool, Asc CourseName ] $ \Course{..} -> MsgWorkflowCourseOption courseTerm courseSchool courseName + where courseOptions = fmap (fmap entityKey) . optionsPersistCryptoId [] [ Desc CourseTerm, Asc CourseSchool, Asc CourseName ] $ \Course{..} -> MsgCourseOption courseTerm courseSchool courseShorthand courseName data WorkflowInstanceForm = WorkflowInstanceForm diff --git a/src/Handler/Workflow/Workflow/List.hs b/src/Handler/Workflow/Workflow/List.hs index 7417af3b2..c537e72fc 100644 --- a/src/Handler/Workflow/Workflow/List.hs +++ b/src/Handler/Workflow/Workflow/List.hs @@ -35,6 +35,10 @@ import Data.Semigroup (Last(..)) import qualified Data.Monoid as Monoid (Last(..)) import Control.Monad.Trans.Writer.Strict (WriterT) +import Control.Monad.Trans.State.Strict (execStateT) +import qualified Control.Monad.State.Class as State + +import qualified Data.RFC5051 as RFC5051 getGlobalWorkflowWorkflowListR :: Handler Html @@ -115,6 +119,7 @@ type WorkflowWorkflowData = DBRow , Maybe (Entity WorkflowInstance) , Maybe (Entity WorkflowInstanceDescription) , Maybe WorkflowWorkflowActionData -- ^ Last Action + , [Entity User] ) type WorkflowWorkflowActionData = ( Maybe Text @@ -181,6 +186,9 @@ resultWorkflowInstanceTitle = to $ \x -> case x ^? resultWorkflowInstanceDescrip resultLastAction :: Lens' WorkflowWorkflowData (Maybe WorkflowWorkflowActionData) resultLastAction = _dbrOutput . _6 +resultPersons :: Traversal' WorkflowWorkflowData (Entity User) +resultPersons = _dbrOutput . _7 . traverse + actionTo :: Lens' WorkflowWorkflowActionData (Maybe Text) actionTo = _1 @@ -243,7 +251,7 @@ workflowWorkflowList (title, heading) WWListColumns{..} sqlPred = do where go Nothing = return Nothing go (Just (act, newSt)) = maybeT (go $ newSt ^? _nullable . p) $ do - guardM . lift . $cachedHereBinary (wwId, wpTo act, wpUser act, Map.keys $ wpPayload act) $ mayViewWorkflowAction mAuthId wwId act + guardM . lift $ mayViewWorkflowAction mAuthId wwId act Just <$> lift (w act) descAction p = goAction p $ \WorkflowAction{..} -> let actName = runMaybeT $ do @@ -272,17 +280,41 @@ workflowWorkflowList (title, heading) WWListColumns{..} sqlPred = do <*> pure actFinal lastAct <- descAction $ re _nullable . _Snoc . swapped - return (cID, rScope, ww, mwi, wiDesc, lastAct) + persons' <- lift . flip (execStateT @_ @(Set UserId, Map WorkflowPayloadLabel (Set UserId))) mempty . forM_ (ww ^.. _entityVal . _workflowWorkflowState . from _DBWorkflowState . re _nullable . folded) $ \act -> maybeT_ . forM_ (join $ wpUser act) $ \wpUser' -> do + let mVia = Map.lookup (wpVia act) . wgnEdges =<< Map.lookup (wpTo act) wgNodes + guardM . lift . lift $ mayViewWorkflowAction mAuthId wwId act + lift . maybeT_ . hoist (zoom _1) $ do + viewActors <- hoistMaybe $ preview _wgeViewActor =<< mVia + guardM . lift . lift $ anyM (otoList viewActors) hasWorkflowRole' + State.modify' $ Set.insert wpUser' + iforM_ (wpPayload act) $ \pLbl ps -> lift . maybeT_ . hoist (zoom _2) $ do + let users = setOf (typesCustom @WorkflowChildren) ps + guard . not $ null users + WorkflowPayloadView{..} <- hoistMaybe $ do + WGN{wgnPayloadView} <- Map.lookup (wpTo act) wgNodes + Map.lookup pLbl wgnPayloadView + guardM . lift . lift $ anyM (otoList wpvViewers) hasWorkflowRole' + at pLbl ?= users + + persons <- lift . mapMaybeM (MaybeT . getEntity) . toList $ view _1 persons' <> view (_2 . folded) persons' + + return (cID, rScope, ww, mwi, wiDesc, lastAct, persons) dbtColonnade :: Colonnade Sortable _ _ dbtColonnade = mconcat -- TODO: columns [ sortable (Just "workflow-workflow") (i18nCell MsgWorkflowWorkflowListNumber) . (addCellClass ("cryptoid" :: Text) .) . anchorWorkflowWorkflow . views resultWorkflowWorkflowId $ toWidget . toPathPiece , guardMonoid wwListColumnScope . sortable (Just "scope") (i18nCell MsgWorkflowWorkflowListScope) $ \x -> foldMap (\t -> anchorWorkflowScope (const $ i18n t :: _ -> Widget) x) $ view resultRouteScope x , guardMonoid wwListColumnInstance . sortable (Just "instance") (i18nCell MsgWorkflowWorkflowListInstance) $ \x -> foldMap (\t -> anchorWorkflowInstance (const t) x) $ preview resultWorkflowInstanceTitle x + , sortable Nothing (i18nCell MsgWorkflowWorkflowListPersons) $ \x -> + let lCell = flip listCell (uncurry userCell) . sortBy personCmp $ x ^.. resultPersons . _entityVal . to ((,) <$> userDisplayName <*> userSurname) + in lCell & cellAttrs <>~ [("class", "list--inline list--comma-separated")] , sortable (Just "current-state") (i18nCell MsgWorkflowWorkflowListCurrentState) $ fromMaybe mempty . previews (resultLastAction . _Just . $(multifocusL 2) actionTo actionFinal) stateCell , sortable (Just "last-action-time") (i18nCell MsgWorkflowWorkflowListLastActionTime) $ fromMaybe mempty . previews (resultLastAction . _Just . actionTime) dateTimeCell , sortable (Just "last-action-user") (i18nCell MsgWorkflowWorkflowListLastActionUser) $ fromMaybe mempty . previews (resultLastAction . _Just . actionActor) actorCell ] where + personCmp = (RFC5051.compareUnicode `on` (pack . toListOf (_2 . to (unpack . CI.foldCase) . folded))) + <> (RFC5051.compareUnicode `on` (pack . toListOf (_1 . to (unpack . CI.foldCase) . folded))) + stateCell = \case (Nothing, _) -> i18nCell MsgWorkflowWorkflowWorkflowHistoryStateHidden & addCellClass ("explanation" :: Text) (Just n, Nothing) -> textCell n diff --git a/templates/widgets/massinput/courses/add.hamlet b/templates/widgets/massinput/courses/add.hamlet index 879d67f4f..7103db24a 100644 --- a/templates/widgets/massinput/courses/add.hamlet +++ b/templates/widgets/massinput/courses/add.hamlet @@ -1,5 +1,5 @@ $newline never -