Automatically submit LTI grade on each score run
With this commit, we refactor the overall score handling of CodeOcean. Previously, "Score" and "Submit" were two distinct actions, requiring users to confirm the LTI transmission of their score (after assessing their submission). This yielded many questions and was unnecessary, since LTI parameters are no longer expiring after each use. Therefore, we can now transmit the current grade on each score run with the very same LTI parameters. As a consequence, the LTI consumer gets a more detailed history of the scores, enabling further analytical insights. For users, the previous "Submit" button got replaced with a notification that is shown as soon as the full score got reached. Then, learners can decide to "finalize" their work on the given exercise, which will initiate a redirect to a follow-up action (as defined in the RedirectBehavior). This RedirectBehavior has also been unified and simplified for better readability. As part of this refactoring, we rephrased the notifications and UX workflow of a) the LTI transmission, b) the finalization of an exercise (measured by reaching the full score) and c) the deadline handling (on time, within grace period, too late). Those information are now separately shown, potentially resulting in multiple notifications. As a side effect, they are much better maintainable, and the LTI transmission is more decoupled from this notification handling.
This commit is contained in:

committed by
Sebastian Serth

parent
1e06ab3fa9
commit
175c8933f3
@ -383,12 +383,14 @@ de:
|
||||
collapse_output_sidebar: Ausgabe-Leiste Einklappen
|
||||
confirm_start_over: Wollen Sie in dieser Aufgabe wirklich von vorne anfangen? Ihre bisherigen Änderungen in dieser Aufgabe werden entfernt; andere Aufgaben bleiben unverändert. Diese Aktion kann nicht rückgängig gemacht werden.
|
||||
confirm_start_over_active_file: Wollen Sie wirklich Ihre Änderungen in der ausgewählten Datei '%{filename}' zurücksetzen? Diese Aktion kann nicht rückgängig gemacht werden.
|
||||
confirm_submit: Wollen Sie Ihren Code wirklich zur Bewertung abgeben?
|
||||
create_file: Neue Datei
|
||||
depleted: Alle Ausführungsumgebungen sind momentan in Benutzung. Probiere es später nochmal.
|
||||
destroy_file: Datei löschen
|
||||
download: Herunterladen
|
||||
dummy: Keine Aktion
|
||||
exercise_finished: Herzlichen Glückwunsch! Sie haben die Aufgabe vollständig gelöst. <a href="%{url}" class="alert-link">Klicken Sie hier, um die Aufgabe jetzt abzuschließen.</a>
|
||||
exercise_finished_redirect_to_rfc: Herzlichen Glückwunsch! Sie haben die Aufgabe vollständig gelöst und die Punkte übertragen. Ein anderer Teilnehmer hat eine Frage zu der von Ihnen gelösten Aufgabe. Er würde sich sicherlich sehr über Ihre Hilfe und Kommentare freuen.
|
||||
exercise_finished_redirect_to_own_rfc: Herzlichen Glückwunsch! Sie haben die Aufgabe vollständig gelöst und die Punkte übertragen. Ihre Frage ist damit wahrscheinlich gelöst? Falls ja, fügen Sie doch den entscheidenden Kniff als Antwort hinzu und markieren die Frage als gelöst, bevor Sie das Fenster schließen.
|
||||
expand_action_sidebar: Aktions-Leiste Ausklappen
|
||||
expand_output_sidebar: Ausgabe-Leiste Ausklappen
|
||||
input: Ihre Eingabe
|
||||
@ -410,11 +412,10 @@ de:
|
||||
start_over_active_file: Diese Datei zurücksetzen
|
||||
start_video: (Video-) Chat starten
|
||||
stop: Stoppen
|
||||
submit: Code zur Bewertung abgeben
|
||||
submit_failure_all: Beim Übermitteln Ihrer Punktzahl ist ein Fehler aufgetreten. Bitte versuchen Sie es später erneut.
|
||||
submit_failure_other_users: "Die Punkteübertragung war nur teilweise erfolgreich. Die Punkte konnten nicht für %{user} übertragen werden. Diese Person(en) sollte die Aufgabe über die e-Learning Platform erneut öffnen und anschließend die Punkte selbst übermitteln."
|
||||
submit_too_late: Ihre Abgabe wurde erfolgreich gespeichert, ging jedoch nach der Abgabefrist ein, sodass nur %{score_sent} Punkte übertragen wurden.
|
||||
deadline: Deadline
|
||||
submit_on_time: Code rechtzeitig zur Bewertung abgeben
|
||||
submit_within_grace_period: Code innerhalb der Gnadenfrist zur Bewertung abgeben
|
||||
submit_after_late_deadline: Code verspätet zur Bewertung abgeben
|
||||
test: Testen
|
||||
timeout: 'Ausführung gestoppt. Ihr Code hat die erlaubte Ausführungszeit von %{permitted_execution_time} Sekunden überschritten.'
|
||||
out_of_memory: 'Ausführung gestoppt. Ihr Code hat den erlaubten Arbeitsspeicher von %{memory_limit} MB überschritten.'
|
||||
@ -424,7 +425,7 @@ de:
|
||||
exercise_deadline_passed: 'Entweder ist die Abgabefrist bereits abgelaufen oder Sie haben die Aufgabe nicht direkt über die E-Learning Plattform gestartet. (Möglicherweise haben Sie den Zurück Button Ihres Browsers benutzt nachdem Sie Ihre Aufgabe abgegeben haben?)'
|
||||
request_for_comments_sent: "Kommentaranfrage gesendet."
|
||||
hints:
|
||||
submission_deadline: Diese Abgabe ist am <b>%{deadline}</b> fällig.<br/><small>Klicken Sie daher rechtzeitig auf 'Abgeben', um Ihre Punktzahl an die E-Learning-Plattform zu übertragen. %{otherwise}</small>
|
||||
submission_deadline: Diese Abgabe ist am <b>%{deadline}</b> fällig.<br/><small>Bitte schließen Sie daher die Aufgabe rechtzeitig vorher ab. %{otherwise}</small>
|
||||
late_submission_deadline: Bis <b>%{deadline}</b> werden 80% Ihrer Punktzahl anerkannt.<br/><small>Wenn Sie diese erweiterte Frist ungenutzt verstreichen lassen und Ihre Abgabe später einreichen, werden 0 Punkte übertragen.</small>
|
||||
otherwise: Nach der Abgabefrist werden 0 Punkte übertragen.
|
||||
disclaimer: Bei Fragen zu Deadlines wenden Sie sich bitte an das Teaching Team. Die hier angezeigte Abgabefrist dient nur zur Information und Angaben auf der jeweiligen Kursseite in der E-Learning-Plattform sollen immer Vorrang haben.
|
||||
@ -478,7 +479,7 @@ de:
|
||||
default_test_feedback: Sehr gut. Alle Tests waren erfolgreich.
|
||||
default_linter_feedback: Sehr gut. Der Linter hat nichts mehr zu beanstanden.
|
||||
error_messages: Fehlermeldungen
|
||||
existing_programming_group: Sie arbeiten gerade an der Übung mit dem Titel '%{exercise}' als Teil einer Programmiergruppe. Bitte schließen Sie Ihre Arbeit dort ab, indem Sie Ihren Code bewerten und abgeben, bevor Sie mit der Bearbeitung dieser Übung beginnen.
|
||||
existing_programming_group: Sie arbeiten gerade an der Übung mit dem Titel '%{exercise}' als Teil einer Programmiergruppe. Bitte schließen Sie Ihre Arbeit dort ab, bevor Sie mit der Bearbeitung dieser Übung beginnen.
|
||||
external_privacy_policy: Datenschutzerklärung
|
||||
messages: Meldungen
|
||||
feedback: Feedback
|
||||
@ -560,12 +561,6 @@ de:
|
||||
external_users: Externe Nutzer
|
||||
programming_groups: Programmiergruppen
|
||||
finishing_rate: Abschlussrate
|
||||
submit:
|
||||
failure: Beim Übermitteln Ihrer Punktzahl ist ein Fehler aufgetreten. Bitte versuchen Sie es später erneut.
|
||||
too_late: Ihre Abgabe wurde erfolgreich gespeichert, ging jedoch nach der Abgabefrist ein.
|
||||
full_score_redirect_to_rfc: Herzlichen Glückwunsch! Sie haben die maximale Punktzahl für diese Aufgabe an den Kurs übertragen. Ein anderer Teilnehmer hat eine Frage zu der von Ihnen gelösten Aufgabe. Er würde sich sicherlich sehr über ihre Hilfe und Kommentare freuen.
|
||||
full_score_redirect_to_own_rfc: Herzlichen Glückwunsch! Sie haben die maximale Punktzahl für diese Aufgabe an den Kurs übertragen. Ihre Frage ist damit wahrscheinlich gelöst? Falls ja, fügen Sie doch den entscheidenden Kniff als Antwort hinzu und markieren die Frage als gelöst, bevor sie das Fenster schließen.
|
||||
warning_not_for_all_users_submitted: "Die Punkteübertragung war nur teilweise erfolgreich. Die Punkte konnten nicht für %{user} übertragen werden. Diese Person(en) sollte die Aufgabe über die e-Learning Platform erneut öffnen und anschließend die Punkte selbst übermitteln."
|
||||
study_group_dashboard:
|
||||
live_dashboard: Live Dashboard
|
||||
time_spent_per_learner: Verwendete Zeit pro Lerner
|
||||
@ -876,7 +871,7 @@ de:
|
||||
failure: Fehlerhafte E-Mail oder Passwort.
|
||||
success: Sie haben sich erfolgreich angemeldet.
|
||||
create_through_lti:
|
||||
session_with_outcome: 'Bitte beachten Sie, dass zur Gutschrift der Punkte Ihr Code nach der Bearbeitung durch Klicken auf den Button "Code zur Bewertung abgeben" eingetragen werden muss.'
|
||||
session_with_outcome: 'Ihre Punkte werden durch Klicken auf "Bewerten" automatisch Ihrem Fortschritt gutgeschrieben.'
|
||||
session_without_outcome: 'Dies ist eine Übungs-Session. Ihre Bewertung wird nicht an %{consumer} übermittelt.'
|
||||
destroy:
|
||||
link: Abmelden
|
||||
|
@ -383,12 +383,14 @@ en:
|
||||
collapse_output_sidebar: Collapse Output Sidebar
|
||||
confirm_start_over: Do you really want to start over? Your previous changes in this exercise will be reset; other exercises remain untouched. You cannot undo this action.
|
||||
confirm_start_over_active_file: Do you really want to remove any changes in the active file '%{filename}'? You cannot undo this action.
|
||||
confirm_submit: Do you really want to submit your code for grading?
|
||||
create_file: New File
|
||||
depleted: All execution environments are busy. Please try again later.
|
||||
destroy_file: Delete File
|
||||
download: Download
|
||||
dummy: No Action
|
||||
exercise_finished: Congratulations! You have completely solved this exercise. <a href="%{url}" class="alert-link">Please click here to finish the exercise now.</a>
|
||||
exercise_finished_redirect_to_rfc: Congratulations! You have completely solved this exercise and submitted the points. Another participant has a question concerning the exercise you just solved. Your help and comments will be greatly appreciated!
|
||||
exercise_finished_redirect_to_own_rfc: Congratulations! You have completely solved this exercise and submitted the points. Your question concerning the exercise is solved? If so, please share the essential insight with your fellows and mark the question as solved, before you close this window!
|
||||
expand_action_sidebar: Expand Action Sidebar
|
||||
expand_output_sidebar: Expand Output Sidebar
|
||||
input: Your input
|
||||
@ -410,11 +412,10 @@ en:
|
||||
start_over_active_file: Reset this file
|
||||
start_video: Start (video) chat
|
||||
stop: Stop
|
||||
submit: Submit Code For Assessment
|
||||
submit_failure_all: An error occurred while transmitting your score. Please try again later.
|
||||
submit_failure_other_users: "The transmission of points was only partially successful. The score was not transmitted for %{user}. The user(s) should reopen the exercise via the e-learning platform and then try to submit the points themselves."
|
||||
submit_too_late: Your submission was saved successfully but was received after the deadline, so that only %{score_sent} points were transmitted.
|
||||
deadline: Deadline
|
||||
submit_on_time: Submit Code for Assessment on Time
|
||||
submit_within_grace_period: Submit Code for Assessment Within Grace Period
|
||||
submit_after_late_deadline: Submit Code for Assessment After Deadline Passed
|
||||
test: Test
|
||||
timeout: 'Execution stopped. Your code exceeded the permitted execution time of %{permitted_execution_time} seconds.'
|
||||
out_of_memory: 'Execution stopped. Your code exceeded the permitted RAM usage of %{memory_limit} MB.'
|
||||
@ -424,8 +425,8 @@ en:
|
||||
exercise_deadline_passed: 'Either the deadline has already passed or you did not directly access this page from the e-learning platform. (Did you use the Back button of your browser after submitting the score?)'
|
||||
request_for_comments_sent: "Request for comments sent."
|
||||
hints:
|
||||
submission_deadline: This exercise is due <b>%{deadline}</b>.<br/><small>Click 'submit' to transfer your score to the e-learning platform before this deadline passes. %{otherwise}</small>
|
||||
late_submission_deadline: Until <b>%{deadline}</b>, 80% of your score will be awarded.<br/><small>If you miss this extended deadline and submit your score afterwards, 0 points will be transmitted.</small>
|
||||
submission_deadline: This exercise is due <b>%{deadline}</b>.<br/><small>Please finish the exercise before this deadline passes. %{otherwise}</small>
|
||||
late_submission_deadline: Until <b>%{deadline}</b>, 80% of your score will be awarded.<br/><small>If you miss this extended deadline and score your code afterwards, 0 points will be transmitted.</small>
|
||||
otherwise: Otherwise, a score of 0 points will be transmitted.
|
||||
disclaimer: If unsure about a deadline, please contact a course instructor. The deadline shown here is only informational and information from the e-learning platform should always take precedence.
|
||||
editor_file_tree:
|
||||
@ -478,7 +479,7 @@ en:
|
||||
default_test_feedback: Well done. All tests have been passed.
|
||||
default_linter_feedback: Well done. The linter is completly satisfied.
|
||||
error_messages: Error Messages
|
||||
existing_programming_group: You are currently working on the exercise entitled '%{exercise}' as part of a programming group. Please finish your work there by scoring and submitting your code before you start implementing this exercise.
|
||||
existing_programming_group: You are currently working on the exercise entitled '%{exercise}' as part of a programming group. Please finish your work there before you start implementing this exercise.
|
||||
external_privacy_policy: privacy policy
|
||||
messages: Messages
|
||||
feedback: Feedback
|
||||
@ -560,12 +561,6 @@ en:
|
||||
external_users: External Users
|
||||
programming_groups: Programming Groups
|
||||
finishing_rate: Finishing Rate
|
||||
submit:
|
||||
failure: An error occurred while transmitting your score. Please try again later.
|
||||
too_late: Your submission was saved successfully but was received after the deadline passed.
|
||||
full_score_redirect_to_rfc: Congratulations! You achieved and submitted the highest possible score for this exercise. Another participant has a question concerning the exercise you just solved. Your help and comments will be greatly appreciated!
|
||||
full_score_redirect_to_own_rfc: Congratulations! You achieved and submitted the highest possible score for this exercise. Your question concerning the exercise is solved? If so, please share the essential insight with your fellows and mark the question as solved, before you close this window!
|
||||
warning_not_for_all_users_submitted: "The transmission of points was only partially successful. The score was not transmitted for %{user}. The user(s) should reopen the exercise via the e-learning platform and then try to submit the points themselves."
|
||||
study_group_dashboard:
|
||||
live_dashboard: Live Dashboard
|
||||
time_spent_per_learner: Time spent per Learner
|
||||
@ -876,7 +871,7 @@ en:
|
||||
failure: Invalid email or password.
|
||||
success: Successfully signed in.
|
||||
create_through_lti:
|
||||
session_with_outcome: 'Please click "Submit Code for Assessment" after scoring to send your score to %{consumer}.'
|
||||
session_with_outcome: 'By clicking on "Score", your points will be added automatically to your progress.'
|
||||
session_without_outcome: 'This is a practice session. Your grade will not be transmitted to %{consumer}.'
|
||||
destroy:
|
||||
link: Sign out
|
||||
|
@ -91,7 +91,6 @@ Rails.application.routes.draw do
|
||||
get :statistics
|
||||
get :feedback
|
||||
get :reload
|
||||
post :submit
|
||||
get 'study_group_dashboard/:study_group_id', to: 'exercises#study_group_dashboard'
|
||||
post :export_external_check
|
||||
post :export_external_confirm
|
||||
@ -164,6 +163,7 @@ Rails.application.routes.draw do
|
||||
get :score
|
||||
get :statistics
|
||||
get 'test/:filename', as: :test, constraints: {filename: FILENAME_REGEXP}, action: :test
|
||||
get :finalize
|
||||
end
|
||||
end
|
||||
|
||||
|
Reference in New Issue
Block a user