Commit 24f1051c6720bca5301e5541a0daa77977cd1f47
1 parent
7c5719d8
Exists in
master
and in
1 other branch
- login and maintopics ok.
- generating question for topics not working... in progress...
Showing
6 changed files
with
90 additions
and
23 deletions
Show diff stats
serve.py
... | ... | @@ -30,11 +30,11 @@ class WebApplication(tornado.web.Application): |
30 | 30 | handlers = [ |
31 | 31 | (r'/login', LoginHandler), |
32 | 32 | (r'/logout', LogoutHandler), |
33 | - (r'/change_password', ChangePasswordHandler), | |
34 | - (r'/question', QuestionHandler), | |
33 | + # (r'/change_password', ChangePasswordHandler), | |
34 | + (r'/question', QuestionHandler), # each question | |
35 | + (r'/topic/(.+)', TopicHandler), # page for doing a topic | |
35 | 36 | (r'/', RootHandler), # show list of topics |
36 | - (r'/topic/(.+)', TopicHandler), | |
37 | - (r'/(.+)', FileHandler), | |
37 | + # (r'/(.+)', FileHandler), | |
38 | 38 | ] |
39 | 39 | settings = { |
40 | 40 | 'template_path': path.join(path.dirname(__file__), 'templates'), |
... | ... | @@ -135,7 +135,7 @@ class TopicHandler(BaseHandler): |
135 | 135 | self.render('topic.html', |
136 | 136 | uid=uid, |
137 | 137 | name=self.learn.get_student_name(uid), |
138 | - title=self.learn.get_title() | |
138 | + # title=self.learn.get_title() | |
139 | 139 | ) |
140 | 140 | |
141 | 141 | |
... | ... | @@ -218,23 +218,35 @@ class QuestionHandler(BaseHandler): |
218 | 218 | } |
219 | 219 | |
220 | 220 | @tornado.web.authenticated |
221 | - def get(self, topic=''): | |
221 | + def get(self): | |
222 | 222 | logging.debug('QuestionHandler.get') |
223 | - print("topic: " + topic) | |
223 | + | |
224 | 224 | uid = self.current_user |
225 | - question = self.learn.get_student_question(self, uid) | |
226 | - print(question) | |
227 | 225 | |
228 | - question_html = self.render_string(self.templates[question['type']],question=question, md=md) | |
229 | - response = { | |
226 | + question = self.learn.get_student_question(uid) | |
227 | + print(question) # FIXME its returning different questions on reload... | |
228 | + template = self.templates[question['type']] | |
229 | + question_html = self.render_string(template, question=question, md=md) | |
230 | + print(question_html) | |
231 | + | |
232 | + self.write({ | |
230 | 233 | 'method': 'new_question', |
231 | 234 | 'params': { |
232 | 235 | 'question': tornado.escape.to_unicode(question_html), |
233 | - 'state': tornado.escape.to_unicode(topics_html), | |
234 | - 'progress': progress, | |
236 | + 'progress': 0.3, #self.learn.get_student_progress(uid) , | |
235 | 237 | } |
236 | - } | |
237 | - self.write(response) | |
238 | + }) | |
239 | + | |
240 | + | |
241 | + # question_html = self.render_string(self.templates[question['type']],question=question, md=md) | |
242 | + # response = { | |
243 | + # 'method': 'new_question', | |
244 | + # 'params': { | |
245 | + # 'question': tornado.escape.to_unicode(question_html), | |
246 | + # 'progress': progress, | |
247 | + # } | |
248 | + # } | |
249 | + # self.write(response) | |
238 | 250 | |
239 | 251 | # handles answer posted |
240 | 252 | @tornado.web.authenticated | ... | ... |
static/logo_horizontal.png
23.2 KB
templates/login.html
... | ... | @@ -18,7 +18,7 @@ |
18 | 18 | <div class="row"> |
19 | 19 | |
20 | 20 | <div class="col-sm-4"> |
21 | - <img src="/static/logo_horizontal.png" class="img-responsive" width="60%"> | |
21 | + <img src="/static/logo_horizontal_login.png" class="img-responsive" width="60%"> | |
22 | 22 | </div> |
23 | 23 | |
24 | 24 | <div class="col-sm-8"> | ... | ... |
templates/maintopics.html
... | ... | @@ -15,7 +15,14 @@ |
15 | 15 | <link rel="stylesheet" href="/static/font-awesome/css/font-awesome.min.css"> |
16 | 16 | |
17 | 17 | <!-- Other --> |
18 | - <link rel="stylesheet" href="/static/css/learn.css"> | |
18 | + <!-- <link rel="stylesheet" href="/static/css/learn.css"> --> | |
19 | + | |
20 | + <style> | |
21 | + body { | |
22 | + margin: 0; | |
23 | + padding-top: 100px; | |
24 | + } | |
25 | + </style> | |
19 | 26 | |
20 | 27 | </head> |
21 | 28 | <!-- ===================================================================== --> | ... | ... |
templates/topic.html
... | ... | @@ -75,14 +75,10 @@ |
75 | 75 | |
76 | 76 | <div id="notifications"></div> |
77 | 77 | |
78 | - <!-- Question body --> | |
79 | 78 | <form action="/question" method="post" id="question_form" autocomplete="off"> |
80 | 79 | {% module xsrf_form_html() %} |
81 | 80 | |
82 | - <div id="question_div"> | |
83 | - Question goes here!!!! | |
84 | - <!-- questions go here --> | |
85 | - </div> | |
81 | + <div id="question_div">Question goes here!!!!</div> | |
86 | 82 | |
87 | 83 | </form> |
88 | 84 | <button class="btn btn-primary" id="submit" data-toggle="tooltip" data-placement="right" title="Shift-Enter">Continuar</button> |
... | ... | @@ -97,13 +93,65 @@ |
97 | 93 | <script src="/static/bootstrap/js/bootstrap.min.js"></script> |
98 | 94 | |
99 | 95 | <script> |
96 | + // Process the response given by the server | |
97 | + function updateQuestion(response){ | |
98 | + switch (response["method"]) { | |
99 | + case "new_question": | |
100 | + $("#question_div").html(response["params"]["question"]); | |
101 | + $('#topic_progress').css('width', (100*response["params"]["progress"])+'%').attr('aria-valuenow', 100*response["params"]["progress"]); | |
102 | + | |
103 | + MathJax.Hub.Queue(["Typeset",MathJax.Hub,"question_div"]); | |
104 | + | |
105 | + // enable shift+enter to submit and tab to spaces conversion | |
106 | + $("input:text, input:radio, input:checkbox").keydown(function (e) { | |
107 | + if (e.keyCode == 13) { | |
108 | + e.preventDefault(); | |
109 | + if (e.shiftKey) postQuestion(); | |
110 | + return false; | |
111 | + }}); | |
112 | + $("textarea").keydown(function (e) { | |
113 | + if (e.keyCode == 13 && e.shiftKey) { // shift enter | |
114 | + e.preventDefault(); | |
115 | + postQuestion(); | |
116 | + } | |
117 | + else if (e.keyCode === 9) { // tab | |
118 | + e.preventDefault(); // prevent loosing focus | |
119 | + // get caret position/selection | |
120 | + var start = this.selectionStart; | |
121 | + var end = this.selectionEnd; | |
122 | + var value = $(this).val(); | |
123 | + | |
124 | + // set textarea value to: text before caret + tab + text after caret | |
125 | + $(this).val(value.substring(0, start) + " " + value.substring(end)); | |
126 | + | |
127 | + // put caret at right position again (add one for the tab) | |
128 | + this.selectionStart = this.selectionEnd = start + 4; | |
129 | + }}); | |
130 | + $('#question_div').animateCSS('zoomIn'); | |
131 | + break; | |
132 | + | |
133 | + case "shake": | |
134 | + $('#topic_progress').css('width', (100*response["params"]["progress"])+'%').attr('aria-valuenow', 100*response["params"]["progress"]); | |
135 | + $('#question_div').animateCSS('shake'); | |
136 | + break; | |
137 | + | |
138 | + case "finished_topic": | |
139 | + $('#topic_progress').css('width', '100%').attr('aria-valuenow', 100); | |
140 | + $("#question_div").html('<img src="/static/trophy.png" alt="trophy" class="img-rounded img-responsive center-block">'); // FIXME size | |
141 | + break; | |
142 | + } | |
143 | + } | |
144 | + | |
145 | + | |
146 | + | |
100 | 147 | // Get current question |
101 | 148 | function getQuestion() { |
102 | 149 | $.ajax({ |
150 | + type: "GET", | |
103 | 151 | url: "/question", |
104 | 152 | // headers: {"X-XSRFToken": token}, |
105 | 153 | dataType: "json", // expected from server |
106 | - success: function(r) {alert(r); },//updateQuestion, | |
154 | + success: updateQuestion, | |
107 | 155 | error: function() {alert("O servidor não responde.");} |
108 | 156 | }); |
109 | 157 | } | ... | ... |