2 /***************************************************************
5 * (c) 1999-2004 Kasper Skaarhoj (kasper@typo3.com)
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.
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.
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.
25 * This copyright notice MUST APPEAR in all copies of the script!
26 ***************************************************************/
28 * Class, adding extra context menu options
31 * Revised for TYPO3 3.6 November/2003 by Kasper Skaarhoj
33 * @author Kasper Skaarhoj <kasper@typo3.com>
36 * [CLASS/FUNCTION INDEX of SCRIPT]
40 * 67: class tx_extrapagecmoptions
41 * 79: function main(&$backRef,$menuItems,$table,$uid)
42 * 159: function includeLL()
45 * (This index is automatically created/updated by the extension "extdeveval")
61 * Class, adding extra context menu options
63 * @author Kasper Skaarhoj <kasper@typo3.com>
65 * @subpackage tx_extrapagecmoptions
67 class tx_extrapagecmoptions
{
70 * Adding various standard options to the context menu.
71 * This includes both first and second level.
73 * @param object The calling object. Value by reference.
74 * @param array Array with the currently collected menu items to show.
75 * @param string Table name of clicked item.
76 * @param integer UID of clicked item.
77 * @return array Modified $menuItems array
79 function main(&$backRef,$menuItems,$table,$uid) {
80 global $BE_USER,$TCA,$LANG;
82 $localItems = array(); // Accumulation of local items.
84 // Detecting menu level
85 if (!$backRef->cmLevel
) { // LEVEL: Primary menu.
87 // Creating menu items here:
88 if ($backRef->editOK
) {
89 $LL = $this->includeLL();
91 $localItems[]='spacer';
92 $localItems['moreoptions']=$backRef->linkItem(
93 $GLOBALS['LANG']->makeEntities($LANG->getLLL('label',$LL)),
94 $backRef->excludeIcon(''),
95 "top.loadTopMenu('".t3lib_div
::linkThisScript()."&cmLevel=1&subname=moreoptions');return false;",
100 if (!in_array('hide',$backRef->disabledItems
) && is_array($TCA[$table]['ctrl']['enablecolumns']) && $TCA[$table]['ctrl']['enablecolumns']['disabled'])
101 $localItems['hide'] = $backRef->DB_hideUnhide($table,$backRef->rec
,$TCA[$table]['ctrl']['enablecolumns']['disabled']);
102 if (!in_array('edit_access',$backRef->disabledItems
) && is_array($TCA[$table]['ctrl']['enablecolumns']))
103 $localItems['edit_access'] = $backRef->DB_editAccess($table,$uid);
104 if (!in_array('edit_pageheader',$backRef->disabledItems
) && $table=='pages' && $backRef->editPageIconSet
)
105 $localItems['edit_pageheader'] = $backRef->DB_editPageHeader($uid);
108 // Find delete element among the input menu items and insert the local items just before that:
111 $deleteFound = FALSE;
112 while(list($k)=each($menuItems)) {
114 if (!strcmp($k,'delete')) {
121 // .. subtract two... (delete item + its spacer element...)
123 // and insert the items just before the delete element.
130 } else { // If no delete item was found, then just merge in the items:
131 $menuItems=array_merge($menuItems,$localItems);
134 } else { // LEVEL: Secondary level of menus (activated by an item on the first level).
135 if ($backRef->editOK
) { // If the page can be edited, then show this:
136 if (!in_array('move_wizard',$backRef->disabledItems
) && ($table=='pages' ||
$table=='tt_content')) $localItems['move_wizard']=$backRef->DB_moveWizard($table,$uid,$backRef->rec
);
137 if (!in_array('new_wizard',$backRef->disabledItems
) && ($table=='pages' ||
$table=='tt_content')) $localItems['new_wizard']=$backRef->DB_newWizard($table,$uid,$backRef->rec
);
138 if (!in_array('history',$backRef->disabledItems
)) $localItems['history']=$backRef->DB_history($table,$uid);
139 if (!in_array('perms',$backRef->disabledItems
) && $table=='pages' && $BE_USER->check('modules','web_perm')) $localItems['perms']=$backRef->DB_perms($table,$uid,$backRef->rec
);
140 if (!in_array('db_list',$backRef->disabledItems
) && $BE_USER->check('modules','web_list')) $localItems['db_list']=$backRef->DB_db_list($table,$uid,$backRef->rec
);
143 // Temporary mount point item:
144 if ($table=='pages') {
145 $localItems['perms'] = $backRef->DB_tempMountPoint($uid);
148 // Merge the locally made items into the current menu items passed to this function.
149 $menuItems = array_merge($menuItems,$localItems);
155 * Include local lang file.
157 * @return array Local lang array.
159 function includeLL() {
162 $LOCAL_LANG = $LANG->includeLLFile('EXT:extra_page_cm_options/locallang.php',FALSE);
167 if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE
]['XCLASS']['ext/extra_page_cm_options/class.tx_extrapagecmoptions.php']) {
168 include_once($TYPO3_CONF_VARS[TYPO3_MODE
]['XCLASS']['ext/extra_page_cm_options/class.tx_extrapagecmoptions.php']);