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 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/templates/forum/render_forum.html 0 → 100644
... ... @@ -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 6 \ No newline at end of file
... ...
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'
... ...