Commit e4873697bb9876d1b01e2fab05f37197eaaade60

Authored by Matheus Lins
2 parents 545ee28d e4bff4ea

conflit

app/templates/home.html
@@ -78,26 +78,27 @@ @@ -78,26 +78,27 @@
78 </div> 78 </div>
79 <div class="panel-body"> 79 <div class="panel-body">
80 <ul class="nav nav-pills nav-stacked"> 80 <ul class="nav nav-pills nav-stacked">
81 - {% if user|has_role:'student' or not user.is_staff %}  
82 - <li><a href="{% url 'course:manage' %}">{% trans 'My courses' %}</a></li>  
83 - <li><a href="{% url 'course:all_courses' %}">{% trans 'All Courses' %}</a></li>  
84 - {% endif %} 81 + <li>
  82 + <a href="#menu_courses" class="accordion" data-toggle="collapse">{% trans 'Courses' %}<span class="pull-right glyphicon glyphicon-chevron-down"></span></a>
  83 + <div id="menu_courses" class="collapse">
  84 + <ul class="nav nav-pill nav-stacked accordion_list">
  85 + <li><a href="{% url 'course:manage' %}">{% trans 'My courses' %}</a></li>
  86 + <li><a href="{% url 'course:all_courses' %}">{% trans 'All Courses' %}</a></li>
  87 + {% if user|has_role:'system_admin' or user|has_role:'professor'%}
  88 + <li><a href="{% url 'course:manage_cat' %}">{% trans 'List Category' %}</a></li>
  89 + <li><a href="{% url 'course:create' %}">{% trans 'Create Course' %}</a></li>
  90 + <li><a href="{% url 'course:create_cat' %}">{% trans 'Create Category' %}</a></li>
  91 + {% endif %}
  92 + </ul>
  93 + </div>
  94 + </li>
  95 + {% block menu %}
  96 +
  97 + {% endblock %}
85 {% if user|has_role:'system_admin' %} 98 {% if user|has_role:'system_admin' %}
86 <li> <a href="{% url 'users:manage' %}">{% trans 'Manage Users' %}</a></li> 99 <li> <a href="{% url 'users:manage' %}">{% trans 'Manage Users' %}</a></li>
87 <li> <a href="{% url 'app:settings' %}">{% trans 'Settings' %}</a></li> 100 <li> <a href="{% url 'app:settings' %}">{% trans 'Settings' %}</a></li>
88 {% endif %} 101 {% endif %}
89 - {% if user|has_role:'system_admin' or user|has_role:'professor' %}  
90 - <li>  
91 - <a href="#courses_list" class="accordion" data-toggle="collapse">{% trans 'Manage Courses' %}</a>  
92 - <div id="courses_list" class="collapse">  
93 - <ul class="nav nav-pill nav-stacked accordion_list">  
94 - {% for course in courses_list %}  
95 - <li><a href="{% url 'course:view' course.slug %}">{{ course }}</a></li>  
96 - {% endfor %}  
97 - </ul>  
98 - </div>  
99 - </li>  
100 - {% endif %}  
101 </ul> 102 </ul>
102 </div> 103 </div>
103 </div> 104 </div>
core/migrations/0004_auto_20161110_1215.py 0 → 100644
@@ -0,0 +1,21 @@ @@ -0,0 +1,21 @@
  1 +# -*- coding: utf-8 -*-
  2 +# Generated by Django 1.10 on 2016-11-10 15:15
  3 +from __future__ import unicode_literals
  4 +
  5 +import django.contrib.postgres.fields.jsonb
  6 +from django.db import migrations
  7 +
  8 +
  9 +class Migration(migrations.Migration):
  10 +
  11 + dependencies = [
  12 + ('core', '0003_auto_20161101_1457'),
  13 + ]
  14 +
  15 + operations = [
  16 + migrations.AlterField(
  17 + model_name='log',
  18 + name='context',
  19 + field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, verbose_name='Context'),
  20 + ),
  21 + ]
core/templates/base.html
@@ -8,9 +8,9 @@ @@ -8,9 +8,9 @@
8 <head> 8 <head>
9 <title>{{ title }}</title> 9 <title>{{ title }}</title>
10 10
11 - <!-- jQuery & jQuery UI -->  
12 - <script type="text/javascript" src="{% static 'js/vendor/jquery-3.1.0.min.js' %}"></script>  
13 - <script type="text/javascript" src="{% static 'js/vendor/jquery-ui.js' %}"></script> 11 + <!-- jQuery & jQuery UI -->
  12 + <script type="text/javascript" src="{% static 'js/vendor/jquery-3.1.0.min.js' %}"></script>
  13 + <script type="text/javascript" src="{% static 'js/vendor/jquery-ui.js' %}"></script>
14 14
15 <meta http-equiv="Cache-Control" content="no-cache, no-store" /> 15 <meta http-equiv="Cache-Control" content="no-cache, no-store" />
16 <link href="{% static 'img/topo-amadeus.png' %}" rel="shortcut icon" /> 16 <link href="{% static 'img/topo-amadeus.png' %}" rel="shortcut icon" />
@@ -30,9 +30,7 @@ @@ -30,9 +30,7 @@
30 <link rel="stylesheet" type="text/css" href="{% static 'css/vendor/alertifyjs/themes/bootstrap.css' %}"> 30 <link rel="stylesheet" type="text/css" href="{% static 'css/vendor/alertifyjs/themes/bootstrap.css' %}">
31 <script type="text/javascript" src="{% static 'bootstrap-3.3.7/js/bootstrap.js' %}"></script> 31 <script type="text/javascript" src="{% static 'bootstrap-3.3.7/js/bootstrap.js' %}"></script>
32 <script type="text/javascript" src="{% static 'js/vendor/bootstrap-acessibility.min.js' %}"></script> 32 <script type="text/javascript" src="{% static 'js/vendor/bootstrap-acessibility.min.js' %}"></script>
33 - <script type="text/javascript" src="{% static 'material/js/material.js' %}"></script>  
34 <script type="text/javascript" src="{% static 'material/js/material.min.js' %}"></script> 33 <script type="text/javascript" src="{% static 'material/js/material.min.js' %}"></script>
35 - <script type="text/javascript" src="{% static 'material/js/ripples.js' %}"></script>  
36 <script type="text/javascript" src="{% static 'material/js/ripples.min.js' %}"></script> 34 <script type="text/javascript" src="{% static 'material/js/ripples.min.js' %}"></script>
37 <script type="text/javascript" src="{% static 'js/vendor/bootstrap-datepicker.js' %}"></script> 35 <script type="text/javascript" src="{% static 'js/vendor/bootstrap-datepicker.js' %}"></script>
38 {% with "js/vendor/locales/bootstrap-datepicker."|add:LANGUAGE_CODE|add:".js" as locale_datepicker %} 36 {% with "js/vendor/locales/bootstrap-datepicker."|add:LANGUAGE_CODE|add:".js" as locale_datepicker %}
@@ -62,84 +60,88 @@ @@ -62,84 +60,88 @@
62 60
63 </head> 61 </head>
64 <body> 62 <body>
65 - {% block nav %}  
66 - <div class="navbar navbar-default">  
67 - <div class="navbar-header">  
68 - <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-responsive-collapse">  
69 - <span class="icon-bar"></span>  
70 - <span class="icon-bar"></span>  
71 - <span class="icon-bar"></span>  
72 - </button>  
73 - <a class="navbar-brand" href="{% url 'app:index' %}"><img class="logo" src="{% static 'img/topo-amadeus-white.png' %}" alt="Logo"/></a>  
74 - </div>  
75 - <div class="navbar-collapse collapse navbar-responsive-collapse">  
76 - <div class="col-md-5 cards-content" id= 'NavBarSearch'>  
77 - <form id="SearchForm" action="{% url 'users:search' %}" method="get" accept-charset="utf-8">  
78 - <div class="input-group">  
79 - <div class="form-group is-empty" >  
80 - <input type="text" class="form-control" placeholder="{% trans 'Search Files (.pdf, others) and/or activities' %}" name="search">  
81 - </div>  
82 - <span class="input-group-btn input-group-sm">  
83 - <button type="submit" class="btn btn-primary" id="btn-search">  
84 - <i class="fa fa-search fa-2x" aria-hidden="true" style="color:#93C741"></i>  
85 - </button>  
86 - </span>  
87 -  
88 -  
89 - </div>  
90 - </form>  
91 - </div>  
92 -  
93 - <ul class="nav navbar-nav navbar-right notifications">  
94 - <li class="" data-toggle="tooltip" data-placement="bottom" title data-original-title="notifications">  
95 - <a class="dropdown-toggle" data-toggle="dropdown"> <span id="notification-count" class="badge notification-count">{{notifications.count}}</span><i class="fa fa-bell" aria-hidden="true"></i></a>  
96 - <ul id="notification-dropdown" class="dropdown-menu">  
97 - <li class="dropdown-header"> {% trans 'Notifications' %}</li>  
98 - {% include "notifications.html" %}  
99 -  
100 - <li>  
101 - <a onclick="getNotifications(5)">  
102 - <div id="notification-see-more" class="list-group-item">  
103 - <div class="row-content">  
104 - <p class="list-group-item-text">{% trans 'See More' %}</p>  
105 - </div>  
106 - </a>  
107 - </li>  
108 - </ul>  
109 - </li>  
110 -  
111 - <li data-toggle="tooltip" data-placement="bottom" title data-original-title="{% trans 'messages' %}"> <a href="#"><i class="fa fa-comments" aria-hidden="true"></i></a> </li>  
112 - <li > <a class="link" href="{% url 'users:profile' %}">{{ user }}</a></li>  
113 - <li data-toggle="tooltip" data-placement="bottom" title data-original-title="log out"> <a href="{% url 'core:logout' %}"><i class="fa fa-sign-out" aria-hidden="true"></i></a></li>  
114 - </ul>  
115 - </div>  
116 - </div>  
117 - {% endblock %}  
118 - <div class="container-fluid">  
119 - <div class="row">  
120 - <div class="col-xs-2 col-sm-2 col-md-2 col-lg-2 col-xl-2">  
121 - {% block sidebar %}  
122 - {% endblock %}  
123 - </div>  
124 - <div class="col-xs-10 col-sm-10 col-md-10 col-lg-10 col-xl-10">  
125 - {% block breadcrumbs %}{% endblock %}  
126 - {% block render_breadcrumbs %}{% endblock %}  
127 - </div>  
128 - <div class="col-xs-10 col-sm-10 col-md-10 col-lg-10 col-xl-10">  
129 - {% block content %}{% endblock %}  
130 - </div>  
131 - </div>  
132 - </div>  
133 -  
134 - {% block script_file %}  
135 -  
136 - {% endblock script_file %}  
137 -  
138 - {% block script_link %}  
139 -  
140 - {% endblock script_link %}  
141 - <!-- Init material Bootstrap -->  
142 - <script type="text/javascript">$.material.init()</script> 63 + {% block nav %}
  64 + <div class="navbar navbar-default">
  65 + <div class="navbar-header">
  66 + <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-responsive-collapse">
  67 + <span class="icon-bar"></span>
  68 + <span class="icon-bar"></span>
  69 + <span class="icon-bar"></span>
  70 + </button>
  71 + <a class="navbar-brand" href="{% url 'app:index' %}"><img class="logo" src="{% static 'img/topo-amadeus-white.png' %}" alt="Logo"/></a>
  72 + </div>
  73 + <div class="navbar-collapse collapse navbar-responsive-collapse">
  74 + <div class="col-md-5 cards-content" id= 'NavBarSearch'>
  75 + <form id="SearchForm" action="{% url 'users:search' %}" method="get" accept-charset="utf-8">
  76 + <div class="input-group">
  77 + <div class="form-group is-empty" >
  78 + <input type="text" class="form-control" placeholder="{% trans 'Search Files (.pdf, others) and/or activities' %}" name="search">
  79 + </div>
  80 + <span class="input-group-btn input-group-sm">
  81 + <button type="submit" class="btn btn-primary" id="btn-search">
  82 + <i class="fa fa-search fa-2x" aria-hidden="true" style="color:#93C741"></i>
  83 + </button>
  84 + </span>
  85 + </div>
  86 + </form>
  87 + </div>
  88 + <ul class="nav navbar-nav navbar-right notifications">
  89 + <li class="" data-toggle="tooltip" data-placement="bottom" title data-original-title="notifications">
  90 + <a class="dropdown-toggle" data-toggle="dropdown"> <span id="notification-count" class="badge notification-count">{{notifications.count}}</span><i class="fa fa-bell" aria-hidden="true"></i></a>
  91 + <ul id="notification-dropdown" class="dropdown-menu">
  92 + <li class="dropdown-header"> {% trans 'Notifications' %}</li>
  93 + {% include "notifications.html" %}
  94 + <li>
  95 + <a onclick="getNotifications(5)">
  96 + <div id="notification-see-more" class="list-group-item">
  97 + <div class="row-content">
  98 + <p class="list-group-item-text">{% trans 'See More' %}</p>
  99 + </div>
  100 + </div>
  101 + </a>
  102 + </li>
  103 + </ul>
  104 + </li>
  105 + <li data-toggle="tooltip" data-placement="bottom" title data-original-title="{% trans 'messages' %}"> <a href="#"><i class="fa fa-comments" aria-hidden="true"></i></a> </li>
  106 + <li>
  107 + <a href="" data-toggle="dropdown">{{ user }}</a>
  108 + <ul class="dropdown-menu pull-right">
  109 + <li><a href="{% url 'users:profile' %}">{% trans 'Perfil' %}</a></li>
  110 + <li><a href="{% url 'users:update_profile' %}">{% trans 'Edit Profile' %}</a></li>
  111 + <li><a href="{% url 'users:change_password' %}">{% trans 'Change password' %}</a></li>
  112 + <li><a href="{% url 'users:remove_account' %}">{% trans 'Remove account' %}</a></li>
  113 + </ul>
  114 + </li>
  115 + <li data-toggle="tooltip" data-placement="bottom" title data-original-title="log out"> <a href="{% url 'core:logout' %}"><i class="fa fa-sign-out" aria-hidden="true"></i></a></li>
  116 + </ul>
  117 + </div>
  118 + </div>
  119 + {% endblock %}
  120 + <div class="container-fluid">
  121 + <div class="row">
  122 + <div class="col-xs-2 col-sm-2 col-md-2 col-lg-2 col-xl-2">
  123 + {% block sidebar %}
  124 + {% endblock %}
  125 + </div>
  126 + <div class="col-xs-10 col-sm-10 col-md-10 col-lg-10 col-xl-10">
  127 + {% block breadcrumbs %}{% endblock %}
  128 + {% block render_breadcrumbs %}{% endblock %}
  129 + </div>
  130 + <div class="col-xs-10 col-sm-10 col-md-10 col-lg-10 col-xl-10">
  131 + {% block content %}{% endblock %}
  132 + </div>
  133 + </div>
  134 + </div>
  135 +
  136 + {% block script_file %}
  137 +
  138 + {% endblock script_file %}
  139 +
  140 + {% block script_link %}
  141 +
  142 + {% endblock script_link %}
  143 + <!-- Init material Bootstrap -->
  144 + <script type="text/javascript">$.material.init()</script>
143 </body> 145 </body>
144 146
145 </html> 147 </html>
courses/templates/category/create.html
@@ -10,38 +10,6 @@ @@ -10,38 +10,6 @@
10 </ol> 10 </ol>
11 {% endblock %} 11 {% endblock %}
12 12
13 -{% block sidebar %}  
14 -{{block.super}}  
15 -  
16 -{% if user|has_role:'professor' or user|has_role:'system_admin' %}  
17 -  
18 - <div class="panel panel-primary navigation">  
19 - <div class="panel-heading">  
20 - <h3 class="panel-title">{% trans 'Actions' %}</h3>  
21 - </div>  
22 - <div class="panel-body">  
23 - <ul class="nav nav-pills nav-stacked">  
24 - <li><a href="{% url 'course:create' %}">{% trans 'Create Course' %}</a></li>  
25 - </ul>  
26 - </div>  
27 - </div>  
28 -  
29 -  
30 - <div class="panel panel-primary navigation">  
31 - <div class="panel-heading">  
32 - <h3 class="panel-title">{% trans 'Category' %}</h3>  
33 - </div>  
34 - <div class="panel-body">  
35 - <ul class="nav nav-pills nav-stacked">  
36 - <li><a href="{% url 'course:create_cat' %}">{% trans 'Create Category' %}</a></li>  
37 - <li><a href="{% url 'course:manage_cat' %}">{% trans 'List Category' %}</a></li>  
38 - </ul>  
39 - </div>  
40 - </div>  
41 -{% endif %}  
42 -  
43 -{% endblock %}  
44 -  
45 {% block content %} 13 {% block content %}
46 <div class="card card-content"> 14 <div class="card card-content">
47 <div class="card-body"> 15 <div class="card-body">
courses/templates/category/index.html
@@ -11,36 +11,6 @@ @@ -11,36 +11,6 @@
11 </ol> 11 </ol>
12 {% endblock %} 12 {% endblock %}
13 13
14 -{% block sidebar %}  
15 -{{block.super}}  
16 -  
17 - {% if user|has_role:'professor' or user|has_role:'system_admin' %}  
18 -  
19 - <div class="panel panel-primary navigation">  
20 - <div class="panel-heading">  
21 - <h3 class="panel-title">{% trans 'Actions' %}</h3>  
22 - </div>  
23 - <div class="panel-body">  
24 - <ul class="nav nav-pills nav-stacked">  
25 - <li><a href="{% url 'course:create' %}">{% trans 'Create Course' %}</a></li>  
26 - </ul>  
27 - </div>  
28 - </div>  
29 -  
30 - <div class="panel panel-primary navigation">  
31 - <div class="panel-heading">  
32 - <h3 class="panel-title">{% trans 'Category' %}</h3>  
33 - </div>  
34 - <div class="panel-body">  
35 - <ul class="nav nav-pills nav-stacked">  
36 - <li><a href="{% url 'course:create_cat' %}">{% trans 'Create Category' %}</a></li>  
37 - <li><a href="{% url 'course:manage_cat' %}">{% trans 'List Category' %}</a></li>  
38 - </ul>  
39 - </div>  
40 - </div>  
41 -{% endif %}  
42 -{% endblock %}  
43 -  
44 {% block content %} 14 {% block content %}
45 {% if messages %} 15 {% if messages %}
46 {% for message in messages %} 16 {% for message in messages %}
@@ -104,4 +74,4 @@ @@ -104,4 +74,4 @@
104 </div> 74 </div>
105 <div class="row" id="modal_category"> 75 <div class="row" id="modal_category">
106 <script src="{% static 'js/modal_category.js' %}"></script> 76 <script src="{% static 'js/modal_category.js' %}"></script>
107 -{% endblock %}  
108 \ No newline at end of file 77 \ No newline at end of file
  78 +{% endblock %}
courses/templates/category/update.html
1 -{% extends 'Home.html' %} 1 +{% extends 'home.html' %}
2 2
3 {% load static i18n %} 3 {% load static i18n %}
4 {% load static i18n permission_tags %} 4 {% load static i18n permission_tags %}
@@ -11,35 +11,6 @@ @@ -11,35 +11,6 @@
11 </ol> 11 </ol>
12 {% endblock %} 12 {% endblock %}
13 13
14 -{% block sidebar %}  
15 -{{block.super}}  
16 -  
17 -{% if user|has_role:'professor' or user|has_role:'system_admin' %}  
18 -  
19 - <div class="panel panel-primary navigation">  
20 - <div class="panel-heading">  
21 - <h3 class="panel-title">{% trans 'Actions' %}</h3>  
22 - </div>  
23 - <div class="panel-body">  
24 - <ul class="nav nav-pills nav-stacked">  
25 - <li><a href="{% url 'course:create' %}">{% trans 'Create Course' %}</a></li>  
26 - </ul>  
27 - </div>  
28 - </div>  
29 - <div class="panel panel-primary navigation">  
30 - <div class="panel-heading">  
31 - <h3 class="panel-title">{% trans 'Category' %}</h3>  
32 - </div>  
33 - <div class="panel-body">  
34 - <ul class="nav nav-pills nav-stacked">  
35 - <li><a href="{% url 'course:create_cat' %}">{% trans 'Create Category' %}</a></li>  
36 - <li><a href="{% url 'course:manage_cat' %}">{% trans 'List Category' %}</a></li>  
37 - </ul>  
38 - </div>  
39 - </div>  
40 -{% endif %}  
41 -{% endblock %}  
42 -  
43 {% block content %} 14 {% block content %}
44 {% if messages %} 15 {% if messages %}
45 {% for message in messages %} 16 {% for message in messages %}
courses/templates/course/course_card.html
@@ -7,13 +7,13 @@ @@ -7,13 +7,13 @@
7 <div class="col-md-1 moreAccordion" data-toggle="collapse" data-parent="#accordion-{{course.slug}}" href=".collapseOne-{{course.slug}}" aria-expanded="false" aria-controls="collapseOne-{{course.slug}}"> 7 <div class="col-md-1 moreAccordion" data-toggle="collapse" data-parent="#accordion-{{course.slug}}" href=".collapseOne-{{course.slug}}" aria-expanded="false" aria-controls="collapseOne-{{course.slug}}">
8 <button class="btn btn-default btn-sm caret-square"><i class="fa fa-caret-square-o-down fa-2x" aria-hidden="true"></i></button> 8 <button class="btn btn-default btn-sm caret-square"><i class="fa fa-caret-square-o-down fa-2x" aria-hidden="true"></i></button>
9 </div> 9 </div>
10 - <div class="col-xs-9 col-md-4 titleTopic"> 10 + <div class="col-xs-5 col-md-5 titleTopic">
11 <a role="button" href="{% url 'course:view' course.slug %}"> 11 <a role="button" href="{% url 'course:view' course.slug %}">
12 <h4>{{course.name}}</h4> 12 <h4>{{course.name}}</h4>
13 </a> 13 </a>
14 </div> 14 </div>
15 {% if user|has_role:'professor' or user|has_role:'system_admin' %} 15 {% if user|has_role:'professor' or user|has_role:'system_admin' %}
16 - <div class="col-xs-4 col-md-6 divMoreActions" > 16 + <div class="col-xs-6 col-md-6 divMoreActions" >
17 <div class="btn-group"> 17 <div class="btn-group">
18 <button class="btn btn-default btn-sm dropdown-toggle" type="button" id="moreActions" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 18 <button class="btn btn-default btn-sm dropdown-toggle" type="button" id="moreActions" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
19 <i class="fa fa-ellipsis-v fa-2x" aria-hidden="true"></i> 19 <i class="fa fa-ellipsis-v fa-2x" aria-hidden="true"></i>
@@ -55,11 +55,11 @@ @@ -55,11 +55,11 @@
55 </div> 55 </div>
56 </div> 56 </div>
57 57
58 -<div class="modal fade" id="replicateCourse" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> 58 +<div class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
59 <div class="modal-dialog" role="document"> 59 <div class="modal-dialog" role="document">
60 <div class="modal-content"> 60 <div class="modal-content">
61 <div class="modal-header"> 61 <div class="modal-header">
62 - <h4 class="modal-title" id="myModalLabel">{% trans 'Repicate Course' %}</h4> 62 + <h4 class="modal-title">{% trans 'Repicate Course' %}</h4>
63 </div> 63 </div>
64 <div class="modal-body"> 64 <div class="modal-body">
65 <section> 65 <section>
@@ -73,4 +73,4 @@ @@ -73,4 +73,4 @@
73 </div> 73 </div>
74 </div> 74 </div>
75 </div> 75 </div>
76 - <script type="text/javascript" src="{% static 'js/course.js' %}"></script>  
77 \ No newline at end of file 76 \ No newline at end of file
  77 + <script type="text/javascript" src="{% static 'js/course.js' %}"></script>
courses/templates/course/create.html
@@ -43,7 +43,7 @@ @@ -43,7 +43,7 @@
43 </div> 43 </div>
44 {% endfor %} 44 {% endfor %}
45 <div class="row text-center"> 45 <div class="row text-center">
46 - <input type="submit" value="{% trans 'Create' %}" class="btn btn-primary" /> 46 + <input type="submit" value="{% trans 'Create' %}" class="btn btn-primary btn-raised" />
47 </div> 47 </div>
48 </form> 48 </form>
49 </div> 49 </div>
courses/templates/course/delete.html
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 <!-- Modal Footer --> 20 <!-- Modal Footer -->
21 <div class="modal-footer"> 21 <div class="modal-footer">
22 <!-- Don't remove that!!! --> 22 <!-- Don't remove that!!! -->
23 - <button type="button" class="btn btn-danger btn-raised" data-dismiss="modal">{% trans "Close" %}</button> 23 + <button type="button" class="btn btn-default btn-raised" data-dismiss="modal">{% trans "Close" %}</button>
24 <button type="submit" id="button" form="delete_form" class="btn btn-primary btn-raised">{% trans "Delete" %}</button> 24 <button type="submit" id="button" form="delete_form" class="btn btn-primary btn-raised">{% trans "Delete" %}</button>
25 <script> 25 <script>
26 $("#delete_form").submit(function(event) { 26 $("#delete_form").submit(function(event) {
courses/templates/course/home.html
@@ -1,23 +0,0 @@ @@ -1,23 +0,0 @@
1 -{% extends 'app/base.html' %}  
2 -  
3 -{% load static i18n %}  
4 -{% load widget_tweaks %}  
5 -  
6 -{% block breadcrumbs %}  
7 - <ol class="breadcrumb">  
8 - <li><a href="{% url 'app:index' %}">{% trans 'Home' %}</a></li>  
9 - <li class="active">{% trans 'Home Course' %}</li>  
10 - </ol>  
11 -{% endblock %}  
12 -  
13 -{% block sidebar %}  
14 - <div class="list-group">  
15 - <a href="{% url 'course:manage' %}" class="list-group-item">  
16 - {% trans 'Courses' %}  
17 - </a>  
18 - </div>  
19 -{% endblock %}  
20 -  
21 -{% block content %}  
22 -  
23 -{% endblock %}  
courses/templates/course/index.html
@@ -10,47 +10,6 @@ @@ -10,47 +10,6 @@
10 10
11 {% endblock %} 11 {% endblock %}
12 12
13 -{% block sidebar %}  
14 -{{block.super}}  
15 - {% if user|has_role:'professor' or user|has_role:'system_admin' %}  
16 - <div class="panel panel-primary">  
17 - <div class="panel-heading">  
18 - <h3 class="panel-title">{% trans 'Category' %}</h3>  
19 - </div>  
20 - <div class="panel-body">  
21 - <ul class="nav nav-pills nav-stacked">  
22 - <li><a href="{% url 'course:create_cat' %}">{% trans 'Create Category' %}</a></li>  
23 - <li><a href="{% url 'course:manage_cat' %}">{% trans 'List Category' %}</a></li>  
24 - </ul>  
25 - </div>  
26 - </div>  
27 - {% endif %}  
28 - <div class="panel-group" id="accordion">  
29 - <div class="panel panel-primary">  
30 - <div class="panel-heading">  
31 - <h4 class="panel-title">  
32 - <a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">  
33 - </span>{% trans 'Categorys' %}</a>  
34 - </h4>  
35 - </div>  
36 - <div id="collapseOne" class="panel-collapse collapse in">  
37 - <div class="panel-body">  
38 - <table class="table">  
39 - {% for category in categorys_courses %}  
40 - <tr>  
41 - <td>  
42 - <a href="?category={{category.name}}">{{category.name}}</a>  
43 - </td>  
44 - </tr>  
45 - {% endfor %}  
46 - </table>  
47 - </div>  
48 - </div>  
49 - </div>  
50 - </div>  
51 -  
52 -{% endblock %}  
53 -  
54 {% block content %} 13 {% block content %}
55 {% if messages %} 14 {% if messages %}
56 {% for message in messages %} 15 {% for message in messages %}
@@ -64,7 +23,7 @@ @@ -64,7 +23,7 @@
64 {% endif %} 23 {% endif %}
65 24
66 <div class="col-md-12 cards-content"> 25 <div class="col-md-12 cards-content">
67 - <form id="searchform" action="{% url 'course:manage' %}" method="get" accept-charset="utf-8"> 26 + <form id="searchform" method="get" accept-charset="utf-8">
68 <div class="input-group"> 27 <div class="input-group">
69 <div class="form-group is-empty"> 28 <div class="form-group is-empty">
70 <input type="text" class="form-control" placeholder="Search Courses" name="q"></div> 29 <input type="text" class="form-control" placeholder="Search Courses" name="q"></div>
@@ -92,10 +51,10 @@ @@ -92,10 +51,10 @@
92 </div> 51 </div>
93 </div> 52 </div>
94 <div id="{{category.slug}}" class="panel-collapse collapse"> 53 <div id="{{category.slug}}" class="panel-collapse collapse">
95 - {% for course in category.course_category.all %}  
96 - {% if user in course.students.all or user in course.professors.all or user|has_role:'system_admin' %} 54 + {% for course in category.course_category %}
  55 + {# {% if user in course.students.all or user in course.professors.all or user|has_role:'system_admin' %}#}
97 {% include "course/course_card.html" %} 56 {% include "course/course_card.html" %}
98 - {% endif %} 57 + {# {% endif %}#}
99 {% endfor %} 58 {% endfor %}
100 </div> 59 </div>
101 </div> 60 </div>
@@ -104,9 +63,6 @@ @@ -104,9 +63,6 @@
104 63
105 {% endfor %} 64 {% endfor %}
106 </div> 65 </div>
107 - {% if user|has_role:'professor' or user|has_role:'system_admin' %}  
108 - <a href="{% url 'course:create' %}" class="btn btn-primary btn-fab float-button"><i class="fa fa-plus material-icons"></i></a>  
109 - {% endif %}  
110 <div class="col-md-12"> 66 <div class="col-md-12">
111 <nav aria-label="Page navigation"> 67 <nav aria-label="Page navigation">
112 <ul class="pagination"> 68 <ul class="pagination">
courses/templates/course/replicate.html
@@ -4,132 +4,139 @@ @@ -4,132 +4,139 @@
4 {% load widget_tweaks %} 4 {% load widget_tweaks %}
5 5
6 {% block breadcrumbs %} 6 {% block breadcrumbs %}
7 - <ol class="breadcrumb">  
8 - <li><a href="{% url 'app:index' %}">{% trans 'Home' %}</a></li>  
9 - <li class="active">{% trans 'Replicate Course' %}</li>  
10 - </ol> 7 +<ol class="breadcrumb">
  8 + <li><a href="{% url 'app:index' %}">{% trans 'Home' %}</a></li>
  9 + <li class="active">{% trans 'Replicate Course' %}</li>
  10 +</ol>
11 {% endblock %} 11 {% endblock %}
12 12
13 {% block content %} 13 {% block content %}
14 <div class="card card-content"> 14 <div class="card card-content">
15 - <div class="card-body">  
16 - <form method="post" action="" enctype="multipart/form-data">{% csrf_token %}  
17 - <div class="form-group is-fileinput">  
18 - <label for="id_name">{% trans 'Name' %}</label>  
19 -  
20 -  
21 - <input class="form-control" id="id_name" maxlength="100" name="name" type="text" required="" value="{{course.name}}">  
22 -  
23 - <span class="help-block">{% trans 'Course name' %}</span>  
24 -  
25 - </div>  
26 -  
27 - <div class="form-group is-fileinput">  
28 - <label for="id_objectivies">{% trans 'Objectives' %}</label>  
29 -  
30 - <textarea class="form-control" cols="80" id="id_objectivies" name="objectivies" rows="5">{{course.objectivies}}</textarea>  
31 -  
32 - <span class="help-block">{% trans 'Course objective' %}</span>  
33 -  
34 - </div>  
35 -  
36 - <div class="form-group is-fileinput">  
37 - <label for="id_content">{% trans 'Content' %}</label>  
38 -  
39 -  
40 - <textarea class="form-control" cols="80" id="id_content" name="content" rows="5">{{course.content}}</textarea>  
41 -  
42 - <span class="help-block">{% trans 'Course modules' %}</span>  
43 -  
44 - </div>  
45 -  
46 - <div class="form-group is-fileinput">  
47 - <label for="id_max_students">{% trans 'Number of studets maximum' %}</label>  
48 -  
49 -  
50 - <input class="form-control" id="id_max_students" min="0" name="max_students" type="number" value="{{course.max_students}}">  
51 -  
52 - <span class="help-block">{% trans 'Max number of students that a class can have' %}</span>  
53 -  
54 - </div>  
55 -  
56 - <div class="form-group is-fileinput">  
57 - <label for="id_init_register_date">{% trans 'Course registration start date' %}</label>  
58 -  
59 -  
60 - <input type="text" class="form-control date-picker" name="init_register_date" value="{{field.value|date:'SHORT_DATE_FORMAT'}}" min="{{now|date:'SHORT_DATE_FORMAT'}}">  
61 -  
62 - <span class="help-block">{% trans 'Date that starts the registration period of the course (dd/mm/yyyy)' %}</span>  
63 -  
64 - </div>  
65 -  
66 - <div class="form-group is-fileinput">  
67 - <label for="id_end_register_date">{% trans 'Course registration end date' %}</label>  
68 -  
69 -  
70 - <input type="text" class="form-control date-picker" name="end_register_date" value="{{field.value|date:'SHORT_DATE_FORMAT'}}" min="{{now|date:'SHORT_DATE_FORMAT'}}">  
71 -  
72 - <span class="help-block">{% trans 'Date that ends the registration period of the course (dd/mm/yyyy)' %}</span>  
73 -  
74 - </div>  
75 -  
76 - <div class="form-group is-fileinput">  
77 - <label for="id_init_date">{% trans 'Course start date' %}</label>  
78 -  
79 -  
80 - <input type="text" class="form-control date-picker" name="init_date" value="{{field.value|date:'SHORT_DATE_FORMAT'}}" min="{{now|date:'SHORT_DATE_FORMAT'}}">  
81 -  
82 - <span class="help-block">{% trans 'Date that the course starts (dd/mm/yyyy)' %}</span>  
83 -  
84 - </div>  
85 -  
86 - <div class="form-group is-fileinput">  
87 - <label for="id_end_date">{% trans 'Course end date' %}</label>  
88 -  
89 -  
90 - <input type="text" class="form-control date-picker" name="end_date" value="{{field.value|date:'SHORT_DATE_FORMAT'}}" min="{{now|date:'SHORT_DATE_FORMAT'}}">  
91 -  
92 - <span class="help-block">{% trans 'Date that the course ends (dd/mm/yyyy)' %}</span>  
93 -  
94 - </div>  
95 -  
96 - <div class="form-group is-fileinput">  
97 - <label for="id_image">{% trans 'Imagem' %}</label>  
98 -  
99 -  
100 - <input class="form-control" id="id_image" name="image" type="file">  
101 - <div class="input-group">  
102 - <input type="text" readonly="" class="form-control" placeholder="Choose your photo...">  
103 - <span class="input-group-btn input-group-sm">  
104 - <button type="button" class="btn btn-fab btn-fab-mini">  
105 - <i class="material-icons">{% trans 'attach_file' %}</i>  
106 - </button>  
107 - </span>  
108 - </div>  
109 -  
110 - <span class="help-block">{% trans 'Representative image of the course' %}</span>  
111 -  
112 - </div>  
113 -  
114 - <div class="form-group is-fileinput">  
115 - <label for="id_category">{% trans 'CourseCategory' %}</label>  
116 -  
117 -  
118 - <select class="form-control" id="id_category" name="category" required="">  
119 - {% for category in categorys_courses %}  
120 - <option value="{{category.id}}">{{category}}</option>  
121 - {% endfor %}  
122 - </select>  
123 -  
124 - <span class="help-block">{% trans 'CourseCategory which the course belongs' %}</span>  
125 -  
126 - </div>  
127 -  
128 - <div class="row text-center">  
129 - <input type="submit" value="Create" class="btn btn-primary">  
130 - </div>  
131 - </form>  
132 - </div> 15 + <div class="card-body">
  16 + <form method="post" action="" enctype="multipart/form-data">
  17 + {% csrf_token %}
  18 + <div class="form-group is-fileinput">
  19 + <label for="id_name">{% trans 'Name' %}</label>
  20 +
  21 +
  22 + <input class="form-control" id="id_name" maxlength="100" name="name" type="text" required="" value="{{course.name}}">
  23 +
  24 + <span class="help-block">{% trans 'Course name' %}</span>
  25 +
  26 + </div>
  27 +
  28 + <div class="form-group is-fileinput">
  29 + <label for="id_objectivies">{% trans 'Objectives' %}</label>
  30 +
  31 + <textarea class="form-control" cols="80" id="id_objectivies" name="objectivies" rows="5">{{ course.objectivies }}</textarea>
  32 +
  33 + <span class="help-block">{% trans 'Course objective' %}</span>
  34 +
  35 + </div>
  36 +
  37 + <div class="form-group is-fileinput">
  38 + <label for="id_content">{% trans 'Content' %}</label>
  39 +
  40 +
  41 + <textarea class="form-control" cols="80" id="id_content" name="content" rows="5">{{course.content}}</textarea>
  42 +
  43 + <span class="help-block">{% trans 'Course modules' %}</span>
  44 +
  45 + </div>
  46 +
  47 + <div class="form-group is-fileinput">
  48 + <label for="id_max_students">{% trans 'Number of studets maximum' %}</label>
  49 +
  50 +
  51 + <input class="form-control" id="id_max_students" min="0" name="max_students" type="number" value="{{course.max_students}}">
  52 +
  53 + <span class="help-block">{% trans 'Max number of students that a class can have' %}</span>
  54 +
  55 + </div>
  56 +
  57 + <div class="form-group is-fileinput">
  58 + <label for="id_init_register_date">{% trans 'Course registration start date' %}</label>
  59 +
  60 +
  61 + <input type="text" class="form-control date-picker" name="init_register_date" value="{{field.value|date:'SHORT_DATE_FORMAT'}}" min="{{now|date:'SHORT_DATE_FORMAT'}}">
  62 +
  63 + <span class="help-block">{% trans 'Date that starts the registration period of the course (dd/mm/yyyy)' %}</span>
  64 +
  65 + </div>
  66 +
  67 + <div class="form-group is-fileinput">
  68 + <label for="id_end_register_date">{% trans 'Course registration end date' %}</label>
  69 +
  70 +
  71 + <input type="text" class="form-control date-picker" name="end_register_date" value="{{field.value|date:'SHORT_DATE_FORMAT'}}" min="{{now|date:'SHORT_DATE_FORMAT'}}">
  72 +
  73 + <span class="help-block">{% trans 'Date that ends the registration period of the course (dd/mm/yyyy)' %}</span>
  74 +
  75 + </div>
  76 +
  77 + <div class="form-group is-fileinput">
  78 + <label for="id_init_date">{% trans 'Course start date' %}</label>
  79 +
  80 +
  81 + <input type="text" class="form-control date-picker" name="init_date" value="{{field.value|date:'SHORT_DATE_FORMAT'}}" min="{{now|date:'SHORT_DATE_FORMAT'}}">
  82 +
  83 + <span class="help-block">{% trans 'Date that the course starts (dd/mm/yyyy)' %}</span>
  84 +
  85 + </div>
  86 +
  87 + <div class="form-group is-fileinput">
  88 + <label for="id_end_date">{% trans 'Course end date' %}</label>
  89 +
  90 +
  91 + <input type="text" class="form-control date-picker" name="end_date" value="{{field.value|date:'SHORT_DATE_FORMAT'}}" min="{{now|date:'SHORT_DATE_FORMAT'}}">
  92 +
  93 + <span class="help-block">{% trans 'Date that the course ends (dd/mm/yyyy)' %}</span>
  94 +
  95 + </div>
  96 +
  97 + <div class="form-group is-fileinput">
  98 + <label for="id_image">{% trans 'Imagem' %}</label>
  99 +
  100 +
  101 + <input class="form-control" id="id_image" name="image" type="file">
  102 + <div class="input-group">
  103 + <input type="text" readonly="" class="form-control" placeholder="Choose your photo...">
  104 + <span class="input-group-btn input-group-sm">
  105 + <button type="button" class="btn btn-fab btn-fab-mini">
  106 + <i class="material-icons">{% trans 'attach_file' %}</i>
  107 + </button>
  108 + </span>
  109 + </div>
  110 +
  111 + <span class="help-block">{% trans 'Representative image of the course' %}</span>
  112 +
  113 + </div>
  114 +
  115 + <div class="form-group is-fileinput">
  116 + <label for="id_category">{% trans 'CourseCategory' %}</label>
  117 +
  118 +
  119 + <select class="form-control" id="id_category" name="category" required="">
  120 + {% for category in categorys_courses %}
  121 + <option value="{{category.id}}">{{category}}</option>
  122 + {% endfor %}
  123 + </select>
  124 +
  125 + <span class="help-block">{% trans 'CourseCategory which the course belongs' %}</span>
  126 +
  127 + </div>
  128 +
  129 + <div class="row text-center">
  130 + <input type="submit" value="Create" class="btn btn-primary btn-raised">
  131 + </div>
  132 + </form>
  133 + </div>
133 </div> 134 </div>
134 -</br>  
135 -{% endblock %}  
136 \ No newline at end of file 135 \ No newline at end of file
  136 + <script>
  137 + $(document).ready(function() {
  138 + $('#id_objectivies').summernote();
  139 + $('#id_content').summernote();
  140 + });
  141 + </script>
  142 +</br></br></br>
  143 +{% endblock %}
courses/templates/course/update.html
@@ -41,7 +41,7 @@ @@ -41,7 +41,7 @@
41 </div> 41 </div>
42 {% endfor %} 42 {% endfor %}
43 <div class="row text-center"> 43 <div class="row text-center">
44 - <input type="submit" value="{% trans 'Update' %}" class="btn btn-primary" /> 44 + <input type="submit" value="{% trans 'Update' %}" class="btn btn-primary btn-raised" />
45 </div> 45 </div>
46 </form> 46 </form>
47 </div> 47 </div>
@@ -56,4 +56,4 @@ @@ -56,4 +56,4 @@
56 language: locale, 56 language: locale,
57 }); 57 });
58 </script> 58 </script>
59 -{% endblock %}  
60 \ No newline at end of file 59 \ No newline at end of file
  60 +{% endblock %}
courses/templates/course/view.html
@@ -21,23 +21,6 @@ @@ -21,23 +21,6 @@
21 </ol> 21 </ol>
22 {% endblock %} 22 {% endblock %}
23 23
24 -{% block sidebar %}  
25 -{{ block.super}}  
26 - <div class="panel panel-primary">  
27 - <div class="panel-heading">  
28 - <h5>{% trans 'Categories' %}</h5>  
29 - </div>  
30 - <div class="panel-body">  
31 - <ul class="nav nav-pills nav-stacked">  
32 - <li {% if category is None %}class="active"{% endif %}><a href="{% url 'course:view' course.slug %}">{% trans 'All' %}</a></li>  
33 - {% for cat in categorys_subjects %}  
34 - <li {% if category == cat.slug %}class="active"{% endif %}><a href="{% url 'course:view_filter' course.slug cat.slug %}">{{ cat }}</a></li>  
35 - {% endfor %}  
36 - </ul>  
37 - </div>  
38 - </div>  
39 -{% endblock %}  
40 -  
41 {% block content %} 24 {% block content %}
42 25
43 <div class="col-md-12 cards-content"> 26 <div class="col-md-12 cards-content">
@@ -94,8 +77,8 @@ @@ -94,8 +77,8 @@
94 <div> 77 <div>
95 </div> 78 </div>
96 <div class="modal-footer"> 79 <div class="modal-footer">
97 - <button type="button" data-dismiss="modal" class="btn btn-default">{% trans "Cancel" %}</button>  
98 - <a href="#" target="_self"><button type="button" class="btn btn-primary"> {% trans "Confirm" %}</button></a> 80 + <button type="button" data-dismiss="modal" class="btn btn-default btn-raised">{% trans "Cancel" %}</button>
  81 + <a href="#" target="_self"><button type="button" class="btn btn-primary btn-raised"> {% trans "Confirm" %}</button></a>
99 </div> 82 </div>
100 </div> 83 </div>
101 </div> 84 </div>
@@ -132,7 +115,7 @@ @@ -132,7 +115,7 @@
132 <li><a href="{% url 'course:update_subject' subject.slug %}"> <i class="fa fa-pencil fa-fw" aria-hidden="true"></i>&nbsp; {% trans "Edit" %}</a></li> 115 <li><a href="{% url 'course:update_subject' subject.slug %}"> <i class="fa fa-pencil fa-fw" aria-hidden="true"></i>&nbsp; {% trans "Edit" %}</a></li>
133 <li><a href="{% url 'course:delete_subject' subject.slug %}" ><i class="fa fa-trash fa-fw" aria-hidden="true"></i>&nbsp; {% trans "Remove" %}</a></li> 116 <li><a href="{% url 'course:delete_subject' subject.slug %}" ><i class="fa fa-trash fa-fw" aria-hidden="true"></i>&nbsp; {% trans "Remove" %}</a></li>
134 </ul> 117 </ul>
135 - 118 +
136 </div> 119 </div>
137 </div> 120 </div>
138 {% endif %} 121 {% endif %}
courses/templates/exercise/create_exercise.html 0 → 100644
@@ -0,0 +1,74 @@ @@ -0,0 +1,74 @@
  1 +{% load widget_tweaks i18n %}
  2 +<!--MODAL CREATE LINK-->
  3 +<div class="modal fade" id="createLinksModal" tabindex="-1" role="dialog" aria-labelledby="createLink">
  4 + <div class="modal-dialog" role="document">
  5 + <div class="modal-content">
  6 + <div class="modal-header">
  7 + <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
  8 + <h4 class="modal-title" id="createLink">{% trans 'Create a New Exercise' %}</h4>
  9 + </div>
  10 + <div class="modal-body">
  11 + <!-- Card -->
  12 + <form method="post" action="" id="form-link" enctype="multipart/form-data">
  13 + {% csrf_token %}
  14 + {% for field in form %}
  15 + <div class ="form-group">
  16 + {% if field.field.required %}
  17 + <label for="{{ field.auto_id }}">{{ field.label }}<span>*</span></label>
  18 + {% endif %}
  19 + {% render_field field class='form-control input-sm' %}
  20 + {% if field.errors %}
  21 + <div class="alert alert-danger alert-dismissible clearfix" role="alert">
  22 + <button type="button" class="close" data-dismiss="alert" aria-label="Close">
  23 + <span aria-hidden="true">&times;</span>
  24 + </button>
  25 + <ul>
  26 + {% for error in field.errors %}
  27 + <li>{{ error }}</li>
  28 + {% endfor %}
  29 + </ul>
  30 + </div>
  31 + {% endif %}
  32 + </div>
  33 + {% endfor %}
  34 + <div class="form-group">
  35 + <button type="button" class="btn btn-raised btn-default " data-dismiss="modal">{% trans "Cancel" %}</button>
  36 + <button class="btn btn-raised btn-primary" type="submit">{% trans 'Submit' %}</button>
  37 + </div>
  38 + <!-- .end Card -->
  39 + </div>
  40 + </div>
  41 + </div>
  42 +</div>
  43 +<!-- EndModal -->
  44 +{% block script_link %}
  45 + {# // <script src="{% static 'js/links.js' %}"></script> #}
  46 + <script type="text/javascript">
  47 + $("#form-link").submit(function(event) {
  48 + $("#createLinksModal").modal("hide");
  49 + var data = new FormData($('#form-link').get(0));
  50 + $.ajax({
  51 + url: "{% url 'course:links:create_link' topic.slug %}",
  52 + type: $("#form-link").attr('method'),
  53 + data: data,
  54 + cache: false,
  55 + processData: false,
  56 + contentType: false,
  57 + success: function(data) {
  58 + $('#requisicoes_ajax').empty();
  59 + $('#list-topic{{ topic.id }}-links').append(data);
  60 + $('#list-topic{{ topic.id }}-links-edit').append(data);
  61 + alertify.alert('Link successfully created!')
  62 + },
  63 + error: function(data){
  64 + $("div.modal-backdrop.fade.in").remove();
  65 + $('#requisicoes_ajax').empty();
  66 + $('#requisicoes_ajax').append(data.responseText);
  67 + $('#createLinksModal').modal('show');
  68 + alertify.alert('Invalid link, insert a valid one!');
  69 + }
  70 + });
  71 + event.preventDefault();
  72 + });
  73 + </script>
  74 +{% endblock script_link %}
0 \ No newline at end of file 75 \ No newline at end of file
courses/templates/subject/delete.html
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 <!-- Modal Footer --> 20 <!-- Modal Footer -->
21 <div class="modal-footer"> 21 <div class="modal-footer">
22 <!-- Don't remove that!!! --> 22 <!-- Don't remove that!!! -->
23 - <button type="button" class="btn btn-danger btn-raised" data-dismiss="modal">{% trans "Close" %}</button> 23 + <button type="button" class="btn btn-raised btn-default" data-dismiss="modal">{% trans "Close" %}</button>
24 <button type="submit" id="button" form="delete_form" class="btn btn-primary btn-raised">{% trans "Delete" %}</button> 24 <button type="submit" id="button" form="delete_form" class="btn btn-primary btn-raised">{% trans "Delete" %}</button>
25 <script> 25 <script>
26 $("#delete_form").submit(function(event) { 26 $("#delete_form").submit(function(event) {
courses/templates/subject/form_view_student.html
@@ -42,6 +42,8 @@ @@ -42,6 +42,8 @@
42 {% if professor_links%} 42 {% if professor_links%}
43 {% include "links/create_link.html" %} 43 {% include "links/create_link.html" %}
44 {% include "links/delete_link.html" %} 44 {% include "links/delete_link.html" %}
  45 + {% else %}
  46 + {% include "exercise/create_exercise.html" %}
45 {% endif %} 47 {% endif %}
46 48
47 49
courses/templates/subject/index.html
@@ -21,11 +21,6 @@ @@ -21,11 +21,6 @@
21 <li class="active">{{ subject }}</li> 21 <li class="active">{{ subject }}</li>
22 </ol> 22 </ol>
23 {% endblock %} 23 {% endblock %}
24 -{% block sidebar %}  
25 -{{block.super}}  
26 -  
27 -  
28 -{% endblock %}  
29 24
30 {% block content %} 25 {% block content %}
31 <div class="panel panel-info"> 26 <div class="panel panel-info">
courses/templates/subject/replicate.html
@@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
19 <label for="{{ field.auto_id }}" class="control-label label-static"> {{ field.label }}</label> 19 <label for="{{ field.auto_id }}" class="control-label label-static"> {{ field.label }}</label>
20 20
21 {% if field.auto_id == 'id_init_date' or field.auto_id == 'id_end_date'%} 21 {% if field.auto_id == 'id_init_date' or field.auto_id == 'id_end_date'%}
22 - <input type="text" class="form-control date-picker" name="{{field.name}}" value="{{field.value|date:'SHORT_DATE_FORMAT'}}" min="{{now|date:'SHORT_DATE_FORMAT'}}"> 22 + <input type="text" class="form-control date-picker" name="{{field.name}}" value="{{field.value|date:'SHORT_DA E_FORMAT'}}" min="{{now|date:'SHORT_DATE_FORMAT'}}">
23 {% else %} 23 {% else %}
24 {% render_field field class='form-control' placeholder=field.label%} 24 {% render_field field class='form-control' placeholder=field.label%}
25 {% endif %} 25 {% endif %}
courses/templates/subject_category/index.html
@@ -11,10 +11,6 @@ @@ -11,10 +11,6 @@
11 </ol> 11 </ol>
12 {% endblock %} 12 {% endblock %}
13 13
14 -{% block sidebar %}  
15 -{{block.super}}  
16 -{% endblock %}  
17 -  
18 {% block content %} 14 {% block content %}
19 <div class="panel panel-info"> 15 <div class="panel panel-info">
20 <div class="panel-heading"> 16 <div class="panel-heading">
courses/templates/topic/delete.html
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 <!-- Modal Footer --> 20 <!-- Modal Footer -->
21 <div class="modal-footer"> 21 <div class="modal-footer">
22 <!-- Don't remove that!!! --> 22 <!-- Don't remove that!!! -->
23 - <button type="button" class="btn btn-danger btn-raised" data-dismiss="modal">{% trans "Close" %}</button> 23 + <button type="button" class="btn btn-default btn-raised" data-dismiss="modal">{% trans "Close" %}</button>
24 <button type="submit" id="button" form="delete_topic_{{topic.slug}}" class="btn btn-primary btn-raised">{% trans "Delete" %}</button> 24 <button type="submit" id="button" form="delete_topic_{{topic.slug}}" class="btn btn-primary btn-raised">{% trans "Delete" %}</button>
25 <script> 25 <script>
26 $("#delete_topic_{{topic.slug}}").submit(function(event) { 26 $("#delete_topic_{{topic.slug}}").submit(function(event) {
courses/templates/topic/index.html
@@ -26,10 +26,6 @@ @@ -26,10 +26,6 @@
26 </ol> 26 </ol>
27 {% endblock %} 27 {% endblock %}
28 28
29 -{% block sidebar %}  
30 -{{block.super}}  
31 -{% endblock %}  
32 -  
33 {% block content %} 29 {% block content %}
34 <div class="col-md-12 col-xs-12 col-sm-12"> 30 <div class="col-md-12 col-xs-12 col-sm-12">
35 <div class="panel panel-info"> 31 <div class="panel panel-info">
courses/views.py
@@ -31,6 +31,33 @@ import time @@ -31,6 +31,33 @@ import time
31 from rest_framework import viewsets, permissions 31 from rest_framework import viewsets, permissions
32 from .serializers import * 32 from .serializers import *
33 33
  34 +class Category:
  35 + name = None
  36 + slug = None
  37 + course_category = []
  38 +
  39 +def course_category(list_courses):
  40 +
  41 + list_courses = list_courses.distinct().order_by('category','name')
  42 + categorys_courses = []
  43 + cat_slug = None
  44 + cat = None
  45 + for course in list_courses:
  46 + if (course.category.slug != cat_slug):
  47 + if (cat != None):
  48 + categorys_courses.append(cat)
  49 + cat_slug = course.category.slug
  50 + cat = Category()
  51 + cat.name = course.category.name
  52 + cat.slug = cat_slug
  53 + cat.course_category = []
  54 + cat.course_category.append(course)
  55 +
  56 + if (cat):
  57 + categorys_courses.append(cat)
  58 +
  59 + return categorys_courses
  60 +
34 class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView): 61 class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView):
35 62
36 login_url = reverse_lazy("core:home") 63 login_url = reverse_lazy("core:home")
@@ -38,8 +65,6 @@ class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView): @@ -38,8 +65,6 @@ class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView):
38 queryset = Course.objects.all() 65 queryset = Course.objects.all()
39 template_name = 'course/index.html' 66 template_name = 'course/index.html'
40 context_object_name = 'courses' 67 context_object_name = 'courses'
41 - paginate_by = 10  
42 - aparece = True  
43 68
44 69
45 def get_queryset(self): 70 def get_queryset(self):
@@ -48,14 +73,12 @@ class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView): @@ -48,14 +73,12 @@ class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView):
48 course_search = self.request.GET.get('q', None) 73 course_search = self.request.GET.get('q', None)
49 category_search = self.request.GET.get('category', None) 74 category_search = self.request.GET.get('category', None)
50 if course_search: 75 if course_search:
51 - self.aparece = False  
52 query_list = course_search.split() 76 query_list = course_search.split()
53 result = result.filter( 77 result = result.filter(
54 reduce(operator.and_, 78 reduce(operator.and_,
55 (Q(name__icontains=q) for q in query_list)) 79 (Q(name__icontains=q) for q in query_list))
56 ) 80 )
57 if category_search: 81 if category_search:
58 - self.aparece = False  
59 query_list = category_search.split() 82 query_list = category_search.split()
60 result = result.filter( 83 result = result.filter(
61 reduce(operator.and_, 84 reduce(operator.and_,
@@ -66,58 +89,40 @@ class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView): @@ -66,58 +89,40 @@ class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView):
66 def get_context_data(self, **kwargs): 89 def get_context_data(self, **kwargs):
67 context = super(IndexView, self).get_context_data(**kwargs) 90 context = super(IndexView, self).get_context_data(**kwargs)
68 list_courses = None 91 list_courses = None
69 - categorys_courses = None  
70 - if has_role(self.request.user,'professor'):  
71 - list_courses = Course.objects.filter(Q(professors = True)|Q(professors__name = self.request.user.name)).order_by('name')  
72 - categorys_courses = CourseCategory.objects.filter(course_category__professors__name = self.request.user.name).distinct()  
73 - elif has_role(self.request.user,'system_admin'):  
74 - list_courses = queryset.order_by('name')  
75 - categorys_courses = CourseCategory.objects.all() 92 + if has_role(self.request.user,'system_admin'):
  93 + list_courses = self.get_queryset().order_by('name')
  94 + # categorys_courses = CourseCategory.objects.all()
  95 + elif has_role(self.request.user,'professor'):
  96 + list_courses = self.get_queryset().filter(professors__in = [self.request.user])
  97 + # categorys_courses = CourseCategory.objects.filter(course_category__professors__name = self.request.user.name).distinct()
76 elif has_role(self.request.user, 'student'): 98 elif has_role(self.request.user, 'student'):
77 - list_courses = Course.objects.filter(Q(students = True)|Q(students__name = self.request.user.name)).order_by('name')  
78 - categorys_courses = CourseCategory.objects.filter(course_category__students__name = self.request.user.name).distinct()  
79 -  
80 - paginator = Paginator(list_courses, self.paginate_by)  
81 - page = self.request.GET.get('page')  
82 -  
83 - try:  
84 - list_courses = paginator.page(page)  
85 - except PageNotAnInteger:  
86 - list_courses = paginator.page(1)  
87 - except EmptyPage:  
88 - list_courses = paginator.page(paginator.num_pages)  
89 -  
90 - context['list_courses'] = list_courses  
91 - context['categorys_courses'] = categorys_courses  
92 - context['aparece'] = self.aparece 99 + list_courses = self.get_queryset().filter(students__in = [self.request.user])
93 100
  101 + context['categorys_courses'] = course_category(list_courses)
94 return context 102 return context
95 103
96 class AllCoursesView(LoginRequiredMixin, NotificationMixin, generic.ListView): 104 class AllCoursesView(LoginRequiredMixin, NotificationMixin, generic.ListView):
97 105
98 login_url = reverse_lazy("core:home") 106 login_url = reverse_lazy("core:home")
99 redirect_field_name = 'next' 107 redirect_field_name = 'next'
100 - queryset = Course.objects.all()  
101 template_name = 'course/index.html' 108 template_name = 'course/index.html'
102 context_object_name = 'courses' 109 context_object_name = 'courses'
103 - paginate_by = 5  
104 - aparece = True  
105 110
106 111
107 def get_queryset(self): 112 def get_queryset(self):
108 - result = super(AllCoursesView, self).get_queryset() 113 + result = Course.objects.all()
109 114
110 course_search = self.request.GET.get('q', None) 115 course_search = self.request.GET.get('q', None)
111 category_search = self.request.GET.get('category', None) 116 category_search = self.request.GET.get('category', None)
112 if course_search: 117 if course_search:
113 - self.aparece = False 118 + # self.aparece = False
114 query_list = course_search.split() 119 query_list = course_search.split()
115 result = result.filter( 120 result = result.filter(
116 reduce(operator.and_, 121 reduce(operator.and_,
117 (Q(name__icontains=q) for q in query_list)) 122 (Q(name__icontains=q) for q in query_list))
118 ) 123 )
119 if category_search: 124 if category_search:
120 - self.aparece = False 125 + # self.aparece = False
121 query_list = category_search.split() 126 query_list = category_search.split()
122 result = result.filter( 127 result = result.filter(
123 reduce(operator.and_, 128 reduce(operator.and_,
@@ -127,25 +132,10 @@ class AllCoursesView(LoginRequiredMixin, NotificationMixin, generic.ListView): @@ -127,25 +132,10 @@ class AllCoursesView(LoginRequiredMixin, NotificationMixin, generic.ListView):
127 132
128 def get_context_data(self, **kwargs): 133 def get_context_data(self, **kwargs):
129 context = super(AllCoursesView, self).get_context_data(**kwargs) 134 context = super(AllCoursesView, self).get_context_data(**kwargs)
130 - list_courses = None  
131 - categorys_courses = None  
132 - list_courses = Course.objects.all().order_by('name')  
133 - #categorys_courses = CourseCategory.objects.all().distinct().order_by('name')  
134 - categorys_courses = CourseCategory.objects.all()  
135 - paginator = Paginator(list_courses, self.paginate_by)  
136 - page = self.request.GET.get('page')  
137 135
138 - try:  
139 - list_courses = paginator.page(page)  
140 - except PageNotAnInteger:  
141 - list_courses = paginator.page(1)  
142 - except EmptyPage:  
143 - list_courses = paginator.page(paginator.num_pages)  
144 -  
145 - context['list_courses'] = list_courses  
146 - context['categorys_courses'] = categorys_courses  
147 - context['aparece'] = self.aparece 136 + list_courses = self.get_queryset()
148 137
  138 + context['categorys_courses'] = course_category(list_courses)
149 return context 139 return context
150 140
151 class CreateCourseView(LoginRequiredMixin, HasRoleMixin, LogMixin, NotificationMixin, generic.edit.CreateView): 141 class CreateCourseView(LoginRequiredMixin, HasRoleMixin, LogMixin, NotificationMixin, generic.edit.CreateView):
@@ -1029,4 +1019,3 @@ class TopicViewSet(viewsets.ModelViewSet): @@ -1029,4 +1019,3 @@ class TopicViewSet(viewsets.ModelViewSet):
1029 queryset = Topic.objects.all() 1019 queryset = Topic.objects.all()
1030 serializer_class = TopicSerializer 1020 serializer_class = TopicSerializer
1031 permissions_class = (permissions.IsAuthenticatedOrReadOnly) 1021 permissions_class = (permissions.IsAuthenticatedOrReadOnly)
1032 -  
files/tests/__init__.py 0 → 100644
files/tests/tests.py 0 → 100644
@@ -0,0 +1,183 @@ @@ -0,0 +1,183 @@
  1 +from django.test import TestCase, Client
  2 +from django.core.urlresolvers import reverse
  3 +from django.core.files.uploadedfile import SimpleUploadedFile
  4 +from rolepermissions.shortcuts import assign_role
  5 +from django.utils.translation import ugettext_lazy as _
  6 +from core.models import MimeType
  7 +from users.models import User
  8 +from files.models import TopicFile
  9 +from files.forms import FileForm, UpdateFileForm
  10 +from courses.models import CourseCategory, Course, Subject, Topic
  11 +
  12 +class FileTestCase(TestCase):
  13 +
  14 + def setUp(self):
  15 + self.client = Client()
  16 +
  17 + self.admin = User.objects.create_user(
  18 + username = 'admin',
  19 + email = 'testing@amadeus.com',
  20 + is_staff = True,
  21 + is_active = True,
  22 + password = 'testing123'
  23 + )
  24 + assign_role(self.admin, 'system_admin')
  25 +
  26 + self.teacher = User.objects.create_user(
  27 + username = 'teacher',
  28 + email = 'teacherg@school.com',
  29 + is_staff = False,
  30 + is_active = True,
  31 + password = 'teaching123'
  32 + )
  33 + assign_role(self.teacher, 'professor')
  34 +
  35 + self.student = User.objects.create_user(
  36 + username = 'student',
  37 + email = 'student@amadeus.com',
  38 + is_staff = False,
  39 + is_active = True,
  40 + password = 'testing123',
  41 + type_profile = 2
  42 + )
  43 + assign_role(self.student, 'student')
  44 +
  45 + self.category = CourseCategory(
  46 + name = 'Categoria Teste',
  47 + slug = 'categoria_teste'
  48 + )
  49 + self.category.save()
  50 +
  51 + self.course = Course(
  52 + name = 'Curso Teste',
  53 + slug = 'curso_teste',
  54 + max_students = 50,
  55 + init_register_date = '2016-08-26',
  56 + end_register_date = '2016-10-01',
  57 + init_date = '2016-10-05',
  58 + end_date = '2017-10-05',
  59 + category = self.category,
  60 + public = True,
  61 + )
  62 + self.course.save()
  63 +
  64 + self.subject = Subject(
  65 + name = 'Subject Test',
  66 + description = "description of the subject test file",
  67 + visible = True,
  68 + init_date = '2016-10-05',
  69 + end_date = '2017-10-05',
  70 + course = self.course,
  71 + )
  72 + self.subject.save()
  73 +
  74 + self.subject.professors.add(self.teacher)
  75 +
  76 + self.topic = Topic(
  77 + name = 'Topic Test',
  78 + description = "description of the topic test file",
  79 + subject = self.subject,
  80 + owner = self.teacher,
  81 + )
  82 + self.topic.save()
  83 +
  84 + """
  85 + Manual upload file
  86 + Change directory for a file in your computer and be happy...
  87 + """
  88 + upload_file = open('/home/ailson/Pictures/teste.png', 'rb')
  89 + self.file = SimpleUploadedFile(upload_file.name, upload_file.read())
  90 +
  91 + def test_create_file_ok(self):
  92 + self.client.login(username='admin', password = 'testing123')
  93 +
  94 + files = TopicFile.objects.all().count()
  95 + self.assertEqual(TopicFile.objects.all().count(), files) #Macthing no file
  96 +
  97 + topic = Topic.objects.get(name = 'Topic Test')
  98 +
  99 + url = reverse('course:file:create_file', kwargs={'slug': topic.slug})
  100 + data = {
  101 + 'name' : 'testFile',
  102 + "file_url" : self.file
  103 + }
  104 + data['topic'] = topic
  105 +
  106 + # Get modal
  107 + response = self.client.get(url)
  108 + self.assertEqual(response.status_code, 200)
  109 +
  110 + # Create file
  111 + response = self.client.post(url, data)
  112 + file_created = TopicFile.objects.get(name = data['name'])
  113 + self.assertEqual(TopicFile.objects.filter(name= file_created.name).exists(),True)
  114 + self.assertEqual(TopicFile.objects.all().count(), files + 1)
  115 + self.assertEqual(response.status_code, 302)
  116 + self.assertTemplateUsed(template_name = 'files/create_file.html')
  117 +
  118 + def test_update_file_ok(self):
  119 + self.client.login(username='admin', password = 'testing123')
  120 +
  121 + topic = Topic.objects.get(name = 'Topic Test')
  122 +
  123 + # File type
  124 + mime_type = MimeType.objects.create(
  125 + typ = 'image/png',
  126 + icon = 'photo'
  127 + )
  128 + self.file_update = TopicFile.objects.create(
  129 + name = 'testinglink',
  130 + file_url = self.file,
  131 + file_type = mime_type,
  132 + topic = topic
  133 + )
  134 +
  135 + url = reverse('course:file:update_file',kwargs={'slug': self.file_update.slug})
  136 +
  137 + upload_file_update = open('/home/ailson/Pictures/update.png', 'rb')
  138 + new_file = SimpleUploadedFile(upload_file_update.name, upload_file_update.read())
  139 + data = {
  140 + 'name' : 'updated',
  141 + 'file_url': new_file
  142 + }
  143 +
  144 + # Get modal
  145 + response = self.client.get(url)
  146 + self.assertEqual(response.status_code, 200)
  147 +
  148 + response = self.client.post(url, data)
  149 + self.assertEqual(TopicFile.objects.all()[0].name, 'updated') # new file name
  150 + self.assertEqual(response.status_code, 302)
  151 + self.assertTemplateUsed(template_name = 'files/update_file.html')
  152 +
  153 + def test_delete_file(self):
  154 + self.client.login(username='admin', password = 'testing123')
  155 +
  156 + topic = Topic.objects.get(name = 'Topic Test')
  157 +
  158 + # File type
  159 + mime_type = MimeType.objects.create(
  160 + typ = 'image/png',
  161 + icon = 'photo'
  162 + )
  163 + self.file_delete = TopicFile.objects.create(
  164 + name = 'testinglink',
  165 + file_url = self.file,
  166 + file_type = mime_type,
  167 + topic = topic
  168 + )
  169 +
  170 + url = reverse('course:file:delete_file',kwargs={'slug': self.file_delete.slug})
  171 +
  172 + # Get modal
  173 + response = self.client.get(url)
  174 + self.assertEqual(response.status_code, 200)
  175 +
  176 + response = self.client.post(url)
  177 + self.assertEqual(TopicFile.objects.all().count(), 0) # new file name
  178 + self.assertEqual(response.status_code, 302)
  179 + self.assertTemplateUsed(template_name = 'files/delete_file.html')
  180 +
  181 +
  182 +
  183 +
forum/templates/forum/forum_view.html
1 -{% extends 'base.html' %} 1 +{% extends 'home.html' %}
2 2
3 {% load static i18n permission_tags list_post %} 3 {% load static i18n permission_tags list_post %}
4 {% load widget_tweaks %} 4 {% load widget_tweaks %}
@@ -21,32 +21,19 @@ @@ -21,32 +21,19 @@
21 </ol> 21 </ol>
22 {% endblock %} 22 {% endblock %}
23 23
24 -{% block sidebar %}  
25 - <div class="panel panel-primary navigation">  
26 - <div class="panel-heading">  
27 - <h5>{% trans 'Menu' %}</h5>  
28 - </div>  
29 - <div class="panel-body">  
30 - <ul class="nav nav-pills nav-stacked">  
31 - <li><a href="{% url 'users:profile' %}">{% trans 'Profile' %}</a></li>  
32 - <li><a href="{% url 'course:manage' %}">{% trans 'My Courses' %}</a></li>  
33 - </ul>  
34 - </div>  
35 - </div>  
36 24
37 - {% if request.user|has_role:'system_admin' or request.user|has_role:'professor' and request.user in forum.topic.subject.professors.all %}  
38 - <div class="panel panel-primary navigation">  
39 - <div class="panel-heading">  
40 - <h3 class="panel-title">{% trans 'Actions' %}</h3>  
41 - </div>  
42 - <div class="panel-body">  
43 - <ul class="nav nav-pills nav-stacked">  
44 - <li><a href="javascript:editForum('{% url 'course:forum:update' forum.id %}', '{{ forum.id }}', '{% trans 'Forum edited successfully!' %}')">{% trans 'Edit' %}</a></li>  
45 - <li><a href="javascript:delete_forum('{% url 'course:forum:delete' forum.id %}', '{{ forum.id }}', '{% trans "Are you sure you want to delete this forum?" %}', '{% url 'course:view_subject' forum.topic.subject.slug %}')">{% trans 'Delete' %}</a></li>  
46 - </ul>  
47 - </div> 25 +{% block menu %}
  26 + {% if user|has_role:'system_admin' or user|has_role:'professor'%}
  27 + <li>
  28 + <a href="#menu_forum" class="accordion" data-toggle="collapse">{% trans 'Forum' %}<span class="pull-right glyphicon glyphicon-chevron-down"></span></a>
  29 + <div id="menu_forum" class="collapse">
  30 + <ul class="nav nav-pill nav-stacked accordion_list">
  31 + <li><a href="javascript:editForum('{% url 'course:forum:update' forum.id %}', '{{ forum.id }}', '{% trans 'Forum edited successfully!' %}')">{% trans 'Edit' %}</a></li>
  32 + <li><a href="javascript:delete_forum('{% url 'course:forum:delete' forum.id %}', '{{ forum.id }}', '{% trans "Are you sure you want to delete this forum?" %}', '{% url 'course:view_subject' forum.topic.subject.slug %}')">{% trans 'Delete' %}</a></li>
  33 + </ul>
48 </div> 34 </div>
49 - {% endif %} 35 + </li>
  36 + {% endif %}
50 {% endblock %} 37 {% endblock %}
51 38
52 {% block content %} 39 {% block content %}
@@ -130,4 +117,3 @@ @@ -130,4 +117,3 @@
130 </div> 117 </div>
131 </div> 118 </div>
132 {% endblock %} 119 {% endblock %}
133 -  
poll/templates/poll/create.html
@@ -144,7 +144,7 @@ @@ -144,7 +144,7 @@
144 <div class="modal-footer"> 144 <div class="modal-footer">
145 145
146 <!-- Don't remove that!!! --> 146 <!-- Don't remove that!!! -->
147 - <button type="button" class="btn btn-danger btn-raised" data-dismiss="modal">{% trans "Close" %}</button> 147 + <button type="button" class="btn btn-default btn-raised" data-dismiss="modal">{% trans "Close" %}</button>
148 {% block button_save %} 148 {% block button_save %}
149 <!-- Put curtom buttons here!!! --> 149 <!-- Put curtom buttons here!!! -->
150 <button type="submite" id="button" form="form" class="btn btn-primary btn-raised">{% trans "Create" %}</button> 150 <button type="submite" id="button" form="form" class="btn btn-primary btn-raised">{% trans "Create" %}</button>
users/templates/list_users.html
@@ -9,23 +9,11 @@ @@ -9,23 +9,11 @@
9 9
10 {% endblock %} 10 {% endblock %}
11 11
12 -{% if user|has_role:'system_admin' %}  
13 - {% block sidebar %}  
14 - <div class="panel panel-primary navigation">  
15 - <div class="panel-heading">  
16 - <h5>{% trans 'Menu' %}</h5>  
17 - </div>  
18 - <div class="panel-body">  
19 - <ul class="nav nav-pills nav-stacked">  
20 - <li><a href="{% url 'core:home' %}">{% trans "Home" %}</a></li>  
21 - <li><a href="{% url 'users:create' %}">{% trans 'Add user' %}</a></li>  
22 - <li><a href="javascript:void(0)">{% trans 'Send email' %}</a></li>  
23 - </ul>  
24 - </div>  
25 - </div>  
26 - {% endblock %}  
27 -{% endif %}  
28 - 12 +{% block menu %}
  13 + {% if user|has_role:'system_admin' %}
  14 + <li> <a href="{% url 'users:create' %}">{% trans 'Add User' %}</a></li>
  15 + {% endif %}
  16 +{% endblock %}
29 17
30 {% block content %} 18 {% block content %}
31 {% if messages %} 19 {% if messages %}
@@ -73,7 +61,7 @@ @@ -73,7 +61,7 @@
73 <p>{% trans 'Contact' %}: {{ acc.phone }}</p> 61 <p>{% trans 'Contact' %}: {{ acc.phone }}</p>
74 <div align="right"> 62 <div align="right">
75 <a href="{% url 'users:update' acc.username %}" class="btn btn-raised btn-success">{% trans 'Edit' %}</a> 63 <a href="{% url 'users:update' acc.username %}" class="btn btn-raised btn-success">{% trans 'Edit' %}</a>
76 - <a href="javascript:void(0)" class="btn btn-danger btn-raised btn-lg" data-toggle="modal" data-target="#DeleteModal{{ forloop.counter }}">{% trans 'Delete' %}</a> 64 + <a href="javascript:void(0)" class="btn btn-default btn-raised btn-lg" data-toggle="modal" data-target="#DeleteModal{{ forloop.counter }}">{% trans 'Delete' %}</a>
77 </div> 65 </div>
78 </div> 66 </div>
79 67
@@ -90,7 +78,7 @@ @@ -90,7 +78,7 @@
90 {% trans 'Are you sure you want to delete the user' %} <b>{{acc.name}}</b>? 78 {% trans 'Are you sure you want to delete the user' %} <b>{{acc.name}}</b>?
91 </div> 79 </div>
92 <div class="modal-footer"> 80 <div class="modal-footer">
93 - <a href="#" class="btn btn-raised btn-danger" data-dismiss="modal">{% trans 'Cancel' %}</a> 81 + <a href="#" class="btn btn-raised btn-default" data-dismiss="modal">{% trans 'Cancel' %}</a>
94 <a href="{% url 'users:delete' acc.username %}" class="btn btn-raised btn-success" style="margin-top: 0">{% trans 'Delete' %}</a> 82 <a href="{% url 'users:delete' acc.username %}" class="btn btn-raised btn-success" style="margin-top: 0">{% trans 'Delete' %}</a>
95 </div> 83 </div>
96 </div> 84 </div>
@@ -108,4 +96,3 @@ @@ -108,4 +96,3 @@
108 </div> 96 </div>
109 {% endif %} 97 {% endif %}
110 {% endblock %} 98 {% endblock %}
111 -  
users/templates/users/change_password.html
@@ -44,7 +44,7 @@ @@ -44,7 +44,7 @@
44 <input type="submit" value="{% trans 'Save' %}" class="btn btn-raised btn-block btn-success" /> 44 <input type="submit" value="{% trans 'Save' %}" class="btn btn-raised btn-block btn-success" />
45 </div> 45 </div>
46 <div class="col-md-3 col-sm-2 col-xs-2"> 46 <div class="col-md-3 col-sm-2 col-xs-2">
47 - <a href="{% url 'users:profile' %}" class="btn btn-raised btn-block btn-danger" >{% trans 'Cancel' %}</a> 47 + <a href="{% url 'users:profile' %}" class="btn btn-raised btn-block btn-default" >{% trans 'Cancel' %}</a>
48 </div> 48 </div>
49 </div> 49 </div>
50 </form> 50 </form>
users/templates/users/edit_profile.html
@@ -99,7 +99,7 @@ @@ -99,7 +99,7 @@
99 <input type="submit" value="{% trans 'Save' %}" class="btn btn-raised btn-success" /> 99 <input type="submit" value="{% trans 'Save' %}" class="btn btn-raised btn-success" />
100 </div> 100 </div>
101 <div class="col-md-offset-3 col-md-2 col-sm-2 col-xs-2"> 101 <div class="col-md-offset-3 col-md-2 col-sm-2 col-xs-2">
102 - <a href="{% url 'users:profile' %}" class="btn btn-raised btn-danger" >{% trans 'Cancel' %}</a> 102 + <a href="{% url 'users:profile' %}" class="btn btn-raised btn-default" >{% trans 'Cancel' %}</a>
103 </div> 103 </div>
104 </form> 104 </form>
105 </div> 105 </div>
users/templates/users/index.html
1 -{% extends 'app/base.html' %} 1 +{% extends 'home.html' %}
2 2
3 {% load static i18n %} 3 {% load static i18n %}
4 4
@@ -9,18 +9,8 @@ @@ -9,18 +9,8 @@
9 </ol> 9 </ol>
10 {% endblock %} 10 {% endblock %}
11 11
12 -{% block sidebar %}  
13 - <div class="list-group">  
14 - <a href="{% url 'users:manage' %}" class="list-group-item active">  
15 - {% trans 'System Users' %}  
16 - </a>  
17 - <a href="{% url 'users:create' %}" class="list-group-item">  
18 - {% trans 'New Account' %}  
19 - </a>  
20 - <a href="#" class="list-group-item">  
21 - {% trans 'Send Mail' %}  
22 - </a>  
23 - </div> 12 +{% block menu %}
  13 + <li> <a href="{% url 'users:create' %}">{% trans 'Add User' %}</a></li>
24 {% endblock %} 14 {% endblock %}
25 15
26 {% block content %} 16 {% block content %}
users/templates/users/profile.html
1 -{% extends 'home_student.html' %} 1 +{% extends 'home.html' %}
2 2
3 {% load static i18n %} 3 {% load static i18n %}
4 {% load widget_tweaks %} 4 {% load widget_tweaks %}
5 -{% load django_bootstrap_breadcrumbs %} 5 +{% load django_bootstrap_breadcrumbs permission_tags%}
6 6
7 {% block breadcrumbs %} 7 {% block breadcrumbs %}
8 8
@@ -11,21 +11,10 @@ @@ -11,21 +11,10 @@
11 11
12 {% endblock %} 12 {% endblock %}
13 13
14 -{% block sidebar %}  
15 - <div class="panel panel-primary navigation">  
16 - <div class="panel-heading">  
17 - <h4>{% trans "Menu" %}</h4>  
18 - </div>  
19 - <div class="panel-body">  
20 - <ul class="nav nav-pills nav-stacked">  
21 - <li><a href="{% url 'app:index' %}">{% trans 'Home page' %}</a></li>  
22 - <li><a href="{% url 'users:profile' %}">{% trans 'View Profile' %}</a></li>  
23 - <li><a href="{% url 'users:update_profile' %}">{% trans 'Edit Profile' %}</a></li>  
24 - <li><a href="{% url 'users:change_password' %}">{% trans 'Change Password' %}</a></li>  
25 - <li><a href="{% url 'users:remove_account' %}">{% trans 'Remove account' %}</a></li>  
26 - </ul>  
27 - </div>  
28 - </div> 14 +{% block menu %}
  15 + {% if user|has_role:'system_admin' %}
  16 + <li> <a href="{% url 'users:create' %}">{% trans 'Add User' %}</a></li>
  17 + {% endif %}
29 {% endblock %} 18 {% endblock %}
30 19
31 {% block content %} 20 {% block content %}
users/templates/users/remove_account.html
@@ -32,7 +32,7 @@ @@ -32,7 +32,7 @@
32 <a href="{% url 'users:remove' user.username %}" class="btn btn-raised btn-block btn-success" >{% trans 'Remove' %}</a> 32 <a href="{% url 'users:remove' user.username %}" class="btn btn-raised btn-block btn-success" >{% trans 'Remove' %}</a>
33 </div> 33 </div>
34 <div class="col-md-3 col-sm-2 col-xs-2"> 34 <div class="col-md-3 col-sm-2 col-xs-2">
35 - <a href="{% url 'users:profile' %}" class="btn btn-raised btn-block btn-danger" >{% trans 'Cancel' %}</a> 35 + <a href="{% url 'users:profile' %}" class="btn btn-raised btn-block btn-default" >{% trans 'Cancel' %}</a>
36 </div> 36 </div>
37 </div> 37 </div>
38 </div> 38 </div>
users/templates/users/update.html
@@ -6,10 +6,10 @@ @@ -6,10 +6,10 @@
6 {% load django_bootstrap_breadcrumbs %} 6 {% load django_bootstrap_breadcrumbs %}
7 7
8 {% block breadcrumbs %} 8 {% block breadcrumbs %}
9 - 9 +
10 {{ block.super }} 10 {{ block.super }}
11 {% breadcrumb 'Update User' 'users:update' %} 11 {% breadcrumb 'Update User' 'users:update' %}
12 - 12 +
13 {% endblock %} 13 {% endblock %}
14 14
15 15
@@ -80,7 +80,7 @@ @@ -80,7 +80,7 @@
80 <input type="submit" value="{% trans 'Save' %}" class="btn btn-raised btn-success" /> 80 <input type="submit" value="{% trans 'Save' %}" class="btn btn-raised btn-success" />
81 </div> 81 </div>
82 <div class="col-md-offset-3 col-md-2 col-sm-2 col-xs-2"> 82 <div class="col-md-offset-3 col-md-2 col-sm-2 col-xs-2">
83 - <a href="{% url 'users:manage' %}" class="btn btn-raised btn-danger" >{% trans 'Cancel' %}</a> 83 + <a href="{% url 'users:manage' %}" class="btn btn-raised btn-default" >{% trans 'Cancel' %}</a>
84 </div> 84 </div>
85 </form> 85 </form>
86 </div> 86 </div>
users/templates/users/view.html
1 -{% extends 'app/base.html' %} 1 +{% extends 'users/profile.html' %}
2 2
3 {% load static i18n %} 3 {% load static i18n %}
4 4
@@ -9,26 +9,6 @@ @@ -9,26 +9,6 @@
9 </ol> 9 </ol>
10 {% endblock %} 10 {% endblock %}
11 11
12 -{% block sidebar %}  
13 - <div class="list-group">  
14 - <a href="{% url 'users:manage' %}" class="list-group-item">  
15 - {% trans 'System Users' %}  
16 - </a>  
17 - <a href="{% url 'users:create' %}" class="list-group-item">  
18 - {% trans 'New Account' %}  
19 - </a>  
20 - <a href="{% url 'users:view' acc.username %}" class="list-group-item active">  
21 - {% trans 'View User Account' %}  
22 - </a>  
23 - <a href="{% url 'users:update' acc.username %}" class="list-group-item">  
24 - {% trans 'Edit User Account' %}  
25 - </a>  
26 - <a href="#" class="list-group-item">  
27 - {% trans 'Send Mail' %}  
28 - </a>  
29 - </div>  
30 -{% endblock %}  
31 -  
32 {% block content %} 12 {% block content %}
33 <div class="row"> 13 <div class="row">
34 <div class="col-sm-3"> 14 <div class="col-sm-3">