mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-11-28 10:53:39 +01:00
* Calendar: Fix changing the recurrence end date did not add/remove the events in the UI
This commit is contained in:
parent
888fd1d61c
commit
62e35cd1c7
@ -642,16 +642,20 @@ class calendar_ui
|
|||||||
*
|
*
|
||||||
* @param int $event_id
|
* @param int $event_id
|
||||||
* @param Api\DateTime $recurrence_date
|
* @param Api\DateTime $recurrence_date
|
||||||
|
* @param array $old_event
|
||||||
*
|
*
|
||||||
* @return boolean True if the event was updated, false if it could not be
|
* @return boolean True if the event was updated, false if it could not be
|
||||||
* updated or was removed.
|
* updated or was removed.
|
||||||
*/
|
*/
|
||||||
public function update_client($event_id, Api\DateTime $recurrence_date = null)
|
public function update_client($event_id, Api\DateTime $recurrence_date = null, array $old_event = array())
|
||||||
{
|
{
|
||||||
if(!$event_id) return false;
|
if(!$event_id)
|
||||||
if(is_string($event_id) && strpos($event_id,':') !== FALSE)
|
|
||||||
{
|
{
|
||||||
list($event_id, $date) = explode(':',$event_id);
|
return false;
|
||||||
|
}
|
||||||
|
if(is_string($event_id) && strpos($event_id, ':') !== FALSE)
|
||||||
|
{
|
||||||
|
list($event_id, $date) = explode(':', $event_id);
|
||||||
$recurrence_date = new Api\DateTime($date);
|
$recurrence_date = new Api\DateTime($date);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -698,6 +702,21 @@ class calendar_ui
|
|||||||
else if($event['recur_type'] )
|
else if($event['recur_type'] )
|
||||||
{
|
{
|
||||||
$this_month = new Api\DateTime('next month');
|
$this_month = new Api\DateTime('next month');
|
||||||
|
$data = [];
|
||||||
|
if($old_event && ($old_event['start'] != $event['start'] || $old_event['recur_enddate'] != $event['recur_enddate']))
|
||||||
|
{
|
||||||
|
// Set up to clear old events in case recurrence start/end date changed
|
||||||
|
$old_rrule = calendar_rrule::event2rrule($old_event, true);
|
||||||
|
|
||||||
|
$old_rrule->rewind();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
$occurrence = $old_rrule->current();
|
||||||
|
$data['calendar::' . $old_event['id'] . ':' . $occurrence->format('ts')] = null;
|
||||||
|
$old_rrule->next();
|
||||||
|
}
|
||||||
|
while($old_rrule->valid() && $occurrence <= $this_month);
|
||||||
|
}
|
||||||
$rrule = calendar_rrule::event2rrule($event, true);
|
$rrule = calendar_rrule::event2rrule($event, true);
|
||||||
$rrule->rewind();
|
$rrule->rewind();
|
||||||
do
|
do
|
||||||
@ -705,10 +724,17 @@ class calendar_ui
|
|||||||
$occurrence = $rrule->current();
|
$occurrence = $rrule->current();
|
||||||
$converted = $this->bo->read($event['id'], $occurrence);
|
$converted = $this->bo->read($event['id'], $occurrence);
|
||||||
$this->to_client($converted);
|
$this->to_client($converted);
|
||||||
$response->generic('data', array('uid' => 'calendar::'.$converted['row_id'], 'data' => $converted));
|
$data['calendar::' . $converted['row_id']] = $converted;
|
||||||
$rrule->next();
|
$rrule->next();
|
||||||
}
|
}
|
||||||
while ($rrule->valid() && $occurrence <= $this_month );
|
while($rrule->valid() && $occurrence <= $this_month);
|
||||||
|
|
||||||
|
// Now we have to go through and send each one individually, since client side data can't handle more than one
|
||||||
|
foreach($data as $uid => $cal_data)
|
||||||
|
{
|
||||||
|
$response->apply('egw.dataStoreUID', [$uid, $cal_data]);
|
||||||
|
}
|
||||||
|
$response->apply('app.calendar.update_events', [array_keys($data)]);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1007,7 +1007,7 @@ class calendar_uiforms extends calendar_ui
|
|||||||
$response = Api\Json\Response::get();
|
$response = Api\Json\Response::get();
|
||||||
if($response && $update_type != 'delete' && !$client_updated)
|
if($response && $update_type != 'delete' && !$client_updated)
|
||||||
{
|
{
|
||||||
$client_updated = $this->update_client($event['id']);
|
$client_updated = $this->update_client($event['id'], null, $old_event);
|
||||||
}
|
}
|
||||||
|
|
||||||
$msg = $message . ($msg ? ', ' . $msg : '');
|
$msg = $message . ($msg ? ', ' . $msg : '');
|
||||||
|
@ -2,13 +2,12 @@
|
|||||||
/**
|
/**
|
||||||
* EGroupware - Calendar - Javascript UI
|
* EGroupware - Calendar - Javascript UI
|
||||||
*
|
*
|
||||||
* @link http://www.egroupware.org
|
* @link https://www.egroupware.org
|
||||||
* @package calendar
|
* @package calendar
|
||||||
* @author Hadi Nategh <hn-AT-stylite.de>
|
* @author Hadi Nategh <hn-AT-egroupware.org>
|
||||||
* @author Nathan Gray
|
* @author Nathan Gray
|
||||||
* @copyright (c) 2008-16 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
* @copyright (c) 2008-21 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
* @version $Id$
|
|
||||||
*/
|
*/
|
||||||
var __extends = (this && this.__extends) || (function () {
|
var __extends = (this && this.__extends) || (function () {
|
||||||
var extendStatics = function (d, b) {
|
var extendStatics = function (d, b) {
|
||||||
@ -24,6 +23,7 @@ var __extends = (this && this.__extends) || (function () {
|
|||||||
};
|
};
|
||||||
})();
|
})();
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
exports.CalendarApp = void 0;
|
||||||
/*egw:uses
|
/*egw:uses
|
||||||
/api/js/jsapi/egw_app.js;
|
/api/js/jsapi/egw_app.js;
|
||||||
/etemplate/js/etemplate2.js;
|
/etemplate/js/etemplate2.js;
|
||||||
@ -649,7 +649,9 @@ var CalendarApp = /** @class */ (function (_super) {
|
|||||||
// Filter what's allowed down to those we care about
|
// Filter what's allowed down to those we care about
|
||||||
var filtered = Object.keys(this._grants).filter(function (account) { return _this.state.owner.indexOf(account) >= 0; });
|
var filtered = Object.keys(this._grants).filter(function (account) { return _this.state.owner.indexOf(account) >= 0; });
|
||||||
// Check if we're interested in displaying by owner / participant
|
// Check if we're interested in displaying by owner / participant
|
||||||
var owner_check = et2_widget_event_1.et2_calendar_event.owner_check(cal_event, jQuery.extend({}, { options: { owner: filtered } }, this.et2));
|
var owner_check = et2_widget_event_1.et2_calendar_event.owner_check(cal_event,
|
||||||
|
// Fake the required widget since we don't actually have it right now
|
||||||
|
jQuery.extend({}, { options: { owner: filtered } }, this.et2));
|
||||||
if (!owner_check) {
|
if (!owner_check) {
|
||||||
// The owner is not in the list of what we're allowed / care about
|
// The owner is not in the list of what we're allowed / care about
|
||||||
return;
|
return;
|
||||||
@ -668,14 +670,21 @@ var CalendarApp = /** @class */ (function (_super) {
|
|||||||
}
|
}
|
||||||
;
|
;
|
||||||
// Ask for the real data, we don't have it
|
// Ask for the real data, we don't have it
|
||||||
egw.json("calendar.calendar_ui.ajax_get", [[pushData.id]], function (data) {
|
var process_data = function (data) {
|
||||||
if (data && data.data && data.data.data)
|
|
||||||
return;
|
|
||||||
// Store it, which will call all registered listeners
|
// Store it, which will call all registered listeners
|
||||||
egw.dataStoreUID(data.uid, data.data);
|
egw.dataStoreUID(data.uid, data.data);
|
||||||
// Any existing events were updated. Run this to catch new events or events moved into view
|
// Any existing events were updated. Run this to catch new events or events moved into view
|
||||||
this._update_events(this.state, [data.uid]);
|
_this._update_events(_this.state, [data.uid]);
|
||||||
}.bind(this)).sendRequest(true);
|
};
|
||||||
|
egw.request("calendar.calendar_ui.ajax_get", [[pushData.id]]).then(function (data) {
|
||||||
|
if (typeof data.uid !== "undefined") {
|
||||||
|
return process_data(data);
|
||||||
|
}
|
||||||
|
for (var _i = 0, data_1 = data; _i < data_1.length; _i++) {
|
||||||
|
var e = data_1[_i];
|
||||||
|
process_data(e);
|
||||||
|
}
|
||||||
|
});
|
||||||
};
|
};
|
||||||
/**
|
/**
|
||||||
* Link hander for jDots template to just reload our iframe, instead of reloading whole admin app
|
* Link hander for jDots template to just reload our iframe, instead of reloading whole admin app
|
||||||
@ -1319,9 +1328,9 @@ var CalendarApp = /** @class */ (function (_super) {
|
|||||||
*/
|
*/
|
||||||
CalendarApp.prototype.freetime_search = function () {
|
CalendarApp.prototype.freetime_search = function () {
|
||||||
var content = this.et2.getArrayMgr('content').data;
|
var content = this.et2.getArrayMgr('content').data;
|
||||||
content['start'] = this.et2.getWidgetById('start').get_value();
|
content['start'] = this.et2.getValueById('start');
|
||||||
content['end'] = this.et2.getWidgetById('end').get_value();
|
content['end'] = this.et2.getValueById('end');
|
||||||
content['duration'] = this.et2.getWidgetById('duration').get_value();
|
content['duration'] = this.et2.getValueById('duration');
|
||||||
var request = this.egw.json('calendar.calendar_uiforms.ajax_freetimesearch', [content], null, null, null, null);
|
var request = this.egw.json('calendar.calendar_uiforms.ajax_freetimesearch', [content], null, null, null, null);
|
||||||
request.sendRequest();
|
request.sendRequest();
|
||||||
};
|
};
|
||||||
@ -1378,8 +1387,10 @@ var CalendarApp = /** @class */ (function (_super) {
|
|||||||
if (typeof duration != 'undefined' && typeof end != 'undefined') {
|
if (typeof duration != 'undefined' && typeof end != 'undefined') {
|
||||||
end.set_disabled(duration.get_value() !== '');
|
end.set_disabled(duration.get_value() !== '');
|
||||||
// Only set end date if not provided, adding seconds fails with DST
|
// Only set end date if not provided, adding seconds fails with DST
|
||||||
|
// @ts-ignore
|
||||||
if (!end.disabled && !content.end) {
|
if (!end.disabled && !content.end) {
|
||||||
end.set_value(start.get_value());
|
end.set_value(start.get_value());
|
||||||
|
// @ts-ignore
|
||||||
if (typeof content.duration != 'undefined')
|
if (typeof content.duration != 'undefined')
|
||||||
end.set_value("+" + content.duration);
|
end.set_value("+" + content.duration);
|
||||||
}
|
}
|
||||||
@ -2107,10 +2118,10 @@ var CalendarApp = /** @class */ (function (_super) {
|
|||||||
*/
|
*/
|
||||||
CalendarApp.prototype.move_edit_series = function (_DOM, _button) {
|
CalendarApp.prototype.move_edit_series = function (_DOM, _button) {
|
||||||
var content = this.et2.getArrayMgr('content').data;
|
var content = this.et2.getArrayMgr('content').data;
|
||||||
var start_date = this.et2.getWidgetById('start').get_value();
|
var start_date = this.et2.getValueById('start');
|
||||||
var end_date = this.et2.getWidgetById('end').get_value();
|
var end_date = this.et2.getValueById('end');
|
||||||
var whole_day = this.et2.getWidgetById('whole_day');
|
var whole_day = this.et2.getWidgetById('whole_day');
|
||||||
var duration = '' + this.et2.getWidgetById('duration').get_value();
|
var duration = '' + this.et2.getValueById('duration');
|
||||||
var is_whole_day = whole_day && whole_day.get_value() == whole_day.options.selected_value;
|
var is_whole_day = whole_day && whole_day.get_value() == whole_day.options.selected_value;
|
||||||
var button = _button;
|
var button = _button;
|
||||||
var that = this;
|
var that = this;
|
||||||
@ -3151,6 +3162,13 @@ var CalendarApp = /** @class */ (function (_super) {
|
|||||||
}
|
}
|
||||||
}, this, null);
|
}, this, null);
|
||||||
};
|
};
|
||||||
|
/**
|
||||||
|
* We have a list of calendar UIDs of events that need updating.
|
||||||
|
* Public wrapper for _update_events so we can call it from server
|
||||||
|
*/
|
||||||
|
CalendarApp.prototype.update_events = function (uids) {
|
||||||
|
return this._update_events(this.state, uids);
|
||||||
|
};
|
||||||
/**
|
/**
|
||||||
* We have a list of calendar UIDs of events that need updating.
|
* We have a list of calendar UIDs of events that need updating.
|
||||||
*
|
*
|
||||||
@ -3645,7 +3663,7 @@ var CalendarApp = /** @class */ (function (_super) {
|
|||||||
}
|
}
|
||||||
this.et2.getWidgetById('new_alarm[options]').set_value('300');
|
this.et2.getWidgetById('new_alarm[options]').set_value('300');
|
||||||
this.et2.getWidgetById('new_alarm[owner]').set_value('0'); // all participants
|
this.et2.getWidgetById('new_alarm[owner]').set_value('0'); // all participants
|
||||||
this.et2.getWidgetById('button[add_alarm]').click();
|
this.et2.getWidgetById('button[add_alarm]').click(event);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
CalendarApp.prototype.isVideoConference = function (_action, _selected) {
|
CalendarApp.prototype.isVideoConference = function (_action, _selected) {
|
||||||
@ -3719,5 +3737,6 @@ var CalendarApp = /** @class */ (function (_super) {
|
|||||||
CalendarApp.DAYWISE_CACHE_ID = 'calendar_daywise';
|
CalendarApp.DAYWISE_CACHE_ID = 'calendar_daywise';
|
||||||
return CalendarApp;
|
return CalendarApp;
|
||||||
}(egw_app_1.EgwApp));
|
}(egw_app_1.EgwApp));
|
||||||
|
exports.CalendarApp = CalendarApp;
|
||||||
app.classes.calendar = CalendarApp;
|
app.classes.calendar = CalendarApp;
|
||||||
//# sourceMappingURL=app.js.map
|
//# sourceMappingURL=app.js.map
|
@ -1,13 +1,12 @@
|
|||||||
/**
|
/**
|
||||||
* EGroupware - Calendar - Javascript UI
|
* EGroupware - Calendar - Javascript UI
|
||||||
*
|
*
|
||||||
* @link http://www.egroupware.org
|
* @link https://www.egroupware.org
|
||||||
* @package calendar
|
* @package calendar
|
||||||
* @author Hadi Nategh <hn-AT-stylite.de>
|
* @author Hadi Nategh <hn-AT-egroupware.org>
|
||||||
* @author Nathan Gray
|
* @author Nathan Gray
|
||||||
* @copyright (c) 2008-16 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
* @copyright (c) 2008-21 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
* @version $Id$
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*egw:uses
|
/*egw:uses
|
||||||
@ -24,6 +23,7 @@ import {EgwApp, PushData} from "../../api/js/jsapi/egw_app";
|
|||||||
import {etemplate2} from "../../api/js/etemplate/etemplate2";
|
import {etemplate2} from "../../api/js/etemplate/etemplate2";
|
||||||
import {et2_container} from "../../api/js/etemplate/et2_core_baseWidget";
|
import {et2_container} from "../../api/js/etemplate/et2_core_baseWidget";
|
||||||
import {et2_date} from "../../api/js/etemplate/et2_widget_date";
|
import {et2_date} from "../../api/js/etemplate/et2_widget_date";
|
||||||
|
import {et2_calendar_owner} from "./et2_widget_owner";
|
||||||
import {day, day4, listview, month, planner, week, weekN} from "./View";
|
import {day, day4, listview, month, planner, week, weekN} from "./View";
|
||||||
import {et2_calendar_view} from "./et2_widget_view";
|
import {et2_calendar_view} from "./et2_widget_view";
|
||||||
import {et2_calendar_timegrid} from "./et2_widget_timegrid";
|
import {et2_calendar_timegrid} from "./et2_widget_timegrid";
|
||||||
@ -60,7 +60,7 @@ import {et2_inputWidget} from "../../api/js/etemplate/et2_core_inputWidget";
|
|||||||
* changed, we discard the daywise cache and ask the server for the filtered events.
|
* changed, we discard the daywise cache and ask the server for the filtered events.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
class CalendarApp extends EgwApp
|
export class CalendarApp extends EgwApp
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -614,10 +614,14 @@ class CalendarApp extends EgwApp
|
|||||||
let filtered = Object.keys(this._grants).filter(account => this.state.owner.indexOf(account) >= 0);
|
let filtered = Object.keys(this._grants).filter(account => this.state.owner.indexOf(account) >= 0);
|
||||||
|
|
||||||
// Check if we're interested in displaying by owner / participant
|
// Check if we're interested in displaying by owner / participant
|
||||||
let owner_check = et2_calendar_event.owner_check(cal_event, jQuery.extend({},
|
let owner_check = et2_calendar_event.owner_check(
|
||||||
{options: {owner: filtered}},
|
cal_event,
|
||||||
this.et2
|
// Fake the required widget since we don't actually have it right now
|
||||||
));
|
jQuery.extend({},
|
||||||
|
{options: {owner: filtered}},
|
||||||
|
this.et2
|
||||||
|
)
|
||||||
|
);
|
||||||
if(!owner_check)
|
if(!owner_check)
|
||||||
{
|
{
|
||||||
// The owner is not in the list of what we're allowed / care about
|
// The owner is not in the list of what we're allowed / care about
|
||||||
@ -632,24 +636,35 @@ class CalendarApp extends EgwApp
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Do we already have "fresh" data? Most user actions give fresh data in response
|
// Do we already have "fresh" data? Most user actions give fresh data in response
|
||||||
let existing = egw.dataGetUIDdata('calendar::'+pushData.id);
|
let existing = egw.dataGetUIDdata('calendar::' + pushData.id);
|
||||||
if(existing && Math.abs(existing.timestamp - new Date().valueOf()) < 1000)
|
if(existing && Math.abs(existing.timestamp - new Date().valueOf()) < 1000)
|
||||||
{
|
{
|
||||||
// Update directly
|
// Update directly
|
||||||
this._update_events(this.state, ['calendar::'+pushData.id]);
|
this._update_events(this.state, ['calendar::' + pushData.id]);
|
||||||
return;
|
return;
|
||||||
};
|
}
|
||||||
|
;
|
||||||
|
|
||||||
// Ask for the real data, we don't have it
|
// Ask for the real data, we don't have it
|
||||||
egw.json("calendar.calendar_ui.ajax_get", [[pushData.id]], function(data) {
|
let process_data = (data) =>
|
||||||
if(data && data.data && data.data.data) return;
|
{
|
||||||
|
|
||||||
// Store it, which will call all registered listeners
|
// Store it, which will call all registered listeners
|
||||||
egw.dataStoreUID(data.uid, data.data);
|
egw.dataStoreUID(data.uid, data.data);
|
||||||
|
|
||||||
// Any existing events were updated. Run this to catch new events or events moved into view
|
// Any existing events were updated. Run this to catch new events or events moved into view
|
||||||
this._update_events(this.state, [data.uid]);
|
this._update_events(this.state, [data.uid]);
|
||||||
}.bind(this)).sendRequest(true);
|
}
|
||||||
|
egw.request("calendar.calendar_ui.ajax_get", [[pushData.id]]).then((data) =>
|
||||||
|
{
|
||||||
|
if(typeof data.uid !== "undefined")
|
||||||
|
{
|
||||||
|
return process_data(data)
|
||||||
|
}
|
||||||
|
for(let e of data)
|
||||||
|
{
|
||||||
|
process_data(e);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1385,9 +1400,9 @@ class CalendarApp extends EgwApp
|
|||||||
freetime_search()
|
freetime_search()
|
||||||
{
|
{
|
||||||
var content = this.et2.getArrayMgr('content').data;
|
var content = this.et2.getArrayMgr('content').data;
|
||||||
content['start'] = this.et2.getWidgetById('start').get_value();
|
content['start'] = this.et2.getValueById('start');
|
||||||
content['end'] = this.et2.getWidgetById('end').get_value();
|
content['end'] = this.et2.getValueById('end');
|
||||||
content['duration'] = this.et2.getWidgetById('duration').get_value();
|
content['duration'] = this.et2.getValueById('duration');
|
||||||
|
|
||||||
var request = this.egw.json('calendar.calendar_uiforms.ajax_freetimesearch', [content],null,null,null,null);
|
var request = this.egw.json('calendar.calendar_uiforms.ajax_freetimesearch', [content],null,null,null,null);
|
||||||
request.sendRequest();
|
request.sendRequest();
|
||||||
@ -1399,8 +1414,8 @@ class CalendarApp extends EgwApp
|
|||||||
*/
|
*/
|
||||||
check_recur_type()
|
check_recur_type()
|
||||||
{
|
{
|
||||||
var recurType = this.et2.getWidgetById('recur_type');
|
var recurType = <et2_selectbox> this.et2.getWidgetById('recur_type');
|
||||||
var recurData = this.et2.getWidgetById('recur_data');
|
var recurData = <et2_selectbox> this.et2.getWidgetById('recur_data');
|
||||||
|
|
||||||
if(recurType && recurData)
|
if(recurType && recurData)
|
||||||
{
|
{
|
||||||
@ -1454,9 +1469,9 @@ class CalendarApp extends EgwApp
|
|||||||
*/
|
*/
|
||||||
set_enddate_visibility()
|
set_enddate_visibility()
|
||||||
{
|
{
|
||||||
var duration = this.et2.getWidgetById('duration');
|
var duration = <et2_selectbox> this.et2.getWidgetById('duration');
|
||||||
var start = this.et2.getWidgetById('start');
|
var start = <et2_date> this.et2.getWidgetById('start');
|
||||||
var end = this.et2.getWidgetById('end');
|
var end = <et2_date> this.et2.getWidgetById('end');
|
||||||
var content = this.et2.getArrayMgr('content').data;
|
var content = this.et2.getArrayMgr('content').data;
|
||||||
|
|
||||||
if (typeof duration != 'undefined' && typeof end != 'undefined')
|
if (typeof duration != 'undefined' && typeof end != 'undefined')
|
||||||
@ -1464,9 +1479,11 @@ class CalendarApp extends EgwApp
|
|||||||
end.set_disabled(duration.get_value()!=='');
|
end.set_disabled(duration.get_value()!=='');
|
||||||
|
|
||||||
// Only set end date if not provided, adding seconds fails with DST
|
// Only set end date if not provided, adding seconds fails with DST
|
||||||
|
// @ts-ignore
|
||||||
if (!end.disabled && !content.end)
|
if (!end.disabled && !content.end)
|
||||||
{
|
{
|
||||||
end.set_value(start.get_value());
|
end.set_value(start.get_value());
|
||||||
|
// @ts-ignore
|
||||||
if (typeof content.duration != 'undefined') end.set_value("+"+content.duration);
|
if (typeof content.duration != 'undefined') end.set_value("+"+content.duration);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1620,9 +1637,9 @@ class CalendarApp extends EgwApp
|
|||||||
*/
|
*/
|
||||||
participantOnChange()
|
participantOnChange()
|
||||||
{
|
{
|
||||||
var add = this.et2.getWidgetById('add');
|
var add = <et2_button> this.et2.getWidgetById('add');
|
||||||
var quantity = this.et2.getWidgetById('quantity');
|
var quantity = <et2_number> this.et2.getWidgetById('quantity');
|
||||||
var participant = this.et2.getWidgetById('participant');
|
var participant = <et2_calendar_owner> this.et2.getWidgetById('participant');
|
||||||
|
|
||||||
// array of participants
|
// array of participants
|
||||||
var value = participant.get_value();
|
var value = participant.get_value();
|
||||||
@ -1691,7 +1708,7 @@ class CalendarApp extends EgwApp
|
|||||||
// Make the Id from selected button by checking the index
|
// Make the Id from selected button by checking the index
|
||||||
var selectedId = _widget.id.match(/^select\[([0-9])\]$/i)[1];
|
var selectedId = _widget.id.match(/^select\[([0-9])\]$/i)[1];
|
||||||
|
|
||||||
var sTime = this.et2.getWidgetById(selectedId+'start');
|
var sTime = <et2_date> this.et2.getWidgetById(selectedId+'start');
|
||||||
|
|
||||||
//check the parent window is still open before to try to access it
|
//check the parent window is still open before to try to access it
|
||||||
if (window.opener && sTime)
|
if (window.opener && sTime)
|
||||||
@ -1699,8 +1716,8 @@ class CalendarApp extends EgwApp
|
|||||||
var editWindowObj = window.opener.etemplate2.getByApplication('calendar')[0];
|
var editWindowObj = window.opener.etemplate2.getByApplication('calendar')[0];
|
||||||
if (typeof editWindowObj != "undefined")
|
if (typeof editWindowObj != "undefined")
|
||||||
{
|
{
|
||||||
var startTime = editWindowObj.widgetContainer.getWidgetById('start');
|
var startTime = <et2_date> editWindowObj.widgetContainer.getWidgetById('start');
|
||||||
var endTime = editWindowObj.widgetContainer.getWidgetById('end');
|
var endTime = <et2_date> editWindowObj.widgetContainer.getWidgetById('end');
|
||||||
if (startTime && endTime)
|
if (startTime && endTime)
|
||||||
{
|
{
|
||||||
startTime.set_value(sTime.get_value());
|
startTime.set_value(sTime.get_value());
|
||||||
@ -1726,7 +1743,7 @@ class CalendarApp extends EgwApp
|
|||||||
const view = <et2_container>(<etemplate2> CalendarApp.views['listview'].etemplates[0]).widgetContainer || null;
|
const view = <et2_container>(<etemplate2> CalendarApp.views['listview'].etemplates[0]).widgetContainer || null;
|
||||||
const nm = view ? <et2_nextmatch>view.getWidgetById('nm') : null;
|
const nm = view ? <et2_nextmatch>view.getWidgetById('nm') : null;
|
||||||
const filter = view && nm ? <et2_selectbox>nm.getWidgetById('filter') : null;
|
const filter = view && nm ? <et2_selectbox>nm.getWidgetById('filter') : null;
|
||||||
const dates = view ? view.getWidgetById('calendar.list.dates') : null;
|
const dates = view ? <et2_template> view.getWidgetById('calendar.list.dates') : null;
|
||||||
|
|
||||||
// Update state when user changes it
|
// Update state when user changes it
|
||||||
if(view && filter)
|
if(view && filter)
|
||||||
@ -2386,11 +2403,11 @@ class CalendarApp extends EgwApp
|
|||||||
*/
|
*/
|
||||||
move_edit_series(_DOM,_button)
|
move_edit_series(_DOM,_button)
|
||||||
{
|
{
|
||||||
var content = this.et2.getArrayMgr('content').data;
|
var content : any = this.et2.getArrayMgr('content').data;
|
||||||
var start_date = this.et2.getWidgetById('start').get_value();
|
var start_date = this.et2.getValueById('start');
|
||||||
var end_date = this.et2.getWidgetById('end').get_value();
|
var end_date = this.et2.getValueById('end');
|
||||||
var whole_day = this.et2.getWidgetById('whole_day');
|
var whole_day = <et2_checkbox> this.et2.getWidgetById('whole_day');
|
||||||
var duration = ''+this.et2.getWidgetById('duration').get_value();
|
var duration = ''+this.et2.getValueById('duration');
|
||||||
var is_whole_day = whole_day && whole_day.get_value() == whole_day.options.selected_value;
|
var is_whole_day = whole_day && whole_day.get_value() == whole_day.options.selected_value;
|
||||||
var button = _button;
|
var button = _button;
|
||||||
var that = this;
|
var that = this;
|
||||||
@ -2623,7 +2640,7 @@ class CalendarApp extends EgwApp
|
|||||||
{
|
{
|
||||||
var listview : et2_nextmatch = typeof CalendarApp.views.listview.etemplates[0] !== 'string' &&
|
var listview : et2_nextmatch = typeof CalendarApp.views.listview.etemplates[0] !== 'string' &&
|
||||||
CalendarApp.views.listview.etemplates[0].widgetContainer &&
|
CalendarApp.views.listview.etemplates[0].widgetContainer &&
|
||||||
CalendarApp.views.listview.etemplates[0].widgetContainer.getWidgetById('nm');
|
<et2_nextmatch> CalendarApp.views.listview.etemplates[0].widgetContainer.getWidgetById('nm');
|
||||||
if(listview && listview.activeFilters && listview.activeFilters.search)
|
if(listview && listview.activeFilters && listview.activeFilters.search)
|
||||||
{
|
{
|
||||||
state.keywords = listview.activeFilters.search;
|
state.keywords = listview.activeFilters.search;
|
||||||
@ -3366,7 +3383,7 @@ class CalendarApp extends EgwApp
|
|||||||
*
|
*
|
||||||
* @param {widget object} _widget new_alarm[options] selectbox
|
* @param {widget object} _widget new_alarm[options] selectbox
|
||||||
*/
|
*/
|
||||||
alarm_custom_date (selectbox : HTMLInputElement, _widget? : et2_selectbox)
|
alarm_custom_date (selectbox? : HTMLInputElement, _widget? : et2_selectbox)
|
||||||
{
|
{
|
||||||
var alarm_date = this.et2.getInputWidgetById('new_alarm[date]');
|
var alarm_date = this.et2.getInputWidgetById('new_alarm[date]');
|
||||||
var alarm_options = _widget || this.et2.getInputWidgetById('new_alarm[options]');
|
var alarm_options = _widget || this.et2.getInputWidgetById('new_alarm[options]');
|
||||||
@ -3402,10 +3419,10 @@ class CalendarApp extends EgwApp
|
|||||||
*/
|
*/
|
||||||
set_alarmOptions_WD (_egw,_widget)
|
set_alarmOptions_WD (_egw,_widget)
|
||||||
{
|
{
|
||||||
var alarm = this.et2.getWidgetById('alarm');
|
var alarm = <et2_grid> this.et2.getWidgetById('alarm');
|
||||||
if (!alarm) return; // no default alarm
|
if (!alarm) return; // no default alarm
|
||||||
var content = this.et2.getArrayMgr('content').data;
|
var content = this.et2.getArrayMgr('content').data;
|
||||||
var start = this.et2.getWidgetById('start');
|
var start = <et2_date> this.et2.getWidgetById('start');
|
||||||
var self= this;
|
var self= this;
|
||||||
var time = alarm.cells[1][0].widget;
|
var time = alarm.cells[1][0].widget;
|
||||||
var event = alarm.cells[1][1].widget;
|
var event = alarm.cells[1][1].widget;
|
||||||
@ -3716,13 +3733,22 @@ class CalendarApp extends EgwApp
|
|||||||
else if(typeof framework !== 'undefined')
|
else if(typeof framework !== 'undefined')
|
||||||
{
|
{
|
||||||
framework.applications.calendar.sidemenuEntry.hideAjaxLoader();
|
framework.applications.calendar.sidemenuEntry.hideAjaxLoader();
|
||||||
egw.loading_prompt('calendar',false)
|
egw.loading_prompt('calendar', false)
|
||||||
|
|
||||||
}
|
}
|
||||||
}, this,null
|
}, this, null
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* We have a list of calendar UIDs of events that need updating.
|
||||||
|
* Public wrapper for _update_events so we can call it from server
|
||||||
|
*/
|
||||||
|
update_events(uids : string[])
|
||||||
|
{
|
||||||
|
return this._update_events(this.state, uids);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* We have a list of calendar UIDs of events that need updating.
|
* We have a list of calendar UIDs of events that need updating.
|
||||||
*
|
*
|
||||||
@ -4343,7 +4369,7 @@ class CalendarApp extends EgwApp
|
|||||||
// Listview not loaded
|
// Listview not loaded
|
||||||
if(typeof CalendarApp.views.listview.etemplates[0] == 'string') return;
|
if(typeof CalendarApp.views.listview.etemplates[0] == 'string') return;
|
||||||
|
|
||||||
var nm = CalendarApp.views.listview.etemplates[0].widgetContainer.getWidgetById('nm');
|
var nm = <et2_nextmatch> CalendarApp.views.listview.etemplates[0].widgetContainer.getWidgetById('nm');
|
||||||
// nextmatch missing
|
// nextmatch missing
|
||||||
if(!nm) return;
|
if(!nm) return;
|
||||||
|
|
||||||
@ -4522,9 +4548,9 @@ class CalendarApp extends EgwApp
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.et2.getWidgetById('new_alarm[options]').set_value('300');
|
(<et2_selectbox> this.et2.getWidgetById('new_alarm[options]')).set_value('300');
|
||||||
this.et2.getWidgetById('new_alarm[owner]').set_value('0'); // all participants
|
(<et2_selectbox> this.et2.getWidgetById('new_alarm[owner]')).set_value('0'); // all participants
|
||||||
this.et2.getWidgetById('button[add_alarm]').click();
|
(<et2_button> this.et2.getWidgetById('button[add_alarm]')).click(event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user