mirror of
https://github.com/EGroupware/egroupware.git
synced 2025-02-16 18:31:26 +01:00
Calendar: Fix drag & drop event to invite / change calendar
This commit is contained in:
parent
10d3f40973
commit
b484a289ff
@ -1225,49 +1225,16 @@ export class et2_calendar_timegrid extends et2_calendar_view implements et2_IDet
|
|||||||
let _invite_enabled = function (action, event, target)
|
let _invite_enabled = function (action, event, target)
|
||||||
{
|
{
|
||||||
var event = event.iface.getWidget();
|
var event = event.iface.getWidget();
|
||||||
var timegrid = target.iface.getWidget() || false;
|
const timegrid = target.iface.getWidget() || false;
|
||||||
if(event === timegrid || !event || !timegrid ||
|
if(timegrid)
|
||||||
!event.options || !event.options.value.participants || !timegrid.options.owner
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
return false;
|
const enabled = timegrid._get_invite_action_enabled(event);
|
||||||
|
widget_object.getActionLink('invite').enabled = enabled;
|
||||||
|
widget_object.getActionLink('change_participant').enabled = enabled;
|
||||||
|
|
||||||
|
// If invite or change participant are enabled, drag is not
|
||||||
|
widget_object.getActionLink('egw_link_drop').enabled = !enabled;
|
||||||
}
|
}
|
||||||
var owner_match = false;
|
|
||||||
var own_timegrid = event.getParent().getParent() === timegrid && !timegrid.daily_owner;
|
|
||||||
|
|
||||||
for (var id in event.options.value.participants)
|
|
||||||
{
|
|
||||||
if(!timegrid.daily_owner)
|
|
||||||
{
|
|
||||||
if(timegrid.options.owner === id ||
|
|
||||||
timegrid.options.owner.indexOf &&
|
|
||||||
timegrid.options.owner.indexOf(id) >= 0)
|
|
||||||
{
|
|
||||||
owner_match = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
timegrid.iterateOver(function (col)
|
|
||||||
{
|
|
||||||
// Check scroll section or header section
|
|
||||||
if(col.div.has(timegrid.gridHover).length || col.header.has(timegrid.gridHover).length)
|
|
||||||
{
|
|
||||||
owner_match = owner_match || col.options.owner.indexOf(id) !== -1;
|
|
||||||
own_timegrid = (col === event.getParent());
|
|
||||||
}
|
|
||||||
}, this, et2_calendar_daycol);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var enabled = !owner_match &&
|
|
||||||
// Not inside its own timegrid
|
|
||||||
!own_timegrid;
|
|
||||||
|
|
||||||
widget_object.getActionLink('invite').enabled = enabled;
|
|
||||||
widget_object.getActionLink('change_participant').enabled = enabled;
|
|
||||||
|
|
||||||
// If invite or change participant are enabled, drag is not
|
|
||||||
widget_object.getActionLink('egw_link_drop').enabled = !enabled;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
aoi.doTriggerEvent = function(_event, _data)
|
aoi.doTriggerEvent = function(_event, _data)
|
||||||
@ -1283,6 +1250,9 @@ export class et2_calendar_timegrid extends et2_calendar_view implements et2_IDet
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Hide tooltip or it might throw events too
|
||||||
|
egw.tooltipDestroy();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
We have to handle the drop in the normal event stream instead of waiting
|
We have to handle the drop in the normal event stream instead of waiting
|
||||||
for the egwAction system so we can get the helper, and destination
|
for the egwAction system so we can get the helper, and destination
|
||||||
@ -1299,14 +1269,11 @@ export class et2_calendar_timegrid extends et2_calendar_view implements et2_IDet
|
|||||||
var drag_listener = function(_event)
|
var drag_listener = function(_event)
|
||||||
{
|
{
|
||||||
aoi.getWidget()._drag_helper(jQuery('.calendar_d-n-d_timeCounter', _data.ui.helper)[0], _data.ui.helper[0], 0);
|
aoi.getWidget()._drag_helper(jQuery('.calendar_d-n-d_timeCounter', _data.ui.helper)[0], _data.ui.helper[0], 0);
|
||||||
if(aoi.getWidget().daily_owner)
|
_invite_enabled(
|
||||||
{
|
widget_object.getActionLink('invite').actionObj,
|
||||||
_invite_enabled(
|
_data.ui.selected[0],
|
||||||
widget_object.getActionLink('invite').actionObj,
|
widget_object
|
||||||
event,
|
);
|
||||||
widget_object
|
|
||||||
);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
var time = jQuery('.calendar_d-n-d_timeCounter', _data.ui.helper);
|
var time = jQuery('.calendar_d-n-d_timeCounter', _data.ui.helper);
|
||||||
switch(_event)
|
switch(_event)
|
||||||
@ -1361,12 +1328,12 @@ export class et2_calendar_timegrid extends et2_calendar_view implements et2_IDet
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
// It never came in?
|
// Event starts in its own parent
|
||||||
if(!time.length)
|
if(!time.length)
|
||||||
{
|
{
|
||||||
jQuery(_data.ui.helper).prepend('<div class="calendar_d-n-d_timeCounter" data-count="1"><span></span></div>');
|
jQuery(_data.ui.helper).prepend('<div class="calendar_d-n-d_timeCounter" data-count="1"><span></span></div>');
|
||||||
}
|
}
|
||||||
drag_listener(event);
|
drag_listener(_data.ui.selected[0]);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1562,13 +1529,26 @@ export class et2_calendar_timegrid extends et2_calendar_view implements et2_IDet
|
|||||||
}, this, et2_calendar_daycol);
|
}, this, et2_calendar_daycol);
|
||||||
}
|
}
|
||||||
egw().json('calendar.calendar_uiforms.ajax_invite', [
|
egw().json('calendar.calendar_uiforms.ajax_invite', [
|
||||||
button_id==='series' ? event_data.id : event_data.app_id,
|
button_id === 'series' ? event_data.id : event_data.app_id,
|
||||||
add_owner,
|
add_owner,
|
||||||
action.id === 'change_participant' ?
|
action.id === 'change_participant' ?
|
||||||
jQuery.extend([],source[i].iface.getWidget().getParent().options.owner) :
|
jQuery.extend([], source[i].iface.getWidget().getParent().options.owner) :
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
function() { loading.remove();}
|
function(data)
|
||||||
|
{
|
||||||
|
if(data.type)
|
||||||
|
{
|
||||||
|
// Make sure to only run once
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Need to remove the action from the original timegrid
|
||||||
|
source[0].iface.getWidget()?.destroy();
|
||||||
|
if(loading)
|
||||||
|
{
|
||||||
|
loading.remove();
|
||||||
|
}
|
||||||
|
}
|
||||||
).sendRequest(true);
|
).sendRequest(true);
|
||||||
});
|
});
|
||||||
// Ok, stop.
|
// Ok, stop.
|
||||||
@ -1637,6 +1617,44 @@ export class et2_calendar_timegrid extends et2_calendar_view implements et2_IDet
|
|||||||
return action_links;
|
return action_links;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_get_invite_action_enabled(event : et2_calendar_event)
|
||||||
|
{
|
||||||
|
if(!event || !event.options || !event.options.value.participants || !this.options.owner)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
var owner_match = false;
|
||||||
|
var own_timegrid = event.getParent()?.getParent() === this && !this.daily_owner;
|
||||||
|
|
||||||
|
for(var id in event.options.value.participants)
|
||||||
|
{
|
||||||
|
if(!this.daily_owner)
|
||||||
|
{
|
||||||
|
if(this.options.owner === id ||
|
||||||
|
this.options.owner.indexOf &&
|
||||||
|
this.options.owner.indexOf(id) >= 0)
|
||||||
|
{
|
||||||
|
owner_match = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.iterateOver(function(col)
|
||||||
|
{
|
||||||
|
// Check scroll section or header section
|
||||||
|
if(col.div.has(this.gridHover).length || col.header.has(this.gridHover).length)
|
||||||
|
{
|
||||||
|
owner_match = owner_match || col.options.owner.indexOf(id) !== -1;
|
||||||
|
own_timegrid = (col === event.getParent());
|
||||||
|
}
|
||||||
|
}, this, et2_calendar_daycol);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return !owner_match &&
|
||||||
|
// Not inside its own timegrid
|
||||||
|
!own_timegrid;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provide specific data to be displayed.
|
* Provide specific data to be displayed.
|
||||||
* This is a way to set start and end dates, owner and event data in one call.
|
* This is a way to set start and end dates, owner and event data in one call.
|
||||||
|
Loading…
Reference in New Issue
Block a user