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]))