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

101 lines
2.2 KiB
PHP

<?php
/**
* Specifies that this ends a group of fields
*/
class EditableFieldGroup extends EditableFormField
{
private static $has_one = array(
'End' => 'EditableFieldGroupEnd'
);
/**
* Disable selection of group class
*
* @config
* @var bool
*/
private static $hidden = true;
/**
* Non-data field type
*
* @var type
*/
private static $literal = true;
public function getCMSFields()
{
$fields = parent::getCMSFields();
$fields->removeByName(array('MergeField', 'Default', 'Validation', 'DisplayRules'));
return $fields;
}
public function getCMSTitle()
{
$title = $this->getFieldNumber()
?: $this->Title
?: 'group';
return _t(
'EditableFieldGroupEnd.FIELD_GROUP_START',
'Group {group}',
array(
'group' => $title
)
);
}
public function getInlineClassnameField($column, $fieldClasses)
{
return new LabelField($column, $this->CMSTitle);
}
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();
}
}
}