diff --git a/scripts/langindex.json b/scripts/langindex.json
index 8b5f223cf6b..5ed7bec5ed6 100644
--- a/scripts/langindex.json
+++ b/scripts/langindex.json
@@ -362,6 +362,7 @@
"addon.mod_assign.attempthistory": "assign",
"addon.mod_assign.attemptnumber": "assign",
"addon.mod_assign.attemptreopenmethod": "assign",
+ "addon.mod_assign.attemptreopenmethod_automatic": "assign",
"addon.mod_assign.attemptreopenmethod_manual": "assign",
"addon.mod_assign.attemptreopenmethod_untilpass": "assign",
"addon.mod_assign.attemptsettings": "assign",
diff --git a/src/addons/mod/assign/components/edit-feedback-modal/edit-feedback-modal.html b/src/addons/mod/assign/components/edit-feedback-modal/edit-feedback-modal.html
index f8bb378b866..c6dc8733962 100644
--- a/src/addons/mod/assign/components/edit-feedback-modal/edit-feedback-modal.html
+++ b/src/addons/mod/assign/components/edit-feedback-modal/edit-feedback-modal.html
@@ -80,7 +80,7 @@
{{ 'addon.mod_assign.attemptsettings' | translate }}
diff --git a/src/addons/mod/assign/components/edit-feedback-modal/edit-feedback-modal.ts b/src/addons/mod/assign/components/edit-feedback-modal/edit-feedback-modal.ts
index a602ffd0bc4..d99234636fa 100644
--- a/src/addons/mod/assign/components/edit-feedback-modal/edit-feedback-modal.ts
+++ b/src/addons/mod/assign/components/edit-feedback-modal/edit-feedback-modal.ts
@@ -80,7 +80,6 @@ export class AddonModAssignEditFeedbackModalComponent implements OnDestroy, OnIn
gradeInfo?: AddonModAssignGradeInfo; // Grade data for the assignment, retrieved from the server.
allowAddAttempt = false; // Allow adding a new attempt when grading.
- attemptReopenMethodNone = AddonModAssignAttemptReopenMethodValues.NONE;
unlimitedAttempts = ADDON_MOD_ASSIGN_UNLIMITED_ATTEMPTS;
currentAttemptNumber = 0; // The current attempt number.
maxAttemptsText = Translate.instant('addon.mod_assign.unlimitedattempts'); // The text for maximum attempts.
@@ -150,7 +149,7 @@ export class AddonModAssignEditFeedbackModalComponent implements OnDestroy, OnIn
await this.treatGradeInfo(assign);
const isManual = assign.attemptreopenmethod == AddonModAssignAttemptReopenMethodValues.MANUAL;
- const isUnlimited = assign.maxattempts == ADDON_MOD_ASSIGN_UNLIMITED_ATTEMPTS;
+ const isUnlimited = assign.maxattempts === ADDON_MOD_ASSIGN_UNLIMITED_ATTEMPTS;
const isLessThanMaxAttempts = !!this.userSubmission && (this.userSubmission.attemptnumber < (assign.maxattempts - 1));
this.allowAddAttempt = isManual && (!this.userSubmission || isUnlimited || isLessThanMaxAttempts);
diff --git a/src/addons/mod/assign/components/submission/addon-mod-assign-submission.html b/src/addons/mod/assign/components/submission/addon-mod-assign-submission.html
index dad77308cf4..8025542366d 100644
--- a/src/addons/mod/assign/components/submission/addon-mod-assign-submission.html
+++ b/src/addons/mod/assign/components/submission/addon-mod-assign-submission.html
@@ -34,8 +34,13 @@
- @if (currentAttemptNumber) {
- {{ 'addon.mod_assign.attempt' | translate : { '$a' : currentAttemptNumber } }}
+ @if (assign.maxattempts !== 1 && currentAttemptNumber) {
+ @if (assign.maxattempts === unlimitedAttempts) {
+ {{ 'addon.mod_assign.attempt' | translate : { '$a' : currentAttemptNumber } }}
+ } @else {
+ {{ 'addon.mod_assign.attempt' | translate : { '$a' : 'addon.mod_assign.outof' | translate :
+ {'$a': {'current': currentAttemptNumber, 'total': assign.maxattempts} } } }}
+ }
} @else {
{{'addon.mod_assign.submission' | translate}}
}
diff --git a/src/addons/mod/assign/components/submission/submission.ts b/src/addons/mod/assign/components/submission/submission.ts
index a655e7758a7..926c38a6012 100644
--- a/src/addons/mod/assign/components/submission/submission.ts
+++ b/src/addons/mod/assign/components/submission/submission.ts
@@ -50,6 +50,7 @@ import {
ADDON_MOD_ASSIGN_PAGE_NAME,
ADDON_MOD_ASSIGN_SUBMISSION_REMOVED_EVENT,
ADDON_MOD_ASSIGN_SUBMITTED_FOR_GRADING_EVENT,
+ ADDON_MOD_ASSIGN_UNLIMITED_ATTEMPTS,
AddonModAssignAttemptReopenMethodValues,
AddonModAssignGradingStates,
AddonModAssignSubmissionStatusValues,
@@ -133,7 +134,7 @@ export class AddonModAssignSubmissionComponent implements OnInit {
// Some constants.
statusNew = AddonModAssignSubmissionStatusValues.NEW;
statusReopened = AddonModAssignSubmissionStatusValues.REOPENED;
- attemptReopenMethodNone = AddonModAssignAttemptReopenMethodValues.NONE;
+ unlimitedAttempts = ADDON_MOD_ASSIGN_UNLIMITED_ATTEMPTS;
previousAttempts: AddonModAssignSubmissionPreviousAttemptFormatted[] = []; // List of previous attempts.
@@ -853,7 +854,7 @@ export class AddonModAssignSubmissionComponent implements OnInit {
this.userSubmission = AddonModAssign.getSubmissionObjectFromAttempt(this.assign, lastAttempt);
- if (this.assign.attemptreopenmethod !== this.attemptReopenMethodNone && this.userSubmission) {
+ if (this.assign.maxattempts !== 1 && this.userSubmission) {
this.currentAttemptNumber = this.userSubmission.attemptnumber + 1;
}
diff --git a/src/addons/mod/assign/constants.ts b/src/addons/mod/assign/constants.ts
index 61247971b7a..9a04c917eee 100644
--- a/src/addons/mod/assign/constants.ts
+++ b/src/addons/mod/assign/constants.ts
@@ -72,8 +72,8 @@ export const enum AddonModAssignGradingStates {
* Constants on LMS starting with ASSIGN_ATTEMPT_REOPEN_METHOD_
*/
export const enum AddonModAssignAttemptReopenMethodValues {
- NONE = 'none',
MANUAL = 'manual',
+ AUTOMATIC = 'automatic',
UNTILPASS = 'untilpass',
}
diff --git a/src/addons/mod/assign/lang.json b/src/addons/mod/assign/lang.json
index 168520e2fe0..42ba1b49f8e 100644
--- a/src/addons/mod/assign/lang.json
+++ b/src/addons/mod/assign/lang.json
@@ -14,6 +14,7 @@
"attemptheading": "Attempt {{$a.attemptnumber}}: {{$a.submissionsummary}}",
"attempthistory": "Previous attempts",
"attemptnumber": "Attempt number",
+ "attemptreopenmethod_automatic": "Automatically",
"attemptreopenmethod_manual": "Manually",
"attemptreopenmethod_untilpass": "Automatically until pass",
"attemptreopenmethod": "Grant attempts",