From f3a3a0f7017882351b69dc0c0fb3ad5b2d478aff Mon Sep 17 00:00:00 2001 From: Samuel Maldonado Date: Sun, 21 Apr 2024 14:36:59 -0400 Subject: [PATCH 1/2] Add bulk-print info (#210) --- ...ide--Assignments--Marking--Grading-View.md | 8 ++++++-- images/bulk_print.png | Bin 0 -> 12651 bytes images/print.png | Bin 7589 -> 8262 bytes 3 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 images/bulk_print.png diff --git a/Instructor-Guide--Assignments--Marking--Grading-View.md b/Instructor-Guide--Assignments--Marking--Grading-View.md index fdd997b..1dcb02f 100644 --- a/Instructor-Guide--Assignments--Marking--Grading-View.md +++ b/Instructor-Guide--Assignments--Marking--Grading-View.md @@ -110,13 +110,17 @@ MarkUs also allows you to print a submission with the print button. This will print all PDF files that have been submitted as a single PDF file, along with a cover page which provides information about the students in a group, the mark received on each criterion, a list of all annotations on the submission, and any overall comment that has been left during grading. +You can also bulk print from the submissions table. + +![Bulk Print Button](images/bulk_print.png) + ![Printed Assignment Cover Page](images/printed-assignment-cover-page.png) -In the output pdf, the location of each annotation will also be marked. +For PDF files, the location of each annotation will be marked in the output. ![Printed Assignment Annotation](images/printed-assignment-annotation.png) -> :spiral_notepad: **NOTE**: Only PDF files are supported for printing. If a submission contains files of other types, they will not be printed. +> :spiral_notepad: **NOTE**: `.pdf` and `.ipynb` are the only file formats supported for printing. If a submission contains files of other types, they will not be printed. ## Annotations diff --git a/images/bulk_print.png b/images/bulk_print.png new file mode 100644 index 0000000000000000000000000000000000000000..237e79ccedade8c9542fbfacfb6845faf7c3d00d GIT binary patch literal 12651 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 RtqlMG002ovPDHLkV1gfhj>Z50 delta 6771 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 V99;%QBJKbH002ovPDHLkV1i-DOe+8Y From e0e51d15a335ca9ad2c0b1071fbeca8f0157693f Mon Sep 17 00:00:00 2001 From: Samuel Maldonado Date: Fri, 10 May 2024 07:48:33 -0400 Subject: [PATCH 2/2] add remote validation setting (#213) --- Configuration.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Configuration.md b/Configuration.md index 4568b19..f0a4cc0 100644 --- a/Configuration.md +++ b/Configuration.md @@ -81,6 +81,7 @@ queues: redis: url: # url of a running redis database validate_file: # (See "User Authentication Options" below) +remote_validate_file: # (See "User Authentication Options" below) validate_ip: # (See "User Authentication Options" below) validate_custom_status_message: # (See "User Authentication Options" below) validate_user_not_allowed_message: # (See "User Authentication Options" below) @@ -220,6 +221,12 @@ validate_custom_status_message: local_auth_login_name: shibboleth ``` +Additionally, MarkUs can be set to restrict remote logins based on username and/or IP when using remote authentication. + +**To enable restricted remote authentication, set the following setting:** + +- `remote_validate_file:` an absolute path to a script that expects input from stdin (user name, password (blank), and IP address; separated by "\n") and returns 0 if the user is authenticated and any other positive integer otherwise. + ### Logout redirect The `logout_redirect` setting determines where the user will be redirected when they logout of MarkUs. It can be one of `DEFAULT`, `NONE`, or a URL.