Как создавать собственные напоминания в молнии с помощью JavaScript?

Я создаю расширение для импорта задач из CRM в Thunderbird/ Lightning. Я использую интерфейс calITodo для создания моих задач:

var todo = Components.classes["@mozilla.org/calendar/todo;1"].createInstance(Components.interfaces.calITodo);

Но я не могу найти, как устанавливать напоминания или создавать собственные для моих задач.

1 ответ

Решение

Я собираюсь ответить на этот вопрос немного шире, чтобы показать вам альтернативы, вы, возможно, уже делаете это.

Если вы хотите использовать 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.".

Другие вопросы по тегам