CMFCalendar Patch

0 views
Skip to first unread message

Dmitriy Baranov

unread,
Sep 8, 2006, 2:20:18 AM9/8/06
to plon...@googlegroups.com
День добрый, all.

Я внес исправления в стандартный календарь, теперь он
может показывать все типы объектов, а не только события (ATEvents).

Несмотря на то, что при конфигурировании
(/portal_calendar/manage_configure) предлагаются все метатипы портала,
календарь показывает только те объекты, которые проиндексированы по
DateTimeIndex'ам start и end ("All types that are to show in the
calendar must have an attribute 'start' and an attribute 'end' which
return DateTime objects to the Catalog.").

Оба индекса индексируют только события, поэтому есть два решения -
заставить их пережевывать все типы или отказаться от них в пользу
effective и expires (срок вступления в силу и истечения срока действия,
индексы по метаданным). Я взял второй, буду рад увидеть альтернативное
решение, если возможно:)

Изменения вносятся в класс CalendarTool, метод catalog_getevents
1. Изменяем запрос поиска

query = self.portal_catalog(
portal_type=self.getCalendarTypes(),
review_state=self.getCalendarStates(),
#(-)start={'query': last_date, 'range': 'max'},
#(-)end={'query': first_date, 'range': 'min'},
effective={'query': last_date, 'range': 'max'},
expires={'query': first_date, 'range': 'min'},
#(-)sort_on='start' )
sort_on='effective')

2. Далее для каждого дня формируется словарь следующего вида:

{'eventslist': [{'start': '03:35:00', 'end': None,
'title':'Test'}],
'day': 8, 'event': 1}.

Нужно заполнить ключи 'start' и 'end' для каждого RID, которые вернул
portal_catalog из атрибутов effective и expires. Не буду приводить
строки, там довольно пространственная логика, смотрите по месту.

3. Финальный шаг - доработать портлет календаря, место, где формируется
ссылка для подсвеченного дня, заменяем имена индексов start/end на
effective/expires:

string:${portal_url}/search?review_state=published&
effective.query:record:list:date=${begin}&
effective.range:record=max&
expires.query:record:list:date=${end}&
expires.range:record=min;

В аттаче исправленный календарь, версия


Dmitriy Baranov

unread,
Sep 8, 2006, 2:44:13 AM9/8/06
to plon...@googlegroups.com
День добрый, all.

В аттаче исправленный календарь, версия CMF 1.5.5 (Plone 2.1.2).


patch.tar.gz
Reply all
Reply to author
Forward
0 new messages