equal
deleted
inserted
replaced
24 from datetime import timedelta |
24 from datetime import timedelta |
25 |
25 |
26 from logilab.mtconverter import xml_escape |
26 from logilab.mtconverter import xml_escape |
27 from logilab.common.date import todatetime |
27 from logilab.common.date import todatetime |
28 |
28 |
29 from cubicweb.utils import json_dumps |
29 from cubicweb.utils import json_dumps, make_uid |
30 from cubicweb.interfaces import ICalendarable |
30 from cubicweb.interfaces import ICalendarable |
31 from cubicweb.selectors import implements, adaptable |
31 from cubicweb.selectors import implements, adaptable |
32 from cubicweb.view import EntityView, EntityAdapter, implements_adapter_compat |
32 from cubicweb.view import EntityView, EntityAdapter, implements_adapter_compat |
33 |
33 |
34 # useful constants & functions ################################################ |
34 # useful constants & functions ################################################ |
196 |
196 |
197 def call(self): |
197 def call(self): |
198 self._cw.demote_to_html() |
198 self._cw.demote_to_html() |
199 self._cw.add_css(('fullcalendar.css', 'cubicweb.calendar.css')) |
199 self._cw.add_css(('fullcalendar.css', 'cubicweb.calendar.css')) |
200 self._cw.add_js(('jquery.ui.js', 'fullcalendar.min.js', 'jquery.qtip.min.js')) |
200 self._cw.add_js(('jquery.ui.js', 'fullcalendar.min.js', 'jquery.qtip.min.js')) |
|
201 self.calendar_id = 'cal' + make_uid('uid') |
201 self.add_onload() |
202 self.add_onload() |
202 # write calendar div to load jquery fullcalendar object |
203 # write calendar div to load jquery fullcalendar object |
203 self.w(u'<div id="calendar"></div>') |
204 self.w(u'<div id="%s"></div>' % self.calendar_id) |
204 |
205 |
205 |
206 |
206 def add_onload(self): |
207 def add_onload(self): |
207 fullcalendar_options = self.fullcalendar_options.copy() |
208 fullcalendar_options = self.fullcalendar_options.copy() |
208 fullcalendar_options['events'] = self.get_events() |
209 fullcalendar_options['events'] = self.get_events() |
218 var div = '<div class="tooltip">'+ event.description+ '</div>'; |
219 var div = '<div class="tooltip">'+ event.description+ '</div>'; |
219 $element.append(div); |
220 $element.append(div); |
220 // allow to have html tags in event's title |
221 // allow to have html tags in event's title |
221 $element.find('span.fc-event-title').html($element.find('span.fc-event-title').text()); |
222 $element.find('span.fc-event-title').html($element.find('span.fc-event-title').text()); |
222 }; |
223 }; |
223 $("#calendar").fullCalendar(options); |
224 $("#%s").fullCalendar(options); |
224 """ #" |
225 """ #" |
225 self._cw.add_onload(js % json_dumps(fullcalendar_options)) |
226 self._cw.add_onload(js % (json_dumps(fullcalendar_options), self.calendar_id)) |
226 |
227 |
227 |
228 |
228 def get_events(self): |
229 def get_events(self): |
229 events = [] |
230 events = [] |
230 for entity in self.cw_rset.entities(): |
231 for entity in self.cw_rset.entities(): |