forked from extern/egroupware
Fix some more sneaky caching / refresh bugs
This commit is contained in:
parent
adbc4d2b8b
commit
0861a6d58c
@ -368,7 +368,7 @@ class calendar_uilist extends calendar_ui
|
||||
}
|
||||
if ($params['col_filter']['participant'])
|
||||
{
|
||||
$search_params['users'] = is_array($params['col_filter']['participant']) ? $params['col_filter']['participant'] : (int) $params['col_filter']['participant'];
|
||||
$search_params['users'] = is_array($params['col_filter']['participant']) ? $params['col_filter']['participant'] : array((int) $params['col_filter']['participant']);
|
||||
}
|
||||
elseif (!$params['col_filter'] || !array_key_exists('participant',$params['col_filter']))
|
||||
{
|
||||
|
@ -2203,7 +2203,7 @@ app.classes.calendar = AppJS.extend(
|
||||
{
|
||||
// Cache is by date (and owner, if seperate)
|
||||
var date = t.getUTCFullYear() + sprintf('%02d',t.getUTCMonth()+1) + sprintf('%02d',t.getUTCDate());
|
||||
var cache_id = app.classes.calendar._daywise_cache_id(date, seperate_owners ? value[i].owner : state.owner||false);
|
||||
var cache_id = app.classes.calendar._daywise_cache_id(date, seperate_owners && value[i].owner ? value[i].owner : state.owner||false);
|
||||
|
||||
if(egw.dataHasUID(cache_id))
|
||||
{
|
||||
@ -2285,7 +2285,7 @@ app.classes.calendar = AppJS.extend(
|
||||
col_filter: {participant: (typeof state.owner == 'string' || typeof state.owner == 'number' ? [state.owner] : state.owner)},
|
||||
filter:'custom', // Must be custom to get start & end dates
|
||||
status_filter: state.filter,
|
||||
cat_id: state.cat_id,
|
||||
cat_id: state.cat_id.join('') != '' ? state.cat_id : false,
|
||||
search: state.keywords,
|
||||
csv_export: false
|
||||
});
|
||||
@ -2370,10 +2370,14 @@ app.classes.calendar = AppJS.extend(
|
||||
{
|
||||
var expanded_date = ''+t.getUTCFullYear() + sprintf('%02d',t.getUTCMonth()+1) + sprintf('%02d',t.getUTCDate());
|
||||
if(typeof(updated_days[expanded_date]) === 'undefined')
|
||||
{
|
||||
// Check to make sure it's in range first, expanded_date could be after our end
|
||||
if(expanded_date >= bounds.first && expanded_date <= bounds.last)
|
||||
{
|
||||
updated_days[expanded_date] = [];
|
||||
}
|
||||
if(record.data.date !== expanded_date)
|
||||
}
|
||||
if(record.data.date !== expanded_date && typeof updated_days[expanded_date] !== 'undefined')
|
||||
{
|
||||
// Copy, to avoid unwanted changes by reference
|
||||
updated_days[expanded_date].push(record.data.row_id);
|
||||
|
@ -268,24 +268,7 @@ var et2_calendar_daycol = et2_valueWidget.extend([et2_IDetachedDOM],
|
||||
|
||||
// Register for updates on events for this day
|
||||
var cache_id = app.classes.calendar._daywise_cache_id(new_date,this.options.owner);
|
||||
egw.dataRegisterUID(cache_id, function(event_ids) {
|
||||
var events = [];
|
||||
if(event_ids == null || typeof event_ids.length == 'undefined') event_ids = [];
|
||||
for(var i = 0; i < event_ids.length; i++)
|
||||
{
|
||||
var event = egw.dataGetUIDdata('calendar::'+event_ids[i]);
|
||||
event = event.data || false;
|
||||
if(event && event.date && (
|
||||
event.date === this.options.date ||
|
||||
// Accept multi-day events
|
||||
new Date(event.start) <= this.date //&& new Date(event.end) >= this.date
|
||||
))
|
||||
{
|
||||
events.push(event);
|
||||
}
|
||||
}
|
||||
this._update_events(events);
|
||||
},this,this.getInstanceManager().execId,this.id);
|
||||
egw.dataRegisterUID(cache_id, this._data_callback,this,this.getInstanceManager().execId,this.id);
|
||||
|
||||
if(events) {
|
||||
this._update_events(events);
|
||||
@ -314,19 +297,35 @@ var et2_calendar_daycol = et2_valueWidget.extend([et2_IDetachedDOM],
|
||||
this.div.attr('data-sortable-id', this.options.owner);
|
||||
|
||||
// Register for updates on events for this day
|
||||
egw.dataRegisterUID(app.classes.calendar._daywise_cache_id(this.options.date,this.options.owner), function(event_ids) {
|
||||
egw.dataRegisterUID(
|
||||
app.classes.calendar._daywise_cache_id(this.options.date,this.options.owner),
|
||||
this._data_callback,this,this.getInstanceManager().execId,this.id
|
||||
);
|
||||
},
|
||||
|
||||
/**
|
||||
* Callback used when the daywise data changes
|
||||
*
|
||||
* @param {String[]} event_ids
|
||||
* @returns {undefined}
|
||||
*/
|
||||
_data_callback: function(event_ids) {
|
||||
var events = [];
|
||||
if(event_ids == null || typeof event_ids.length == 'undefined') event_ids = [];
|
||||
for(var i = 0; i < event_ids.length; i++)
|
||||
{
|
||||
var event = egw.dataGetUIDdata('calendar::'+event_ids[i]).data;
|
||||
if(event && event.date && event.date === this.options.date)
|
||||
var event = egw.dataGetUIDdata('calendar::'+event_ids[i]);
|
||||
event = event.data || false;
|
||||
if(event && event.date && (
|
||||
event.date === this.options.date ||
|
||||
// Accept multi-day events
|
||||
new Date(event.start) <= this.date //&& new Date(event.end) >= this.date
|
||||
))
|
||||
{
|
||||
events.push(event);
|
||||
}
|
||||
}
|
||||
this._update_events(events);
|
||||
},this,this.getInstanceManager().execId,this.id);
|
||||
},
|
||||
|
||||
set_left: function(left) {
|
||||
|
@ -117,6 +117,7 @@ var et2_calendar_event = et2_valueWidget.extend([et2_IDetachedDOM],
|
||||
this.div.remove();
|
||||
this.div = null;
|
||||
|
||||
$j('body.egw_tooltip').remove();
|
||||
|
||||
// Unregister, or we'll continue to be notified...
|
||||
if(this.options.value)
|
||||
|
Loading…
Reference in New Issue
Block a user