Commit b0e18756a7d5b02bd6f2896eec04430b72f74693

Authored by Zambom
1 parent e376ec1c

Adding post answers visualization [Issue: #73]

core/static/css/base/amadeus.css
... ... @@ -287,6 +287,9 @@ a.alert_message:hover{color : grey}
287 287 -webkit-padding-start: 0px !important;
288 288 width: 100%;
289 289 }
  290 +.timeline.post a {
  291 + color: #000;
  292 +}
290 293 .timeline.post li {
291 294 padding: 10px;
292 295 border-bottom: 1px solid #fff;
... ...
courses/templates/subject/form_view_teacher.html
... ... @@ -46,6 +46,25 @@
46 46 $("#collapse" + forum).collapse('show');
47 47 }
48 48 }
  49 +
  50 + var postsAnswerUrl = '{% url "forum:post_answers" %}';
  51 + var formPostsAnswersUrl = '';
  52 +
  53 + function showPostsAnswers(post) {
  54 + if ($("#collapse" + post).hasClass('in')) {
  55 + $("#collapse" + post).collapse('hide');
  56 + } else {
  57 + $.ajax({
  58 + url: postsAnswerUrl,
  59 + data: {'post': post},
  60 + success: function(data) {
  61 + $("#collapse" + post).find(".well").html(data);
  62 + }
  63 + });
  64 +
  65 + $("#collapse" + post).collapse('show');
  66 + }
  67 + }
49 68 </script>
50 69 {% endblock %}
51 70  
... ...
forum/models.py
... ... @@ -50,4 +50,4 @@ class PostAnswer(models.Model):
50 50 verbose_name_plural = _('Post Answers')
51 51  
52 52 def __str__(self):
53   - return ''.join([self.user.name, " / ", self.answer_date])
54 53 \ No newline at end of file
  54 + return ''.join([self.user.name, " / ", str(self.answer_date)])
55 55 \ No newline at end of file
... ...
forum/templates/post_answer_list.html
... ... @@ -0,0 +1,34 @@
  1 +{% load i18n %}
  2 +
  3 +{% if answers|length > 0 %}
  4 + <ul class="timeline post">
  5 + {% for answer in answers %}
  6 + <li>
  7 + <div class="timeline-panel">
  8 + <div class="row">
  9 + <div class="col-xs-2 col-sm-2 col-md-2">
  10 + <img class="img-responsive img-rounded" src="{{ answer.user.image_url }}" />
  11 + </div>
  12 + <div class="col-xs-10 col-sm-10 col-md-10">
  13 + <div class="timeline-heading">
  14 + <h3> {{ answer.user }}</h3>
  15 + </div>
  16 + <div class="timeline-body">
  17 + <p><em>{{ answer.message|linebreaks }}</em></p>
  18 + </div>
  19 + <hr>
  20 + <small class="text-muted">
  21 + <span class="pull-right">
  22 + <i class="glyphicon glyphicon-time"></i> {{ answer.answer_date|timesince }}
  23 + {% trans ' ago' %}
  24 + </span>
  25 + </small>
  26 + </div>
  27 + </div>
  28 + </div>
  29 + </li>
  30 + {% endfor %}
  31 + </ul>
  32 +{% else %}
  33 + <p>{% trans 'Nobody answered this post yet.' %}</p>
  34 +{% endif %}
0 35 \ No newline at end of file
... ...
forum/templates/post_list.html
... ... @@ -4,27 +4,33 @@
4 4 <ul class="timeline post">
5 5 {% for post in posts %}
6 6 <li>
7   - <div class="timeline-panel">
8   - <div class="row">
9   - <div class="col-xs-2 col-sm-2 col-md-2">
10   - <img class="img-responsive img-rounded" src="{{ post.user.image_url }}" />
11   - </div>
12   - <div class="col-xs-10 col-sm-10 col-md-10">
13   - <div class="timeline-heading">
14   - <h3> {{ post.user }}</h3>
  7 + <a class="post_collapse" role="button" href="javascript: showPostsAnswers('{{ post.id }}')" aria-expanded="false">
  8 + <div class="timeline-panel">
  9 + <div class="row">
  10 + <div class="col-xs-2 col-sm-2 col-md-2">
  11 + <img class="img-responsive img-rounded" src="{{ post.user.image_url }}" />
15 12 </div>
16   - <div class="timeline-body">
17   - <p><em>{{ post.message|linebreaks }}</em></p>
  13 + <div class="col-xs-10 col-sm-10 col-md-10">
  14 + <div class="timeline-heading">
  15 + <h3> {{ post.user }}</h3>
  16 + </div>
  17 + <div class="timeline-body">
  18 + <p><em>{{ post.message|linebreaks }}</em></p>
  19 + </div>
  20 + <hr>
  21 + <small class="text-muted">
  22 + <span class="pull-right">
  23 + <i class="glyphicon glyphicon-time"></i> {{ post.post_date|timesince }}
  24 + {% trans ' ago' %}
  25 + </span>
  26 + </small>
18 27 </div>
19   - <hr>
20   - <small class="text-muted">
21   - <span class="pull-right">
22   - <i class="glyphicon glyphicon-time"></i> {{ post.post_date|timesince }}
23   - {% trans ' ago' %}
24   - </span>
25   - </small>
26 28 </div>
27 29 </div>
  30 + </a>
  31 + <div class="collapse" id="collapse{{ post.id }}" style="margin-top:10px;">
  32 + <div class="well">
  33 + </div>
28 34 </div>
29 35 </li>
30 36 {% endfor %}
... ...
forum/urls.py
... ... @@ -7,4 +7,5 @@ urlpatterns = [
7 7 url(r'^$', views.ForumIndex.as_view(), name='index'),
8 8 url(r'^create$', views.CreateForumView.as_view(), name='create'),
9 9 url(r'^posts$', views.PostIndex.as_view(), name='posts'),
  10 + url(r'^post_answers$', views.PostAnswerIndex.as_view(), name='post_answers'),
10 11 ]
... ...
forum/views.py
... ... @@ -4,7 +4,7 @@ from django.utils.translation import ugettext_lazy as _
4 4 from django.views import generic
5 5 from django.contrib.auth.mixins import LoginRequiredMixin
6 6  
7   -from .models import Forum, Post
  7 +from .models import Forum, Post, PostAnswer
8 8 from courses.models import Topic
9 9  
10 10 from .forms import ForumForm
... ... @@ -41,4 +41,18 @@ class PostIndex(LoginRequiredMixin, generic.ListView):
41 41  
42 42 context = Post.objects.filter(forum = forum)
43 43  
  44 + return context
  45 +
  46 +class PostAnswerIndex(LoginRequiredMixin, generic.ListView):
  47 + login_url = reverse_lazy("core:home")
  48 + redirect_field_name = 'next'
  49 +
  50 + template_name = "post_answer_list.html"
  51 + context_object_name = 'answers'
  52 +
  53 + def get_queryset(self):
  54 + post = get_object_or_404(Post, id = self.request.GET.get('post', ''))
  55 +
  56 + context = PostAnswer.objects.filter(post = post)
  57 +
44 58 return context
45 59 \ No newline at end of file
... ...