silverstripe-webpack/app/src/Elements/Extensions/UserDefinedFormExtension.php

80 lines
2.4 KiB
PHP
Raw Normal View History

2019-04-11 00:15:29 +02:00
<?php
2021-03-14 21:45:35 +01:00
namespace App\Elements\Extensions;
2019-04-11 00:15:29 +02:00
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\GridField\GridFieldDataColumns;
use SilverStripe\Forms\GridField\GridFieldPaginator;
use SilverStripe\Forms\ListboxField;
use SilverStripe\Forms\TextareaField;
use SilverStripe\ORM\DataExtension;
use SilverStripe\UserForms\Model\EditableFormField;
class UserDefinedFormExtension extends DataExtension
{
2019-08-27 17:25:05 +02:00
/*private static $db = [
2019-04-11 00:15:29 +02:00
'CustomThankYouCode' => 'HTMLText',
'RedirectOnComplete' => 'Boolean(0)',
'RedirectOnCompleteURL' => 'Varchar(255)',
2019-08-27 17:25:05 +02:00
];*/
2019-04-11 00:15:29 +02:00
private static $many_many = [
'SubmissionColumns' => EditableFormField::class,
];
public function updateCMSFields(FieldList $fields)
{
parent::updateCMSFields($fields);
$fields->removeByName('RedirectOnComplete');
$fields->removeByName('RedirectOnCompleteURL');
$fields->removeByName('SubmissionColumns');
$fields->addFieldToTab(
'Root.Main',
ListboxField::create(
'SubmissionColumns',
'Display following columns at submissions list',
$this->owner->Fields()->map('ID', 'Title')
)
);
$tab = $fields->findOrMakeTab('Root.FormOptions');
/*$tab->push(CheckboxField::create('RedirectOnComplete'));
$tab->push(TextField::create('RedirectOnCompleteURL'));*/
2019-08-27 17:25:05 +02:00
//$tab->push(TextareaField::create('CustomThankYouCode'));
2019-04-11 00:15:29 +02:00
$grid = $fields->dataFieldByName('Submissions');
$config = $grid->getConfig();
$config->getComponentByType(GridFieldPaginator::class)->setItemsPerPage(100);
$cols = $this->owner->SubmissionColumns();
if ($grid && $cols->count()) {
$dataCols = $config->getComponentByType(GridFieldDataColumns::class);
$columns = [
'ID' => 'ID',
'Created' => 'Created',
];
foreach ($cols as $col) {
$title = $col->getField('Title');
$name = $col->getField('Name');
$columns[$name] = [
'title' => $title,
2019-08-27 17:25:05 +02:00
'callback' => function ($item) use ($name) {
2019-04-11 00:15:29 +02:00
return $item->relField($name);
}
];
}
$columns['Actions'] = 'Actions';
$dataCols->setDisplayFields($columns);
}
}
}