Revert "[RELEASE] Release of TYPO3 4.6.0alpha1"
[Packages/TYPO3.CMS.git] / t3lib / contextmenu / pagetree / class.t3lib_contextmenu_pagetree_dataprovider.php
1 <?php
2 /***************************************************************
3 * Copyright notice
4 *
5 * (c) 2010-2011 TYPO3 Tree Team <http://forge.typo3.org/projects/typo3v4-extjstrees>
6 * All rights reserved
7 *
8 * This script is part of the TYPO3 project. The TYPO3 project is
9 * free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
13 *
14 * The GNU General Public License can be found at
15 * http://www.gnu.org/copyleft/gpl.html.
16 * A copy is found in the textfile GPL.txt and important notices to the license
17 * from the author is found in LICENSE.txt distributed with these scripts.
18 *
19 *
20 * This script is distributed in the hope that it will be useful,
21 * but WITHOUT ANY WARRANTY; without even the implied warranty of
22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23 * GNU General Public License for more details.
24 *
25 * This copyright notice MUST APPEAR in all copies of the script!
26 ***************************************************************/
27
28 /**
29 * Context Menu Data Provider for the Page Tree
30 *
31 * @author Stefan Galinski <stefan.galinski@gmail.com>
32 * @package TYPO3
33 * @subpackage t3lib
34 */
35 class t3lib_contextmenu_pagetree_DataProvider extends t3lib_contextmenu_AbstractDataProvider {
36 /**
37 * Old Context Menu Options (access mapping)
38 *
39 * Note: Only option with different namings are mapped!
40 *
41 * @var array
42 */
43 protected $legacyContextMenuMapping = array(
44 'hide' => 'disable',
45 'paste' => 'pasteInto,pasteAfter',
46 'mount_as_treeroot' => 'mountAsTreeroot',
47 );
48
49 /**
50 * Fetches the items that should be disabled from the context menu
51 *
52 * @return array
53 */
54 protected function getDisableActions() {
55 $tsConfig = $GLOBALS['BE_USER']->getTSConfig(
56 'options.contextMenu.' . $this->getContextMenuType() . '.disableItems'
57 );
58
59 $disableItems = array();
60 if (trim($tsConfig['value']) !== '') {
61 $disableItems = t3lib_div::trimExplode(',', $tsConfig['value']);
62 }
63
64 $tsConfig = $GLOBALS['BE_USER']->getTSConfig('options.contextMenu.pageTree.disableItems');
65 $oldDisableItems = array();
66 if (trim($tsConfig['value']) !== '') {
67 $oldDisableItems = t3lib_div::trimExplode(',', $tsConfig['value']);
68 }
69
70 $additionalItems = array();
71 foreach ($oldDisableItems as $item) {
72 if (!isset($this->legacyContextMenuMapping[$item])) {
73 $additionalItems[] = $item;
74 continue;
75 }
76
77 if (strpos($this->legacyContextMenuMapping[$item], ',')) {
78 $actions = t3lib_div::trimExplode(',', $this->legacyContextMenuMapping[$item]);
79 $additionalItems = array_merge($additionalItems, $actions);
80 } else {
81 $additionalItems[] = $item;
82 }
83 }
84
85 return array_merge($disableItems, $additionalItems);
86 }
87
88 /**
89 * Returns the actions for the node
90 *
91 * @param t3lib_tree_pagetree_Node $node
92 * @return t3lib_contextmenu_ActionCollection
93 */
94 public function getActionsForNode(t3lib_tree_Node $node) {
95 $this->disableItems = $this->getDisableActions();
96 $configuration = $this->getConfiguration();
97 $contextMenuActions = array();
98 if (is_array($configuration)) {
99 $contextMenuActions = $this->getNextContextMenuLevel($configuration, $node);
100 }
101
102 return $contextMenuActions;
103 }
104 }
105
106 if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['t3lib/contextmenu/pagetree/class.t3lib_contextmenu_pagetree_dataprovider.php']) {
107 include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['t3lib/contextmenu/pagetree/class.t3lib_contextmenu_pagetree_dataprovider.php']);
108 }
109
110 ?>