From 609192b516cda779b8a7316f7874c2c730e569c2 Mon Sep 17 00:00:00 2001
From: zjz1993 <1429595365@qq.com>
Date: Mon, 12 Aug 2019 13:55:55 +0800
Subject: [PATCH 1/2] =?UTF-8?q?feat:=E8=AE=BA=E5=9D=9B=E5=A2=9E=E5=8A=A0?=
=?UTF-8?q?=E5=9B=9E=E5=A4=8D=E5=9B=9E=E5=A4=8D=E7=9A=84=E5=8A=9F=E8=83=BD?=
=?UTF-8?q?=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
models-built/reply.js | 71 +++++++++++++++++++++++++++++
models-built/reply.js.map | 1 +
models/reply.ts | 35 ++++++++++++++
modules/discussion.js | 89 ++++++++++++++++++++++++++++++++++--
views/article.ejs | 96 +++++++++++++++++++++++++++++++++++----
5 files changed, 281 insertions(+), 11 deletions(-)
create mode 100644 models-built/reply.js
create mode 100644 models-built/reply.js.map
create mode 100644 models/reply.ts
diff --git a/models-built/reply.js b/models-built/reply.js
new file mode 100644
index 0000000..7ba6636
--- /dev/null
+++ b/models-built/reply.js
@@ -0,0 +1,71 @@
+"use strict";
+var __extends = (this && this.__extends) || (function () {
+ var extendStatics = function (d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
+ return extendStatics(d, b);
+ };
+ return function (d, b) {
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+})();
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+};
+exports.__esModule = true;
+var TypeORM = require("typeorm");
+var common_1 = require("./common");
+var Reply = /** @class */ (function (_super) {
+ __extends(Reply, _super);
+ function Reply() {
+ return _super !== null && _super.apply(this, arguments) || this;
+ }
+ Reply.cache = false;
+ __decorate([
+ TypeORM.PrimaryGeneratedColumn(),
+ __metadata("design:type", Number)
+ ], Reply.prototype, "id");
+ __decorate([
+ TypeORM.Column({ nullable: true, type: "mediumtext" }),
+ __metadata("design:type", String)
+ ], Reply.prototype, "content");
+ __decorate([
+ TypeORM.Index(),
+ TypeORM.Column({ nullable: true, type: "integer" }),
+ __metadata("design:type", Number)
+ ], Reply.prototype, "user_id");
+ __decorate([
+ TypeORM.Index(),
+ TypeORM.Column({ nullable: true, type: "integer" }),
+ __metadata("design:type", Number)
+ ], Reply.prototype, "comment_id");
+ __decorate([
+ TypeORM.Index(),
+ TypeORM.Column({ nullable: true, type: "integer" }),
+ __metadata("design:type", Number)
+ ], Reply.prototype, "article_id");
+ __decorate([
+ TypeORM.Column({ nullable: true, type: "integer" }),
+ __metadata("design:type", Number)
+ ], Reply.prototype, "public_time");
+ __decorate([
+ TypeORM.Column({ nullable: true, type: "integer" }),
+ __metadata("design:type", Number)
+ ], Reply.prototype, "update_time");
+ Reply = __decorate([
+ TypeORM.Entity()
+ ], Reply);
+ return Reply;
+}(common_1["default"]));
+exports["default"] = Reply;
+;
+//# sourceMappingURL=reply.js.map
\ No newline at end of file
diff --git a/models-built/reply.js.map b/models-built/reply.js.map
new file mode 100644
index 0000000..7526ae4
--- /dev/null
+++ b/models-built/reply.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"reply.js","sourceRoot":"","sources":["../models/reply.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,iCAAmC;AACnC,mCAA6B;AAO7B;IAAmC,yBAAK;IAAxC;;IA0BA,CAAC;IAzBU,WAAK,GAAG,KAAK,CAAC;IAGrB;QADC,OAAO,CAAC,sBAAsB,EAAE;;6BACtB;IAGX;QADC,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;;kCACvC;IAIhB;QAFC,OAAO,CAAC,KAAK,EAAE;QACf,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;kCACpC;IAIhB;QAFC,OAAO,CAAC,KAAK,EAAE;QACf,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;qCACjC;IAInB;QAFC,OAAO,CAAC,KAAK,EAAE;QACf,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;qCACjC;IAGnB;QADC,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;sCAChC;IAGpB;QADC,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;sCAChC;IAzBH,KAAK;QADzB,OAAO,CAAC,MAAM,EAAE;OACI,KAAK,CA0BzB;IAAD,YAAC;CAAA,AA1BD,CAAmC,mBAAK,GA0BvC;qBA1BoB,KAAK;AA0BzB,CAAC"}
\ No newline at end of file
diff --git a/models/reply.ts b/models/reply.ts
new file mode 100644
index 0000000..a96f386
--- /dev/null
+++ b/models/reply.ts
@@ -0,0 +1,35 @@
+import * as TypeORM from "typeorm";
+import Model from "./common";
+import User from "./user";
+import Article from "./article";
+
+declare var syzoj: any;
+
+@TypeORM.Entity()
+export default class Reply extends Model {
+ static cache = false;
+
+ @TypeORM.PrimaryGeneratedColumn()
+ id: number;
+
+ @TypeORM.Column({ nullable: true, type: "mediumtext" })
+ content: string;
+
+ @TypeORM.Index()
+ @TypeORM.Column({ nullable: true, type: "integer" })
+ user_id: number;
+
+ @TypeORM.Index()
+ @TypeORM.Column({ nullable: true, type: "integer" })
+ comment_id: number;
+
+ @TypeORM.Index()
+ @TypeORM.Column({ nullable: true, type: "integer" })
+ article_id: number;
+
+ @TypeORM.Column({ nullable: true, type: "integer" })
+ public_time: number;
+
+ @TypeORM.Column({ nullable: true, type: "integer" })
+ update_time: number;
+};
diff --git a/modules/discussion.js b/modules/discussion.js
index cd208f2..028d25d 100644
--- a/modules/discussion.js
+++ b/modules/discussion.js
@@ -2,6 +2,7 @@ let Problem = syzoj.model('problem');
let Article = syzoj.model('article');
let ArticleComment = syzoj.model('article-comment');
let User = syzoj.model('user');
+let Reply = syzoj.model('reply');
app.get('/discussion/:type?', async (req, res) => {
try {
@@ -76,6 +77,7 @@ app.get('/discussion/problem/:pid', async (req, res) => {
app.get('/article/:id', async (req, res) => {
try {
let id = parseInt(req.params.id);
+ let replyQuery = await Reply.createQueryBuilder();
let article = await Article.findById(id);
if (!article) throw new ErrorMessage('无此帖子。');
@@ -93,6 +95,17 @@ app.get('/article/:id', async (req, res) => {
});
for (let comment of comments) {
+ const commentId = comment.id;
+ const reply = await replyQuery.where("comment_id = :commentId", { commentId }).getMany();
+ if (reply.length === 0) {
+ comment.reply = [];
+ } else {
+ comment.reply = await reply.mapAsync(async (item) => {
+ const replyUserId = item.user_id;
+ item.reply_user = await User.findById(replyUserId);
+ return item
+ });
+ }
comment.content = await syzoj.utils.markdown(comment.content);
comment.allowedEdit = await comment.isAllowedEditBy(res.locals.user);
await comment.loadRelationships();
@@ -105,8 +118,8 @@ app.get('/article/:id', async (req, res) => {
throw new ErrorMessage('您没有权限进行此操作。');
}
}
-
res.render('article', {
+ user: res.locals.user,
article: article,
comments: comments,
paginate: paginate,
@@ -203,7 +216,11 @@ app.post('/article/:id/delete', async (req, res) => {
await Promise.all((await ArticleComment.find({
article_id: article.id
- })).map(comment => comment.destroy()))
+ })).map(comment => comment.destroy()));
+
+ await Promise.all((await Reply.find({
+ article_id: article.id
+ })).map(reply => reply.destroy()));
await article.destroy();
@@ -249,13 +266,55 @@ app.post('/article/:id/comment', async (req, res) => {
}
});
+app.post('/article/:id/comment/:commentId', async (req, res) => {
+ try {
+ if (!res.locals.user) throw new ErrorMessage('请登录后继续。', { '登录': syzoj.utils.makeUrl(['login'], { 'url': req.originalUrl }) });
+
+ let id = parseInt(req.params.id);
+ let commentId = parseInt(req.params.commentId);
+ let userId = parseInt(res.locals.user.id);
+ let article = await Article.findById(id);
+ let articleComment = await ArticleComment.findById(commentId);
+
+ if (!articleComment) {
+ throw new ErrorMessage('无此回复。');
+ }
+
+ if (!article) {
+ throw new ErrorMessage('无此帖子。');
+ } else {
+ if (!await article.isAllowedCommentBy(res.locals.user)) throw new ErrorMessage('您没有权限进行此操作。');
+ }
+
+ let newReply = await Reply.create({
+ content: req.body.comment,
+ article_id: id,
+ user_id: userId,
+ comment_id: commentId,
+ public_time: syzoj.utils.getCurrentDate(),
+ update_time: syzoj.utils.getCurrentDate()
+ });
+
+ const reply = await newReply.save();
+
+ await article.resetReplyCountAndTime();
+ //
+ res.redirect(syzoj.utils.makeUrl(['article', article.id]));
+ } catch (e) {
+ syzoj.log(e);
+ res.render('error', {
+ err: e
+ });
+ }
+});
+
app.post('/article/:article_id/comment/:id/delete', async (req, res) => {
try {
if (!res.locals.user) throw new ErrorMessage('请登录后继续。', { '登录': syzoj.utils.makeUrl(['login'], { 'url': req.originalUrl }) });
let id = parseInt(req.params.id);
let comment = await ArticleComment.findById(id);
-
+ let replyQuery = await Reply.createQueryBuilder();
if (!comment) {
throw new ErrorMessage('无此评论。');
} else {
@@ -265,6 +324,7 @@ app.post('/article/:article_id/comment/:id/delete', async (req, res) => {
const article = await Article.findById(comment.article_id);
await comment.destroy();
+ await replyQuery.delete().from(Reply).where("comment_id = :id", { id }).execute();
await article.resetReplyCountAndTime();
@@ -276,3 +336,26 @@ app.post('/article/:article_id/comment/:id/delete', async (req, res) => {
});
}
});
+
+app.post('/article/:articleId/reply/:id/delete', async (req, res) => {
+ try {
+ if (!res.locals.user) throw new ErrorMessage('请登录后继续。', { '登录': syzoj.utils.makeUrl(['login'], { 'url': req.originalUrl }) });
+
+ let id = parseInt(req.params.id);
+ let reply = await Reply.findById(id);
+ let articleId = parseInt(req.params.articleId);
+ let replyQuery = await Reply.createQueryBuilder();
+ if (!reply) {
+ throw new ErrorMessage('无此回复。');
+ }
+
+ await reply.destroy();
+
+ res.redirect(`/article/${articleId}`);
+ } catch (e) {
+ syzoj.log(e);
+ res.render('error', {
+ err: e
+ });
+ }
+});
diff --git a/views/article.ejs b/views/article.ejs
index 3386e33..2b2a7a3 100644
--- a/views/article.ejs
+++ b/views/article.ejs
@@ -4,6 +4,18 @@
.small{
font-size: 0.7em;
}
+.reply{
+ margin-left: 45px !important;
+}
+.article-comment{
+ cursor: pointer;
+ display: inline-block;
+ margin: 0 .75em 0 0;
+ color: rgba(0,0,0,.4);
+}
+.article-comment:hover{
+ color: rgba(0,0,0,.8);
+}
@@ -17,11 +29,15 @@
全局板块
<% } %>
+
<%= user %>
<%= article.title %>
<%= article.user.username %><% if (article.user.nameplate) { %><%- article.user.nameplate %><% } %>
<%= syzoj.utils.formatDate(article.public_time) %>
+ <% if(user) {%>
+ 回复
+ <%}%>
<% if (article.public_time !== article.update_time) { %> <%= syzoj.utils.formatDate(article.update_time) %><% } %>
<% if (article.allowedEdit) { %>
编辑
@@ -65,14 +81,14 @@
<%- comment.content %>
<% if (comment.allowedEdit) { %>
-
+
- <% } %>
+ <% for (let reply of comment.reply) { %>
+
+ <% } %>
+ <% } %>
<% include page %>
@@ -96,14 +154,14 @@
<% } %>
<% if (article.allowedComment) { %>
<% include monaco-editor %>
-
@@ -111,7 +169,7 @@
var editors = {
comment: { defaultValue: '' }
};
-
+
window.onEditorLoaded(function () {
for (var name in editors) {
var editor = editors[name];
@@ -122,7 +180,29 @@
$('#submit_button').removeClass('disabled');
});
-
+
<% } %>
<% include footer %>
+
From 53b628e935b1875b017028f9b98d74b6a8795091 Mon Sep 17 00:00:00 2001
From: zjz1993 <1429595365@qq.com>
Date: Tue, 13 Aug 2019 11:36:51 +0800
Subject: [PATCH 2/2] =?UTF-8?q?feat:=E7=BB=99=E6=99=AE=E9=80=9A=E6=8F=90?=
=?UTF-8?q?=E4=BA=A4=E5=A2=9E=E5=8A=A0=E5=8C=BF=E5=90=8D=E6=8F=90=E4=BA=A4?=
=?UTF-8?q?=E5=8A=9F=E8=83=BD=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
libs/submissions_process.js | 3 ++-
models-built/judge_state.js | 5 +++++
models-built/judge_state.js.map | 2 +-
models-built/user.js | 4 ++++
models-built/user.js.map | 2 +-
models/judge_state.ts | 4 ++++
models/user.ts | 3 +++
modules/api.js | 9 ++++++++-
modules/index.js | 12 ++++++++++--
modules/problem.js | 8 +++++---
modules/submission.js | 10 +++++++++-
modules/user.js | 15 +++++++++------
views/problem.ejs | 18 ++++++++++++++++--
views/submissions_item.ejs | 6 +++++-
views/user_edit.ejs | 4 ++++
15 files changed, 86 insertions(+), 19 deletions(-)
diff --git a/libs/submissions_process.js b/libs/submissions_process.js
index d20afc4..c18a932 100644
--- a/libs/submissions_process.js
+++ b/libs/submissions_process.js
@@ -14,7 +14,8 @@ const getSubmissionInfo = (s, displayConfig) => {
submitTime: syzoj.utils.formatDate(s.submit_time),
isPractice: s.is_practice,
c_id: s.c_id,
- is_share: s.is_share || false
+ is_share: s.is_share || false,
+ is_anonymous: s.is_anonymous
}
};
diff --git a/models-built/judge_state.js b/models-built/judge_state.js
index 1afe4a4..8d733cb 100644
--- a/models-built/judge_state.js
+++ b/models-built/judge_state.js
@@ -372,6 +372,11 @@ var JudgeState = /** @class */ (function (_super) {
TypeORM.Column({ nullable: true, type: "boolean" }),
__metadata("design:type", Boolean)
], JudgeState.prototype, "is_share");
+ __decorate([
+ TypeORM.Index(),
+ TypeORM.Column({ nullable: true, type: "boolean", "default": 0 }),
+ __metadata("design:type", Boolean)
+ ], JudgeState.prototype, "is_anonymous");
JudgeState = __decorate([
TypeORM.Entity(),
TypeORM.Index(['type', 'type_info']),
diff --git a/models-built/judge_state.js.map b/models-built/judge_state.js.map
index 19146cf..2b43ca2 100644
--- a/models-built/judge_state.js.map
+++ b/models-built/judge_state.js.map
@@ -1 +1 @@
-{"version":3,"file":"judge_state.js","sourceRoot":"","sources":["../models/judge_state.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"judge_state.js","sourceRoot":"","sources":["../models/judge_state.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/models-built/user.js b/models-built/user.js
index 24ec427..77fe64c 100644
--- a/models-built/user.js
+++ b/models-built/user.js
@@ -360,6 +360,10 @@ var User = /** @class */ (function (_super) {
TypeORM.Column({ nullable: true, type: "varchar", length: 80 }),
__metadata("design:type", String)
], User.prototype, "username");
+ __decorate([
+ TypeORM.Column({ nullable: true, type: "varchar", length: 60, "default": '' }),
+ __metadata("design:type", String)
+ ], User.prototype, "anonymous_name");
__decorate([
TypeORM.Column({ nullable: true, type: "varchar", length: 120 }),
__metadata("design:type", String)
diff --git a/models-built/user.js.map b/models-built/user.js.map
index a5403cd..51f5858 100644
--- a/models-built/user.js.map
+++ b/models-built/user.js.map
@@ -1 +1 @@
-{"version":3,"file":"user.js","sourceRoot":"","sources":["../models/user.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iCAAmC;AACnC,mCAA6B;AAI7B,6CAAuC;AACvC,mDAA6C;AAC7C,qCAAgC;AAGhC;IAAkC,wBAAK;IAAvC;;IAwMA,CAAC;aAxMoB,IAAI;IA2DV,cAAS,GAAtB,UAAuB,KAAK;;;gBAC1B,sBAAO,MAAI,CAAC,OAAO,CAAC;wBAClB,KAAK,EAAE;4BACL,KAAK,EAAE,KAAK;yBACb;qBACF,CAAC,EAAC;;;KACJ;IAEY,aAAQ,GAArB,UAAsB,IAAI;;;gBACxB,sBAAO,MAAI,CAAC,OAAO,CAAC;wBAClB,KAAK,EAAE;4BACL,QAAQ,EAAE,IAAI;yBACf;qBACF,CAAC,EAAC;;;KACJ;IAEK,8BAAe,GAArB,UAAsB,IAAI;;;;;wBACxB,IAAI,CAAC,IAAI;4BAAE,sBAAO,KAAK,EAAC;wBACpB,qBAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,EAAA;;wBAA1C,IAAI,SAAsC;4BAAE,sBAAO,IAAI,EAAC;wBACxD,sBAAO,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,EAAC;;;;KACvD;IAED,2CAA4B,GAA5B;QACE,OAAO,wBAAU,CAAC,kBAAkB,EAAE;aACpB,MAAM,CAAC,sBAAsB,CAAC;aAC9B,KAAK,CAAC,oBAAoB,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;aACjD,QAAQ,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;aACpD,QAAQ,CAAC,WAAW,CAAC;aACrB,OAAO,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAA;IAClD,CAAC;IAEK,gCAAiB,GAAvB;;;;;4BACE,qBAAM,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,yBAAyB,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE;;;;;wCAC3D,KAAA,IAAI,CAAA;wCAAU,qBAAM,wBAAU,CAAC,UAAU,CAAC,IAAI,CAAC,4BAA4B,EAAE,CAAC,EAAA;;wCAA9E,GAAK,MAAM,GAAG,SAAgE,CAAC;wCAC/E,KAAA,IAAI,CAAA;wCAAc,qBAAM,wBAAU,CAAC,KAAK,CAAC;gDACvC,OAAO,EAAE,IAAI,CAAC,EAAE;gDAChB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,2BAA2B;6CACjD,CAAC,EAAA;;wCAHF,GAAK,UAAU,GAAG,SAGhB,CAAC;wCAEH,qBAAM,IAAI,CAAC,IAAI,EAAE,EAAA;;wCAAjB,SAAiB,CAAC;;;;6BACnB,CAAC,EAAA;;wBARF,SAQE,CAAC;;;;;KACJ;IAEK,4BAAa,GAAnB;;;;;4BACoB,qBAAM,IAAI,CAAC,4BAA4B,EAAE,CAAC,UAAU,EAAE,EAAA;;wBAApE,WAAW,GAAG,SAAsD;wBAExE,sBAAO,WAAW,CAAC,GAAG,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,YAAY,CAAC,EAApB,CAAoB,CAAC,EAAA;;;;KACvD;IAEK,0BAAW,GAAjB;;;;4BACS,qBAAM,oBAAO,CAAC,IAAI,CAAC;4BACxB,KAAK,EAAE;gCACL,OAAO,EAAE,IAAI,CAAC,EAAE;6BACjB;yBACF,CAAC,EAAA;4BAJF,sBAAO,SAIL,EAAC;;;;KACJ;IAEK,4BAAa,GAAnB;;;;;;wBACM,QAAQ,GAAG;4BACb,UAAU,EAAE,CAAC,UAAU,CAAC;4BACxB,cAAc,EAAE,CAAC,cAAc,EAAE,YAAY,EAAE,uBAAuB,CAAC;4BACvE,eAAe,EAAE,CAAC,eAAe,CAAC;4BAClC,qBAAqB,EAAE,CAAC,qBAAqB,CAAC;4BAC9C,uBAAuB,EAAE,CAAC,uBAAuB,CAAC;4BAClD,eAAe,EAAE,CAAC,eAAe,CAAC;yBACnC,CAAC;wBAEE,GAAG,GAAG,EAAE,CAAC;;mCACM,QAAQ;;;;;;;wBACzB,GAAG,CAAC,QAAM,CAAC,GAAG,CAAC,CAAC;8BACc,EAAhB,KAAA,QAAQ,CAAC,QAAM,CAAC;;;6BAAhB,CAAA,cAAgB,CAAA;wBAArB,CAAC;wBACR,KAAA,GAAG,CAAA;wBAAC,KAAA,QAAM,CAAA;wBAAV,KAAA,MAAW,CAAA;wBAAI,qBAAM,wBAAU,CAAC,KAAK,CAAC;gCACpC,OAAO,EAAE,IAAI,CAAC,EAAE;gCAChB,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,CAAC;6BACV,CAAC,EAAA;;wBAJF,MAAW,GAAX,KAAe,SAIb,CAAC;;;wBALS,IAAgB,CAAA;;;;;4BAShC,sBAAO,GAAG,EAAC;;;;KACZ;IAEK,gCAAiB,GAAvB;;;;;;wBACE,KAAA,IAAI,CAAA;wBAAe,qBAAM,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAA;;wBAA/D,GAAK,WAAW,GAAG,SAA4C,CAAC;;;;;KACjE;IAEK,4BAAa,GAAnB;;;;;4BACmB,qBAAM,2BAAa,CAAC,IAAI,CAAC;4BACxC,KAAK,EAAE;gCACL,OAAO,EAAE,IAAI,CAAC,EAAE;6BACjB;yBACF,CAAC,EAAA;;wBAJE,UAAU,GAAG,SAIf;wBAEF,sBAAO,UAAU,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,SAAS,EAAX,CAAW,CAAC,EAAC;;;;KACzC;IAEK,4BAAa,GAAnB,UAAoB,aAAa;;;;;4BACX,qBAAM,IAAI,CAAC,aAAa,EAAE,EAAA;;wBAA1C,aAAa,GAAG,SAA0B;wBAE1C,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAA1B,CAA0B,CAAC,CAAC;wBACtE,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAA1B,CAA0B,CAAC,CAAC;8BAEvC,EAAb,+BAAa;;;6BAAb,CAAA,2BAAa,CAAA;wBAA1B,SAAS;wBACN,qBAAM,2BAAa,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE;oCAC7C,OAAO,EAAE,IAAI,CAAC,EAAE;oCAChB,SAAS,EAAE,SAAS;iCACrB,EAAE,CAAC,EAAA;;wBAHA,GAAG,GAAG,SAGN;wBAEJ,qBAAM,GAAG,CAAC,OAAO,EAAE,EAAA;;wBAAnB,SAAmB,CAAC;;;wBANA,IAAa,CAAA;;;8BASA,EAAb,+BAAa;;;6BAAb,CAAA,2BAAa,CAAA;wBAA1B,SAAS;wBACN,qBAAM,2BAAa,CAAC,MAAM,CAAC;gCACnC,OAAO,EAAE,IAAI,CAAC,EAAE;gCAChB,SAAS,EAAE,SAAS;6BACrB,CAAC,EAAA;;wBAHE,GAAG,GAAG,SAGR;wBAEF,qBAAM,GAAG,CAAC,IAAI,EAAE,EAAA;;wBAAhB,SAAgB,CAAC;;;wBANG,IAAa,CAAA;;;;;;KAQpC;IAEK,2BAAY,GAAlB,UAAmB,SAAS;;;;;;wBAC1B,IAAI,IAAI,CAAC,QAAQ;4BAAE,sBAAO,IAAI,EAAC;wBAEvB,qBAAM,2BAAa,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC,EAAA;;wBAAtF,CAAC,GAAG,SAAkF;wBAC1F,sBAAO,CAAC,CAAC,CAAC,EAAC;;;;KACZ;IAEK,oCAAqB,GAA3B;;;;;4BACU,qBAAM,wBAAU,CAAC,OAAO,CAAC;4BAC/B,KAAK,EAAE;gCACL,OAAO,EAAE,IAAI,CAAC,EAAE;6BACjB;4BACD,KAAK,EAAE;gCACL,WAAW,EAAE,MAAM;6BACpB;yBACF,CAAC,EAAA;;wBAPE,CAAC,GAAG,SAON;wBACF,IAAI,CAAC;4BAAE,sBAAO,CAAC,CAAC,QAAQ,EAAC;wBAEzB,sBAAO,IAAI,EAAC;;;;KACb;;IAtMM,UAAK,GAAG,IAAI,CAAC;IAGpB;QADC,OAAO,CAAC,sBAAsB,EAAE;;4BACtB;IAIX;QAFC,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAC/B,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;;kCAC/C;IAGjB;QADC,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;;+BACnD;IAGd;QADC,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;;kCAChD;IAGjB;QADC,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;;kCAC/C;IAGjB;QADC,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;mCAC/B;IAGlB;QADC,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;qCAC7B;IAIpB;QAFC,OAAO,CAAC,KAAK,EAAE;QACf,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;gCACrC;IAIf;QAFC,OAAO,CAAC,KAAK,EAAE;QACf,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;sCAC/B;IAIrB;QAFC,OAAO,CAAC,KAAK,EAAE;QACf,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;oCACjC;IAGnB;QADC,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;kCAClC;IAIlB;QAFC,OAAO,CAAC,KAAK,EAAE;QACf,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;iCACnC;IAGjB;QADC,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,SAAO,EAAE,IAAI,EAAE,CAAC;;sCAC7C;IAGtB;QADC,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,SAAO,EAAE,IAAI,EAAE,CAAC;;+CACpC;IAG/B;QADC,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;6BACxC;IAGZ;QADC,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;gCACrC;IAGf;QADC,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;uCAC9B;IAzDH,IAAI;QADxB,OAAO,CAAC,MAAM,EAAE;OACI,IAAI,CAwMxB;IAAD,WAAC;CAAA,AAxMD,CAAkC,mBAAK,GAwMtC;qBAxMoB,IAAI"}
\ No newline at end of file
+{"version":3,"file":"user.js","sourceRoot":"","sources":["../models/user.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/models/judge_state.ts b/models/judge_state.ts
index 81f7fc7..d5ff7d1 100644
--- a/models/judge_state.ts
+++ b/models/judge_state.ts
@@ -106,6 +106,10 @@ export default class JudgeState extends Model {
@TypeORM.Column({ nullable: true, type: "boolean" })
is_share:boolean;
+ @TypeORM.Index()
+ @TypeORM.Column({ nullable: true, type: "boolean", default: 0 })
+ is_anonymous:boolean;
+
user?: User;
problem?: Problem;
diff --git a/models/user.ts b/models/user.ts
index 7f340d0..891c6e8 100644
--- a/models/user.ts
+++ b/models/user.ts
@@ -18,6 +18,9 @@ export default class User extends Model {
@TypeORM.Column({ nullable: true, type: "varchar", length: 80 })
username: string;
+ @TypeORM.Column({ nullable: true, type: "varchar", length: 60 , default: ''})
+ anonymous_name: string;
+
@TypeORM.Column({ nullable: true, type: "varchar", length: 120 })
email: string;
diff --git a/modules/api.js b/modules/api.js
index 962f776..fc4c22c 100644
--- a/modules/api.js
+++ b/modules/api.js
@@ -20,6 +20,12 @@ app.post('/api/login', async (req, res) => {
else {
req.session.user_id = user.id;
setLoginCookie(user.username, user.password, res);
+ const userQuery = await User.createQueryBuilder();
+ const userId = user.id;
+ const userInfo = await userQuery.where("id = :id", { id:userId }).getOne();
+ if (!userInfo.anonymous_name || userInfo.anonymous_name.length === 0){
+ await userQuery.update(User).set({anonymous_name: require('randomstring').generate(6)}).where("id = :id", { id:userId }).execute();
+ }
res.send({ error_code: 1 });
}
} catch (e) {
@@ -129,7 +135,8 @@ app.post('/api/sign_up', async (req, res) => {
email: req.body.email,
is_show: syzoj.config.default.user.show,
rating: syzoj.config.default.user.rating,
- register_time: parseInt((new Date()).getTime() / 1000)
+ register_time: parseInt((new Date()).getTime() / 1000),
+ anonymous_name: require('randomstring').generate(6)
});
await user.save();
diff --git a/modules/index.js b/modules/index.js
index b0ca11b..666fb3f 100644
--- a/modules/index.js
+++ b/modules/index.js
@@ -16,7 +16,7 @@ app.get('/', async (req, res) => {
await ranklist.forEachAsync(async x => x.renderInformation());
let notices = (await Article.find({
- where: { is_notice: true },
+ where: { is_notice: true },
order: { public_time: 'DESC' }
})).map(article => ({
title: article.title,
@@ -40,7 +40,15 @@ app.get('/', async (req, res) => {
title: problem.title,
time: timeAgo.format(new Date(problem.publicize_time)),
}));
-
+ // 增加匿名用户名后用户的第一次登陆
+ if (res.locals.user){
+ const userQuery = await User.createQueryBuilder();
+ const userId = res.locals.user.id;
+ const userInfo = await userQuery.where("id = :id", { id:userId }).getOne();
+ if (!userInfo.anonymous_name || userInfo.anonymous_name.length === 0){
+ await userQuery.update(User).set({anonymous_name: require('randomstring').generate(6)}).where("id = :id", { id:userId }).execute();
+ }
+ }
res.render('index', {
ranklist: ranklist,
notices: notices,
diff --git a/modules/problem.js b/modules/problem.js
index 9934b51..01e172f 100644
--- a/modules/problem.js
+++ b/modules/problem.js
@@ -669,7 +669,7 @@ app.post('/problem/:id/submit', app.multer.fields([{ name: 'answer', maxCount: 1
let id = parseInt(req.params.id);
let problem = await Problem.findById(id);
const curUser = res.locals.user;
-
+ const is_anonymous = req.body.is_anonymous ? 1 : 0;
if (!problem) throw new ErrorMessage('无此题目。');
if (problem.type !== 'submit-answer' && !syzoj.config.enabled_languages.includes(req.body.language)) throw new ErrorMessage('不支持该语言。');
if (!curUser) throw new ErrorMessage('请登录后继续。', { '登录': syzoj.utils.makeUrl(['login'], { 'url': syzoj.utils.makeUrl(['problem', id]) }) });
@@ -704,7 +704,8 @@ app.post('/problem/:id/submit', app.multer.fields([{ name: 'answer', maxCount: 1
language: null,
user_id: curUser.id,
problem_id: id,
- is_public: problem.is_public
+ is_public: problem.is_public,
+ is_anonymous
});
} else {
let code;
@@ -725,7 +726,8 @@ app.post('/problem/:id/submit', app.multer.fields([{ name: 'answer', maxCount: 1
language: req.body.language,
user_id: curUser.id,
problem_id: id,
- is_public: problem.is_public
+ is_public: problem.is_public,
+ is_anonymous
});
}
diff --git a/modules/submission.js b/modules/submission.js
index f916f5c..93e4f72 100644
--- a/modules/submission.js
+++ b/modules/submission.js
@@ -140,6 +140,9 @@ app.get('/submissions', async (req, res) => {
info.isPractice = true;
info.c_id = practiceInfo.c_id;
}
+ let userQuery = await User.createQueryBuilder();
+ const userInfo = await userQuery.where("id = :id", { id:x.user_id }).getOne();
+ info.anonymous_name = userInfo.anonymous_name
return {
info,
token: (x.pending && x.task_id != null) ? jwt.sign({
@@ -286,8 +289,13 @@ app.get('/submission/:id', async (req, res) => {
} else {
judge.code = "作者没有开放此题代码,请联系作者分享。";
}
+ let info = getSubmissionInfo(judge, currentConfig);
+ let userQuery = await User.createQueryBuilder();
+ const userInfo = await userQuery.where("id = :id", { id:judge.user_id }).getOne();
+ console.log(userInfo);
+ info.anonymous_name = userInfo.anonymous_name
res.render('submission', {
- info: getSubmissionInfo(judge, currentConfig),
+ info,
roughResult: getRoughResult(judge, currentConfig, false),
code: judge.code,
formattedCode: judge.formattedCode ? judge.formattedCode.toString("utf8") : null,
diff --git a/modules/user.js b/modules/user.js
index 180ec83..a719338 100644
--- a/modules/user.js
+++ b/modules/user.js
@@ -125,20 +125,22 @@ app.get('/user/:id', async (req, res) => {
app.get('/user/:id/edit', async (req, res) => {
try {
let id = parseInt(req.params.id);
- let user = await User.findById(id);
- if (!user) throw new ErrorMessage('无此用户。');
+ let userQuery = await User.createQueryBuilder();
+ const userInfo = await userQuery.where("id = :id", { id }).getOne();
+ if (!userInfo) throw new ErrorMessage('无此用户。');
- let allowedEdit = await user.isAllowedEditBy(res.locals.user);
+ let allowedEdit = await userInfo.isAllowedEditBy(res.locals.user);
if (!allowedEdit) {
throw new ErrorMessage('您没有权限进行此操作。');
}
-
- user.privileges = await user.getPrivileges();
+
+ userInfo.privileges = await userInfo.getPrivileges();
+ console.log(userInfo);
res.locals.user.allowedManage = await res.locals.user.hasPrivilege('manage_user');
res.render('user_edit', {
- edited_user: user,
+ edited_user: userInfo,
error_info: null
});
} catch (e) {
@@ -190,6 +192,7 @@ app.post('/user/:id/edit', async (req, res) => {
}
user.information = req.body.information;
+ user.anonymous_name = req.body.anonymous_name || '';
user.sex = req.body.sex;
user.public_email = (req.body.public_email === 'on');
user.prefer_formatted_code = (req.body.prefer_formatted_code === 'on');
diff --git a/views/problem.ejs b/views/problem.ejs
index 1b29904..fa10af3 100644
--- a/views/problem.ejs
+++ b/views/problem.ejs
@@ -293,7 +293,15 @@ if (contest) {
-
+
+
+ <% if (!contest) {%>
+
+
+
+
+ <% } %>
+
<% } else { %>
@@ -329,7 +337,13 @@ if (contest) {
-
+
+ <% if (!contest) {%>
+
+
+
+
+ <% } %>
<% } %>
diff --git a/views/submissions_item.ejs b/views/submissions_item.ejs
index aba6114..6cbd033 100644
--- a/views/submissions_item.ejs
+++ b/views/submissions_item.ejs
@@ -120,7 +120,11 @@
<% } %>
{{ formatSize(data.info.codeSize, 1) }}
- {{ data.info.user }} |
+
+ {{ data.info.anonymous_name }} |
+
+ {{ data.info.user }}
+ |
{{ data.info.submitTime }} |
>
+
+
+
+
|
删除回复
+确认删除这条回复吗?
+