[TASK] RTE: Remove unused css files
[Packages/TYPO3.CMS.git] / typo3 / sysext / rtehtmlarea / Classes / Extension / CopyPaste.php
1 <?php
2 namespace TYPO3\CMS\Rtehtmlarea\Extension;
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
17 use TYPO3\CMS\Core\Utility\GeneralUtility;
18 use TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi;
19 use TYPO3\CMS\Rtehtmlarea\RteHtmlAreaBase;
20
21 /**
22 * Copy Paste plugin for htmlArea RTE
23 *
24 * @author Stanislas Rolland <typo3(arobas)sjbr.ca>
25 */
26 class CopyPaste extends RteHtmlAreaApi {
27
28 /**
29 * The name of the plugin registered by the extension
30 *
31 * @var string
32 */
33 protected $pluginName = 'CopyPaste';
34
35 /**
36 * The comma-separated list of button names that the registered plugin is adding to the htmlArea RTE toolbar
37 *
38 * @var string
39 */
40 protected $pluginButtons = 'copy, cut, paste';
41
42 /**
43 * The name-converting array, converting the button names used in the RTE PageTSConfing to the button id's used by the JS scripts
44 *
45 * @var array
46 */
47 protected $convertToolbarForHtmlAreaArray = array(
48 'copy' => 'Copy',
49 'cut' => 'Cut',
50 'paste' => 'Paste'
51 );
52
53 /**
54 * Hide buttons not implemented in client browsers
55 *
56 * @var array
57 */
58 protected $hideButtonsFromClient = array(
59 'gecko' => array('copy', 'cut', 'paste'),
60 'webkit' => array('copy', 'cut', 'paste'),
61 'opera' => array('copy', 'cut', 'paste')
62 );
63
64 /**
65 * Returns TRUE if the plugin is available and correctly initialized
66 *
67 * @param RteHtmlAreaBase $parentObject parent object
68 * @return bool TRUE if this plugin object should be made available in the current environment and is correctly initialized
69 */
70 public function main($parentObject) {
71 $enabled = parent::main($parentObject);
72 // Hiding some buttons
73 if ($enabled && is_array($this->hideButtonsFromClient[$this->htmlAreaRTE->client['browser']])) {
74 $this->pluginButtons = implode(',', array_diff(GeneralUtility::trimExplode(',', $this->pluginButtons, TRUE), $this->hideButtonsFromClient[$this->htmlAreaRTE->client['browser']]));
75 }
76 // Force enabling the plugin even if no button remains in the tool bar, so that hot keys still are enabled
77 $this->pluginAddsButtons = FALSE;
78 return $enabled;
79 }
80
81 /**
82 * Return an updated array of toolbar enabled buttons
83 *
84 * @param array $show: array of toolbar elements that will be enabled, unless modified here
85 * @return array toolbar button array, possibly updated
86 */
87 public function applyToolbarConstraints($show) {
88 // Remove some buttons
89 if (is_array($this->hideButtonsFromClient[$this->htmlAreaRTE->client['browser']])) {
90 return array_diff($show, $this->hideButtonsFromClient[$this->htmlAreaRTE->client['browser']]);
91 } else {
92 return $show;
93 }
94 }
95
96 }