From b277f9191bf8720533901e58db36851675b8f430 Mon Sep 17 00:00:00 2001 From: maheshgudi Date: Fri, 3 Feb 2017 01:28:50 +0530 Subject: added skip question feature. closes #191 The can_skip_questions attribute is to be set True for students to be able to skip questions. If it is set as False, students wont be able to skip to the next question. --- yaksh/models.py | 4 ++++ yaksh/templates/exam.html | 4 ++++ yaksh/templates/yaksh/question.html | 5 ++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/yaksh/models.py b/yaksh/models.py index b917889..b2ba91f 100644 --- a/yaksh/models.py +++ b/yaksh/models.py @@ -580,6 +580,10 @@ class Quiz(models.Model): view_answerpaper = models.BooleanField('Allow student to view their answer\ paper', default=False) + can_skip_questions = models.BooleanField("Allow students to skip questions", + default=True + ) + objects = QuizManager() class Meta: diff --git a/yaksh/templates/exam.html b/yaksh/templates/exam.html index 101f3f3..00633a3 100644 --- a/yaksh/templates/exam.html +++ b/yaksh/templates/exam.html @@ -31,6 +31,7 @@ <p> Question Navigator </p> <ul class="pagination pagination-sm"> {% for qid in paper.questions.all %} + {%if paper.question_paper.quiz.can_skip_questions%} {% if qid in paper.questions_unanswered.all %} {% if qid.id == question.id %} <li class="active"><a style="width:25%" href="#"data-toggle="tooltip" @@ -44,6 +45,9 @@ {% if qid in paper.questions_answered.all %} <li class="disabled"><a style="background-color:#B4B8BA; width:25%" href="#" data-toggle="tooltip" title="{{ qid.description }}" >{{ forloop.counter }}</a></li> {% endif %} + {% else %} + <li><a style="width:25%" href="#" data-toggle="tooltip" title="{{ qid.description|striptags }}">{{ forloop.counter }}</a></li> + {% endif %} {% endfor %} </ul> <p>Question(s) left: <b>{{ paper.questions_left }}</b></p> diff --git a/yaksh/templates/yaksh/question.html b/yaksh/templates/yaksh/question.html index 41634f2..8fea8b3 100644 --- a/yaksh/templates/yaksh/question.html +++ b/yaksh/templates/yaksh/question.html @@ -199,14 +199,17 @@ function call_skip(url) {% else %} <button class="btn btn-primary" type="submit" name="check" id="check" onClick="submitCode();">Check Answer <span class="glyphicon glyphicon-cog"></span></button> {% endif %} + {% if paper.question_paper.quiz.can_skip_questions %} {% if paper.unanswered.all|length != 1 %} <button class="btn btn-primary" onclick="call_skip('{{ URL_ROOT }}/exam/{{ question.id }}/skip/{{ paper.attempt_number }}/{{ paper.question_paper.id }}/')" name="skip" id="skip">Attempt Later <span class="glyphicon glyphicon-arrow-right"></span></button> - {% endif %} </div> </div> </div> </form> + {% endif %} + {% endif %} + <!-- Modal --> <div class="modal fade " id="upload_alert" > <div class="modal-dialog"> -- cgit From 1d5cd5253b125eb6406dd67e9f267c208658bcfc Mon Sep 17 00:00:00 2001 From: maheshgudi Date: Fri, 3 Feb 2017 14:40:50 +0530 Subject: renamed quiz model attribute from can_skip_questions to allow_skip --- yaksh/models.py | 5 ++--- yaksh/templates/exam.html | 12 ++++++++---- yaksh/templates/yaksh/question.html | 4 +--- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/yaksh/models.py b/yaksh/models.py index b2ba91f..f5c1129 100644 --- a/yaksh/models.py +++ b/yaksh/models.py @@ -580,9 +580,8 @@ class Quiz(models.Model): view_answerpaper = models.BooleanField('Allow student to view their answer\ paper', default=False) - can_skip_questions = models.BooleanField("Allow students to skip questions", - default=True - ) + allow_skip = models.BooleanField("Allow students to skip questions", + default=True) objects = QuizManager() diff --git a/yaksh/templates/exam.html b/yaksh/templates/exam.html index 00633a3..dfcaf2d 100644 --- a/yaksh/templates/exam.html +++ b/yaksh/templates/exam.html @@ -31,8 +31,8 @@ <p> Question Navigator </p> <ul class="pagination pagination-sm"> {% for qid in paper.questions.all %} - {%if paper.question_paper.quiz.can_skip_questions%} - {% if qid in paper.questions_unanswered.all %} + {%if paper.question_paper.quiz.allow_skip %} + {% if qid in paper.get_questions_unanswered %} {% if qid.id == question.id %} <li class="active"><a style="width:25%" href="#"data-toggle="tooltip" title="{{ qid.description|striptags }}" @@ -42,11 +42,15 @@ onclick="call_skip('{{ URL_ROOT }}/exam/{{ question.id }}/skip/{{ qid.id }}/{{ paper.attempt_number }}/{{ paper.question_paper.id }}/')">{{ forloop.counter }}</a></li> {% endif %} {% endif %} - {% if qid in paper.questions_answered.all %} + {% if qid in paper.get_questions_answered %} <li class="disabled"><a style="background-color:#B4B8BA; width:25%" href="#" data-toggle="tooltip" title="{{ qid.description }}" >{{ forloop.counter }}</a></li> {% endif %} {% else %} - <li><a style="width:25%" href="#" data-toggle="tooltip" title="{{ qid.description|striptags }}">{{ forloop.counter }}</a></li> + {% if qid.id == question.id %} + <li class="active"><a style="width:25%" data-toggle="tooltip" title="{{ qid.description|striptags }}">{{ forloop.counter }}</a></li> + {% else %} + <li class="disabled"><a style="width:25%" data-toggle="tooltip" title="{{ qid.description|striptags }}">{{ forloop.counter }}</a></li> + {% endif %} {% endif %} {% endfor %} </ul> diff --git a/yaksh/templates/yaksh/question.html b/yaksh/templates/yaksh/question.html index 8fea8b3..6218b18 100644 --- a/yaksh/templates/yaksh/question.html +++ b/yaksh/templates/yaksh/question.html @@ -199,8 +199,7 @@ function call_skip(url) {% else %} <button class="btn btn-primary" type="submit" name="check" id="check" onClick="submitCode();">Check Answer <span class="glyphicon glyphicon-cog"></span></button> {% endif %} - {% if paper.question_paper.quiz.can_skip_questions %} - {% if paper.unanswered.all|length != 1 %} + {% if paper.question_paper.quiz.allow_skip and not paper.get_questions_unanswered|length_is:"1" %} <button class="btn btn-primary" onclick="call_skip('{{ URL_ROOT }}/exam/{{ question.id }}/skip/{{ paper.attempt_number }}/{{ paper.question_paper.id }}/')" name="skip" id="skip">Attempt Later <span class="glyphicon glyphicon-arrow-right"></span></button> </div> </div> @@ -208,7 +207,6 @@ function call_skip(url) </form> {% endif %} - {% endif %} <!-- Modal --> <div class="modal fade " id="upload_alert" > -- cgit