Commit 8dbb9d76a75b35f5096046d07218d137dc091135

Authored by Zambom
1 parent 7f219cc5

Adding forum edition [Issue: #97]

courses/templates/subject/form_view_teacher.html
@@ -26,25 +26,6 @@ @@ -26,25 +26,6 @@
26 </div> 26 </div>
27 </div> 27 </div>
28 28
29 -<div class="modal fade" id="forumModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">  
30 - <div class="modal-dialog" role="document">  
31 - <div class="modal-content">  
32 - <div class="modal-header">  
33 - <h4 class="modal-title" id="myModalLabel">{% trans 'Forum' %}</h4>  
34 - </div>  
35 - <div class="modal-body">  
36 - <section>  
37 - <div class="forum_topics"></div>  
38 - </section>  
39 - </div>  
40 - <div class="modal-footer">  
41 - <button type="button" class="btn btn-danger btn-raised" data-dismiss="modal">{% trans 'Close' %}</button>  
42 - <button type="button" class="btn btn-primary btn-raised">{% trans 'Save changes' %}</button>  
43 - </div>  
44 - </div>  
45 - </div>  
46 -</div>  
47 -  
48 <div class="modal fade" id="createForum" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> 29 <div class="modal fade" id="createForum" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
49 <div class="modal-dialog" role="document"> 30 <div class="modal-dialog" role="document">
50 <div class="modal-content"> 31 <div class="modal-content">
forum/static/js/forum.js
@@ -89,6 +89,44 @@ function createForum(url, topic) { @@ -89,6 +89,44 @@ function createForum(url, topic) {
89 89
90 /* 90 /*
91 * 91 *
  92 +* Function to load edit forum's form and set the submit function
  93 +*
  94 +*/
  95 +function editForum(url, forum) {
  96 + $.ajax({
  97 + url: url,
  98 + data: {'pk': forum},
  99 + success: function(data) {
  100 + $(".forum_form").html(data);
  101 + //$("#id_topic").val(topic);
  102 +
  103 + $('.date-picker').datepicker();
  104 +
  105 + var frm = $('#forum_create');
  106 + frm.submit(function () {
  107 + $.ajax({
  108 + type: frm.attr('method'),
  109 + url: frm.attr('action'),
  110 + data: frm.serialize(),
  111 + success: function (data) {
  112 + $('.forum_view').html(data);
  113 +
  114 + $("#editForum").modal('hide');
  115 + },
  116 + error: function(data) {
  117 + $(".forum_form").html(data.responseText);
  118 + }
  119 + });
  120 + return false;
  121 + });
  122 + }
  123 + });
  124 +
  125 + $("#editForum").modal();
  126 +}
  127 +
  128 +/*
  129 +*
92 * Function to delete a forum 130 * Function to delete a forum
93 * 131 *
94 */ 132 */
forum/templates/forum/forum_form.html
1 {% load static i18n %} 1 {% load static i18n %}
2 {% load widget_tweaks %} 2 {% load widget_tweaks %}
3 3
4 -<form id="forum_create" method="post" action="{% url 'course:forum:create' %}" enctype="multipart/form-data"> 4 +<form id="forum_create" method="post" action="{% if forum %}{% url 'course:forum:update' forum.id %}{% else %}{% url 'course:forum:create' %}{% endif %}" enctype="multipart/form-data">
5 {% csrf_token %} 5 {% csrf_token %}
6 {% for field in form %} 6 {% for field in form %}
7 <div class="form-group {% if form.has_error %} has-error {% endif %} is-fileinput"> 7 <div class="form-group {% if form.has_error %} has-error {% endif %} is-fileinput">
forum/templates/forum/forum_view.html
@@ -41,7 +41,7 @@ @@ -41,7 +41,7 @@
41 </div> 41 </div>
42 <div class="panel-body"> 42 <div class="panel-body">
43 <ul class="nav nav-pills nav-stacked"> 43 <ul class="nav nav-pills nav-stacked">
44 - <li><a href="javascript:edit_forum('{% url 'course:forum:index' %}', '{{ forum.id }}')">{% trans 'Edit' %}</a></li> 44 + <li><a href="javascript:editForum('{% url 'course:forum:update' forum.id %}', '{{ forum.id }}')">{% 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> 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> 46 </ul>
47 </div> 47 </div>
@@ -53,7 +53,7 @@ @@ -53,7 +53,7 @@
53 <div class="row panel panel-default"> 53 <div class="row panel panel-default">
54 <div class="panel-body"> 54 <div class="panel-body">
55 <div class="comments-list"> 55 <div class="comments-list">
56 - <div class="section-heading"> 56 + <div class="section-heading forum_view">
57 <h1>{{ forum }}</h1> 57 <h1>{{ forum }}</h1>
58 <h4><b>{% trans 'Description' %}:</b> {{ forum.description }}</h4> 58 <h4><b>{% trans 'Description' %}:</b> {{ forum.description }}</h4>
59 <h4><b>{% trans 'Opened in' %}:</b> {{ forum.create_date }}</h4> 59 <h4><b>{% trans 'Opened in' %}:</b> {{ forum.create_date }}</h4>
@@ -103,6 +103,25 @@ @@ -103,6 +103,25 @@
103 </div> 103 </div>
104 </div> 104 </div>
105 </div> 105 </div>
  106 + <!-- Modal to show Forum edit form -->
  107 + <div class="modal fade" id="editForum" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
  108 + <div class="modal-dialog" role="document">
  109 + <div class="modal-content">
  110 + <div class="modal-header">
  111 + <h4 class="modal-title" id="myModalLabel">{% trans 'Forum' %}</h4>
  112 + </div>
  113 + <div class="modal-body">
  114 + <section>
  115 + <div class="forum_form"></div>
  116 + </section>
  117 + </div>
  118 + <div class="modal-footer">
  119 + <button type="button" class="btn btn-danger btn-raised" data-dismiss="modal">{% trans 'Close' %}</button>
  120 + <button type="button" onclick="$('#forum_create').submit();" class="btn btn-primary btn-raised">{% trans 'Update' %}</button>
  121 + </div>
  122 + </div>
  123 + </div>
  124 + </div>
106 {% endblock %} 125 {% endblock %}
107 126
108 {% block rightbar %} 127 {% block rightbar %}
@@ -114,4 +133,4 @@ @@ -114,4 +133,4 @@
114 133
115 </div> 134 </div>
116 </div> 135 </div>
117 -{% endblock rightbar %}  
118 \ No newline at end of file 136 \ No newline at end of file
  137 +{% endblock rightbar %}
forum/templates/forum/render_forum.html 0 → 100644
@@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
  1 +{% load i18n %}
  2 +
  3 +<h1>{{ forum }}</h1>
  4 +<h4><b>{% trans 'Description' %}:</b> {{ forum.description }}</h4>
  5 +<h4><b>{% trans 'Opened in' %}:</b> {{ forum.create_date }}</h4>
0 \ No newline at end of file 6 \ No newline at end of file
@@ -6,8 +6,10 @@ from . import views @@ -6,8 +6,10 @@ from . import views
6 urlpatterns = [ 6 urlpatterns = [
7 url(r'^$', views.ForumIndex.as_view(), name='index'), 7 url(r'^$', views.ForumIndex.as_view(), name='index'),
8 url(r'^create/$', views.CreateForumView.as_view(), name='create'), 8 url(r'^create/$', views.CreateForumView.as_view(), name='create'),
  9 + url(r'^update/(?P<pk>[\w_-]+)/$', views.UpdateForumView.as_view(), name='update'),
9 url(r'^delete/(?P<pk>[\w_-]+)/$', views.ForumDeleteView.as_view(), name='delete'), 10 url(r'^delete/(?P<pk>[\w_-]+)/$', views.ForumDeleteView.as_view(), name='delete'),
10 url(r'^render_forum/([\w_-]+)/$', views.render_forum, name='render_forum'), 11 url(r'^render_forum/([\w_-]+)/$', views.render_forum, name='render_forum'),
  12 + url(r'^render_edit_forum/([\w_-]+)/$', views.render_edit_forum, name='render_edit_forum'),
11 url(r'^forum_deleted/$', views.forum_deleted, name='deleted_forum'), 13 url(r'^forum_deleted/$', views.forum_deleted, name='deleted_forum'),
12 url(r'^create_post/$', views.CreatePostView.as_view(), name='create_post'), 14 url(r'^create_post/$', views.CreatePostView.as_view(), name='create_post'),
13 url(r'^update_post/(?P<pk>[\w_-]+)/$', views.PostUpdateView.as_view(), name='update_post'), 15 url(r'^update_post/(?P<pk>[\w_-]+)/$', views.PostUpdateView.as_view(), name='update_post'),
forum/views.py
@@ -50,6 +50,30 @@ def render_forum(request, forum): @@ -50,6 +50,30 @@ def render_forum(request, forum):
50 50
51 return HttpResponse(str(reverse_lazy('course:forum:view', args = (), kwargs = {'slug': last_forum.slug})) + '-' + str(forum) + '-' + str(last_forum.name)) 51 return HttpResponse(str(reverse_lazy('course:forum:view', args = (), kwargs = {'slug': last_forum.slug})) + '-' + str(forum) + '-' + str(last_forum.name))
52 52
  53 +class UpdateForumView(LoginRequiredMixin, generic.UpdateView):
  54 + login_url = reverse_lazy("core:home")
  55 + redirect_field_name = 'next'
  56 +
  57 + template_name = 'forum/forum_form.html'
  58 + form_class = ForumForm
  59 + model = Forum
  60 +
  61 + def form_invalid(self, form):
  62 + return self.render_to_response(self.get_context_data(form = form), status = 400)
  63 +
  64 + def get_success_url(self):
  65 + self.success_url = reverse('course:forum:render_edit_forum', args = (self.object.id, ))
  66 +
  67 + return self.success_url
  68 +
  69 +def render_edit_forum(request, forum):
  70 + last_forum = get_object_or_404(Forum, id = forum)
  71 + context = {
  72 + 'forum': last_forum
  73 + }
  74 +
  75 + return render(request, 'forum/render_forum.html', context)
  76 +
53 class ForumDeleteView(LoginRequiredMixin, generic.DeleteView): 77 class ForumDeleteView(LoginRequiredMixin, generic.DeleteView):
54 login_url = reverse_lazy("core:home") 78 login_url = reverse_lazy("core:home")
55 redirect_field_name = 'next' 79 redirect_field_name = 'next'