Merge pull request #393 from creative-commoners/pulls/4/nested-gridfield

FIX Make child responsible for its own nested gridfield
This commit is contained in:
Sabina Talipova 2024-05-22 11:54:31 +12:00 committed by GitHub
commit 4501565b79
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -36,15 +36,6 @@ class GridFieldNestedFormItemRequest extends GridFieldDetailForm_ItemRequest
public function ItemEditForm()
{
$config = new GridFieldConfig_RecordEditor();
/** @var GridFieldDetailForm */
$detailForm = $config->getComponentByType(GridFieldDetailForm::class);
$detailForm->setItemEditFormCallback(function (Form $form, $itemRequest) {
$breadcrumbs = $itemRequest->Breadcrumbs(false);
if ($breadcrumbs && $breadcrumbs->exists()) {
$form->Backlink = $breadcrumbs->first()->Link;
}
});
$relationName = $this->component->getRelationName();
$list = $this->record->$relationName();
if ($relationName == 'Children' && $this->record->hasExtension(Hierarchy::class)) {
@ -55,10 +46,14 @@ class GridFieldNestedFormItemRequest extends GridFieldDetailForm_ItemRequest
->forForeignID($this->record->ID);
}
$relationClass = $list->dataClass();
$singleton = singleton($relationClass);
if ($this->record->hasMethod('getNestedConfig')) {
$config = $this->record->getNestedConfig();
} else {
$config = null;
if ($singleton->hasMethod('getNestedConfig')) {
$config = $singleton->getNestedConfig(get_class($this->record), $relationName);
}
if (!$config) {
$config = new GridFieldConfig_RecordEditor();
$canEdit = $this->record->canEdit();
if (!$canEdit) {
$config->removeComponentsByType(GridFieldAddNewButton::class);
@ -97,6 +92,14 @@ class GridFieldNestedFormItemRequest extends GridFieldDetailForm_ItemRequest
}
}
}
/** @var GridFieldDetailForm */
$detailForm = $config->getComponentByType(GridFieldDetailForm::class);
$detailForm->setItemEditFormCallback(function (Form $form, $itemRequest) {
$breadcrumbs = $itemRequest->Breadcrumbs(false);
if ($breadcrumbs && $breadcrumbs->exists()) {
$form->Backlink = $breadcrumbs->first()->Link;
}
});
$this->record->invokeWithExtensions('updateNestedConfig', $config);