From 903bff3d2908ed1cc0f089bab14fe5288b70ba0a Mon Sep 17 00:00:00 2001 From: Michael Vasseur <14887731+vmcj@users.noreply.github.com> Date: Sat, 1 Nov 2025 13:43:32 +0100 Subject: [PATCH 1/6] Display all languages in the contest in teaminterface Also limit the languages in case the problem has different languages. --- .../Controller/Team/LanguageController.php | 22 ++++++++++++++++--- .../Controller/Team/SubmissionController.php | 1 + webapp/templates/team/languages.html.twig | 18 ++++++++++++++- 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/webapp/src/Controller/Team/LanguageController.php b/webapp/src/Controller/Team/LanguageController.php index a03bc4e8fe..a8a3a1a402 100644 --- a/webapp/src/Controller/Team/LanguageController.php +++ b/webapp/src/Controller/Team/LanguageController.php @@ -40,9 +40,25 @@ public function languagesAction(): Response if (!$languagesEnabled) { throw new BadRequestHttpException("You are not allowed to view this page."); } + $languages = []; $currentContest = $this->dj->getCurrentContest(); - /** @var Language[] $languages */ - $languages = $this->dj->getAllowedLanguagesForContest($currentContest); - return $this->render('team/languages.html.twig', ['languages' => $languages]); + $limited = false; + foreach ($this->dj->getCurrentContest()->getProblems() as $problem) { + foreach ($problem->getProblem()->getLanguages() as $language) { + $langId = $language->getName(); + if (!isset($languages[$langId])) { + $languages[$langId] = ['problems' => [], 'contestlang' => false, 'language' => $language]; + } + $languages[$langId]['problems'][] = $problem; + $limited = true; + } + } + foreach ($this->dj->getAllowedLanguagesForContest($currentContest) as $language) { + if (!isset($languages[$language->getName()])) { + $languages[$language->getName()] = ['problems' => [], 'contestlang' => true, 'language' => $language]; + } + $languages[$language->getName()]['contestlang'] = true; + }; + return $this->render('team/languages.html.twig', ['languages' => $languages, 'limited' => $limited]); } } diff --git a/webapp/src/Controller/Team/SubmissionController.php b/webapp/src/Controller/Team/SubmissionController.php index 9957883054..f8dc4bdac8 100644 --- a/webapp/src/Controller/Team/SubmissionController.php +++ b/webapp/src/Controller/Team/SubmissionController.php @@ -22,6 +22,7 @@ use Symfony\Component\HttpFoundation\File\UploadedFile; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\HttpKernel\KernelInterface; use Symfony\Component\Routing\Attribute\Route; diff --git a/webapp/templates/team/languages.html.twig b/webapp/templates/team/languages.html.twig index 57ce0d361f..c5599e8715 100644 --- a/webapp/templates/team/languages.html.twig +++ b/webapp/templates/team/languages.html.twig @@ -7,7 +7,10 @@
.{{ ext }}{% if not loop.last %}, {% endif %}
{% endfor %}
+
+ {% if limited %}
+
+ {% if contestlang %}
+
+ All
+
+ {% endif %}
+ {% for problem in problems %}
+ {{ problem | problemBadge }}
+ {% endfor %}
+
+ {% endif %}
.{{ ext }}{% if not loop.last %}, {% endif %}
{% endfor %}
- {% if limited %}
-
- {% for problem in problems %}
- {{ problem | problemBadge }}
- {% endfor %}
-
- {% endif %}
+ {% if limited %}
+
+ {% for problem in problems %}
+ {{ problem | problemBadge }}
+ {% endfor %}
+
+ {% endif %}
$ {{ lang.compilerVersionCommand }}
From e77eec33aa023db67ac9d7a94337320c86a26124 Mon Sep 17 00:00:00 2001
From: Michael Vasseur <14887731+vmcj@users.noreply.github.com>
Date: Sat, 8 Nov 2025 13:38:24 +0100
Subject: [PATCH 4/6] Fix indentation
---
webapp/templates/team/languages.html.twig | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/webapp/templates/team/languages.html.twig b/webapp/templates/team/languages.html.twig
index 042a0f94b5..96b2de255c 100644
--- a/webapp/templates/team/languages.html.twig
+++ b/webapp/templates/team/languages.html.twig
@@ -23,11 +23,11 @@
{% if limited %}
-
- {% for problem in problems %}
- {{ problem | problemBadge }}
- {% endfor %}
-
+
+ {% for problem in problems %}
+ {{ problem | problemBadge }}
+ {% endfor %}
+
{% endif %}