From 0d0b8b0ba787a2a87f70b021fd5d17f8dc0c1a26 Mon Sep 17 00:00:00 2001 From: Baoshuo Date: Wed, 12 Oct 2022 19:19:54 +0800 Subject: [PATCH] feat(web/contest/self_reviews): markdown support --- web/app/controllers/contest_inside.php | 1 + web/app/controllers/subdomain/blog/self_reviews.php | 12 ++++++------ web/app/libs/uoj-contest-lib.php | 6 ++++-- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/web/app/controllers/contest_inside.php b/web/app/controllers/contest_inside.php index 6de26a2..e9cbdb8 100644 --- a/web/app/controllers/contest_inside.php +++ b/web/app/controllers/contest_inside.php @@ -563,6 +563,7 @@ EOD;

修改我的赛后总结

+
赛后总结支持 Markdown 语法。
printHTML(); ?>
diff --git a/web/app/controllers/subdomain/blog/self_reviews.php b/web/app/controllers/subdomain/blog/self_reviews.php index cc9c736..6e0580b 100644 --- a/web/app/controllers/subdomain/blog/self_reviews.php +++ b/web/app/controllers/subdomain/blog/self_reviews.php @@ -41,7 +41,10 @@ $col_names = array('contest_id'); $header_row .= ''.UOJLocale::get('contests::contest self review').''; $header_row .= ''; - $print_row = function($row) { + $parsedown = HTML::parsedown(); + $purifier = HTML::purifier_inline(); + + $print_row = function($row) use ($parsedown, $purifier) { global $username; $contest_id = $row['contest_id']; @@ -49,9 +52,6 @@ $col_names = array('contest_id'); $contest_problems = queryContestProblems($contest_id); $n_contest_problems = count($contest_problems); - $result = ''; - $purifier = HTML::purifier_inline(); - for ($i = 0; $i < $n_contest_problems; $i++) { $problem_id = $contest_problems[$i]['problem_id']; $problem = queryProblemBrief($problem_id); @@ -65,12 +65,12 @@ $col_names = array('contest_id'); $problem_review_id = "review-$contest_id-$i"; $result .= '' . chr(ord('A') + $i) . '. ' . $problem['title'] . ''; - $result .= '' . $purifier->purify($problem_self_review != null ? $problem_self_review['content'] : '') . ''; + $result .= '' . $purifier->purify($problem_self_review != null ? $parsedown->line($problem_self_review['content']) : '') . ''; if ($i == 0) { $contest_review_id = "review-$contest_id-overall"; $contest_self_review = DB::selectFirst("select content from contests_reviews where contest_id = $contest_id and problem_id = -1 and poster = '$username'"); - $result .= '' . $purifier->purify($contest_self_review != null ? $contest_self_review['content'] : '') . ''; + $result .= '' . $purifier->purify($contest_self_review != null ? $parsedown->line($contest_self_review['content']) : '') . ''; } $result .= ''; diff --git a/web/app/libs/uoj-contest-lib.php b/web/app/libs/uoj-contest-lib.php index b1e03a6..d2115b6 100644 --- a/web/app/libs/uoj-contest-lib.php +++ b/web/app/libs/uoj-contest-lib.php @@ -112,7 +112,9 @@ function calcStandings($contest, $contest_data, &$score, &$standings, $update_co } if ($show_reviews) { + $parsedown = HTML::parsedown(); $purifier = HTML::purifier_inline(); + foreach ($contest_data['people'] as $person) { foreach ($contest_data['problems'] as $key => $problem) { $review_result = DB::selectFirst("select content from contests_reviews where contest_id = {$contest['id']} and problem_id = {$problem} and poster = '{$person[0]}'"); @@ -122,7 +124,7 @@ function calcStandings($contest, $contest_data, &$score, &$standings, $update_co } if ($review_result['content']) { - $score[$person[0]][$key][] = $purifier->purify($review_result['content']); + $score[$person[0]][$key][] = $purifier->purify($parsedown->line($review_result['content'])); } } } @@ -147,7 +149,7 @@ function calcStandings($contest, $contest_data, &$score, &$standings, $update_co $review_result = DB::selectFirst("select content from contests_reviews where contest_id = {$contest['id']} and problem_id = -1 and poster = '{$person[0]}'"); if ($review_result['content']) { - $cur[] = $purifier->purify($review_result['content']); + $cur[] = $purifier->purify($parsedown->line($review_result['content'])); } }