diff --git a/admin/api/settings.go b/admin/api/settings.go index fbd7867d..7cee373e 100644 --- a/admin/api/settings.go +++ b/admin/api/settings.go @@ -16,6 +16,9 @@ func init() { router.GET("/api/settings-ro.json", apiHandler(getROSettings)) router.GET("/api/settings.json", apiHandler(getSettings)) router.PUT("/api/settings.json", apiHandler(saveSettings)) + router.DELETE("/api/settings.json", apiHandler(func(_ httprouter.Params, _ []byte) (interface{}, error) { + return true, ResetSettings() + })) router.POST("/api/reset", apiHandler(reset)) } @@ -61,6 +64,29 @@ func ApplySettings(config settings.FICSettings) { fic.SubmissionUniqueness = config.SubmissionUniqueness } +func ResetSettings() error { + return settings.SaveSettings(path.Join(settings.SettingsDir, settings.SettingsFile), settings.FICSettings{ + Title: "Challenge FIC", + Authors: "Laboratoire SRS, ÉPITA", + FirstBlood: fic.FirstBlood, + SubmissionCostBase: fic.SubmissionCostBase, + ExerciceCurCoefficient: 1, + HintCurCoefficient: 1, + WChoiceCurCoefficient: 1, + AllowRegistration: false, + CanJoinTeam: false, + DenyTeamCreation: false, + DenyNameChange: false, + AcceptNewIssue: true, + EnableResolutionRoute: false, + PartialValidation: true, + UnlockedChallengeDepth: 0, + SubmissionUniqueness: false, + DisplayAllFlags: false, + EventKindness: false, + }) +} + func reset(_ httprouter.Params, body []byte) (interface{}, error) { var m map[string]string if err := json.Unmarshal(body, &m); err != nil { @@ -75,6 +101,8 @@ func reset(_ httprouter.Params, body []byte) (interface{}, error) { return true, fic.ResetExercices() } else if t == "game" { return true, fic.ResetGame() + } else if t == "settings" { + return true, ResetSettings() } else { return nil, errors.New("Unknown reset type") } diff --git a/admin/main.go b/admin/main.go index 31d18408..b818c7a5 100644 --- a/admin/main.go +++ b/admin/main.go @@ -168,26 +168,7 @@ func main() { // Initialize settings and load them if !settings.ExistsSettings(path.Join(settings.SettingsDir, settings.SettingsFile)) { - if err = settings.SaveSettings(path.Join(settings.SettingsDir, settings.SettingsFile), settings.FICSettings{ - Title: "Challenge FIC", - Authors: "Laboratoire SRS, ÉPITA", - FirstBlood: fic.FirstBlood, - SubmissionCostBase: fic.SubmissionCostBase, - ExerciceCurCoefficient: 1, - HintCurCoefficient: 1, - WChoiceCurCoefficient: 1, - AllowRegistration: false, - CanJoinTeam: false, - DenyTeamCreation: false, - DenyNameChange: false, - AcceptNewIssue: true, - EnableResolutionRoute: false, - PartialValidation: true, - UnlockedChallengeDepth: 0, - SubmissionUniqueness: false, - DisplayAllFlags: false, - EventKindness: false, - }); err != nil { + if err = api.ResetSettings(); err != nil { log.Fatal("Unable to initialize settings.json:", err) } } else { diff --git a/admin/static/js/app.js b/admin/static/js/app.js index e5ce31b4..d59fb03f 100644 --- a/admin/static/js/app.js +++ b/admin/static/js/app.js @@ -578,6 +578,7 @@ angular.module("FICApp") } $scope.reset = function(type) { var txts = { + "settings": "En validant, vous remettrez les paramètres de cette page à leur valeur initiale, y compris la date de début du challenge.", "challenges": "En validant, vous retirerez toutes les données statiques des challenges.", "teams": "En validant, vous supprimerez l'ensemble des équipes enregistreées.", "game": "En validant, vous supprimerez toutes les tentatives, les validations, ... faites par les équipes.", diff --git a/admin/static/views/settings.html b/admin/static/views/settings.html index 44883487..c0117c5f 100644 --- a/admin/static/views/settings.html +++ b/admin/static/views/settings.html @@ -242,15 +242,10 @@ -
-
- -
-
- -
-
- -
+
+ + + +