2 namespace TYPO3\CMS\Backend\Form\Element;
36 $table = $this->data[
'tableName'];
37 $field = $this->data[
'fieldName'];
38 $parameterArray = $this->data[
'parameterArray'];
40 $config = $parameterArray[
'fieldConf'][
'config'];
43 $noMatchingLabel = isset($parameterArray[
'fieldTSConfig'][
'noMatchingValue_label'])
44 ? $this->
getLanguageService()->sL(trim($parameterArray[
'fieldTSConfig'][
'noMatchingValue_label']))
45 :
'[ ' . $this->
getLanguageService()->sL(
'LLL:EXT:lang/locallang_core.xlf:labels.noMatchingValue') .
' ]';
47 $selItems = $config[
'items'];
50 if ($config[
'readOnly']) {
51 $disabled =
' disabled="disabled"';
55 $html .=
'<input type="hidden" data-formengine-input-name="' . htmlspecialchars($parameterArray[
'itemFormElName']) .
'" value="' . ($config[
'multiple'] ? 1 : 0) .
'" />';
63 $itemsArray = $parameterArray[
'itemFormElValue'] ?: [];
66 foreach ($itemsArray as $itemNumber => $itemValue) {
72 if (isset($parameterArray[
'fieldTSConfig'][
'altIcons.'][$itemValue])) {
73 $itemArray[2] = $parameterArray[
'fieldTSConfig'][
'altIcons.'][$itemValue];
76 foreach ($selItems as $selItem) {
77 if ($selItem[1] == $itemValue) {
78 $itemArray[1] = $selItem[0];
82 $itemsArray[$itemNumber] = implode(
'|', $itemArray);
86 if (isset($config[
'size'])) {
87 $size = (int)$config[
'size'];
94 $filterTextfield = [];
95 $filterSelectbox =
'';
99 foreach ($selItems as $p) {
100 $opt[] =
'<option value="' . htmlspecialchars($p[1]) .
'" title="' . $p[0] .
'">' . $p[0] .
'</option>';
103 $selector_itemListStyle = isset($config[
'itemListStyle'])
104 ?
' style="' . htmlspecialchars($config[
'itemListStyle']) .
'"'
106 $sOnChange = implode(
'', $parameterArray[
'fieldChangeFunc']);
109 $itemsToSelect[] =
'<select data-relatedfieldname="' . htmlspecialchars($parameterArray[
'itemFormElName']) .
'" '
110 .
'data-exclusivevalues="' . htmlspecialchars($config[
'exclusiveKeys']) .
'" '
111 .
'id="' . $multiSelectId .
'" '
112 .
'data-formengine-input-name="' . htmlspecialchars($parameterArray[
'itemFormElName']) .
'" '
113 .
'class="form-control t3js-formengine-select-itemstoselect" '
114 . ($size ?
' size="' . $size .
'" ' :
'')
115 .
'onchange="' . htmlspecialchars($sOnChange) .
'" '
116 . $parameterArray[
'onFocus']
118 . $selector_itemListStyle
120 $itemsToSelect[] = implode(LF, $opt);
121 $itemsToSelect[] =
'</select>';
124 if ($config[
'enableMultiSelectFilterTextfield']) {
125 $filterTextfield[] =
'<span class="input-group input-group-sm">';
126 $filterTextfield[] =
'<span class="input-group-addon">';
127 $filterTextfield[] =
'<span class="fa fa-filter"></span>';
128 $filterTextfield[] =
'</span>';
129 $filterTextfield[] =
'<input class="t3js-formengine-multiselect-filter-textfield form-control" value="">';
130 $filterTextfield[] =
'</span>';
134 if (isset($config[
'multiSelectFilterItems']) && is_array($config[
'multiSelectFilterItems']) && count($config[
'multiSelectFilterItems']) > 1) {
135 $filterDropDownOptions = array();
136 foreach ($config[
'multiSelectFilterItems'] as $optionElement) {
137 $optionValue = $this->
getLanguageService()->sL(isset($optionElement[1]) && trim($optionElement[1]) !==
'' ? trim($optionElement[1])
138 : trim($optionElement[0]));
139 $filterDropDownOptions[] =
'<option value="' . htmlspecialchars($this->
getLanguageService()->sL(trim($optionElement[0]))) .
'">'
140 . htmlspecialchars($optionValue) .
'</option>';
142 $filterSelectbox =
'<select class="form-control input-sm t3js-formengine-multiselect-filter-dropdown">'
143 . implode(LF, $filterDropDownOptions) .
'</select>';
147 if (!empty(trim($filterSelectbox)) && !empty($filterTextfield)) {
148 $filterSelectbox =
'<div class="form-multigroup-item form-multigroup-element">' . $filterSelectbox .
'</div>';
149 $filterTextfield =
'<div class="form-multigroup-item form-multigroup-element">' . implode(LF, $filterTextfield) .
'</div>';
150 $selectBoxFilterContents =
'<div class="t3js-formengine-multiselect-filter-container form-multigroup-wrap">' . $filterSelectbox . $filterTextfield .
'</div>';
152 $selectBoxFilterContents = trim($filterSelectbox .
' ' . implode(LF, $filterTextfield));
158 'autoSizeMax' => MathUtility::forceIntegerInRange($config[
'autoSizeMax'], 0),
159 'style' => isset($config[
'selectedListStyle'])
160 ?
' style="' . htmlspecialchars($config[
'selectedListStyle']) .
'"'
162 'dontShowMoveIcons' => $maxitems <= 1,
163 'maxitems' => $maxitems,
166 'selector' => $this->
getLanguageService()->sL(
'LLL:EXT:lang/locallang_core.xlf:labels.selected'),
167 'items' => $this->
getLanguageService()->sL(
'LLL:EXT:lang/locallang_core.xlf:labels.items'),
168 'selectorbox' => $selectBoxFilterContents,
171 'rightbox' => implode(LF, $itemsToSelect),
172 'readOnly' => $disabled
174 $html .= $this->dbFileIcons($parameterArray[
'itemFormElName'],
'',
'', $itemsArray,
'', $params, $parameterArray[
'onFocus']);
178 $html = $this->renderWizards(
182 $this->data[
'databaseRow'],
185 $parameterArray[
'itemFormElName'],
191 $resultArray[
'html'] = $html;