1
1
<?php
2
- $devoir = App \Models \Devoir:: where (' jeton_secret' , $jeton_secret )-> first ();
3
- if (! $devoir ) {
4
- echo " <pre>Ce devoir n'existe pas</pre>" ;
5
- exit ();
2
+ if (isset ($jeton_secret )) {
3
+ $devoir = App \Models \Devoir:: where (' jeton_secret' , $jeton_secret )-> first ();
4
+ if (! $devoir ) {
5
+ echo " <pre>Ce devoir n'existe pas.</pre>" ;
6
+ exit ();
7
+ } else {
8
+ if ($devoir -> user_id !== 0 && (! Auth:: check () || (Auth:: check () && Auth:: id () !== $devoir -> user_id ))) {
9
+ echo " <pre>Vous devez vous connecter pour accéder à ce devoir.</pre>" ;
10
+ exit ();
11
+ }
12
+ $copies = App \Models \Copie:: where (' jeton_devoir' , $devoir -> jeton )-> orderBy (' pseudo' )-> get ();
13
+ $sujet = App \Models \Sujet:: find ($devoir -> sujet_id );
14
+ $sujet_json = json_decode ($sujet -> sujet );
15
+ $page_devoir_console = true ;
16
+ }
6
17
}
7
- $copies = App \Models \Copie:: where (' jeton_devoir' , $devoir -> jeton )-> orderBy (' pseudo' )-> get ();
8
- $sujet = App \Models \Sujet:: find ($devoir -> sujet_id );
9
- $sujet_json = json_decode ($sujet -> sujet );
10
- $page_devoir_console = true ;
11
18
? >
12
19
<!doctype html>
13
20
<html lang =" fr" >
14
21
<head >
15
22
@include (' inc-meta' )
16
-
17
23
<meta name =" robots" content =" noindex" >
18
-
19
24
<title >DEVOIR | {{ $devoir -> jeton } } | CONSOLE</title >
20
25
</head >
21
26
<body >
22
27
23
- @include (' inc-nav' )
28
+ @if (Auth:: check () )
29
+ @include (' inc-nav-console' )
30
+ @else
31
+ @include (' inc-nav' )
32
+ @endif
24
33
25
- <div class =" container" >
26
- <div class =" row pt-3 " >
34
+ <div class =" container mt-4 " >
35
+ <div class =" row" >
27
36
28
37
<div class =" col-md-2 text-right pb-5" >
29
38
@if (Auth:: check () )
34
43
@endif
35
44
</div >
36
45
37
- <div class =" col-md-10 pl-4 pr-4 " >
46
+ <div class =" col-md-10" >
38
47
39
48
<h1 class =" text-center" >DEVOIR</h1 >
40
49
41
- <div class =" row" >
42
-
43
- <div class =" col-md-12 text-monospace p-2 pl-3 pr-3 mb-3" style =" border :dashed 2px #e3342f ;border-radius :8px ;" >
44
-
45
- @if (isset ($_GET [' i' ]) AND ! Auth:: check () )
46
- <div class =" text-monospace text-danger text-center font-weight-bold m-2" >SAUVEGARDEZ LES INFORMATIONS CI-DESSOUS AVANT DE QUITTER CETTE PAGE</div >
47
- @endif
48
-
49
- <div class =" row justify-content-md-center" >
50
- @if ($devoir -> user_id == 0 OR ! Auth:: check () )
51
- <div class =" col-md-auto" >
52
- <div class =" text-center font-weight-bold small" >lien secret</div >
53
- <div class =" text-center rounded bg-danger text-white p-3" ><a href =" /devoir-console/{{ strtoupper ($devoir -> jeton_secret )} }" target =" _blank" class =" text-white font-weight-bold" >www.codepuzzle.io/devoir-console/{{ strtoupper ($devoir -> jeton_secret )} } </a ></div >
54
- <div class =" small text-muted pt-1" ><span class =" text-danger" ><i class =" fas fa-exclamation-circle" ></i > Ne pas partager ce lien</span ><br />Il permet d'accéder à la console du devoir (sujet, lien pour les élèves, correction...).</div >
55
- </div >
56
- @endif
57
- <div class =" col-md-auto" >
58
- <div class =" text-center font-weight-bold small" >code secret</div >
59
- <div class =" text-center border border-danger rounded text-danger font-weight-bold p-3" >{{ $devoir -> mot_secret } } </div >
60
- <div class =" small text-muted pt-1" ><span class =" text-danger" ><i class =" fas fa-exclamation-circle" ></i > Ne pas partager ce code</span ><br />Il permet de déverrouiller la copie d'un élève</div >
50
+ @if ($devoir -> user_id == 0 OR ! Auth:: check () )
51
+ <div class =" row" >
52
+ <div class =" col-md-12" >
53
+ <div class =" text-monospace p-2 pl-3 pr-3 mb-3" style =" border :dashed 2px #e3342f ;border-radius :8px ;" >
54
+ @if (isset ($_GET [' i' ]) AND ! Auth:: check () )
55
+ <div class =" text-monospace text-danger text-center font-weight-bold m-2" >SAUVEGARDEZ LES INFORMATIONS CI-DESSOUS AVANT DE QUITTER CETTE PAGE</div >
56
+ @endif
57
+ <div class =" row" >
58
+ <div class =" col-md-12" >
59
+ <div class =" text-center font-weight-bold small" >lien secret</div >
60
+ <div class =" text-center rounded bg-danger text-white p-3" >
61
+ <a id =" lien_secret" href =" /devoir-console/{{ strtoupper ($devoir -> jeton_secret )} }" target =" _blank" class =" text-white font-weight-bold" >www.codepuzzle.io/devoir-console/{{ strtoupper ($devoir -> jeton_secret )} } </a >
62
+ <div class =" pl-1 text-light small" onclick =" copier('lien_secret', this)" style =" cursor :pointer ;width :20px ;display :inline-block ;" ><i class =" fa-regular fa-clone" ></i ></div >
63
+ </div >
64
+ <div class =" small text-muted pt-1" ><span class =" text-danger" ><i class =" fas fa-exclamation-circle" ></i > Ne pas partager ce lien. Il permet de revenir sur cette page.</div >
65
+ </div >
66
+ </div >
61
67
</div >
62
68
</div >
63
-
64
69
</div >
65
- </ div >
70
+ @endif
66
71
67
- <div class =" mt-2 mb-4" >
68
- <div class =" text-center small text-muted p-0" >lien à fournir aux élèves</div >
69
- <div class =" text-center font-weight-bold text-monospace" >
70
- <a id =" lien" href =" /E{{ strtoupper ($devoir -> jeton )} }" target =" _blank" class =" text-dark" style =" font-size :24px " >www.codepuzzle.io/E{{ strtoupper ($devoir -> jeton )} } </a >
71
- </div >
72
- <div class =" text-center" >
73
- <span class =" pr-1" onclick =" fullscreen('fullscreen')" style =" cursor :pointer ;" ><i class =" fas fa-expand" ></i ></span >
74
- <div id =" fullscreen" class =" bg-white text-center" style =" display :none " >
75
- <br /><br /><br /><br /><br /><br />
76
- <img src =" {{ asset (' img/code-puzzle.png' ) } }" width =" 200" />
77
- <br /><br /><br /><br /><br /><br /><br /><br />
78
- <div class =" text-monospace text-dark font-weight-bold" style =" font-size :5vw ;" >www.codepuzzle.io/E{{ strtoupper ($devoir -> jeton ) } } </div >
79
- </div >
72
+ <div class =" row" >
73
+
74
+ <div class =" col-md-12" >
75
+ <div class =" text-monospace pt-2 pl-3 pr-3 pb-3 mb-3" style =" background-color :#dae0e5 ;border-radius :6px ;" >
76
+
77
+ <div >
78
+ <span class =" text-center small text-muted p-0" style =" vertical-align :2px ;" ><i class =" fa-solid fa-share" ></i > Lien à fournir aux élèves: </span >
79
+ <span class =" text-center font-weight-bold text-monospace" >
80
+ <a id =" lien" href =" /E{{ strtoupper ($devoir -> jeton )} }" target =" _blank" class =" text-dark" style =" font-size :24px " >www.codepuzzle.io/E{{ strtoupper ($devoir -> jeton )} } </a >
81
+ </span >
82
+ <span class =" pl-3" >
83
+ <button onclick =" fullscreen('fullscreen')" type =" button" class =" btn btn-light btn-sm" style =" vertical-align :4px ;" ><i class =" fas fa-expand" ></i ></button >
84
+ <div id =" fullscreen" class =" bg-white text-center" style =" display :none " >
85
+ <br /><br /><br /><br /><br /><br />
86
+ <img src =" {{ asset (' img/code-puzzle.png' ) } }" width =" 200" />
87
+ <br /><br /><br /><br /><br /><br /><br /><br />
88
+ <div class =" text-monospace text-dark font-weight-bold" style =" font-size :5vw ;" >www.codepuzzle.io/E{{ strtoupper ($devoir -> jeton ) } } </div >
89
+ </div >
90
+ <button onclick =" copier('lien', this)" type =" button" class =" btn btn-light btn-sm" style =" vertical-align :4px ;" ><i class =" fa-regular fa-clone" ></i ></button >
91
+ </span >
92
+ </div >
93
+
94
+ <div >
95
+ <span class =" text-center small text-muted p-0" ><i class =" fa-solid fa-share" ></i > Code secret<sup class =" pl-1" data-toggle =" tooltip" data-placement =" bottom" title =" Ne pas partager ce code. Il permet de déverrouiller la copie d'un élève" ><i class =" fas fa-exclamation-circle" ></i ></sup >: </span >
96
+ <span id =" code_secret" class =" text-danger font-weight-bold" >{{ $devoir -> mot_secret } } </span >
97
+ <span onclick =" copier('code_secret', this)" class =" small text-muted" style =" vertical-align :2px ;cursor :pointer " ><i class =" fa-regular fa-clone" ></i ></span >
98
+ </div >
80
99
81
- <span class =" pl-1" onclick =" copier('lien')" style =" cursor :pointer ;" ><i class =" fa-regular fa-copy" ></i ></span >
82
- <div id =" lien_copie_confirmation" class =" text-center small text-monospace text muted" >  ; </div >
100
+ </div >
83
101
</div >
84
102
85
103
</div >
98
116
<div class =" markdown_content" style =" padding :20px ;border :solid 1px #DBE0E5 ;border-radius :4px ;background-color :#f3f5f7 ;border-radius :4px ;" >{{ $devoir -> consignes_eleve } } </div >
99
117
@endif
100
118
101
- <div class =" mt-3 mb-1 text-monospace" >{{ strtoupper (__ (' copies' ))} } </div >
119
+ <div class =" mt-5 mb-1 text-monospace" >{{ strtoupper (__ (' copies' ))} } </div >
102
120
@if ($copies -> isNotEmpty () )
103
121
<div class =" row mb-5" >
104
122
<div class =" col-md-12" >
169
187
</div >
170
188
@endif
171
189
172
- @if ($copies -> where (' revised' , 1 )-> count () != 0 )
173
- <div class =" mt-2 mb-1 text-monospace" >{{ strtoupper (__ (" comptes-rendus" ))} } </div >
174
- <div class =" row" >
175
- <div class =" col-md-12" >
190
+ <!-- COMPTES-RENDUS -->
191
+ <div class =" mt-2 mb-1 text-monospace" >{{ strtoupper (__ (" comptes-rendus" ))} } </div >
192
+ <div class =" row" >
193
+ <div class =" col-md-12" >
194
+ @if ($copies -> where (' revised' , 1 )-> count () != 0 )
176
195
<ul class =" list-group text-monospace" >
177
-
178
196
@foreach ($copies as $copie )
179
197
@if ($copie -> revised == 1 )
180
198
<li class =" list-group-item" >
185
203
</li >
186
204
@endif
187
205
@endforeach
188
-
189
206
</ul >
190
207
<div class =" mt-1" >
191
208
<a class =" btn btn-dark btn-sm" href =" /devoir-imprimer/{{ Crypt:: encryptString ($devoir -> id ) } }" role =" button" ><i class =" fa-solid fa-print mr-2" ></i > imprimer les comptes-rendus</a >
192
209
<span class =" text-muted small" >pour les annoter à la main si nécessaire et les distribuer aux élèves</span >
193
210
</div >
194
- </div >
195
- </div >
196
- @endif
211
+ @else
212
+ <div class =" text-monospace small text-muted" >Pas de copie corrigée pour l'instant.</div >
213
+ @endif
214
+ </div >
215
+ </div >
216
+ <!-- /COMPTES-RENDUS -->
217
+
197
218
198
219
<div class =" pt-5 mb-1 text-monospace" >{{ strtoupper (__ (" sujet" ))} } </div >
199
220
<!-- SUJET -->
211
232
212
233
{{-- == Copie lien ======================================================= --}}
213
234
<script >
214
- function copier (id ) {
235
+ function copier (id , element ) {
215
236
var texte = document .getElementById (id).textContent ;
216
237
if (! navigator .clipboard ) {
217
238
// Alternative pour les navigateurs ne prenant pas en charge navigator.clipboard
@@ -230,20 +251,24 @@ function copier(id) {
230
251
// Gérer les erreurs éventuelles
231
252
// alert("Impossible de copier le texte dans le presse-papiers. Veuillez le faire manuellement.");
232
253
});
233
-
234
- var status = document .getElementById (id+ ' _copie_confirmation' );
235
- status .innerText = " copié" ;
236
-
237
- status .style .opacity = ' 1' ;
254
+
255
+ let icon = element .innerHTML ;
256
+ element .style .opacity = ' 0.2' ;
257
+ element .innerHTML = ' <i class="fa-solid fa-check"></i>' ;
238
258
var fadeOutInterval = setInterval (function () {
239
- var opacity = parseFloat (status .style .opacity );
240
- if (opacity <= 0 ) {
259
+ var opacity = parseFloat (element .style .opacity );
260
+ if (opacity == 1 ) {
241
261
clearInterval (fadeOutInterval);
242
- status .innerHTML = " " ; // Effacer le texte après l'animation
243
262
} else {
244
- status .style .opacity = (opacity - 0.1 ).toString ();
263
+ if (opacity > 0.8 ){
264
+ element .blur ();
265
+ element .innerHTML = icon;
266
+ }
267
+ element .style .opacity = (opacity + 0.1 ).toString ();
245
268
}
246
- }, 150 );
269
+ }, 200 );
270
+
271
+ console .log (' copied' );
247
272
}
248
273
</script >
249
274
{{-- == /Copie lien ====================================================== --}}
0 commit comments