From 3a52cd56c621a470e2f7662a27279345c81473fe Mon Sep 17 00:00:00 2001 From: Emanuel Schuetze Date: Sat, 19 May 2012 16:25:55 +0200 Subject: [PATCH] #165: Use AJAX instead of page reload to publish assignment polls --- .../static/javascript/assignment.js | 19 +++++++++++++++++-- .../assignment/static/styles/assignment.css | 14 +++++++++++++- .../assignment/templates/assignment/view.html | 14 +++++--------- openslides/assignment/views.py | 8 ++++++++ 4 files changed, 43 insertions(+), 12 deletions(-) diff --git a/openslides/assignment/static/javascript/assignment.js b/openslides/assignment/static/javascript/assignment.js index 3c82dab38..761a46756 100644 --- a/openslides/assignment/static/javascript/assignment.js +++ b/openslides/assignment/static/javascript/assignment.js @@ -8,8 +8,6 @@ $(function() { $('a.elected').parent().parent().children('td').addClass('elected'); - - $('.election_link').click(function(event) { event.preventDefault(); line = $(this); @@ -50,4 +48,21 @@ $(function() { } }); }); + $('.publish_link').click(function(event) { + event.preventDefault(); + link = $(this); + $.ajax({ + type: 'GET', + url: link.attr('href'), + dataType: 'json', + success: function(data) { + if (data.published) { + link.addClass('published'); + } else { + link.removeClass('published'); + } + link.attr('href', data.link); + } + }); + }); }); diff --git a/openslides/assignment/static/styles/assignment.css b/openslides/assignment/static/styles/assignment.css index 2552f717c..4079471c7 100644 --- a/openslides/assignment/static/styles/assignment.css +++ b/openslides/assignment/static/styles/assignment.css @@ -29,4 +29,16 @@ td a.election_link { display: block; margin-right: 5px; float: left; -} \ No newline at end of file +} + +a.publish_link span { + background-image: url(../images/icons/off.png); + background-repeat: no-repeat; + background-position: center; + width: 16px; + height: 16px; + display: inline-block; +} +a.publish_link.published span { + background-image: url(../images/icons/on.png); +} diff --git a/openslides/assignment/templates/assignment/view.html b/openslides/assignment/templates/assignment/view.html index 7d01ceb8c..069b37dd5 100644 --- a/openslides/assignment/templates/assignment/view.html +++ b/openslides/assignment/templates/assignment/view.html @@ -114,15 +114,11 @@ {{ forloop.counter }}. {% trans 'ballot' %} {% if perms.assignment.can_manage_assignment %} - {% if poll.published %} - - {% else %} - - {% endif %} + + + {% endif %} diff --git a/openslides/assignment/views.py b/openslides/assignment/views.py index ff34573b5..ede62a0f2 100644 --- a/openslides/assignment/views.py +++ b/openslides/assignment/views.py @@ -246,6 +246,14 @@ def set_published(request, poll_id, published=True): messages.success(request, _("Poll successfully set to unpublished.") ) except AssignmentPoll.DoesNotExist: messages.error(request, _('Poll ID %d does not exist.') % int(poll_id)) + + if request.is_ajax(): + if published: + link = reverse('assignment_poll_notpublish', args=[poll_id]) + else: + link = reverse('assignment_poll_publish', args=[poll_id]) + return ajax_request({'published': published, + 'link': link}) return redirect(reverse('assignment_view', args=[poll.assignment.id]))