admin: don't lose page position on field removal (#6028)

This commit is contained in:
Frédéric Péters 2014-11-28 14:54:40 +01:00
parent 4086759a00
commit befa2157fb
1 changed files with 16 additions and 6 deletions

View File

@ -141,9 +141,9 @@ class FieldDefPage(Directory):
form.add_submit("cancel", _("Cancel"))
if form.get_widget('cancel').parse():
if self.page_no:
return redirect('../')
return redirect('../#itemId_%s' % self.field.id)
else:
return redirect('../../fields/')
return redirect('../../fields/#itemId_%s' % self.field.id)
if not form.is_submitted() or form.has_errors():
get_response().breadcrumb.append(('delete', _('Delete')))
self.html_top(title = _('Delete Field'))
@ -152,12 +152,22 @@ class FieldDefPage(Directory):
r += form.render()
return r.getvalue()
else:
del self.objectdef.fields[ self.objectdef.fields.index(self.field) ]
field_index = self.objectdef.fields.index(self.field)
del self.objectdef.fields[field_index]
self.objectdef.store()
if self.page_no:
return redirect('../')
# redirect to the field that was above this one
if self.objectdef.fields:
if field_index == 0:
above_field = self.objectdef.fields[0]
else:
above_field = self.objectdef.fields[field_index-1]
anchor = '#itemId_%s' % above_field.id
else:
return redirect('../../fields/')
anchor = ''
if self.page_no:
return redirect('../' + anchor)
else:
return redirect('../../fields/' + anchor)
def duplicate(self):
field_pos = self.objectdef.fields.index(self.field)