diff --git a/plugins/calendar/calendar.php b/plugins/calendar/calendar.php index 57da4032..7eb9dee4 100644 --- a/plugins/calendar/calendar.php +++ b/plugins/calendar/calendar.php @@ -238,6 +238,26 @@ class calendar extends rcube_plugin return $this->ical; } + /** + * + */ + public function get_default_calendar($writeable = false) + { + $cal_id = $this->rc->config->get('calendar_default_calendar'); + $calendars = $this->driver->list_calendars(); + $calendar = $calendars[$cal_id] ? $calendars[$cal_id] : null; + if (!$calendar || ($writeable && $calendar['readonly'])) { + foreach ($calendars as $cal) { + if (!$writeable || !$cal['readonly']) { + $calendar = $cal; + break; + } + } + } + + return $calendar; + } + /** * Render the main calendar view from skin template @@ -1944,13 +1964,26 @@ class calendar extends rcube_plugin break; } } - + // send itip reply to organizer if ($status && $itip->update_invitation($invitation, $invitation['attendee'], strtoupper($status))) { $this->invitestatus = html::div('rsvp-status ' . strtolower($status), $this->gettext('youhave'.strtolower($status))); } else $this->rc->output->command('display_message', $this->gettext('errorsaving'), 'error', -1); + + // if user is logged in... + if ($this->rc->user->ID) { + $this->load_driver(); + $invitation = $itip->get_invitation($token); + + // save the event to his/her default calendar if not yet present + if (!$this->driver->get_event($this->event) && ($calendar = $this->get_default_calendar(true))) { + $invitation['event']['calendar'] = $calendar['id']; + if ($this->driver->new_event($invitation['event'])) + $this->rc->output->command('display_message', $this->gettext(array('name' => 'importedsuccessfully', 'vars' => array('calendar' => $calendar['name']))), 'confirmation'); + } + } } $this->register_handler('plugin.event_inviteform', array($this, 'itip_event_inviteform')); @@ -1971,10 +2004,10 @@ class calendar extends rcube_plugin /** * */ - public function itip_event_inviteform($p) + public function itip_event_inviteform($attrib) { $hidden = new html_hiddenfield(array('name' => "_t", 'value' => $this->token)); - return html::tag('form', array('action' => $this->rc->url(array('task' => 'calendar', 'action' => 'attend')), 'method' => 'post', 'noclose' => true)) . $hidden->show(); + return html::tag('form', array('action' => $this->rc->url(array('task' => 'calendar', 'action' => 'attend')), 'method' => 'post', 'noclose' => true) + $attrib) . $hidden->show(); } /** diff --git a/plugins/calendar/calendar_ui.js b/plugins/calendar/calendar_ui.js index 2e50d43e..a2aac7cf 100644 --- a/plugins/calendar/calendar_ui.js +++ b/plugins/calendar/calendar_ui.js @@ -2158,7 +2158,7 @@ function rcube_calendar_ui(settings) // adjust calendar view size this.view_resize = function() { - var footer = fc.fullCalendar('getView').name == 'table' ? $('#agendaoptions').height() + 2 : 0; + var footer = fc.fullCalendar('getView').name == 'table' ? $('#agendaoptions').outerHeight() : 0; fc.fullCalendar('option', 'height', $('#calendar').height() - footer); }; @@ -2208,7 +2208,7 @@ function rcube_calendar_ui(settings) var id = $(this).data('id'); rcmail.select_folder(id, 'rcmlical'); rcmail.enable_command('calendar-edit', true); - rcmail.enable_command('calendar-remove', 'events-import', 'calendar-showurl', !me.calendars[id].readonly); + rcmail.enable_command('calendar-remove', 'events-import', 'calendar-showurl', true); me.selected_calendar = id; }) .dblclick(function(){ me.calendar_edit_dialog(me.calendars[me.selected_calendar]); }) diff --git a/plugins/calendar/drivers/kolab/kolab_driver.php b/plugins/calendar/drivers/kolab/kolab_driver.php index a70ddfef..adca9623 100644 --- a/plugins/calendar/drivers/kolab/kolab_driver.php +++ b/plugins/calendar/drivers/kolab/kolab_driver.php @@ -1193,6 +1193,9 @@ class kolab_driver extends calendar_driver array('form' => $form, 'options' => $options, 'name' => $folder)); } + if (!$plugin['form']['sharing']['content']) + $plugin['form']['sharing']['content'] = html::div('hint', $this->cal->gettext('aclnorights')); + return $plugin['form']['sharing']['content']; } diff --git a/plugins/calendar/lib/calendar_itip.php b/plugins/calendar/lib/calendar_itip.php index 8b1a74b6..6507b513 100644 --- a/plugins/calendar/lib/calendar_itip.php +++ b/plugins/calendar/lib/calendar_itip.php @@ -96,8 +96,8 @@ class calendar_itip } $message->headers($headers, true); - $message->setTXTBody(rcube_message::format_flowed($mailbody, 79)); - + $message->setTXTBody(rcube_mime::format_flowed($mailbody, 79)); + // finally send the message return rcmail_deliver_message($message, $headers['X-Sender'], $mailto, $smtp_error); } diff --git a/plugins/calendar/localization/de_CH.inc b/plugins/calendar/localization/de_CH.inc index aceeccb1..ee8383df 100644 --- a/plugins/calendar/localization/de_CH.inc +++ b/plugins/calendar/localization/de_CH.inc @@ -64,7 +64,7 @@ $labels['confidential'] = 'vertraulich'; $labels['alarms'] = 'Erinnerung'; $labels['generated'] = 'erstellt am'; $labels['printdescriptions'] = 'Beschrieb drucken'; -$labels['parentcalendar'] = 'Übergeordneter Kalender'; +$labels['parentcalendar'] = 'Erstellen in'; $labels['searchearlierdates'] = '« Frühere Termine suchen'; $labels['searchlaterdates'] = 'Spätere Termine suchen »'; $labels['andnmore'] = '$nr weitere...'; diff --git a/plugins/calendar/localization/de_DE.inc b/plugins/calendar/localization/de_DE.inc index a3e6510b..3c3a4bdf 100644 --- a/plugins/calendar/localization/de_DE.inc +++ b/plugins/calendar/localization/de_DE.inc @@ -64,7 +64,7 @@ $labels['confidential'] = 'vertraulich'; $labels['alarms'] = 'Erinnerung'; $labels['generated'] = 'erstellt am'; $labels['printdescriptions'] = 'Beschrieb drucken'; -$labels['parentcalendar'] = 'Übergeordneter Kalender'; +$labels['parentcalendar'] = 'Erstellen in'; $labels['searchearlierdates'] = '« Frühere Termine suchen'; $labels['searchlaterdates'] = 'Spätere Termine suchen »'; $labels['andnmore'] = '$nr weitere...'; diff --git a/plugins/calendar/localization/en_US.inc b/plugins/calendar/localization/en_US.inc index a5e48d5e..e13cd88b 100644 --- a/plugins/calendar/localization/en_US.inc +++ b/plugins/calendar/localization/en_US.inc @@ -64,7 +64,7 @@ $labels['confidential'] = 'confidential'; $labels['alarms'] = 'Reminder'; $labels['generated'] = 'generated at'; $labels['printdescriptions'] = 'Print descriptions'; -$labels['parentcalendar'] = 'Superior calendar'; +$labels['parentcalendar'] = 'Insert inside'; $labels['searchearlierdates'] = '« Search for earlier events'; $labels['searchlaterdates'] = 'Search for later events »'; $labels['andnmore'] = '$nr more...'; @@ -210,6 +210,7 @@ $labels['localchangeswarning'] = 'You are about to make changes that will only b $labels['importsuccess'] = 'Successfully imported $nr events'; $labels['importnone'] = 'No events found to be imported'; $labels['importerror'] = 'An error occured while importing'; +$labels['aclnorights'] = 'You do not have administrator rights on this calendar.'; // recurrence form $labels['repeat'] = 'Repeat'; diff --git a/plugins/calendar/skins/default/calendar.css b/plugins/calendar/skins/default/calendar.css index 23e27507..21dcb1b9 100644 --- a/plugins/calendar/skins/default/calendar.css +++ b/plugins/calendar/skins/default/calendar.css @@ -22,7 +22,7 @@ body.calendarmain { bottom: 10px; } -#sidebar { +#calendarsidebar { position: absolute; top: 37px; left: 10px; @@ -58,7 +58,7 @@ body.calendarmain { cursor: pointer; } -#sidebartoggle { +#calendarsidebartoggle { position: absolute; left: 244px; width: 8px; @@ -72,7 +72,7 @@ div.sidebarclosed { background-position: -8px 48% !important; } -#sidebartoggle:hover { +#calendarsidebartoggle:hover { background-color: #ddd; } diff --git a/plugins/calendar/skins/default/print.css b/plugins/calendar/skins/default/print.css index eeb4fadb..3c9bd716 100644 --- a/plugins/calendar/skins/default/print.css +++ b/plugins/calendar/skins/default/print.css @@ -20,6 +20,10 @@ body, td, th, div, p, h3, select, input, textarea { overflow: visible; } +#calendar .fc-header-right { + padding-right: 0; +} + #printconfig { position: fixed; top: 0; diff --git a/plugins/calendar/skins/default/templates/calendar.html b/plugins/calendar/skins/default/templates/calendar.html index e6e12711..a22056dd 100644 --- a/plugins/calendar/skins/default/templates/calendar.html +++ b/plugins/calendar/skins/default/templates/calendar.html @@ -12,7 +12,7 @@
- -
+
@@ -175,24 +175,24 @@ rcmail_ui.popups.calendaroptions = { id:'calendaroptionsmenu', above:1, obj:$('# $(document).ready(function(e){ // initialize sidebar toggle - $('#sidebartoggle').click(function() { + $('#calendarsidebartoggle').click(function() { var width = $(this).data('sidebarwidth'); var offset = $(this).data('offset'); - var $sidebar = $('#sidebar'), time = 250; + var $sidebar = $('#calendarsidebar'), time = 250; if ($sidebar.is(':visible')) { - $sidebar.animate({ left:'-'+(width+10)+'px' }, time, function(){ $('#sidebar').hide(); }); - $(this).animate({ left:'8px'}, time, function(){ $('#sidebartoggle').addClass('sidebarclosed') }); + $sidebar.animate({ left:'-'+(width+10)+'px' }, time, function(){ $('#calendarsidebar').hide(); }); + $(this).animate({ left:'8px'}, time, function(){ $('#calendarsidebartoggle').addClass('sidebarclosed') }); $('#calendar').animate({ left:'20px'}, time, function(){ $(this).fullCalendar('render'); }); } else { $sidebar.show().animate({ left:'10px' }, time); - $(this).animate({ left:offset+'px'}, time, function(){ $('#sidebartoggle').removeClass('sidebarclosed'); }); + $(this).animate({ left:offset+'px'}, time, function(){ $('#calendarsidebartoggle').removeClass('sidebarclosed'); }); $('#calendar').animate({ left:(width+16)+'px'}, time, function(){ $(this).fullCalendar('render'); }); } }) - .data('offset', $('#sidebartoggle').position().left) - .data('sidebarwidth', $('#sidebar').width() + $('#sidebar').position().left); + .data('offset', $('#calendarsidebartoggle').position().left) + .data('sidebarwidth', $('#calendarsidebar').width() + $('#calendarsidebar').position().left); }); diff --git a/plugins/calendar/skins/larry/calendar.css b/plugins/calendar/skins/larry/calendar.css index ab9ea521..ad646df1 100644 --- a/plugins/calendar/skins/larry/calendar.css +++ b/plugins/calendar/skins/larry/calendar.css @@ -20,7 +20,7 @@ body.calendarmain #mainscreen { left: 0; } -#sidebar { +#calendarsidebar { position: absolute; top: 0; left: 10px; @@ -31,6 +31,7 @@ body.calendarmain #mainscreen { #datepicker { margin-top: 12px; width: 100%; + min-height: 190px; } #datepicker .ui-datepicker { @@ -71,16 +72,6 @@ body.calendarmain #mainscreen { filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00acd4', endColorstr='#008fc7', GradientType=0); } -.ie9 #datepicker .ui-datepicker-activerange a { - filter: none; - background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20preserveAspectRatio%3D%22none%22%20version%3D%221.0%22%20width%3D%22100%25%22%20height%3D%22100%25%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22mLG1%22%20x1%3D%220%25%22%20y1%3D%220%25%22%20x2%3D%220%25%22%20y2%3D%22100%25%22%20spreadMethod%3D%22pad%22%3E%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%23d9f1fb%22%20stop-opacity%3D%221%22/%3E%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%23c5e3ee%22%20stop-opacity%3D%221%22/%3E%3C/linearGradient%3E%3C/defs%3E%3Crect%20width%3D%22100%25%22%20height%3D%22100%25%22%20style%3D%22fill%3Aurl%28%23mLG1%29%3B%22/%3E%3C/svg%3E) !important; -} - -.ie9 #datepicker .ui-datepicker-activerange a.ui-state-active { - filter: none; - background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20preserveAspectRatio%3D%22none%22%20version%3D%221.0%22%20width%3D%22100%25%22%20height%3D%22100%25%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22mLG1%22%20x1%3D%220%25%22%20y1%3D%220%25%22%20x2%3D%220%25%22%20y2%3D%22100%25%22%20spreadMethod%3D%22pad%22%3E%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%2300acd4%22%20stop-opacity%3D%221%22/%3E%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%23008fc7%22%20stop-opacity%3D%221%22/%3E%3C/linearGradient%3E%3C/defs%3E%3Crect%20width%3D%22100%25%22%20height%3D%22100%25%22%20style%3D%22fill%3Aurl%28%23mLG1%29%3B%22/%3E%3C/svg%3E) !important; -} - #datepicker td.ui-datepicker-week-col { cursor: pointer; } @@ -94,7 +85,7 @@ body.calendarmain #mainscreen { top: 4px; } -#sidebartoggle { +#calendarsidebartoggle { position: absolute; left: 254px; width: 8px; @@ -108,7 +99,7 @@ div.sidebarclosed { background-position: -8px 48% !important; } -#sidebartoggle:hover { +#calendarsidebartoggle:hover { background-color: #ddd; } @@ -121,6 +112,11 @@ div.sidebarclosed { padding-bottom: 28px; } +.calendarmain #message.statusbar { + border: 1px solid #c3c3c3; + border-bottom-color: #ababab; +} + #print { width: 680px; } @@ -544,8 +540,8 @@ td.topalign { #edit-attendees-notify { margin: 0.3em 0; padding: 0.5em; - background-color: #F7FDCB; - border: 1px solid #C2D071; + border: 1px solid #ffdf0e; + background-color: #fef893; } #edit-attendees-table { @@ -933,72 +929,43 @@ span.spacer { #agendaoptions { position: absolute; - top: 37; + bottom: 28px; left: 0; right: 0; height: auto; z-index: 200; - border: 1px solid #ccc; - padding: 2px 5px 1px; - font-size: 90%; + background: #d6eaf3; + border: 1px solid #c3c3c3; + border-top-color: #ddd; + padding: 4px 5px; } #agendaoptions label { - color: #444; - text-shadow: 1px 1px #eee; + color: #69939e; + text-shadow: 1px 1px #f2f2f2; padding-right: 0.5em; } #calendar-kolabform { position: relative; - padding-top: 24px; margin: 0 -8px; min-width: 660px; min-height: 400px; } -#calendar-kolabform div.tabsbar { - top: 0; - right: 2px; - left: 2px; - height: 24px; -} - -#calendar-kolabform fieldset.tabbed { - background-color: #fff; - margin-top: 0; -} - -#calendar-kolabform span.tablink { - background-color: #e8e8e9; - background-image: -moz-linear-gradient(center top, #f4f4f4, #e6e6e6); - background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0.0, #f4f4f4), color-stop(1.0, #e6e6e6)); - filter: progid:DXImageTransform.Microsoft.gradient(enabled='true', startColorstr=#f4f4f4, endColorstr=#e6e6e6, GradientType=0); - height: 24px !important; -} - -#calendar-kolabform span.tablink-selected { - background: #fff; - height: 25px !important; -} - -#calendar-kolabform span.tablink a, -#calendar-kolabform span.tablink-selected a { - background: none; - border: 1px solid #AAAAAA; - border-top-left-radius: 2px; - border-top-right-radius: 2px; - padding: 4px 10px 0 10px; - margin-left: 0; -} - #calendar-kolabform table td.title { - font-weight: bold; - white-space: nowrap; - color: #666; - padding-right: 10px; + font-weight: bold; + white-space: nowrap; + color: #666; + padding-right: 10px; } +.propform fieldset.tab { + background: #efefef; + display: block; + margin-top: 0.5em; + padding: 0.5em 1em; +} /* fullcalendar style overrides */ @@ -1014,15 +981,97 @@ span.spacer { .fc-content { position: absolute !important; - top: 37px; + top: 38px; left: 0; right: 0; bottom: 28px; background: #fff; } +#fish-eye-view .fc-content { + top: 2px; + bottom: 2px; +} + +.calendarmain .fc-button, +.calendarmain .fc-button.fc-state-hover, +.calendarmain .fc-button.fc-state-down { + border: 0; + background: none; +} + +.calendarmain .fc-state-default .fc-button-inner, +.calendarmain .fc-state-hover .fc-button-inner { + margin: 0 0 0 0; + color: #555; + text-shadow: 0px 1px 1px #fff; + border: 1px solid #a2a2a2; + background: #f7f7f7; + background: -moz-linear-gradient(top, #f9f9f9 0%, #e6e6e6 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f9f9f9), color-stop(100%,#e6e6e6)); + background: -o-linear-gradient(top, #f9f9f9 0%, #e6e6e6 100%); + background: -ms-linear-gradient(top, #f9f9f9 0%, #e6e6e6 100%); + background: linear-gradient(top, #f9f9f9 0%, #e6e6e6 100%); + box-shadow: 0 1px 1px 0 rgba(140, 140, 140, 0.3); + -o-box-shadow: 0 1px 1px 0 rgba(140, 140, 140, 0.3); + -webkit-box-shadow: 0 1px 1px 0 rgba(140, 140, 140, 0.3); + -moz-box-shadow: 0 1px 1px 0 rgba(140, 140, 140, 0.3); + text-decoration: none; +} + +.calendarmain .fc-state-disabled .fc-button-inner { + color: #bbb; +} + +.calendarmain .fc-header .fc-button { + margin-left: -1px; + margin-right: 0; +} + +.calendarmain .fc-state-down .fc-button-inner { + margin: 0; + border: 1px solid #a2a2a2; + background: #e6e6e6; + background: -moz-linear-gradient(top, #e6e6e6 0%, #f9f9f9 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#e6e6e6), color-stop(100%,#f9f9f9)); + background: -o-linear-gradient(top, #e6e6e6 0%, #f9f9f9 100%); + background: -ms-linear-gradient(top, #e6e6e6 0%, #f9f9f9 100%); + background: linear-gradient(top, #e6e6e6 0%, #f9f9f9 100%); +} + +.calendarmain .fc-state-active .fc-button-inner { + color: #333; + background: #bababa; + background: -moz-linear-gradient(top, #bababa 0%, #d8d8d8 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#bababa), color-stop(100%,#d8d8d8)); + background: -o-linear-gradient(top, #bababa 0%, #d8d8d8 100%); + background: -ms-linear-gradient(top, #bababa 0%, #d8d8d8 100%); + background: linear-gradient(top, #bababa 0%, #d8d8d8 100%); +} + +.calendarmain .fc-corner-left .fc-button-inner, +.calendarmain .fc-corner-left .fc-button-content { + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} + +.calendarmain .fc-corner-right .fc-button-inner, +.calendarmain .fc-corner-right .fc-button-content { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} + +.calendarmain .fc-state-default .fc-button-effect { + display: none; +} + +.calendarmain .fc-button-content { + height: 2.2em; + line-height: 2.2em; +} + #calendar .fc-header-right { - padding-right: 280px; + padding-right: 250px; } .fc-event { @@ -1109,33 +1158,61 @@ div.fc-event-location { .fc-list-section .fc-event { cursor: pointer; } -/* -.fc-view-list div.fc-list-header, -.fc-view-table td.fc-list-header, + +/*.calendarmain .fc-view-list div.fc-list-header,*/ +.calendarmain .fc-view-table td.fc-list-header, #edit-attendees-table thead td { - padding: 3px; - background: #dddddd; - background-image: -moz-linear-gradient(center top, #f4f4f4, #d2d2d2); - background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0.00, #f4f4f4), color-stop(1.00, #d2d2d2)); - filter: progid:DXImageTransform.Microsoft.gradient(enabled='true', startColorstr=#f4f4f4, endColorstr=#d2d2d2, GradientType=0); + color: #69939e; + font-size: 11px; font-weight: bold; - color: #333; -} -*/ -.fc-view-list .fc-event-skin .fc-event-content { - background: #F6F6F6; - padding: 2px; + background: #d6eaf3; + background: -moz-linear-gradient(left, #e3f2f6 0, #d6eaf3 14px, #d6eaf3 100%); + background: -webkit-gradient(linear, left top, right top, color-stop(0,#e3f2f6), color-stop(8%,#d6eaf3), color-stop(100%,#d6eaf3)); + background: -o-linear-gradient(left, #e3f2f6 0, #d6eaf3 14px, #d6eaf3 100%); + background: -ms-linear-gradient(left, #e3f2f6 0, #d6eaf3 14px ,#d6eaf3 100%); + background: linear-gradient(left, #e3f2f6 0, #d6eaf3 14px, #d6eaf3 100%); + border: 0; + padding: 7px; } -.fc-view-list .fc-event-skin .fc-event-title, -.fc-view-list .fc-event-skin .fc-event-location { - color: #333; +.calendarmain .fc-view-table tr.fc-event td { + border-color: #ddd; + padding: 4px 7px; } -.fc-view-table col.fc-event-location { +.calendarmain .fc-view-table col.fc-event-location { width: 20%; } +.calendarmain .fc-view-table tr.fc-event td.fc-event-handle { + padding: 5px 10px 2px 7px; + width: 12px; +} + +.calendarmain .fc-view-table .fc-event-handle .fc-event-skin { + margin: 0; + padding: 0; + display: inline-block; + width: 10px; + height: 10px; + font-size: 6px; + border-radius: 8px; +} + +.calendarmain .fc-view-table .fc-event-handle .fc-event-inner { + display: inline-block; + width: 10px; + height: 10px; + padding: 0; + font-size: 10px; + border-radius: 8px; + border: 1px solid rgba(0, 0, 0, 0.4); + -webkit-box-shadow: inset 0px 0 1px 1px rgba(0, 0, 0, 0.3); + -moz-box-shadow: inset 0px 0 1px 1px rgba(0, 0, 0, 0.3); + box-shadow: inset 0px 0 1px 1px rgba(0, 0, 0, 0.3); +} + + .fc-listappend { text-align: center; margin: 1em 0; @@ -1232,11 +1309,7 @@ div.calendar-invitebox .rsvp-status.tentative { width: 40em; margin: 80px auto; padding: 10px 10px 10px 90px; - border: 1px solid #ccc; - box-shadow: 1px 1px 24px #ccc; - -moz-box-shadow: 1px 1px 18px #ccc; - -webkit-box-shadow: #ccc 1px 1px 18px; - background: url(images/invitation.png) 10px 10px no-repeat #fbfbfb; + background: url(images/invitation.png) 10px 10px no-repeat #fff; } .calendaritipattend .calendar-invitebox { diff --git a/plugins/calendar/skins/larry/templates/calendar.html b/plugins/calendar/skins/larry/templates/calendar.html index 9e3fbe61..c072e352 100644 --- a/plugins/calendar/skins/larry/templates/calendar.html +++ b/plugins/calendar/skins/larry/templates/calendar.html @@ -3,14 +3,14 @@ <roundcube:object name="pagetitle" /> - +
- -
+
@@ -176,24 +176,24 @@ $(document).ready(function(e){ UI.init(); // initialize sidebar toggle - $('#sidebartoggle').click(function() { + $('#calendarsidebartoggle').click(function() { var width = $(this).data('sidebarwidth'); var offset = $(this).data('offset'); - var $sidebar = $('#sidebar'), time = 250; + var $sidebar = $('#calendarsidebar'), time = 250; if ($sidebar.is(':visible')) { - $sidebar.animate({ left:'-'+(width+10)+'px' }, time, function(){ $('#sidebar').hide(); }); - $(this).animate({ left:'8px'}, time, function(){ $('#sidebartoggle').addClass('sidebarclosed') }); + $sidebar.animate({ left:'-'+(width+10)+'px' }, time, function(){ $('#calendarsidebar').hide(); }); + $(this).animate({ left:'8px'}, time, function(){ $('#calendarsidebartoggle').addClass('sidebarclosed') }); $('#calendar').animate({ left:'20px'}, time, function(){ $(this).fullCalendar('render'); }); } else { $sidebar.show().animate({ left:'10px' }, time); - $(this).animate({ left:offset+'px'}, time, function(){ $('#sidebartoggle').removeClass('sidebarclosed'); }); + $(this).animate({ left:offset+'px'}, time, function(){ $('#calendarsidebartoggle').removeClass('sidebarclosed'); }); $('#calendar').animate({ left:(width+16)+'px'}, time, function(){ $(this).fullCalendar('render'); }); } }) - .data('offset', $('#sidebartoggle').position().left) - .data('sidebarwidth', $('#sidebar').width() + $('#sidebar').position().left); + .data('offset', $('#calendarsidebartoggle').position().left) + .data('sidebarwidth', $('#calendarsidebar').width() + $('#calendarsidebar').position().left); }); diff --git a/plugins/calendar/skins/larry/templates/itipattend.html b/plugins/calendar/skins/larry/templates/itipattend.html index e1c7cc7e..bfbb08f5 100644 --- a/plugins/calendar/skins/larry/templates/itipattend.html +++ b/plugins/calendar/skins/larry/templates/itipattend.html @@ -22,14 +22,14 @@
-
+
+
-
diff --git a/plugins/calendar/skins/larry/templates/kolabacl.html b/plugins/calendar/skins/larry/templates/kolabacl.html index f32a92fc..05a279ad 100644 --- a/plugins/calendar/skins/larry/templates/kolabacl.html +++ b/plugins/calendar/skins/larry/templates/kolabacl.html @@ -3,8 +3,20 @@ <roundcube:object name="pagetitle" /> + - + diff --git a/plugins/calendar/skins/larry/templates/kolabform.html b/plugins/calendar/skins/larry/templates/kolabform.html index 03b023fc..77a1c30e 100644 --- a/plugins/calendar/skins/larry/templates/kolabform.html +++ b/plugins/calendar/skins/larry/templates/kolabform.html @@ -1,6 +1,9 @@ -
+
\ No newline at end of file +#calendarpropform { min-width:680px; margin-top:-12px; } + + \ No newline at end of file diff --git a/plugins/kolab_addressbook/lib/rcube_kolab_contacts.php b/plugins/kolab_addressbook/lib/rcube_kolab_contacts.php index 2ffc7407..531eec70 100644 --- a/plugins/kolab_addressbook/lib/rcube_kolab_contacts.php +++ b/plugins/kolab_addressbook/lib/rcube_kolab_contacts.php @@ -1017,32 +1017,31 @@ class rcube_kolab_contacts extends rcube_addressbook */ private function _sort_contacts_comp($a, $b) { - $a_name = $a['name']; - $b_name = $b['name']; + $a_value = $a[$this->sort_col]; + $b_value = $b[$this->sort_col]; - if (!$a_name) { - $a_name = join(' ', array_filter(array($a['prefix'], $a['firstname'], - $a['middlename'], $a['surname'], $a['suffix']))); - if (!$a_name) { - $a_name = is_array($a['email']) ? $a['email'][0] : $a['email']; - } + if (!$a_value && $this->sort_col == 'name') { + $a_value = join(' ', array_filter(array($a['firstname'], $a['middlename'], $a['surname']))); } - if (!$b_name) { - $b_name = join(' ', array_filter(array($b['prefix'], $b['firstname'], - $b['middlename'], $b['surname'], $b['suffix']))); - if (!$b_name) { - $b_name = is_array($b['email']) ? $b['email'][0] : $b['email']; - } + if (!$a_value) { + $a_value = is_array($a['email']) ? $a['email'][0] : $a['email']; } - // return strcasecmp($a_name, $b_name); + if (!$b_value && $this->sort_col == 'name') { + $b_value = join(' ', array_filter(array($b['firstname'], $b['middlename'], $b['surname']))); + } + if (!$b_value) { + $b_value = is_array($b['email']) ? $b['email'][0] : $b['email']; + } + + // return strcasecmp($a_value, $b_value); // make sorting unicode-safe and locale-dependent - if ($a_name == $b_name) + if ($a_value == $b_value) return 0; - $arr = array($a_name, $b_name); + $arr = array($a_value, $b_value); sort($arr, SORT_LOCALE_STRING); - return $a_name == $arr[0] ? -1 : 1; + return $a_value == $arr[0] ? -1 : 1; } /** diff --git a/plugins/kolab_addressbook/localization/de_CH.inc b/plugins/kolab_addressbook/localization/de_CH.inc new file mode 100644 index 00000000..f91a24ba --- /dev/null +++ b/plugins/kolab_addressbook/localization/de_CH.inc @@ -0,0 +1,46 @@ + diff --git a/plugins/kolab_addressbook/localization/de_DE.inc b/plugins/kolab_addressbook/localization/de_DE.inc new file mode 100644 index 00000000..5fd86b76 --- /dev/null +++ b/plugins/kolab_addressbook/localization/de_DE.inc @@ -0,0 +1,46 @@ + diff --git a/plugins/kolab_auth/localization/de_CH.inc b/plugins/kolab_auth/localization/de_CH.inc new file mode 100644 index 00000000..9cdad33a --- /dev/null +++ b/plugins/kolab_auth/localization/de_CH.inc @@ -0,0 +1,5 @@ + diff --git a/plugins/kolab_auth/localization/de_DE.inc b/plugins/kolab_auth/localization/de_DE.inc new file mode 100644 index 00000000..9cdad33a --- /dev/null +++ b/plugins/kolab_auth/localization/de_DE.inc @@ -0,0 +1,5 @@ + diff --git a/plugins/kolab_folders/config.inc.php.dist b/plugins/kolab_folders/config.inc.php.dist index d907a98f..e3936849 100644 --- a/plugins/kolab_folders/config.inc.php.dist +++ b/plugins/kolab_folders/config.inc.php.dist @@ -26,9 +26,9 @@ $rcmail_config['kolab_folders_mail_drafts'] = ''; // Sent folder $rcmail_config['kolab_folders_mail_sentitems'] = ''; // Trash folder -$rcmail_config['kolab_folders_mail_junkemail'] = ''; +$rcmail_config['kolab_folders_mail_wastebasket'] = ''; // Others folders $rcmail_config['kolab_folders_mail_outbox'] = ''; -$rcmail_config['kolab_folders_mail_wastebasket'] = ''; +$rcmail_config['kolab_folders_mail_junkemail'] = ''; ?> diff --git a/plugins/kolab_folders/localization/de_CH.inc b/plugins/kolab_folders/localization/de_CH.inc new file mode 100644 index 00000000..f9f6e169 --- /dev/null +++ b/plugins/kolab_folders/localization/de_CH.inc @@ -0,0 +1,24 @@ + diff --git a/plugins/kolab_folders/localization/de_DE.inc b/plugins/kolab_folders/localization/de_DE.inc new file mode 100644 index 00000000..f9f6e169 --- /dev/null +++ b/plugins/kolab_folders/localization/de_DE.inc @@ -0,0 +1,24 @@ + diff --git a/plugins/kolab_zpush/localization/de_CH.inc b/plugins/kolab_zpush/localization/de_CH.inc index 2f92044d..f0abdbf5 100644 --- a/plugins/kolab_zpush/localization/de_CH.inc +++ b/plugins/kolab_zpush/localization/de_CH.inc @@ -6,21 +6,21 @@ $labels['devices'] = 'Geräte'; $labels['devicealias'] = 'Gerätename'; $labels['syncmode'] = 'Modus'; $labels['modeauto'] = 'Automatisch'; -$labels['modeflat'] = 'Forciere flache Struktur'; -$labels['modefolder'] = 'Forciere Ordnerstruktur'; +$labels['modeflat'] = 'Flache Struktur erzwingen'; +$labels['modefolder'] = 'Ordnerstruktur erzwingen'; $labels['synchronize'] = 'Synchronisieren'; $labels['withalarms'] = 'Mit Erinnerungen'; $labels['syncsettings'] = 'Synchronisationseinstellungen'; $labels['deviceconfig'] = 'Gerätekonfiguration'; $labels['folderstosync'] = 'Order zum Synchronisieren'; $labels['mail'] = 'E-Mail'; -$labels['contact'] = 'Adressbücher'; -$labels['event'] = 'Kalendar'; +$labels['contact'] = 'Kontakte'; +$labels['event'] = 'Kalender'; $labels['task'] = 'Aufgaben'; $labels['note'] = 'Notizen'; $labels['deletedevice'] = 'Gerät löschen'; $labels['imageformat'] = 'Bildformat'; -$labels['laxpiclabel'] = 'Erlaube PNG- und GIF-Bilder'; +$labels['laxpiclabel'] = 'PNG- und GIF-Bilder erlauben'; $labels['introtext'] = 'Wählen Sie das zu konfigurierende Gerät aus'; $labels['nodevices'] = 'Es sind noch keine Geräte registriert.

Um ein neues Gerät anzumelden, verbinden Sie dieses zuerst mit dem Server. Eine Anleitung dazu finden Sie im Wiki. Anschliessend laden Sie diese Seite neu und das Gerät wird hier aufgelistet.'; $labels['savingdata'] = 'Daten werden gespeichert...'; @@ -29,4 +29,4 @@ $labels['notsupported'] = 'Ihr Server unterstützt keine Activesync-Konfiguratio $labels['devicedeleteconfirm'] = 'Wollen Sie wirklich alle Einstellungen für dieses Gerät löschen?'; $labels['successfullydeleted'] = 'Die Geräteinstellungen wurden erfolgreich gelöscht'; -?> \ No newline at end of file +?> diff --git a/plugins/kolab_zpush/localization/de_DE.inc b/plugins/kolab_zpush/localization/de_DE.inc new file mode 100644 index 00000000..f0abdbf5 --- /dev/null +++ b/plugins/kolab_zpush/localization/de_DE.inc @@ -0,0 +1,32 @@ +
Um ein neues Gerät anzumelden, verbinden Sie dieses zuerst mit dem Server. Eine Anleitung dazu finden Sie im Wiki. Anschliessend laden Sie diese Seite neu und das Gerät wird hier aufgelistet.'; +$labels['savingdata'] = 'Daten werden gespeichert...'; +$labels['savingerror'] = 'Fehler beim Speichern'; +$labels['notsupported'] = 'Ihr Server unterstützt keine Activesync-Konfiguration'; +$labels['devicedeleteconfirm'] = 'Wollen Sie wirklich alle Einstellungen für dieses Gerät löschen?'; +$labels['successfullydeleted'] = 'Die Geräteinstellungen wurden erfolgreich gelöscht'; + +?>