diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index d268a0c34..ae6056ae4 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "3.16.0", + "version": "3.16.1", "bin": "bin/hydrooj.js", "main": "src/loader", "module": "src/loader", diff --git a/packages/hydrooj/src/handler/contest.ts b/packages/hydrooj/src/handler/contest.ts index b897cb738..5fc21d469 100644 --- a/packages/hydrooj/src/handler/contest.ts +++ b/packages/hydrooj/src/handler/contest.ts @@ -127,7 +127,7 @@ export class ContestDetailHandler extends ContestDetailBaseHandler { .replace(/="file:\/\//g, `="./${this.tdoc.docId}/file/`); } if ( - (contest.isNotStarted(this.tdoc) || !this.tsdoc?.attend) + (contest.isNotStarted(this.tdoc) || (!this.tsdoc?.attend && !contest.isDone(this.tdoc))) && !this.user.own(this.tdoc) && !this.user.hasPerm(PERM.PERM_VIEW_CONTEST_HIDDEN_SCOREBOARD) ) return; diff --git a/packages/hydrooj/src/handler/homework.ts b/packages/hydrooj/src/handler/homework.ts index 5b2f139fd..08e7961e4 100644 --- a/packages/hydrooj/src/handler/homework.ts +++ b/packages/hydrooj/src/handler/homework.ts @@ -74,7 +74,7 @@ class HomeworkDetailHandler extends Handler { tdoc, tsdoc, udict, ddocs, page, dpcount, dcount, }; if ( - (contest.isNotStarted(tdoc) || !tsdoc?.attend) + (contest.isNotStarted(tdoc) || (!tsdoc?.attend && !contest.isDone(tdoc))) && !this.user.own(tdoc) && !this.user.hasPerm(PERM.PERM_VIEW_HOMEWORK_HIDDEN_SCOREBOARD) ) return; diff --git a/packages/ui-default/package.json b/packages/ui-default/package.json index 851c8a214..edb4cec47 100644 --- a/packages/ui-default/package.json +++ b/packages/ui-default/package.json @@ -1,6 +1,6 @@ { "name": "@hydrooj/ui-default", - "version": "4.39.9", + "version": "4.39.10", "author": "undefined ", "license": "AGPL-3.0", "main": "hydro.js", diff --git a/packages/ui-default/templates/contest_detail.html b/packages/ui-default/templates/contest_detail.html index a51dfa586..f504a1033 100644 --- a/packages/ui-default/templates/contest_detail.html +++ b/packages/ui-default/templates/contest_detail.html @@ -61,6 +61,8 @@ + {% set isAdmin = handler.user.own(tdoc) or handler.user.hasPerm(perm.PERM_VIEW_CONTEST_HIDDEN_SCOREBOARD) %} + {% set ntdoc = model.contest.isDone(tdoc) or (tsdoc.attend and not model.contest.isNotStarted(tdoc)) %} {%- for pid in tdoc.pids -%} {% if handler.user.hasPriv(PRIV.PRIV_USER_PROFILE) %} @@ -78,7 +80,7 @@ {% endif %} {% endif %} - {% if model.contest.isNotStarted(tdoc) %} + {% if isAdmin and not ntdoc %} {{ problem.render_problem_title(pdict[pid], show_invisible_flag=false, show_tags=false) }} {% else %} {{ problem.render_problem_title(pdict[pid], tdoc=tdoc, show_invisible_flag=false, show_tags=false) }} diff --git a/packages/ui-default/templates/homework_detail.html b/packages/ui-default/templates/homework_detail.html index d37ed8fc0..b7af9b7d6 100644 --- a/packages/ui-default/templates/homework_detail.html +++ b/packages/ui-default/templates/homework_detail.html @@ -36,6 +36,8 @@ + {% set isAdmin = handler.user.own(tdoc) or handler.user.hasPerm(perm.PERM_VIEW_HOMEWORK_HIDDEN_SCOREBOARD) %} + {% set ntdoc = model.contest.isDone(tdoc) or (tsdoc.attend and not model.contest.isNotStarted(tdoc)) %} {%- for pid in tdoc.pids -%} {% if handler.user.hasPriv(PRIV.PRIV_USER_PROFILE) %} @@ -53,7 +55,7 @@ {% endif %} {% endif %} - {% if model.contest.isNotStarted(tdoc) %} + {% if isAdmin and not ntdoc %} {{ problem.render_problem_title(pdict[pid], show_invisible_flag=false, show_tags=false) }} {% else %} {{ problem.render_problem_title(pdict[pid], tdoc=tdoc, show_invisible_flag=false, show_tags=false) }}