From: Jan Schneider Date: Wed, 14 Apr 2010 16:34:30 +0000 (+0200) Subject: If dragging a multi-day event, change the date relative to day where the X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=6e8a93c5dc4a6d8153995b61ab9eb37a0136c95c;p=horde.git If dragging a multi-day event, change the date relative to day where the dragging started. --- diff --git a/kronolith/js/kronolith.js b/kronolith/js/kronolith.js index dc4e29efd..168e7ae21 100644 --- a/kronolith/js/kronolith.js +++ b/kronolith/js/kronolith.js @@ -1641,8 +1641,8 @@ KronolithCore = { if (view == 'week') { var dates = this.viewDates(midnight, view), - minLeft = $('kronolithEventsWeek' + dates[0].toString('yyyyMMdd')).offsetLeft - $('kronolithEventsWeek' + date).offsetLeft, - maxLeft = $('kronolithEventsWeek' + dates[1].toString('yyyyMMdd')).offsetLeft - $('kronolithEventsWeek' + date).offsetLeft, + minLeft = $('kronolithEventsWeek' + dates[0].dateString()).offsetLeft - $('kronolithEventsWeek' + date).offsetLeft, + maxLeft = $('kronolithEventsWeek' + dates[1].dateString()).offsetLeft - $('kronolithEventsWeek' + date).offsetLeft, stepX = (maxLeft - minLeft) / 6; } var d = new Drag(div, { @@ -3971,17 +3971,21 @@ KronolithCore = { onDrop: function(e) { var drop = e.element(), - el = e.memo.element, + el = e.memo.element; + + if (drop == el.up()) { + return; + } + + var lastDate = this.parseDate(el.up().retrieve('date')), + newDate = this.parseDate(drop.retrieve('date')), + diff = newDate.subtract(lastDate), eventid = el.retrieve('eventid'), cal = el.retrieve('calendar'), viewDates = this.viewDates(this.date, 'month'), start = viewDates[0].toString('yyyyMMdd'), end = viewDates[1].toString('yyyyMMdd'); - if (drop == el.up()) { - return; - } - drop.insert(el); this.startLoading(cal, start + end); this.doAction('updateEvent', @@ -3990,7 +3994,7 @@ KronolithCore = { view: this.view, view_start: start, view_end: end, - att: $H({ start_date: drop.retrieve('date') }).toJSON() }, + att: $H({ offDays: diff }).toJSON() }, function(r) { if (r.response.events) { this.removeEvent(eventid, cal);