Disable event form on read-only events.
$result = true;
break;
}
- $event = $kronolith_driver->getEvent(Util::getFormData('id'));
+ if (is_null($id = Util::getFormData('id'))) {
+ $result = true;
+ break;
+ }
+ $event = $kronolith_driver->getEvent($id);
if (is_a($event, 'PEAR_Error')) {
$notification->push($event, 'horde.error');
$result = true;
if (!($kronolith_driver = getDriver($cal = Util::getFormData('cal')))) {
break;
}
- $event = $kronolith_driver->getEvent(Util::getFormData('id'));
+ if (is_null($id = Util::getFormData('id'))) {
+ $result = true;
+ break;
+ }
+ $event = $kronolith_driver->getEvent($id);
if (is_a($event, 'PEAR_Error')) {
$notification->push($event, 'horde.error');
break;
}
break;
+case 'DeleteEvent':
+ if (!($kronolith_driver = getDriver($cal = Util::getFormData('cal')))) {
+ $result = true;
+ break;
+ }
+ if (is_null($id = Util::getFormData('id'))) {
+ $result = true;
+ break;
+ }
+ $event = $kronolith_driver->getEvent($id);
+ if (is_a($event, 'PEAR_Error')) {
+ $notification->push($event, 'horde.error');
+ $result = true;
+ break;
+ }
+ if (!$event) {
+ $notification->push(_("The requested event was not found."), 'horde.error');
+ $result = true;
+ break;
+ }
+ $share = &$kronolith_shares->getShare($event->getCalendar());
+ if (!$share->hasPermission(Auth::getAuth(), PERMS_DELETE, $event->getCreatorID())) {
+ $notification->push(_("You do not have permission to delete this event."), 'horde.warning');
+ $result = true;
+ break;
+ }
+ $deleted = $kronolith_driver->deleteEvent($event->getId());
+ if (is_a($deleted, 'PEAR_Error')) {
+ $notification->push($deleted, 'horde.error');
+ $result = true;
+ break;
+ }
+ $result = new stdClass;
+ $result->deleted = true;
+ break;
+
case 'SaveCalPref':
$result = true;
break;
e.stop();
return;
- case 'kronolithEventActions':
- if (orig.match('input.button')) {
- this._closeRedBox();
- }
+ case 'kronolithEventDelete':
+ var cal = $F('kronolithEventCalendar'),
+ eventid = $F('kronolithEventId'),
+ elm = $('kronolithEvent' + this.view + cal + eventid);
+ this.doAction('DeleteEvent',
+ { 'cal': cal, 'id': eventid },
+ function(r) { if (r.response.deleted) elm.remove(); else elm.toggle() });
+ elm.hide();
+ this._closeRedBox();
+ e.stop();
+ return;
+
+ case 'kronolithEventCancel':
+ this._closeRedBox();
e.stop();
return;
editEvent: function(calendar, id)
{
RedBox.onDisplay = function() {
- $('kronolithEventForm').focusFirstElement();
+ try {
+ $('kronolithEventForm').focusFirstElement();
+ } catch(e) {}
RedBox.onDisplay = null;
};
this.doAction('GetEvent', { 'cal': calendar, 'id': id }, this._editEvent.bind(this));
} else {
var d = new Date();
- $('kronolithEventForm').reset();
+ $('kronolithEventForm').enable().reset();
$('kronolithEventDelete').hide();
$('kronolithEventStartDate').value = d.toString(Kronolith.conf.date_format);
$('kronolithEventStartTime').value = d.toString(Kronolith.conf.time_format);
try {
var ev = r.response.event;
+ $('kronolithEventId').value = ev.i;
+ $('kronolithEventCalendar').value = ev.ty + '|' + ev.c;
$('kronolithEventTitle').value = ev.t;
$('kronolithEventLocation').value = ev.l;
$('kronolithEventAllday').checked = ev.a;
}
if (ev.e) {
$('kronolithEventSave').show();
+ $('kronolithEventForm').enable();
} else {
$('kronolithEventSave').hide();
+ $('kronolithEventForm').disable();
+ $('kronolithEventCancel').enable();
}
if (ev.d) {
$('kronolithEventDelete').show();
* @author Jan Schneider <jan@horde.org>
* @package Kronolith
*/
-class Kronolith_Event
+abstract class Kronolith_Event
{
/**
* Flag that is set to true if this event has data from either a storage
protected $_calendar;
/**
+ * The type of the calender this event exists on.
+ *
+ * @var string
+ */
+ protected $_calendarType;
+
+ /**
* The HTML background color to be used for this event.
*
* @var string
$json->d = $this->hasPermission(PERMS_DELETE);
if ($full) {
+ $json->i = $this->getId();
+ $json->ty = $this->_calendarType;
$json->l = $this->getLocation();
$json->a = $this->isAllDay();
$json->sd = $this->start->strftime('%x');
class Kronolith_Event_Holidays extends Kronolith_Event
{
/**
+ * The type of the calender this event exists on.
+ *
+ * @var string
+ */
+ protected $_calendarType = 'holiday';
+
+ /**
* The status of this event.
*
* @var integer
class Kronolith_Event_Horde extends Kronolith_Event
{
/**
+ * The type of the calender this event exists on.
+ *
+ * @var string
+ */
+ protected $_calendarType = 'external';
+
+ /**
* The API (application) of this event.
*
* @var string
*/
class Kronolith_Event_Ical extends Kronolith_Event
{
+ /**
+ * The type of the calender this event exists on.
+ *
+ * @var string
+ */
+ protected $_calendarType = 'remote';
public function fromDriver($vEvent)
{
*/
class Kronolith_Event_Kolab extends Kronolith_Event
{
+ /**
+ * The type of the calender this event exists on.
+ *
+ * @var string
+ */
+ protected $_calendarType = 'internal';
public function fromDriver($event)
{
class Kronolith_Event_Sql extends Kronolith_Event
{
/**
+ * The type of the calender this event exists on.
+ *
+ * @var string
+ */
+ protected $_calendarType = 'internal';
+
+ /**
* @var array
*/
private $_properties = array();
<!-- end menu -->
<!-- ini edit -->
-<div id="kronolithEventDialog" style="display:none"><form id="kronolithEventForm">
+<div id="kronolithEventDialog" style="display:none">
+<form id="kronolithEventForm">
+<input id="kronolithEventCalendar" type="hidden" name="calendar" />
+<input id="kronolithEventId" type="hidden" name="eventid" />
<div>
<label for="kronolithEventTitle"><?php echo _("Title") ?></label><br />
<input type="text" name="title" id="kronolithEventTitle" class="kronolithLongField" />
<div id="kronolithEventActions">
<input id="kronolithEventSave" type="button" value="<?php echo _("Save") ?>" class="button ok" />
<input id="kronolithEventDelete" type="button" value="<?php echo _("Delete") ?>" class="button ko" />
- <input type="button" value="<?php echo _("Cancel") ?>" class="button cancel" />
+ <input id="kronolithEventCancel" type="button" value="<?php echo _("Cancel") ?>" class="button cancel" />
<span id="kronolithEventAdvancedLink">| <a href="#"><?php echo _("Advanced") ?></a></span><br />
</div>