Commit e4873697bb9876d1b01e2fab05f37197eaaade60
Exists in
master
and in
5 other branches
conflit
Showing
35 changed files
with
610 additions
and
587 deletions
Show diff stats
app/templates/home.html
... | ... | @@ -78,26 +78,27 @@ |
78 | 78 | </div> |
79 | 79 | <div class="panel-body"> |
80 | 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 | 98 | {% if user|has_role:'system_admin' %} |
86 | 99 | <li> <a href="{% url 'users:manage' %}">{% trans 'Manage Users' %}</a></li> |
87 | 100 | <li> <a href="{% url 'app:settings' %}">{% trans 'Settings' %}</a></li> |
88 | 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 | 102 | </ul> |
102 | 103 | </div> |
103 | 104 | </div> | ... | ... |
... | ... | @@ -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 | 8 | <head> |
9 | 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 | 15 | <meta http-equiv="Cache-Control" content="no-cache, no-store" /> |
16 | 16 | <link href="{% static 'img/topo-amadeus.png' %}" rel="shortcut icon" /> |
... | ... | @@ -30,9 +30,7 @@ |
30 | 30 | <link rel="stylesheet" type="text/css" href="{% static 'css/vendor/alertifyjs/themes/bootstrap.css' %}"> |
31 | 31 | <script type="text/javascript" src="{% static 'bootstrap-3.3.7/js/bootstrap.js' %}"></script> |
32 | 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 | 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 | 34 | <script type="text/javascript" src="{% static 'material/js/ripples.min.js' %}"></script> |
37 | 35 | <script type="text/javascript" src="{% static 'js/vendor/bootstrap-datepicker.js' %}"></script> |
38 | 36 | {% with "js/vendor/locales/bootstrap-datepicker."|add:LANGUAGE_CODE|add:".js" as locale_datepicker %} |
... | ... | @@ -62,84 +60,88 @@ |
62 | 60 | |
63 | 61 | </head> |
64 | 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 | 145 | </body> |
144 | 146 | |
145 | 147 | </html> | ... | ... |
courses/templates/category/create.html
... | ... | @@ -10,38 +10,6 @@ |
10 | 10 | </ol> |
11 | 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 | 13 | {% block content %} |
46 | 14 | <div class="card card-content"> |
47 | 15 | <div class="card-body"> | ... | ... |
courses/templates/category/index.html
... | ... | @@ -11,36 +11,6 @@ |
11 | 11 | </ol> |
12 | 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 | 14 | {% block content %} |
45 | 15 | {% if messages %} |
46 | 16 | {% for message in messages %} |
... | ... | @@ -104,4 +74,4 @@ |
104 | 74 | </div> |
105 | 75 | <div class="row" id="modal_category"> |
106 | 76 | <script src="{% static 'js/modal_category.js' %}"></script> |
107 | -{% endblock %} | |
108 | 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 | 3 | {% load static i18n %} |
4 | 4 | {% load static i18n permission_tags %} |
... | ... | @@ -11,35 +11,6 @@ |
11 | 11 | </ol> |
12 | 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 | 14 | {% block content %} |
44 | 15 | {% if messages %} |
45 | 16 | {% for message in messages %} | ... | ... |
courses/templates/course/course_card.html
... | ... | @@ -7,13 +7,13 @@ |
7 | 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 | 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 | 9 | </div> |
10 | - <div class="col-xs-9 col-md-4 titleTopic"> | |
10 | + <div class="col-xs-5 col-md-5 titleTopic"> | |
11 | 11 | <a role="button" href="{% url 'course:view' course.slug %}"> |
12 | 12 | <h4>{{course.name}}</h4> |
13 | 13 | </a> |
14 | 14 | </div> |
15 | 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 | 17 | <div class="btn-group"> |
18 | 18 | <button class="btn btn-default btn-sm dropdown-toggle" type="button" id="moreActions" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> |
19 | 19 | <i class="fa fa-ellipsis-v fa-2x" aria-hidden="true"></i> |
... | ... | @@ -55,11 +55,11 @@ |
55 | 55 | </div> |
56 | 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 | 59 | <div class="modal-dialog" role="document"> |
60 | 60 | <div class="modal-content"> |
61 | 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 | 63 | </div> |
64 | 64 | <div class="modal-body"> |
65 | 65 | <section> |
... | ... | @@ -73,4 +73,4 @@ |
73 | 73 | </div> |
74 | 74 | </div> |
75 | 75 | </div> |
76 | - <script type="text/javascript" src="{% static 'js/course.js' %}"></script> | |
77 | 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 | 43 | </div> |
44 | 44 | {% endfor %} |
45 | 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 | 47 | </div> |
48 | 48 | </form> |
49 | 49 | </div> | ... | ... |
courses/templates/course/delete.html
... | ... | @@ -20,7 +20,7 @@ |
20 | 20 | <!-- Modal Footer --> |
21 | 21 | <div class="modal-footer"> |
22 | 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 | 24 | <button type="submit" id="button" form="delete_form" class="btn btn-primary btn-raised">{% trans "Delete" %}</button> |
25 | 25 | <script> |
26 | 26 | $("#delete_form").submit(function(event) { | ... | ... |
courses/templates/course/home.html
... | ... | @@ -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 | 10 | |
11 | 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 | 13 | {% block content %} |
55 | 14 | {% if messages %} |
56 | 15 | {% for message in messages %} |
... | ... | @@ -64,7 +23,7 @@ |
64 | 23 | {% endif %} |
65 | 24 | |
66 | 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 | 27 | <div class="input-group"> |
69 | 28 | <div class="form-group is-empty"> |
70 | 29 | <input type="text" class="form-control" placeholder="Search Courses" name="q"></div> |
... | ... | @@ -92,10 +51,10 @@ |
92 | 51 | </div> |
93 | 52 | </div> |
94 | 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 | 56 | {% include "course/course_card.html" %} |
98 | - {% endif %} | |
57 | + {# {% endif %}#} | |
99 | 58 | {% endfor %} |
100 | 59 | </div> |
101 | 60 | </div> |
... | ... | @@ -104,9 +63,6 @@ |
104 | 63 | |
105 | 64 | {% endfor %} |
106 | 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 | 66 | <div class="col-md-12"> |
111 | 67 | <nav aria-label="Page navigation"> |
112 | 68 | <ul class="pagination"> | ... | ... |
courses/templates/course/replicate.html
... | ... | @@ -4,132 +4,139 @@ |
4 | 4 | {% load widget_tweaks %} |
5 | 5 | |
6 | 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 | 11 | {% endblock %} |
12 | 12 | |
13 | 13 | {% block content %} |
14 | 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 | 134 | </div> |
134 | -</br> | |
135 | -{% endblock %} | |
136 | 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 | 41 | </div> |
42 | 42 | {% endfor %} |
43 | 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 | 45 | </div> |
46 | 46 | </form> |
47 | 47 | </div> |
... | ... | @@ -56,4 +56,4 @@ |
56 | 56 | language: locale, |
57 | 57 | }); |
58 | 58 | </script> |
59 | -{% endblock %} | |
60 | 59 | \ No newline at end of file |
60 | +{% endblock %} | ... | ... |
courses/templates/course/view.html
... | ... | @@ -21,23 +21,6 @@ |
21 | 21 | </ol> |
22 | 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 | 24 | {% block content %} |
42 | 25 | |
43 | 26 | <div class="col-md-12 cards-content"> |
... | ... | @@ -94,8 +77,8 @@ |
94 | 77 | <div> |
95 | 78 | </div> |
96 | 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 | 82 | </div> |
100 | 83 | </div> |
101 | 84 | </div> |
... | ... | @@ -132,7 +115,7 @@ |
132 | 115 | <li><a href="{% url 'course:update_subject' subject.slug %}"> <i class="fa fa-pencil fa-fw" aria-hidden="true"></i> {% trans "Edit" %}</a></li> |
133 | 116 | <li><a href="{% url 'course:delete_subject' subject.slug %}" ><i class="fa fa-trash fa-fw" aria-hidden="true"></i> {% trans "Remove" %}</a></li> |
134 | 117 | </ul> |
135 | - | |
118 | + | |
136 | 119 | </div> |
137 | 120 | </div> |
138 | 121 | {% endif %} | ... | ... |
... | ... | @@ -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">×</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 | 75 | \ No newline at end of file | ... | ... |
courses/templates/subject/delete.html
... | ... | @@ -20,7 +20,7 @@ |
20 | 20 | <!-- Modal Footer --> |
21 | 21 | <div class="modal-footer"> |
22 | 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 | 24 | <button type="submit" id="button" form="delete_form" class="btn btn-primary btn-raised">{% trans "Delete" %}</button> |
25 | 25 | <script> |
26 | 26 | $("#delete_form").submit(function(event) { | ... | ... |
courses/templates/subject/form_view_student.html
courses/templates/subject/index.html
courses/templates/subject/replicate.html
... | ... | @@ -19,7 +19,7 @@ |
19 | 19 | <label for="{{ field.auto_id }}" class="control-label label-static"> {{ field.label }}</label> |
20 | 20 | |
21 | 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 | 23 | {% else %} |
24 | 24 | {% render_field field class='form-control' placeholder=field.label%} |
25 | 25 | {% endif %} | ... | ... |
courses/templates/subject_category/index.html
courses/templates/topic/delete.html
... | ... | @@ -20,7 +20,7 @@ |
20 | 20 | <!-- Modal Footer --> |
21 | 21 | <div class="modal-footer"> |
22 | 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 | 24 | <button type="submit" id="button" form="delete_topic_{{topic.slug}}" class="btn btn-primary btn-raised">{% trans "Delete" %}</button> |
25 | 25 | <script> |
26 | 26 | $("#delete_topic_{{topic.slug}}").submit(function(event) { | ... | ... |
courses/templates/topic/index.html
courses/views.py
... | ... | @@ -31,6 +31,33 @@ import time |
31 | 31 | from rest_framework import viewsets, permissions |
32 | 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 | 61 | class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView): |
35 | 62 | |
36 | 63 | login_url = reverse_lazy("core:home") |
... | ... | @@ -38,8 +65,6 @@ class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView): |
38 | 65 | queryset = Course.objects.all() |
39 | 66 | template_name = 'course/index.html' |
40 | 67 | context_object_name = 'courses' |
41 | - paginate_by = 10 | |
42 | - aparece = True | |
43 | 68 | |
44 | 69 | |
45 | 70 | def get_queryset(self): |
... | ... | @@ -48,14 +73,12 @@ class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView): |
48 | 73 | course_search = self.request.GET.get('q', None) |
49 | 74 | category_search = self.request.GET.get('category', None) |
50 | 75 | if course_search: |
51 | - self.aparece = False | |
52 | 76 | query_list = course_search.split() |
53 | 77 | result = result.filter( |
54 | 78 | reduce(operator.and_, |
55 | 79 | (Q(name__icontains=q) for q in query_list)) |
56 | 80 | ) |
57 | 81 | if category_search: |
58 | - self.aparece = False | |
59 | 82 | query_list = category_search.split() |
60 | 83 | result = result.filter( |
61 | 84 | reduce(operator.and_, |
... | ... | @@ -66,58 +89,40 @@ class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView): |
66 | 89 | def get_context_data(self, **kwargs): |
67 | 90 | context = super(IndexView, self).get_context_data(**kwargs) |
68 | 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 | 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 | 102 | return context |
95 | 103 | |
96 | 104 | class AllCoursesView(LoginRequiredMixin, NotificationMixin, generic.ListView): |
97 | 105 | |
98 | 106 | login_url = reverse_lazy("core:home") |
99 | 107 | redirect_field_name = 'next' |
100 | - queryset = Course.objects.all() | |
101 | 108 | template_name = 'course/index.html' |
102 | 109 | context_object_name = 'courses' |
103 | - paginate_by = 5 | |
104 | - aparece = True | |
105 | 110 | |
106 | 111 | |
107 | 112 | def get_queryset(self): |
108 | - result = super(AllCoursesView, self).get_queryset() | |
113 | + result = Course.objects.all() | |
109 | 114 | |
110 | 115 | course_search = self.request.GET.get('q', None) |
111 | 116 | category_search = self.request.GET.get('category', None) |
112 | 117 | if course_search: |
113 | - self.aparece = False | |
118 | + # self.aparece = False | |
114 | 119 | query_list = course_search.split() |
115 | 120 | result = result.filter( |
116 | 121 | reduce(operator.and_, |
117 | 122 | (Q(name__icontains=q) for q in query_list)) |
118 | 123 | ) |
119 | 124 | if category_search: |
120 | - self.aparece = False | |
125 | + # self.aparece = False | |
121 | 126 | query_list = category_search.split() |
122 | 127 | result = result.filter( |
123 | 128 | reduce(operator.and_, |
... | ... | @@ -127,25 +132,10 @@ class AllCoursesView(LoginRequiredMixin, NotificationMixin, generic.ListView): |
127 | 132 | |
128 | 133 | def get_context_data(self, **kwargs): |
129 | 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 | 139 | return context |
150 | 140 | |
151 | 141 | class CreateCourseView(LoginRequiredMixin, HasRoleMixin, LogMixin, NotificationMixin, generic.edit.CreateView): |
... | ... | @@ -1029,4 +1019,3 @@ class TopicViewSet(viewsets.ModelViewSet): |
1029 | 1019 | queryset = Topic.objects.all() |
1030 | 1020 | serializer_class = TopicSerializer |
1031 | 1021 | permissions_class = (permissions.IsAuthenticatedOrReadOnly) |
1032 | - | ... | ... |
... | ... | @@ -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 | 3 | {% load static i18n permission_tags list_post %} |
4 | 4 | {% load widget_tweaks %} |
... | ... | @@ -21,32 +21,19 @@ |
21 | 21 | </ol> |
22 | 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 | 34 | </div> |
49 | - {% endif %} | |
35 | + </li> | |
36 | + {% endif %} | |
50 | 37 | {% endblock %} |
51 | 38 | |
52 | 39 | {% block content %} |
... | ... | @@ -130,4 +117,3 @@ |
130 | 117 | </div> |
131 | 118 | </div> |
132 | 119 | {% endblock %} |
133 | - | ... | ... |
poll/templates/poll/create.html
... | ... | @@ -144,7 +144,7 @@ |
144 | 144 | <div class="modal-footer"> |
145 | 145 | |
146 | 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 | 148 | {% block button_save %} |
149 | 149 | <!-- Put curtom buttons here!!! --> |
150 | 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 | 9 | |
10 | 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 | 18 | {% block content %} |
31 | 19 | {% if messages %} |
... | ... | @@ -73,7 +61,7 @@ |
73 | 61 | <p>{% trans 'Contact' %}: {{ acc.phone }}</p> |
74 | 62 | <div align="right"> |
75 | 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 | 65 | </div> |
78 | 66 | </div> |
79 | 67 | |
... | ... | @@ -90,7 +78,7 @@ |
90 | 78 | {% trans 'Are you sure you want to delete the user' %} <b>{{acc.name}}</b>? |
91 | 79 | </div> |
92 | 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 | 82 | <a href="{% url 'users:delete' acc.username %}" class="btn btn-raised btn-success" style="margin-top: 0">{% trans 'Delete' %}</a> |
95 | 83 | </div> |
96 | 84 | </div> |
... | ... | @@ -108,4 +96,3 @@ |
108 | 96 | </div> |
109 | 97 | {% endif %} |
110 | 98 | {% endblock %} |
111 | - | ... | ... |
users/templates/users/change_password.html
... | ... | @@ -44,7 +44,7 @@ |
44 | 44 | <input type="submit" value="{% trans 'Save' %}" class="btn btn-raised btn-block btn-success" /> |
45 | 45 | </div> |
46 | 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 | 48 | </div> |
49 | 49 | </div> |
50 | 50 | </form> | ... | ... |
users/templates/users/edit_profile.html
... | ... | @@ -99,7 +99,7 @@ |
99 | 99 | <input type="submit" value="{% trans 'Save' %}" class="btn btn-raised btn-success" /> |
100 | 100 | </div> |
101 | 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 | 103 | </div> |
104 | 104 | </form> |
105 | 105 | </div> | ... | ... |
users/templates/users/index.html
1 | -{% extends 'app/base.html' %} | |
1 | +{% extends 'home.html' %} | |
2 | 2 | |
3 | 3 | {% load static i18n %} |
4 | 4 | |
... | ... | @@ -9,18 +9,8 @@ |
9 | 9 | </ol> |
10 | 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 | 14 | {% endblock %} |
25 | 15 | |
26 | 16 | {% block content %} | ... | ... |
users/templates/users/profile.html
1 | -{% extends 'home_student.html' %} | |
1 | +{% extends 'home.html' %} | |
2 | 2 | |
3 | 3 | {% load static i18n %} |
4 | 4 | {% load widget_tweaks %} |
5 | -{% load django_bootstrap_breadcrumbs %} | |
5 | +{% load django_bootstrap_breadcrumbs permission_tags%} | |
6 | 6 | |
7 | 7 | {% block breadcrumbs %} |
8 | 8 | |
... | ... | @@ -11,21 +11,10 @@ |
11 | 11 | |
12 | 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 | 18 | {% endblock %} |
30 | 19 | |
31 | 20 | {% block content %} | ... | ... |
users/templates/users/remove_account.html
... | ... | @@ -32,7 +32,7 @@ |
32 | 32 | <a href="{% url 'users:remove' user.username %}" class="btn btn-raised btn-block btn-success" >{% trans 'Remove' %}</a> |
33 | 33 | </div> |
34 | 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 | 36 | </div> |
37 | 37 | </div> |
38 | 38 | </div> | ... | ... |
users/templates/users/update.html
... | ... | @@ -6,10 +6,10 @@ |
6 | 6 | {% load django_bootstrap_breadcrumbs %} |
7 | 7 | |
8 | 8 | {% block breadcrumbs %} |
9 | - | |
9 | + | |
10 | 10 | {{ block.super }} |
11 | 11 | {% breadcrumb 'Update User' 'users:update' %} |
12 | - | |
12 | + | |
13 | 13 | {% endblock %} |
14 | 14 | |
15 | 15 | |
... | ... | @@ -80,7 +80,7 @@ |
80 | 80 | <input type="submit" value="{% trans 'Save' %}" class="btn btn-raised btn-success" /> |
81 | 81 | </div> |
82 | 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 | 84 | </div> |
85 | 85 | </form> |
86 | 86 | </div> | ... | ... |
users/templates/users/view.html
1 | -{% extends 'app/base.html' %} | |
1 | +{% extends 'users/profile.html' %} | |
2 | 2 | |
3 | 3 | {% load static i18n %} |
4 | 4 | |
... | ... | @@ -9,26 +9,6 @@ |
9 | 9 | </ol> |
10 | 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 | 12 | {% block content %} |
33 | 13 | <div class="row"> |
34 | 14 | <div class="col-sm-3"> | ... | ... |