Commit f5de0b5d456c8c7dd91d10a8c022c3d9f7f78479

Authored by Jailson Dias
1 parent 72a5bee7

ajustes nas telas de course #375

courses/static/js/course.js
... ... @@ -59,10 +59,9 @@ var RemoveCourse = {
59 59 $.post(url,dados, function(data){
60 60 $(id_li_link).remove();
61 61 $("#modal_course").empty();
62   - $("#accordion").remove();
63 62 $(".modal-backdrop.in").remove();
64 63 alertify.success("Course removed successfully!");
65   - setTimeout(function () { location.reload(1); }, 1);
  64 + // setTimeout(function () { location.reload(1); }, 1);
66 65 }).fail(function(){
67 66 $("#modal_course").empty();
68 67 $("#modal_course").append(data);
... ...
courses/templates/course/course_card.html
1 1 {% load static i18n permission_tags %}
2   -<div class="group course-card ">
  2 +<div class="group course-card " id="course_{{course.slug}}">
3 3 <div class="panel panel-info">
4 4 <div class="panel-heading course">
5 5 <div class="row">
... ... @@ -17,7 +17,7 @@
17 17 <ul class="dropdown-menu pull-right" aria-labelledby="moreActions">
18 18 <li><a href="{% url 'course:replicate_course' course.slug %}"><i class="fa fa-files-o fa-fw" aria-hidden="true"></i>{% trans 'Replicate' %}</a></li>
19 19 <li><a href="{% url 'course:update' course.slug %}"><i class="fa fa-pencil fa-fw" aria-hidden="true"></i>{% trans 'Edit' %}</a></li>
20   - <li><a href="javascript:delete_course.get('{% url 'course:delete' course.slug %}','#course','#modal_course')"><i class="fa fa-trash fa-fw" aria-hidden="true"></i>&nbsp;{% trans 'Remove' %}</a></li>
  20 + <li><a href="javascript:delete_course.get('{% url 'course:delete' course.slug %}?view=index','#course','#modal_course')"><i class="fa fa-trash fa-fw" aria-hidden="true"></i>&nbsp;{% trans 'Remove' %}</a></li>
21 21 </ul>
22 22 </div>
23 23 </div>
... ... @@ -30,23 +30,3 @@
30 30 </div>
31 31 </div>
32 32 </div>
33   -
34   -<div class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
35   - <div class="modal-dialog" role="document">
36   - <div class="modal-content">
37   - <div class="modal-header">
38   - <h4 class="modal-title">{% trans 'Repicate Course' %}</h4>
39   - </div>
40   - <div class="modal-body">
41   - <section>
42   - <div class="course_replicate_form"></div>
43   - </section>
44   - </div>
45   - <div class="modal-footer">
46   - <button type="button" class="btn btn-danger btn-raised" data-dismiss="modal">{% trans 'Close' %}</button>
47   - <button type="button" onclick="$('#course_replicate').submit();" class="btn btn-primary btn-raised">{% trans 'Create' %}</button>
48   - </div>
49   - </div>
50   - </div>
51   -</div>
52   - <script type="text/javascript" src="{% static 'js/course.js' %}"></script>
... ...
courses/templates/course/delete.html
... ... @@ -12,22 +12,24 @@
12 12 <!-- Modal Body -->
13 13 <div class="modal-body">
14 14 <!-- Put ONLY your content here!!! -->
15   - <form id="delete_form" action="" method="post">
16   - {% csrf_token %}
17   - <p>{% trans 'Are you sure you want to delete the course' %} "{{course.name}}"?</p>
18   - </form>
  15 + <form id="delete_form" action="{% url 'course:delete' course.slug %}" method="post">
  16 + {% csrf_token %}
  17 + <p>{% trans 'Are you sure you want to delete the course' %} "{{course.name}}"?</p>
  18 + </form>
19 19 </div>
20 20 <!-- Modal Footer -->
21 21 <div class="modal-footer">
22 22 <!-- Don't remove that!!! -->
23 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   - <script>
26   - $("#delete_form").submit(function(event) {
27   - RemoveCourse.remove("{% url 'course:delete' course.slug %}",$(this).serialize(),"#course_{{course.slug}}");
28   - event.preventDefault();
29   - });
30   - </script>
  25 + {% if index %}
  26 + <script>
  27 + $("#delete_form").submit(function(event) {
  28 + RemoveCourse.remove("{% url 'course:delete' course.slug %}",$(this).serialize(),"#course_{{course.slug}}");
  29 + event.preventDefault();
  30 + });
  31 + </script>
  32 + {% endif %}
31 33 </div>
32 34 </div>
33 35 </div>
... ...
courses/templates/course/index.html
... ... @@ -5,85 +5,58 @@
5 5  
6 6 {% block breadcrumbs %}
7 7  
8   - {{ block.super }}
9   - {% breadcrumb 'Courses' 'course:manage' %}
  8 +{{ block.super }}
  9 +{% breadcrumb 'Courses' 'course:manage' %}
10 10  
11 11 {% endblock %}
12 12  
13 13 {% block content %}
14   - {% if messages %}
15   - {% for message in messages %}
16   - <div class="alert alert-success alert-dismissible" role="alert">
17   - <button type="button" class="close" data-dismiss="alert" aria-label="Close">
18   - <span aria-hidden="true">&times;</span>
19   - </button>
20   - <p>{{ message }}</p>
21   - </div>
22   - {% endfor %}
23   - {% endif %}
  14 +{% if messages %}
  15 +{% for message in messages %}
  16 + <script type="text/javascript">
  17 + alertify.success('{{message}}');
  18 + </script>
  19 +{% endfor %}
  20 +{% endif %}
24 21  
25 22 <div class="col-md-12 cards-content">
26   - <form id="searchform" method="get" accept-charset="utf-8">
27   - <div class="input-group">
28   - <div class="form-group is-empty">
29   - <input type="text" class="form-control" placeholder="{% trans 'Search for Courses' %}" name="q"></div>
30   - <span class="input-group-btn input-group-sm">
31   - <button type="submit" class="btn btn-fab btn-fab-mini">
32   - <i class="fa fa-search" aria-hidden="true"></i>
33   - </button>
34   - </span>
35   - </div>
36   - </form>
  23 + <form id="searchform" method="get" accept-charset="utf-8">
  24 + <div class="input-group">
  25 + <div class="form-group is-empty">
  26 + <input type="text" class="form-control" placeholder="{% trans 'Search for Courses' %}" name="q">
  27 + </div>
  28 + <span class="input-group-btn input-group-sm">
  29 + <button type="submit" class="btn btn-fab btn-fab-mini">
  30 + <i class="fa fa-search" aria-hidden="true"></i>
  31 + </button>
  32 + </span>
  33 + </div>
  34 + </form>
37 35 </div>
38   -
39   -</fieldset>
40   - <div class="col-md-12 cards-content">
41   - {% for category in categorys_courses %}
42   - <div class="panel-group course-card-group">
43   - <div class="panel panel-default">
44   - <div class="panel-heading">
45   - <div class="row">
46   - <div class="col-md-12">
47   - <h4 class="panel-title">
48   - <a class="category-course-link" data-toggle="collapse" href="#{{category.slug}}">{{category.name}}</a>
49   - </h4>
50   - </div>
51   - </div>
52   - </div>
53   - <div id="{{category.slug}}" class="panel-collapse collapse">
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' %}#}
56   - {% include "course/course_card.html" %}
57   - {# {% endif %}#}
58   - {% endfor %}
59   - </div>
60   - </div>
61   - </div>
62   -
63   -
  36 +<div class="col-md-12 cards-content">
  37 + {% for category in categorys_courses %}
  38 + <div class="panel-group course-card-group">
  39 + <div class="panel panel-default">
  40 + <div class="panel-heading">
  41 + <div class="row">
  42 + <div class="col-md-12">
  43 + <h4 class="panel-title">
  44 + <a class="category-course-link" data-toggle="collapse" href="#{{category.slug}}">{{category.name}}</a>
  45 + </h4>
  46 + </div>
  47 + </div>
  48 + </div>
  49 + <div id="{{category.slug}}" class="panel-collapse collapse">
  50 + {% for course in category.course_category %}
  51 + {% include "course/course_card.html" %}
64 52 {% endfor %}
  53 + </div>
65 54 </div>
66   - <div class="col-md-12">
67   - <nav aria-label="Page navigation">
68   - <ul class="pagination">
69   - {% if page_obj.has_previous %}
70   - <li>
71   - <a href="?page={{ page_obj.previous_page_number }}"><span><<</span></a>
72   - </li>
73   - {% endif %}
74   - {% for page_number in paginator.page_range %}
75   - <li{% if page_obj.number == page_number %} class="active"{% endif %}>
76   - <a href="?page={{ page_number }}">{{ page_number }}</a>
77   - </li>
78   - {% endfor %}
79   - {% if page_obj.has_next %}
80   - <li>
81   - <a href="?page={{ page_obj.next_page_number }}"><span>>></span></a>
82   - </li>
83   - {% endif %}
84   - </ul>
85   - </nav>
86   - <div class="row" id="modal_course">
87   - </div>
88   - <script type="text/javascript" src="{% static 'js/course.js' %}"></script>
  55 + </div>
  56 + {% endfor %}
  57 +</div>
  58 +<div id="modal_course">
  59 +
  60 +</div>
  61 +<script type="text/javascript" src="{% static 'js/course.js' %}"></script>
89 62 {% endblock %}
... ...
courses/templates/course/view.html
... ... @@ -4,7 +4,7 @@
4 4 {% load django_bootstrap_breadcrumbs %}
5 5  
6 6 {% block style %}
7   - <link rel="stylesheet" href="{% static 'css/course/course.css' %}">
  7 +<link rel="stylesheet" href="{% static 'css/course/course.css' %}">
8 8 {% endblock style %}
9 9  
10 10 {% block javascript %}
... ... @@ -15,38 +15,45 @@
15 15  
16 16 {% block breadcrumbs %}
17 17  
18   - {{ block.super }}
19   - {% breadcrumb course 'course:view' course.slug %}
  18 +{{ block.super }}
  19 +{% breadcrumb course 'course:view' course.slug %}
20 20  
21 21 {% endblock %}
22 22  
23 23 {% block content %}
  24 +{% if messages %}
  25 +{% for message in messages %}
  26 +<script type="text/javascript">
  27 +alertify.success('{{message}}');
  28 +</script>
  29 +{% endfor %}
  30 +{% endif %}
24 31  
25   - <div class="col-md-12 cards-content">
26   - <div class="group course-card ">
27   - <div class="panel panel-info">
28   - <div class="panel-heading course">
29   - <div class="row">
30   - <div class="col-xs-6 col-md-6 titleTopic">
31   - <h4>{{course.name}}</h4>
32   - </div>
33   - {% if user|has_role:'professor' or user|has_role:'system_admin' %}
34   - <div class="col-xs-6 col-md-6 divMoreActions" >
35   - <div class="btn-group">
36   - <button class="btn btn-default btn-sm dropdown-toggle" type="button" id="moreActions" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
37   - <i class="fa fa-ellipsis-v fa-2x" aria-hidden="true"></i>
38   - </button>
39   - <ul class="dropdown-menu pull-right" aria-labelledby="moreActions">
40   - <li><a href="{% url 'course:replicate_course' course.slug %}"><i class="fa fa-files-o fa-fw" aria-hidden="true"></i>{% trans 'Replicate' %}</a></li>
41   - <li><a href="{% url 'course:update' course.slug %}"><i class="fa fa-pencil fa-fw" aria-hidden="true"></i>{% trans 'Edit' %}</a></li>
42   - <li><a href="javascript:delete_course.get('{% url 'course:delete' course.slug %}','#course','#modal_course')"><i class="fa fa-trash fa-fw" aria-hidden="true"></i>&nbsp;{% trans 'Remove' %}</a></li>
43   - </ul>
44   - </div>
  32 +<div class="col-md-12 cards-content">
  33 + <div class="group course-card ">
  34 + <div class="panel panel-info">
  35 + <div class="panel-heading course">
  36 + <div class="row">
  37 + <div class="col-xs-6 col-md-6 titleTopic">
  38 + <h4>{{course.name}}</h4>
  39 + </div>
  40 + {% if user|has_role:'professor' or user|has_role:'system_admin' %}
  41 + <div class="col-xs-6 col-md-6 divMoreActions" >
  42 + <div class="btn-group">
  43 + <button class="btn btn-default btn-sm dropdown-toggle" type="button" id="moreActions" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  44 + <i class="fa fa-ellipsis-v fa-2x" aria-hidden="true"></i>
  45 + </button>
  46 + <ul class="dropdown-menu pull-right" aria-labelledby="moreActions">
  47 + <li><a href="{% url 'course:replicate_course' course.slug %}"><i class="fa fa-files-o fa-fw" aria-hidden="true"></i>{% trans 'Replicate' %}</a></li>
  48 + <li><a href="{% url 'course:update' course.slug %}"><i class="fa fa-pencil fa-fw" aria-hidden="true"></i>{% trans 'Edit' %}</a></li>
  49 + <li><a href="javascript:delete_course.get('{% url 'course:delete' course.slug %}','#course','#modal_course')"><i class="fa fa-trash fa-fw" aria-hidden="true"></i>&nbsp;{% trans 'Remove' %}</a></li>
  50 + </ul>
45 51 </div>
46   - {% elif user|has_role:'student' %}
47   - {% if not request.user in course.students.all %}
48   - <a onclick="subscribe($(this), '{% url 'course:subscribe' course.slug %}', {{ course.id}}, '{% trans 'Are you sure you want to subscribe to this course?' %}')"><button class="btn btn-sm btn-primary btn-raised pull-right">{% trans 'Subscribe' %}</button></a>
49   - {% endif %}
  52 + </div>
  53 + {% elif user|has_role:'student' %}
  54 + {% if not request.user in course.students.all %}
  55 + <a onclick="subscribe($(this), '{% url 'course:subscribe' course.slug %}', {{ course.id}}, '{% trans 'Are you sure you want to subscribe to this course?' %}')"><button class="btn btn-sm btn-primary btn-raised pull-right">{% trans 'Subscribe' %}</button></a>
  56 + {% endif %}
50 57 {% endif %}
51 58 </div>
52 59 </div>
... ... @@ -55,71 +62,49 @@
55 62 </div>
56 63 </div>
57 64 </div>
58   -
59   -<!-- MODAL CREATE SUBJECT -->
60   -<div class="modal" tabindex="-1" role="dialog " id="createSubject">
61   - <div class="modal-dialog">
62   - <div class="modal-content">
63   - <div class="modal-header">
64   - <h4 class="modal-title">{% trans "Create a New Subject" %}</h4>
65   - </div>
66   - <div class="modal-body">
67   - <div>
68   - </div>
69   - <div class="modal-footer">
70   - <button type="button" data-dismiss="modal" class="btn btn-default btn-raised">{% trans "Cancel" %}</button>
71   - <a href="#" target="_self"><button type="button" class="btn btn-primary btn-raised"> {% trans "Confirm" %}</button></a>
72   - </div>
73   - </div>
74   - </div>
75   - </div>
76   -</div>
77   -
78   -<div class="panel-group ui-accordion ui-widget ui-helper-reset ui-sortable" id="accordion" role="tablist" aria-multiselectable="false"></div>
79 65 <div class="cards-detail">
80 66 {% for subject in subjects %}
81   - <div class="panel panel-default panel_{{ subject.id }}">
82   - <div class="panel-heading heading_{{subject.id}} subject ui-sortable-handle">
83   - <div class="row">
84   - <div class="col-xs-9 col-md-6 titleTopic">
85   - <a role="button" href="{% url 'course:view_subject' subject.slug %}">
86   - <h4>{{subject.name}}</h4>
87   - </a>
  67 + <div class="panel panel-default panel_{{ subject.id }}">
  68 + <div class="panel-heading heading_{{subject.id}} subject ui-sortable-handle">
  69 + <div class="row">
  70 + <div class="col-xs-9 col-md-6 titleTopic">
  71 + <a role="button" href="{% url 'course:view_subject' subject.slug %}">
  72 + <h4>{{subject.name}}</h4>
  73 + </a>
  74 + </div>
  75 + {% if user|has_role:'professor' or user|has_role:'system_admin' %}
  76 + <div class="col-xs-3 col-md-6 divMoreActions">
  77 + <div class="btn-group">
  78 + <button class="btn btn-default btn-sm dropdown-toggle" type="button" id="moreActions" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  79 + <i class="fa fa-ellipsis-v fa-2x" aria-hidden="true"></i>
  80 + </button>
  81 + <ul class="dropdown-menu pull-right" aria-labelledby="moreActions">
  82 + <li><a href="{% url 'course:replicate_subject' subject.slug %}"><i class="fa fa-files-o fa-fw" aria-hidden="true"></i>&nbsp; {% trans "Replicate" %}</a></li>
  83 + <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>
  84 + <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>
  85 + </ul>
88 86 </div>
89   - {% if user|has_role:'professor' or user|has_role:'system_admin' %}
90   - <div class="col-xs-3 col-md-6 divMoreActions">
91   - <div class="btn-group">
92   - <button class="btn btn-default btn-sm dropdown-toggle" type="button" id="moreActions" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
93   - <i class="fa fa-ellipsis-v fa-2x" aria-hidden="true"></i>
94   - </button>
95   - <ul class="dropdown-menu pull-right" aria-labelledby="moreActions">
96   - <li><a href="{% url 'course:replicate_subject' subject.slug %}"><i class="fa fa-files-o fa-fw" aria-hidden="true"></i>&nbsp; {% trans "Replicate" %}</a></li>
97   - <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>
98   - <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>
99   - </ul>
100   -
101   - </div>
102   - </div>
103   - {% endif %}
  87 + </div>
  88 + {% endif %}
104 89  
105   - {% if user|show_subject_subscribe:subject %}
106   - <div class="col-xs-3 col-md-2">
107   - <a onclick="subscribe($(this), '{% url 'course:subscribe_subject' subject.slug %}', {{ subject.id }}, '{% trans 'Are you sure you want to subscribe to this subject?' %}')" class="btn btn-sm btn-primary btn-raised">{% trans 'Subscribe' %}</a>
108   - </div>
109   - {% endif %}
110   - </div>
  90 + {% if user|show_subject_subscribe:subject %}
  91 + <div class="col-xs-3 col-md-2">
  92 + <a onclick="subscribe($(this), '{% url 'course:subscribe_subject' subject.slug %}', {{ subject.id }}, '{% trans 'Are you sure you want to subscribe to this subject?' %}')" class="btn btn-sm btn-primary btn-raised">{% trans 'Subscribe' %}</a>
  93 + </div>
  94 + {% endif %}
111 95 </div>
112 96 </div>
  97 + </div>
113 98 {% endfor %}
114   -
115   -
116   -{% if user|has_role:'professor' and user in course.professors.all or user|has_role:'system_admin' %}
117   -
118   - <div class="form-group">
119   - <a href="{% url 'course:create_subject' course.slug %}" data-toggle="modal" data-target="" class="btn btn-primary btn-lg btn-block btn-raised">{% trans 'Create Subject' %}<div class="ripple-container"></div></a>
  99 + {% if user|has_role:'professor' and user in course.professors.all or user|has_role:'system_admin' %}
  100 + <div class="form-group">
  101 + <a href="{% url 'course:create_subject' course.slug %}" class="btn btn-primary btn-lg btn-block btn-raised">{% trans 'Create Subject' %}<div class="ripple-container"></div></a>
  102 + </div>
  103 + {% endif %}
120 104 </div>
121   -{% endif %}
122 105 </div>
  106 +<div id="modal_course">
  107 +
123 108 </div>
124 109  
125 110 {% endblock %}
... ...
courses/views.py
... ... @@ -195,6 +195,7 @@ class ReplicateCourseView(LoginRequiredMixin, HasRoleMixin, LogMixin, Notificati
195 195 def form_valid(self, form):
196 196 self.object = form.save()
197 197 self.object.professors.add(self.request.user)
  198 + messages.success(self.request,_("Course '%s' was successfully created!"%(self.object.name) ))
198 199 return super(ReplicateCourseView, self).form_valid(form)
199 200  
200 201 def get_context_data(self, **kwargs):
... ... @@ -254,7 +255,7 @@ class UpdateCourseView(LoginRequiredMixin, HasRoleMixin, LogMixin, generic.Updat
254 255 self.log_context['course_category_name'] = self.object.category.name
255 256  
256 257 super(UpdateCourseView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
257   -
  258 + messages.success(self.request,_("Course '%s' was successfully updated!"%(self.object.name) ))
258 259 return super(UpdateCourseView, self).form_valid(form)
259 260  
260 261 def get_context_data(self, **kwargs):
... ... @@ -302,7 +303,10 @@ class DeleteCourseView(LoginRequiredMixin, HasRoleMixin, LogMixin, generic.Delet
302 303 courses = self.request.user.courses_professors.all()
303 304 context['courses'] = courses
304 305 context['title'] = course.name
305   -
  306 + if (self.request.GET.get('view') == 'index'):
  307 + context['index'] = True
  308 + else:
  309 + context['index'] = False
306 310 return context
307 311  
308 312 def get_success_url(self):
... ... @@ -313,7 +317,7 @@ class DeleteCourseView(LoginRequiredMixin, HasRoleMixin, LogMixin, generic.Delet
313 317 self.log_context['course_category_name'] = self.object.category.name
314 318  
315 319 super(DeleteCourseView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
316   -
  320 + messages.success(self.request,_("Successfully deleted!"))
317 321 return reverse_lazy('course:manage')
318 322  
319 323  
... ... @@ -415,18 +419,18 @@ class DeleteTopic(LoginRequiredMixin, HasRoleMixin, LogMixin, generic.DeleteView
415 419 context['subjects'] = self.object.subject.course.subjects.all()
416 420 else:
417 421 context['subjects'] = self.object.subject.course.subjects.filter(Q(visible=True) | Q(professors__in=[self.request.user]))
418   -
  422 +
419 423 return context
420 424  
421 425 def get_success_url(self):
422 426 self.log_context['topic_id'] = self.object.id
423 427 self.log_context['topic_name'] = self.object.name
424 428 self.log_context['topic_slug'] = self.object.slug
425   -
  429 +
426 430 self.log_context['subject_id'] = self.object.subject.id
427 431 self.log_context['subject_name'] = self.object.subject.name
428 432 self.log_context['subject_slug'] = self.object.subject.slug
429   -
  433 +
430 434 self.log_context['course_id'] = self.object.subject.course.id
431 435 self.log_context['course_name'] = self.object.subject.course.name
432 436 self.log_context['course_slug'] = self.object.subject.course.slug
... ...