如何使用javascript在闪电中创建自定义提醒?

时间:2011-07-05 09:11:18

标签: javascript thunderbird lightning

我正在创建一个扩展程序,用于将todos从CRM导入到雷鸟/闪电。我使用calITodo界面来创建我的待办事项:

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

但我无法找到如何设置提醒,或为我的待办事项创建自定义提醒。

1 个答案:

答案 0 :(得分:0)

我会更广泛地回答这个问题以向您展示替代方案,您可能已经在这样做了。

如果您想将CRM用作日历的后端,您可能需要编写“提供商”类型扩展程序,类似于Google日历提供程序。您只需要为常规操作(get / add / modify / delete)实现一些方法即可开始使用。请参阅source code for the Provider for Google Calendar作为起点。

如果您只想进行一次导入,那么您可能正朝着正确的方向前进。只需在相关日历上使用addItem / adoptIte方法即可。如果您需要一个用于选择日历的对话框,可以reuse this one,可以通过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,您可以找到interface description here。然后将它添加到todo中,它实现了calITodo和calIItemBase。有关项目的警报方法的概述,see here

如果您对其他实用功能可用感兴趣,see here。您只需导入calUtils即可使用两个文件中的函数。 jsm 。只需在每个函数前加上“cal。”。