Project

General

Profile

Feature #19543 » 0009703_v5.diff

Administrator Admin, 2009-03-30 10:51

View differences:

t3lib/js/adminpanel.js (Revision 0)
/***************************************************************
* Admin Panel drag and drop
*
* $Id$
*
* Copyright notice
*
* (c) 2009 Ingo Renner <ingo@typo3.org>
* 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.
*
* 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!
***************************************************************/
var TYPO3AdminPanel = {
positionRestored: false,
dragObject: null,
dragX: 0,
dragY: 0,
posX: 0,
posY: 0,
savePosition: function(panel) {
var admPanelPosX = panel.offsetLeft;
var admPanelPosY = panel.offsetTop;
TYPO3AdminPanel.setCookie('admPanelPosX', admPanelPosX, '', '/');
TYPO3AdminPanel.setCookie('admPanelPosY', admPanelPosY, '', '/');
},
restorePosition: function() {
if (TYPO3AdminPanel.positionRestored == false) {
var admPanelPosX = TYPO3AdminPanel.getCookie('admPanelPosX');
if (admPanelPosX > 0) {
document.getElementById('admPanel').style.left = admPanelPosX + 'px';
}
var admPanelPosY = TYPO3AdminPanel.getCookie('admPanelPosY');
if (admPanelPosY > 0) {
document.getElementById('admPanel').style.top = admPanelPosY + 'px';
}
TYPO3AdminPanel.positionRestored = true;
}
},
setCookie: function(name, value, expires, path, domain, secure) {
document.cookie = name + '=' + escape(value)
+ (expires ? '; expires=' + expires.toGMTString() : '')
+ (path ? '; path=' + path : '')
+ (domain ? '; domain=' + domain : '')
+ (secure ? '; secure' : '');
},
getCookie: function(name) {
var dc = document.cookie;
var prefix = name + '=';
var begin = dc.indexOf('; ' + prefix);
if (begin == -1) {
begin = dc.indexOf(prefix);
if (begin != 0) {
return null;
}
} else {
begin += 2;
}
var end = dc.indexOf(';', begin);
if (end == -1) {
end = dc.length;
}
return unescape(dc.substring(begin + prefix.length, end));
},
dragInit: function() {
document.onmousemove = TYPO3AdminPanel.drag;
document.onmouseup = TYPO3AdminPanel.dragStop;
},
dragStart: function(element) {
TYPO3AdminPanel.dragObject = element;
TYPO3AdminPanel.dragX = TYPO3AdminPanel.posX - TYPO3AdminPanel.dragObject.offsetLeft;
TYPO3AdminPanel.dragY = TYPO3AdminPanel.posY - TYPO3AdminPanel.dragObject.offsetTop;
},
dragStop: function() {
TYPO3AdminPanel.dragObject = null;
},
drag: function(dragEvent) {
TYPO3AdminPanel.posX = document.all ? window.event.clientX : dragEvent.pageX;
TYPO3AdminPanel.posY = document.all ? window.event.clientY : dragEvent.pageY;
if (TYPO3AdminPanel.dragObject != null) {
TYPO3AdminPanel.dragObject.style.left = (TYPO3AdminPanel.posX - TYPO3AdminPanel.dragX) + 'px';
TYPO3AdminPanel.dragObject.style.top = (TYPO3AdminPanel.posY - TYPO3AdminPanel.dragY) + 'px';
}
}
};
typo3/sysext/fe_edit/view/class.tx_feedit_adminpanel.php (Arbeitskopie)
* @return string HTML for the Admin Panel
*/
public function display() {
$out='';
$out = '<script type="text/javascript" src="t3lib/js/adminpanel.js"></script>';
if ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['display_top']) {
if ($GLOBALS['BE_USER']->frontendEdit->isAdminModuleEnabled('preview')) {
$out .= $this->getPreviewModule();
......
$row .= $this->extFw(': ' . $GLOBALS['BE_USER']->user['username']);
$header = '
<tr class="typo3-adminPanel-hRow" style="background-color:#9ba1a8;">
<tr class="typo3-adminPanel-hRow" style="background-color: #9ba1a8; cursor: move;">
<td colspan="4" style="text-align:left; white-space:nowrap;">' .
$this->extItemLink('top',$row) . '
<img src="clear.gif" width="40" height="1" alt="" />
......
</script>
<script language="javascript" type="text/javascript">' . $this->extJSCODE . '</script>';
}
return "\n\n\n\n" . $out . '<br />';
$out = '
<div onmousedown="TYPO3AdminPanel.dragStart(this)" onmouseup="TYPO3AdminPanel.savePosition(this)" id="admPanel" style="position:absolute; left:10px; top:100px; width:30px; z-index:5;">
' . $out . '
<br /></div>
<script type="text/javascript">
TYPO3AdminPanel.dragInit();
TYPO3AdminPanel.restorePosition();
</script>';
return $out;
}
/**
(8-8/8)