close and open a slide with ajax

This commit is contained in:
Oskar Hahn 2011-08-31 23:47:31 +02:00
parent 4e03fe90bc
commit 462cba2416
4 changed files with 73 additions and 19 deletions

View File

@ -13,6 +13,7 @@
<script type="text/javascript" src="/static/javascript/tabledrag.js"></script> <script type="text/javascript" src="/static/javascript/tabledrag.js"></script>
<script type="text/javascript" src="/static/javascript/knockout-1.2.1.js"></script> <script type="text/javascript" src="/static/javascript/knockout-1.2.1.js"></script>
<script type="text/javascript" src="/static/javascript/agenda.js"></script> <script type="text/javascript" src="/static/javascript/agenda.js"></script>
<script type="text/html" src="/static/javascript/agenda.slideTemplate.js"></script>
<script type="text/javascript"> <script type="text/javascript">
<!--//--><![CDATA[//><!-- <!--//--><![CDATA[//><!--
@ -131,11 +132,11 @@
{% if perms.agenda.can_manage_agenda %} {% if perms.agenda.can_manage_agenda %}
<a href="{% url item_edit item.id %}"><img src="/static/images/icons/document-edit.png" title="{% trans 'Edit item' %}"></a> <a href="{% url item_edit item.id %}"><img src="/static/images/icons/document-edit.png" title="{% trans 'Edit item' %}"></a>
<a href="{% url item_delete item.id %}"><img src="/static/images/icons/edit-delete.png" title="{% trans 'Delete item' %}"></a> <a href="{% url item_delete item.id %}"><img src="/static/images/icons/edit-delete.png" title="{% trans 'Delete item' %}"></a>
{% if item.closed %}
<a href="{% url item_open item.id %}"><img src="/static/images/icons/user-offline.png" title="{% trans 'Click to open item' %}"></a> <a class="close_link {% if item.closed %}closed{% else %}open{% endif %}" href="{% if item.closed %}{% url item_open item.id %}{% else %}{% url item_close item.id %}{% endif %}">
{% else %} <div></div>
<a href="{% url item_close item.id %}"><img src="/static/images/icons/user-online.png" title="{% trans 'Click to close item' %}"></a> </a>
{% endif %}
{% if item.children.exists %} {% if item.children.exists %}
<a href="{% url item_activate_summary item.id %}"><img src="/static/images/icons/view-list-tree.png" title="{% trans 'Select item overview' %}"></a> <a href="{% url item_activate_summary item.id %}"><img src="/static/images/icons/view-list-tree.png" title="{% trans 'Select item overview' %}"></a>
{% endif %} {% endif %}

View File

@ -179,6 +179,14 @@ def set_closed(request, item_id, closed=True):
item.set_closed(closed) item.set_closed(closed)
except Item.DoesNotExist: except Item.DoesNotExist:
messages.error(request, _('Item ID %d does not exist.') % int(item_id)) messages.error(request, _('Item ID %d does not exist.') % int(item_id))
if request.is_ajax():
if closed:
link = reverse('item_open', args=[item.id])
else:
link = reverse('item_close', args=[item.id])
jsondata = {'closed': closed,
'link': link}
return HttpResponse(json.dumps(jsondata))
return redirect(reverse('item_overview')) return redirect(reverse('item_overview'))

View File

@ -18,22 +18,46 @@ function getSlideByID(id) {
return false; return false;
} }
function renderSlide(slide) {
return
}
$(function() { $(function() {
// Set Active Slide with Ajax
$('.activate_link').click(function(event) { $('.activate_link').click(function(event) {
event.preventDefault(); event.preventDefault();
$.ajax({ $.ajax({
type: 'GET', type: 'GET',
url: $(this).attr('href'), url: $(this).attr('href'),
dataType: 'json', dataType: 'json',
data: '', data: '',
success: function(data) { success: function(data) {
$('.activeline').removeClass('activeline').addClass('inactiveline'); $('.activeline').removeClass('activeline').addClass('inactiveline');
$('#item_row_' + data.active).removeClass('inactiveline').addClass('activeline'); $('#item_row_' + data.active).removeClass('inactiveline').addClass('activeline');
}, },
error: function () { error: function () {
alert("Ajax Error"); alert("Ajax Error");
} }
});
});
$('.close_link').click(function(event) {
event.preventDefault();
slide = $(this);
$.ajax({
type: 'GET',
url: slide.attr('href'),
dataType: 'json',
success: function(data) {
if (data.closed) {
newclass = 'closed';
} else {
newclass = 'open';
}
slide.removeClass('closed open').addClass(newclass);
slide.attr('href', data.link);
}
});
}); });
});
ko.applyBindings(ViewModel); ko.applyBindings(ViewModel);
}); });

View File

@ -13,3 +13,24 @@ tr.inactiveline a.activate_link div {
width: 20px; width: 20px;
height: 20px; height: 20px;
} }
a.close_link.closed div {
background-image: url(/static/images/icons/user-offline.png);
background-repeat: no-repeat;
background-position: center;
width: 20px;
height: 20px;
display: inline-block;
}
a.close_link.open div {
background-image: url(/static/images/icons/user-online.png);
background-repeat: no-repeat;
background-position: center;
width: 20px;
height: 20px;
display: inline-block;
}