diff --git a/plugins/calendar/calendar_ui.js b/plugins/calendar/calendar_ui.js --- a/plugins/calendar/calendar_ui.js +++ b/plugins/calendar/calendar_ui.js @@ -3154,6 +3154,18 @@ } }; + // display the edit dialog, request 'new' action and pass the selected event + this.event_copy = function(event) { + if (event && event.id) { + var copy = $.extend(true, {}, event); + delete copy.id; + delete copy._id; + delete copy.created; + delete copy.changed; + event_edit_dialog('new', copy); + } + }; + // show URL of the given calendar in a dialog box this.showurl = function(calendar) { @@ -4234,6 +4246,7 @@ rcmail.register_command('calendar-showurl', function(){ cal.showurl(cal.calendars[cal.selected_calendar]); }, false); rcmail.register_command('event-download', function(){ cal.event_download(cal.selected_event); }, true); rcmail.register_command('event-sendbymail', function(p, obj, e){ cal.event_sendbymail(cal.selected_event, e); }, true); + rcmail.register_command('event-copy', function(){ cal.event_copy(cal.selected_event); }, true); rcmail.register_command('event-history', function(p, obj, e){ cal.event_history_dialog(cal.selected_event); }, false); // search and export events diff --git a/plugins/calendar/skins/classic/templates/calendar.html b/plugins/calendar/skins/classic/templates/calendar.html --- a/plugins/calendar/skins/classic/templates/calendar.html +++ b/plugins/calendar/skins/classic/templates/calendar.html @@ -122,6 +122,7 @@ diff --git a/plugins/calendar/skins/larry/templates/calendar.html b/plugins/calendar/skins/larry/templates/calendar.html --- a/plugins/calendar/skins/larry/templates/calendar.html +++ b/plugins/calendar/skins/larry/templates/calendar.html @@ -163,6 +163,7 @@