Commit d7ad8a11ad25413edef898687562859e6711881b

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

- using codemirror in textarea questions.

@@ -59,6 +59,7 @@ ou usar push (websockets?) @@ -59,6 +59,7 @@ ou usar push (websockets?)
59 59
60 # FIXED 60 # FIXED
61 61
  62 +- textarea com codemirror
62 - decorador para user 0, evita o "if uid==0" em muitas funcoes. 63 - decorador para user 0, evita o "if uid==0" em muitas funcoes.
63 - numeric interval deve converter respostas que usam virgulas para pontos decimais 64 - numeric interval deve converter respostas que usam virgulas para pontos decimais
64 - self.testapp.get_json_filename_of_test(test_id) retorna None quando test_id nao existe. 65 - self.testapp.get_json_filename_of_test(test_id) retorna None quando test_id nao existe.
static/codemirror 0 → 120000
@@ -0,0 +1 @@ @@ -0,0 +1 @@
  1 +libs/codemirror-5.40.2/
0 \ No newline at end of file 2 \ No newline at end of file
static/css/test.css
@@ -24,4 +24,9 @@ textarea { @@ -24,4 +24,9 @@ textarea {
24 } 24 }
25 .noleftmargin { 25 .noleftmargin {
26 margin-left: 0px; 26 margin-left: 0px;
27 -}  
28 \ No newline at end of file 27 \ No newline at end of file
  28 +}
  29 +
  30 +.CodeMirror {
  31 + border: 1px solid #eee;
  32 + height: auto;
  33 +}
static/js/tabkey_in_textarea.js
@@ -1,18 +0,0 @@ @@ -1,18 +0,0 @@
1 -$(document).ready(function() {  
2 -  
3 - $("textarea").keydown(function(e) {  
4 - if(e.keyCode === 9) { // tab was pressed  
5 - // get caret position/selection  
6 - var start = this.selectionStart;  
7 - var end = this.selectionEnd;  
8 - var value = $(this).val();  
9 -  
10 - // set textarea value to: text before caret + tab + text after caret  
11 - $(this).val(value.substring(0, start) + " " + value.substring(end));  
12 -  
13 - // put caret at right position again (add one for the tab)  
14 - this.selectionStart = this.selectionEnd = start + 4;  
15 - e.preventDefault(); // prevent the focus lose  
16 - }  
17 - });  
18 -});  
templates/question-textarea.html
1 {% extends "question.html" %} 1 {% extends "question.html" %}
2 2
3 {% block answer %} 3 {% block answer %}
  4 +
4 <textarea class="form-control" rows="{{q['lines']}}" name="{{i}}">{{q['answer'] or ''}}</textarea><br /> 5 <textarea class="form-control" rows="{{q['lines']}}" name="{{i}}">{{q['answer'] or ''}}</textarea><br />
  6 +
5 {% end %} 7 {% end %}
templates/test.html
@@ -16,22 +16,26 @@ @@ -16,22 +16,26 @@
16 </script> 16 </script>
17 <script type="text/javascript" src="/static/MathJax/MathJax.js?config=TeX-AMS_CHTML-full"></script> 17 <script type="text/javascript" src="/static/MathJax/MathJax.js?config=TeX-AMS_CHTML-full"></script>
18 18
19 -<!-- Styles -->  
20 - <link rel="stylesheet" href="/static/bootstrap/css/bootstrap.min.css">  
21 - <link rel="stylesheet" href="/static/css/github.css"> <!-- syntax highlight -->  
22 - <link rel="stylesheet" href="/static/css/test.css">  
23 -  
24 <!-- Scripts --> 19 <!-- Scripts -->
25 - <script defer src="/static/jquery.min.js"></script> 20 + <script src="/static/jquery.min.js"></script>
26 <script defer src="/static/popper.min.js"></script> 21 <script defer src="/static/popper.min.js"></script>
27 <script defer src="/static/bootstrap/js/bootstrap.min.js"></script> 22 <script defer src="/static/bootstrap/js/bootstrap.min.js"></script>
28 <script defer src="/static/fontawesome.min.js"></script> 23 <script defer src="/static/fontawesome.min.js"></script>
  24 + <script src="/static/codemirror/lib/codemirror.js"></script>
  25 + <script src="/static/codemirror/addon/selection/active-line.js"></script>
  26 + <script src="/static/codemirror/addon/edit/matchbrackets.js"></script>
  27 +
  28 +<!-- Styles -->
  29 + <link rel="stylesheet" href="/static/bootstrap/css/bootstrap.min.css">
  30 + <link rel="stylesheet" href="/static/css/github.css"> <!-- syntax highlight -->
  31 + <link rel="stylesheet" href="/static/codemirror/lib/codemirror.css">
  32 + <link rel="stylesheet" href="/static/codemirror/theme/darcula.css">
  33 + <link rel="stylesheet" href="/static/css/test.css">
29 34
30 <!-- My scripts --> 35 <!-- My scripts -->
31 <!-- <script src="/static/js/detect_unfocus.js"></script> --> 36 <!-- <script src="/static/js/detect_unfocus.js"></script> -->
32 <script defer src="/static/js/question_disabler.js"></script> 37 <script defer src="/static/js/question_disabler.js"></script>
33 <script defer src="/static/js/prevent_enter_submit.js"></script> 38 <script defer src="/static/js/prevent_enter_submit.js"></script>
34 - <script defer src="/static/js/tabkey_in_textarea.js"></script>  
35 <script defer src="/static/js/clock.js"></script> 39 <script defer src="/static/js/clock.js"></script>
36 </head> 40 </head>
37 <!-- ===================================================================== --> 41 <!-- ===================================================================== -->
@@ -126,5 +130,18 @@ @@ -126,5 +130,18 @@
126 </div> 130 </div>
127 </div> 131 </div>
128 </div> 132 </div>
  133 +
  134 +<script>
  135 + $("textarea").each(function(i, ta) {
  136 + CodeMirror.fromTextArea(ta, {
  137 + lineNumbers: true,
  138 + theme: "darcula",
  139 + viewportMargin: Infinity,
  140 + matchBrackets: true,
  141 + styleActiveLine: true,
  142 + });
  143 + });
  144 +</script>
  145 +
129 </body> 146 </body>
130 </html> 147 </html>