From 46630065aaf3b2bb8d727a433bf90953fcd5a42e Mon Sep 17 00:00:00 2001 From: undefined Date: Sat, 19 Sep 2020 22:53:58 +0800 Subject: [PATCH] =?UTF-8?q?core:=20=E4=BF=AE=E5=A4=8Dtraining=20nav?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=AE=9A=E4=B9=89=E6=8F=92=E5=85=A5=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/hydrooj/TODO | 4 +++- packages/hydrooj/package.json | 2 +- packages/hydrooj/src/handler/domain.ts | 2 +- packages/hydrooj/src/handler/problem.ts | 3 ++- packages/hydrooj/src/handler/training.ts | 2 +- packages/hydrooj/src/lib/ui.ts | 12 +++++++++--- 6 files changed, 17 insertions(+), 8 deletions(-) diff --git a/packages/hydrooj/TODO b/packages/hydrooj/TODO index 1406c3b6e..93b420c63 100644 --- a/packages/hydrooj/TODO +++ b/packages/hydrooj/TODO @@ -8,4 +8,6 @@ message.markAsRead +hack 评测队列优先级系统 讨论浏览数量显示 -解离mail模块 \ No newline at end of file +解离mail模块 +@param @get @post @arg +extend problem settings \ No newline at end of file diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index e2d6b653d..34a18e3d9 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.13.14", + "version": "2.13.15", "bin": "bin/hydrooj.js", "main": "dist/loader.js", "typings": "dist/loader.d.ts", diff --git a/packages/hydrooj/src/handler/domain.ts b/packages/hydrooj/src/handler/domain.ts index 412e2b41c..a48c5bd87 100644 --- a/packages/hydrooj/src/handler/domain.ts +++ b/packages/hydrooj/src/handler/domain.ts @@ -176,7 +176,7 @@ class DomainRoleHandler extends ManageHandler { const rdict: Dictionary = {}; for (const r of roles) rdict[r._id] = r.perm; if (rdict[role]) throw new RoleAlreadyExistError(role); - await domain.addRole(domainId, role, rdict.default.perm); + await domain.addRole(domainId, role, rdict.default); this.back(); } diff --git a/packages/hydrooj/src/handler/problem.ts b/packages/hydrooj/src/handler/problem.ts index a26b26075..1743b7d18 100644 --- a/packages/hydrooj/src/handler/problem.ts +++ b/packages/hydrooj/src/handler/problem.ts @@ -167,7 +167,7 @@ export class ProblemDetailHandler extends ProblemHandler { udoc: User; - @param('pid', Types.String, null, parsePid) + @param('pid', Types.String, true, null, parsePid) async _prepare(domainId: string, pid: number | string) { this.response.template = 'problem_detail.html'; this.pdoc = await problem.get(domainId, pid, this.user._id); @@ -418,6 +418,7 @@ export class ProblemEditHandler extends ProblemManageHandler { @param('content', Types.String, isContent) async post(domainId: string, title: string, content: string) { const $update: Partial = { title, content }; + console.log(this.request.body); if (this.request.body.pid) $update.pid = checkPid(this.request.body.pid); const pdoc = await problem.get(domainId, this.request.params.pid); await problem.edit(domainId, pdoc.docId, $update); diff --git a/packages/hydrooj/src/handler/training.ts b/packages/hydrooj/src/handler/training.ts index 043eb5964..617f9ba44 100644 --- a/packages/hydrooj/src/handler/training.ts +++ b/packages/hydrooj/src/handler/training.ts @@ -100,7 +100,7 @@ class TrainingDetailHandler extends Handler { async get(domainId: string, tid: ObjectID) { const tdoc = await training.get(domainId, tid); await bus.serial('training/get', tdoc, this); - const pids = training.getPids(tdoc); + const pids = training.getPids(tdoc.dag); const [owner, pdict] = await Promise.all([ user.getById(domainId, tdoc.owner), problem.getList(domainId, pids, this.user.hasPerm(PERM.PERM_VIEW_PROBLEM_HIDDEN)), diff --git a/packages/hydrooj/src/lib/ui.ts b/packages/hydrooj/src/lib/ui.ts index d8dd03e63..ac5b4d29e 100644 --- a/packages/hydrooj/src/lib/ui.ts +++ b/packages/hydrooj/src/lib/ui.ts @@ -37,9 +37,15 @@ export const Nav = ( name: string, args: Dictionary = {}, prefix: string, ...permPrivChecker: Array ) => { - global.Hydro.ui.nodes.nav.push({ - name, args: args || {}, prefix, checker: buildChecker(...permPrivChecker), - }); + if (name.startsWith('@@')) { + global.Hydro.ui.nodes.nav.splice(+name.split('@@')[1], 0, { + name: name.split('@@')[2], args: args || {}, prefix, checker: buildChecker(...permPrivChecker), + }); + } else { + global.Hydro.ui.nodes.nav.push({ + name, args: args || {}, prefix, checker: buildChecker(...permPrivChecker), + }); + } }; export const ProblemAdd = (