forked from extern/egroupware
drag and drop for calendar for all those who cannot wait for cooxdoo or dojoproject :o) - it is disabled by default - if you want to use it you have to go to common preferences and enable drag and drop (last entry before template-specific settings) - just for Mozilla based browsers ATM, all other browsers get auto-disabled - it lacks a lot features, e.g. recurring events and whole day events but this will come - HAVE FUN
This commit is contained in:
65
calendar/js/dragDropFunctions.js
Normal file
65
calendar/js/dragDropFunctions.js
Normal file
@ -0,0 +1,65 @@
|
||||
function dragEvent()
|
||||
{
|
||||
if(minOffset())
|
||||
{
|
||||
// make a snapshot of the old (original) innerHTML of the dragged event
|
||||
if(!dd.obj.oldInnerHTML)
|
||||
{
|
||||
dd.obj.oldInnerHTML = dd.obj.div.innerHTML;
|
||||
}
|
||||
|
||||
if(dropTarget = dd.obj.getEltBelow())
|
||||
{
|
||||
var datetime = dropTarget.my_datetime;
|
||||
}
|
||||
|
||||
// we just allow to drop within the users own calendar
|
||||
// and not crossing into another calendar ATM
|
||||
if(datetime && (dd.obj.my_calendarOwner == dropTarget.my_owner ))
|
||||
{
|
||||
dd.obj.div.innerHTML = '<div style="font-size: 1.1em; font-weight: bold; text-align: center;">' + datetime.substr(9,2) + ":" + datetime.substr(11,2) + '</div>';
|
||||
} else {
|
||||
|
||||
dd.obj.div.innerHTML = '<div style="background-color: red; height: 100%; width: 100%; text-align: center;">' + dd.obj.my_errorImage + '</div>';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function dropEvent()
|
||||
{
|
||||
// minimum requirements for ajax call
|
||||
if( minOffset() &&
|
||||
(dropTarget = dd.obj.getEltBelow()) &&
|
||||
(dropTarget.my_datetime) &&
|
||||
(dd.obj.my_calendarOwner == dropTarget.my_owner)
|
||||
)
|
||||
{
|
||||
dd.obj.div.innerHTML = '<div style="height: 100%; width: 100%; text-align: center;">' + dd.obj.my_loaderImage + '</div>';
|
||||
|
||||
xajax_doXMLHTTP(
|
||||
'calendar.ajaxcalendar.moveEvent',
|
||||
dd.obj.my_eventId,
|
||||
dd.obj.my_calendarOwner,
|
||||
dropTarget.my_datetime,
|
||||
dropTarget.my_owner
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
// abort - move to old position and restore old innerHTML
|
||||
if(dd.obj.oldInnerHTML)
|
||||
{
|
||||
dd.obj.div.innerHTML = dd.obj.oldInnerHTML;
|
||||
}
|
||||
dd.obj.moveTo(dd.obj.defx,dd.obj.defy);
|
||||
}
|
||||
}
|
||||
|
||||
function minOffset()
|
||||
{
|
||||
var offsetX = Math.abs(dd.obj.defx - dd.obj.x);
|
||||
var offsetY = Math.abs(dd.obj.defy - dd.obj.y);
|
||||
|
||||
if(offsetX > 5 || offsetY > 5) { return true; }
|
||||
return false;
|
||||
}
|
Reference in New Issue
Block a user