Commit 4aee2d63f578a0bc619b40c7c81b46b3f4b749c6

Authored by Miguel Barão
1 parent 1fa9c011
Exists in master and in 1 other branch dev

update html templates to latest bootstrap5

replace fontawesome by bootstrap-icons
cosmetic changes
perguntations/static/fontawesome-free
@@ -1 +0,0 @@ @@ -1 +0,0 @@
1 -../../node_modules/@fortawesome/fontawesome-free/  
2 \ No newline at end of file 0 \ No newline at end of file
perguntations/templates/grade.html
@@ -33,13 +33,14 @@ @@ -33,13 +33,14 @@
33 33
34 <ul class="nav navbar-nav mx-auto"> 34 <ul class="nav navbar-nav mx-auto">
35 <li class="nav-item"> 35 <li class="nav-item">
36 - <span class="navbar-text">{{ t['title'] }}</span> 36 + <span class="navbar-text">Resultado</span>
37 </li> 37 </li>
38 </ul> 38 </ul>
39 39
40 <ul class="nav navbar-nav"> 40 <ul class="nav navbar-nav">
41 <li class="nav-item"> 41 <li class="nav-item">
42 <span class="navbar-text"> 42 <span class="navbar-text">
  43 + <i class="bi bi-person-fill"></i>
43 <span id="name">{{ escape(name) }}</span> 44 <span id="name">{{ escape(name) }}</span>
44 (<span id="number">{{ escape(uid) }}</span>) 45 (<span id="number">{{ escape(uid) }}</span>)
45 </span> 46 </span>
@@ -49,22 +50,56 @@ @@ -49,22 +50,56 @@
49 </div> 50 </div>
50 </nav> 51 </nav>
51 <!-- ================================================================== --> 52 <!-- ================================================================== -->
52 - <div class="container">  
53 - <div class="bg-light p-3"> 53 +<div class="container">
  54 + <div class="card">
  55 + <h5 class="card-header">{{ t['title'] }}</h5>
  56 + <div class="card-body">
  57 + <div class="row">
  58 + <label for="nome" class="col-3">Nome:</label>
  59 + <div class="col-9" id="nome">{{ escape(name) }}</div>
  60 + </div>
  61 + <div class="row">
  62 + <label for="numero" class="col-3">Número:</label>
  63 + <div class="col-9" id="numero">{{ escape(uid) }}</div>
  64 + </div>
  65 + <div class="row">
  66 + <label for="duracao" class="col-3">Duração:</label>
  67 + <div class="col-9" id="duracao">{{ str(t['duration'])+' minutos' if t['duration'] > 0 else 'sem limite de tempo' }}</div>
  68 + </div>
  69 + <div class="row">
  70 + <label for="submissao" class="col-3">Submissão:</label>
  71 + <div class="col-9" id="submissao">{{ 'automática no fim do tempo' if t['autosubmit'] else 'manual' }}</div>
  72 + </div>
  73 + <div class="row">
  74 + <label for="start_time" class="col-3">Início:</label>
  75 + <div class="col-9 font-monospace" id="start_time">{{ t['start_time'] }}</div>
  76 + </div>
  77 + <div class="row">
  78 + <label for="finish_time" class="col-3">Fim:</label>
  79 + <div class="col-9 font-monospace" id="finish_time">{{ t['finish_time'] }}</div>
  80 + </div>
  81 + </div>
  82 + <div class="card-footer">
54 {% if t['state'] == 'CORRECTED' %} 83 {% if t['state'] == 'CORRECTED' %}
55 - <h3>Nota: <strong>{{ f'{round(t["grade"], 3)}' }}</strong> valores</h3> 84 + <div class="row">
  85 + <label for="nota" class="col-3">Nota:</label>
  86 + <div class="col-9" id="nota">
  87 + <strong>{{ f'{round(t["grade"], 3)}' }}</strong> valores
  88 + </div>
  89 + </div>
56 {% elif t['state'] == 'SUBMITTED' %} 90 {% elif t['state'] == 'SUBMITTED' %}
57 - <h3>A prova foi submetida com sucesso. Vai ser corrigida mais tarde.</h3> 91 + A prova foi submetida com sucesso. Vai ser corrigida mais tarde.
58 {% elif t['state'] == 'QUIT' %} 92 {% elif t['state'] == 'QUIT' %}
59 - <h3>Foi registada a sua desistência da prova.</h3> 93 + Foi registada a sua desistência da prova.
60 {% end %} 94 {% end %}
61 -  
62 - <p>  
63 - <a href="/logout" class="btn btn-primary btn-lg active" role="button">  
64 - Sair  
65 - </a>  
66 - </p>  
67 - </div> <!-- panel -->  
68 - </div> <!-- container --> 95 + </div>
  96 + </div> <!-- card -->
  97 + <div class="d-grid gap-2">
  98 + <a href="/logout" class="btn btn-primary btn-lg active" role="button">
  99 + Sair do teste
  100 + </a>
  101 + <!-- <button class="btn btn-primary" type="button">Button</button> -->
  102 + </div>
  103 +</div> <!-- container -->
69 </body> 104 </body>
70 </html> 105 </html>
perguntations/templates/question.html
@@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
4 <div class="card border-dark"> 4 <div class="card border-dark">
5 <h5 class="card-header text-white bg-dark"> 5 <h5 class="card-header text-white bg-dark">
6 {{ q['number'] }}. {{ q['title'] }} 6 {{ q['number'] }}. {{ q['title'] }}
7 - <div class="float-right"> 7 + <div class="float-end">
8 <small>Classificar&nbsp;</small> 8 <small>Classificar&nbsp;</small>
9 <input type="checkbox" class="question_disabler" data-size="mini" name="answered-{{i}}" id="answered-{{i}}" checked=""> 9 <input type="checkbox" class="question_disabler" data-size="mini" name="answered-{{i}}" id="answered-{{i}}" checked="">
10 </div> 10 </div>
@@ -16,7 +16,7 @@ @@ -16,7 +16,7 @@
16 16
17 {% block answer %}{% end %} 17 {% block answer %}{% end %}
18 18
19 - <p class="text-right"> 19 + <p class="text-end">
20 <small> 20 <small>
21 {% if q['type'] == 'radio' %} 21 {% if q['type'] == 'radio' %}
22 (Cotação: {{ -round(q['points']/(len(q['options'])-1), 2) }} a {{ round(q['points'], 2) }} pontos) 22 (Cotação: {{ -round(q['points']/(len(q['options'])-1), 2) }} a {{ round(q['points'], 2) }} pontos)
perguntations/templates/review-question-checkbox.html
@@ -15,13 +15,13 @@ @@ -15,13 +15,13 @@
15 {{ md(opt) }} 15 {{ md(opt) }}
16 </div> 16 </div>
17 <div class="ms-auto p-2"> 17 <div class="ms-auto p-2">
18 - <div class="text-end"> 18 + <h3>
19 {% if q['correct'][n] > 0 %} 19 {% if q['correct'][n] > 0 %}
20 - <i class="bi bi-check-lg text-success"></i> 20 + <i class="bi bi-check-lg text-success"></i>
21 {% else %} 21 {% else %}
22 - <i class="bi bi-x-lg text-danger"></i> 22 + <i class="bi bi-x-lg text-danger"></i>
23 {% end %} 23 {% end %}
24 - </div> 24 + </h3>
25 </div> 25 </div>
26 26
27 {% else %} 27 {% else %}
@@ -32,13 +32,13 @@ @@ -32,13 +32,13 @@
32 {{ md(opt) }} 32 {{ md(opt) }}
33 </div> 33 </div>
34 <div class="ms-auto p-2"> 34 <div class="ms-auto p-2">
35 - <div class="text-end">  
36 - {% if q['correct'][n] > 0 %} 35 + <h3>
  36 + {% if q['correct'][n] > 0 %}
37 <i class="bi bi-x-lg text-danger"></i> 37 <i class="bi bi-x-lg text-danger"></i>
38 - {% else %} 38 + {% else %}
39 <i class="bi bi-check-lg text-success"></i> 39 <i class="bi bi-check-lg text-success"></i>
40 - {% end %}  
41 - </div> 40 + {% end %}
  41 + </h3>
42 </div> 42 </div>
43 {% end %} 43 {% end %}
44 </div> 44 </div>
perguntations/templates/review-question-radio.html
@@ -9,17 +9,19 @@ @@ -9,17 +9,19 @@
9 <div class="d-flex flex-row"> 9 <div class="d-flex flex-row">
10 {% if q['answer'] is not None and str(n)==q['answer'] %} 10 {% if q['answer'] is not None and str(n)==q['answer'] %}
11 <div class="p-2"> 11 <div class="p-2">
12 - <i class="bi bi-record-circle"></i> 12 + <i class="bi bi-record-circle-fill"></i>
13 </div> 13 </div>
14 <div class="p-2"> 14 <div class="p-2">
15 {{ md(opt) }} 15 {{ md(opt) }}
16 </div> 16 </div>
17 <div class="ms-auto p-2"> 17 <div class="ms-auto p-2">
  18 + <h3>
18 {% if q['correct'][n] > 0 %} 19 {% if q['correct'][n] > 0 %}
19 <i class="bi bi-check-lg text-success"></i> 20 <i class="bi bi-check-lg text-success"></i>
20 {% else %} 21 {% else %}
21 <i class="bi bi-x-lg text-danger"></i> 22 <i class="bi bi-x-lg text-danger"></i>
22 {% end %} 23 {% end %}
  24 + </h3>
23 </div> 25 </div>
24 26
25 {% else %} 27 {% else %}
@@ -31,7 +33,9 @@ @@ -31,7 +33,9 @@
31 </div> 33 </div>
32 <div class="ms-auto p-2"> 34 <div class="ms-auto p-2">
33 {% if q['correct'][n] > 0 %} 35 {% if q['correct'][n] > 0 %}
  36 + <h3>
34 <i class="bi bi-arrow-left text-info"></i> 37 <i class="bi bi-arrow-left text-info"></i>
  38 + </h3>
35 {% end %} 39 {% end %}
36 </div> 40 </div>
37 {% end %} 41 {% end %}
perguntations/templates/review-question.html
@@ -3,12 +3,12 @@ @@ -3,12 +3,12 @@
3 {% block question %} 3 {% block question %}
4 {% if q['answer'] is not None %} 4 {% if q['answer'] is not None %}
5 5
6 - <div class="card border-dark mb-3">  
7 - <h5 class="card-header text-white bg-dark"> 6 + <div class="card border-dark">
  7 + <h5 class="card-header text-light bg-dark">
8 {{ q['number'] }}. {{ q['title'] }} 8 {{ q['number'] }}. {{ q['title'] }}
9 <div class="float-end"> 9 <div class="float-end">
10 - <small>Classificada&nbsp;</small>  
11 - <i class="bi bi-toggle2-on"></i> 10 + <small>Classificar&nbsp;</small>
  11 + <i class="bi bi-check-square"></i>
12 </div> 12 </div>
13 </h5> <!-- card-header --> 13 </h5> <!-- card-header -->
14 14
@@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
19 19
20 {% block answer %}{% end %} 20 {% block answer %}{% end %}
21 21
22 - <p class="text-right"> 22 + <p class="text-end">
23 <small> 23 <small>
24 {% if q['type'] == 'radio' %} 24 {% if q['type'] == 'radio' %}
25 (Cotação: {{ -round(q['points']/(len(q['options'])-1), 2) }} a {{ round(q['points'], 2) }} pontos) 25 (Cotação: {{ -round(q['points']/(len(q['options'])-1), 2) }} a {{ round(q['points'], 2) }} pontos)
@@ -35,7 +35,7 @@ @@ -35,7 +35,7 @@
35 {% if 'grade' in q %} 35 {% if 'grade' in q %}
36 <div class="card-footer"> 36 <div class="card-footer">
37 {% if q['grade'] > 0.999 %} 37 {% if q['grade'] > 0.999 %}
38 - <h1 class="text-success"><i class="bi bi-hand-thumbs-up"></i></h1> 38 + <h1 class="text-success"><i class="bi bi-hand-thumbs-up-fill"></i></h1>
39 <p class="text-success"> 39 <p class="text-success">
40 {{ round(q['grade'] * q['points'], 2) }} pontos 40 {{ round(q['grade'] * q['points'], 2) }} pontos
41 </p> 41 </p>
@@ -73,12 +73,12 @@ @@ -73,12 +73,12 @@
73 73
74 {% else %} 74 {% else %}
75 75
76 - <div class="card border-secondary mb-3">  
77 - <h5 class="card-header text-white bg-secondary"> 76 + <div class="card border-secondary">
  77 + <h5 class="card-header text-secondary bg-light">
78 {{ q['number'] }}. {{ q['title'] }} 78 {{ q['number'] }}. {{ q['title'] }}
79 <div class="float-end"> 79 <div class="float-end">
80 - <small>Não classificada</small>  
81 - <i class="bi bi-toggle2-off"></i> 80 + <small>Classificar</small>
  81 + <i class="bi bi-square"></i>
82 </div> 82 </div>
83 </h5> <!-- card-header --> 83 </h5> <!-- card-header -->
84 84
@@ -89,14 +89,14 @@ @@ -89,14 +89,14 @@
89 89
90 {% block answer %}{% end %} 90 {% block answer %}{% end %}
91 91
92 - <p class="text-right"> 92 + <p class="text-end">
93 <small> 93 <small>
94 (Cotação: {{ round(q['points'], 2) }}) 94 (Cotação: {{ round(q['points'], 2) }})
95 </small> 95 </small>
96 </p> 96 </p>
97 </div> <!-- card-body --> 97 </div> <!-- card-body -->
98 98
99 - <div class="card-footer"> 99 + <div class="card-footer text-secondary">
100 {{ md(q['comments']) }} 100 {{ md(q['comments']) }}
101 {% if q['solution'] %} 101 {% if q['solution'] %}
102 {{ md('**Solução:** \n\n' + q['solution']) }} 102 {{ md('**Solução:** \n\n' + q['solution']) }}
perguntations/templates/review.html
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <html lang="pt-PT"> 2 <html lang="pt-PT">
3 <head> 3 <head>
4 - <title>Teste</title>  
5 - <meta charset="UTF-8">  
6 - <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">  
7 - <link rel="icon" type="image/x-icon" href="/static/favicon.ico"> 4 + <title>Revisão de prova</title>
  5 + <meta charset="utf-8">
  6 + <meta name="viewport" content="width=device-width, initial-scale=1">
  7 + <link rel="icon" href="/static/favicon.ico">
  8 +
  9 +<!-- Styles -->
  10 + <link rel="stylesheet" type="text/css" href="/static/bootstrap/css/bootstrap.min.css">
  11 + <link rel="stylesheet" type="text/css" href="/static/bootstrap-icons/font/bootstrap-icons.css">
  12 + <link rel="stylesheet" type="text/css" href="/static/css/github.css"> <!-- syntax highlight -->
  13 + <link rel="stylesheet" type="text/css" href="/static/css/test.css">
  14 +
8 <!-- MathJax3 --> 15 <!-- MathJax3 -->
9 <script> 16 <script>
10 MathJax = { 17 MathJax = {
@@ -16,15 +23,7 @@ @@ -16,15 +23,7 @@
16 } 23 }
17 }; 24 };
18 </script> 25 </script>
19 - <script type="text/javascript" id="MathJax-script" async  
20 - src="/static/mathjax/es5/tex-svg.js">  
21 - </script>  
22 -  
23 -<!-- Styles -->  
24 - <link rel="stylesheet" type="text/css" href="/static/bootstrap/css/bootstrap.min.css">  
25 - <link rel="stylesheet" type="text/css" href="/static/bootstrap-icons/font/bootstrap-icons.css">  
26 - <link rel="stylesheet" type="text/css" href="/static/css/github.css"> <!-- syntax highlight -->  
27 - <link rel="stylesheet" type="text/css" href="/static/css/test.css"> 26 + <script async type="text/javascript" id="MathJax-script" src="/static/mathjax/es5/tex-svg.js"></script>
28 27
29 <!-- Scripts --> 28 <!-- Scripts -->
30 <script src="/static/jquery/jquery.min.js"></script> 29 <script src="/static/jquery/jquery.min.js"></script>
@@ -56,6 +55,7 @@ @@ -56,6 +55,7 @@
56 <ul class="nav navbar-nav"> 55 <ul class="nav navbar-nav">
57 <li class="nav-item"> 56 <li class="nav-item">
58 <span class="navbar-text"> 57 <span class="navbar-text">
  58 + <i class="bi bi-person-fill"></i>
59 <span id="name">{{ escape(name) }}</span> 59 <span id="name">{{ escape(name) }}</span>
60 (<span id="number">{{ escape(uid) }}</span>) 60 (<span id="number">{{ escape(uid) }}</span>)
61 </span> 61 </span>
@@ -67,50 +67,53 @@ @@ -67,50 +67,53 @@
67 67
68 <!-- ===================================================================== --> 68 <!-- ===================================================================== -->
69 <div class="container"> 69 <div class="container">
70 - <div class="bg-light p-3">  
71 - <h1 class="display-5">{{ t['title'] }}</h1>  
72 - <hr>  
73 - <div class="row">  
74 - <label for="nome" class="col-sm-2">Nome:</label>  
75 - <div class="col-sm-9" id="nome">{{ escape(name) }}</div>  
76 - </div>  
77 - <div class="row">  
78 - <label for="numero" class="col-sm-2">Número:</label>  
79 - <div class="col-sm-9" id="numero">{{ escape(uid) }}</div>  
80 - </div>  
81 - <div class="row">  
82 - <label for="duracao" class="col-sm-2">Duração:</label>  
83 - <div class="col-sm-10" id="duracao">  
84 - {{ str(t.get('duration', 0)) + ' minutos' if t.get('duration', 0) > 0 else '+'+chr(8734) }} 70 + <div class="card">
  71 + <h5 class="card-header">{{ t['title'] }}</h5>
  72 + <div class="card-body">
  73 + <div class="row">
  74 + <label for="nome" class="col-3">Nome:</label>
  75 + <div class="col-9" id="nome">{{ escape(name) }}</div>
85 </div> 76 </div>
86 - </div>  
87 - <div class="row">  
88 - <label for="inicio" class="col-sm-2">Início:</label>  
89 - <div class="col-sm-10" id="inicio">{{t['start_time'][:19]}}</div>  
90 - </div>  
91 - <div class="row">  
92 - <label for="fim" class="col-sm-2">Fim:</label>  
93 - <div class="col-sm-10" id="fim">{{t['finish_time'][:19]}}</div>  
94 - </div>  
95 - <div class="row">  
96 - <label for="nota" class="col-sm-2">Nota:</label>  
97 - <div class="col-sm-10" id="nota">  
98 - {% if t['state'] == 'CORRECTED' %}  
99 - <strong>{{ round(t['grade'], 2) }}</strong> valores  
100 - {% elif t['state'] == 'SUBMITTED' %}  
101 - (não corrigido)  
102 - {% elif t['state'] == 'QUIT' %}  
103 - (DESISTIU)  
104 - {% end %} 77 + <div class="row">
  78 + <label for="numero" class="col-3">Número:</label>
  79 + <div class="col-9" id="numero">{{ escape(uid) }}</div>
105 </div> 80 </div>
106 - </div>  
107 - {% if t['comment'] != '' %}  
108 <div class="row"> 81 <div class="row">
109 - <label for="comentario" class="col-sm-2">Comentário:</label>  
110 - <div class="col-sm-10" id="comentario">{{ t['comment'] }}</div> 82 + <label for="duracao" class="col-3">Duração:</label>
  83 + <div class="col-9" id="duracao">
  84 + {{ str(t.get('duration', 0)) + ' minutos' if t.get('duration', 0) > 0 else 'sem limite' }}
  85 + </div>
111 </div> 86 </div>
112 - {% end %}  
113 - </div> 87 + <div class="row">
  88 + <label for="inicio" class="col-3">Início:</label>
  89 + <div class="col-9" id="inicio">{{t['start_time'][:19]}}</div>
  90 + </div>
  91 + <div class="row">
  92 + <label for="fim" class="col-3">Fim:</label>
  93 + <div class="col-9" id="fim">{{t['finish_time'][:19]}}</div>
  94 + </div>
  95 + </div> <!-- card-body -->
  96 + <div class="card-footer">
  97 + <div class="row">
  98 + <label for="nota" class="col-3">Nota:</label>
  99 + <div class="col-9" id="nota">
  100 + {% if t['state'] == 'CORRECTED' %}
  101 + <strong>{{ round(t['grade'], 2) }}</strong> valores
  102 + {% elif t['state'] == 'SUBMITTED' %}
  103 + (não corrigido)
  104 + {% elif t['state'] == 'QUIT' %}
  105 + (DESISTIU)
  106 + {% end %}
  107 + </div>
  108 + </div>
  109 + {% if t['comment'] != '' %}
  110 + <div class="row">
  111 + <label for="comentario" class="col-3">Comentário:</label>
  112 + <div class="col-9" id="comentario">{{ t['comment'] }}</div>
  113 + </div>
  114 + {% end %}
  115 + </div> <!-- card-footer -->
  116 + </div> <!-- card -->
114 117
115 {% for i, q in enumerate(t['questions']) %} 118 {% for i, q in enumerate(t['questions']) %}
116 {% module Template(templ[q['type']], i=i, q=q, md=md(q['ref']), t=t, debug=debug) %} 119 {% module Template(templ[q['type']], i=i, q=q, md=md(q['ref']), t=t, debug=debug) %}
perguntations/templates/test.html
@@ -8,6 +8,7 @@ @@ -8,6 +8,7 @@
8 8
9 <!-- Styles --> 9 <!-- Styles -->
10 <link rel="stylesheet" type="text/css" href="/static/bootstrap/css/bootstrap.min.css"> 10 <link rel="stylesheet" type="text/css" href="/static/bootstrap/css/bootstrap.min.css">
  11 + <link rel="stylesheet" type="text/css" href="/static/bootstrap-icons/font/bootstrap-icons.css">
11 <link rel="stylesheet" type="text/css" href="/static/codemirror/lib/codemirror.css"> 12 <link rel="stylesheet" type="text/css" href="/static/codemirror/lib/codemirror.css">
12 <link rel="stylesheet" type="text/css" href="/static/codemirror/theme/darcula.css"> 13 <link rel="stylesheet" type="text/css" href="/static/codemirror/theme/darcula.css">
13 <link rel="stylesheet" type="text/css" href="/static/css/github.css"> <!-- syntax highlight --> 14 <link rel="stylesheet" type="text/css" href="/static/css/github.css"> <!-- syntax highlight -->
@@ -61,16 +62,15 @@ @@ -61,16 +62,15 @@
61 </ul> 62 </ul>
62 63
63 <ul class="nav navbar-nav mx-auto"> 64 <ul class="nav navbar-nav mx-auto">
64 - <li class="nav-item"><h5>  
65 - <span class="navbar-text" id="clock"> --:-- </span>  
66 - </h5>  
67 - 65 + <li class="nav-item">
  66 + <h5> <span class="navbar-text" id="clock"> --:-- </span> </h5>
68 </li> 67 </li>
69 </ul> 68 </ul>
70 69
71 <ul class="nav navbar-nav"> 70 <ul class="nav navbar-nav">
72 <li class="nav-item"> 71 <li class="nav-item">
73 <span class="navbar-text"> 72 <span class="navbar-text">
  73 + <i class="bi bi-person-fill"></i>
74 <span id="name">{{ escape(name) }}</span> 74 <span id="name">{{ escape(name) }}</span>
75 (<span id="number">{{ escape(uid) }}</span>) 75 (<span id="number">{{ escape(uid) }}</span>)
76 </span> 76 </span>
@@ -82,25 +82,25 @@ @@ -82,25 +82,25 @@
82 82
83 <!-- ===================================================================== --> 83 <!-- ===================================================================== -->
84 <div class="container"> 84 <div class="container">
85 -  
86 - <div class="bg-light p-3">  
87 - <h3 class="display-5">{{ t['title'] }}</h3>  
88 - <hr>  
89 - <div class="row">  
90 - <label for="nome" class="col-sm-3">Nome:</label>  
91 - <div class="col-sm-9" id="nome">{{ escape(name) }}</div>  
92 - </div>  
93 - <div class="row">  
94 - <label for="numero" class="col-sm-3">Número:</label>  
95 - <div class="col-sm-9" id="numero">{{ escape(uid) }}</div>  
96 - </div>  
97 - <div class="row">  
98 - <label for="duracao" class="col-sm-3">Duração:</label>  
99 - <div class="col-sm-9" id="duracao">{{ str(t['duration'])+' minutos' if t['duration'] > 0 else 'sem limite de tempo' }}</div>  
100 - </div>  
101 - <div class="row">  
102 - <label for="submissao" class="col-sm-3">Submissão:</label>  
103 - <div class="col-sm-9" id="submissao">{{ 'automática no fim do tempo' if t['autosubmit'] else 'manual' }}</div> 85 + <div class="card">
  86 + <h5 class="card-header">{{ t['title'] }}</h5>
  87 + <div class="card-body">
  88 + <div class="row">
  89 + <label for="nome" class="col-3">Nome:</label>
  90 + <div class="col-9" id="nome">{{ escape(name) }}</div>
  91 + </div>
  92 + <div class="row">
  93 + <label for="numero" class="col-3">Número:</label>
  94 + <div class="col-9" id="numero">{{ escape(uid) }}</div>
  95 + </div>
  96 + <div class="row">
  97 + <label for="duracao" class="col-3">Duração:</label>
  98 + <div class="col-9" id="duracao">{{ str(t['duration'])+' minutos' if t['duration'] > 0 else 'sem limite' }}</div>
  99 + </div>
  100 + <div class="row">
  101 + <label for="submissao" class="col-3">Submissão:</label>
  102 + <div class="col-9" id="submissao">{{ 'automática no fim do tempo' if t['autosubmit'] else 'manual' }}</div>
  103 + </div>
104 </div> 104 </div>
105 </div> 105 </div>
106 106
@@ -111,12 +111,10 @@ @@ -111,12 +111,10 @@
111 {% module Template(templ[q['type']], i=i, q=q, md=md(q['ref']), debug=debug) %} 111 {% module Template(templ[q['type']], i=i, q=q, md=md(q['ref']), debug=debug) %}
112 {% end %} 112 {% end %}
113 113
114 - <div class="form-row">  
115 - <div class="col-12">  
116 - <button type="button" class="btn btn-success btn-lg btn-block" data-bs-toggle="modal" data-bs-target="#confirmar" id="form-button-submit">  
117 - Submeter teste  
118 - </button>  
119 - </div> 114 + <div class="d-grid gap-2">
  115 + <button type="button" class="btn btn-success btn-lg btn-block" data-bs-toggle="modal" data-bs-target="#confirmar" id="form-button-submit">
  116 + Submeter teste
  117 + </button>
120 </div> 118 </div>
121 </form> 119 </form>
122 <hr> 120 <hr>