diff --git a/combo/manager/static/js/combo.manager.js b/combo/manager/static/js/combo.manager.js index 2e77cfaf..2e286189 100644 --- a/combo/manager/static/js/combo.manager.js +++ b/combo/manager/static/js/combo.manager.js @@ -90,13 +90,16 @@ $(function() { data: $form.serialize(), type: 'POST', beforeSend: function() { $button.attr('disabled', 'disabled'); }, - success: function() { + success: function(data) { $button.attr('disabled', null); - $.getJSON($form.data('label-url'), + $button.parents('form').find('div.cell-form').html(data); + if (data.indexOf('class="errorlist"') == -1) { + $.getJSON($form.data('label-url'), function(data) { $form.parents('div.cell').find('.additional-label i').text(data['label']); } - ); + ); + } } }); return false; diff --git a/combo/manager/templates/combo/ajax_cell_form.html b/combo/manager/templates/combo/ajax_cell_form.html new file mode 100644 index 00000000..572164d0 --- /dev/null +++ b/combo/manager/templates/combo/ajax_cell_form.html @@ -0,0 +1 @@ +{{form.as_p}} diff --git a/combo/manager/templates/combo/cell_form.html b/combo/manager/templates/combo/cell_form.html index fcc115e8..9c8bc5d9 100644 --- a/combo/manager/templates/combo/cell_form.html +++ b/combo/manager/templates/combo/cell_form.html @@ -3,7 +3,9 @@
{% csrf_token %} {% if form %} +
{{ form.as_p }} +
{% else %}

{% trans "There are no options for this cell." %}

{% endif %} diff --git a/combo/manager/views.py b/combo/manager/views.py index b97fe1a3..afd74717 100644 --- a/combo/manager/views.py +++ b/combo/manager/views.py @@ -185,6 +185,8 @@ page_add_cell = PageAddCellView.as_view() class PageEditCellView(UpdateView): + template_name = 'combo/ajax_cell_form.html' + def get_object(self, queryset=None): page_pk = self.kwargs.get('page_pk') cell_reference = self.kwargs.get('cell_reference') @@ -202,6 +204,12 @@ class PageEditCellView(UpdateView): def get_success_url(self): return reverse('combo-manager-page-view', kwargs={'pk': self.kwargs.get('page_pk')}) + def form_valid(self, form): + if self.request.is_ajax(): + self.object = form.save() + return self.form_invalid(form) + return super(PageEditCellView, self).form_valid(form) + page_edit_cell = PageEditCellView.as_view() diff --git a/tests/test_manager.py b/tests/test_manager.py index 245389ab..1ff962a7 100644 --- a/tests/test_manager.py +++ b/tests/test_manager.py @@ -101,11 +101,23 @@ def test_add_edit_cell(admin_user): assert ('data-cell-reference="%s"' % cells[0].get_reference()) in resp.body resp.forms[0]['c%s-text' % cells[0].get_reference()].value = 'Hello world' resp = resp.forms[0].submit() + assert resp.status_int == 302 assert resp.location == 'http://localhost:80/manage/pages/1/' resp = app.get('/manage/pages/%s/' % page.id) assert resp.forms[0]['c%s-text' % cells[0].get_reference()].value == 'Hello world' + resp = app.get('/manage/pages/%s/' % page.id) + assert ('data-cell-reference="%s"' % cells[0].get_reference()) in resp.body + resp.forms[0]['c%s-text' % cells[0].get_reference()].value = 'World Hello' + resp = resp.forms[0].submit(xhr=True) + assert resp.status_int == 200 + assert resp.body.startswith('