diff --git a/.gitignore b/.gitignore index c164458347c..166fd43d74f 100644 --- a/.gitignore +++ b/.gitignore @@ -52,4 +52,4 @@ config/*.yml !config/7ms.yml !config/mozilla.yml !config/unsafe.yml -!config/beginner.yml +!config/tutorial.yml diff --git a/config.schema.yml b/config.schema.yml index b795fb330c6..fa13160e5d8 100644 --- a/config.schema.yml +++ b/config.schema.yml @@ -99,7 +99,7 @@ challenges: type: boolean showHints: type: boolean - isFullModeUnlocked: + restrictToTutorialsFirst: type: boolean overwriteUrlForProductTamperingChallenge: type: string diff --git a/config/beginner.yml b/config/beginner.yml deleted file mode 100644 index 04abbb07a3f..00000000000 --- a/config/beginner.yml +++ /dev/null @@ -1,2 +0,0 @@ -challenges: - isFullModeUnlocked: false diff --git a/config/default.yml b/config/default.yml index 89f012b90a7..89e3e28bbc2 100644 --- a/config/default.yml +++ b/config/default.yml @@ -67,7 +67,7 @@ application: challenges: showSolvedNotifications: true showHints: true - isFullModeUnlocked: true + restrictToTutorialsFirst: false overwriteUrlForProductTamperingChallenge: 'https://owasp.slack.com' xssBonusPayload: '' safetyOverride: false diff --git a/config/tutorial.yml b/config/tutorial.yml new file mode 100644 index 00000000000..3fecc256c84 --- /dev/null +++ b/config/tutorial.yml @@ -0,0 +1,2 @@ +challenges: + restrictToTutorialsFirst: true diff --git a/frontend/src/app/Services/configuration.service.ts b/frontend/src/app/Services/configuration.service.ts index 4fc36eb7adc..72478fc3261 100644 --- a/frontend/src/app/Services/configuration.service.ts +++ b/frontend/src/app/Services/configuration.service.ts @@ -75,7 +75,7 @@ interface Config { challenges: { showSolvedNotifications: boolean showHints: boolean - isFullModeUnlocked: boolean + restrictToTutorialsFirst: boolean safetyOverride: boolean overwriteUrlForProductTamperingChallenge: string } diff --git a/frontend/src/app/score-board/score-board.component.html b/frontend/src/app/score-board/score-board.component.html index f41a8a9a0c9..c6c8a4fa93b 100644 --- a/frontend/src/app/score-board/score-board.component.html +++ b/frontend/src/app/score-board/score-board.component.html @@ -14,7 +14,7 @@
+ [checked]="displayedDifficulties.includes(difficulty)" [disabled]="restrictToTutorialsFirst && !allTutorialsCompleted"> - + - + {{"BTN_SHOW_SOLVED" | translate}} + [checked]="showOnlyTutorialChallenges" [disabled]="restrictToTutorialsFirst && !allTutorialsCompleted" + [matTooltip]="restrictToTutorialsFirst && !allTutorialsCompleted ? ('INFO_FULL_CHALLENGE_MODE' | translate: {num: challenges.length}) : ''" matTooltipPosition="above"> school {{"BTN_SHOW_ONLY_TUTORIALS" | translate}} - + {{"BTN_SHOW_UNAVAILABLE" | translate}} @@ -64,11 +64,11 @@
+ [checked]="displayedChallengeCategories.includes(category)" [disabled]="restrictToTutorialsFirst && !allTutorialsCompleted"> {{category}} - +
diff --git a/frontend/src/app/score-board/score-board.component.ts b/frontend/src/app/score-board/score-board.component.ts index 035d00794d5..80d55979d16 100644 --- a/frontend/src/app/score-board/score-board.component.ts +++ b/frontend/src/app/score-board/score-board.component.ts @@ -38,7 +38,7 @@ export class ScoreBoardComponent implements OnInit { public numDisabledChallenges: number = 0 public showDisabledChallenges: boolean = false public showOnlyTutorialChallenges: boolean = true - public fullModeUnlocked: boolean = true + public restrictToTutorialsFirst: boolean = false public allTutorialsCompleted: boolean = false public disabledEnv?: string public displayedColumns = ['name', 'difficulty', 'description', 'category', 'status'] @@ -72,7 +72,7 @@ export class ScoreBoardComponent implements OnInit { this.showContributionInfoBox = config.application.showGitHubLinks this.questionnaireUrl = config.application.social && config.application.social.questionnaireUrl this.appName = config.application.name - this.fullModeUnlocked = config.challenges.isFullModeUnlocked + this.restrictToTutorialsFirst = config.challenges.restrictToTutorialsFirst }, (err) => console.log(err)) this.challengeService.find({ sort: 'name' }).subscribe((challenges) => { @@ -172,7 +172,7 @@ export class ScoreBoardComponent implements OnInit { calculateTutorialCompletion (challenges: Challenge[]) { this.allTutorialsCompleted = true for (let i = 0; i < challenges.length; i++) { - if (!this.fullModeUnlocked && challenges[i].tutorialOrder && !challenges[i].disabledEnv) { + if (this.restrictToTutorialsFirst && challenges[i].tutorialOrder && !challenges[i].disabledEnv) { this.allTutorialsCompleted = this.allTutorialsCompleted && challenges[i].solved } }