ENH Auto-scaffold SiteTree relations with tree fields (#2970)

This commit is contained in:
Guy Sartorelli 2024-06-27 10:02:03 +12:00 committed by GitHub
parent 0eccb06623
commit 4e974fe1e8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -31,6 +31,7 @@ use SilverStripe\Forms\DropdownField;
use SilverStripe\Forms\FieldGroup; use SilverStripe\Forms\FieldGroup;
use SilverStripe\Forms\FieldList; use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\FormAction; use SilverStripe\Forms\FormAction;
use SilverStripe\Forms\FormField;
use SilverStripe\Forms\GridField\GridField; use SilverStripe\Forms\GridField\GridField;
use SilverStripe\Forms\GridField\GridFieldDataColumns; use SilverStripe\Forms\GridField\GridFieldDataColumns;
use SilverStripe\Forms\GridField\GridFieldLazyLoader; use SilverStripe\Forms\GridField\GridFieldLazyLoader;
@ -1536,6 +1537,34 @@ class SiteTree extends DataObject implements PermissionProvider, i18nEntityProvi
$this->versionProvider = $versionProvider; $this->versionProvider = $versionProvider;
} }
public function scaffoldFormFieldForHasOne(
string $fieldName,
?string $fieldTitle,
string $relationName,
DataObject $ownerRecord
): FormField {
return TreeDropdownField::create($fieldName, $fieldTitle, static::class);
}
public function scaffoldFormFieldForHasMany(
string $relationName,
?string $fieldTitle,
DataObject $ownerRecord,
bool &$includeInOwnTab
): FormField {
$includeInOwnTab = false;
return TreeMultiselectField::create($relationName, $fieldTitle, static::class);
}
public function scaffoldFormFieldForManyMany(
string $relationName,
?string $fieldTitle,
DataObject $ownerRecord,
bool &$includeInOwnTab
): FormField {
$includeInOwnTab = false;
return TreeMultiselectField::create($relationName, $fieldTitle, static::class);
}
/** /**
* Return the title, description, keywords and language metatags. * Return the title, description, keywords and language metatags.