Commit 2fff21e4eddbcb79a766b618cdf6ff489e57fdd8
1 parent
c68f0ced
Exists in
master
and in
1 other branch
- templates simplified using a base question and blocks for each type of answer.
Showing
6 changed files
with
72 additions
and
104 deletions
Show diff stats
serve.py
... | ... | @@ -130,19 +130,9 @@ class LearnHandler(BaseHandler): |
130 | 130 | # ---------------------------------------------------------------------------- |
131 | 131 | # respond to AJAX to get a JSON question |
132 | 132 | class QuestionHandler(BaseHandler): |
133 | - # @tornado.web.authenticated | |
134 | - # def get(self): | |
135 | - # question = self.application.learn.next_question() | |
136 | - # print('---> question.get') | |
137 | - # print(question) | |
138 | - # if question['type'] == 'checkbox': | |
139 | - # self.render('question-checkbox.html', | |
140 | - # question=question, | |
141 | - # md=md, | |
142 | - # ) | |
143 | - | |
144 | - # else: | |
145 | - # self.write('Error!!!') | |
133 | + @tornado.web.authenticated | |
134 | + def get(self): | |
135 | + self.redirect('/') | |
146 | 136 | |
147 | 137 | @tornado.web.authenticated |
148 | 138 | def post(self): |
... | ... | @@ -189,12 +179,6 @@ class QuestionHandler(BaseHandler): |
189 | 179 | 'correct': correct, |
190 | 180 | }) |
191 | 181 | |
192 | - # if question['type'] == 'checkbox': | |
193 | - # self.render('question-checkbox.html', | |
194 | - # question=question, # the dictionary with the question?? | |
195 | - # md=md, # passes function that renders markdown to html | |
196 | - # ) | |
197 | - | |
198 | 182 | |
199 | 183 | # ---------------------------------------------------------------------------- |
200 | 184 | def main(): | ... | ... |
templates/learn.html
... | ... | @@ -100,7 +100,41 @@ $.fn.extend({ |
100 | 100 | } |
101 | 101 | }); |
102 | 102 | |
103 | +// function getCookie(name) { | |
104 | +// var r = document.cookie.match("\\b" + name + "=([^;]*)\\b"); | |
105 | +// return r ? r[1] : undefined; | |
106 | +// } | |
107 | + | |
108 | +// jQuery.postJSON = function(url, args, callback) { | |
109 | +// args._xsrf = getCookie("_xsrf"); | |
110 | +// alert(args); | |
111 | +// $.ajax({url: url, data: $.param(args), dataType: "text", type: "POST", | |
112 | +// success: function(response) { | |
113 | +// callback(eval("(" + response + ")")); | |
114 | +// }}); | |
115 | +// } | |
116 | + | |
103 | 117 | function getQuestion() { |
118 | + // var data = $("#question_form").serialize(); | |
119 | + // $.postJSON('/question', data, function(response){ | |
120 | + // $("#question_div").html(response["html"]); | |
121 | + // MathJax.Hub.Queue(["Typeset",MathJax.Hub,"question"]); | |
122 | + | |
123 | + // if (response["correct"]) { | |
124 | + // $('#question_div').animateCSS('pulse'); | |
125 | + // } | |
126 | + // else { | |
127 | + // $('#question_div').animateCSS('shake'); | |
128 | + // } | |
129 | + | |
130 | + // $("input:text").bind("keypress", function (e) { | |
131 | + // if (e.keyCode == 13) { | |
132 | + // e.preventDefault(); | |
133 | + // getQuestion(); | |
134 | + // } | |
135 | + // }); | |
136 | + // }); | |
137 | + | |
104 | 138 | $.ajax({ |
105 | 139 | type: "POST", |
106 | 140 | url: "/question", | ... | ... |
templates/question-checkbox.html
1 | +{% extends "question.html" %} | |
1 | 2 | {% autoescape %} |
2 | 3 | |
3 | -<div class="panel panel-default"> | |
4 | - <div class="panel-heading"> | |
5 | - <!-- <h3 id="title"> --> | |
6 | - {{ question['title'] }} | |
7 | - <!-- </h3> --> | |
4 | +{% block answer %} | |
5 | +<fieldset data-role="controlgroup"> | |
6 | + <div class="list-group"> | |
7 | + {% for n,opt in enumerate(question['options']) %} | |
8 | + <a class="list-group-item"> | |
9 | + <input type="checkbox" id="{{ n }}" name="answer" value="{{ n }}"> | |
10 | + {{ opt }} | |
11 | + </a> | |
12 | + {% end %} | |
8 | 13 | </div> |
9 | - <div class="panel-body"> | |
10 | - | |
11 | - <div id="text"> | |
12 | - {{ md(question['text']) }} | |
13 | - </div> | |
14 | - | |
15 | - <fieldset data-role="controlgroup"> | |
16 | - <div class="list-group"> | |
17 | - {% for n,opt in enumerate(question['options']) %} | |
18 | - <a class="list-group-item"> | |
19 | - <input type="checkbox" id="{{ n }}" name="answer" value="{{ n }}"> | |
20 | - {{ opt }} | |
21 | - </a> | |
22 | - {% end %} | |
23 | - </div> | |
24 | - </fieldset> | |
25 | - </div> | |
26 | -</div> | |
14 | +</fieldset> | |
15 | +{% end %} | |
27 | 16 | \ No newline at end of file | ... | ... |
templates/question-radio.html
1 | +{% extends "question.html" %} | |
1 | 2 | {% autoescape %} |
2 | 3 | |
3 | -<div class="panel panel-default"> | |
4 | - <div class="panel-heading"> | |
5 | - <!-- <h3 id="title"> --> | |
6 | - {{ question['title'] }} | |
7 | - <!-- </h3> --> | |
4 | +{% block answer %} | |
5 | +<fieldset data-role="controlgroup"> | |
6 | + <div class="list-group"> | |
7 | + {% for n,opt in enumerate(question['options']) %} | |
8 | + <a class="list-group-item"> | |
9 | + <input type="radio" id="{{ n }}" name="answer" value="{{ n }}"> | |
10 | + {{ md(opt) }} | |
11 | + </a> | |
12 | + {% end %} | |
8 | 13 | </div> |
9 | - | |
10 | - <div class="panel-body"> | |
11 | - | |
12 | - <div id="text"> | |
13 | - {{ md(question['text']) }} | |
14 | - </div> | |
15 | - | |
16 | - <fieldset data-role="controlgroup"> | |
17 | - <div class="list-group"> | |
18 | - {% for n,opt in enumerate(question['options']) %} | |
19 | - <a class="list-group-item"> | |
20 | - <input type="radio" id="{{ n }}" name="answer" value="{{ n }}"> | |
21 | - {{ md(opt) }} | |
22 | - </a> | |
23 | - {% end %} | |
24 | - </div> | |
25 | - </fieldset> | |
26 | - | |
27 | - </div> | |
28 | -</div> | |
29 | 14 | \ No newline at end of file |
15 | +</fieldset> | |
16 | +{% end %} | |
30 | 17 | \ No newline at end of file | ... | ... |
templates/question-text.html
1 | -{% autoescape %} | |
1 | +{% extends "question.html" %} | |
2 | 2 | |
3 | - | |
4 | -<div class="panel panel-default"> | |
5 | - <div class="panel-heading"> | |
6 | - <!-- <h3 id="title"> --> | |
7 | - {{ question['title'] }} | |
8 | - <!-- </h3> --> | |
9 | - </div> | |
10 | - | |
11 | - <div class="panel-body"> | |
12 | - | |
13 | - <div id="text"> | |
14 | - {{ md(question['text']) }} | |
15 | - </div> | |
16 | - | |
17 | - <fieldset data-role="controlgroup"> | |
18 | - <input type="text" class="form-control" id="answer" name="answer" value=""> | |
19 | - </fieldset> | |
20 | - </div> | |
21 | -</div> | |
3 | +{% block answer %} | |
4 | +<fieldset data-role="controlgroup"> | |
5 | + <input type="text" class="form-control" id="answer" name="answer" value=""> | |
6 | +</fieldset> | |
7 | +{% end %} | |
22 | 8 | \ No newline at end of file | ... | ... |
templates/question-textarea.html
1 | +{% extends "question.html" %} | |
1 | 2 | {% autoescape %} |
2 | 3 | |
3 | - | |
4 | -<div class="panel panel-default"> | |
5 | - <div class="panel-heading"> | |
6 | - <!-- <h3 id="title"> --> | |
7 | - {{ question['title'] }} | |
8 | - <!-- </h3> --> | |
9 | - </div> | |
10 | - | |
11 | - <div class="panel-body"> | |
12 | - <div id="text"> | |
13 | - {{ md(question['text']) }} | |
14 | - </div> | |
15 | - | |
16 | - <textarea class="form-control" rows="{{ question['lines'] }}" name="answer"></textarea><br /> | |
17 | - <input type="hidden" name="question_ref" value="{{ question['ref'] }}"> | |
18 | - </div> | |
19 | -</div> | |
4 | +{% block answer %} | |
5 | +<textarea class="form-control" rows="{{ question['lines'] }}" name="answer"></textarea><br /> | |
6 | +<input type="hidden" name="question_ref" value="{{ question['ref'] }}"> | |
7 | +{% end %} | |
20 | 8 | \ No newline at end of file | ... | ... |