-
Notifications
You must be signed in to change notification settings - Fork 146
Expand file tree
/
Copy pathContactOptionAddForm.class.php
More file actions
102 lines (89 loc) · 3.05 KB
/
ContactOptionAddForm.class.php
File metadata and controls
102 lines (89 loc) · 3.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<?php
namespace wcf\acp\form;
use wcf\data\contact\option\ContactOption;
use wcf\data\contact\option\ContactOptionAction;
use wcf\data\contact\option\ContactOptionList;
use wcf\system\form\builder\field\BooleanFormField;
use wcf\system\form\builder\field\MultilineTextFormField;
use wcf\system\form\builder\field\SelectFormField;
use wcf\system\form\builder\field\ShowOrderFormField;
use wcf\system\form\builder\field\TextFormField;
use wcf\system\form\option\FormOptionHandler;
/**
* Shows the contact option add form.
*
* @author Alexander Ebert
* @copyright 2001-2025 WoltLab GmbH
* @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
*
* @extends AbstractFormOptionAddForm<ContactOption>
*/
class ContactOptionAddForm extends AbstractFormOptionAddForm
{
/**
* @inheritDoc
*/
public $activeMenuItem = 'wcf.acp.menu.link.contact.options.add';
/**
* @inheritDoc
*/
public $neededModules = ['MODULE_CONTACT_FORM'];
/**
* @inheritDoc
*/
public $neededPermissions = ['admin.contact.canManageContactForm'];
/**
* @inheritDoc
*/
public $objectActionClass = ContactOptionAction::class;
#[\Override]
protected function createForm()
{
parent::createForm();
$this->form->appendChildren([
TextFormField::create('optionTitle')
->label('wcf.global.name')
->maximumLength(255)
->i18n()
->languageItemPattern('wcf.contact.option\d+')
->required(),
MultilineTextFormField::create('optionDescription')
->label('wcf.global.description')
->maximumLength(5000)
->rows(5)
->i18n()
->languageItemPattern('wcf.contact.optionDescription\d+'),
ShowOrderFormField::create('showOrder')
->options($this->getContactOptions()),
$this->getOptionTypeFormField(),
...$this->getSharedConfigurationFormFields(),
BooleanFormField::create('isDisabled')
->label('wcf.acp.customOption.isDisabled'),
]);
}
#[\Override]
protected function getOptionTypeFormField(): SelectFormField
{
$formField = parent::getOptionTypeFormField();
// Remove the WYSIWYG type because the contact form does not support
// embedded objects due to the unique behavior of it.
$formField->options(
\array_filter(
FormOptionHandler::getInstance()->getSortedOptionTypes(),
static fn($id) => $id !== "wysiwyg",
\ARRAY_FILTER_USE_KEY,
),
);
return $formField;
}
/**
* @return array<int, string>
*/
protected function getContactOptions(): array
{
$optionList = new ContactOptionList();
$optionList->sqlOrderBy = 'showOrder ASC';
$optionList->readObjects();
return \array_map(static fn($option) => $option->getTitle(), $optionList->getObjects());
}
}