summaryrefslogtreecommitdiff
path: root/yaksh/templates
diff options
context:
space:
mode:
Diffstat (limited to 'yaksh/templates')
-rw-r--r--yaksh/templates/manage.html30
-rw-r--r--yaksh/templates/yaksh/course_forum.html52
-rw-r--r--yaksh/templates/yaksh/course_students.html154
-rw-r--r--yaksh/templates/yaksh/grade_user.html109
-rw-r--r--yaksh/templates/yaksh/monitor.html366
-rw-r--r--yaksh/templates/yaksh/paginator.html6
-rw-r--r--yaksh/templates/yaksh/post_comments.html7
-rw-r--r--yaksh/templates/yaksh/regrade.html175
-rw-r--r--yaksh/templates/yaksh/user_data.html5
-rw-r--r--yaksh/templates/yaksh/view_notifications.html62
10 files changed, 464 insertions, 502 deletions
diff --git a/yaksh/templates/manage.html b/yaksh/templates/manage.html
index 8e74494..6047fc5 100644
--- a/yaksh/templates/manage.html
+++ b/yaksh/templates/manage.html
@@ -12,13 +12,33 @@
<div class="collapse navbar-collapse" id="navbarColor01">
<ul class="navbar-nav mr-auto">
- <li class="nav-item"><a class="nav-link" href="{% url 'yaksh:show_questions' %}">Questions</a></li>
- <li class="nav-item"><a class="nav-link" href="{% url 'yaksh:courses' %}">Courses</a></li>
- <li class="nav-item"><a class="nav-link" href="{% url 'yaksh:monitor' %}">Monitor</a></li>
- <li class="nav-item"><a class="nav-link" href="{% url 'yaksh:grade_user' %}">Grade User</a></li>
- <li class="nav-item"><a class="nav-link" href="{% url 'yaksh:grader' %}"> Regrade </a></li>
+ <li class="nav-item">
+ <a class="nav-link" href="{% url 'yaksh:show_questions' %}">
+ Questions
+ </a>
+ </li>
+ <li class="nav-item">
+ <a class="nav-link" href="{% url 'yaksh:courses' %}">
+ Courses
+ </a>
+ </li>
+ <li class="nav-item">
+ <a class="nav-link" href="{% url 'yaksh:grade_user' %}">
+ Quizzes
+ </a>
+ </li>
</ul>
<ul class="navbar-nav ml-auto">
+ <li class="nav-item">
+ <a class="nav-link" href="{% url 'yaksh:view_notifications' %}">
+ <i class="fa fa-bell" style="size: 18px"></i>&nbsp;Notifications
+ {% if request.custom_notifications > 0 %}
+ <span class="badge badge-success badge-pill">
+ {{request.custom_notifications}}
+ </span>
+ {% endif %}
+ </a>
+ </li>
<li class="nav-item dropdown my-lg-0" style="font-size: 1.2rem">
<a class="dropdown-toggle nav-link" id="user_dropdown" data-toggle="dropdown" href="#">{{user.get_full_name|title}}
</a>
diff --git a/yaksh/templates/yaksh/course_forum.html b/yaksh/templates/yaksh/course_forum.html
index e6b6a90..4724981 100644
--- a/yaksh/templates/yaksh/course_forum.html
+++ b/yaksh/templates/yaksh/course_forum.html
@@ -12,23 +12,19 @@
<div class="d-flex p-2 bd-highlight">
<div class="col-md-4">
{% if moderator %}
- <a href="{% url 'yaksh:course_detail' course.id %}" class="btn btn-primary">Back to Course</a>
+ <a href="{% url 'yaksh:course_detail' course.id %}" class="btn btn-primary">
+ <i class="fa fa-arrow-left"></i>&nbsp;Back
+ </a>
{% else %}
- <a href="{% url 'yaksh:course_modules' course.id %}" class="btn btn-primary">Back to Course</a>
+ <a href="{% url 'yaksh:course_modules' course.id %}" class="btn btn-primary">
+ <i class="fa fa-arrow-left"></i>&nbsp;Back
+ </a>
{% endif %}
</div>
- <div class="col-md-4">
- <form class="my-2 my-lg-0" action="" method="GET">
- <div class="input-group">
- <input type="search" placeholder="Search" name="search" class="form-control">
- <span class="input-group-append">
- <button class="btn btn-outline-info" type="submit"><i class="fa fa-search"></i>&nbsp;Search</button>
- </span>
- </div>
- </form>
- </div>
- <div class="col-md-4">
- <button type="button" class="btn btn-primary pull-right" data-toggle="modal" data-target="#newPostModal">New Post</button>
+ <div class="col-md">
+ <button type="button" class="btn btn-success pull-right" data-toggle="modal" data-target="#newPostModal">
+ <i class="fa fa-plus-circle"></i>&nbsp;New Post
+ </button>
</div>
</div>
<!-- Modal -->
@@ -58,12 +54,34 @@
</div>
</div>
<br>
+ <div class="row justify-content-center">
+ <div class="col-md-6">
+ <form class="my-2 my-lg-0" action="" method="GET">
+ <div class="input-group">
+ <input type="search" placeholder="Search Post" name="search_post" class="form-control">
+ <span class="input-group-append">
+ <button class="btn btn-outline-info">
+ <i class="fa fa-search"></i>&nbsp;Search
+ </button>
+ </span>
+ </div>
+ </form>
+ </div>
+ <div class="col-md-4">
+ <a class="btn btn-outline-danger" href="{% url 'yaksh:course_forum' course.id %}">
+ <i class="fa fa-times"></i>&nbsp;Clear Search
+ </a>
+ </div>
+ </div>
<br>
+ {% with objects as posts %}
{% if posts %}
+ {% include "yaksh/paginator.html" %}
+ <br>
<table id="posts_table" class="tablesorter table">
<thead class="thread-inverse">
<tr>
- <th width="700">Questions</th>
+ <th width="700">Posts</th>
<th>Created by</th>
<th>Replies</th>
<th>Last reply</th>
@@ -98,10 +116,12 @@
{% endfor %}
</tbody>
</table>
+ <br>
+ {% include "yaksh/paginator.html" %}
{% else %}
No discussion posts are there yet. Create one to start discussing.
{% endif %}
- {% include "yaksh/paginator.html" %}
+ {% endwith %}
</div>
{% endblock content %}
{% block script %}
diff --git a/yaksh/templates/yaksh/course_students.html b/yaksh/templates/yaksh/course_students.html
index 2052a69..e8ca800 100644
--- a/yaksh/templates/yaksh/course_students.html
+++ b/yaksh/templates/yaksh/course_students.html
@@ -3,7 +3,7 @@
<div id="accordian-upload" class="card">
<div class="card-header">
<a class="card-link" data-toggle="collapse" href="#upload_users_csv">
- Upload Users&nbsp;<i class="fa fa-angle-down"></i>
+ Upload Users <i class="fa fa-angle-down"></i>
</a>
</div>
</div>
@@ -48,60 +48,59 @@
<div id="accordian-request" class="card">
<div class="card-header">
<a class="card-link" data-toggle="collapse" href="#requested">
- Requested Students&nbsp;<i class="fa fa-angle-down"></i>
+ Requested Students <i class="fa fa-angle-down"></i>
</a>
</div>
</div>
<div id="requested" class="collapse show" data-parent="#accordion-request">
- {% if requested %}
+ {% if requested_users %}
<br>
- <input type="checkbox" class="checkall"/>&nbsp;
- <font size="5">Select all</font>
+ <input type="checkbox" class="checkall"/> Select all
<div id="enroll-all">
- <form action="{% url 'yaksh:enroll_users' course.id %}" method="post">
+ <form action="{% url 'yaksh:enroll_reject_user' course.id %}" method="post">
{% csrf_token %}
<table id="requested_table" class="tablesorter table table-striped table-responsive-sm course-detail" data-sortlist="[1,0]">
<thead>
<th></th>
- <th>Full Name&nbsp;<i class="fa fa-sort"></i></th>
- <th>Email&nbsp;<i class="fa fa-sort"></i></th>
- <th>Roll Number&nbsp;<i class="fa fa-sort"></i></th>
- <th>Institute&nbsp;<i class="fa fa-sort"></i></th>
- <th>Department&nbsp;<i class="fa fa-sort"></i></th>
+ <th>Full Name <i class="fa fa-sort"></i></th>
+ <th>Email <i class="fa fa-sort"></i></th>
+ <th>Roll Number <i class="fa fa-sort"></i></th>
+ <th>Institute <i class="fa fa-sort"></i></th>
+ <th>Department <i class="fa fa-sort"></i></th>
<th>Enroll/Reject</th>
</thead>
<tbody>
- {% for request in requested %}
+ {% for user in requested_users %}
<tr>
<td>
{{ forloop.counter }}.
- <input type="checkbox" name="check" value="{{ request.id }}">
+ <input type="checkbox" name="check" value="{{ user.id }}">
</td>
- <td>{{request.get_full_name}}</td>
- <td> {{request.email}}</td>
- {% with request.profile as request_profile %}
- <td> {{request_profile.roll_number}}</td>
- <td> {{request_profile.institute}}</td>
- <td> {{request_profile.department}}</td>
+ <td>{{user.get_full_name}}</td>
+ <td> {{user.email}}</td>
+ {% with user.profile as user_profile %}
+ <td> {{user_profile.roll_number}}</td>
+ <td> {{user_profile.institute}}</td>
+ <td> {{user_profile.department}}</td>
{% endwith %}
<td>
- <a class="btn btn-success"
- href="{% url 'yaksh:enroll_user' course.id request.id %}">
- <i class="fa fa-plus-square"></i>
- Enroll </a>
- <a class="btn btn-danger"
- href="{% url 'yaksh:reject_user' course.id request.id %}">
- <i class="fa fa-minus-square"></i>
- Reject </a>
+ <a class="btn btn-success" href="{% url 'yaksh:enroll_user' course.id user.id %}">
+ <i class="fa fa-plus-square"></i>
+ Enroll
+ </a>
+ <a class="btn btn-danger" href="{% url 'yaksh:reject_user' course.id user.id %}">
+ <i class="fa fa-minus-square"></i>
+ Reject
+ </a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
- <button class="btn btn-success btn-lg" type="submit" name='enroll' value='enroll'>
- <i class="fa fa-plus-square"></i>
- Enroll Selected
- </button> <br>
+ <input class="btn btn-success btn-lg" type="submit" name='enroll' value='enroll selected'>
+ </input>
+ <input class="btn btn-danger btn-lg" type="submit" name='reject' value='reject selected'>
+ </input>
</form>
</div>
{% else %}
@@ -116,45 +115,43 @@
<div id="accordian-enrolled" class="card">
<div class="card-header">
<a class="card-link" data-toggle="collapse" href="#enrolled">
- Enrolled Students&nbsp;<i class="fa fa-angle-down"></i>
+ Enrolled Students <i class="fa fa-angle-down"></i>
</a>
</div>
</div>
<div id="enrolled" class="collapse hide" data-parent="#accordion-enrolled">
- {% if enrolled %}
+ {% if enrolled_users %}
<br>
- <input type="checkbox" class="reject"/>&nbsp;
- <font size="5">Select all</font>
+ <input type="checkbox" class="reject"/> Select all
<div id="reject">
- <form action="{% url 'yaksh:reject_users' course.id %}" method="post" id="reject-form">
+ <form action="{% url 'yaksh:reject_enrolled_users' course.id %}" method="post" id="reject-form">
{% csrf_token %}
<table id="enrolled_table" class="tablesorter table table-striped table-responsive-sm course-detail" data-sortlist="[1,0]" style="width: 100%">
<thead>
<th></th>
- <th>Full Name&nbsp;<i class="fa fa-sort"></i></th>
- <th>Email&nbsp;<i class="fa fa-sort"></i></th>
- <th>Roll Number&nbsp;<i class="fa fa-sort"></i></th>
- <th>Institute&nbsp;<i class="fa fa-sort"></i></th>
- <th>Department&nbsp;<i class="fa fa-sort"></i></th>
+ <th>Full Name <i class="fa fa-sort"></i></th>
+ <th>Email <i class="fa fa-sort"></i></th>
+ <th>Roll Number <i class="fa fa-sort"></i></th>
+ <th>Institute <i class="fa fa-sort"></i></th>
+ <th>Department <i class="fa fa-sort"></i></th>
<th>Reject</th>
</thead>
<tbody>
- {% for enroll in enrolled %}
+ {% for user in enrolled_users %}
<tr>
<td>
{{ forloop.counter }}.
- <input type="checkbox" name="check" value="{{ enroll.id }}">
+ <input type="checkbox" name="check" value="{{ user.id }}">
</td>
- <td> {{ enroll.get_full_name|title }} </td>
- <td> {{enroll.email}}</td>
- {% with enroll.profile as enroll_profile %}
- <td> {{enroll_profile.roll_number}}</td>
- <td> {{enroll_profile.institute}}</td>
- <td> {{enroll_profile.department}}</td>
+ <td> {{ user.get_full_name|title }} </td>
+ <td> {{user.email}}</td>
+ {% with user.profile as user_profile %}
+ <td> {{user_profile.roll_number}}</td>
+ <td> {{user_profile.institute}}</td>
+ <td> {{user_profile.department}}</td>
{% endwith %}
<td>
- <a class="btn btn-danger"
- href="{% url 'yaksh:reject_user' course.id enroll.id %}">
+ <a class="btn btn-danger" href="{% url 'yaksh:reject_enrolled_user' course.id user.id %}">
<i class="fa fa-minus-square"></i>
Reject
</a>
@@ -163,10 +160,8 @@
{% endfor %}
</tbody>
</table>
- <button class="btn btn-danger btn-lg" type="submit" name='reject' value='reject'>
- <i class="fa fa-minus-square"></i>
- Reject Selected
- </button> <br>
+ <input class="btn btn-danger btn-lg" type="submit" name='reject' value='reject selected'>
+ </input>
</form>
</div>
{% else %}
@@ -182,56 +177,53 @@
<div id="accordian-rejected" class="card">
<div class="card-header">
<a class="card-link" data-toggle="collapse" href="#rejected">
- Rejected Students&nbsp;<i class="fa fa-angle-down"></i>
+ Rejected Students <i class="fa fa-angle-down"></i>
</a>
</div>
</div>
<div id="rejected" class="collapse hide" data-parent="#accordion-rejected">
- {% if rejected %}
+ {% if rejected_users %}
<br>
- <input type="checkbox" class="enroll"/>&nbsp;
- <font size="5">Select all</font>
+ <input type="checkbox" class="enroll"/> Select all
<div id="enroll">
- <form action="{% url 'yaksh:enroll_rejected' course.id %}" method="post">
+ <form action="{% url 'yaksh:enroll_rejected_users' course.id %}" method="post">
{% csrf_token %}
<table id="rejected_table" class="tablesorter table table-striped table-responsive-sm course-detail" data-sortlist="[1,0]">
<thead>
- <th>Full Name&nbsp;<i class="fa fa-sort"></i></th>
- <th>Email&nbsp;<i class="fa fa-sort"></i></th>
- <th>Roll Number&nbsp;<i class="fa fa-sort"></i></th>
- <th>Institute&nbsp;<i class="fa fa-sort"></i></th>
- <th>Department&nbsp;<i class="fa fa-sort"></i></th>
+ <th>Full Name <i class="fa fa-sort"></i></th>
+ <th>Email <i class="fa fa-sort"></i></th>
+ <th>Roll Number <i class="fa fa-sort"></i></th>
+ <th>Institute <i class="fa fa-sort"></i></th>
+ <th>Department <i class="fa fa-sort"></i></th>
<th>Enroll</th>
</thead>
<tbody>
- {% for reject in rejected %}
+ {% for user in rejected_users %}
<tr>
<td>
{{ forloop.counter }}.
- <input type="checkbox" name="check" value="{{ reject.id }}">
+ <input type="checkbox" name="check" value="{{ user.id }}">
</td>
- <td>{{reject.get_full_name|title}}</td>
- <td> {{reject.email}}</td>
- {% with reject.profile as reject_profile %}
- <td> {{reject_profile.roll_number}}</td>
- <td> {{reject_profile.institute}}</td>
- <td> {{reject_profile.department}}</td>
+ <td>{{user.get_full_name|title}}</td>
+ <td> {{user.email}}</td>
+ {% with user.profile as user_profile %}
+ <td> {{user_profile.roll_number}}</td>
+ <td> {{user_profile.institute}}</td>
+ <td> {{user_profile.department}}</td>
{% endwith %}
<td>
- <a class="btn btn-success"
- href="{% url 'yaksh:enroll_rejected' course.id reject.id %}">
- <i class="fa fa-plus-square"></i>
- Enroll </a>
+ <a class="btn btn-success" href="{% url 'yaksh:enroll_rejected_user' course.id user.id %}">
+ <i class="fa fa-plus-square"></i>
+ Enroll
+ </a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<br>
- <button class="btn btn-success btn-lg" type="submit" name='enroll' value='enroll'>
- <i class="fa fa-plus-square"></i>
- Enroll Selected
- </button>
+ <input class="btn btn-success btn-lg" type="submit" name='enroll' value='enroll selected'>
+ </input>
<br>
</form>
</div>
diff --git a/yaksh/templates/yaksh/grade_user.html b/yaksh/templates/yaksh/grade_user.html
index f4c7d67..a9ab53e 100644
--- a/yaksh/templates/yaksh/grade_user.html
+++ b/yaksh/templates/yaksh/grade_user.html
@@ -2,9 +2,9 @@
{% load custom_filters %}
{% load static %}
-{% block title %} Grade User {% endblock %}
+{% block title %} Grader {% endblock %}
-{% block pagetitle %} Grade User {% endblock pagetitle %}
+{% block pagetitle %} Grader {% endblock pagetitle %}
{% block script %}
<script type="text/javascript" src="{% static 'yaksh/js/jquery.tablesorter.min.js' %}">
@@ -51,7 +51,7 @@ function searchNames() {
</h5>
</div>
<div class="col-md">
- <a class="card-link btn btn-info" data-toggle="collapse" href="#collapse{{course.id}}">
+ <a class="card-link btn btn-outline-success" data-toggle="collapse" href="#collapse{{course.id}}">
Details
<i class="fa fa-toggle-down" id="toggle_course_{{course.id}}"></i>
</a>
@@ -70,7 +70,12 @@ function searchNames() {
{{quiz.description}}
</div>
<div class="col-md-2">
- <a href="{% url 'yaksh:grade_user' quiz.id course.id%}" class="btn btn-primary">
+ <a href="{% url 'yaksh:monitor' quiz.id course.id%}" class="btn btn-primary">
+ Monitor
+ </a>
+ </div>
+ <div class="col-md-2">
+ <a href="{% url 'yaksh:grade_user' quiz.id course.id%}" class="btn btn-info">
Grade
</a>
</div>
@@ -135,6 +140,46 @@ function searchNames() {
</a>
<br><br>
{% endif %}
+ {% if status == 'grade' and users %}
+ <div id="accordian-questions" class="card">
+ <div class="card-header">
+ <a class="card-link" data-toggle="collapse" href="#questions">
+ Regrade papers by questions&nbsp;<i class="fa fa-angle-down"></i>
+ </a>
+ </div>
+ <div id="questions" class="collapse hide" data-parent="#accordion-questions">
+ {% with quiz.questionpaper_set.get as qp %}
+ <div class="card-body">
+ <table class="table table-responsive-sm">
+ <thead>
+ <tr>
+ <th>Questions</th>
+ <th>Type</th>
+ <th>Marks</th>
+ <th>Regrade</th>
+ </tr>
+ </thead>
+ <tbody>
+ {% for question in qp.get_question_bank %}
+ <tr>
+ <td>{{ question.summary }}</td>
+ <td>{{ question.get_type_display }}</td>
+ <td>{{ question.points }}</td>
+ <td>
+ <a href="{% url 'yaksh:regrade_by_quiz' course_id quiz.questionpaper_set.get.id question.id %}" class="btn btn-outline-success">
+ <i class="fa fa-repeat"></i>&nbsp;Regrade
+ </a>
+ </td>
+ </tr>
+ {% endfor %}
+ </tbody>
+ </table>
+ </div>
+ {% endwith %}
+ </div>
+ </div>
+ <br>
+ {% endif %}
{% if messages %}
{% for message in messages %}
@@ -251,7 +296,16 @@ function searchNames() {
{% if paper.answers.count %}
<div class="card">
<div class="card-header">
- Submission Details
+ <div class="row">
+ <div class="col-md-6">
+ Submission Details
+ </div>
+ <div class="col-md-4">
+ <a href="{% url 'yaksh:regrade_by_user' course_id quiz.questionpaper_set.get.id paper.id %}" class="btn btn-outline-success">
+ <i class="fa fa-repeat"></i>&nbsp;Regrade Whole Paper
+ </a>
+ </div>
+ </div>
</div>
<div class="card-body">
<table class="tablesorter table table-striped table-bordered table-responsive-sm" id='marks_table'>
@@ -260,6 +314,7 @@ function searchNames() {
<th>Questions</th>
<th>Type</th>
<th>Marks Obtained</th>
+ <th>Regrade by question</th>
</tr>
</thead>
<tbody>
@@ -273,6 +328,11 @@ function searchNames() {
</td>
<td>{{ question.type }}</td>
<td>{{ answer.answer.marks }}</td>
+ <td>
+ <a href="{% url 'yaksh:regrade_by_question' course_id quiz.questionpaper_set.get.id paper.id question.id %}" class="btn btn-outline-success">
+ <i class="fa fa-repeat"></i>&nbsp;Regrade
+ </a>
+ </td>
</tr>
{% endwith %}
{% endfor %}
@@ -287,7 +347,8 @@ function searchNames() {
<div class="card-header text-white bg-info">
<strong>
Details: {{forloop.counter}}. {{ question.summary }}
- <span class="marks pull-right"> Mark(s): {{ question.points }} </span>
+ <span class="marks pull-right"> Mark(s): {{ question.points }}
+ </span>
</strong>
</div>
<div class="card-body">
@@ -533,4 +594,40 @@ function searchNames() {
</div>
</div>
</div>
+{% if details %}
+ <div class="modal">
+ <div class="modal-dialog" role="document">
+ <div class="modal-content">
+ <div class="modal-header">
+ <h5 class="modal-title">Regrade</h5>
+ <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+ <span aria-hidden="true">&times;</span>
+ </button>
+ </div>
+ <div class="modal-body">
+ <table class="table table-responsive-sm">
+ <tbody>
+ {% for detail in details %}
+ {% if detail.0 %}
+ <tr class="table-success">
+ <td> Graded Successfully </td>
+ {% else%}
+ <tr class="table-danger">
+ <td> Did not Grade </td>
+ {% endif %}
+ <td> {{ detail.1|linebreaks }} </td>
+ </tr>
+ {% endfor %}
+ </tbody>
+ </table>
+ </div>
+ <div class="modal-footer">
+ <button type="button" class="btn btn-secondary" data-dismiss="modal">
+ Close
+ </button>
+ </div>
+ </div>
+ </div>
+ </div>
+{% endif %}
{% endblock%}
diff --git a/yaksh/templates/yaksh/monitor.html b/yaksh/templates/yaksh/monitor.html
index cf6888c..ef7b033 100644
--- a/yaksh/templates/yaksh/monitor.html
+++ b/yaksh/templates/yaksh/monitor.html
@@ -12,228 +12,176 @@
</script>
<script type="text/javascript">
$(document).ready(function()
- {
- $("#result-table").tablesorter({sortList: [[5,1]]});
- var papers_length = "{{papers|length}}";
- for (var i=0; i < papers_length; i++){
- var time_left = $("#time_left"+[i]);
+ {
+ $("#result-table").tablesorter({});
+ var papers_length = "{{papers|length}}";
+ for (var i=0; i < papers_length; i++){
+ var paper_status = $("#status"+[i]);
+ var hh, mm, ss;
+ var time_left = $("#time_left"+[i]);
+ if (paper_status.text() == "completed"){
+ hh = "-";
+ mm = "-";
+ ss = "-";
+ }
+ else{
var time = time_left.text();
- var hh = Math.floor(time / 3600);
- var mm = Math.floor((time - (hh * 3600)) / 60);
- var ss = time - (hh * 3600) - (mm * 60);
- time_left.text(hh + ":" + mm + ":" + ss)
- }
-});
+ hh = Math.floor(time / 3600);
+ mm = Math.floor((time - (hh * 3600)) / 60);
+ ss = time - (hh * 3600) - (mm * 60);
+ }
+ time_left.text(hh + ":" + mm + ":" + ss);
+ }
+ });
</script>
{% endif %}
{% endblock %}
{% block content %}
<div class="container">
- {# ############################################################### #}
- {# This is rendered when we are just viewing exam/monitor #}
- {% if objects %}
- {% include "yaksh/paginator.html" %}
- <div id="accordion">
- {% for course in objects %}
- <div class="card">
- <div class="card-header">
- <div class="row">
- <div class="col-md-9">
- <h5 data-toggle="tooltip" title="{{course.name}}">
- {{ course.name }}
- </h5>
- </div>
- <div class="col-md">
- <a class="card-link btn btn-info" data-toggle="collapse" href="#collapse{{course.id}}">
- Details
- <i class="fa fa-toggle-down" id="toggle_course_{{course.id}}"></i>
- </a>
- </div>
- </div>
- </div>
- <div id="collapse{{course.id}}" class="collapse hide" data-parent="#accordion">
- <div class="card-body">
- {% with course.get_quizzes as quizzes %}
- {% if quizzes %}
- <ul class="list-group">
- {% for quiz in quizzes %}
- <li class="list-group-item">
- <div class="row">
- <div class="col-md-8">
- {{quiz.description}}
- </div>
- <div class="col-md-2">
- <a href="{% url 'yaksh:monitor' quiz.id course.id%}" class="btn btn-primary">
- Monitor
- </a>
- </div>
- </div>
- </li>
- {% endfor %}
- </ul>
- {% else %}
- <center>
- <p class="badge badge-danger badge-pill">
- No Quizzes
- </p>
- </center>
- {% endif %}
- {% endwith %}
- </div>
- </div>
- </div>
- <br>
- {% endfor %}
- </div>
- {% include "yaksh/paginator.html" %}
-
- {% elif msg == 'Monitor' and not objects %}
- <br>
- <div class="alert alert-info">
- <center><h3>No courses to monitor</h3></center>
- </div>
- {% endif %}
- {# ############################################################### #}
- {# This is rendered when we are just viewing exam/monitor/quiz_num #}
- {% if msg != "Monitor" %}
- {% if quiz %}
- {% if papers %}
- <div class="card">
- <div class="table-responsive">
- <table id="course-detail" class="table">
- <tr>
- <td><b>Course Name:&nbsp</b></td>
- <td>{{course.name}}</td>
- </tr>
- <tr>
- <td><b>Quiz Name:&nbsp</b></td>
- <td>{{quiz.description}}</td>
- </tr>
- <tr>
- <td><b>Number of papers: &nbsp</b></td>
- <td>{{papers|length}}</td>
- </tr>
- <tr>
- <td><b>Papers Completed: &nbsp</b></td>
- <td>
- {% completed papers as completed_papers %}
- <b>{{completed_papers}}</b>
- </td>
- </tr>
- <tr>
- <td><b>Papers in progress: &nbsp</b></td>
- <td>
- {% inprogress papers as inprogress_papers %}
- <b>{{ inprogress_papers }}</b>
- </td>
- </tr>
- </table>
- </div>
+ {% if quiz %}
+ {% if papers %}
+ <div class="card">
+ <div class="table-responsive">
+ <table id="course-detail" class="table">
+ <tr>
+ <td><b>Course Name:&nbsp</b></td>
+ <td>{{course.name}}</td>
+ </tr>
+ <tr>
+ <td><b>Quiz Name:&nbsp</b></td>
+ <td>{{quiz.description}}</td>
+ </tr>
+ <tr>
+ <td><b>Number of papers: &nbsp</b></td>
+ <td>{{papers|length}}</td>
+ </tr>
+ <tr>
+ <td><b>Papers Completed: &nbsp</b></td>
+ <td>
+ {% completed papers as completed_papers %}
+ <b>{{completed_papers}}</b>
+ </td>
+ </tr>
+ <tr>
+ <td><b>Papers in progress: &nbsp</b></td>
+ <td>
+ {% inprogress papers as inprogress_papers %}
+ <b>{{ inprogress_papers }}</b>
+ </td>
+ </tr>
+ </table>
</div>
- <br>
- <div class="row">
- <div class="col-md-4">
- <a href="{% url 'yaksh:show_statistics' papers.0.question_paper.id course.id %}" class="btn btn-primary">
- <i class="fa fa-line-chart"></i>&nbsp;Question Statistics
- </a>
- </div>
- <div class="col-md-4">
- <button type="button" class="btn btn-info" data-toggle="modal" data-target="#csvModal">
- <i class="fa fa-download"></i>&nbsp;Download CSV
- </button>
- </div>
+ </div>
+ <br>
+ <div class="row">
+ <div class="col-md-4">
+ <a href="{% url 'yaksh:show_statistics' papers.0.question_paper.id course.id %}" class="btn btn-primary">
+ <i class="fa fa-line-chart"></i>&nbsp;Question Statistics
+ </a>
+ </div>
+ <div class="col-md-4">
+ <button type="button" class="btn btn-info" data-toggle="modal" data-target="#csvModal">
+ <i class="fa fa-download"></i>&nbsp;Download CSV
+ </button>
+ </div>
+ <div class="col-md-4">
+ <div class="badge badge-info">
+ Auto-Refreshes every 30 seconds
</div>
- <br>
- <table id="result-table" class="tablesorter table table-striped table-responsive-sm">
- <thead>
- <tr>
- <th> Name&nbsp;<i class="fa fa-sort"></i> </th>
- <th> Username&nbsp;<i class="fa fa-sort"></i> </th>
- <th> Roll No&nbsp;<i class="fa fa-sort"></i> </th>
- <th> Institute&nbsp;<i class="fa fa-sort"></i> </th>
- <th> Marks&nbsp;<i class="fa fa-sort"></i> </th>
- <th> Attempts&nbsp;<i class="fa fa-sort"></i> </th>
- <th> Time&nbsp;<i class="fa fa-sort"></i> </th>
- <th> Status&nbsp;<i class="fa fa-sort"></i> </th>
- </tr>
- </thead>
- <tbody>
- {% for paper in latest_attempts %}
- <tr>
- <td> <a href="{% url 'yaksh:user_data' paper.user.id paper.question_paper.id course.id %}">
- {{ paper.user.get_full_name.title }}</a> </td>
- <td> {{ paper.user.username }} </td>
- <td> {{ paper.user.profile.roll_number }} </td>
- <td> {{ paper.user.profile.institute }} </td>
- <td> {{ paper.marks_obtained }} </td>
- <td> {{ paper.answers.count }} </td>
- <td id="time_left{{forloop.counter0}}"> {{ paper.time_left }} </td>
- <td>{{ paper.status }}</td>
- </tr>
- {% endfor %}
- </tbody>
- </table>
- <!-- CSV Modal -->
- <div class="modal fade" id="csvModal" role="dialog">
- <div class="modal-dialog">
+ </div>
+ </div>
+ <br>
+ <table id="result-table" class="tablesorter table table-striped table-responsive-sm">
+ <thead>
+ <tr>
+ <th> Sr No. </th>
+ <th> Name&nbsp;<i class="fa fa-sort"></i> </th>
+ <th> Username&nbsp;<i class="fa fa-sort"></i> </th>
+ <th> Roll No&nbsp;<i class="fa fa-sort"></i> </th>
+ <th> Institute&nbsp;<i class="fa fa-sort"></i> </th>
+ <th> Marks&nbsp;<i class="fa fa-sort"></i> </th>
+ <th> Attempts&nbsp;<i class="fa fa-sort"></i> </th>
+ <th> Time&nbsp;<i class="fa fa-sort"></i> </th>
+ <th> Status&nbsp;<i class="fa fa-sort"></i> </th>
+ </tr>
+ </thead>
+ <tbody>
+ {% for paper in latest_attempts %}
+ <tr>
+ <td>{{forloop.counter}}</td>
+ <td> <a href="{% url 'yaksh:user_data' paper.user.id paper.question_paper.id course.id %}">
+ {{ paper.user.get_full_name.title }}</a> </td>
+ <td> {{ paper.user.username }} </td>
+ <td> {{ paper.user.profile.roll_number }} </td>
+ <td> {{ paper.user.profile.institute }} </td>
+ <td> {{ paper.marks_obtained }} </td>
+ <td> {{ paper.answers.count }} </td>
+ <td id="time_left{{forloop.counter0}}"> {{ paper.time_left }} </td>
+ <td id="status{{forloop.counter0}}">{{ paper.status }}</td>
+ </tr>
+ {% endfor %}
+ </tbody>
+ </table>
+ <!-- CSV Modal -->
+ <div class="modal fade" id="csvModal" role="dialog">
+ <div class="modal-dialog">
- <!-- Modal content-->
- <div class="modal-content">
- <div class="modal-header">
- <h3 class="modal-title">Download CSV for {{quiz.description}} </h3>
- <button type="button" class="close" data-dismiss="modal">
- <i class="fa fa-close"></i>
- </button>
+ <!-- Modal content-->
+ <div class="modal-content">
+ <div class="modal-header">
+ <h3 class="modal-title">Download CSV for {{quiz.description}} </h3>
+ <button type="button" class="close" data-dismiss="modal">
+ <i class="fa fa-close"></i>
+ </button>
+ </div>
+ <form action="{% url 'yaksh:download_quiz_csv' course.id quiz.id %}" method="post">
+ {% csrf_token %}
+ <div class="modal-body">
+ <b>Uncheck unwanted columns</b>
+ <br>
+ {% for field in csv_fields %}
+ <div class="form-check form-check-inline">
+ <label class="form-check-label">
+ <input class="form-check-input" name="csv_fields" type="checkbox" value="{{ field }}" checked> {{ field }}
+ </label>
</div>
- <form action="{% url 'yaksh:download_quiz_csv' course.id quiz.id %}" method="post">
- {% csrf_token %}
- <div class="modal-body">
- <b>Uncheck unwanted columns</b>
- <br>
- {% for field in csv_fields %}
- <div class="form-check form-check-inline">
- <label class="form-check-label">
- <input class="form-check-input" name="csv_fields" type="checkbox" value="{{ field }}" checked> {{ field }}
- </label>
- </div>
- <br>
+ <br>
+ {% endfor %}
+ <b>Select Attempt Number: Default latest attempt</b>
+ <select class="form-control" name = "attempt_number">
+ {%for attempt_number in attempt_numbers %}
+ {% if forloop.last %}
+ <option value="{{ attempt_number }}" selected>{{ attempt_number }} (Latest)</option>
+ {% else %}
+ <option value = "{{ attempt_number }}"> {{ attempt_number }}</option>
+ {% endif %}
{% endfor %}
- <b>Select Attempt Number: Default latest attempt</b>
- <select class="form-control" name = "attempt_number">
- {%for attempt_number in attempt_numbers %}
- {% if forloop.last %}
- <option value="{{ attempt_number }}" selected>{{ attempt_number }} (Latest)</option>
- {% else %}
- <option value = "{{ attempt_number }}"> {{ attempt_number }}</option>
- {% endif %}
- {% endfor %}
- </select>
- </div>
- <div class="modal-footer">
- <button type="submit" class="btn btn-success">
- <span class="fa fa-save"></span>&nbsp;Download
- </button>
- <button type="button" class="btn btn-secondary" data-dismiss="modal">
- Close
- </button>
- </div>
- </form>
- </div>
- </div>
+ </select>
+ </div>
+ <div class="modal-footer">
+ <button type="submit" class="btn btn-success">
+ <span class="fa fa-save"></span>&nbsp;Download
+ </button>
+ <button type="button" class="btn btn-secondary" data-dismiss="modal">
+ Close
+ </button>
+ </div>
+ </form>
</div>
- {% else %}
- <div class="col-md-12">
- <div class="alert alert-warning">
- <center>
- <h4>No Users Found for {{ quiz.description }}</h4>
- </center>
- </div>
</div>
- {% endif %} {# if papers #}
- {% else %}
- <h4>No Quiz Found</h4>
- {% endif %}
- {% endif %}
+ </div>
+ {% else %}
+ <div class="col-md-12">
+ <div class="alert alert-warning">
+ <center>
+ <h4>No Users Found for {{ quiz.description }}</h4>
+ </center>
+ </div>
+ </div>
+ {% endif %} {# if papers #}
+ {% else %}
+ <h4>No Quiz Found</h4>
+ {% endif %}
</div>
{% endblock %}
diff --git a/yaksh/templates/yaksh/paginator.html b/yaksh/templates/yaksh/paginator.html
index e958519..e18cbce 100644
--- a/yaksh/templates/yaksh/paginator.html
+++ b/yaksh/templates/yaksh/paginator.html
@@ -2,7 +2,7 @@
{% if objects.has_previous %}
<li class="page-item">
<a class="page-link" href="?page=1{% if request.GET.question_type %}&question_type={{ request.GET.question_type }}{% endif %}{% if request.GET.language %}&language={{ request.GET.language }}{% endif %}{% if request.GET.marks %}&marks={{ request.GET.marks }}{% endif %}{% if request.GET.question_tags %}&question_tags={{ request.GET.question_tags }}{% endif %}
- {% if request.GET.search_tags %}&search_tags={{ request.GET.search_tags }}{% endif %}{% if request.GET.search_status %}&search_status={{ request.GET.search_status }}{% endif %}" aria-label="Previous">
+ {% if request.GET.search_tags %}&search_tags={{ request.GET.search_tags }}{% endif %}{% if request.GET.search_status %}&search_status={{ request.GET.search_status }}{% endif %}{% if request.GET.search_post %}&search_post={{ request.GET.search_post }}{% endif %}" aria-label="Previous">
<span aria-hidden="true">
<i class="fa fa-angle-double-left"></i>
</span>
@@ -17,13 +17,13 @@
<span class="page-link">{{ n }}<span class="sr-only">(current)</span></span>
</li>
{% elif n > objects.number|add:'-5' and n < objects.number|add:'5' %}
- <li class="page-item"><a class="page-link" href="?page={{ n }}{% if request.GET.question_type %}&question_type={{ request.GET.question_type }}{% endif %}{% if request.GET.language %}&language={{ request.GET.language }}{% endif %}{% if request.GET.marks %}&marks={{ request.GET.marks }}{% endif %}{% if request.GET.question_tags %}&question_tags={{ request.GET.question_tags }}{% endif %}{% if request.GET.search_tags %}&search_tags={{ request.GET.search_tags }}{% endif %}{% if request.GET.search_status %}&search_status={{ request.GET.search_status }}{% endif %}">{{ n }}</a></li>
+ <li class="page-item"><a class="page-link" href="?page={{ n }}{% if request.GET.question_type %}&question_type={{ request.GET.question_type }}{% endif %}{% if request.GET.language %}&language={{ request.GET.language }}{% endif %}{% if request.GET.marks %}&marks={{ request.GET.marks }}{% endif %}{% if request.GET.question_tags %}&question_tags={{ request.GET.question_tags }}{% endif %}{% if request.GET.search_tags %}&search_tags={{ request.GET.search_tags }}{% endif %}{% if request.GET.search_status %}&search_status={{ request.GET.search_status }}{% endif %}{% if request.GET.search_post %}&search_post={{ request.GET.search_post }}{% endif %}">{{ n }}</a></li>
{% endif %}
{% endfor %}
{% if objects.has_next %}
<li class="page-item">
- <a class="page-link" href="?page={{ objects.paginator.num_pages }}{% if request.GET.question_type %}&question_type={{ request.GET.question_type }}{% endif %}{% if request.GET.language %}&language={{ request.GET.language }}{% endif %}{% if request.GET.marks %}&marks={{ request.GET.marks }}{% endif %}{% if request.GET.question_tags %}&question_tags={{ request.GET.question_tags }}{% endif %}{% if request.GET.search_tags %}&search_tags={{ request.GET.search_tags }}{% endif %}{% if request.GET.search_status %}&search_status={{ request.GET.search_status }}{% endif %}" aria-label="Next">
+ <a class="page-link" href="?page={{ objects.paginator.num_pages }}{% if request.GET.question_type %}&question_type={{ request.GET.question_type }}{% endif %}{% if request.GET.language %}&language={{ request.GET.language }}{% endif %}{% if request.GET.marks %}&marks={{ request.GET.marks }}{% endif %}{% if request.GET.question_tags %}&question_tags={{ request.GET.question_tags }}{% endif %}{% if request.GET.search_tags %}&search_tags={{ request.GET.search_tags }}{% endif %}{% if request.GET.search_status %}&search_status={{ request.GET.search_status }}{% endif %}{% if request.GET.search_post %}&search_post={{ request.GET.search_post }}{% endif %}" aria-label="Next">
<span aria-hidden="true">
<i class="fa fa-angle-double-right"></i>
</span>
diff --git a/yaksh/templates/yaksh/post_comments.html b/yaksh/templates/yaksh/post_comments.html
index 463103e..b16b80c 100644
--- a/yaksh/templates/yaksh/post_comments.html
+++ b/yaksh/templates/yaksh/post_comments.html
@@ -6,7 +6,9 @@
{% block content %}
<div class="container">
- <a class="btn btn-primary" href="{% url 'yaksh:course_forum' post.course.id %}">Back to Posts</a>
+ <a class="btn btn-primary" href="{% url 'yaksh:course_forum' post.course.id %}">
+ <i class="fa fa-arrow-left"></i>&nbsp;Back to Posts
+ </a>
<br>
<br>
<div class="card mb-2 border-dark">
@@ -56,12 +58,13 @@
{% endif %}
<br>
<div>
+ <b><u>Add comment:</u></b>
<form action="{% url 'yaksh:post_comments' post.course.id post.uid %}" method="POST" enctype='multipart/form-data'>
<div class="form-group">
{% csrf_token %}
{{form}}
</div>
- <input type="submit" value="Submit" class="btn btn-primary">
+ <input type="submit" value="Submit" class="btn btn-success">
</form>
</div>
</div>
diff --git a/yaksh/templates/yaksh/regrade.html b/yaksh/templates/yaksh/regrade.html
deleted file mode 100644
index c70e470..0000000
--- a/yaksh/templates/yaksh/regrade.html
+++ /dev/null
@@ -1,175 +0,0 @@
-{% extends "manage.html" %}
-
-{% block pagetitle %} Grader {% endblock pagetitle %}
-
-{% block content %}
-<div class="yakshwell container">
-<div class="row">
- <div class="col-md-3 yakshlabel collapse" id="sidebar">
- <div class="nav nav-pills flex-column" role="tablist" aria-orientation="vertical">
- <a href="#intro" data-toggle="pill" class="nav-link active" role="tab" aria-controls="intro" aria-selected="true" id="introtab"> Intro </a>
- <a href="#questions" data-toggle="pill" class="nav-link" role="tab" aria-controls="questions" aria-selected="false" id="questionstab"> Question-wise regrade </a>
- <a href="#quizzes" data-toggle="pill" class="nav-link" role="tab" aria-controls="quizzes" aria-selected="false" id="quizzestab"> Quiz-wise regrade </a>
- <a href="#users" data-toggle="pill" class="nav-link" role="tab" aria-controls="users" aria-selected="false" id="userstab"> User-wise regrade </a>
- </div>
- </div><!--end of siddebar-->
- <a href="#sidebar" data-toggle="collapse" id="sidebaricon"><i class="fa fa-navicon fa-lg"></i></a>
- <main class="tab-content col" id="sidebarbody">
-
-
- <div id="intro" class="tab-pane fade show active" role="tabpanel" aria-labelledby="introtab">
- <h3 class="yakshred"> Regrade </h3>
- <dl>
- <dt class="yakshgreen"> Question wise regrade </dt>
- <dd> You can regrade a question for all answerpapers for a given quiz. </dd>
- <dt class="yakshgreen"> Quiz wise regrade <dt>
- <dd> You can regrade an answerpaper for a quiz or a question for the same. </dd>
- <dt class="yakshgreen"> User wise regrade </dt>
- <dd> You can regrade an answerpaper for an user or a question for the same. </dd>
- </dl>
- </div>
- <div id="questions" class="tab-pane fade" role="tabpanel" aria-labelledby="questionstab">
- <div class="card">
- {% for course in courses %}
-
- <div class="card-body">
- <h4><span class="">
- <a href="#questions_quizzes{{ course.id }}" data-toggle="collapse" class="btn btn-outline-success">Course: {{ course }}</a>
- </span></h4>
- <div id="questions_quizzes{{ course.id }}" class="collapse card">
- <div class="card-body">
- {% for quiz in course.get_quizzes %}
- <p><a href="#questions_questions{{ course.id }}{{ quiz.id }}" data-toggle="collapse" class="btn btn-outline-info">Quiz: {{ quiz }}</a></p>
- <div id="questions_questions{{ course.id }}{{ quiz.id }}" class="collapse card">
- {% with questionpaper=quiz.questionpaper_set.get %}
- <p class="text-center yakshred h5 bg-light"> Questions: </p>
- <ol class="list-group yakshwell">
- {% for question in questionpaper.fixed_questions.all %}
- <li class="list-group-item">{{ question.summary }}
- <a href="{{ URL_ROOT }}/exam/manage/regrade/questionpaper/{{ course.id }}/{{ question.id }}/{{ questionpaper.id }}/"
- class="btn btn-success pull-right"><span class="fa fa-repeat"></span> Regrade </a>
- </li>
- {% endfor %}
- {% for random_set in questionpaper.random_questions.all %}
- {% for question in random_set.questions.all %}
- <li class="list-group-item"> {{ question.summary }}
- <a href="{{ URL_ROOT }}/exam/manage/regrade/questionpaper/{{ course.id}}/{{ question.id }}/{{ questionpaper.id }}/"
- class="btn btn-success pull-right"><span class="fa fa-repeat"></span> Regrade </a>
- </li>
- {% endfor %}
- {% endfor %}
- </ol>
- {% endwith %}<br /><br />
- </div>
- {% endfor %}
- </div>
- </div>
- </div>
-
- {% endfor %}
- </div><!--card-->
- </div>
-
- <div id="quizzes" class="tab-pane fade" role="tabpanel" aria-labelledby="quizzestab">
- <div class="card">
- {% for course in courses %}
-
- <div class="card-body">
- <h4><span class="">
- <span class=""><a href="#quizzes_quizzes{{ course.id }}" data-toggle="collapse" class="btn btn-outline-success">Course: {{ course }}</a></span>
- </span></h4>
- <div id="quizzes_quizzes{{ course.id }}" class="collapse card">
- <div class="card-body">
- {% for quiz in course.get_quizzes %}
- <p><a href="#quizzes_papers{{ course.id }}{{ quiz.id }}" data-toggle="collapse" class="btn btn-outline-info">Quiz: {{ quiz }}</a></p>
- <div id="quizzes_papers{{ course.id }}{{ quiz.id }}" class="collapse">
- <ol class="list-group yakshwell">
- {% for answerpaper in quiz.questionpaper_set.get.answerpaper_set.all %}
- <li class="list-group-item bg-light">
- Username: {{ answerpaper.user.username }}; Name: {{ answerpaper.user.get_full_name }}; Attempt Number: {{ answerpaper.attempt_number}}
- <a href="{{ URL_ROOT }}/exam/manage/regrade/paper/{{ course.id }}/{{ answerpaper.id }}/"
- class="btn btn-success btn-sm pull-right"><span class="fa fa-repeat"></span> Regrade whole paper </a>
- </li>
- <ol class="list-group yakshwell">
- {% for question in answerpaper.questions.all %}
- <li class="list-group-item"> {{ question.summary }}
- <a href="{{ URL_ROOT }}/exam/manage/regrade/answerpaper/{{ course.id }}/{{ question.id }}/{{ answerpaper.id }}/"
- class="btn btn-success btn-sm pull-right"><span class="fa fa-repeat"></span> Regrade </a>
- </li>
- {% endfor %}
- </ol>
- {% endfor %}
- </ol>
- </div>
- {% endfor %}
- </div>
- </div>
- </div>
-
- {% endfor %}
- </div><!--card-->
- </div>
-
- <div id="users" class="tab-pane fade" role="tabpanel" aria-labelledby="userstab">
- <div class="card">
- <div class="card-body">
- {% for course in courses %}
-
- <h4><span class="">
- <a href="#users_users{{ course.id }}" data-toggle="collapse" class="btn btn-outline-success">Course: {{ course }}</a>
- </span></h4>
- <div id="users_users{{ course.id }}" class="collapse card">
- <div class="card-bodys">
- {% for user in course.students.all %}
- <p><a href="#users_papers{{ course.id }}{{ user.id }}" data-toggle="collapse" class="btn btn-outline-info"> Answer Papers for {{ user.get_full_name }}</a></p>
- <div id="users_papers{{ course.id }}{{ user.id }}" class="collapse card">
- <ol class="list-group yakshwell">
- {% for answerpaper in user.answerpaper_set.all %}
- <li class="list-group-item bg-light"> Quiz: {{answerpaper.question_paper.quiz.description }}; Attempt Number: {{ answerpaper.attempt_number }}
- <a href="{{ URL_ROOT }}/exam/manage/regrade/paper/{{ course.id }}/{{ answerpaper.id }}/"
- class="btn btn-success pull-right" ><span class="fa fa-repeat"></span> Regrade whole paper </a>
- </li>
- <ol class="list-group yakshwell">
- {% for question in answerpaper.questions.all %}
- <li class="list-group-item"> {{ question.summary }}
- <a href="{{ URL_ROOT }}/exam/manage/regrade/answerpaper/{{ course.id }}/{{ question.id }}/{{ answerpaper.id }}/"
- class="btn btn-success pull-right"><span class="fa fa-repeat"></span> Regrade </a>
- </li>
- {% endfor %}
- </ol>
- {% endfor %}
- </ol>
- </div>
- {% endfor %}
- </div>
- </div>
-
- {% endfor %}
-</div>
- </div><!--well-->
- </div>
-
- </main><!--span10-->
-</div><!--row-->
-
-{% if details %}
-<div>
- <table class="table table-responsive-sm">
- <tbody>
- {% for detail in details %}
- {% if detail.0 %}
- <tr class="table-success">
- <td> Graded Successfully </td>
- {% else%}
- <tr class="table-danger">
- <td> Did not Grade </td>
- {% endif %}
- <td> {{ detail.1|linebreaks }} </td>
- </tr>
- {% endfor %}
- </tbody>
- </table>
- </div>
- {% endif %}
-</div>
-{% endblock %}
diff --git a/yaksh/templates/yaksh/user_data.html b/yaksh/templates/yaksh/user_data.html
index 6547851..6252fb3 100644
--- a/yaksh/templates/yaksh/user_data.html
+++ b/yaksh/templates/yaksh/user_data.html
@@ -33,11 +33,6 @@
</div>
</div>
{% endwith %}
- <br>
- <a href="{% url 'yaksh:grade_user' data.papers.0.question_paper.quiz.id data.user.id course_id %}" class="btn btn-info">
- Grade User
- </a>
- <br>
{% for paper in data.papers %}
<br>
<h3><b><u>Attempt Number:</u></b>&nbsp;<span class="badge badge-pill badge-info">
diff --git a/yaksh/templates/yaksh/view_notifications.html b/yaksh/templates/yaksh/view_notifications.html
new file mode 100644
index 0000000..48193ed
--- /dev/null
+++ b/yaksh/templates/yaksh/view_notifications.html
@@ -0,0 +1,62 @@
+{% extends template %}
+{% block title %} Notifications {% endblock %}
+{% block pagetitle %} Notifications {% endblock %}
+
+{% block main %}
+ <div class="container">
+ {% if messages %}
+ {% for message in messages %}
+ <div class="alert alert-dismissible alert-{{ message.tags }}">
+ <button type="button" class="close" data-dismiss="alert">
+ <i class="fa fa-close"></i>
+ </button>
+ <strong>{{ message }}</strong>
+ </div>
+ {% endfor %}
+ {% endif %}
+ {% if notifications %}
+ <form method="post" action="{% url 'yaksh:mark_notification' %}">
+ {% csrf_token %}
+ <button href="{% url 'yaksh:mark_notification' %}" class="btn btn-outline-success">
+ <i class="fa fa-check"></i>&nbsp;Mark all as read
+ </button>
+ <br><br>
+ <div class="row">
+ {% for notification in notifications %}
+ <div class="col-md-4">
+ <div class="toast show" role="alert" aria-live="assertive" aria-atomic="true">
+ {% with notification.message as message %}
+ <input type="hidden" name="uid" value="{{message.uid}}">
+ <div class="toast-header bg-{{message.message_type}}">
+ <strong class="mr-auto text-white">
+ {{message.summary}}
+ </strong>
+ <small class="text-white">
+ {{notification.timestamp|timesince:current_date_time}}
+ </small>
+ <a href="{% url 'yaksh:mark_notification' message.uid %}" class="ml-2 mb-1 close" data-dismiss="toast" aria-label="Close">
+ <span class="fa fa-check" aria-hidden="true" title="Mark as read"></span>
+ </a>
+ </div>
+ <div class="toast-body">
+ {% if user.id != message.creator.id %}
+ <p><b>From: </b>{{message.creator.get_full_name}}</p>
+ {% endif %}
+ <p><b>Description:</b></p>
+ {{message.description|safe}}
+ </div>
+ {% endwith %}
+ </div>
+ <br>
+ </div>
+ {% endfor %}
+ </div>
+ </form>
+ {% else %}
+ <br>
+ <div class="alert alert-info">
+ <center>No Notifications Found</center>
+ </div>
+ {% endif %}
+ </div>
+{% endblock %} \ No newline at end of file