|
|
|
@ -93,14 +93,55 @@ ContextMenu.prototype = { |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
showMenu: function(e) { |
|
|
|
|
$('context-menu').style['left'] = (Event.pointerX(e) + 'px'); |
|
|
|
|
$('context-menu').style['top'] = (Event.pointerY(e) + 'px');
|
|
|
|
|
Element.update('context-menu', ''); |
|
|
|
|
new Ajax.Updater({success:'context-menu'}, this.url,
|
|
|
|
|
var mouse_x = Event.pointerX(e); |
|
|
|
|
var mouse_y = Event.pointerY(e); |
|
|
|
|
var render_x = mouse_x; |
|
|
|
|
var render_y = mouse_y; |
|
|
|
|
var dims; |
|
|
|
|
var menu_width; |
|
|
|
|
var menu_height; |
|
|
|
|
var window_width; |
|
|
|
|
var window_height; |
|
|
|
|
var max_width; |
|
|
|
|
var max_height; |
|
|
|
|
|
|
|
|
|
$('context-menu').style['left'] = (render_x + 'px'); |
|
|
|
|
$('context-menu').style['top'] = (render_y + 'px');
|
|
|
|
|
Element.update('context-menu', ''); |
|
|
|
|
|
|
|
|
|
new Ajax.Updater({success:'context-menu'}, this.url,
|
|
|
|
|
{asynchronous:true, |
|
|
|
|
evalScripts:true, |
|
|
|
|
parameters:Form.serialize(Event.findElement(e, 'form')), |
|
|
|
|
onComplete:function(request){ |
|
|
|
|
dims = $('context-menu').getDimensions(); |
|
|
|
|
menu_width = dims.width; |
|
|
|
|
menu_height = dims.height; |
|
|
|
|
max_width = mouse_x + 2*menu_width; |
|
|
|
|
max_height = mouse_y + menu_height; |
|
|
|
|
|
|
|
|
|
var ws = window_size(); |
|
|
|
|
window_width = ws.width; |
|
|
|
|
window_height = ws.height; |
|
|
|
|
|
|
|
|
|
/* display the menu above and/or to the left of the click if needed */ |
|
|
|
|
if (max_width > window_width) { |
|
|
|
|
render_x -= menu_width; |
|
|
|
|
$('context-menu').addClassName('reverse-x'); |
|
|
|
|
} else { |
|
|
|
|
$('context-menu').removeClassName('reverse-x'); |
|
|
|
|
} |
|
|
|
|
if (max_height > window_height) { |
|
|
|
|
render_y -= menu_height; |
|
|
|
|
$('context-menu').addClassName('reverse-y'); |
|
|
|
|
} else { |
|
|
|
|
$('context-menu').removeClassName('reverse-y'); |
|
|
|
|
} |
|
|
|
|
if (render_x <= 0) render_x = 1; |
|
|
|
|
if (render_y <= 0) render_y = 1; |
|
|
|
|
$('context-menu').style['left'] = (render_x + 'px'); |
|
|
|
|
$('context-menu').style['top'] = (render_y + 'px'); |
|
|
|
|
|
|
|
|
|
Effect.Appear('context-menu', {duration: 0.20}); |
|
|
|
|
if (window.parseStylesheets) { window.parseStylesheets(); } // IE
|
|
|
|
|
}}) |
|
|
|
@ -159,3 +200,19 @@ function toggleIssuesSelection(el) { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function window_size() { |
|
|
|
|
var w; |
|
|
|
|
var h; |
|
|
|
|
if (window.innerWidth) { |
|
|
|
|
w = window.innerWidth; |
|
|
|
|
h = window.innerHeight; |
|
|
|
|
} else if (document.documentElement) { |
|
|
|
|
w = document.documentElement.clientWidth; |
|
|
|
|
h = document.documentElement.clientHeight; |
|
|
|
|
} else { |
|
|
|
|
w = document.body.clientWidth; |
|
|
|
|
h = document.body.clientHeight; |
|
|
|
|
} |
|
|
|
|
return {width: w, height: h}; |
|
|
|
|
} |
|
|
|
|