diff --git a/problem/views.py b/problem/views.py index 2ee65648..ffc98682 100644 --- a/problem/views.py +++ b/problem/views.py @@ -128,6 +128,9 @@ class ProblemAdminAPIView(APIView): problem.source = data["source"] problem.time_limit = data["time_limit"] problem.memory_limit = data["memory_limit"] + problem.spj = data["spj"] + problem.spj_language = data["spj_language"] + problem.spj_code = data["spj_code"] problem.difficulty = data["difficulty"] problem.samples = json.dumps(data["samples"]) problem.hint = data["hint"] diff --git a/static/src/js/app/admin/problem/addProblem.js b/static/src/js/app/admin/problem/addProblem.js index e15c116c..d510bf89 100644 --- a/static/src/js/app/admin/problem/addProblem.js +++ b/static/src/js/app/admin/problem/addProblem.js @@ -38,7 +38,7 @@ require(["jquery", "avalon", "editor", "uploader", "bsAlert", return false; } var spjVM = avalon.vmodels.spjConfig; - if (spjVM.spj && spjVM.spjCode == ""){ + if (spjVM.spj && !spjVM.spjCode){ bsAlert("请填写Special Judge的代码"); return false; } diff --git a/static/src/js/app/admin/problem/editProblem.js b/static/src/js/app/admin/problem/editProblem.js index a8666345..0c134702 100644 --- a/static/src/js/app/admin/problem/editProblem.js +++ b/static/src/js/app/admin/problem/editProblem.js @@ -1,5 +1,5 @@ require(["jquery", "avalon", "editor", "uploader", "bsAlert", - "csrfToken", "tagEditor", "validator", "jqueryUI", "editorComponent", "testCaseUploader"], + "csrfToken", "tagEditor", "validator", "jqueryUI", "editorComponent", "testCaseUploader", "spj"], function ($, avalon, editor, uploader, bsAlert, csrfTokenHeader) { avalon.ready(function () { @@ -38,6 +38,11 @@ require(["jquery", "avalon", "editor", "uploader", "bsAlert", bsAlert("请至少添加一个标签,这将有利于用户发现你的题目!"); return false; } + var spjVM = avalon.vmodels.spjConfig; + if (spjVM.spj && !spjVM.spjCode){ + bsAlert("请填写Special Judge的代码"); + return false; + } var ajaxData = { id: avalon.vmodels.admin.problemId, title: vm.title, @@ -52,8 +57,13 @@ require(["jquery", "avalon", "editor", "uploader", "bsAlert", tags: tags, input_description: vm.inputDescription, output_description: vm.outputDescription, - difficulty: vm.difficulty + difficulty: vm.difficulty, + spj: spjVM.spj }; + if (spjVM.spj) { + ajaxData.spj_language = spjVM.spjLanguage; + ajaxData.spj_code = spjVM.spjCode; + } for (var i = 0; i < vm.samples.$model.length; i++) { ajaxData.samples.push({ @@ -161,6 +171,12 @@ require(["jquery", "avalon", "editor", "uploader", "bsAlert", vm.inputDescription = problem.input_description; vm.outputDescription = problem.output_description; avalon.vmodels.testCaseUploader.setTestCase(problem.test_case_id); + var spjVM = avalon.vmodels.spjConfig; + spjVM.spj = problem.spj; + // spjLanguage可能是null + spjVM.spjLanguage = problem.spj_language=="2"?"2":"1"; + spjVM.spjCode = problem.spj_code; + vm.source = problem.source; var problemTags = problem.tags; $.ajax({ diff --git a/template/src/admin/problem/edit_problem.html b/template/src/admin/problem/edit_problem.html index 7b5295cd..ab8e5d62 100644 --- a/template/src/admin/problem/edit_problem.html +++ b/template/src/admin/problem/edit_problem.html @@ -105,6 +105,7 @@ +