Skip to content

Commit 903bff3

Browse files
committed
Display all languages in the contest in teaminterface
Also limit the languages in case the problem has different languages.
1 parent e761acb commit 903bff3

File tree

3 files changed

+37
-4
lines changed

3 files changed

+37
-4
lines changed

webapp/src/Controller/Team/LanguageController.php

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,25 @@ public function languagesAction(): Response
4040
if (!$languagesEnabled) {
4141
throw new BadRequestHttpException("You are not allowed to view this page.");
4242
}
43+
$languages = [];
4344
$currentContest = $this->dj->getCurrentContest();
44-
/** @var Language[] $languages */
45-
$languages = $this->dj->getAllowedLanguagesForContest($currentContest);
46-
return $this->render('team/languages.html.twig', ['languages' => $languages]);
45+
$limited = false;
46+
foreach ($this->dj->getCurrentContest()->getProblems() as $problem) {
47+
foreach ($problem->getProblem()->getLanguages() as $language) {
48+
$langId = $language->getName();
49+
if (!isset($languages[$langId])) {
50+
$languages[$langId] = ['problems' => [], 'contestlang' => false, 'language' => $language];
51+
}
52+
$languages[$langId]['problems'][] = $problem;
53+
$limited = true;
54+
}
55+
}
56+
foreach ($this->dj->getAllowedLanguagesForContest($currentContest) as $language) {
57+
if (!isset($languages[$language->getName()])) {
58+
$languages[$language->getName()] = ['problems' => [], 'contestlang' => true, 'language' => $language];
59+
}
60+
$languages[$language->getName()]['contestlang'] = true;
61+
};
62+
return $this->render('team/languages.html.twig', ['languages' => $languages, 'limited' => $limited]);
4763
}
4864
}

webapp/src/Controller/Team/SubmissionController.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
use Symfony\Component\HttpFoundation\File\UploadedFile;
2323
use Symfony\Component\HttpFoundation\Request;
2424
use Symfony\Component\HttpFoundation\Response;
25+
use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
2526
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
2627
use Symfony\Component\HttpKernel\KernelInterface;
2728
use Symfony\Component\Routing\Attribute\Route;

webapp/templates/team/languages.html.twig

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@
77

88
<div class="container">
99
<div class="row row-cols-1 row-cols-md-2 row-cols-lg-2 g-2">
10-
{% for lang in languages %}
10+
{% for langarray in languages %}
11+
{% set lang = langarray['language'] %}
12+
{% set problems = langarray['problems'] %}
13+
{% set contestlang = langarray['contestlang'] %}
1114
<div class="col">
1215
<div class="card">
1316
<div class="card-body">
@@ -18,6 +21,19 @@
1821
{% for ext in lang.extensions %}
1922
<code>.{{ ext }}</code>{% if not loop.last %}, {% endif %}
2023
{% endfor %}
24+
</span>
25+
{% if limited %}
26+
<span style="float: right; font-size:50%;">
27+
{% if contestlang %}
28+
<span class="badge problem-badge" style="background-color: #fff; border: 1px solid #000">
29+
<span style="color: #000">All</span>
30+
</span>
31+
{% endif %}
32+
{% for problem in problems %}
33+
{{ problem | problemBadge }}
34+
{% endfor %}
35+
</span>
36+
{% endif %}
2137
</h2>
2238
</div>
2339
{% if lang.compilerVersion and lang.compilerVersionCommand %}

0 commit comments

Comments
 (0)