return $kronolith_driver;
}
+function saveEvent($event)
+{
+ $result = $event->save();
+ if (is_a($result, 'PEAR_Error')) {
+ $GLOBALS['notification']->push($result, 'horde.error');
+ return true;
+ }
+ $start = new Horde_Date(Util::getFormData('view_start'));
+ $end = new Horde_Date(Util::getFormData('view_end'));
+ Kronolith::addEvents($events, $event, $start, $end, true, true);
+ $result = new stdClass;
+ $result->cal = Util::getFormData('cal');
+ $result->view = Util::getFormData('view');
+ $result->sig = $start->dateString() . $end->dateString();
+ if (count($events)) {
+ $result->events = $events;
+ }
+ return $result;
+}
+
// Need to load Util:: to give us access to Util::getPathInfo().
$kronolith_dir = dirname(__FILE__);
if (!defined('HORDE_BASE')) {
break;
case 'GetEvent':
- if (!($kronolith_driver = getDriver($cal = Util::getFormData('cal')))) {
+ if (!($kronolith_driver = getDriver(Util::getFormData('cal')))) {
$result = true;
break;
}
break;
case 'SaveEvent':
- $cal = Util::getFormData('cal');
- if (!($kronolith_driver = getDriver($cal))) {
+ if (!($kronolith_driver = getDriver(Util::getFormData('cal')))) {
$result = true;
break;
}
break;
}
$event->readForm();
- $result = $event->save();
- if (is_a($result, 'PEAR_Error')) {
- $notification->push($result, 'horde.error');
- }
- $start = new Horde_Date(Util::getFormData('view_start'));
- $end = new Horde_Date(Util::getFormData('view_end'));
- Kronolith::addEvents($events, $event, $start, $end, true, true);
- $result = new stdClass;
- $result->cal = $cal;
- $result->view = Util::getFormData('view');
- $result->sig = $start->dateString() . $end->dateString();
- if (count($events)) {
- $result->events = $events;
- }
+ $result = saveEvent($event);
break;
case 'UpdateEvent':
- if (!($kronolith_driver = getDriver($cal = Util::getFormData('cal')))) {
+ if (!($kronolith_driver = getDriver(Util::getFormData('cal')))) {
break;
}
if (is_null($id = Util::getFormData('id'))) {
break;
}
}
- $result = $event->save();
- if (is_a($result, 'PEAR_Error')) {
- $notification->push($result, 'horde.error');
- }
+ $result = saveEvent($event);
break;
case 'DeleteEvent':
- if (!($kronolith_driver = getDriver($cal = Util::getFormData('cal')))) {
+ if (!($kronolith_driver = getDriver(Util::getFormData('cal')))) {
$result = true;
break;
}
// Build new calendar view.
while (day.compareTo(dates[1]) < 1) {
- row = tbody.insert(this.createWeekRow(day, date.getMonth()).show());
+ row = tbody.insert(this.createWeekRow(day, date.getMonth(), dates).show());
day.next().week();
rows++;
}
* Creates a single row of day cells for usage in the month and multi-week
* views.
*
- * @param Date date The first day to show in the row.
- * @oaram integer month The current month. Days not from the current month
- * get the kronolithOtherMonth CSS class assigned.
+ * @param Date date The first day to show in the row.
+ * @param integer month The current month. Days not from the current
+ * month get the kronolithOtherMonth CSS class
+ * assigned.
+ * @param array viewDates Array of Date objects with the start and end
+ * dates of the view.
*
* @return Element The element rendering a week row.
*/
- createWeekRow: function(date, month)
+ createWeekRow: function(date, month, viewDates)
{
var monday = date.clone(), day = date.clone(),
today = new Date().dateString(),
+ start = viewDates[0].dateString(), end = viewDates[1].dateString(),
row, cell, dateString;
// Find monday of the week, to determine the week number.
cell.id = 'kronolithMonthDay' + dateString;
cell.writeAttribute('date', dateString);
cell.removeClassName('kronolithOtherMonth').removeClassName('kronolithToday');
- if (typeof month != 'undefined' && day.getMonth() != month) {
+ if (day.getMonth() != month) {
cell.addClassName('kronolithOtherMonth');
}
if (dateString == today) {
cell.addClassName('kronolithToday');
}
new Drop(cell, { onDrop: function(drop) {
- var el = DragDrop.Drags.drag.element;
+ var el = DragDrop.Drags.drag.element,
+ eventid = el.readAttribute('eventid'),
+ cal = el.readAttribute('calendar');
if (drop == el.parentNode) {
return;
}
drop.insert(el);
+ this.eventsLoading[cal] = start + end;
+ this.loading++;
+ $('kronolithLoading').show();
this.doAction('UpdateEvent',
- { cal: el.readAttribute('calendar'),
- id: el.readAttribute('eventid'),
- att: $H({ start_date: drop.readAttribute('date') }).toJSON() });
+ { 'cal': cal,
+ 'id': eventid,
+ 'view': this.view,
+ 'view_start': start,
+ 'view_end': end,
+ 'att': $H({ start_date: drop.readAttribute('date') }).toJSON() },
+ function(r) {
+ if (r.response.events) {
+ this._removeEvent(eventid, cal);
+ this._loadEventsCallback(r);
+ }
+ }.bind(this));
}.bind(this) });
cell.down('.kronolithDay')
.setText(day.getDate())
'color': event.value.fg });
$('kronolithMonthDay' + date).insert(div);
- if (event.value.ed) {
+ if (event.value.pe) {
div.setStyle({ 'cursor': 'move' });
new Drag('kronolithEventmonth' + calendar + event.key, { threshold: 5, parentElement: function() { return $('kronolithViewMonthBody'); }, snapToParent: true });
}
end = viewDates[1].dateString();
this.eventsLoading[cal] = start + end;
this.loading++;
+ $('kronolithLoading').show();
this.doAction('SaveEvent',
$H($('kronolithEventForm').serialize({ 'hash': true }))
.merge({