26 янв. 2007 г.

Красивая идея или как интегрировать Sunbird и Rainlendar самым тесным образом

Возвращаясь к статье Работаем с удаленными календарями в Mozilla Sunbird или той же статье, но в другом блоге, где получилась достаточно интересная дискуссия и я оставил большое количество замечаний в комментариях (можно посмотреть здесь), можно прийти к выводу, что остается какая-то внутренняя неудовлетворенность от программы Sunbird. Вроде хорошая программа, но сырая. Удобная, масса полезных возможностей, но не очень "красивая". Более того, есть и откровенные недоработки: программа не умеет запускаться вместе с Windows, сидеть в трее и при наступлении событий напоминать об этом пользователю. Разработчики (сторонние) пытались решить эту проблему (было создано приложение Suntray и расширение MinimiseToTray), однако хорошего решения найти так и не удалось (программы работают плохо), да и от постоянного "нахождения" Sunbird в трее отчего-то резко уменьшаются ресурсы компьютера (видимо последняя версия 0.3 все же еще содержит большое количество недочетов)... Другое дело программа Rainlendar, содержащая огромное количество плюсов (бесплатная, красивая, умеет висеть в трее, может менять язык и внешность и т.д.) и лишь один недостаток: ну не так она удобна для планирования, как Sunbird, в котором весь процесс весьма нагляден и удобен (в том числе за счет применения того же drag'n drop и т.д.).

А что если заставить их работать в одной связке? С одним и тем же календарем? По-моему, было бы совсем не плохо. Приступим...

Для начала необходимо в Sunbird создать календарь (к примеру, экспортировать уже существующий (хотя бы с одним событием)).

И сохранить его в любой понравившейся папке на жестком диске в формате *.ics (iCalendar).

Лучше сохранить в какой-нибудь специально отведенной под это дело папке, так как перемещать этот календарь оттуда мы уже не будем (Создадим, к примеру папку "Календари" в "Мои документы").

Далее необходимо добавить этот файл в список календарей Sunbird (дабы позволить программе работать с локальным файлом в формате iCal, а не в собственном файле (другого формата) Sunbird - открываем ранее экспортированный файл.

После этого обозначенный файл появится в списке календарей (я назвал при экспорте файл obshii.ics


И у нас появляется возможность вносить изменения в данный файл в реальном времени без проведения дополнительных процедур.

Далее необходимо подружить Rainlendar с указанным файлом.


Для этого необходимо произвести следующие действия. Нажимаем правой кнопкой мыши на календаре и жмем левой на "Опции":

Переходим на вкладку "Календари"

Жмем "Добавить"


Задаем тип календаря:


И находим созданный ранее в Sunbird файл:

Задаем ему имя.

Для того, чтобы изменения вступили в силу выполняем обновление программы, как показано на рисунке (щелкаем правой кнопкой мыши на иконке программы в трее).


Далее при каждом внесении изменений в общий календарь через Sunbird для того, чтобы Rainlendar увидел изменения, необходимо производить обновление.

После обновления, если в календаре были события, назначенные на ближайшее время или пропущенные события (время которых уже прошло, но программа о них не предупреждала), программа сразу даст об этом знать в сплывающем окошке на рабочем столе.


Нажав на Dismiss мы отменяем событие, а на Snooze откладываем его.

И все бы было гладко. Но видимо Sunbird все еще слишком молода, чтобы не допускать обидных ошибок...

После того, как Rainlendar показал напоминание, он вносит в файл календаря некоторые изменения. А именно, в нем появляется следующая строка:

Из-за этого при запуске Sunbird начинает страшно ругаться и не хочет открывать наш общий календарь:

По идее, это ошибка Sunbird. Он должен просто напросто пропустить строку, если он с ней не знаком, однако, делать это отказывается.

Ну ничего, мы их познакомим.

Заходим в папку, где установлен Sunbird, подпапку js и находим файл calItemBase.js, как показано на рисунке:


Открываем этот файл для правки (например блокнотом... Но я использовал Notepad++). И вносим всего одно изменение, как показано на рисунке:

То есть впечатываем строку "X-RAINLENDAR-LASTALARMACK": true, как на скриншоте.

После сохранения файла программы у нас становятся лучшими друзьями.

Удачного планирования.


Комментариев нет:

Отправить комментарий