summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Bruederli <bruederli@kolabsys.com>2012-01-15 14:56:45 (GMT)
committerThomas Bruederli <bruederli@kolabsys.com>2012-01-15 14:56:45 (GMT)
commit47e3da633dcc89b5ff9652bb58ccca287ff0ae23 (patch)
treebf2ff5af545592c4989aa841ac794e20b1b57f7a
parentee77665dd507fdcc444b474b6a719ed54d20a08d (diff)
downloadroundcubemail-plugins-kolab-47e3da633dcc89b5ff9652bb58ccca287ff0ae23.tar.gz
Adapt calednar styles for new skin Larry
-rw-r--r--plugins/calendar/calendar.php5
-rw-r--r--plugins/calendar/calendar_ui.js8
-rw-r--r--plugins/calendar/localization/de_CH.inc7
-rw-r--r--plugins/calendar/localization/de_DE.inc7
-rw-r--r--plugins/calendar/localization/en_US.inc7
-rw-r--r--plugins/calendar/skins/larry/.htaccess5
-rw-r--r--plugins/calendar/skins/larry/calendar.css1240
-rw-r--r--plugins/calendar/skins/larry/templates/attachment.html36
-rw-r--r--plugins/calendar/skins/larry/templates/calendar.html202
-rw-r--r--plugins/calendar/skins/larry/templates/eventedit.html100
-rw-r--r--plugins/calendar/skins/larry/templates/freebusylegend.html7
-rw-r--r--plugins/calendar/skins/larry/templates/itipattend.html36
-rw-r--r--plugins/calendar/skins/larry/templates/kolabacl.html12
-rw-r--r--plugins/calendar/skins/larry/templates/kolabform.html6
-rw-r--r--plugins/calendar/skins/larry/templates/print.html28
15 files changed, 1694 insertions, 12 deletions
diff --git a/plugins/calendar/calendar.php b/plugins/calendar/calendar.php
index 56247e6..4a1ee3d 100644
--- a/plugins/calendar/calendar.php
+++ b/plugins/calendar/calendar.php
@@ -177,8 +177,9 @@ class calendar extends rcube_plugin
'command' => 'calendar-create-from-mail',
'label' => 'calendar.createfrommail',
'type' => 'link',
- 'classact' => 'calendarlink active',
- 'class' => 'calendarlink',
+ 'classact' => 'icon calendarlink active',
+ 'class' => 'icon calendarlink',
+ 'innerclass' => 'icon calendar',
))),
'messagemenu');
}
diff --git a/plugins/calendar/calendar_ui.js b/plugins/calendar/calendar_ui.js
index cd1a5d9..5fc5a20 100644
--- a/plugins/calendar/calendar_ui.js
+++ b/plugins/calendar/calendar_ui.js
@@ -6,7 +6,7 @@
* @author Thomas Bruederli <bruederli@kolabsys.com>
*
* Copyright (C) 2010, Lazlo Westerhof <hello@lazlo.me>
- * Copyright (C) 2011, Kolab Systems AG <contact@kolabsys.com>
+ * Copyright (C) 2012, Kolab Systems AG <contact@kolabsys.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
@@ -2146,7 +2146,7 @@ function rcube_calendar_ui(settings)
this.dialog_resize = function(id, height, width)
{
var win = $(window), w = win.width(), h = win.height();
- $(id).dialog('option', { height: Math.min(h-20, height+110), width: Math.min(w-20, width+50) })
+ $(id).dialog('option', { height: Math.min(h-20, height+130), width: Math.min(w-20, width+50) })
.dialog('option', 'position', ['center', 'center']); // only works in a separate call (!?)
};
@@ -2154,7 +2154,7 @@ function rcube_calendar_ui(settings)
this.view_resize = function()
{
var footer = fc.fullCalendar('getView').name == 'table' ? $('#agendaoptions').height() + 2 : 0;
- fc.fullCalendar('option', 'height', $('#main').height() - footer);
+ fc.fullCalendar('option', 'height', $('#calendar').height() - footer);
};
@@ -2236,7 +2236,7 @@ function rcube_calendar_ui(settings)
month: viewdate.getMonth(),
year: viewdate.getFullYear(),
ignoreTimezone: true, // will treat the given date strings as in local (browser's) timezone
- height: $('#main').height(),
+ height: $('#calendar').height(),
eventSources: event_sources,
monthNames : settings['months'],
monthNamesShort : settings['months_short'],
diff --git a/plugins/calendar/localization/de_CH.inc b/plugins/calendar/localization/de_CH.inc
index 266b37b..aceeccb 100644
--- a/plugins/calendar/localization/de_CH.inc
+++ b/plugins/calendar/localization/de_CH.inc
@@ -31,6 +31,7 @@ $labels['day'] = 'Tag';
$labels['week'] = 'Woche';
$labels['month'] = 'Monat';
$labels['agenda'] = 'Agenda';
+$labels['new'] = 'Neu';
$labels['new_event'] = 'Neuer Termin';
$labels['edit_event'] = 'Termin bearbeiten';
$labels['edit'] = 'Bearbeiten';
@@ -38,11 +39,13 @@ $labels['save'] = 'Speichern';
$labels['remove'] = 'Entfernen';
$labels['cancel'] = 'Abbrechen';
$labels['select'] = 'Auswählen';
-$labels['print'] = 'Kalender drucken';
+$labels['print'] = 'Drucken';
+$labels['printtitle'] = 'Kalender drucken';
$labels['title'] = 'Titel';
$labels['description'] = 'Beschrieb';
$labels['all-day'] = 'ganztägig';
-$labels['export'] = 'Exportieren...';
+$labels['export'] = 'Exportieren';
+$labels['exporttitle'] = 'Kalender als iCalendar exportieren';
$labels['location'] = 'Ort';
$labels['date'] = 'Datum';
$labels['start'] = 'Beginn';
diff --git a/plugins/calendar/localization/de_DE.inc b/plugins/calendar/localization/de_DE.inc
index 91b7ef5..a3e6510 100644
--- a/plugins/calendar/localization/de_DE.inc
+++ b/plugins/calendar/localization/de_DE.inc
@@ -31,6 +31,7 @@ $labels['day'] = 'Tag';
$labels['week'] = 'Woche';
$labels['month'] = 'Monat';
$labels['agenda'] = 'Agenda';
+$labels['new'] = 'Neu';
$labels['new_event'] = 'Neuer Termin';
$labels['edit_event'] = 'Termin bearbeiten';
$labels['edit'] = 'Bearbeiten';
@@ -38,11 +39,13 @@ $labels['save'] = 'Speichern';
$labels['remove'] = 'Entfernen';
$labels['cancel'] = 'Abbrechen';
$labels['select'] = 'Auswählen';
-$labels['print'] = 'Kalender drucken';
+$labels['print'] = 'Drucken';
+$labels['printtitle'] = 'Kalender drucken';
$labels['title'] = 'Titel';
$labels['description'] = 'Beschrieb';
$labels['all-day'] = 'ganztägig';
-$labels['export'] = 'Exportieren...';
+$labels['export'] = 'Exportieren';
+$labels['exporttitle'] = 'Kalender als iCalendar exportieren';
$labels['location'] = 'Ort';
$labels['date'] = 'Datum';
$labels['start'] = 'Beginn';
diff --git a/plugins/calendar/localization/en_US.inc b/plugins/calendar/localization/en_US.inc
index 664eecf..a5e48d5 100644
--- a/plugins/calendar/localization/en_US.inc
+++ b/plugins/calendar/localization/en_US.inc
@@ -31,6 +31,7 @@ $labels['day'] = 'Day';
$labels['week'] = 'Week';
$labels['month'] = 'Month';
$labels['agenda'] = 'Agenda';
+$labels['new'] = 'New';
$labels['new_event'] = 'New event';
$labels['edit_event'] = 'Edit event';
$labels['edit'] = 'Edit';
@@ -38,11 +39,13 @@ $labels['save'] = 'Save';
$labels['remove'] = 'Remove';
$labels['cancel'] = 'Cancel';
$labels['select'] = 'Select';
-$labels['print'] = 'Print calendars';
+$labels['print'] = 'Print';
+$labels['printtitle'] = 'Print calendars';
$labels['title'] = 'Summary';
$labels['description'] = 'Description';
$labels['all-day'] = 'all-day';
-$labels['export'] = 'Export to iCalendar';
+$labels['export'] = 'Export';
+$labels['exporttitle'] = 'Export to iCalendar';
$labels['location'] = 'Location';
$labels['date'] = 'Date';
$labels['start'] = 'Start';
diff --git a/plugins/calendar/skins/larry/.htaccess b/plugins/calendar/skins/larry/.htaccess
new file mode 100644
index 0000000..d973105
--- /dev/null
+++ b/plugins/calendar/skins/larry/.htaccess
@@ -0,0 +1,5 @@
+# get all unknown files from default skin folder
+RewriteEngine On
+RewriteCond %{REQUEST_FILENAME} !-f
+RewriteCond %{REQUEST_FILENAME} !-d
+RewriteRule (.*) ../default/$1 [qsappend,last]
diff --git a/plugins/calendar/skins/larry/calendar.css b/plugins/calendar/skins/larry/calendar.css
new file mode 100644
index 0000000..292bba1
--- /dev/null
+++ b/plugins/calendar/skins/larry/calendar.css
@@ -0,0 +1,1240 @@
+/**
+ * Roundcube Calendar plugin styles for skin "Larry"
+ *
+ * Copyright (c) 2012, The Roundcube Dev Team
+ * Screendesign by FLINT / Büro für Gestaltung, bueroflint.com
+ *
+ * The contents are subject to the Creative Commons Attribution-ShareAlike
+ * License. It is allowed to copy, distribute, transmit and to adapt the work
+ * by keeping credits to the original autors in the README file.
+ * See http://creativecommons.org/licenses/by-sa/3.0/ for details.
+ *
+ * $Id$
+ */
+
+body.calendarmain {
+ overflow: hidden;
+}
+
+#mainscreen {
+ left: 0;
+}
+
+#sidebar {
+ position: absolute;
+ top: 0;
+ left: 10px;
+ bottom: 0;
+ width: 240px;
+}
+
+#datepicker {
+ margin-top: 12px;
+ width: 100%;
+}
+
+#datepicker .ui-datepicker {
+ width: 100% !important;
+ box-shadow: none;
+ -moz-box-shadow: none;
+ -webkit-box-shadow: none;
+}
+
+.ui-datepicker td a {
+ padding: 5px 4px;
+ font-size: 12px;
+}
+
+#datepicker td.ui-datepicker-activerange {
+ border-color: #69a2b6;
+}
+
+#datepicker .ui-datepicker-activerange a {
+ color: #185d7a;
+ background: #d9f1fb;
+ background: -moz-linear-gradient(top, #d9f1fb 0%, #c5e3ee 100%);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#d9f1fb), color-stop(100%,#c5e3ee));
+ background: -o-linear-gradient(top, #d9f1fb 0%, #c5e3ee 100%);
+ background: -ms-linear-gradient(top, #d9f1fb 0%, #c5e3ee 100%);
+ background: linear-gradient(top, #d9f1fb 0%, #c5e3ee 100%);
+}
+
+#datepicker .ui-datepicker-activerange a.ui-state-active {
+ color: #fff;
+ background: #00acd4;
+ background: -moz-linear-gradient(top, #00acd4 0%, #008fc7 100%);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#00acd4), color-stop(100%,#008fc7));
+ background: -o-linear-gradient(top, #00acd4 0%, #008fc7 100%);
+ background: -ms-linear-gradient(top, #00acd4 0%, #008fc7 100%);
+ background: linear-gradient(top, #00acd4 0%, #008fc7 100%);
+}
+
+#datepicker td.ui-datepicker-week-col {
+ cursor: pointer;
+}
+
+#datepicker .ui-datepicker-title {
+ margin: 2px 2.3em 3px 2.3em;
+}
+
+#datepicker .ui-datepicker .ui-datepicker-prev,
+#datepicker .ui-datepicker .ui-datepicker-next {
+ top: 4px;
+}
+
+#sidebartoggle {
+ position: absolute;
+ left: 254px;
+ width: 8px;
+ top: 37px;
+ bottom: 0;
+ background: url(images/toggle.gif) 0 48% no-repeat transparent;
+ cursor: pointer;
+}
+
+div.sidebarclosed {
+ background-position: -8px 48% !important;
+}
+
+#sidebartoggle:hover {
+ background-color: #ddd;
+}
+
+#calendar {
+ position: absolute;
+ top: 0;
+ left: 266px;
+ right: 0;
+ bottom: 0;
+ padding-bottom: 28px;
+}
+
+#print {
+ width: 680px;
+}
+
+pre {
+ font-family: "Lucida Grande", Verdana, Arial, Helvetica, sans-serif;
+}
+
+#calendars {
+ position: absolute;
+ top: 276px;
+ left: 0;
+ bottom: 0;
+ right: 0;
+}
+
+#attachmentlist li,
+#calendarslist li {
+ margin: 0;
+ height: 20px;
+ padding: 6px 8px 2px;
+ display: block;
+ position: relative;
+ white-space: nowrap;
+}
+
+#calendarslist li label {
+ display: block;
+}
+
+#calendarslist li span {
+ cursor: default;
+ background: url(images/calendars.png) 0 -2px no-repeat;
+ padding-left: 22px;
+}
+
+#calendarslist li input {
+ position: absolute;
+ top: 3px;
+ right: 5px;
+}
+
+#calendarslist li.selected {
+ background-color: #c7e3ef;
+ color: inherit;
+}
+
+#calendarslist li.selected span {
+ font-weight: bold;
+}
+
+#calendarslist li.readonly span {
+ background-position: 0 -20px;
+}
+
+#calendarslist li.other span {
+ background-position: 0 -38px;
+}
+
+#calendarslist li.other.readonly span {
+ background-position: 0 -56px;
+}
+
+#calendarslist li.shared span {
+ background-position: 0 -74px;
+}
+
+#calendarslist li.shared.readonly span {
+ background-position: 0 -92px;
+}
+
+#calfeedurl {
+ width: 98%;
+ background: #fbfbfb;
+ padding: 4px;
+ margin-bottom: 1em;
+ resize: none;
+}
+
+#agendalist {
+ width: 100%;
+ margin: 0 auto;
+ margin-top: 60px;
+ border: 1px solid #C1DAD7;
+ display: none;
+}
+
+#agendalist table {
+ width: 100%;
+}
+
+#agendalist td,
+#agendalist th {
+ border-right: 1px solid #C1DAD7;
+ border-bottom: 1px solid #C1DAD7;
+ background: #fff;
+ padding: 6px 6px 6px 12px;
+}
+
+#agendalist tr {
+ vertical-align: top;
+}
+
+#agendalist th {
+ font-weight: bold;
+}
+
+#calendartoolbar {
+ position: absolute;
+ top: -6px;
+ right: 0;
+ height: 40px;
+ z-index: 200;
+}
+
+#calendartoolbar a {
+ padding-right: 10px;
+}
+
+#quicksearchbar {
+ right: 4px;
+}
+
+div.uidialog {
+ display: none;
+}
+
+#user {
+ position: absolute;
+ top: 10px;
+ right: 100px;
+ left: 100px;
+ text-align: center;
+}
+
+a.morelink {
+ font-size: 90%;
+ color: #C33;
+ text-decoration: none;
+}
+
+a.morelink:hover {
+ text-decoration: underline;
+}
+
+a.miniColors-trigger {
+ margin-top: -3px;
+}
+
+#attachmentcontainer {
+ position: absolute;
+ top: 80px;
+ left: 20px;
+ right: 20px;
+ bottom: 20px;
+}
+
+#attachmentframe {
+ width: 100%;
+ height: 100%;
+ border: 1px solid #999999;
+ background-color: #F9F9F9;
+}
+
+#partheader {
+ position: absolute;
+ top: 20px;
+ left: 220px;
+ right: 20px;
+ height: 40px;
+}
+
+#partheader table td {
+ padding-left: 2px;
+ padding-right: 4px;
+ vertical-align: middle;
+ font-size: 11px;
+}
+
+#partheader table td.title {
+ color: #666;
+ font-weight: bold;
+}
+
+.attachments-list ul {
+ margin: 0px;
+ padding: 0px;
+ list-style-image: none;
+ list-style-type: none;
+}
+
+.attachments-list ul li {
+ height: 18px;
+ font-size: 12px;
+ padding-top: 2px;
+ padding-right: 8px;
+ white-space: nowrap;
+}
+
+.attachments-list ul li img {
+ padding-right: 2px;
+ vertical-align: middle;
+}
+
+.attachments-list ul li a {
+ text-decoration: none;
+}
+
+.attachments-list ul li a:hover {
+ text-decoration: underline;
+}
+
+#attachmentlist {
+ margin: 0 -0.8em;
+}
+
+#attachmentlist li {
+ padding: 2px 2px 3px 0.8em;
+}
+
+#eventshow .attachments-list ul li {
+ float: left;
+}
+
+#edit-attachments-form {
+ padding-top: 1.2em;
+}
+
+#edit-attachments-form .buttons {
+ margin: 0.5em 0;
+}
+
+#event-attendees span.attendee {
+ padding-right: 18px;
+ margin-right: 0.5em;
+ background: url(images/attendee-status.gif) right 0 no-repeat;
+}
+
+#event-attendees span.attendee a.mailtolink {
+ text-decoration: none;
+ white-space: nowrap;
+}
+
+#event-attendees span.attendee a.mailtolink:hover {
+ text-decoration: underline;
+}
+
+#event-attendees span.accepted {
+ background-position: right -20px;
+}
+
+#event-attendees span.declined {
+ background-position: right -40px;
+}
+
+#event-attendees span.tentative {
+ background-position: right -60px;
+}
+
+#event-attendees span.organizer {
+ background-position: right -80px;
+}
+
+/* jQuery UI overrides */
+
+#eventshow h1 {
+ font-size: 18px;
+ margin: -0.3em 0 0.4em 0;
+}
+
+#eventshow label,
+#eventshow h5.label {
+ font-weight: normal;
+ font-size: 1em;
+ color: #999;
+ margin: 0 0 0.2em 0;
+}
+
+#eventshow {
+ margin: 0 -0.2em;
+}
+
+#eventshow.sensitivity-private {
+ background: url(images/badge_private.png) top right no-repeat;
+}
+
+#eventshow.sensitivity-confidential {
+ background: url(images/badge_confidential.png) top right no-repeat;
+}
+
+.sensitivity-private #event-title {
+ margin-right: 50px;
+}
+
+.sensitivity-confidential #event-title {
+ margin-right: 60px;
+}
+
+#eventshow div.event-line {
+ margin-top: 0.1em;
+ margin-bottom: 0.3em;
+}
+
+#eventedit {
+ position: relative;
+ top: -1.5em;
+ padding: 0.5em 0.1em;
+ margin: 0 -0.2em;
+}
+
+#eventedit input.text,
+#eventedit textarea {
+ width: 97%;
+}
+
+#eventtabs {
+ position: relative;
+ padding: 0;
+ border: 0;
+ border-radius: 0;
+}
+
+div.form-section,
+#eventshow div.event-section,
+#eventtabs div.event-section {
+ margin-top: 0.2em;
+ margin-bottom: 0.8em;
+}
+
+#eventtabs .border-after {
+ padding-bottom: 0.8em;
+ margin-bottom: 0.8em;
+ border-bottom: 2px solid #fafafa;
+}
+
+#eventshow label,
+#eventedit label,
+.form-section label {
+ display: inline-block;
+ min-width: 7em;
+ padding-right: 0.5em;
+}
+
+#eventedit .formtable td.label {
+ min-width: 6em;
+}
+
+td.topalign {
+ vertical-align: top;
+}
+
+#eventedit label.weekday,
+#eventedit label.monthday {
+ min-width: 3em;
+}
+
+#eventedit label.month {
+ min-width: 5em;
+}
+
+#edit-recurrence-yearly-bymonthblock {
+ margin-left: 7.5em;
+}
+
+#eventedit .recurrence-form {
+ display: none;
+}
+
+#eventedit .formtable td {
+ padding: 0.2em 0;
+}
+
+.ui-dialog .event-update-confirm {
+ padding: 0 0.5em 0.5em 0.5em;
+}
+
+.event-dialog-message,
+.event-update-confirm .message {
+ margin-top: 0.5em;
+ padding: 0.8em;
+ background-color: #F7FDCB;
+ border: 1px solid #C2D071;
+}
+
+.event-dialog-message .message,
+.event-update-confirm .message {
+ margin-bottom: 0.5em;
+}
+
+.edit-recurring-warning .savemode {
+ padding-left: 20px;
+}
+
+.event-update-confirm .savemode {
+ padding-left: 30px;
+}
+
+.event-dialog-message span.ui-icon,
+.event-update-confirm span.ui-icon {
+ float: left;
+ margin: 0 7px 20px 0;
+}
+
+.event-dialog-message label,
+.event-update-confirm label {
+ min-width: 3em;
+ padding-right: 1em;
+}
+
+.event-update-confirm a.button {
+ margin: 0 0.5em 0 0.2em;
+ min-width: 5em;
+}
+
+#event-rsvp,
+#edit-attendees-notify {
+ margin: 0.3em 0;
+ padding: 0.5em;
+ background-color: #F7FDCB;
+ border: 1px solid #C2D071;
+}
+
+#edit-attendees-table {
+ width: 100%;
+ margin-top: 0.5em;
+}
+
+#edit-attendees-table td.role {
+ width: 9em;
+}
+
+#edit-attendees-table td.availability,
+#edit-attendees-table td.confirmstate {
+ width: 4em;
+}
+
+#edit-attendees-table td.options {
+ width: 3em;
+ text-align: right;
+ padding-right: 4px;
+}
+
+#edit-attendees-table td.name {
+ width: auto;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+#edit-attendees-form {
+ position: relative;
+ margin-top: 1em;
+}
+
+#edit-attendees-form #edit-attendee-schedule {
+ position: absolute;
+ top: 0;
+ right: 0;
+}
+
+#edit-attendees-table select.edit-attendee-role {
+ border: 0;
+ padding: 2px;
+ background: white;
+}
+
+.availability img.availabilityicon {
+ margin: 1px;
+ width: 14px;
+ height: 14px;
+ border-radius: 4px;
+ -moz-border-radius: 4px;
+}
+
+.availability img.availabilityicon.loading {
+ background: url(images/loading_blue.gif) center no-repeat;
+}
+
+#schedule-freebusy-times td.unknown,
+.availability img.availabilityicon.unknown {
+ background: #ddd;
+}
+
+#schedule-freebusy-times td.free,
+.availability img.availabilityicon.free {
+ background: #0c0;
+}
+
+#schedule-freebusy-times td.busy,
+.availability img.availabilityicon.busy {
+ background: #c00;
+}
+
+#schedule-freebusy-times td.tentative,
+.availability img.availabilityicon.tentative {
+ background: #66d;
+}
+
+#schedule-freebusy-times td.out-of-office,
+.availability img.availabilityicon.out-of-office {
+ background: #f0b400;
+}
+
+#schedule-freebusy-times td.all-busy,
+#schedule-freebusy-times td.all-tentative,
+#schedule-freebusy-times td.all-out-of-office {
+ background-image: url(images/freebusy-colors.png);
+ background-position: top right;
+ background-repeat: no-repeat;
+}
+
+#schedule-freebusy-times td.all-tentative {
+ background-position: right -40px;
+}
+
+#schedule-freebusy-times td.all-out-of-office {
+ background-position: right -80px;
+}
+
+#edit-attendees-legend {
+ margin-top: 3em;
+ margin-bottom: 0.5em;
+}
+
+#edit-attendees-legend .legend {
+ margin-right: 2em;
+ white-space: nowrap;
+}
+
+#edit-attendees-legend img.availabilityicon {
+ vertical-align: middle;
+}
+
+#edit-attendees-table tbody td.confirmstate {
+ overflow: hidden;
+ white-space: nowrap;
+ text-indent: -2000%;
+}
+
+#edit-attendees-table td.confirmstate span {
+ display: block;
+ width: 20px;
+ background: url(images/attendee-status.gif) 5px 0 no-repeat;
+}
+
+#edit-attendees-table td.confirmstate span.needs-action {
+}
+
+#edit-attendees-table td.confirmstate span.accepted {
+ background-position: 5px -20px;
+}
+
+#edit-attendees-table td.confirmstate span.declined {
+ background-position: 5px -40px;
+}
+
+#edit-attendees-table td.confirmstate span.tentative {
+ background-position: 5px -60px;
+}
+
+#attendees-freebusy-table {
+ width: 100%;
+ table-layout: fixed;
+ border-collapse: collapse;
+ margin: 0.5em 0;
+}
+
+#attendees-freebusy-table td.attendees {
+ width: 18em;
+ border: 1px solid #ccc;
+ vertical-align: top;
+ overflow: hidden;
+}
+
+#attendees-freebusy-table td.times {
+ width: auto;
+ vertical-align: top;
+ border: 1px solid #ccc;
+}
+
+#attendees-freebusy-table div.scroll {
+ position: relative;
+ overflow: auto;
+}
+
+#attendees-freebusy-table h3.boxtitle {
+ margin: 0;
+ height: auto !important;
+ border-color: #ccc;
+}
+
+.attendees-list .attendee {
+ padding: 3px 4px 3px 1px;
+ background: url(images/attendee-status.gif) 2px -97px no-repeat;
+ white-space: nowrap;
+}
+
+.attendees-list a.attendee-role-toggle {
+ display: inline-block;
+ width: 16px;
+ margin-right: 3px;
+ cursor: pointer;
+}
+
+.attendees-list div.attendee {
+ border-top: 1px solid #ccc;
+}
+
+.attendees-list span.attendee {
+ padding-left: 20px;
+ margin-right: 2em;
+}
+
+.attendees-list .organizer {
+ background-position: 3px -77px;
+}
+
+.attendees-list .opt-participant {
+ background-position: 2px -117px;
+}
+
+.attendees-list .chair {
+ background-position: 2px -137px;
+}
+
+.attendees-list .loading {
+ background: url(images/loading_blue.gif) 1px 50% no-repeat;
+}
+
+.attendees-list .total {
+ background: none;
+ padding-left: 4px;
+ font-weight: bold;
+}
+
+.attendees-list .spacer,
+#schedule-freebusy-times tr.spacer td {
+ background: 0;
+ font-size: 50%;
+}
+
+#schedule-freebusy-times {
+ border-collapse: collapse;
+ width: 100%;
+}
+
+#schedule-freebusy-times td {
+ padding: 3px;
+ border: 1px solid #ccc;
+}
+
+#schedule-freebusy-times tr.dates th {
+ border-color: #aaa;
+ border-style: solid;
+ border-width: 0 1px 0 1px;
+ white-space: nowrap;
+}
+
+#attendees-freebusy-table div.timesheader,
+#schedule-freebusy-times tr.times td {
+ min-width: 30px;
+ font-size: 9px;
+ padding: 5px 2px 6px 2px;
+ text-align: center;
+}
+
+#schedule-freebusy-times tr.times td.allday {
+ min-width: 60px;
+}
+
+#schedule-freebusy-times tr.times td {
+ cursor: pointer;
+}
+
+#schedule-event-time {
+ position: absolute;
+ border: 2px solid #333;
+ background: #777;
+ background: rgba(60, 60, 60, 0.6);
+ opacity: 0.5;
+ border-radius: 4px;
+ cursor: move;
+ filter: alpha(opacity=40); /* IE8 */
+}
+
+#eventfreebusy .schedule-options {
+ position: relative;
+ margin-bottom: 1.5em;
+}
+
+#eventfreebusy .schedule-buttons {
+ position: absolute;
+ top: 0;
+ right: 0;
+}
+
+#eventfreebusy .schedule-find-buttons {
+ padding-bottom:0.5em;
+}
+
+#eventfreebusy .schedule-find-buttons button {
+ min-width: 9em;
+ text-align: center;
+}
+
+span.edit-alarm-set {
+ white-space: nowrap;
+}
+
+a.dropdown-link {
+ color: #CC0000;
+ font-size: 12px;
+ text-decoration: none;
+}
+
+a.dropdown-link:after {
+ content: ' ▼';
+ font-size: 11px;
+ color: #666;
+}
+
+#eventedit .ui-tabs-panel {
+ min-height: 20em;
+}
+
+.alarm-item {
+ margin: 0.4em 0 1em 0;
+}
+
+.alarm-item .event-title {
+ font-size: 14px;
+ margin: 0.1em 0 0.3em 0;
+}
+
+.alarm-item div.event-section {
+ margin-top: 0.1em;
+ margin-bottom: 0.3em;
+}
+
+.alarm-item .alarm-actions {
+ margin-top: 0.4em;
+}
+
+.alarm-item div.alarm-actions a {
+ color: #CC0000;
+ margin-right: 0.8em;
+ text-decoration: none;
+}
+
+a.alarm-action-snooze:after {
+ content: ' ▼';
+ font-size: 10px;
+ color: #666;
+}
+
+#alarm-snooze-dropdown {
+ z-index: 5000;
+}
+
+.ui-dialog-buttonset a.dropdown-link {
+ margin-right: 1em;
+}
+/*
+.ui-datepicker-calendar .ui-datepicker-today .ui-state-default {
+ border-color: #cccccc;
+ background: #ffffcc;
+ color: #000;
+}
+*/
+.ui-datepicker-calendar .ui-datepicker-week-col {
+ border: 0;
+ color: #999;
+ font-size: 90%;
+ text-align: right;
+ padding-right: 6px;
+}
+/*
+.ui-datepicker th {
+ padding: 0.3em 0;
+ font-size: 10px;
+}
+
+.ui-datepicker td span,
+.ui-datepicker td a {
+ padding-left: 0.1em;
+}
+*/
+.ui-autocomplete {
+ max-height: 160px;
+ overflow-y: auto;
+ overflow-x: hidden;
+}
+
+.ui-autocomplete .ui-menu-item {
+ white-space: nowrap;
+}
+
+* html .ui-autocomplete {
+ height: 160px;
+}
+
+span.spacer {
+ padding-left: 3em;
+}
+
+#agendaoptions {
+ position: absolute;
+ top: 37;
+ left: 0;
+ right: 0;
+ height: auto;
+ z-index: 200;
+ border: 1px solid #ccc;
+ padding: 2px 5px 1px;
+ font-size: 90%;
+}
+
+#agendaoptions label {
+ color: #444;
+ text-shadow: 1px 1px #eee;
+ 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;
+}
+
+
+/* fullcalendar style overrides */
+
+.rcube-fc-content {
+ position: absolute !important;
+ top: 37px;
+ left: 0;
+ right: 0;
+ bottom: 28px;
+ overflow: hidden;
+ border: 0;
+ border-radius: 4px 4px 0 0;
+ box-shadow: 0 0 2px #999;
+ -o-box-shadow: 0 0 2px #999;
+ -webkit-box-shadow: 0 0 2px #999;
+ -moz-box-shadow: 0 0 2px #999;
+ background: #fff;
+}
+
+#calendar .fc-header-right {
+ padding-right: 280px;
+}
+
+.fc-event {
+ font-size: 1em !important;
+}
+
+.fc-event-title {
+ font-weight: bold;
+}
+
+.fc-event-hori .fc-event-title {
+ font-weight: normal;
+ white-space: nowrap;
+}
+
+.fc-event-hori .fc-event-time {
+ white-space: nowrap;
+ font-weight: normal !important;
+ font-size: 10px;
+ padding-right: 0.6em;
+}
+
+.fc-grid .fc-event-time {
+ font-weight: normal !important;
+ padding-right: 0.3em;
+}
+
+.fc-event-cateories {
+ font-style:italic;
+}
+
+div.fc-event-location {
+ font-size: 90%;
+}
+
+.fc-more-link {
+ color: #999;
+ padding-top: 1px;
+ cursor: pointer;
+}
+
+.fc-agenda-slots td div {
+ height: 22px;
+}
+
+.fc-sat, .fc-sun {
+ background-color: #fdfdfd;
+}
+
+.fc-widget-header {
+ background-color: #d6eaf3;
+ color: #004458;
+ text-shadow: 0px 1px 1px #fff;
+}
+
+.fc-view thead th.fc-widget-header {
+ padding: 8px 0;
+ color: #69939e;
+}
+
+.fc-day-number {
+ color: #578da5;
+}
+
+.fc-icon-alarms,
+.fc-icon-sensitive,
+.fc-icon-recurring {
+ display: inline-block;
+ width: 11px;
+ height: 11px;
+ background: url(images/eventicons.gif) 0 0 no-repeat;
+ margin-left: 3px;
+ line-height: 10px;
+}
+
+.fc-icon-alarms {
+ background-position: 0 -13px;
+}
+
+.fc-icon-sensitive {
+ background-position: 0 -25px;
+}
+
+.fc-list-section .fc-event {
+ cursor: pointer;
+}
+/*
+.fc-view-list div.fc-list-header,
+.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);
+ font-weight: bold;
+ color: #333;
+}
+*/
+.fc-view-list .fc-event-skin .fc-event-content {
+ background: #F6F6F6;
+ padding: 2px;
+}
+
+.fc-view-list .fc-event-skin .fc-event-title,
+.fc-view-list .fc-event-skin .fc-event-location {
+ color: #333;
+}
+
+.fc-view-table col.fc-event-location {
+ width: 20%;
+}
+
+.fc-listappend {
+ text-align: center;
+ margin: 1em 0;
+}
+
+.fc-listappend .message {
+ padding: 0.5em;
+ margin-bottom: 0.5em;
+ font-size: 150%;
+ color: #999;
+}
+
+.fc-listappend .formlinks a {
+ font-size: 12px;
+ padding: 0 0.3em;
+}
+
+.fc-event-temp {
+ opacity: 0.4;
+ filter: alpha(opacity=40); /* IE8 */
+}
+
+/* Settings section */
+
+fieldset #calendarcategories div {
+ margin-bottom: 0.3em;
+}
+
+/* Invitation UI in mail */
+
+#messagemenu li a.calendarlink span.calendar {
+/* background-position: 7px -109px; */
+}
+
+div.calendar-invitebox {
+ min-height: 20px;
+ margin: 5px 8px;
+ padding: 3px 6px 6px 34px;
+ border: 1px solid #C2D071;
+ background: url(images/calendar.png) 6px 5px no-repeat #F7FDCB;
+}
+
+div.calendar-invitebox td.ititle {
+ font-weight: bold;
+ padding-right: 0.5em;
+}
+
+div.calendar-invitebox td.label {
+ color: #666;
+ padding-right: 1em;
+}
+
+#event-rsvp .rsvp-buttons,
+div.calendar-invitebox .rsvp-status,
+div.calendar-invitebox .rsvp-buttons {
+ margin-top: 0.5em;
+}
+
+#event-rsvp input.button,
+div.calendar-invitebox input.button,
+div.calendar-invitebox select {
+ font-size: 11px;
+ margin-right: 0.5em;
+}
+
+div.calendar-invitebox .calendar-select {
+ font-size: 11px;
+ margin-left: 1em;
+}
+
+div.calendar-invitebox .rsvp-status.loading {
+ color: #666;
+ padding: 1px 0 2px 24px;
+ background: url(images/loading_blue.gif) top left no-repeat;
+}
+
+div.calendar-invitebox .rsvp-status.declined,
+div.calendar-invitebox .rsvp-status.tentative,
+div.calendar-invitebox .rsvp-status.accepted {
+ padding: 0 0 1px 22px;
+ background: url(images/attendee-status.gif) 2px -20px no-repeat;
+}
+
+div.calendar-invitebox .rsvp-status.declined {
+ background-position: 2px -40px;
+}
+
+div.calendar-invitebox .rsvp-status.tentative {
+ background-position: 2px -60px;
+}
+
+/* iTIP attend reply page */
+
+.calendaritipattend .centerbox {
+ 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;
+}
+
+.calendaritipattend .calendar-invitebox {
+ background: none;
+ padding-left: 0;
+ border: 0;
+ margin: 0 0 2em 0;
+}
+
+.calendaritipattend .calendar-invitebox .rsvp-status {
+ margin-top: 2.5em;
+ font-size: 110%;
+ font-weight: bold;
+}
+
+.calendaritipattend .calendar-invitebox td.title,
+.calendaritipattend .calendar-invitebox td.ititle {
+ font-size: 120%;
+}
+
diff --git a/plugins/calendar/skins/larry/templates/attachment.html b/plugins/calendar/skins/larry/templates/attachment.html
new file mode 100644
index 0000000..439afd4
--- /dev/null
+++ b/plugins/calendar/skins/larry/templates/attachment.html
@@ -0,0 +1,36 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+</head>
+<body class="extwin">
+
+<div id="header">
+ <div id="topline">
+ <div class="topright">
+ <a href="#close" class="closelink" onclick="self.close()"><roundcube:label name="close" /></a>
+ </div>
+ </div>
+
+ <div id="topnav">
+ <roundcube:object name="logo" src="/images/roundcube_logo.png" id="toplogo" border="0" alt="Logo" />
+ </div>
+
+ <br style="clear:both" />
+</div>
+
+<div id="mainscreen">
+ <div id="partheader" class="uibox">
+ <roundcube:object name="plugin.attachmentcontrols" class="headers-table" />
+ </div>
+
+ <div id="attachmentcontainer" class="uibox">
+ <roundcube:object name="plugin.attachmentframe" id="attachmentframe" style="width:100%; height:100%" />
+ </div>
+
+</div>
+
+</body>
+</html>
+
diff --git a/plugins/calendar/skins/larry/templates/calendar.html b/plugins/calendar/skins/larry/templates/calendar.html
new file mode 100644
index 0000000..ec41f7c
--- /dev/null
+++ b/plugins/calendar/skins/larry/templates/calendar.html
@@ -0,0 +1,202 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<!--[if lte IE 7]><link rel="stylesheet" type="text/css" href="./plugins/calendar/skins/default/iehacks.css" /><![endif]-->
+</head>
+<body class="calendarmain">
+
+<roundcube:include file="/includes/header.html" />
+
+<div id="mainscreen">
+ <div id="sidebar">
+ <div id="quicksearchbar">
+ <roundcube:object name="plugin.searchform" id="quicksearchbox" />
+ <roundcube:button name="searchmenulink" id="searchmenulink" class="iconbutton searchoptions" onclick="return false" title="searchmod" content=" " />
+ <roundcube:button command="reset-search" id="searchreset" class="iconbutton reset" title="resetsearch" content=" " />
+ </div>
+
+ <div id="datepicker" class="uibox"></div>
+
+ <div id="calendars" class="uibox listbox" style="visibility:hidden">
+ <h2 class="boxtitle"><roundcube:label name="calendar.calendars" /></h2>
+ <div class="scroller withfooter">
+ <roundcube:object name="plugin.calendar_list" id="calendarslist" class="listing" />
+ </div>
+ <div class="boxfooter">
+ <roundcube:button command="calendar-create" type="link" title="calendar.createcalendar" class="listbutton add disabled" classAct="listbutton add" innerClass="inner" content="+" /><roundcube:button name="calendaroptionslink" id="calendaroptionsmenulink" type="link" title="calendar.calendaractions" class="listbutton groupactions" onclick="UI.show_popup('calendaroptionsmenu', undefined, { above:true });return false" innerClass="inner" content="&#9881;" />
+ </div>
+ </div>
+ </div>
+ <div id="sidebartoggle"></div>
+
+ <div id="calendartoolbar" class="toolbar">
+ <roundcube:button command="addevent" type="link" class="button addevent disabled" classAct="button addevent" classSel="button addevent pressed" label="calendar.new_event" title="calendar.new_event" />
+ <roundcube:button command="print" type="link" class="button print disabled" classAct="button print" classSel="button print pressed" label="calendar.print" title="calendar.printtitle" />
+ <roundcube:button command="export" type="link" class="button export disabled" classAct="button export" classSel="button export pressed" label="calendar.export" title="calendar.exporttitle" />
+ <roundcube:container name="toolbar" id="calendartoolbar" />
+ </div>
+
+ <div id="calendar">
+ <roundcube:object name="plugin.angenda_options" class="boxfooter" id="agendaoptions" />
+ <roundcube:object name="message" id="message" class="statusbar" />
+ </div>
+</div>
+
+<div id="calendaroptionsmenu" class="popupmenu">
+ <ul class="toolbarmenu">
+ <li><roundcube:button command="calendar-edit" label="calendar.edit" classAct="active" /></li>
+ <li><roundcube:button command="calendar-remove" label="calendar.remove" classAct="active" /></li>
+ <li><roundcube:button command="events-import" label="calendar.importevents" classAct="active" /></li>
+ <li><roundcube:button command="calendar-showurl" label="calendar.showurl" classAct="active" /></li>
+ <roundcube:if condition="env:calendar_driver == 'kolab'" />
+ <li class="separator_above"><roundcube:button command="folders" task="settings" type="link" label="managefolders" classAct="active" /></li>
+ <roundcube:endif />
+ </ul>
+</div>
+
+<div id="eventshow" class="uidialog">
+ <h1 id="event-title">Event Title</h1>
+ <div class="event-section" id="event-location">Location</div>
+ <div class="event-section" id="event-date">From-To</div>
+ <div class="event-section" id="event-description">
+ <h5 class="label"><roundcube:label name="calendar.description" /></h5>
+ <div class="event-text"></div>
+ </div>
+ <div class="event-section" id="event-repeat">
+ <h5 class="label"><roundcube:label name="calendar.repeat" /></h5>
+ <div class="event-text"></div>
+ </div>
+ <div class="event-section" id="event-alarm">
+ <h5 class="label"><roundcube:label name="calendar.alarms" /></h5>
+ <div class="event-text"></div>
+ </div>
+ <div class="event-section" id="event-attendees">
+ <h5 class="label"><roundcube:label name="calendar.tabattendees" /></h5>
+ <div class="event-text"></div>
+ </div>
+ <div class="event-line" id="event-calendar">
+ <label><roundcube:label name="calendar.calendar" /></label>
+ <span class="event-text">Default</span>
+ </div>
+ <div class="event-line" id="event-category">
+ <label><roundcube:label name="calendar.category" /></label>
+ <span class="event-text"></span>
+ </div>
+ <div class="event-line" id="event-free-busy">
+ <label><roundcube:label name="calendar.freebusy" /></label>
+ <span class="event-text"></span>
+ </div>
+ <div class="event-line" id="event-priority">
+ <label><roundcube:label name="calendar.priority" /></label>
+ <span class="event-text"></span>
+ </div>
+ <div class="event-line" id="event-sensitivity">
+ <label><roundcube:label name="calendar.sensitivity" /></label>
+ <span class="event-text"></span>
+ </div>
+ <div class="event-section" id="event-attachments">
+ <label><roundcube:label name="attachments" /></label>
+ <div class="event-text attachments-list"></div>
+ </div>
+
+ <roundcube:object name="plugin.event_rsvp_buttons" id="event-rsvp" style="display:none" />
+</div>
+
+<roundcube:include file="/templates/eventedit.html" />
+
+<div id="eventfreebusy" class="uidialog">
+ <roundcube:object name="plugin.attendees_freebusy_table" id="attendees-freebusy-table" cellspacing="0" cellpadding="0" border="0" />
+
+ <div class="schedule-options">
+ &nbsp;
+ <div class="schedule-buttons">
+ <button id="shedule-freebusy-prev" title="<roundcube:label name='previouspage' />">&#9668;</button><button id="shedule-freebusy-next" title="<roundcube:label name='nextpage' />">&#9658;</button>
+ </div>
+ </div>
+
+ <div style="float:left; width:28em">
+ <div class="form-section">
+ <label for="schedule-startdate"><roundcube:label name="calendar.start" /></label>
+ <input type="text" name="startdate" size="10" id="schedule-startdate" disabled="true" /> &nbsp;
+ <input type="text" name="starttime" size="6" id="schedule-starttime" disabled="true" />
+ </div>
+ <div class="form-section">
+ <label for="schedule-enddate"><roundcube:label name="calendar.end" /></label>
+ <input type="text" name="enddate" size="10" id="schedule-enddate" disabled="true" /> &nbsp;
+ <input type="text" name="endtime" size="6" id="schedule-endtime" disabled="true" />
+ </div>
+ </div>
+ <div style="float:left">
+ <div class="schedule-find-buttons">
+ <button id="shedule-find-prev">&#9668; <roundcube:label name="calendar.prevslot" /></button>
+ <button id="shedule-find-next"><roundcube:label name="calendar.nextslot" /> &#9658;</button>
+ </div>
+ <div class="schedule-options">
+ <label><input type="checkbox" id="schedule-freebusy-workinghours" value="1" /><roundcube:label name="calendar.onlyworkinghours" /></label>
+ </div>
+ </div>
+ <br style="clear:both;" />
+
+ <roundcube:include file="/templates/freebusylegend.html" />
+ <div class="attendees-list">
+ <span class="attendee organizer"><roundcube:label name="calendar.roleorganizer" /></span>
+ <span class="attendee req-participant"><roundcube:label name="calendar.rolerequired" /></span>
+ <span class="attendee opt-participant"><roundcube:label name="calendar.roleoptional" /></span>
+ <span class="attendee chair"><roundcube:label name="calendar.roleresource" /></span>
+ </div>
+</div>
+
+<div id="calendarform" class="uidialog">
+ <roundcube:label name="loading" />
+</div>
+
+<div id="eventsimport" class="uidialog">
+ <roundcube:object name="plugin.events_import_form" id="events-import-form" uploadFieldSize="30" />
+</div>
+
+<div id="calendarurlbox" class="uidialog">
+ <p><roundcube:label name="calendar.showurldescription" /></p>
+ <textarea id="calfeedurl" rows="2" readonly="readonly"></textarea>
+</div>
+
+<div id="alarm-snooze-dropdown" class="popupmenu">
+ <roundcube:object name="plugin.snooze_select" type="ul" />
+</div>
+
+<roundcube:object name="plugin.calendar_css" />
+
+<script type="text/javascript">
+
+// UI startup
+var UI = new rcube_mail_ui();
+
+$(document).ready(function(e){
+ UI.init();
+
+ // initialize sidebar toggle
+ $('#sidebartoggle').click(function() {
+ var width = $(this).data('sidebarwidth');
+ var offset = $(this).data('offset');
+ var $sidebar = $('#sidebar'), 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') });
+ $('#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'); });
+ $('#calendar').animate({ left:(width+16)+'px'}, time, function(){ $(this).fullCalendar('render'); });
+ }
+ })
+ .data('offset', $('#sidebartoggle').position().left)
+ .data('sidebarwidth', $('#sidebar').width() + $('#sidebar').position().left);
+});
+
+</script>
+
+</body>
+</html>
diff --git a/plugins/calendar/skins/larry/templates/eventedit.html b/plugins/calendar/skins/larry/templates/eventedit.html
new file mode 100644
index 0000000..07afc17
--- /dev/null
+++ b/plugins/calendar/skins/larry/templates/eventedit.html
@@ -0,0 +1,100 @@
+<div id="eventedit" class="uidialog uidialog-tabbed">
+ <form id="eventtabs" action="#" method="post" enctype="multipart/form-data">
+ <ul>
+ <li><a href="#event-tab-1"><roundcube:label name="calendar.tabsummary" /></a></li><li id="edit-tab-recurrence"><a href="#event-tab-2"><roundcube:label name="calendar.tabrecurrence" /></a></li><li id="edit-tab-attendees"><a href="#event-tab-3"><roundcube:label name="calendar.tabattendees" /></a></li><li id="edit-tab-attachments"><a href="#event-tab-4"><roundcube:label name="calendar.tabattachments" /></a></li>
+ </ul>
+ <!-- basic info -->
+ <div id="event-tab-1">
+ <div class="event-section">
+ <label for="edit-title"><roundcube:label name="calendar.title" /></label>
+ <br />
+ <input type="text" class="text" name="title" id="edit-title" size="40" />
+ </div>
+ <div class="event-section">
+ <label for="edit-location"><roundcube:label name="calendar.location" /></label>
+ <br />
+ <input type="text" class="text" name="location" id="edit-location" size="40" />
+ </div>
+ <div class="event-section">
+ <label for="edit-description"><roundcube:label name="calendar.description" /></label>
+ <br />
+ <textarea name="description" id="edit-description" class="text" rows="5" cols="40"></textarea>
+ </div>
+ <div class="event-section">
+ <label style="float:right;padding-right:0.5em"><input type="checkbox" name="allday" id="edit-allday" value="1" /><roundcube:label name="calendar.all-day" /></label>
+ <label for="edit-startdate"><roundcube:label name="calendar.start" /></label>
+ <input type="text" name="startdate" size="10" id="edit-startdate" /> &nbsp;
+ <input type="text" name="starttime" size="6" id="edit-starttime" />
+ </div>
+ <div class="event-section">
+ <label for="edit-enddate"><roundcube:label name="calendar.end" /></label>
+ <input type="text" name="enddate" size="10" id="edit-enddate" /> &nbsp;
+ <input type="text" name="endtime" size="6" id="edit-endtime" />
+ </div>
+ <div class="event-section" id="edit-alarms">
+ <label for="edit-alarm"><roundcube:label name="calendar.alarms" /></label>
+ <roundcube:object name="plugin.alarm_select" />
+ </div>
+ <div class="event-section" id="calendar-select">
+ <label for="edit-calendar"><roundcube:label name="calendar.calendar" /></label>
+ <roundcube:object name="plugin.calendar_select" id="edit-calendar" />
+ </div>
+ <div class="event-section">
+ <label for="edit-categories"><roundcube:label name="calendar.category" /></label>
+ <roundcube:object name="plugin.category_select" id="edit-categories" />
+ </div>
+ <div class="event-section">
+ <label for="edit-free-busy"><roundcube:label name="calendar.freebusy" /></label>
+ <roundcube:object name="plugin.freebusy_select" id="edit-free-busy" />
+ </div>
+ <div class="event-section">
+ <label for="edit-priority"><roundcube:label name="calendar.priority" /></label>
+ <roundcube:object name="plugin.priority_select" id="edit-priority" />
+ </div>
+ <div class="event-section">
+ <label for="edit-sensitivity"><roundcube:label name="calendar.sensitivity" /></label>
+ <roundcube:object name="plugin.sensitivity_select" id="edit-sensitivity" />
+ </div>
+ </div>
+ <!-- recurrence settings -->
+ <div id="event-tab-2">
+ <div class="event-section border-after">
+ <roundcube:object name="plugin.recurrence_form" part="frequency" />
+ </div>
+ <div class="recurrence-form border-after" id="recurrence-form-daily">
+ <roundcube:object name="plugin.recurrence_form" part="daily" class="event-section" />
+ </div>
+ <div class="recurrence-form border-after" id="recurrence-form-weekly">
+ <roundcube:object name="plugin.recurrence_form" part="weekly" class="event-section" />
+ </div>
+ <div class="recurrence-form border-after" id="recurrence-form-monthly">
+ <roundcube:object name="plugin.recurrence_form" part="monthly" class="event-section" />
+ </div>
+ <div class="recurrence-form border-after" id="recurrence-form-yearly">
+ <roundcube:object name="plugin.recurrence_form" part="yearly" class="event-section" />
+ </div>
+ <div class="recurrence-form" id="recurrence-form-until">
+ <roundcube:object name="plugin.recurrence_form" part="until" class="event-section" />
+ </div>
+ </div>
+ <!-- attendees list -->
+ <div id="event-tab-3">
+ <roundcube:object name="plugin.attendees_list" id="edit-attendees-table" class="records-table" />
+ <roundcube:object name="plugin.attendees_form" id="edit-attendees-form" />
+ <roundcube:include file="/templates/freebusylegend.html" />
+ </div>
+ <!-- attachments list (with upload form) -->
+ <div id="event-tab-4">
+ <div id="edit-attachments" class="attachment-list">
+ <roundcube:object name="plugin.attachments_list" id="attachment-list" deleteIcon="/images/icons/delete.png" cancelIcon="/images/icons/delete.png" loadingIcon="/images/display/loading_blue.gif" />
+ </div>
+ <div id="edit-attachments-form">
+ <roundcube:object name="plugin.attachments_form" id="calendar-attachment-form" attachmentFieldSize="30" />
+ </div>
+ </div>
+ </form>
+
+ <roundcube:object name="plugin.edit_attendees_notify" id="edit-attendees-notify" class="event-dialog-message" style="display:none" />
+ <roundcube:object name="plugin.edit_recurring_warning" class="event-dialog-message edit-recurring-warning" style="display:none" />
+ <div id="edit-localchanges-warning" class="event-dialog-message" style="display:none"><roundcube:label name="calendar.localchangeswarning" /></div>
+</div> \ No newline at end of file
diff --git a/plugins/calendar/skins/larry/templates/freebusylegend.html b/plugins/calendar/skins/larry/templates/freebusylegend.html
new file mode 100644
index 0000000..51e5ddc
--- /dev/null
+++ b/plugins/calendar/skins/larry/templates/freebusylegend.html
@@ -0,0 +1,7 @@
+ <div id="edit-attendees-legend" class="availability">
+ <span class="legend"><img class="availabilityicon free" src="./program/blank.gif" /> <roundcube:label name="calendar.availfree" /></span>
+ <span class="legend"><img class="availabilityicon busy" src="./program/blank.gif" /> <roundcube:label name="calendar.availbusy" /></span>
+ <span class="legend"><img class="availabilityicon tentative" src="./program/blank.gif" /> <roundcube:label name="calendar.availtentative" /></span>
+ <span class="legend"><img class="availabilityicon out-of-office" src="./program/blank.gif" /> <roundcube:label name="calendar.availoutofoffice" /></span>
+ <span class="legend"><img class="availabilityicon unknown" src="./program/blank.gif" /> <roundcube:label name="calendar.availunknown" /></span>
+ </div>
diff --git a/plugins/calendar/skins/larry/templates/itipattend.html b/plugins/calendar/skins/larry/templates/itipattend.html
new file mode 100644
index 0000000..e1c7cc7
--- /dev/null
+++ b/plugins/calendar/skins/larry/templates/itipattend.html
@@ -0,0 +1,36 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+</head>
+<body class="extwin calendaritipattend">
+
+<div id="header">
+<div id="topline">
+ <div class="topright">
+ <a href="#close" class="closelink" onclick="self.close()"><roundcube:label name="close" /></a>
+ </div>
+</div>
+
+<div id="topnav">
+ <roundcube:object name="logo" src="/images/roundcube_logo.png" id="toplogo" border="0" alt="Logo" />
+</div>
+
+<br style="clear:both" />
+</div>
+
+<div id="mainscreen">
+
+<div class="centerbox">
+ <roundcube:object name="plugin.event_inviteform" />
+ <roundcube:object name="plugin.event_invitebox" class="calendar-invitebox" />
+ <roundcube:object name="plugin.event_rsvp_buttons" type="submit" iname="rsvp" id="event-rsvp" />
+ </form>
+</div>
+
+<roundcube:object name="message" id="message" />
+</div>
+
+</body>
+</html> \ No newline at end of file
diff --git a/plugins/calendar/skins/larry/templates/kolabacl.html b/plugins/calendar/skins/larry/templates/kolabacl.html
new file mode 100644
index 0000000..f32a92f
--- /dev/null
+++ b/plugins/calendar/skins/larry/templates/kolabacl.html
@@ -0,0 +1,12 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+</head>
+<body class="iframe" style="background:#fff; margin:0">
+
+<roundcube:object name="folderacl" />
+
+</body>
+</html>
diff --git a/plugins/calendar/skins/larry/templates/kolabform.html b/plugins/calendar/skins/larry/templates/kolabform.html
new file mode 100644
index 0000000..03b023f
--- /dev/null
+++ b/plugins/calendar/skins/larry/templates/kolabform.html
@@ -0,0 +1,6 @@
+<div id="calendar-kolabform">
+ <roundcube:object name="calendarform" />
+</div>
+<style type="text/css">
+#calendarpropform { min-width:680px }
+</style> \ No newline at end of file
diff --git a/plugins/calendar/skins/larry/templates/print.html b/plugins/calendar/skins/larry/templates/print.html
new file mode 100644
index 0000000..1c31ca2
--- /dev/null
+++ b/plugins/calendar/skins/larry/templates/print.html
@@ -0,0 +1,28 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+</head>
+<body class="calendarprint">
+
+<div id="printconfig" class="noprint">
+ <div class="calwidth">
+ <a href="#close" onclick="window.close()" class="rightalign"><roundcube:label name="close" /></a>
+ <span class="prop"><input type="button" id="printme" value="<roundcube:label name='print' />" onclick="window.print()"></span>
+ <span class="prop"><label><input type="checkbox" id="propdescription" checked="checked" /> <roundcube:label name="calendar.printdescriptions" /></label></span>
+ </div>
+</div>
+
+<roundcube:object name="message" id="message" class="noprint" />
+
+<div id="calendar" class="calwidth"></div>
+
+<div class="calwidth">
+ <roundcube:object name="plugin.calendar_list" activeonly="true" id="calendarlist" />
+</div>
+
+<roundcube:object name="plugin.calendar_css" printmode="true" />
+
+<!--[if lte IE 7]><link rel="stylesheet" type="text/css" href="./plugins/calendar/skins/default/print.iehacks.css" /><![endif]-->
+</body>
+</html> \ No newline at end of file