Commit 8dbb9d76a75b35f5096046d07218d137dc091135
1 parent
7f219cc5
Exists in
master
and in
5 other branches
Adding forum edition [Issue: #97]
Showing
7 changed files
with
92 additions
and
23 deletions
Show diff stats
courses/templates/subject/form_view_teacher.html
... | ... | @@ -26,25 +26,6 @@ |
26 | 26 | </div> |
27 | 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 | 29 | <div class="modal fade" id="createForum" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> |
49 | 30 | <div class="modal-dialog" role="document"> |
50 | 31 | <div class="modal-content"> | ... | ... |
forum/static/js/forum.js
... | ... | @@ -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 | 130 | * Function to delete a forum |
93 | 131 | * |
94 | 132 | */ | ... | ... |
forum/templates/forum/forum_form.html
1 | 1 | {% load static i18n %} |
2 | 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 | 5 | {% csrf_token %} |
6 | 6 | {% for field in form %} |
7 | 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 | 41 | </div> |
42 | 42 | <div class="panel-body"> |
43 | 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 | 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 | 46 | </ul> |
47 | 47 | </div> |
... | ... | @@ -53,7 +53,7 @@ |
53 | 53 | <div class="row panel panel-default"> |
54 | 54 | <div class="panel-body"> |
55 | 55 | <div class="comments-list"> |
56 | - <div class="section-heading"> | |
56 | + <div class="section-heading forum_view"> | |
57 | 57 | <h1>{{ forum }}</h1> |
58 | 58 | <h4><b>{% trans 'Description' %}:</b> {{ forum.description }}</h4> |
59 | 59 | <h4><b>{% trans 'Opened in' %}:</b> {{ forum.create_date }}</h4> |
... | ... | @@ -103,6 +103,25 @@ |
103 | 103 | </div> |
104 | 104 | </div> |
105 | 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 | 125 | {% endblock %} |
107 | 126 | |
108 | 127 | {% block rightbar %} |
... | ... | @@ -114,4 +133,4 @@ |
114 | 133 | |
115 | 134 | </div> |
116 | 135 | </div> |
117 | -{% endblock rightbar %} | |
118 | 136 | \ No newline at end of file |
137 | +{% endblock rightbar %} | ... | ... |
forum/urls.py
... | ... | @@ -6,8 +6,10 @@ from . import views |
6 | 6 | urlpatterns = [ |
7 | 7 | url(r'^$', views.ForumIndex.as_view(), name='index'), |
8 | 8 | url(r'^create/$', views.CreateForumView.as_view(), name='create'), |
9 | + url(r'^update/(?P<pk>[\w_-]+)/$', views.UpdateForumView.as_view(), name='update'), | |
9 | 10 | url(r'^delete/(?P<pk>[\w_-]+)/$', views.ForumDeleteView.as_view(), name='delete'), |
10 | 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 | 13 | url(r'^forum_deleted/$', views.forum_deleted, name='deleted_forum'), |
12 | 14 | url(r'^create_post/$', views.CreatePostView.as_view(), name='create_post'), |
13 | 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 | 50 | |
51 | 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 | 77 | class ForumDeleteView(LoginRequiredMixin, generic.DeleteView): |
54 | 78 | login_url = reverse_lazy("core:home") |
55 | 79 | redirect_field_name = 'next' | ... | ... |