2016-10-14 03:30:05 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace SilverStripe\Forms\Tests\GridField\GridFieldDetailFormTest;
|
|
|
|
|
|
|
|
use SilverStripe\Control\Controller;
|
|
|
|
use SilverStripe\Dev\TestOnly;
|
|
|
|
use SilverStripe\Forms\CheckboxField;
|
|
|
|
use SilverStripe\Forms\FieldList;
|
|
|
|
use SilverStripe\Forms\Form;
|
|
|
|
use SilverStripe\Forms\GridField\GridField;
|
|
|
|
use SilverStripe\Forms\GridField\GridFieldAddNewButton;
|
|
|
|
use SilverStripe\Forms\GridField\GridFieldDetailForm;
|
|
|
|
use SilverStripe\Forms\GridField\GridFieldEditButton;
|
|
|
|
use SilverStripe\Forms\GridField\GridFieldToolbarHeader;
|
|
|
|
use SilverStripe\Forms\TextField;
|
|
|
|
|
|
|
|
class CategoryController extends Controller implements TestOnly
|
|
|
|
{
|
2020-04-20 19:58:09 +02:00
|
|
|
private static $allowed_actions = ['Form'];
|
2016-12-16 05:34:21 +01:00
|
|
|
|
|
|
|
protected $template = 'BlankPage';
|
|
|
|
|
|
|
|
public function Link($action = null)
|
|
|
|
{
|
|
|
|
return Controller::join_links('GridFieldDetailFormTest_CategoryController', $action, '/');
|
|
|
|
}
|
|
|
|
|
|
|
|
public function Form()
|
|
|
|
{
|
|
|
|
// GridField lists categories for a specific person
|
2020-08-27 01:18:54 +02:00
|
|
|
$person = Person::get()->filter('FirstName', 'Jane')->First();
|
2016-12-16 05:34:21 +01:00
|
|
|
$detailFields = singleton(Category::class)->getCMSFields();
|
|
|
|
$detailFields->addFieldsToTab(
|
|
|
|
'Root.Main',
|
2020-04-20 19:58:09 +02:00
|
|
|
[
|
2016-12-16 05:34:21 +01:00
|
|
|
new CheckboxField('ManyMany[IsPublished]'),
|
|
|
|
new TextField('ManyMany[PublishedBy]')
|
2020-04-20 19:58:09 +02:00
|
|
|
]
|
2016-12-16 05:34:21 +01:00
|
|
|
);
|
|
|
|
$categoriesField = new GridField('testfield', 'testfield', $person->Categories());
|
|
|
|
$categoriesField->getConfig()->addComponent(
|
|
|
|
$gridFieldForm = new GridFieldDetailForm(
|
|
|
|
$this,
|
|
|
|
'SilverStripe\\Forms\\Form'
|
|
|
|
)
|
|
|
|
);
|
|
|
|
$gridFieldForm->setFields($detailFields);
|
|
|
|
$categoriesField->getConfig()->addComponent(new GridFieldToolbarHeader());
|
|
|
|
$categoriesField->getConfig()->addComponent(new GridFieldAddNewButton('toolbar-header-right'));
|
|
|
|
$categoriesField->getConfig()->addComponent(new GridFieldEditButton());
|
|
|
|
|
|
|
|
$favGroupsField = new GridField('testgroupsfield', 'testgroupsfield', $person->FavouriteGroups());
|
|
|
|
$favGroupsField->getConfig()->addComponent(new GridFieldDetailForm($this, 'Form'));
|
|
|
|
$favGroupsField->getConfig()->addComponent(new GridFieldToolbarHeader());
|
|
|
|
$favGroupsField->getConfig()->addComponent(new GridFieldAddNewButton('toolbar-header-right'));
|
|
|
|
$favGroupsField->getConfig()->addComponent(new GridFieldEditButton());
|
|
|
|
|
|
|
|
$fields = new FieldList($categoriesField, $favGroupsField);
|
|
|
|
return new Form($this, 'Form', $fields, new FieldList());
|
|
|
|
}
|
2016-10-14 03:30:05 +02:00
|
|
|
}
|