2 namespace TYPO3\CMS\Backend\Form\Element;
40 $table = $this->data[
'tableName'];
41 $fieldName = $this->data[
'fieldName'];
42 $row = $this->data[
'databaseRow'];
43 $parameterArray = $this->data[
'parameterArray'];
44 $config = $parameterArray[
'fieldConf'][
'config'];
45 $show_thumbs = $config[
'show_thumbs'];
48 $size = isset($config[
'size']) ? (int)$config[
'size'] : $this->minimumInputWidth;
54 $thumbnails = array();
57 $disabled = $config[
'readOnly'];
59 $parameterArray[
'itemFormElID_file'] = $parameterArray[
'itemFormElID'] .
'_files';
62 $noList = isset($config[
'disable_controls']) &&
GeneralUtility::inList($config[
'disable_controls'],
'list');
63 $noDelete = isset($config[
'disable_controls']) &&
GeneralUtility::inList($config[
'disable_controls'],
'delete');
69 $attributes[
'data-formengine-validation-rules'] = htmlspecialchars(
72 'minitems' => $minitems,
73 'maxitems' => $maxitems
79 if ($maxitems === 1) {
80 $resultArray[
'additionalJavaScriptPost'][] =
84 $parameterArray[
'fieldChangeFunc'][
'TBE_EDITOR_fieldChanged'] =
'setFormValueManipulate(' .
GeneralUtility::quoteJSvalue($parameterArray[
'itemFormElName'])
85 .
', \'Remove\'); ' . $parameterArray[
'fieldChangeFunc'][
'TBE_EDITOR_fieldChanged'];
88 $parameterArray[
'fieldChangeFunc'][
'TBE_EDITOR_fieldChanged'] =
'setFormValueManipulate(' .
GeneralUtility::quoteJSvalue($parameterArray[
'itemFormElName'])
89 .
', \'RemoveFirstIfFull\', ' .
GeneralUtility::quoteJSvalue($maxitems) .
'); ' . $parameterArray[
'fieldChangeFunc'][
'TBE_EDITOR_fieldChanged'];
92 $html =
'<input type="hidden" class="t3js-group-hidden-field" data-formengine-input-name="' . htmlspecialchars($parameterArray[
'itemFormElName']) .
'" value="' . ($config[
'multiple'] ? 1 : 0) .
'"' . $disabled .
' />';
95 $commonParameters = array(
97 'dontShowMoveIcons' => isset($config[
'hideMoveIcons']) || $maxitems <= 1,
99 'maxitems' => $maxitems,
100 'style' => isset($config[
'selectedListStyle'])
101 ?
' style="' . htmlspecialchars($config[
'selectedListStyle']) .
'"'
103 'readOnly' => $disabled,
104 'noBrowser' => $noList || isset($config[
'disable_controls']) &&
GeneralUtility::inList($config[
'disable_controls'],
'browser'),
109 switch ((
string)$config[
'internal_type']) {
110 case 'file_reference':
111 $config[
'uploadfolder'] =
'';
115 if (empty($allowed)) {
116 $allowed = array(
'*');
122 foreach ($itemArray as &$fileItem) {
123 list($fileUid, $fileLabel) = explode(
'|', $fileItem);
125 $fileObject = $fileFactory->getFileObject($fileUid);
126 $fileLabel = $fileObject->getName();
128 $fileItem = $fileUid .
'|' . $fileLabel;
132 foreach ($itemArray as $imgRead) {
133 $imgP = explode(
'|', $imgRead);
134 $imgPath = rawurldecode($imgP[0]);
137 $fileObject = $fileFactory->getFileObject($imgP[0]);
138 if ($fileObject->isMissing()) {
139 $thumbnails[] = array(
140 'message' => \TYPO3\CMS\Core\Resource\Utility\BackendUtility::getFlashMessageForMissingFile($fileObject)->
render()
143 $thumbnails[] = array(
144 'name' => htmlspecialchars($fileObject->getName()),
148 $name = htmlspecialchars($fileObject->getName());
150 $thumbnails[] = array(
152 'image' =>
'<span title="' . $name .
'">' . $this->iconFactory->getIconForResource($fileObject,
Icon::SIZE_SMALL) .
'</span>'
157 $rowCopy[$fieldName] = $imgPath;
159 $thumbnails[] = array(
161 'image' => BackendUtility::thumbCode(
167 $config[
'uploadfolder'],
174 $message = $exception->getMessage();
181 $defaultFlashMessageQueue = $flashMessageService->getMessageQueueByIdentifier();
182 $defaultFlashMessageQueue->enqueue($flashMessage);
183 $logMessage = $message .
' (' . $table .
':' . $row[
'uid'] .
')';
190 $params = array_merge($commonParameters, array(
191 'allowed' => $allowed,
192 'disallowed' => $disallowed,
193 'thumbnails' => $thumbnails,
194 'noDelete' => $noDelete
196 $html .= $this->dbFileIcons(
197 $parameterArray[
'itemFormElName'],
199 implode(
',', $allowed),
203 $parameterArray[
'onFocus'],
208 if (!$disabled && !(isset($config[
'disable_controls']) &&
GeneralUtility::inList($config[
'disable_controls'],
'upload'))) {
211 if ($isDirectFileUploadEnabled && $config[
'uploadfolder']) {
213 $multipleAttribute =
'';
214 $multipleFilenameSuffix =
'';
215 if (isset($config[
'maxitems']) && $config[
'maxitems'] > 1) {
216 $multipleAttribute =
' multiple="multiple"';
217 $multipleFilenameSuffix =
'[]';
220 <div id="' . $parameterArray[
'itemFormElID_file'] .
'">
221 <input type="file"' . $multipleAttribute .
'
222 name="data_files' . $this->data[
'elementBaseName'] . $multipleFilenameSuffix .
'"
223 size="35" onchange="' . implode(
'', $parameterArray[
'fieldChangeFunc']) .
'"
234 $params = $commonParameters;
235 $html .= $this->dbFileIcons(
236 $parameterArray[
'itemFormElName'],
242 $parameterArray[
'onFocus']
248 $onlySingleTableAllowed =
false;
251 $allowedTables = array();
252 if ($allowed[0] ===
'*') {
253 $allowedTables = array(
254 'name' => htmlspecialchars($languageService->sL(
'LLL:EXT:lang/locallang_core.xlf:labels.allTables'))
257 $onlySingleTableAllowed = count($allowed) === 1;
258 foreach ($allowed as $allowedTable) {
259 $allowedTables[] = array(
261 'name' => htmlspecialchars($languageService->sL(
$GLOBALS[
'TCA'][$allowedTable][
'ctrl'][
'title'])),
262 'icon' => $this->iconFactory->getIconForRecord($allowedTable, array(),
Icon::SIZE_SMALL)->render(),
263 'onClick' =>
'setFormValueOpenBrowser(\'db\', ' .
GeneralUtility::quoteJSvalue($parameterArray[
'itemFormElName'] .
'|||' . $allowedTable) .
'); return false;'
268 $itemArray = array();
273 foreach ($temp_itemArray as $dbRead) {
274 $recordParts = explode(
'|', $dbRead);
277 if (!$this_table && $onlySingleTableAllowed) {
278 $this_table = $allowed;
280 $itemArray[] = array(
'table' => $this_table,
'id' => $this_uid);
281 if (!$disabled && $show_thumbs) {
283 $thumbnails[] = array(
285 'image' => $this->iconFactory->getIconForRecord($this_table, $rr,
Icon::SIZE_SMALL)->render(),
288 'table' => $this_table
293 $params = array_merge($commonParameters, array(
295 'allowedTables' => $allowedTables,
296 'thumbnails' => $thumbnails,
298 $html .= $this->dbFileIcons(
299 $parameterArray[
'itemFormElName'],
301 implode(
',', $allowed),
305 $parameterArray[
'onFocus'],
315 $html = $this->renderWizards(
322 $parameterArray[
'itemFormElName'],
326 $resultArray[
'html'] = $html;