Skip to content

Commit 2c57c9a

Browse files
author
laurent.abbal
committed
Ajout de la prise en charge des épreuves pratiques 2025 avec mise à jour des titres et des jetons
1 parent f2e607e commit 2c57c9a

File tree

2 files changed

+165
-7
lines changed

2 files changed

+165
-7
lines changed

resources/views/banques/banque-defis.blade.php

Lines changed: 147 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,105 @@
1313
@include('inc-nav')
1414

1515
<?php
16+
$EP25 = [
17+
'[EP25] - 01.1' => 'QJX9',
18+
'[EP25] - 01.2' => 'BUKW',
19+
'[EP25] - 02.1' => '7CE5',
20+
'[EP25] - 02.2' => '8VLB',
21+
'[EP25] - 03.1' => 'AE9Q',
22+
'[EP25] - 03.2' => 'E4KY',
23+
'[EP25] - 04.1' => 'H4RX',
24+
'[EP25] - 04.2' => 'JZ4N',
25+
'[EP25] - 05.1' => '583C',
26+
'[EP25] - 05.2' => 'V5RF',
27+
'[EP25] - 06.1' => 'DY9C',
28+
'[EP25] - 06.2' => 'Q2Z6',
29+
'[EP25] - 07.1' => 'LDQA',
30+
'[EP25] - 07.2' => 'ZS8Q',
31+
'[EP25] - 08.1' => 'SYP7',
32+
'[EP25] - 08.2' => 'NJZB',
33+
'[EP25] - 09.1' => 'ZK7V',
34+
'[EP25] - 09.2' => 'W2DX',
35+
'[EP25] - 10.1' => 'QM6A',
36+
'[EP25] - 10.2' => 'ZGXU',
37+
'[EP25] - 11.1' => 'NHBU',
38+
'[EP25] - 11.2' => 'NBLD',
39+
'[EP25] - 12.1' => '92AD',
40+
'[EP25] - 12.2' => '5MKF',
41+
'[EP25] - 13.1' => 'XSF9',
42+
'[EP25] - 13.2' => 'TUGH',
43+
'[EP25] - 14.1' => 'FAV8',
44+
'[EP25] - 14.2' => 'MZF5',
45+
'[EP25] - 15.1' => '8JM2',
46+
'[EP25] - 15.2' => 'JS5Y',
47+
'[EP25] - 16.1' => '6N9U',
48+
'[EP25] - 16.2' => 'FCNW',
49+
'[EP25] - 17.1' => 'RWBU',
50+
'[EP25] - 17.2' => 'AGH2',
51+
'[EP25] - 18.1' => 'XRQ3',
52+
'[EP25] - 18.2' => 'D476',
53+
'[EP25] - 19.1' => 'KQDX',
54+
'[EP25] - 19.2' => 'MB86',
55+
'[EP25] - 20.1' => 'EH8W',
56+
'[EP25] - 20.2' => 'K2U7',
57+
'[EP25] - 21.1' => 'UYJV',
58+
'[EP25] - 21.2' => '8MRF',
59+
'[EP25] - 22.1' => 'HUCE',
60+
'[EP25] - 22.2' => 'STXC',
61+
'[EP25] - 23.1' => '2CFT',
62+
'[EP25] - 23.2' => 'TJQF',
63+
'[EP25] - 24.1' => 'KW5A',
64+
'[EP25] - 24.2' => '24XR',
65+
'[EP25] - 25.1' => 'WL2D',
66+
'[EP25] - 25.2' => 'KVBG',
67+
'[EP25] - 26.1' => 'X6YA',
68+
69+
'[EP25] - 27.1' => 'KQS6',
70+
'[EP25] - 27.2' => 'HSE6',
71+
'[EP25] - 28.1' => 'TY6H',
72+
'[EP25] - 28.2' => 'CJFD',
73+
'[EP25] - 29.1' => 'PSEB',
74+
'[EP25] - 29.2' => 'TUF7',
75+
'[EP25] - 30.1' => 'EYGQ',
76+
'[EP25] - 30.2' => 'A364',
77+
'[EP25] - 31.1' => '5A93',
78+
'[EP25] - 31.2' => 'DYHV',
79+
'[EP25] - 32.1' => 'BY8L',
80+
'[EP25] - 32.2' => 'RAZ7',
81+
'[EP25] - 33.1' => 'XF8S',
82+
'[EP25] - 33.2' => 'SU8M',
83+
'[EP25] - 34.1' => 'DPQM',
84+
85+
'[EP25] - 35.1' => 'QNGY',
86+
'[EP25] - 35.2' => '5WU9',
87+
'[EP25] - 36.1' => 'LNCK',
88+
'[EP25] - 36.2' => '8M9U',
89+
'[EP25] - 37.1' => 'XPZG',
90+
'[EP25] - 37.2' => '69NE',
91+
'[EP25] - 38.1' => 'CRW7',
92+
'[EP25] - 38.2' => 'GJEB',
93+
'[EP25] - 39.1' => 'GDNR',
94+
'[EP25] - 39.2' => 'S2QL',
95+
'[EP25] - 40.1' => 'XDJ6',
96+
'[EP25] - 40.2' => 'LYA3',
97+
'[EP25] - 41.1' => '587Z',
98+
'[EP25] - 41.2' => '78VM',
99+
'[EP25] - 42.1' => 'Q5LV',
100+
'[EP25] - 42.2' => 'YHSM',
101+
'[EP25] - 43.1' => '5UDP',
102+
'[EP25] - 43.2' => 'H2RX',
103+
'[EP25] - 44.1' => 'N5DT',
104+
'[EP25] - 44.2' => '3PH8',
105+
'[EP25] - 45.1' => '96JH',
106+
'[EP25] - 45.2' => 'HMY7',
107+
'[EP25] - 46.1' => 'M7Q2',
108+
'[EP25] - 46.2' => 'K7P3',
109+
'[EP25] - 47.1' => '4CT6',
110+
'[EP25] - 47.2' => 'MGJP',
111+
'[EP25] - 48.1' => 'D947',
112+
'[EP25] - 48.2' => '63YK',
113+
];
114+
16115
$EP24 = [
17116
'EP24-01.1' => 'DH83G',
18117
'EP24-01.2' => 'DF8PT',
@@ -203,6 +302,13 @@
203302
$defis = array_merge($EP24, $EP23, $autres);
204303
205304
// JETONS
305+
// EP24
306+
$jetons_EP25 = "";
307+
foreach ($EP25 AS $titre => $jeton) {
308+
$jetons_EP25 .= $jeton . ',';
309+
}
310+
$jetons_EP25 = rtrim($jetons_EP25, ',');
311+
206312
// EP24
207313
$jetons_EP24 = "";
208314
foreach ($EP24 AS $titre => $jeton) {
@@ -233,6 +339,29 @@
233339

234340
<h1>Banque de défis</h1>
235341

342+
<div class="text-monospace mb-4"style="border:solid 1px silver;padding:10px;border-radius:4px;">
343+
<b>ÉPREUVE PRATIQUE 2025</b>
344+
<div class="mb-1">
345+
Liste des sujets de l'épreuve pratique de 2025 à intégrer dans une <a href="/classe-creer" target="_blank">classe</a> pour proposer des entraînements aux élèves et <a href="/#classe" target="_blank">suivre leur progression</a>. Cocher ou décocher les sujets afin de générer une liste à ajouter dans une classe. Si un sujet est déjà présent dans la classe, il n'est pas ajouté une deuxième fois.
346+
</div>
347+
<div class="mb-2 text-danger">Remarque: il manque le 12.2 et le 26.2</div>
348+
<div class="small">
349+
@foreach($EP25 as $titre => $jeton)
350+
<div class="form-check form-check-inline">
351+
<input class="form-check-input" type="checkbox" id="{{ $titre }}" data-ep25="{{ $jeton }}" checked>
352+
<label class="form-check-label" for="{{ $titre }}">{{ substr($titre, -4) }}</label>
353+
</div>
354+
@endforeach
355+
</div>
356+
<div class="ml-1 mt-3">Codes sélectionnés:</div>
357+
<textarea id="codes_ep25" class="form-control mb-2" rows="6">{{$jetons_EP25}}</textarea>
358+
359+
@foreach($EP25 as $titre => $jeton)
360+
<div class="small pl-2 pr-3" style="float:left;">{{$titre}}: <a href="https://www.codepuzzle.io/{{$jeton}}" target="_blank">www.codepuzzle.io/{{$jeton}}</a></div>
361+
@endforeach
362+
<br style="clear:both;"/>
363+
</div>
364+
236365
<div class="text-monospace mb-4"style="border:solid 1px silver;padding:10px;border-radius:4px;">
237366
<b>ÉPREUVE PRATIQUE 2024</b>
238367
<div class="mb-1">
@@ -254,7 +383,6 @@
254383
<div class="small pl-2 pr-3" style="float:left;">{{$titre}}: <a href="https://www.codepuzzle.io/{{$jeton}}" target="_blank">www.codepuzzle.io/{{$jeton}}</a></div>
255384
@endforeach
256385
<br style="clear:both;"/>
257-
258386
</div>
259387

260388
<div class="text-monospace mb-4"style="border:solid 1px silver;padding:10px;border-radius:4px;">
@@ -412,6 +540,24 @@ function mastodon(item) {
412540
<script type="text/javascript" id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
413541

414542
<script>
543+
document.addEventListener('DOMContentLoaded', function() {
544+
var checkboxes = document.querySelectorAll('input[type="checkbox"][data-ep25]');
545+
checkboxes.forEach(function(checkbox) {
546+
checkbox.addEventListener('change', function() {
547+
updateCodesEP25();
548+
});
549+
});
550+
});
551+
552+
function updateCodesEP25() {
553+
var selectedCodes = [];
554+
var checkboxes = document.querySelectorAll('input[type="checkbox"][data-ep25]:checked');
555+
checkboxes.forEach(function(checkbox) {
556+
selectedCodes.push(checkbox.getAttribute('data-ep25'));
557+
});
558+
document.getElementById('codes_ep25').textContent = selectedCodes.join(',');
559+
}
560+
415561
document.addEventListener('DOMContentLoaded', function() {
416562
var checkboxes = document.querySelectorAll('input[type="checkbox"][data-ep24]');
417563
checkboxes.forEach(function(checkbox) {

routes/web.php

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -339,26 +339,26 @@
339339
'43' => '28', '44' => '24', '45' => '46', '46' => '10', '47' => '35', '48' => '01'
340340
];
341341

342-
// Sélection des articles concernés
342+
// Sélection des défis 2024
343343
$articles = Defi::where('user_id', 1)
344-
->where('titre_enseignant', 'like', '%[EP23]%')
344+
->where('titre_enseignant', 'like', '%[EP24] - %')
345345
->get();
346346

347347
foreach ($articles as $article) {
348348

349-
$newTitle = preg_replace_callback('/\[EP23\] - (\d{2})\.(1|2)/', function ($matches) use ($conversion) {
349+
$newTitle = preg_replace_callback('/\[EP24\] - (\d{2})\.(1|2)/', function ($matches) use ($conversion) {
350350
$oldNumber = $matches[1]; // Nombre avant le point (ex: '04')
351351
$decimal = $matches[2]; // Partie après le point (ex: '1')
352352
// Remplacer le nombre avant le point selon la conversion
353353
$newNumber = $conversion[$oldNumber] ?? $oldNumber;
354354
// Retourner le nouveau titre avec la partie décimale inchangée
355355

356356
return "[EP25] - {$newNumber}.{$decimal}";
357-
}, $article->title);
357+
}, $article->titre_enseignant);
358358

359359
// Mise à jour du titre
360-
if ($newTitle !== $article->title) {
361-
echo $newTitle . "<br />";
360+
if ($newTitle !== $article->titre_enseignant) {
361+
//echo $newTitle . "<br />";
362362
/*
363363
do {
364364
$codeError = '';
@@ -394,6 +394,18 @@
394394
*/
395395
}
396396
}
397+
398+
399+
// Sélection des défis 2025 pour faire la liste des jetons
400+
$articles = Defi::where('user_id', 1)
401+
->where('titre_enseignant', 'like', '%[EP25] - %')
402+
->orderBy('titre_enseignant')
403+
->get();
404+
foreach ($articles as $article) {
405+
// 'EP25-41.1' => 'DWXMF',
406+
echo "'" . $article->titre_enseignant . "' => '" . strtoupper($article->jeton) . "',<br />";
407+
408+
}
397409

398410
return "Mise à jour terminée !";
399411
})->middleware('auth');

0 commit comments

Comments
 (0)