From b70c3ed0594e3c9c4c4c2f5edffb3d5c05c351eb Mon Sep 17 00:00:00 2001 From: Menci Date: Fri, 17 Feb 2017 14:32:53 +0800 Subject: [PATCH 1/2] Rename some URLs to follow UOJ --- modules/contest.js | 6 ++-- modules/legacy.js | 36 +++++++++++++++++++ modules/problem.js | 18 +++++----- modules/{judge.js => submission.js} | 16 ++++----- modules/user.js | 6 ++-- views/{edit_article.ejs => article_edit.ejs} | 0 views/contest.ejs | 4 +-- views/{edit_contest.ejs => contest_edit.ejs} | 0 views/contest_ranklist.ejs | 4 +-- views/{contest_list.ejs => contests.ejs} | 0 views/header.ejs | 2 +- views/problem.ejs | 8 ++--- .../{upload_testdata.ejs => problem_data.ejs} | 2 +- views/{edit_problem.ejs => problem_edit.ejs} | 0 views/{problem_set.ejs => problems.ejs} | 2 +- views/statistics.ejs | 8 ++--- views/{judge_detail.ejs => submission.ejs} | 2 +- ...detail_item.ejs => submission_content.ejs} | 12 +++---- views/{judge_state.ejs => submissions.ejs} | 2 +- ...ge_state_item.ejs => submissions_item.ejs} | 12 +++---- views/{edit_user.ejs => user_edit.ejs} | 0 21 files changed, 88 insertions(+), 52 deletions(-) create mode 100644 modules/legacy.js rename modules/{judge.js => submission.js} (90%) rename views/{edit_article.ejs => article_edit.ejs} (100%) rename views/{edit_contest.ejs => contest_edit.ejs} (100%) rename views/{contest_list.ejs => contests.ejs} (100%) rename views/{upload_testdata.ejs => problem_data.ejs} (97%) rename views/{edit_problem.ejs => problem_edit.ejs} (100%) rename views/{problem_set.ejs => problems.ejs} (95%) rename views/{judge_detail.ejs => submission.ejs} (53%) rename views/{judge_detail_item.ejs => submission_content.ejs} (94%) rename views/{judge_state.ejs => submissions.ejs} (94%) rename views/{judge_state_item.ejs => submissions_item.ejs} (63%) rename views/{edit_user.ejs => user_edit.ejs} (100%) diff --git a/modules/contest.js b/modules/contest.js index 2863cfb..242a270 100644 --- a/modules/contest.js +++ b/modules/contest.js @@ -26,14 +26,14 @@ let Problem = syzoj.model('problem'); let JudgeState = syzoj.model('judge_state'); let User = syzoj.model('user'); -app.get('/contest', async (req, res) => { +app.get('/contests', async (req, res) => { try { let paginate = syzoj.utils.paginate(await Contest.count(), req.query.page, syzoj.config.page.contest); let contests = await Contest.query(paginate); await contests.forEachAsync(async x => x.information = await syzoj.utils.markdown(x.information)); - res.render('contest_list', { + res.render('contests', { contests: contests, paginate: paginate }) @@ -59,7 +59,7 @@ app.get('/contest/:id/edit', async (req, res) => { let problems = []; if (contest.problems) problems = await contest.problems.split('|').mapAsync(async id => await Problem.fromID(id)); - res.render('edit_contest', { + res.render('contest_edit', { contest: contest, problems: problems }); diff --git a/modules/legacy.js b/modules/legacy.js new file mode 100644 index 0000000..89922b0 --- /dev/null +++ b/modules/legacy.js @@ -0,0 +1,36 @@ +/* + * This file is part of SYZOJ. + * + * Copyright (c) 2016 Menci + * + * SYZOJ is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * SYZOJ is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with SYZOJ. If not, see . + */ + +'use strict'; + +app.get('/problem', async (req, res) => { + res.redirect('/problems'); +}); + +app.get('/contest', async (req, res) => { + res.redirect('/contests'); +}); + +app.get('/judge_state', async (req, res) => { + res.redirect('/submissions'); +}); + +app.get('/judge_detail/:id', async (req, res) => { + res.redirect('/submission/' + req.params.id); +}); diff --git a/modules/problem.js b/modules/problem.js index a48636e..6cb0130 100644 --- a/modules/problem.js +++ b/modules/problem.js @@ -24,7 +24,7 @@ let JudgeState = syzoj.model('judge_state'); let WaitingJudge = syzoj.model('waiting_judge'); let Contest = syzoj.model('contest'); -app.get('/problem', async (req, res) => { +app.get('/problems', async (req, res) => { try { let paginate = syzoj.utils.paginate(await Problem.count(), req.query.page, syzoj.config.page.problem); let problems = await Problem.query(paginate); @@ -34,7 +34,7 @@ app.get('/problem', async (req, res) => { problem.judge_state = await problem.getJudgeState(res.locals.user, true); }); - res.render('problem_set', { + res.render('problems', { problems: problems, paginate: paginate }); @@ -92,7 +92,7 @@ app.get('/problem/:id/edit', async (req, res) => { problem.allowedEdit = await problem.isAllowedEditBy(res.locals.user); } - res.render('edit_problem', { + res.render('problem_edit', { problem: problem }); } catch (e) { @@ -134,7 +134,7 @@ app.post('/problem/:id/edit', async (req, res) => { } }); -app.get('/problem/:id/upload', async (req, res) => { +app.get('/problem/:id/data', async (req, res) => { try { let id = parseInt(req.params.id); let problem = await Problem.fromID(id); @@ -144,7 +144,7 @@ app.get('/problem/:id/upload', async (req, res) => { await problem.loadRelationships(); - res.render('upload_testdata', { + res.render('problem_data', { problem: problem }); } catch (e) { @@ -155,7 +155,7 @@ app.get('/problem/:id/upload', async (req, res) => { } }); -app.post('/problem/:id/upload', app.multer.single('testdata'), async (req, res) => { +app.post('/problem/:id/data', app.multer.single('testdata'), async (req, res) => { try { let id = parseInt(req.params.id); let problem = await Problem.fromID(id); @@ -176,7 +176,7 @@ app.post('/problem/:id/upload', app.multer.single('testdata'), async (req, res) await problem.save(); - res.redirect(syzoj.utils.makeUrl(['problem', id, 'upload'])); + res.redirect(syzoj.utils.makeUrl(['problem', id, 'data'])); } catch (e) { syzoj.log(e); res.render('error', { @@ -185,7 +185,7 @@ app.post('/problem/:id/upload', app.multer.single('testdata'), async (req, res) } }); -app.post('/submit/:id', async (req, res) => { +app.post('/problem/:id/submit', async (req, res) => { try { let id = parseInt(req.params.id); let problem = await Problem.fromID(id); @@ -228,7 +228,7 @@ app.post('/submit/:id', async (req, res) => { if (contest_id) { res.redirect(syzoj.utils.makeUrl(['contest', contest_id])); } else { - res.redirect(syzoj.utils.makeUrl(['judge_detail', judge_state.id])); + res.redirect(syzoj.utils.makeUrl(['submissions', judge_state.id])); } } catch (e) { syzoj.log(e); diff --git a/modules/judge.js b/modules/submission.js similarity index 90% rename from modules/judge.js rename to modules/submission.js index b33d28b..e64db90 100644 --- a/modules/judge.js +++ b/modules/submission.js @@ -22,7 +22,7 @@ let JudgeState = syzoj.model('judge_state'); let User = syzoj.model('user'); -app.get('/judge_state', async (req, res) => { +app.get('/submissions', async (req, res) => { try { let user = await User.fromName(req.query.submitter || ''); let where = {}; @@ -35,7 +35,7 @@ app.get('/judge_state', async (req, res) => { await judge_state.forEachAsync(async obj => obj.hidden = !(await obj.isAllowedSeeResultBy(res.locals.user))); await judge_state.forEachAsync(async obj => obj.allowedSeeCode = await obj.isAllowedSeeCodeBy(res.locals.user)); - res.render('judge_state', { + res.render('submissions', { judge_state: judge_state, paginate: paginate, form: { @@ -51,7 +51,7 @@ app.get('/judge_state', async (req, res) => { } }); -app.get('/judge_state/:id/ajax', async (req, res) => { +app.get('/submissions/:id/ajax', async (req, res) => { try { let judge_state = await JudgeState.fromID(req.params.id); if (!judge_state) throw 'No such judge state'; @@ -59,7 +59,7 @@ app.get('/judge_state/:id/ajax', async (req, res) => { judge_state.hidden = !(await judge_state.isAllowedSeeResultBy(res.locals.user)); judge_state.allowedSeeCode = await judge_state.isAllowedSeeCodeBy(res.locals.user); - res.render('judge_state_item', { + res.render('submissions_item', { judge: judge_state }); } catch (e) { @@ -70,7 +70,7 @@ app.get('/judge_state/:id/ajax', async (req, res) => { } }); -app.get('/judge_detail/:id', async (req, res) => { +app.get('/submission/:id', async (req, res) => { try { let id = parseInt(req.params.id); let judge = await JudgeState.fromID(id); @@ -81,7 +81,7 @@ app.get('/judge_detail/:id', async (req, res) => { judge.allowedSeeResult = await judge.isAllowedSeeResultBy(res.locals.user); judge.allowedSeeCode = await judge.isAllowedSeeCodeBy(res.locals.user); - res.render('judge_detail', { + res.render('submission', { judge: judge }); } catch (e) { @@ -92,7 +92,7 @@ app.get('/judge_detail/:id', async (req, res) => { } }); -app.get('/judge_detail/:id/ajax', async (req, res) => { +app.get('/submission/:id/ajax', async (req, res) => { try { let id = parseInt(req.params.id); let judge = await JudgeState.fromID(id); @@ -103,7 +103,7 @@ app.get('/judge_detail/:id/ajax', async (req, res) => { judge.allowedSeeResult = await judge.isAllowedSeeResultBy(res.locals.user); judge.allowedSeeCode = await judge.isAllowedSeeCodeBy(res.locals.user); - res.render('judge_detail_item', { + res.render('submission_content', { judge: judge }); } catch (e) { diff --git a/modules/user.js b/modules/user.js index 08cce43..ee01ee2 100644 --- a/modules/user.js +++ b/modules/user.js @@ -116,7 +116,7 @@ app.get('/user/:id/edit', async (req, res) => { throw 'Permission denied'; } - res.render('edit_user', { + res.render('user_edit', { edited_user: user, error_info: null }); @@ -148,12 +148,12 @@ app.post('/user/:id/edit', async (req, res) => { await user.save(); - res.render('edit_user', { + res.render('user_edit', { edited_user: user, error_info: 'Success' }); } catch (e) { - res.render('edit_user', { + res.render('user_edit', { edited_user: user, error_info: e }); diff --git a/views/edit_article.ejs b/views/article_edit.ejs similarity index 100% rename from views/edit_article.ejs rename to views/article_edit.ejs diff --git a/views/contest.ejs b/views/contest.ejs index 5fa3f71..1b477bb 100644 --- a/views/contest.ejs +++ b/views/contest.ejs @@ -42,7 +42,7 @@ <% if (problem.judge_id) { %> - + <% if (problem.status === true) { %> <% } else if (problem.status !== false) { %> @@ -55,7 +55,7 @@ <%= syzoj.utils.removeTitleTag(problem.problem.title) %> <% if (problem.judge_id) { %> - + <% } %> diff --git a/views/edit_contest.ejs b/views/contest_edit.ejs similarity index 100% rename from views/edit_contest.ejs rename to views/contest_edit.ejs diff --git a/views/contest_ranklist.ejs b/views/contest_ranklist.ejs index 0c4e152..6f9a772 100644 --- a/views/contest_ranklist.ejs +++ b/views/contest_ranklist.ejs @@ -1,4 +1,4 @@ -<%= this.title = '排名 - ' + contest.title %> +<% this.title = '排名 - ' + contest.title %> <% include header %>