Commit 525e272f8fc7702dc382776abcff4cbcde767e8b

Authored by Zambom
1 parent fa75a311

Adding form to create forum [Issue: #73]

courses/templates/subject/form_view_teacher.html
@@ -2,20 +2,31 @@ @@ -2,20 +2,31 @@
2 2
3 {% block javascript %} 3 {% block javascript %}
4 <script type="text/javascript"> 4 <script type="text/javascript">
5 - var baseUrl = '{% url "forum:index" %}'; 5 + var baseUrl = '{% url "forum:index" %}';
  6 + var formUrl = '{% url "forum:create" %}';
6 7
7 function showForum(topic) { 8 function showForum(topic) {
8 $.ajax({ 9 $.ajax({
9 url: baseUrl, 10 url: baseUrl,
10 data: {'topic': topic}, 11 data: {'topic': topic},
11 success: function(data) { 12 success: function(data) {
12 - console.log(data);  
13 - $(".modal-body").html(data); 13 + $(".forum_topics").html(data);
14 } 14 }
15 }); 15 });
16 16
17 $('#forumModal').modal(); 17 $('#forumModal').modal();
18 } 18 }
  19 +
  20 + function getForm() {
  21 + $.ajax({
  22 + url: formUrl,
  23 + success: function(data) {
  24 + $(".forum_form").html(data);
  25 + }
  26 + });
  27 +
  28 + $(".forum_form").show();
  29 + }
19 </script> 30 </script>
20 {% endblock %} 31 {% endblock %}
21 32
@@ -43,10 +54,15 @@ @@ -43,10 +54,15 @@
43 <div class="modal-content"> 54 <div class="modal-content">
44 <div class="modal-header"> 55 <div class="modal-header">
45 <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> 56 <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
46 - <h4 class="modal-title" id="myModalLabel"></h4> 57 + <h4 class="modal-title" id="myModalLabel">
  58 + <button type="button" class="btn btn-primary btn-sm" onclick="getForm();"><i class="fa fa-plus"></i> {% trans 'Create Forum' %}</button>
  59 + </h4>
47 </div> 60 </div>
48 <div class="modal-body"> 61 <div class="modal-body">
49 - 62 + <div class="forum_form" style="display:none">
  63 + </div>
  64 + <div class="forum_topics">
  65 + </div>
50 </div> 66 </div>
51 </div> 67 </div>
52 </div> 68 </div>
forum/forms.py 0 → 100644
@@ -0,0 +1,20 @@ @@ -0,0 +1,20 @@
  1 +from django import forms
  2 +from django.utils.translation import ugettext_lazy as _
  3 +from .models import Forum
  4 +
  5 +class ForumForm(forms.ModelForm):
  6 +
  7 + class Meta:
  8 + model = Forum
  9 + fields = ('title', 'description')
  10 + labels = {
  11 + 'title': _('Title'),
  12 + 'description': _('Description')
  13 + }
  14 + help_texts = {
  15 + 'title': _('Forum title'),
  16 + 'description': _('What is this forum about?')
  17 + }
  18 + widgets = {
  19 + 'description': forms.Textarea(attrs={'cols': 80, 'rows': 5}),
  20 + }
0 \ No newline at end of file 21 \ No newline at end of file
forum/templates/forum_form.html 0 → 100644
@@ -0,0 +1,30 @@ @@ -0,0 +1,30 @@
  1 +{% load static i18n %}
  2 +{% load widget_tweaks %}
  3 +
  4 +<form method="post" action="" enctype="multipart/form-data">
  5 + {% csrf_token %}
  6 + {% for field in form %}
  7 + <div class="form-group {% if form.has_error %} has-error {% endif %} is-fileinput">
  8 + <label for="{{ field.auto_id }}">{{ field.label }}</label>
  9 + {% render_field field class='form-control' %}
  10 + <span class="help-block">{{ field.help_text }}</span>
  11 + {% if field.errors %}
  12 + <div class="row">
  13 + <br />
  14 + <div class="alert alert-danger alert-dismissible" role="alert">
  15 + <button type="button" class="close" data-dismiss="alert" aria-label="Close">
  16 + <span aria-hidden="true">&times;</span>
  17 + </button>
  18 + <ul>
  19 + {% for error in field.errors %}
  20 + <li>{{ error }}</li>
  21 + {% endfor %}
  22 + </ul>
  23 + </div>
  24 + </div>
  25 + {% endif %}
  26 + </div>
  27 + {% endfor %}
  28 +
  29 + <input type="submit" value="{% trans 'Create' %}" class="btn btn-primary" />
  30 +</form>
0 \ No newline at end of file 31 \ No newline at end of file
forum/templates/forum_list.html
1 -<div class="page-header">  
2 - <h1 id="timeline">Forum</h1>  
3 - <b>Descricao: </b>Learning Python<p>  
4 - <b>Abertura: </b>Sexta-feira, 10 Junho 2016  
5 -</div>  
6 -<ul class="timeline"> 1 +{% load i18n %}
  2 +
  3 +{% if foruns|length > 0 %}
  4 + {% for forum in foruns %}
  5 + <div class="page-header">
  6 + <h1 id="timeline">{{ forum }}</h1>
  7 + <b>Descricao: </b>{{ forum.description }}<p>
  8 + <b>Abertura: </b>{{ forum.create_date }}
  9 + </div>
  10 + {% endfor %}
  11 +{% else %}
  12 + <div class="page-header">
  13 + <p>{% trans 'No forum created yet.' %}</p>
  14 + </div>
  15 +{% endif %}
  16 +<!-- <ul class="timeline">
7 <li> 17 <li>
8 <div class="timeline-badge"> 18 <div class="timeline-badge">
9 <img id="logo" src="https://uxdesign-html-japm94.c9users.io/atividades-amadeus/uxdesign-html/img/topo-amadeus.png"> 19 <img id="logo" src="https://uxdesign-html-japm94.c9users.io/atividades-amadeus/uxdesign-html/img/topo-amadeus.png">
@@ -38,4 +48,4 @@ @@ -38,4 +48,4 @@
38 <i class="fa fa-pencil-square-o fa-2x" aria-hidden="true"></i> 48 <i class="fa fa-pencil-square-o fa-2x" aria-hidden="true"></i>
39 </div> 49 </div>
40 </li> 50 </li>
41 -</ul>  
42 \ No newline at end of file 51 \ No newline at end of file
  52 +</ul> -->
43 \ No newline at end of file 53 \ No newline at end of file
@@ -5,4 +5,5 @@ from . import views @@ -5,4 +5,5 @@ from . import views
5 5
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 ] 9 ]
forum/views.py
1 from django.shortcuts import render, get_object_or_404 1 from django.shortcuts import render, get_object_or_404
2 from django.core.urlresolvers import reverse_lazy 2 from django.core.urlresolvers import reverse_lazy
3 from django.utils.translation import ugettext_lazy as _ 3 from django.utils.translation import ugettext_lazy as _
4 -from django.views.generic import ListView 4 +from django.views import generic
5 from django.contrib.auth.mixins import LoginRequiredMixin 5 from django.contrib.auth.mixins import LoginRequiredMixin
6 6
7 from .models import Forum 7 from .models import Forum
8 from courses.models import Topic 8 from courses.models import Topic
9 9
10 -class ForumIndex(LoginRequiredMixin, ListView): 10 +from .forms import ForumForm
  11 +
  12 +class ForumIndex(LoginRequiredMixin, generic.ListView):
11 login_url = reverse_lazy("core:home") 13 login_url = reverse_lazy("core:home")
12 redirect_field_name = 'next' 14 redirect_field_name = 'next'
13 15
14 template_name = "forum_list.html" 16 template_name = "forum_list.html"
15 - context_object_name = 'forum' 17 + context_object_name = 'foruns'
16 18
17 def get_queryset(self): 19 def get_queryset(self):
18 topic = get_object_or_404(Topic, slug = self.request.GET.get('topic', '')) 20 topic = get_object_or_404(Topic, slug = self.request.GET.get('topic', ''))
@@ -20,3 +22,9 @@ class ForumIndex(LoginRequiredMixin, ListView): @@ -20,3 +22,9 @@ class ForumIndex(LoginRequiredMixin, ListView):
20 context = Forum.objects.filter(topic = topic) 22 context = Forum.objects.filter(topic = topic)
21 23
22 return context 24 return context
  25 +
  26 +class CreateForumView(LoginRequiredMixin, generic.edit.CreateView):
  27 +
  28 + template_name = 'forum_form.html'
  29 + form_class = ForumForm
  30 + success_url = reverse_lazy('forum:index')
23 \ No newline at end of file 31 \ No newline at end of file