mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-17 09:36:08 +08:00
core: export pagination settings
This commit is contained in:
1 parent
7fdcbc5220
commit
e76459cff6
10 files changed
+39
-39
No files matched your search
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "hydrooj",
|
||||
"version": "2.19.3",
|
||||
"version": "2.19.4",
|
||||
"bin": "bin/hydrooj.js",
|
||||
"main": "dist/loader.js",
|
||||
"typings": "dist/loader.d.ts",
|
||||
|
||||
@@ -8,8 +8,9 @@ import {
|
||||
} from '../error';
|
||||
import { isContent, isTitle } from '../lib/validator';
|
||||
import paginate from '../lib/paginate';
|
||||
import { PERM, PRIV, CONSTANT } from '../model/builtin';
|
||||
import { PERM, PRIV } from '../model/builtin';
|
||||
import * as contest from '../model/contest';
|
||||
import * as system from '../model/system';
|
||||
import * as document from '../model/document';
|
||||
import * as problem from '../model/problem';
|
||||
import * as domain from '../model/domain';
|
||||
@@ -39,7 +40,7 @@ class ContestListHandler extends ContestHandler {
|
||||
qs = `rule=${rule}`;
|
||||
}
|
||||
// eslint-disable-next-line prefer-const
|
||||
[tdocs, tpcount] = await paginate(tdocs, page, CONSTANT.CONTEST_PER_PAGE);
|
||||
[tdocs, tpcount] = await paginate(tdocs, page, system.get('pagination.contest'));
|
||||
const tids = [];
|
||||
for (const tdoc of tdocs) tids.push(tdoc.docId);
|
||||
const tsdict = await contest.getListStatus(domainId, this.user._id, tids);
|
||||
|
||||
@@ -5,12 +5,13 @@ import {
|
||||
Mdoc, Drdoc, Ddoc, Drrdoc,
|
||||
} from '../interface';
|
||||
import paginate from '../lib/paginate';
|
||||
import * as system from '../model/system';
|
||||
import * as user from '../model/user';
|
||||
import * as oplog from '../model/oplog';
|
||||
import * as message from '../model/message';
|
||||
import * as discussion from '../model/discussion';
|
||||
import * as document from '../model/document';
|
||||
import { PERM, PRIV, CONSTANT } from '../model/builtin';
|
||||
import { PERM, PRIV } from '../model/builtin';
|
||||
import {
|
||||
Route, Handler, Types, param,
|
||||
} from '../service/server';
|
||||
@@ -74,7 +75,7 @@ class DiscussionMainHandler extends Handler {
|
||||
const [ddocs, dpcount] = await paginate(
|
||||
discussion.getMulti(domainId),
|
||||
page,
|
||||
CONSTANT.DISCUSSION_PER_PAGE,
|
||||
system.get('pagination.discussion'),
|
||||
);
|
||||
const udict = await user.getList(domainId, ddocs.map((ddoc) => ddoc.owner));
|
||||
const path = [
|
||||
@@ -106,7 +107,7 @@ class DiscussionNodeHandler extends DiscussionHandler {
|
||||
const [ddocs, dpcount] = await paginate(
|
||||
discussion.getMulti(domainId, { parentType: typeMapper[type], parentId: name }),
|
||||
page,
|
||||
CONSTANT.DISCUSSION_PER_PAGE,
|
||||
system.get('pagination.discussion'),
|
||||
);
|
||||
const uids = ddocs.map((ddoc) => ddoc.owner);
|
||||
uids.push(this.vnode.owner);
|
||||
@@ -183,7 +184,7 @@ class DiscussionDetailHandler extends DiscussionHandler {
|
||||
const [drdocs, pcount, drcount] = await paginate(
|
||||
discussion.getMultiReply(domainId, did),
|
||||
page,
|
||||
CONSTANT.REPLY_PER_PAGE,
|
||||
system.get('pagination.reply'),
|
||||
);
|
||||
const uids = drdocs.map((drdoc) => drdoc.owner);
|
||||
uids.push(this.ddoc.owner);
|
||||
|
||||
@@ -20,7 +20,7 @@ import * as domain from '../model/domain';
|
||||
import * as discussion from '../model/discussion';
|
||||
import * as token from '../model/token';
|
||||
import * as training from '../model/training';
|
||||
import { PERM, PRIV, CONSTANT } from '../model/builtin';
|
||||
import { PERM, PRIV } from '../model/builtin';
|
||||
import {
|
||||
isContent, isPassword, isEmail, isTitle,
|
||||
} from '../lib/validator';
|
||||
@@ -32,7 +32,7 @@ class HomeHandler extends Handler {
|
||||
if (this.user.hasPerm(PERM.PERM_VIEW_HOMEWORK)) {
|
||||
const tdocs = await contest.getMulti(domainId, {}, document.TYPE_HOMEWORK)
|
||||
.sort('beginAt', -1)
|
||||
.limit(CONSTANT.HOMEWORK_ON_MAIN)
|
||||
.limit(system.get('pagination.homework_main'))
|
||||
.toArray();
|
||||
const tsdict = await contest.getListStatus(
|
||||
domainId, this.user._id,
|
||||
@@ -47,7 +47,7 @@ class HomeHandler extends Handler {
|
||||
if (this.user.hasPerm(PERM.PERM_VIEW_CONTEST)) {
|
||||
const tdocs = await contest.getMulti(domainId)
|
||||
.sort('beginAt', -1)
|
||||
.limit(CONSTANT.CONTEST_ON_MAIN)
|
||||
.limit(system.get('pagination.contest_main'))
|
||||
.toArray();
|
||||
const tsdict = await contest.getListStatus(
|
||||
domainId, this.user._id, tdocs.map((tdoc) => tdoc.docId),
|
||||
@@ -61,7 +61,7 @@ class HomeHandler extends Handler {
|
||||
if (this.user.hasPerm(PERM.PERM_VIEW_TRAINING)) {
|
||||
const tdocs = await training.getMulti(domainId)
|
||||
.sort('_id', 1)
|
||||
.limit(CONSTANT.TRAINING_ON_MAIN)
|
||||
.limit(system.get('pagination.training_main'))
|
||||
.toArray();
|
||||
const tsdict = await training.getListStatus(
|
||||
domainId, this.user._id, tdocs.map((tdoc) => tdoc.docId),
|
||||
@@ -74,7 +74,7 @@ class HomeHandler extends Handler {
|
||||
async discussion(domainId: string): Promise<[any[], any]> {
|
||||
if (this.user.hasPerm(PERM.PERM_VIEW_DISCUSSION)) {
|
||||
const ddocs = await discussion.getMulti(domainId)
|
||||
.limit(CONSTANT.DISCUSSION_ON_MAIN)
|
||||
.limit(system.get('pagination.discussion_main'))
|
||||
.toArray();
|
||||
const vndict = await discussion.getListVnodes(
|
||||
domainId, ddocs, this.user.hasPerm(PERM.PERM_VIEW_PROBLEM_HIDDEN),
|
||||
|
||||
@@ -13,8 +13,9 @@ import {
|
||||
} from '../service/server';
|
||||
import * as bus from '../service/bus';
|
||||
import * as domain from '../model/domain';
|
||||
import { PERM, CONSTANT } from '../model/builtin';
|
||||
import { PERM } from '../model/builtin';
|
||||
import * as user from '../model/user';
|
||||
import * as system from '../model/system';
|
||||
import * as contest from '../model/contest';
|
||||
import * as discussion from '../model/discussion';
|
||||
import * as problem from '../model/problem';
|
||||
@@ -84,7 +85,7 @@ class HomeworkDetailHandler extends HomeworkHandler {
|
||||
const [ddocs, dpcount, dcount] = await paginate(
|
||||
discussion.getMulti(domainId, { parentType: tdoc.docType, parentId: tdoc.docId }),
|
||||
page,
|
||||
CONSTANT.DISCUSSION_PER_PAGE,
|
||||
system.get('pagination.discussion'),
|
||||
);
|
||||
const uids = ddocs.map((ddoc) => ddoc.owner);
|
||||
uids.push(tdoc.owner);
|
||||
|
||||
@@ -11,12 +11,13 @@ import {
|
||||
} from '../interface';
|
||||
import paginate from '../lib/paginate';
|
||||
import { isTitle, isContent, isPid } from '../lib/validator';
|
||||
import * as system from '../model/system';
|
||||
import * as problem from '../model/problem';
|
||||
import * as record from '../model/record';
|
||||
import * as domain from '../model/domain';
|
||||
import * as user from '../model/user';
|
||||
import * as solution from '../model/solution';
|
||||
import { PERM, PRIV, CONSTANT } from '../model/builtin';
|
||||
import { PERM, PRIV } from '../model/builtin';
|
||||
import storage from '../service/storage';
|
||||
import * as bus from '../service/bus';
|
||||
import {
|
||||
@@ -70,7 +71,7 @@ export class ProblemMainHandler extends ProblemHandler {
|
||||
const [pdocs, ppcount, pcount] = await paginate(
|
||||
problem.getMulti(domainId, query).sort({ pid: 1, docId: 1 }),
|
||||
page,
|
||||
CONSTANT.PROBLEM_PER_PAGE,
|
||||
system.get('pagination.problem'),
|
||||
);
|
||||
if (this.user.hasPriv(PRIV.PRIV_USER_PROFILE)) {
|
||||
psdict = await problem.getListStatus(
|
||||
@@ -115,7 +116,7 @@ export class ProblemCategoryHandler extends ProblemHandler {
|
||||
const [pdocs, ppcount, pcount] = await paginate(
|
||||
problem.getMulti(domainId, q).sort({ pid: 1, docId: 1 }),
|
||||
page,
|
||||
CONSTANT.PROBLEM_PER_PAGE,
|
||||
system.get('pagination.problem'),
|
||||
);
|
||||
if (this.user.hasPriv(PRIV.PRIV_USER_PROFILE)) {
|
||||
psdict = await problem.getListStatus(
|
||||
@@ -465,7 +466,7 @@ export class ProblemSolutionHandler extends ProblemDetailHandler {
|
||||
const [psdocs, pcount, pscount] = await paginate(
|
||||
solution.getMulti(domainId, this.pdoc.docId),
|
||||
page,
|
||||
CONSTANT.SOLUTION_PER_PAGE,
|
||||
system.get('pagination.solution'),
|
||||
);
|
||||
const uids = [this.pdoc.owner];
|
||||
const docids = [];
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
import { FilterQuery, ObjectID } from 'mongodb';
|
||||
import { PermissionError, RecordNotFoundError } from '../error';
|
||||
import {
|
||||
PERM, CONSTANT, STATUS, PRIV,
|
||||
} from '../model/builtin';
|
||||
import { PERM, STATUS, PRIV } from '../model/builtin';
|
||||
import * as system from '../model/system';
|
||||
import * as problem from '../model/problem';
|
||||
import * as record from '../model/record';
|
||||
import * as contest from '../model/contest';
|
||||
@@ -42,7 +41,7 @@ class RecordListHandler extends RecordHandler {
|
||||
const [rdocs] = await paginate(
|
||||
record.getMulti(domainId, q).sort('_id', -1),
|
||||
page,
|
||||
CONSTANT.RECORD_PER_PAGE,
|
||||
system.get('pagination.record'),
|
||||
);
|
||||
const canViewProblem = this.user.hasPerm(PERM.PERM_VIEW_PROBLEM);
|
||||
const canViewProblemHidden = this.user.hasPerm(PERM.PERM_VIEW_PROBLEM_HIDDEN);
|
||||
|
||||
@@ -4,7 +4,8 @@ import { Tdoc, TrainingDoc } from '../interface';
|
||||
import { ValidationError, ProblemNotFoundError } from '../error';
|
||||
import { isTitle, isContent, isDescription } from '../lib/validator';
|
||||
import paginate from '../lib/paginate';
|
||||
import { PERM, PRIV, CONSTANT } from '../model/builtin';
|
||||
import * as system from '../model/system';
|
||||
import { PERM, PRIV } from '../model/builtin';
|
||||
import * as problem from '../model/problem';
|
||||
import * as builtin from '../model/builtin';
|
||||
import * as training from '../model/training';
|
||||
@@ -62,7 +63,7 @@ class TrainingMainHandler extends Handler {
|
||||
const [tdocs, tpcount] = await paginate(
|
||||
training.getMulti(domainId),
|
||||
page,
|
||||
CONSTANT.TRAINING_PER_PAGE,
|
||||
system.get('pagination.training'),
|
||||
);
|
||||
const tids: Set<ObjectID> = new Set();
|
||||
for (const tdoc of tdocs) tids.add(tdoc.docId);
|
||||
|
||||
@@ -589,23 +589,8 @@ export const USER_GENDER_ICONS = {
|
||||
[USER_GENDER_OTHER]: '?',
|
||||
};
|
||||
|
||||
export const CONSTANT = {
|
||||
PROBLEM_PER_PAGE: 100,
|
||||
CONTEST_PER_PAGE: 20,
|
||||
DISCUSSION_PER_PAGE: 50,
|
||||
RECORD_PER_PAGE: 100,
|
||||
SOLUTION_PER_PAGE: 20,
|
||||
TRAINING_PER_PAGE: 10,
|
||||
REPLY_PER_PAGE: 50,
|
||||
HOMEWORK_ON_MAIN: 5,
|
||||
DISCUSSION_ON_MAIN: 20,
|
||||
CONTEST_ON_MAIN: 10,
|
||||
TRAINING_ON_MAIN: 10,
|
||||
};
|
||||
|
||||
global.Hydro.model.builtin = {
|
||||
Permission,
|
||||
CONSTANT,
|
||||
PERM,
|
||||
PERMS,
|
||||
PERMS_BY_FAMILY,
|
||||
|
||||
@@ -158,6 +158,17 @@ SystemSetting(
|
||||
Setting('setting_server', 'server.language', 'zh_CN', langRange, 'Default display language'),
|
||||
Setting('setting_basic', 'problem.categories', builtin.CATEGORIES, 'yaml', 'Problem Categories'),
|
||||
Setting('setting_basic', 'lang.texts', builtin.LANG_TEXTS, 'yaml', 'LANG_TEXTS'),
|
||||
Setting('setting_basic', 'pagination.problem', 100, 'number', 'Problems per page'),
|
||||
Setting('setting_basic', 'pagination.contest', 20, 'number', 'Contests per page'),
|
||||
Setting('setting_basic', 'pagination.discussion', 50, 'number', 'Discussions per page'),
|
||||
Setting('setting_basic', 'pagination.record', 100, 'number', 'Records per page'),
|
||||
Setting('setting_basic', 'pagination.solution', 20, 'number', 'Solutions per page'),
|
||||
Setting('setting_basic', 'pagination.training', 10, 'number', 'Trainings per page'),
|
||||
Setting('setting_basic', 'pagination.reply', 50, 'number', 'Replies per page'),
|
||||
Setting('setting_basic', 'pagination.homework_main', 5, 'number', 'Homeworks on main'),
|
||||
Setting('setting_basic', 'pagination.contest_main', 10, 'number', 'Contests on main'),
|
||||
Setting('setting_basic', 'pagination.training_main', 10, 'number', 'Trainings on main'),
|
||||
Setting('setting_basic', 'pagination.discussion_main', 20, 'number', 'Discussions on main'),
|
||||
Setting('setting_session', 'session.keys', [String.random(32)], 'text', 'session.keys', null, FLAG_HIDDEN),
|
||||
Setting('setting_session', 'session.secure', false, 'boolean', 'session.secure'),
|
||||
Setting('setting_session', 'session.saved_expire_seconds', 3600 * 24 * 30, 'number', 'Saved session expire seconds'),
|
||||
|
||||
Reference in new issue
Block a user