admin: factor anchored field redirection (#43580)

This commit is contained in:
Frédéric Péters 2020-06-03 15:23:28 +02:00
parent 7644b3578c
commit 520dee9e8a
1 changed files with 11 additions and 15 deletions

View File

@ -102,6 +102,13 @@ class FieldDefPage(Directory):
def get_deletion_extra_warning(self):
return _('Warning: this field data will be permanently deleted.')
def redirect_field_anchor(self, field):
anchor = '#itemId_%s' % field.id if field else ''
if self.page_id:
return redirect('../%s' % anchor)
else:
return redirect('../../fields/%s' % anchor)
def delete(self):
form = Form(enctype='multipart/form-data')
ellipsized_field_label = misc.ellipsize(self.field.unhtmled_label, 60)
@ -114,10 +121,7 @@ class FieldDefPage(Directory):
form.add_submit('delete', _('Submit'))
form.add_submit("cancel", _("Cancel"))
if form.get_widget('cancel').parse():
if self.page_id:
return redirect('../#itemId_%s' % self.field.id)
else:
return redirect('../../fields/#itemId_%s' % self.field.id)
return self.redirect_field_anchor(self.field)
if not form.is_submitted() or form.has_errors():
get_response().breadcrumb.append(('delete', _('Delete')))
self.html_top(title = _('Delete Field'))
@ -135,13 +139,9 @@ class FieldDefPage(Directory):
above_field = self.objectdef.fields[0]
else:
above_field = self.objectdef.fields[field_index-1]
anchor = '#itemId_%s' % above_field.id
else:
anchor = ''
if self.page_id:
return redirect('../' + anchor)
else:
return redirect('../../fields/' + anchor)
above_field = None
return self.redirect_field_anchor(above_field)
def duplicate(self):
field_pos = self.objectdef.fields.index(self.field)
@ -151,11 +151,7 @@ class FieldDefPage(Directory):
new_field.id = self.objectdef.get_new_field_id()
fields.insert(field_pos+1, new_field)
self.objectdef.store()
anchor = '#itemId_%s' % new_field.id
if self.page_id:
return redirect('../' + anchor)
else:
return redirect('../../fields/' + anchor)
return self.redirect_field_anchor(new_field)
class FieldsPagesDirectory(Directory):