Commit dde5be86570399a2b3dc4fbcf2da96ccd9f5af87

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

- add sticky-footer with link to bugs/suggestions

aprendizations/__init__.py
... ... @@ -30,7 +30,7 @@ are progressively uncovered as the students progress.
30 30 '''
31 31  
32 32 APP_NAME = 'aprendizations'
33   -APP_VERSION = '2019.12.dev2'
  33 +APP_VERSION = '2019.12.dev3'
34 34 APP_DESCRIPTION = __doc__
35 35  
36 36 __author__ = 'Miguel Barão'
... ...
aprendizations/static/css/sticky-footer-navbar.css 0 → 100644
... ... @@ -0,0 +1,19 @@
  1 +/* Sticky footer styles */
  2 +
  3 +html {
  4 + position: relative;
  5 + min-height: 100%;
  6 +}
  7 +
  8 +body {
  9 + margin-bottom: 60px;
  10 +}
  11 +
  12 +.footer {
  13 + position: absolute;
  14 + bottom: 0;
  15 + width: 100%;
  16 + height: 30px; /* Set the fixed height of the footer here */
  17 + line-height: 30px; /* Vertically center the text there */
  18 + background-color: #f5f5f5;
  19 +}
... ...
aprendizations/templates/courses.html
... ... @@ -12,6 +12,7 @@
12 12 <link rel="stylesheet" href="/static/mdbootstrap/css/bootstrap.min.css">
13 13 <link rel="stylesheet" href="/static/mdbootstrap/css/mdb.min.css">
14 14 <link rel="stylesheet" href="/static/css/maintopics.css">
  15 + <link rel="stylesheet" href="/static/css/sticky-footer-navbar.css">
15 16 <!-- Scripts -->
16 17 <script defer src="/static/mdbootstrap/js/jquery.min.js"></script>
17 18 <script defer src="/static/mdbootstrap/js/popper.min.js"></script>
... ... @@ -53,8 +54,8 @@
53 54 <!-- ===== page ====================================================== -->
54 55 <div class="container">
55 56 <div id="notifications"></div>
56   - <div class="row justify-content-center">
57   - {% for k,v in courses.items() %}
  57 + <div class="row justify-content-left">
  58 + {% for k,v in courses.items() %}
58 59 <div class="card-deck col-md-4">
59 60 <a href="/course/{{k}}" class="card mb-3">
60 61 <!-- text-dark mb-3" style="width: 18rem;" -->
... ... @@ -64,10 +65,20 @@
64 65 </div>
65 66 </a>
66 67 </div>
67   - {% end %}
  68 + {% end %} <!-- for -->
68 69 </div>
69 70 </div>
70   - <!-- for -->
  71 +
  72 + <footer class="footer">
  73 + <div class="container">
  74 + <small class="text-muted">
  75 + <a href="mailto:mjsb@uevora.pt?subject=Encontrei um erro&body=Descreva detalhadamente a situação na qual encontrou o erro. Indique qual o curso, tópico e pergunta. No caso de problemas técnicos indique também qual o seu sistema operativo e browser.">Reportar erro</a>
  76 + &nbsp;/&nbsp;
  77 + <a href="mailto:mjsb@uevora.pt?subject=Sugestões">Enviar sugestões</a>
  78 + </small>
  79 + </div>
  80 + </footer>
  81 +
71 82 <!-- === Change Password Modal =========================================== -->
72 83 <div id="password_modal" class="modal fade" tabindex="-1" role="dialog">
73 84 <div class="modal-dialog" role="document">
... ...
aprendizations/templates/topic.html
... ... @@ -71,7 +71,7 @@
71 71 </nav>
72 72 <!-- ===================================================================== -->
73 73 <div class="progress">
74   - <div class="progress-bar bg-primary" id="topic_progress" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="min-width: 1em;width: 0%"></div>
  74 + <div class="progress-bar bg-warning" id="topic_progress" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="min-width: 1em;width: 0%"></div>
75 75 </div>
76 76 <!-- ===================================================================== -->
77 77 <!-- main panel with questions -->
... ...
package-lock.json
... ... @@ -3,71 +3,19 @@
3 3 "lockfileVersion": 1,
4 4 "dependencies": {
5 5 "@fortawesome/fontawesome-free": {
6   - "version": "5.11.2",
7   - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.11.2.tgz",
8   - "integrity": "sha512-XiUPoS79r1G7PcpnNtq85TJ7inJWe0v+b5oZJZKb0pGHNIV6+UiNeQWiFGmuQ0aj7GEhnD/v9iqxIsjuRKtEnQ=="
  6 + "version": "5.12.0",
  7 + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.12.0.tgz",
  8 + "integrity": "sha512-vKDJUuE2GAdBERaQWmmtsciAMzjwNrROXA5KTGSZvayAsmuTGjam5z6QNqNPCwDfVljLWuov1nEC3mEQf/n6fQ=="
9 9 },
10 10 "codemirror": {
11   - "version": "5.49.2",
12   - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.49.2.tgz",
13   - "integrity": "sha512-dwJ2HRPHm8w51WB5YTF9J7m6Z5dtkqbU9ntMZ1dqXyFB9IpjoUFDj80ahRVEoVanfIp6pfASJbOlbWdEf8FOzQ=="
14   - },
15   - "commander": {
16   - "version": "3.0.1",
17   - "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.1.tgz",
18   - "integrity": "sha512-UNgvDd+csKdc9GD4zjtkHKQbT8Aspt2jCBqNSPp53vAS0L1tS9sXB2TCEOPHJ7kt9bN/niWkYj8T3RQSoMXdSQ=="
19   - },
20   - "esm": {
21   - "version": "3.2.25",
22   - "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz",
23   - "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA=="
24   - },
25   - "mathjax": {
26   - "version": "3.0.0",
27   - "resolved": "https://registry.npmjs.org/mathjax/-/mathjax-3.0.0.tgz",
28   - "integrity": "sha512-z4uLbDHNbs/aRuR6zCcnzwFQuMixkHCcWqgVaommfK/3cA1Ahq7OXemn+m8JwTYcBApSHgcrSbPr9sm3sZFL+A==",
29   - "requires": {
30   - "mathjax-full": "git://github.com/mathjax/MathJax-src.git"
31   - }
32   - },
33   - "mathjax-full": {
34   - "version": "git://github.com/mathjax/MathJax-src.git#0d74266e1820220d33cb6b29d4ca3575b352ac0d",
35   - "from": "git://github.com/mathjax/MathJax-src.git",
36   - "requires": {
37   - "esm": "^3.2.25",
38   - "mj-context-menu": "^0.2.0",
39   - "speech-rule-engine": "^3.0.0-beta.6"
40   - }
  11 + "version": "5.50.0",
  12 + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.50.0.tgz",
  13 + "integrity": "sha512-32LAmGcBNhKtJP4WGgkcaCVQDyChAyaWA6jasg778ziZzo3PWBuhpAQIJMO8//Id45RoaLyXjuhcRUBoS8Vg+Q=="
41 14 },
42 15 "mdbootstrap": {
43   - "version": "4.10.0",
44   - "resolved": "https://registry.npmjs.org/mdbootstrap/-/mdbootstrap-4.10.0.tgz",
45   - "integrity": "sha512-jpDSrAv9BbqHGFCHf9iQts7dWAuJYT3VFmElLkKpD6cGJ5Pcjv5oiTvfKvFGjVsxWsjLtj7Y0Rh135EYejkaeg=="
46   - },
47   - "mj-context-menu": {
48   - "version": "0.2.0",
49   - "resolved": "https://registry.npmjs.org/mj-context-menu/-/mj-context-menu-0.2.0.tgz",
50   - "integrity": "sha512-yJxrWBHCjFZEHsZgfs7m5g9OSCNzsVYadW6f6lX3pgZL67vmodtSW/4zhsYmuDKweXfHs0M1kJge1uQIasWA+g=="
51   - },
52   - "speech-rule-engine": {
53   - "version": "3.0.0-beta.6",
54   - "resolved": "https://registry.npmjs.org/speech-rule-engine/-/speech-rule-engine-3.0.0-beta.6.tgz",
55   - "integrity": "sha512-B7gcT53jAsKpx7WvFYQcyUlFmgS3Wa9KlDy0FY8SOTa+Wz5EqmI0MpCD5/fYm8/2qiCPp8HwZg+H3cBgM+sNVw==",
56   - "requires": {
57   - "commander": "*",
58   - "wicked-good-xpath": "*",
59   - "xmldom-sre": "^0.1.31"
60   - }
61   - },
62   - "wicked-good-xpath": {
63   - "version": "1.3.0",
64   - "resolved": "https://registry.npmjs.org/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz",
65   - "integrity": "sha1-gbDpXoZQ5JyUsiKY//hoa1VTz2w="
66   - },
67   - "xmldom-sre": {
68   - "version": "0.1.31",
69   - "resolved": "https://registry.npmjs.org/xmldom-sre/-/xmldom-sre-0.1.31.tgz",
70   - "integrity": "sha512-f9s+fUkX04BxQf+7mMWAp5zk61pciie+fFLC9hX9UVvCeJQfNHRHXpeo5MPcR0EUf57PYLdt+ZO4f3Ipk2oZUw=="
  16 + "version": "4.11.0",
  17 + "resolved": "https://registry.npmjs.org/mdbootstrap/-/mdbootstrap-4.11.0.tgz",
  18 + "integrity": "sha512-3yhRRo8UQDqRgeEutSpx9jIECzkyPebOq/oYsG2TLAmXVmujDBb+OoTW6+yZ1MtaQZCu8AF8D1/pM9Y8sLj3uA=="
71 19 }
72 20 }
73 21 }
... ...
package.json
... ... @@ -2,10 +2,9 @@
2 2 "description": "Javascript libraries required to run the server",
3 3 "email": "mjsb@uevora.pt",
4 4 "dependencies": {
5   - "@fortawesome/fontawesome-free": "^5.11.2",
6   - "codemirror": "^5.49.2",
7   - "mathjax": "^3",
8   - "mdbootstrap": "^4.10.0"
  5 + "@fortawesome/fontawesome-free": "^5.12.0",
  6 + "codemirror": "^5.50.0",
  7 + "mdbootstrap": "^4.11.0"
9 8 },
10 9 "private": true
11 10 }
... ...