From 8a8b9f5a0b174225230c2ddb2dc9a0cecb33208e Mon Sep 17 00:00:00 2001 From: Aurélien Bompard Date: Wed, 12 Jun 2013 20:55:20 +0200 Subject: Paginate the list of liked messages in the user profile --- hyperkitty/static/js/hyperkitty.js | 24 ++++++++++++++--- hyperkitty/templates/ajax/last_views.html | 2 ++ hyperkitty/templates/ajax/votes.html | 44 +++++++++++++++++++++++++++++++ hyperkitty/templates/user_profile.html | 42 +++-------------------------- hyperkitty/urls.py | 1 + hyperkitty/views/accounts.py | 38 ++++++++++++-------------- 6 files changed, 89 insertions(+), 62 deletions(-) create mode 100644 hyperkitty/templates/ajax/votes.html diff --git a/hyperkitty/static/js/hyperkitty.js b/hyperkitty/static/js/hyperkitty.js index 5545cb9..ffdf5e1 100644 --- a/hyperkitty/static/js/hyperkitty.js +++ b/hyperkitty/static/js/hyperkitty.js @@ -451,10 +451,10 @@ function update_list_properties(url) { /* - * Last viewed threads in the user's profile + * Last viewed threads and votes in the user's profile */ -function update_last_views(base_url) { - var container = $(".views"); +function update_user_profile_part(container, base_url) { + container = $(container); var loader = container.prev(".ajaxloader"); function _update(url) { loader.show(); @@ -466,6 +466,24 @@ function update_last_views(base_url) { e.preventDefault(); _update(base_url + $(this).attr("href")); }); + // setup cancellation links + container.find("a.cancel").click(function(e) { + e.preventDefault(); + var form = $(this).parents("form").first(); + var data = form_to_json(form); + $.ajax({ + type: "POST", + url: form.attr("action"), + data: data, + dataType: "json", + success: function(response) { + form.parents("tr").remove(); + }, + error: function(jqXHR, textStatus, errorThrown) { + alert(jqXHR.responseText); + } + }); + }); }, error: function(jqXHR, textStatus, errorThrown) { //alert(jqXHR.responseText); diff --git a/hyperkitty/templates/ajax/last_views.html b/hyperkitty/templates/ajax/last_views.html index a3e1786..0a6d97a 100644 --- a/hyperkitty/templates/ajax/last_views.html +++ b/hyperkitty/templates/ajax/last_views.html @@ -7,6 +7,7 @@ + List Subject Original author Start date @@ -22,6 +23,7 @@ {% endif %} + {{ lv.list_address }} {{ lv.thread.starting_email.subject }} {{ lv.thread.starting_email.sender_name }} diff --git a/hyperkitty/templates/ajax/votes.html b/hyperkitty/templates/ajax/votes.html new file mode 100644 index 0000000..abe512e --- /dev/null +++ b/hyperkitty/templates/ajax/votes.html @@ -0,0 +1,44 @@ +{% load url from future %} +{% load i18n %} +{% load hk_generic %} + + {% if votes %} + + + + + + + + + + + + {% for vote in votes %} + + + + + + + + {% endfor %} + +
ListSubjectAuthorDateVote
{{ vote.list_address }}{{ vote.message.subject }}{{ vote.message.sender_name }}{{ vote.message|get_date|date:"l, j F Y H:i:s" }} +
+ {% csrf_token %} + + {% if vote.vote == 1 %} + You like it + {% elif vote.vote == -1 %} + You dislike it + {% endif %} + (cancel) + +
+ {% include "paginator.html" with pager=votes page_key="vpage" %} + {% else %} +

No vote yet.

+ {% endif %} diff --git a/hyperkitty/templates/user_profile.html b/hyperkitty/templates/user_profile.html index a057fe2..f82f92d 100644 --- a/hyperkitty/templates/user_profile.html +++ b/hyperkitty/templates/user_profile.html @@ -75,43 +75,8 @@

Votes

-

Up Votes

- {% if votes_up %} - - {% else %} -

No up vote yet.

- {% endif %} - -

Down Votes

- {% if votes_down %} - - {% else %} -

No down vote yet.

- {% endif %} + Loading... +
@@ -122,7 +87,8 @@ diff --git a/hyperkitty/urls.py b/hyperkitty/urls.py index b75632b..10143b1 100644 --- a/hyperkitty/urls.py +++ b/hyperkitty/urls.py @@ -46,6 +46,7 @@ urlpatterns = patterns('hyperkitty.views', url(r'^accounts/logout/$', logout_view, {'next_page': '/'}, name='user_logout'), url(r'^accounts/profile/$', 'accounts.user_profile', name='user_profile'), url(r'^accounts/profile/last_views$', 'accounts.last_views', name='user_last_views'), + url(r'^accounts/profile/votes$', 'accounts.votes', name='user_votes'), url(r'^accounts/register/$', 'accounts.user_registration', {'SSL': True}, name='user_registration'), diff --git a/hyperkitty/views/accounts.py b/hyperkitty/views/accounts.py index d7e35c2..9e1c4aa 100644 --- a/hyperkitty/views/accounts.py +++ b/hyperkitty/views/accounts.py @@ -87,25 +87,6 @@ def user_profile(request, user_email=None): "timezone": get_current_timezone(), }) - # Votes - try: - votes = Rating.objects.filter(user=request.user) - except Rating.DoesNotExist: - votes = [] - votes_up = [] - votes_down = [] - for vote in votes: - message = store.get_message_by_hash_from_list( - vote.list_address, vote.messageid) - vote_data = {"list_address": vote.list_address, - "messageid": vote.messageid, - "message": message, - } - if vote.vote == 1: - votes_up.append(vote_data) - elif vote.vote == -1: - votes_down.append(vote_data) - # Favorites try: favorites = Favorite.objects.filter(user=request.user) @@ -126,8 +107,6 @@ def user_profile(request, user_email=None): context = { 'user_profile' : user_profile, 'form': form, - 'votes_up': votes_up, - 'votes_down': votes_down, 'favorites': favorites, 'flash_messages': flash_messages, } @@ -195,3 +174,20 @@ def last_views(request): return render(request, 'ajax/last_views.html', { "last_views": last_views, }) + + +@login_required +def votes(request): + store = get_store(request) + # Votes + try: + votes = Rating.objects.filter(user=request.user) + except Rating.DoesNotExist: + votes = [] + votes = paginate(votes, request.GET.get('vpage')) + for vote in votes: + vote.message = store.get_message_by_hash_from_list( + vote.list_address, vote.messageid) + return render(request, 'ajax/votes.html', { + "votes": votes, + }) -- cgit