Страницы: 1
Здравствуйте, уважаемые девелоперы!
Намедни, не найдя ни одного нормального расширения для синхронизации Lightning'а с GTD-сервисами, решил написать таковое самостоятельно.
JS, можно сказать, знаю. XUL поковырял - вроде все понятно.
Неясным осталось следующее:
1) Как добавить, например, нужную мне кнопочку на панель Lightning'а? Мой .xul нужно overlay'ить с .xul'ом тандербёрда, или самого лайтнинга? И какой путь писать?
2) область видимости JS-функций Lightning'а - могу ли я запускать их из своего плагина? И есть ли какой-нибудь туториал по компонентам и функциям лайтнинга, или же придется лезть в его внутренности и там копошиться?
3) каким образом, по мнению уважаемых гуру, лучше общаться с сервером? (общение с сервером происходит обычными HTTP-запросами - http://www.toodledo.com/info/api_doc.php?del=12213123)
Буду очень благодарен за подсказки, ибо не совсем понимаю за что вначале браться.
PS: Разрабатывать приложения профессионально не собираюсь - хочу написать для себя небольшой плагин, и всё
Отсутствует
1) Как добавить, например, нужную мне кнопочку на панель Lightning'а? Мой .xul нужно overlay'ить с .xul'ом тандербёрда, или самого лайтнинга? И какой путь писать?
Как обычно для Thunderbird надо оверлеить overlay chrome://messenger/content/messenger.xul#MailToolbarPalette, но у кнопки должен быть атрибут mode со значением 'calendar'.
2) область видимости JS-функций Lightning'а - могу ли я запускать их из своего плагина?
Запускаться будут.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Anton, большое спасибо!
Поставить кнопку на тулбар получилось, и с вызовом lightning-функций побаловался. Но, непонятно где Lightning хранит информацию о заданиях. Имхо, выцеплять данные из DOM-объектов по getElementById неправильно - гдето внутри точно скрывается логическая структура с данными (xml?). Вопрос: где может скрываться список заданий в Lightning? И, чтобы я не задавал таких идиотских вопросов - может есть-таки документация по доработке этого чудесного плагина?
update:
Порывшись в .js-файлах Lightning'a, нашел observer'ы на события "onCalendarAdded", "onAddItem", что очень удобно для дальнейшей разработки моего расширения.
Цепляю листнер таким образом, но он не работает:
Какая тут может быть загвоздка?
Премного благодарен!
Отредактировано newon (13-02-2009 00:43:59)
Отсутствует
Цепляю листнер таким образом, но он не работает:
observer и event handler - немного разные вещи.
observer ставится примерно так (на Lightning не проверял, проверял в Sunbird):
var win = window; var observer = { win: null, QueryInterface: function (aIID) { if (!aIID.equals(Components.interfaces.nsISupports) && !aIID.equals(Components.interfaces.calICompositeObserver)) { throw Components.results.NS_ERROR_NO_INTERFACE; } return this; }, onCalendarAdded: function (aCalendar) { this. win. alert ("added !"); }, onCalendarRemoved: function (aCalendar) { this. win. alert ("removed !"); }, onDefaultCalendarChanged: function (aNewDefaultCalendar) { }, init: function (win) { this. win = win; } }; observer. init (window); var cicc = getCompositeCalendar(); cicc. addObserver (observer);
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Страницы: 1