silverstripe-frameworktest/code/GridFieldTestPage.php

104 lines
3.5 KiB
PHP
Raw Normal View History

<?php
use SilverStripe\ORM\DataList;
use SilverStripe\FrameworkTest\Model\TestPage;
use SilverStripe\Forms\GridField\GridFieldConfig_RecordEditor;
use SilverStripe\Forms\GridField\GridField;
use SilverStripe\Forms\GridField\GridFieldConfig_RelationEditor;
use SilverStripe\View\Requirements;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\Form;
2015-12-17 21:20:49 +01:00
class GridFieldTestPage extends TestPage
{
private static $table_name = 'GridFieldTestPage';
2015-12-17 21:20:49 +01:00
private static $has_one = array(
"HasOneCompany" => "SilverStripe\\FrameworkTest\\Model\\Company",
2015-12-17 21:20:49 +01:00
);
2015-12-17 21:20:49 +01:00
private static $has_many = array(
"HasManyCompanies" => "SilverStripe\\FrameworkTest\\Model\\Company",
2015-12-17 21:20:49 +01:00
);
2015-12-17 21:20:49 +01:00
private static $many_many = array(
"ManyManyCompanies" => "SilverStripe\\FrameworkTest\\Model\\Company",
2015-12-17 21:20:49 +01:00
);
2017-01-15 09:19:56 +01:00
2017-07-06 04:25:33 +02:00
private static $owns = [
'HasOneCompany',
'HasManyCompanies',
];
2015-12-17 21:20:49 +01:00
public function getCMSFields()
{
$fields = parent::getCMSFields();
2015-12-17 21:20:49 +01:00
$grids = array();
2015-12-17 21:20:49 +01:00
$config = new GridFieldConfig_RecordEditor();
$grid = new GridField('Companies', 'Companies', new DataList('SilverStripe\\FrameworkTest\\Model\\Company'), $config);
2017-07-06 04:25:33 +02:00
$grid->setDescription('Records are NOT owned by the page, and need to be individually published');
2015-12-17 21:20:49 +01:00
$fields->addFieldToTab('Root.NoRelation', $grid);
$grids[] = $grid;
2015-12-17 21:20:49 +01:00
$config = new GridFieldConfig_RelationEditor();
$grid = new GridField('HasManyCompanies', 'HasManyCompanies', $this->HasManyCompanies(), $config);
2017-07-06 04:25:33 +02:00
$grid->setDescription('Records are owned by the page, so should auto-publish');
2015-12-17 21:20:49 +01:00
$fields->addFieldToTab('Root.HasMany', $grid);
$grids[] = $grid;
2015-12-17 21:20:49 +01:00
$config = new GridFieldConfig_RelationEditor();
$grid = new GridField('ManyManyCompanies', 'ManyManyCompanies', $this->ManyManyCompanies(), $config);
2017-07-06 04:25:33 +02:00
$grid->setDescription('Records are NOT owned by the page, and need to be individually published');
2015-12-17 21:20:49 +01:00
$fields->addFieldToTab('Root.ManyMany', $grid);
$grids[] = $grid;
$config = new GridFieldConfig_RelationEditor();
$grid = new GridField('HasManyCompaniesStacked', 'HasManyCompanies', $this->HasManyCompanies(), $config);
$grid->setDescription('Records are owned by the page, so should auto-publish');
$fields->addFieldToTab('Root.Stacked', $grid);
$grids[] = $grid;
$config = new GridFieldConfig_RelationEditor();
$grid = new GridField('ManyManyCompaniesStacked', 'ManyManyCompanies', $this->ManyManyCompanies(), $config);
$grid->setDescription('Records are NOT owned by the page, and need to be individually published');
$fields->addFieldToTab('Root.Stacked', $grid);
$grids[] = $grid;
2015-12-17 21:20:49 +01:00
return $fields;
}
}
2017-01-15 09:19:56 +01:00
class GridFieldTestPage_Controller extends PageController
2015-12-17 21:20:49 +01:00
{
2015-12-17 21:20:49 +01:00
private static $allowed_actions = array(
'Form',
);
2017-01-15 09:19:56 +01:00
2015-12-17 21:20:49 +01:00
/**
*
* @var string
*/
public $Title = "GridFieldTestPage";
2017-01-15 09:19:56 +01:00
2015-12-17 21:20:49 +01:00
public function init()
{
parent::init();
Requirements::css('silverstripe/frameworktest: css/gridfieldtest.css', 'screen');
2015-12-17 21:20:49 +01:00
}
2017-01-15 09:19:56 +01:00
2015-12-17 21:20:49 +01:00
/**
*
2017-01-15 09:19:56 +01:00
* @return Form
2015-12-17 21:20:49 +01:00
*/
public function Form()
{
$config = new GridFieldConfig_RecordEditor();
2017-01-15 09:19:56 +01:00
$grid = new GridField('Companies', 'Companies', new DataList('SilverStripe\\FrameworkTest\\Model\\Company'), $config);
2015-12-17 21:20:49 +01:00
return new Form($this, 'Form', new FieldList($grid), new FieldList());
}
2012-04-12 05:04:39 +02:00
}