web/views/calendar.py
branchstable
changeset 8153 e225e70239ed
parent 7183 5ea2bfd55399
child 8190 2a3c1b787688
child 8287 2d660890d3e8
equal deleted inserted replaced
8152:b9bb3372b85f 8153:e225e70239ed
    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():