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

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

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

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


person T_Dnzt    schedule 05.07.2011    source источник


Ответы (1)


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

Если вы хотите использовать 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
comment
Я уже подробно рассмотрел этот вопрос здесь, пожалуйста проверьте мой оригинальный ответ. - person Philipp Kewisch; 15.07.2011