diff --git a/scripts/langindex.json b/scripts/langindex.json index 118e7bc6a..f41cc0741 100644 --- a/scripts/langindex.json +++ b/scripts/langindex.json @@ -193,6 +193,7 @@ "addon.mod_assign.graded": "assign", "addon.mod_assign.gradedby": "assign", "addon.mod_assign.gradedon": "assign", + "addon.mod_assign.gradelocked": "assign", "addon.mod_assign.gradenotsynced": "local_moodlemobileapp", "addon.mod_assign.gradeoutof": "assign", "addon.mod_assign.gradingstatus": "assign", diff --git a/src/addon/mod/assign/components/submission/addon-mod-assign-submission.html b/src/addon/mod/assign/components/submission/addon-mod-assign-submission.html index 9a169c3c9..2a2030d30 100644 --- a/src/addon/mod/assign/components/submission/addon-mod-assign-submission.html +++ b/src/addon/mod/assign/components/submission/addon-mod-assign-submission.html @@ -152,22 +152,23 @@ <!-- Numeric grade. --> <ion-item text-wrap *ngIf="grade.method == 'simple' && !grade.scale"> - <ion-label stacked>{{ 'addon.mod_assign.gradeoutof' | translate: {$a: gradeInfo.grade} }}</ion-label> - <ion-input type="number" [(ngModel)]="grade.grade" min="0" [max]="gradeInfo.grade" [lang]="grade.lang"></ion-input> + <ion-label stacked><h2>{{ 'addon.mod_assign.gradeoutof' | translate: {$a: gradeInfo.grade} }}</h2></ion-label> + <ion-input *ngIf="!grade.disabled" type="number" [(ngModel)]="grade.grade" min="0" [max]="gradeInfo.grade" [lang]="grade.lang"></ion-input> + <p item-content *ngIf="grade.disabled">{{ 'addon.mod_assign.gradelocked' | translate }}</p> </ion-item> <!-- Grade using a scale. --> <ion-item text-wrap *ngIf="grade.method == 'simple' && grade.scale"> - <ion-label>{{ 'addon.mod_assign.grade' | translate }}</ion-label> - <ion-select [(ngModel)]="grade.grade" interface="popover"> + <ion-label><h2>{{ 'addon.mod_assign.grade' | translate }}</h2></ion-label> + <ion-select [(ngModel)]="grade.grade" interface="popover" [disabled]="grade.disabled"> <ion-option *ngFor="let grade of grade.scale" [value]="grade.value">{{grade.label}}</ion-option> </ion-select> </ion-item> <!-- Outcomes. --> <ion-item text-wrap *ngFor="let outcome of gradeInfo.outcomes"> - <ion-label>{{ outcome.name }}</ion-label> - <ion-select *ngIf="canSaveGrades && outcome.itemNumber" [(ngModel)]="outcome.selectedId" interface="popover"> + <ion-label><h2>{{ outcome.name }}</h2></ion-label> + <ion-select *ngIf="canSaveGrades && outcome.itemNumber" [(ngModel)]="outcome.selectedId" interface="popover" [disabled]="gradeInfo.disabled"> <ion-option *ngFor="let grade of outcome.options" [value]="grade.value">{{grade.label}}</ion-option> </ion-select> <p item-content *ngIf="!canSaveGrades || !outcome.itemNumber">{{ outcome.selected }}</p> @@ -176,7 +177,8 @@ <!-- Gradebook grade for simple grading. --> <ion-item text-wrap *ngIf="grade.method == 'simple'"> <h2>{{ 'addon.mod_assign.currentgrade' | translate }}</h2> - <p *ngIf="grade.gradebookGrade !== false && grade.gradebookGrade !== null">{{ grade.gradebookGrade }}</p> + <p *ngIf="grade.gradebookGrade !== false && grade.gradebookGrade !== null && !grade.scale">{{ grade.gradebookGrade }}</p> + <p *ngIf="grade.gradebookGrade !== false && grade.gradebookGrade !== null && grade.scale">{{ grade.scale[grade.gradebookGrade].label }}</p> <p *ngIf="grade.gradebookGrade === false || grade.gradebookGrade === null">-</p> </ion-item> diff --git a/src/addon/mod/assign/components/submission/submission.ts b/src/addon/mod/assign/components/submission/submission.ts index d8047c345..477546059 100644 --- a/src/addon/mod/assign/components/submission/submission.ts +++ b/src/addon/mod/assign/components/submission/submission.ts @@ -471,7 +471,8 @@ export class AddonModAssignSubmissionComponent implements OnInit, OnDestroy { addAttempt : false, applyToAll: false, scale: false, - lang: false + lang: false, + disabled: false }; this.originalGrades = { @@ -823,6 +824,7 @@ export class AddonModAssignSubmissionComponent implements OnInit, OnDestroy { this.grade.gradebookGrade = parsedGrade || parsedGrade == 0 ? parsedGrade : null; } + this.grade.disabled = grade.gradeislocked || grade.gradeisoverridden; this.grade.modified = grade.gradedategraded; } else if (grade.outcomeid) { @@ -839,6 +841,7 @@ export class AddonModAssignSubmissionComponent implements OnInit, OnDestroy { outcomes.push(outcome); } }); + this.gradeInfo.disabled = grade.gradeislocked || grade.gradeisoverridden; } }); diff --git a/src/addon/mod/assign/lang/en.json b/src/addon/mod/assign/lang/en.json index fbbe9f662..e7e2840aa 100644 --- a/src/addon/mod/assign/lang/en.json +++ b/src/addon/mod/assign/lang/en.json @@ -37,6 +37,7 @@ "gradedby": "Graded by", "gradenotsynced": "Grade not synced", "gradedon": "Graded on", + "gradelocked": "This grade is locked or overridden in the gradebook.", "gradeoutof": "Grade out of {{$a}}", "gradingstatus": "Grading status", "groupsubmissionsettings": "Group submission settings", diff --git a/src/assets/lang/en.json b/src/assets/lang/en.json index cfa5bf287..abafd0d71 100644 --- a/src/assets/lang/en.json +++ b/src/assets/lang/en.json @@ -192,6 +192,7 @@ "addon.mod_assign.graded": "Graded", "addon.mod_assign.gradedby": "Graded by", "addon.mod_assign.gradedon": "Graded on", + "addon.mod_assign.gradelocked": "This grade is locked or overridden in the gradebook.", "addon.mod_assign.gradenotsynced": "Grade not synced", "addon.mod_assign.gradeoutof": "Grade out of {{$a}}", "addon.mod_assign.gradingstatus": "Grading status",