1<?php 2namespace TYPO3\CMS\Backend\Controller; 3 4/* 5 * This file is part of the TYPO3 CMS project. 6 * 7 * It is free software; you can redistribute it and/or modify it under 8 * the terms of the GNU General Public License, either version 2 9 * of the License, or any later version. 10 * 11 * For the full copyright and license information, please read the 12 * LICENSE.txt file that was distributed with this source code. 13 * 14 * The TYPO3 project - inspiring people to share! 15 */ 16 17use Psr\Http\Message\ResponseInterface; 18use Psr\Http\Message\ServerRequestInterface; 19use TYPO3\CMS\Backend\Utility\BackendUtility; 20use TYPO3\CMS\Core\Http\JsonResponse; 21use TYPO3\CMS\Core\Imaging\Icon; 22use TYPO3\CMS\Core\Imaging\IconFactory; 23use TYPO3\CMS\Core\Utility\GeneralUtility; 24 25/** 26 * Class ContextHelpAjaxController 27 * @internal This class is a specific Backend controller implementation and is not considered part of the Public TYPO3 API. 28 */ 29class ContextHelpAjaxController 30{ 31 /** 32 * The main dispatcher function. Collect data and prepare HTML output. 33 * 34 * @param ServerRequestInterface $request 35 * @return ResponseInterface 36 * @throws \RuntimeException 37 */ 38 public function getHelpAction(ServerRequestInterface $request): ResponseInterface 39 { 40 $params = $request->getParsedBody()['params'] ?? $request->getQueryParams()['params']; 41 if (($params['action'] ?? '') !== 'getContextHelp') { 42 throw new \RuntimeException('Action must be set to "getContextHelp"', 1518787887); 43 } 44 $result = $this->getContextHelp($params['table'], $params['field']); 45 return new JsonResponse([ 46 'title' => $result['title'], 47 'content' => $result['description'], 48 'link' => $result['moreInfo'] 49 ]); 50 } 51 52 /** 53 * Fetch the context help for the given table/field parameters 54 * 55 * @param string $table Table identifier 56 * @param string $field Field identifier 57 * @return array complete Help information 58 */ 59 protected function getContextHelp($table, $field) 60 { 61 $helpTextArray = BackendUtility::helpTextArray($table, $field); 62 $iconFactory = GeneralUtility::makeInstance(IconFactory::class); 63 $moreIcon = $helpTextArray['moreInfo'] ? $iconFactory->getIcon('actions-view-go-forward', Icon::SIZE_SMALL)->render() : ''; 64 return [ 65 'title' => $helpTextArray['title'], 66 'description' => '<p class="t3-help-short' . ($moreIcon ? ' tipIsLinked' : '') . '">' . $helpTextArray['description'] . $moreIcon . '</p>', 67 'id' => $table . '.' . $field, 68 'moreInfo' => $helpTextArray['moreInfo'] 69 ]; 70 } 71} 72