Feature #19472 » sysaction_menu_v2.diff
typo3/sysext/sys_action/ext_tables.php (working copy) | ||
---|---|---|
'label' => 'title',
|
||
'tstamp' => 'tstamp',
|
||
'default_sortby' => 'ORDER BY title',
|
||
"sortby" => "sorting",
|
||
"sortby" => "sorting",
|
||
'prependAtCopy' => 'LLL:EXT:lang/locallang_general.php:LGL.prependAtCopy',
|
||
'title' => 'LLL:EXT:sys_action/locallang_tca.php:sys_action',
|
||
'crdate' => 'crdate',
|
||
... | ... | |
'dynamicConfigFile' => t3lib_extMgm::extPath($_EXTKEY).'tca.php'
|
||
)
|
||
);
|
||
$GLOBALS['TYPO3_CONF_VARS']['typo3/backend.php']['additionalBackendItems'][] = t3lib_extMgm::extPath('sys_action') . 'toolbarmenu/registerToolbarItem.php';
|
||
}
|
||
t3lib_extMgm::addLLrefForTCAdescr('sys_action','EXT:sys_action/locallang_csh_sysaction.xml');
|
typo3/sysext/sys_action/toolbarmenu/class.tx_sysaction_toolbarmenu.php (revision 0) | ||
---|---|---|
<?php
|
||
/***************************************************************
|
||
* Copyright notice
|
||
*
|
||
* (c) 2008 Steffen Kamper <info@sk-typo3.de>
|
||
* All rights reserved
|
||
*
|
||
* This script is part of the TYPO3 project. The TYPO3 project is
|
||
* free software; you can redistribute it and/or modify
|
||
* it under the terms of the GNU General Public License as published by
|
||
* the Free Software Foundation; either version 2 of the License, or
|
||
* (at your option) any later version.
|
||
*
|
||
* The GNU General Public License can be found at
|
||
* http://www.gnu.org/copyleft/gpl.html.
|
||
* A copy is found in the textfile GPL.txt and important notices to the license
|
||
* from the author is found in LICENSE.txt distributed with these scripts.
|
||
*
|
||
*
|
||
* This script is distributed in the hope that it will be useful,
|
||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
* GNU General Public License for more details.
|
||
*
|
||
* This copyright notice MUST APPEAR in all copies of the script!
|
||
***************************************************************/
|
||
require_once(PATH_typo3 . 'interfaces/interface.backend_toolbaritem.php');
|
||
/**
|
||
* Adds action links to the backend's toolbar
|
||
*
|
||
* @author Steffen Kamper <info@sk-typo3.de>
|
||
* @package TYPO3
|
||
* @subpackage tx_sysaction
|
||
*/
|
||
class tx_sysactionToolbarMenu implements backend_toolbarItem {
|
||
/**
|
||
* reference back to the backend object
|
||
*
|
||
* @var TYPO3backend
|
||
*/
|
||
private $backendReference;
|
||
protected $EXTKEY = 'sys_action';
|
||
/**
|
||
* constructor
|
||
*
|
||
* @return void
|
||
*/
|
||
public function __construct(TYPO3backend &$backendReference = null) {
|
||
$this->backendReference = $backendReference;
|
||
}
|
||
/**
|
||
* sets the backend reference
|
||
*
|
||
* @param TYPO3backend backend object reference
|
||
*/
|
||
public function setBackend(&$backendReference) {
|
||
$this->backendReference = $backendReference;
|
||
}
|
||
/**
|
||
* renders the toolbar menu
|
||
*
|
||
* @return string the rendered backend menu
|
||
* @author Ingo Renner <ingo@typo3.org>
|
||
*/
|
||
public function render() {
|
||
$actionMenu = array();
|
||
$actionEntries = $this->getActionEntries();
|
||
if (!empty($actionEntries)) {
|
||
$this->addJavascriptToBackend();
|
||
$this->addCssToBackend();
|
||
$actionMenu[] = '<a href="#" class="toolbar-item"><img'
|
||
. t3lib_iconWorks::skinImg(
|
||
$this->backPath,
|
||
t3lib_extMgm::extRelPath($this->EXTKEY) . 'ext_icon.gif',
|
||
'width="16" height="16"'
|
||
) . ' title="System Actions" alt="" /></a>';
|
||
$actionMenu[] = '<ul class="toolbar-item-menu" style="display: none;">';
|
||
foreach($actionEntries as $linkConf) {
|
||
$actionMenu[] = '<li><a href="' . $linkConf[1]
|
||
. '" target="content">' . $linkConf[2]
|
||
. htmlspecialchars($linkConf[0]) . '</a></li>';
|
||
}
|
||
$actionMenu[] = '</ul>';
|
||
}
|
||
return implode("\n", $actionMenu);
|
||
}
|
||
/**
|
||
* gets the entries for the action menu
|
||
*
|
||
* @return array array of action menu entries
|
||
* @author Steffen Kamper <info@sk-typo3.de>
|
||
* @author Ingo Renner <ingo@typo3.org>
|
||
*/
|
||
protected function getActionEntries() {
|
||
$actions = array();
|
||
if ($GLOBALS['BE_USER']->isAdmin()) {
|
||
$queryResource = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
|
||
'*',
|
||
'sys_action',
|
||
'sys_action.pid = 0',
|
||
'',
|
||
'sys_action.sorting'
|
||
);
|
||
} else {
|
||
$groupList = 0;
|
||
if ($GLOBALS['BE_USER']->groupList) {
|
||
$groupList = $GLOBALS['BE_USER']->groupList;
|
||
}
|
||
$queryResource = $GLOBALS['TYPO3_DB']->exec_SELECT_mm_query(
|
||
'sys_action.*',
|
||
'sys_action',
|
||
'sys_action_asgr_mm',
|
||
'be_groups',
|
||
' AND be_groups.uid IN (' . $groupList
|
||
. ') AND sys_action.pid = 0 AND sys_action.hidden = 0',
|
||
'sys_action.uid',
|
||
'sys_action.sorting'
|
||
);
|
||
}
|
||
if ($queryResource) {
|
||
while ($actionRow = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($queryResource)) {
|
||
$actions[] = array(
|
||
$actionRow['title'],
|
||
'sysext/taskcenter/task/index.php?SET[function]=tx_sysaction&sys_action_uid=' . $actionRow['uid'],
|
||
t3lib_iconworks::getIconImage(
|
||
'sys_action',
|
||
$actionRow,
|
||
$GLOBALS['BACK_PATH'],
|
||
'hspace="2" class="absmiddle"'
|
||
),
|
||
);
|
||
}
|
||
}
|
||
return $actions;
|
||
}
|
||
/**
|
||
* returns additional attributes for the list item in the toolbar
|
||
*
|
||
* @return string list item HTML attibutes
|
||
*/
|
||
public function getAdditionalAttributes() {
|
||
return ' id="sys-action-menu"';
|
||
}
|
||
/**
|
||
* adds the neccessary javascript ot the backend
|
||
*
|
||
* @return void
|
||
*/
|
||
protected function addJavascriptToBackend() {
|
||
$this->backendReference->addJavascriptFile(
|
||
t3lib_extMgm::extRelPath($this->EXTKEY) . 'toolbarmenu/tx_sysactions.js'
|
||
);
|
||
}
|
||
/**
|
||
* adds the neccessary css ot the backend
|
||
*
|
||
* @return void
|
||
*/
|
||
protected function addCssToBackend() {
|
||
$this->backendReference->addCssFile(
|
||
'sysaction',
|
||
t3lib_extMgm::extRelPath($this->EXTKEY)
|
||
. 'toolbarmenu/tx_sysactions.css'
|
||
);
|
||
}
|
||
/**
|
||
* Checks if user has access to the sys action menu
|
||
*
|
||
* @return boolean true if has access
|
||
*/
|
||
public function checkAccess() {
|
||
// taskcenter is enabled for everybody
|
||
return true;
|
||
}
|
||
}
|
||
if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/sys_action/toolbarmenu/class.tx_sysaction_toolbarmenu.php']) {
|
||
include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/sys_action/toolbarmenu/class.tx_sysaction_toolbarmenu.php']);
|
||
}
|
||
?>\ No newline at end of file
|
typo3/sysext/sys_action/toolbarmenu/registerToolbarItem.php (revision 0) | ||
---|---|---|
<?php
|
||
if (!defined('TYPO3_MODE')) {
|
||
die ('Access denied.');
|
||
}
|
||
if (TYPO3_MODE == 'BE') {
|
||
// first include the class file
|
||
include_once(t3lib_extMgm::extPath('sys_action')
|
||
. 'toolbarmenu/class.tx_sysaction_toolbarmenu.php');
|
||
// now register the class as toolbar item
|
||
$GLOBALS['TYPO3backend']->addToolbarItem(
|
||
'sys_action',
|
||
'tx_sysactionToolbarMenu'
|
||
);
|
||
}
|
||
?>\ No newline at end of file
|
typo3/sysext/sys_action/toolbarmenu/tx_sysactions.css (revision 0) | ||
---|---|---|
#sys-action-menu {
|
||
width: 30px;
|
||
}
|
||
#sys-action-menu ul {
|
||
position: absolute;
|
||
list-style: none;
|
||
padding: 2px 0px 0px;
|
||
margin: 0px;
|
||
background-color: #f9f9f9;
|
||
border: 1px solid #abb2bc;
|
||
border-top: none;
|
||
width: 120px;
|
||
}
|
||
#sys-action-menu li {
|
||
padding-top: 2px;
|
||
text-align: left;
|
||
float: none;
|
||
vertical-align: middle;
|
||
height: 19px;
|
||
}
|
||
#sys-action-menu li img {
|
||
float: left;
|
||
padding-right: 3px;
|
||
}
|
||
#sys-action-menu li a {
|
||
text-decoration: none;
|
||
line-height: 12px;
|
||
vertical-align: middle;
|
||
display: block;
|
||
padding-bottom: 2px;
|
||
padding-left: 3px;
|
||
font-size: 11px;
|
||
}\ No newline at end of file
|
typo3/sysext/sys_action/toolbarmenu/tx_sysactions.js (revision 0) | ||
---|---|---|
/***************************************************************
|
||
* Copyright notice
|
||
*
|
||
* (c) 2008 Steffen Kamper <info@sk-typo3.de>
|
||
* All rights reserved
|
||
*
|
||
* This script is part of the TYPO3 project. The TYPO3 project is
|
||
* free software; you can redistribute it and/or modify
|
||
* it under the terms of the GNU General Public License as published by
|
||
* the Free Software Foundation; either version 2 of the License, or
|
||
* (at your option) any later version.
|
||
*
|
||
* The GNU General Public License can be found at
|
||
* http://www.gnu.org/copyleft/gpl.html.
|
||
* A copy is found in the textfile GPL.txt and important notices to the license
|
||
* from the author is found in LICENSE.txt distributed with these scripts.
|
||
*
|
||
*
|
||
* This script is distributed in the hope that it will be useful,
|
||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
* GNU General Public License for more details.
|
||
*
|
||
* This copyright notice MUST APPEAR in all copies of the script!
|
||
***************************************************************/
|
||
/**
|
||
* class to handle the dev links menu
|
||
*
|
||
* $Id$
|
||
*/
|
||
var sysactionMenu = Class.create({
|
||
/**
|
||
* registers for resize event listener and executes on DOM ready
|
||
*/
|
||
initialize: function() {
|
||
Event.observe(window, 'resize', this.positionMenu);
|
||
Event.observe(window, 'load', function(){
|
||
this.positionMenu();
|
||
this.toolbarItemIcon = $$('#sys-action-menu .toolbar-item img')[0].src;
|
||
Event.observe('sys-action-menu', 'click', this.toggleMenu);
|
||
}.bindAsEventListener(this));
|
||
},
|
||
/**
|
||
* positions the menu below the toolbar icon, let's do some math!
|
||
*/
|
||
positionMenu: function() {
|
||
var calculatedOffset = 0;
|
||
var parentWidth = $('sys-action-menu').getWidth();
|
||
var ownWidth = $$('#sys-action-menu ul')[0].getWidth();
|
||
var parentSiblings = $('sys-action-menu').previousSiblings();
|
||
parentSiblings.each(function(toolbarItem) {
|
||
calculatedOffset += toolbarItem.getWidth() - 1;
|
||
// -1 to compensate for the margin-right -1px of the list items,
|
||
// which itself is necessary for overlaying the separator with the active state background
|
||
if(toolbarItem.down().hasClassName('no-separator')) {
|
||
calculatedOffset -= 1;
|
||
}
|
||
});
|
||
calculatedOffset = calculatedOffset - ownWidth + parentWidth;
|
||
$$('#sys-action-menu ul')[0].setStyle({
|
||
left: calculatedOffset + 'px'
|
||
});
|
||
},
|
||
/**
|
||
* toggles the visibility of the menu and places it under the toolbar icon
|
||
*/
|
||
toggleMenu: function(event) {
|
||
var toolbarItem = $$('#sys-action-menu > a')[0];
|
||
var menu = $$('#sys-action-menu .toolbar-item-menu')[0];
|
||
toolbarItem.blur();
|
||
if(!toolbarItem.hasClassName('toolbar-item-active')) {
|
||
toolbarItem.addClassName('toolbar-item-active');
|
||
Effect.Appear(menu, {duration: 0.2});
|
||
TYPO3BackendToolbarManager.hideOthers(toolbarItem);
|
||
} else {
|
||
toolbarItem.removeClassName('toolbar-item-active');
|
||
Effect.Fade(menu, {duration: 0.1});
|
||
}
|
||
if(event && (Event.element(event).hasClassName('toolbar-item') || Event.element(event).up().hasClassName('toolbar-item'))) {
|
||
Event.stop(event);
|
||
}
|
||
}
|
||
});
|
||
var TYPO3BackendSysactionMenu = new sysactionMenu();
|
||
- « Previous
- 1
- 2
- 3
- Next »