Я собираюсь ответить на этот вопрос немного шире, чтобы показать вам альтернативы, возможно, вы уже делаете это.
Если вы хотите использовать CRM в качестве бэкэнда для календаря, вы можете написать расширение типа «Провайдер», аналогичное Провайдеру для Календаря Google. Вам просто нужно реализовать несколько методов для обычных операций (получить / добавить / изменить / удалить), чтобы начать. См. Исходный код для Календаря провайдера для Google в качестве отправной точки.
Если вы просто хотите выполнить однократный импорт, то, вероятно, вы движетесь в правильном направлении. Просто используйте метод addItem / acceptIte в рассматриваемом календаре. Если вам нужен диалог для выбора календарей, вы можете повторно использовать этот , он доступен через uri chrome: //calendar/content/chooseCalendarDialog.xul.
Теперь перейдем к вашему реальному вопросу. Чтобы добавить напоминание к событию или сделать следующий код помогает. Конечно, вы можете выбрать другое отношение тревоги.
Components.utils.import("resource://calendar/modules/calUtils.jsm");
let todo = cal.createToDo();
let alarm = cal.createAlarm();
let alarmDate = cal.createDateTime();
alarm.related = Components.interfaces.calIAlarm.ALARM_RELATED_ABSOLUTE;
alarm.alarmDate = alarmDate;
todo.addAlarm(alarm);
// ...
Сигнализация включает calIAlarm, описание интерфейса можно найти здесь . Затем он добавляется в задачу, которая реализует calITodo, а также calIItemBase. Для обзора методов тревоги для элемента, см. Здесь .
Если вас интересует, какие другие функции доступны, см. Здесь . Вы можете использовать функции из обоих файлов, просто импортировав calUtils. jsm . Просто поставьте перед каждой функцией префикс «cal.».