mirror of
https://github.com/EGroupware/egroupware.git
synced 2025-01-24 06:48:40 +01:00
Fix most of erratic copy behaviour using clipboard in Chrome
This commit is contained in:
parent
c3ce6bdbcc
commit
16598a21ca
@ -351,44 +351,6 @@ function egwPopupActionImplementation()
|
|||||||
var menu = ai._buildMenu(_links, _selected, _target);
|
var menu = ai._buildMenu(_links, _selected, _target);
|
||||||
menu.showAt(_context.posx, _context.posy);
|
menu.showAt(_context.posx, _context.posy);
|
||||||
|
|
||||||
// Bindings for copy to system clipboard
|
|
||||||
menu.instance.dhtmlxmenu.attachEvent("onShow", function(zoneId,ev) {
|
|
||||||
var client = new ZeroClipboard($j('#'+this.idPrefix+'egw_os_clipboard', this.base));
|
|
||||||
|
|
||||||
// We need to check if the browser settings for Flash player is set to click-to-play
|
|
||||||
// then prompting user in order to allow or block Flash player
|
|
||||||
jQuery('#global-zeroclipboard-html-bridge').hover(function (){
|
|
||||||
var $zeroClip = jQuery(this);
|
|
||||||
if ($zeroClip.hasClass('flash-deactivated'))
|
|
||||||
{
|
|
||||||
$zeroClip.addClass('flash-click-to-play-dialog');
|
|
||||||
egw.message("In order to copy to clipboard, you need to allow Flash player by clicking on gray box.\nYou can permanently allow Flash player for EGroupware in your browser settings.","info")
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$zeroClip.removeClass('flash-click-to-play-dialog')
|
|
||||||
}
|
|
||||||
});
|
|
||||||
client.on({
|
|
||||||
error:function (e){
|
|
||||||
// Detect if the Flash player is on click-to-play mode or is deactivated
|
|
||||||
if (e.name == "flash-deactivated")
|
|
||||||
{
|
|
||||||
// Indicate both flash-deactivated and click-to-play mode
|
|
||||||
jQuery('#global-zeroclipboard-html-bridge').addClass('flash-deactivated');
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
jQuery('#global-zeroclipboard-html-bridge').removeClass('flash-deactivated');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
client.on("copy",function(event) {
|
|
||||||
event.clipboardData.setData('text/plain', $j(_links.egw_os_clipboard.actionObj.data.target).text().trim());
|
|
||||||
event.clipboardData.setData('text/html', $j(_links.egw_os_clipboard.actionObj.data.target).html());
|
|
||||||
});
|
|
||||||
});
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -758,26 +720,40 @@ function egwPopupActionImplementation()
|
|||||||
var os_clipboard_caption = this._context.event.originalEvent.target.innerHTML.trim();
|
var os_clipboard_caption = this._context.event.originalEvent.target.innerHTML.trim();
|
||||||
clipboard_action.set_caption(egw.lang('Copy "%1"', os_clipboard_caption.length>20 ? os_clipboard_caption.substring(0,20)+'...':os_clipboard_caption));
|
clipboard_action.set_caption(egw.lang('Copy "%1"', os_clipboard_caption.length>20 ? os_clipboard_caption.substring(0,20)+'...':os_clipboard_caption));
|
||||||
clipboard_action.data.target = this._context.event.originalEvent.target;
|
clipboard_action.data.target = this._context.event.originalEvent.target;
|
||||||
$j(clipboard_action.data.target).on('copy', function(event) {
|
$j(clipboard_action.data.target).off('copy').on('copy', function(event) {
|
||||||
|
// Cancel any no-select css
|
||||||
|
var target = $j(clipboard_action.data.target);
|
||||||
|
var old_select = target.css('user-select');
|
||||||
|
target.css('user-select','all');
|
||||||
|
|
||||||
var range = document.createRange();
|
var range = document.createRange();
|
||||||
range.selectNode(clipboard_action.data.target);
|
range.selectNode(clipboard_action.data.target);
|
||||||
window.getSelection().removeAllRanges();
|
window.getSelection().removeAllRanges();
|
||||||
window.getSelection().addRange(range);
|
window.getSelection().addRange(range);
|
||||||
|
|
||||||
|
target.css('user-select',old_select);
|
||||||
|
|
||||||
|
var successful = false;
|
||||||
try {
|
try {
|
||||||
if(event.clipboardData)
|
if(event.clipboardData)
|
||||||
{
|
{
|
||||||
event.clipboardData.setData('text/plain', $j(_links.egw_os_clipboard.actionObj.data.target).text().trim());
|
event.clipboardData.setData('text/plain', $j(clipboard_action.data.target).text().trim());
|
||||||
event.clipboardData.setData('text/html', $j(_links.egw_os_clipboard.actionObj.data.target).html());
|
event.clipboardData.setData('text/html', $j(clipboard_action.data.target).html());
|
||||||
}
|
}
|
||||||
var successful = document.execCommand('copy');
|
// Show fail message, just in case
|
||||||
|
egw.message(egw.lang('Use Ctrl-C/Cmd-C to copy'));
|
||||||
|
|
||||||
|
successful = document.execCommand('copy');
|
||||||
|
} catch(err) {}
|
||||||
|
|
||||||
if(successful)
|
if(successful)
|
||||||
{
|
{
|
||||||
egw.message(egw.lang('Copied'));
|
// Clear fail message
|
||||||
|
egw.message('');
|
||||||
|
window.getSelection().removeAllRanges();
|
||||||
|
target.css('user-select',old_select);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} catch(err) {}
|
|
||||||
});
|
});
|
||||||
if(typeof _links[copy_action.id] == 'undefined')
|
if(typeof _links[copy_action.id] == 'undefined')
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user