Commit da9dd50b8802273dcc26ff735c569b8e1a9cfd58
1 parent
29ec441a
Exists in
master
and in
1 other branch
- changed navbar to include logo on the left and time centered.
Showing
5 changed files
with
75 additions
and
57 deletions
Show diff stats
BUGS.md
1 | 1 | ||
2 | # BUGS | 2 | # BUGS |
3 | 3 | ||
4 | +- config/logger.yaml ainda é do cherrypy... | ||
5 | +- servir imagens das perguntas | ||
6 | +- hints nao funciona | ||
4 | - fazer renderer para formulas com mathjax serverside (mathjax-node). | 7 | - fazer renderer para formulas com mathjax serverside (mathjax-node). |
5 | - fazer renderer para imagens, com links /file?ref=xpto;name=zzz.jpg | 8 | - fazer renderer para imagens, com links /file?ref=xpto;name=zzz.jpg |
6 | - fazer renderer para linguagem assembly mips? | 9 | - fazer renderer para linguagem assembly mips? |
7 | -- servir imagens das perguntas | ||
8 | -- hints nao funciona | ||
9 | -- uniformizar question.py com a de aprendizations... | ||
10 | - permitir eliminar teste a decorrer | 10 | - permitir eliminar teste a decorrer |
11 | - eventos unfocus? | 11 | - eventos unfocus? |
12 | - servidor nao esta a lidar com eventos scroll/resize. ignorar? | 12 | - servidor nao esta a lidar com eventos scroll/resize. ignorar? |
@@ -39,6 +39,7 @@ | @@ -39,6 +39,7 @@ | ||
39 | 39 | ||
40 | # FIXED | 40 | # FIXED |
41 | 41 | ||
42 | +- uniformizar question.py com a de aprendizations... | ||
42 | - qual a diferenca entre md_to_html e md_to_html_review, parece desnecessario haver dois. | 43 | - qual a diferenca entre md_to_html e md_to_html_review, parece desnecessario haver dois. |
43 | - converter markdown para mistune. | 44 | - converter markdown para mistune. |
44 | - como alterar configuracao para mostrar logs de debug? | 45 | - como alterar configuracao para mostrar logs de debug? |
serve.py
@@ -321,10 +321,10 @@ class AdminHandler(BaseHandler): | @@ -321,10 +321,10 @@ class AdminHandler(BaseHandler): | ||
321 | def main(): | 321 | def main(): |
322 | # --- Commandline argument parsing | 322 | # --- Commandline argument parsing |
323 | argparser = argparse.ArgumentParser(description='Server for online tests. Enrolled students and tests have to be previously configured. Please read the documentation included with this software before running the server.') | 323 | argparser = argparse.ArgumentParser(description='Server for online tests. Enrolled students and tests have to be previously configured. Please read the documentation included with this software before running the server.') |
324 | - argparser.add_argument('--debug', action='store_true', | ||
325 | - help='Show datastructures when rendering questions') | ||
326 | - argparser.add_argument('--allow-all', action='store_true', help='Students are initially allowed to login (can be denied later)') | ||
327 | argparser.add_argument('testfile', type=str, nargs='+', help='test/exam in YAML format.') # FIXME only one exam supported at the moment | 324 | argparser.add_argument('testfile', type=str, nargs='+', help='test/exam in YAML format.') # FIXME only one exam supported at the moment |
325 | + argparser.add_argument('--allow-all', action='store_true', help='Students are initially allowed to login (can be denied later)') | ||
326 | + argparser.add_argument('--debug', action='store_true', | ||
327 | + help='Enable debug messages.') | ||
328 | arg = argparser.parse_args() | 328 | arg = argparser.parse_args() |
329 | 329 | ||
330 | # --- Setup logging | 330 | # --- Setup logging |
@@ -347,14 +347,14 @@ def main(): | @@ -347,14 +347,14 @@ def main(): | ||
347 | } | 347 | } |
348 | 348 | ||
349 | try: | 349 | try: |
350 | - app = App(config) | 350 | + testapp = App(config) |
351 | except AppException: | 351 | except AppException: |
352 | logging.critical('Failed to start application.') | 352 | logging.critical('Failed to start application.') |
353 | sys.exit(1) | 353 | sys.exit(1) |
354 | 354 | ||
355 | # --- create web application | 355 | # --- create web application |
356 | try: | 356 | try: |
357 | - webapp = WebApplication(app, debug=arg.debug) | 357 | + webapp = WebApplication(testapp, debug=arg.debug) |
358 | except Exception as e: | 358 | except Exception as e: |
359 | logging.critical('Can\'t start application.') | 359 | logging.critical('Can\'t start application.') |
360 | raise e | 360 | raise e |
templates/admin.html
@@ -22,7 +22,7 @@ | @@ -22,7 +22,7 @@ | ||
22 | </head> | 22 | </head> |
23 | <!-- ===================================================================== --> | 23 | <!-- ===================================================================== --> |
24 | <body> | 24 | <body> |
25 | -<nav class="navbar navbar-expand-sm fixed-top navbar-dark bg-primary"> | 25 | +<nav class="navbar navbar-expand-sm fixed-top navbar-dark bg-danger"> |
26 | <a class="navbar-brand" href="#">Admin</a> | 26 | <a class="navbar-brand" href="#">Admin</a> |
27 | <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation"> | 27 | <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation"> |
28 | <span class="navbar-toggler-icon"></span> | 28 | <span class="navbar-toggler-icon"></span> |
@@ -38,7 +38,7 @@ | @@ -38,7 +38,7 @@ | ||
38 | <!-- right --> | 38 | <!-- right --> |
39 | <ul class="navbar-nav"> | 39 | <ul class="navbar-nav"> |
40 | <li class="nav-item dropdown"> | 40 | <li class="nav-item dropdown"> |
41 | - <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownAluno" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> | 41 | + <a class="nav-link dropdown-toggle active" href="#" id="navbarDropdownAluno" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> |
42 | Aluno | 42 | Aluno |
43 | </a> | 43 | </a> |
44 | <div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdownAluno"> | 44 | <div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdownAluno"> |
templates/login.html
1 | <!DOCTYPE html> | 1 | <!DOCTYPE html> |
2 | <html lang="en"> | 2 | <html lang="en"> |
3 | - <head> | ||
4 | - <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> | ||
5 | - <meta charset="utf-8"> | ||
6 | - | ||
7 | - <link rel="icon" href="/static/favicon.ico"> | ||
8 | - <link rel="stylesheet" href="/static/bootstrap/css/bootstrap.min.css"> | ||
9 | - | ||
10 | - <title>Teste</title> | ||
11 | - </head> | ||
12 | -<!-- ===================================================================== --> | ||
13 | - <body> | ||
14 | - <div class="container-fluid"> | ||
15 | - <div class="card bg-light border-secondary mb-3"> | ||
16 | - <div class="card-body"> | ||
17 | - <div class="row"> | ||
18 | - | ||
19 | - <div class="col-sm-4"> | ||
20 | - <img src="/static/logo_horizontal.png" class="img-responsive" width="60%"> | ||
21 | - </div> | ||
22 | - | ||
23 | - <div class="col-sm-8"> | 3 | +<head> |
4 | + <title>Teste</title> | ||
5 | + <link rel="icon" href="/static/favicon.ico"> | ||
6 | + | ||
7 | + <meta charset="utf-8"> | ||
8 | + <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> | ||
9 | + | ||
10 | + <link rel="stylesheet" href="/static/bootstrap/css/bootstrap.min.css"> | ||
11 | + | ||
12 | +</head> | ||
13 | +<!-- =================================================================== --> | ||
14 | +<body> | ||
15 | + <div class="container-fluid"> | ||
16 | + <div class="card bg-light border-secondary mb-3"> | ||
17 | + <div class="card-body"> | ||
18 | + <div class="row"> | ||
19 | + | ||
20 | + <div class="col-sm-4"> | ||
21 | + <img src="/static/logo_horizontal.png" class="img-responsive" width="60%"> | ||
22 | + </div> | ||
23 | + | ||
24 | + <div class="col-sm-8"> | ||
24 | <h4>Identificação:</h4> | 25 | <h4>Identificação:</h4> |
25 | - <form method="post" action="/login" class="form-signin"> | ||
26 | - {% module xsrf_form_html() %} | ||
27 | - <div class="form-group"> | ||
28 | - <input type="text" name="uid" class="form-control" placeholder="Número" required autofocus> | ||
29 | - <input type="password" name="pw" class="form-control" placeholder="Password" required> | ||
30 | - <p> {{ error }} </p> | ||
31 | - </div> | ||
32 | - <button class="btn btn-primary" type="submit"> | ||
33 | - <i class="fa fa-sign-in" aria-hidden="true"></i> Entrar | ||
34 | - </button> | ||
35 | - </form> | ||
36 | - </div> | 26 | + |
27 | + <form method="post" action="/login" class="form-signin"> | ||
28 | + {% module xsrf_form_html() %} | ||
29 | + <div class="form-group"> | ||
30 | + <input type="text" name="uid" class="form-control" placeholder="Número" required autofocus> | ||
31 | + <input type="password" name="pw" class="form-control" placeholder="Password" required> | ||
32 | + <p> {{ error }} </p> | ||
33 | + </div> | ||
34 | + <button class="btn btn-primary" type="submit"> | ||
35 | + <i class="fa fa-sign-in" aria-hidden="true"></i> Entrar | ||
36 | + </button> | ||
37 | + </form> | ||
37 | </div> | 38 | </div> |
38 | </div> | 39 | </div> |
39 | </div> | 40 | </div> |
40 | - </div> <!-- container --> | 41 | + </div> |
42 | + </div> <!-- container --> | ||
41 | 43 | ||
42 | <!-- Scripts --> | 44 | <!-- Scripts --> |
43 | - <script src="/static/js/jquery.min.js"></script> | ||
44 | - <script src="/static/popper/umd/popper.min.js"></script> | ||
45 | - <script src="/static/bootstrap/js/bootstrap.min.js"></script> | 45 | + <script src="/static/js/jquery.min.js"></script> |
46 | + <script src="/static/popper/umd/popper.min.js"></script> | ||
47 | + <script src="/static/bootstrap/js/bootstrap.min.js"></script> | ||
46 | 48 | ||
47 | - </body> | 49 | +</body> |
48 | </html> | 50 | </html> |
templates/test.html
@@ -30,25 +30,40 @@ | @@ -30,25 +30,40 @@ | ||
30 | 30 | ||
31 | <nav class="navbar navbar-expand-sm fixed-top navbar-dark bg-dark"> | 31 | <nav class="navbar navbar-expand-sm fixed-top navbar-dark bg-dark"> |
32 | <a class="navbar-brand" href="#"> | 32 | <a class="navbar-brand" href="#"> |
33 | - <!-- <i class="fa fa-clock-o" aria-hidden="true"></i> --> | ||
34 | - <span id="clock"> --:-- </span> | 33 | + <img src="/static/logo_navbar.png" height="30" alt=""> |
35 | </a> | 34 | </a> |
36 | <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarText" aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation"> | 35 | <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarText" aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation"> |
37 | <span class="navbar-toggler-icon"></span> | 36 | <span class="navbar-toggler-icon"></span> |
38 | </button> | 37 | </button> |
39 | 38 | ||
40 | <div class="collapse navbar-collapse" id="navbarText"> | 39 | <div class="collapse navbar-collapse" id="navbarText"> |
41 | - <ul class="navbar-nav mr-auto"> | 40 | + <ul class="nav navbar-nav"> |
41 | + <li class="nav-item"></li> | ||
42 | </ul> | 42 | </ul> |
43 | 43 | ||
44 | - <span class="navbar-text"> | ||
45 | - <i class="fa fa-user" aria-hidden="true"></i> | ||
46 | - <span id="name">{{ escape(t['student']['name']) }}</span> | ||
47 | - (<span id="number">{{ escape(t['student']['number']) }}</span>) | ||
48 | - <span class="caret"></span> | ||
49 | - </span> | 44 | + <ul class="nav navbar-nav mx-auto"> |
45 | + <li class="nav-item"><h5> | ||
46 | + <span class="navbar-text" id="clock"> --:-- </span> | ||
47 | + </h5> | ||
48 | + </li> | ||
49 | + </ul> | ||
50 | + | ||
51 | + <ul class="nav navbar-nav"> | ||
52 | + <li class="nav-item"> | ||
53 | + <span class="navbar-text"> | ||
54 | + <i class="fa fa-user" aria-hidden="true"></i> | ||
55 | + <span id="name">{{ escape(t['student']['name']) }}</span> | ||
56 | + (<span id="number">{{ escape(t['student']['number']) }}</span>) | ||
57 | + <span class="caret"></span> | ||
58 | + </span> | ||
59 | + </li> | ||
60 | + </ul> | ||
50 | </div> | 61 | </div> |
51 | </nav> | 62 | </nav> |
63 | + | ||
64 | + | ||
65 | + | ||
66 | +<!-- ===================================================================== --> | ||
52 | <div class="container"> | 67 | <div class="container"> |
53 | 68 | ||
54 | <div class="jumbotron"> | 69 | <div class="jumbotron"> |