silverstripe-userforms/code/Model/EditableFormField/EditableFieldGroup.php

108 lines
2.6 KiB
PHP
Raw Normal View History

2015-08-11 08:21:43 +02:00
<?php
namespace SilverStripe\UserForms\Model\EditableFormField;
use SilverStripe\Core\Convert;
use SilverStripe\Forms\LabelField;
use SilverStripe\UserForms\FormField\UserFormsGroupField;
use SilverStripe\UserForms\Model\EditableFormField;
use SilverStripe\UserForms\Model\EditableFormField\EditableFieldGroupEnd;
2015-08-11 08:21:43 +02:00
/**
* Specifies that this ends a group of fields
*/
2016-07-21 07:53:59 +02:00
class EditableFieldGroup extends EditableFormField
{
private static $has_one = [
'End' => EditableFieldGroupEnd::class
];
2016-07-21 07:53:59 +02:00
/**
* Disable selection of group class
*
* @config
* @var bool
*/
private static $hidden = true;
/**
* Non-data field type
*
* @var type
*/
private static $literal = true;
private static $table_name = 'EditableFieldGroup';
2016-07-21 07:53:59 +02:00
public function getCMSFields()
{
$fields = parent::getCMSFields();
$fields->removeByName(['MergeField', 'Default', 'Validation', 'DisplayRules']);
2016-07-21 07:53:59 +02:00
return $fields;
}
public function getCMSTitle()
{
$title = $this->getFieldNumber()
?: $this->Title
?: 'group';
return _t(
'SilverStripe\\UserForms\\Model\\EditableFormField\\EditableFieldGroupEnd.FIELD_GROUP_START',
2016-07-21 07:53:59 +02:00
'Group {group}',
['group' => $title]
2016-07-21 07:53:59 +02:00
);
}
public function getInlineClassnameField($column, $fieldClasses)
{
return LabelField::create($column, $this->CMSTitle);
2016-07-21 07:53:59 +02:00
}
public function showInReports()
{
return false;
}
public function getFormField()
{
$field = UserFormsGroupField::create()
->setTitle($this->EscapedTitle ?: false)
->setName($this->Name);
$this->doUpdateFormField($field);
return $field;
}
protected function updateFormField($field)
{
// set the right title on this field
if ($this->RightTitle) {
// Since this field expects raw html, safely escape the user data prior
$field->setRightTitle(Convert::raw2xml($this->RightTitle));
}
// if this field has an extra class
if ($this->ExtraClass) {
$field->addExtraClass($this->ExtraClass);
}
}
protected function onBeforeDelete()
{
parent::onBeforeDelete();
// Ensures EndID is lazy-loaded for onAfterDelete
$this->EndID;
}
protected function onAfterDelete()
{
parent::onAfterDelete();
// Delete end
if (($end = $this->End()) && $end->exists()) {
$end->delete();
}
}
2015-08-11 08:21:43 +02:00
}