2 namespace TYPO3\CMS\Filelist\ViewHelpers\Uri
;
5 * This file is part of the TYPO3 CMS project.
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.
11 * For the full copyright and license information, please read the
12 * LICENSE.txt file that was distributed with this source code.
14 * The TYPO3 project - inspiring people to share!
18 use TYPO3\CMS\Backend\Clipboard\Clipboard
;
19 use TYPO3\CMS\Core\Utility\GeneralUtility
;
20 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface
;
21 use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper
;
22 use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic
;
25 * Class EditFileContentViewHelper
27 class CopyCutFileViewHelper
extends AbstractViewHelper
29 use CompileWithRenderStatic
;
32 * Initialize arguments
34 public function initializeArguments()
36 $this->registerArgument('file', \TYPO3\CMS\Core\Resource\AbstractFile
::class, '', true
);
37 $this->registerArgument('copyOrCut', 'string', '', false
, 'copy');
41 * Renders a link to copy a file
43 * @param array $arguments
44 * @param Closure $renderChildrenClosure
45 * @param RenderingContextInterface $renderingContext
48 * @throws \InvalidArgumentException
50 public static function renderStatic(array $arguments, Closure
$renderChildrenClosure, RenderingContextInterface
$renderingContext)
52 if ($arguments['copyOrCut'] !== 'cut' && $arguments['copyOrCut'] !== 'copy') {
53 throw new \
InvalidArgumentException('Argument "copyOrCut" must be either "copy" or "cut"', 1540548015);
56 /** @var \TYPO3\CMS\Core\Resource\AbstractFile $file */
57 $file = $arguments['file'];
59 /** @var Clipboard $clipboard */
60 $clipboard = GeneralUtility
::makeInstance(Clipboard
::class);
61 $clipboard->initializeClipboard();
63 $fullIdentifier = $file->getCombinedIdentifier();
64 $md5 = GeneralUtility
::shortMD5($fullIdentifier);
65 $isSel = $clipboard->isSelected('_FILE', $md5);
67 if ($arguments['copyOrCut'] === 'copy') {
68 return $clipboard->selUrlFile($fullIdentifier, true
, $isSel === 'copy');
70 return $clipboard->selUrlFile($fullIdentifier, false
, $isSel === 'cut');