diff --git a/forum/static/js/forum.js b/forum/static/js/forum.js
index 8ea7658..ee794a6 100644
--- a/forum/static/js/forum.js
+++ b/forum/static/js/forum.js
@@ -220,6 +220,39 @@ function delete_post(url, post) {
/*
*
+* Function to load more posts
+*
+*/
+function load_more_posts(pageNum, numberPages, url) {
+ // Remove button from the template
+ $("#load_more_posts").remove();
+
+ // Check if page is equal to the number of pages
+ if (pageNum == numberPages) {
+ return false
+ }
+
+ pageNum += 1;
+
+ // Show loader
+ $("#loading_posts").show();
+
+ // Configure the url we're about to hit
+ setTimeout(function (){
+ $.ajax({
+ url: url,
+ data: {'page': pageNum},
+ success: function(data) {
+ $("#loading_posts").hide();
+
+ $("#posts_list").append(data);
+ }
+ });
+ }, 1000)
+};
+
+/*
+*
* Function to load answer post form and set the submit function
*
*/
@@ -321,4 +354,5 @@ function delete_answer(url, answer, message) {
}
});
});
-}
\ No newline at end of file
+}
+
diff --git a/forum/templates/forum/forum_view.html b/forum/templates/forum/forum_view.html
index 89e104e..9ca54b3 100644
--- a/forum/templates/forum/forum_view.html
+++ b/forum/templates/forum/forum_view.html
@@ -101,6 +101,11 @@
{% list_posts request forum %}
+
+
+
+
+
diff --git a/forum/templates/post/post_list.html b/forum/templates/post/post_list.html
index ad13ac8..0934969 100644
--- a/forum/templates/post/post_list.html
+++ b/forum/templates/post/post_list.html
@@ -42,4 +42,10 @@
{% endfor %}
+{% endif %}
+
+{% if not page_obj.number == paginator.num_pages %}
+
+ {% trans 'Load more posts' %}
+
{% endif %}
\ No newline at end of file
diff --git a/forum/templatetags/list_post.py b/forum/templatetags/list_post.py
index 819767c..06fe36d 100644
--- a/forum/templatetags/list_post.py
+++ b/forum/templatetags/list_post.py
@@ -1,5 +1,7 @@
from django import template
+from django.core.paginator import Paginator, EmptyPage
+
from forum.models import Post
register = template.Library()
@@ -14,6 +16,24 @@ def list_posts(request, forum):
'request': request,
}
- context['posts'] = Post.objects.filter(forum = forum).order_by('post_date')
+ posts = Post.objects.filter(forum = forum).order_by('post_date')
+
+ paginator = Paginator(posts, 1)
+
+ try:
+ page_number = int(request.GET.get('page', 1))
+ except ValueError:
+ raise Http404
+
+ try:
+ page_obj = paginator.page(page_number)
+ except EmptyPage:
+ raise Http404
+
+ context['paginator'] = paginator
+ context['page_obj'] = page_obj
+
+ context['posts'] = page_obj.object_list
+ context['forum'] = forum
return context
\ No newline at end of file
diff --git a/forum/urls.py b/forum/urls.py
index 0d29169..b3fa00f 100644
--- a/forum/urls.py
+++ b/forum/urls.py
@@ -11,6 +11,7 @@ urlpatterns = [
url(r'^render_forum/([\w_-]+)/$', views.render_forum, name='render_forum'),
url(r'^render_edit_forum/([\w_-]+)/$', views.render_edit_forum, name='render_edit_forum'),
url(r'^forum_deleted/$', views.forum_deleted, name='deleted_forum'),
+ url(r'^load_posts/(?P[\w_-]+)/$', views.load_posts, name='load_posts'),
url(r'^create_post/$', views.CreatePostView.as_view(), name='create_post'),
url(r'^update_post/(?P[\w_-]+)/$', views.PostUpdateView.as_view(), name='update_post'),
url(r'^delete_post/(?P[\w_-]+)/$', views.PostDeleteView.as_view(), name='delete_post'),
diff --git a/forum/views.py b/forum/views.py
index a38dd42..ba3c9ad 100644
--- a/forum/views.py
+++ b/forum/views.py
@@ -4,6 +4,8 @@ from django.core.urlresolvers import reverse, reverse_lazy
from django.utils.translation import ugettext_lazy as _
from django.views import generic
from django.contrib.auth.mixins import LoginRequiredMixin
+from django.core.paginator import Paginator, EmptyPage
+from django.http import Http404
from .models import Forum, Post, PostAnswer
from courses.models import Topic
@@ -110,6 +112,36 @@ class ForumDetailView(LoginRequiredMixin, generic.DetailView):
"""
Post Section
"""
+def load_posts(request, forum_id):
+ context = {
+ 'request': request,
+ }
+
+ forum = get_object_or_404(Forum, id = forum_id)
+
+ posts = Post.objects.filter(forum = forum).order_by('post_date')
+
+ paginator = Paginator(posts, 1)
+
+ try:
+ page_number = int(request.GET.get('page', 1))
+ except ValueError:
+ raise Http404
+
+ try:
+ page_obj = paginator.page(page_number)
+ except EmptyPage:
+ raise Http404
+
+ print(page_number)
+
+ context['paginator'] = paginator
+ context['page_obj'] = page_obj
+
+ context['posts'] = page_obj.object_list
+ context['forum'] = forum
+
+ return render(request, 'post/post_list.html', context)
class CreatePostView(LoginRequiredMixin, generic.edit.CreateView):
login_url = reverse_lazy("core:home")
--
libgit2 0.21.2