Я собираюсь ответить на этот вопрос немного шире, чтобы показать вам альтернативы, которые вы, возможно, уже делаете.
Если вы хотите использовать CRM в качестве серверной части для календаря, вы можете написать расширение типа «Поставщик», аналогичное поставщику для Календаря Google. Вам просто нужно реализовать несколько методов для обычных операций (получить/добавить/изменить/удалить), чтобы начать работу. См. исходный код Provider for Google Calendar в качестве отправная точка.
Если вы просто хотите сделать одноразовый импорт, то вы, вероятно, идете в правильном направлении. Просто используйте метод addItem/adoptIte в соответствующем календаре. Если вам нужно диалоговое окно для выбора календарей, вы можете повторно используйте этот, он доступен через 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, вы можете найти описание интерфейса здесь< /а>. Затем он добавляется в todo, который реализует calITodo, а также calIItemBase. Для обзора методов оповещения об элементе смотрите здесь.
Если вам интересно, какие еще служебные функции доступны, см. здесь а>. Вы можете использовать функции из обоих файлов, просто импортировав calUtils.jsm. Просто добавьте к каждой функции префикс «cal.».
person
Philipp Kewisch
schedule
06.07.2011