diff options
author | Daniel Lange <DLange@git.local> | 2016-03-07 15:53:16 +0100 |
---|---|---|
committer | Daniel Lange <DLange@git.local> | 2016-03-07 15:53:16 +0100 |
commit | 50569114acdc64e7c7cae1498635d3f821517c30 (patch) | |
tree | 13d6fe76af33134fbfb2286930fb6603047f9299 /calendar/skins/larry | |
parent | c210d30de6c62e7f7867bb32651349ddf455d9e6 (diff) | |
download | roundcube_calendar-50569114acdc64e7c7cae1498635d3f821517c30.tar.gz roundcube_calendar-50569114acdc64e7c7cae1498635d3f821517c30.tar.bz2 roundcube_calendar-50569114acdc64e7c7cae1498635d3f821517c30.zip |
Initial commit of the Faster IT roundcube_calendar plugin distribution
This includes:
* Kolab plugins 3.2.9 (calendar and libcalendaring)
* CalDAV driver 3.2.8
* .htaccess files for at least some security
* SabreDAV updated to 1.8.12 (Jan 2015 release)
* Support for CURLOPT_SSL_* settings to allow self-signed certificates
* Small fixes & improved documentation
Diffstat (limited to 'calendar/skins/larry')
30 files changed, 4222 insertions, 0 deletions
diff --git a/calendar/skins/larry/README b/calendar/skins/larry/README new file mode 100644 index 0000000..d162620 --- /dev/null +++ b/calendar/skins/larry/README @@ -0,0 +1,11 @@ +Screendesign by FLINT / Büro für Gestaltung, Bern, Switzerland +http://bueroflint.com + + +LICENSE +------- +The contents of this folder 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. diff --git a/calendar/skins/larry/calendar.css b/calendar/skins/larry/calendar.css new file mode 100644 index 0000000..0669a8f --- /dev/null +++ b/calendar/skins/larry/calendar.css @@ -0,0 +1,2327 @@ +/** + * Roundcube Calendar plugin styles for skin "Larry" + * + * Copyright (c) 2012-2014, Kolab Systems AG <contact@kolabsys.com> + * 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. + */ + +body.calendarmain { + overflow: hidden; +} + +body.calendarmain #mainscreen { + left: 0; +} + +/* overrides for tablets and mobile phones */ +@media screen and (max-device-width: 1024px){ + body.calendarmain { + overflow: visible; + } + + body.calendarmain #mainscreen { + min-width: 1000px !important; + min-height: 520px !important; + } + + body.calendarmain #header { + min-width: 1020px !important; + } +} + +#calendarsidebar { + position: absolute; + top: 0; + left: 10px; + bottom: 0; + width: 250px; +} + +#datepicker { + position: absolute; + top: 40px; + left: 0; + width: 100%; + min-height: 190px; +} + +#datepicker .ui-datepicker { + width: 100% !important; + box-shadow: none; + -moz-box-shadow: none; + -webkit-box-shadow: none; +} + +#datepicker .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%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#d9f1fb', endColorstr='#c5e3ee', GradientType=0); +} + +#datepicker .ui-datepicker-days-cell-over a.ui-state-default { + color: #fff; + border-color: #2fa0c0; + background: rgba(73,180,210,0.6); + text-shadow: 0px 1px 1px #666; + filter: none; +} + +#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%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00acd4', endColorstr='#008fc7', GradientType=0); +} + +#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; +} + +#calsidebarsplitter { + position: absolute; + left: 264px; + width: 6px; + top: 40px !important; + bottom: 0; + background: url(images/toggle.gif) -1px 48% no-repeat transparent; +} + +div.sidebarclosed { + background-position: -8px 48% !important; + cursor: pointer; +} + +#calsidebarsplitter:hover { + background-color: #ddd; +} + +#calendar { + position: absolute; + top: 0; + left: 276px; + right: 0; + bottom: 0; +} + +.calendarmain #message.statusbar { + border: 1px solid #c3c3c3; + border-bottom-color: #ababab; +} + +#timezonedisplay { + position: absolute; + bottom: 5px; + right: 12px; + font-size: 0.85em; + color: #666; +} + +#print { + width: 680px; +} + +pre { + font-family: "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; +} + +#calendars { + position: absolute; + top: 276px; + left: 0; + bottom: 0; + right: 0; +} + +#calendars .boxtitle { + position: relative; +} + +#calendars .boxtitle a.iconbutton.search { + position: absolute; + top: 8px; + right: 8px; + width: 16px; + cursor: pointer; + background-position: -2px -317px; +} + +#calendars .listsearchbox { + display: none; +} + +#calendars .listsearchbox.expanded { + display: block; +} + +#calendars .scroller { + top: 34px; +} + +#calendars .listsearchbox.expanded + .scroller { + top: 68px; +} + +#calendars .treelist li { + margin: 0; + position: relative; +} + +#calendars .treelist li div.folder, +#calendars .treelist li div.calendar { + position: relative; + height: 28px; +} + +#calendars .treelist li div.virtual { + height: 22px; +} + +#calendars .treelist li span.calname { + display: block; + padding: 0px 18px 2px 2px; + position: absolute; + top: 7px; + left: 38px; + right: 45px; + cursor: default; + background: url(images/calendars.png) right 20px no-repeat; + overflow-x: hidden; + text-overflow: ellipsis; + white-space: nowrap; + color: #004458; +} + +.quickview-active #calendars .treelist div input, +.quickview-active #calendars .treelist div .calname { + opacity: 0.35; +} + +.quickview-active #calendars .treelist div.focusview .calname { + opacity: 1.0; + background-image: none; +} + +#calendars .treelist li div.virtual > span.calname { + color: #aaa; + top: 4px; + left: 20px; +} + +#calendars .treelist li.x-birthdays span.calname, +#calendars .treelist li.x-invitations span.calname { + font-style: italic; +} + +#calendars .treelist.flat li span.calname { + left: 24px; + right: 42px; +} + +#calendars .treelist li span.handle { + display: inline-block; + position: absolute; + top: 8px; + right: 6px; + padding: 0; + width: 10px; + height: 10px; + border-radius: 7px; + font-size: 0.8em; + border: 1px solid rgba(0, 0, 0, 0.5); + -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); +} + +#calendars .treelist div span.actions { + display: inline-block; + position: absolute; + top: 2px; + right: 22px; + padding: 5px 20px 0 6px; +/* min-width: 40px; */ + height: 19px; + text-align: right; + z-index: 4; +} + +#calendars .treelist div:hover span.actions { + top: 1px; + right: 21px; + border: 1px solid #c6c6c6; + border-radius: 4px; + 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%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9f9f9', endColorstr='#e6e6e6', GradientType=0); +} + +#calendars .treelist li a.subscribed { + display: inline-block; + position: absolute; + top: 5px; + right: 3px; + height: 16px; + width: 16px; + padding: 0; + background: url(images/calendars.png) -100px 0 no-repeat; + overflow: hidden; + text-indent: -5000px; + cursor: pointer; +} + +#calendars .treelist div:hover a.subscribed, +#calendars .treelist div a.subscribed:focus { + background-position: 0 -110px; +} + +#calendars .treelist div.subscribed a.subscribed, +#calendars .treelist div.subscribed a.subscribed:focus { + background-position: -16px -110px; +} + +#calendars .treelist div.subscribed.partial a.subscribed, +#calendars .treelist div.subscribed.partial a.subscribed:focus { + background-position: -16px -148px; +} + +#calendars .treelist div a.remove:focus, +#calendars .treelist div a.quickview:focus, +#calendars .treelist div a.subscribed:focus { + border-radius: 3px; + outline: 2px solid rgba(30,150,192, 0.5); +} + +#calendars .treelist div a.remove, +#calendars .treelist div a.quickview { + display: inline-block; + width: 16px; + height: 16px; + margin-right: 4px; + padding: 0; + background: url(images/calendars.png) -100px 0 no-repeat; + overflow: hidden; + text-indent: -5000px; + cursor: pointer; +} + +#calendars .treelist div a.quickview:focus, +#calendars .treelist div:hover a.quickview { + background-position: 0 -128px; + background-color: transparent !important; +} + +#calendars .treelist div.focusview a.quickview { + background-position: -16px -128px; +} + +#calendars .treelist div a.remove:focus, +#calendars .treelist div:hover a.remove { + background-position: -16px -168px; + background-color: transparent !important; +} + +#calendars .searchresults .treelist div a.remove { + display: none; +} + +#calendars .treelist li input { + position: absolute; + top: 5px; + left: 18px; +} + +#calendars .treelist li div.treetoggle { + top: 8px; +} + +#calendars .treelist li.virtual div.treetoggle { + top: 6px; +} + +#calendars .treelist.flat li input { + left: 4px; +} + +#calendars .treelist ul li div.folder, +#calendars .treelist ul li div.calendar { + margin-left: 16px; +} + +#calendars .treelist ul ul li div.folder, +#calendars .treelist ul ul li div.calendar { + margin-left: 32px; +} + +#calendars .treelist ul ul ul li div.folder, +#calendars .treelist ul ul ul li div.calendar { + margin-left: 48px; +} + +#calendars .treelist li.selected > div.calendar { + background-color: #c7e3ef; +} + +#calendars .treelist li.selected > span.calname { + font-weight: bold; +} + +#calendars .treelist div.readonly span.calname { + background-position: right -20px; +} + +#calendars .treelist li.user > div > span.calname { + background-position: right -38px; +} +/* +#calendars .treelist div.user.readonly span.calname { + background-position: right -56px; +} + +#calendars .treelist div.shared span.calname { + background-position: right -74px; +} + +#calendars .treelist div.shared.readonly span.calname { + background-position: right -92px; +} +*/ + +#calendars .treelist .calendar .count { + position: absolute; + display: inline-block; + top: 5px; + right: 68px; + min-width: 1.3em; + padding: 2px 4px; + background: #005d76; + background: -moz-linear-gradient(top, #005d76 0%, #004558 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#005d76), color-stop(100%,#004558)); + background: -o-linear-gradient(top, #005d76 0%, #004558 100%); + background: -ms-linear-gradient(top, #005d76 0%, #004558 100%); + background: linear-gradient(to bottom, #005d76 0%, #004558 100%); + -webkit-box-shadow: inset 0 1px 1px 0 #002635; + box-shadow: inset 0 1px 1px 0 #002635; + border-radius: 10px; + color: #fff; + text-align: center; + font-style: normal; + font-weight: bold; + text-shadow: none; + z-index: 3; +} + +#calendars .searchresults { + background: #b0ccd7; + margin-top: 8px; +} + +#calendars .searchresults .boxtitle { + background: none; + padding: 2px 8px 2px 8px; +} + +#calendars .searchresults .listing li { + background-color: #c7e3ef; +} + +#calfeedurl, +#caldavurl { + 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; + left: 0; + height: 40px; + white-space: nowrap; +} + +#calendartoolbar a.button { + background-image: url(images/toolbar.png); + padding-left: 0; + padding-right: 0; + min-width: 50px; + max-width: 60px; +} + +#calendartoolbar a.button.addevent { + background-position: center 1px; + max-width: 70px; +} + +#calendartoolbar a.button.export { + background-position: center -40px; +} + +#calendartoolbar a.button.import { + background-position: center -440px; +} + +#calendartoolbar a.button.print { + background-position: center -80px; +} + +body.calendarmain #quicksearchbar { + z-index: 20; +} + +body.calendarmain #searchmenulink { + width: 15px; +} + +.calendarmain div.uidialog { + display: none; +} + +#user { + position: absolute; + top: 10px; + right: 100px; + left: 100px; + text-align: center; +} + +a.morelink { + font-size: 90%; + color: #0069a6; + text-decoration: none; +} + +a.morelink:hover { + text-decoration: underline; +} + +a.miniColors-trigger { + margin-top: -3px; +} + +.calendar.attachmentwin #attachmenttoolbar { + position: relative; + top: -6px; + height: 40px; +} + +.calendar.attachmentwin #attachmentcontainer { + position: absolute; + top: 0; + left: 232px; + right: 0; + bottom: 0; +} + +.calendar.attachmentwin #attachmentframe { + width: 100%; + height: 100%; + border: 0; + background-color: #fff; + border-radius: 4px; +} + +.calendar.attachmentwin #partheader { + position: absolute; + top: 0; + left: 0; + width: 220px; + bottom: 0; +} + +.calendar.attachmentwin #partheader table { + table-layout: fixed; + overflow: hidden; +} + +.calendar.attachmentwin #partheader table td { + color: #666; + padding: 4px 6px; + text-overflow: ellipsis; + overflow: hidden; +} + +.calendar.attachmentwin #partheader table td.header { + font-weight: bold; +} + +.calendar.attachmentwin #partheader table td.title { + width: 60px; + padding-right: 0; +} + +#edit-attachments { + margin: 0.6em 0; +} + +#edit-attachments ul li { + display: block; + color: #333; + font-weight: bold; + padding: 4px 4px 3px 30px; + text-shadow: 0px 1px 1px #fff; + text-decoration: none; + white-space: nowrap; + line-height: 20px; +} + +#edit-attachments ul li a.file { + padding: 0; +} + +#edit-attachments-form { + margin-top: 1em; + padding-top: 0.8em; + border-top: 2px solid #fafafa; +} + +#edit-attachments-form .formbuttons { + margin: 0.5em 0; +} + +#eventedit .droptarget { + background-image: url(../../../../skins/larry/images/filedrop.png) !important; + background-position: center bottom !important; + background-repeat: no-repeat !important; +} + +#eventedit .droptarget.hover, +#eventedit .droptarget.active { + border-color: #019bc6; + box-shadow: 0 0 3px 2px rgba(71,135,177, 0.5); + -moz-box-shadow: 0 0 3px 2px rgba(71,135,177, 0.5); + -webkit-box-shadow: 0 0 3px 2px rgba(71,135,177, 0.5); + -o-box-shadow: 0 0 3px 2px rgba(71,135,177, 0.5); +} + +#eventedit .droptarget.hover { + background-color: #d9ecf4; + box-shadow: 0 0 5px 2px rgba(71,135,177, 0.9); + -moz-box-shadow: 0 0 5px 2px rgba(71,135,177, 0.9); + -webkit-box-shadow: 0 0 5px 2px rgba(71,135,177, 0.9); + -o-box-shadow: 0 0 5px 2px rgba(71,135,177, 0.9); +} + +#event-attachments .attachmentslist li { + float: left; + margin-right: 1em; +} + +#event-attachments .attachmentslist li a { + outline: none; +} + +#event-panel-attachments.disabled .attachmentslist li a.delete { + visibility: hidden; +} + +.event-attendees span.attendee { + padding-right: 18px; + margin-right: 0.5em; + background: url(images/attendee-status.png) right 0 no-repeat; +} + +.event-attendees span.attendee a.mailtolink { + text-decoration: none; + white-space: nowrap; + outline: none; +} + +.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.delegated { + background-position: right -180px; +} + +.event-attendees span.organizer { + background-position: right -80px; +} + +#all-event-attendees span.attendee { + display: block; + margin-bottom: 0.4em; + padding-bottom: 0.3em; + border-bottom: 1px solid #ddd; +} + +.calendarmain .fc-view-table td.fc-list-header, +#attendees-freebusy-table h3.boxtitle, +#schedule-freebusy-times thead th, +.edit-attendees-table thead th + { + color: #69939e; + font-size: 11px; + font-weight: bold; + 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; + border-bottom: 1px solid #ccc; + height: 18px; + line-height: 18px; + padding: 8px 7px 3px 7px; +} + +/* jQuery UI overrides */ + +.calendarmain .eventdialog h1 { + font-size: 18px; + margin: -0.3em 0 0.4em 0; +} + +.calendarmain .eventdialog label, +.calendarmain .eventdialog h5.label { + font-weight: normal; + font-size: 1em; + color: #999; + margin: 0 0 0.2em 0; +} + +.calendarmain .eventdialog label span.index, +.calendarmain .eventdialog h5.label .index { + vertical-align: inherit; + margin-left: 0.6em; +} + +.calendarmain .eventdialog { + margin: 0 -0.2em; +} + +.calendarmain .eventdialog.status-cancelled { + background: url(images/badge_cancelled.png) top right no-repeat; +} + +.calendarmain .eventdialog.sensitivity-private { + background: url(images/badge_private.png) top right no-repeat; +} + +.calendarmain .eventdialog.sensitivity-confidential { + background: url(images/badge_confidential.png) top right no-repeat; +} + +.calendarmain .sensitivity-private #event-title { + margin-right: 50px; +} + +.calendarmain .sensitivity-confidential #event-title { + margin-right: 60px; +} + +.calendarmain .eventdialog div.event-line { + margin-top: 0.1em; + margin-bottom: 0.3em; +} + +.calendarmain .eventdialog div.event-line a.iconbutton { + margin-left: 0.5em; + line-height: 17px; +} + +.calendarmain .eventdialog div.event-line span.event-text + label { + margin-left: 2em; +} + +.calendarmain .eventdialog #event-rsvp-comment, +.calendarmain .eventdialog #event-created-changed { + margin-top: 0.6em; +} + +.eventdialog .event-text-old, +.eventdialog .event-text-new, +.eventdialog .event-text-diff { + padding: 2px; +} + +.eventdialog .event-text-diff del, +.eventdialog .event-text-diff ins { + text-decoration: none; + color: inherit; +} + +.eventdialog .event-text-old, +.eventdialog .event-text-diff del { + background-color: #fdd; + /* text-decoration: line-through; */ +} + +.eventdialog .event-text-new, +.eventdialog .event-text-diff ins { + background-color: #dfd; +} + +#eventdiff .attachmentslist li a, +#eventdiff .attachmentslist li a:hover { + cursor: default; + text-decoration: none; +} + +.changelog-table .loading { + color: #666; + margin: 1em 0; + padding: 1px 0 2px 24px; + background: url(images/loading_blue.gif) top left no-repeat; +} + +.changelog-dialog .compare-button { + margin: 4px 0; +} + +.changelog-table tbody td { + padding: 4px 7px; + vertical-align: middle; +} + +.changelog-table tbody tr:last-child td { + border-bottom: 0; +} + +.changelog-table tbody tr.undisclosed td.date, +.changelog-table tbody tr.undisclosed td.user { + font-style: italic; +} + +.changelog-table .diff { + width: 4em; + padding: 2px; +} + +.changelog-table .revision { + width: 6em; +} + +.changelog-table .date { + width: 11em; +} + +.changelog-table .user { + width: auto; +} + +.changelog-table .operation { + width: 15%; +} + +.changelog-table .actions { + width: 50px; + text-align: right; + padding: 4px; +} + +.changelog-table td a.iconbutton.restore, +.changelog-table td a.iconbutton.preview { + width: 16px; + margin-right: 2px; + background-image: url(images/calendars.png); + background-position: -1px -147px; +} + +.changelog-table td a.iconbutton.restore { + background-image: url(images/calendars.png); + background-position: -1px -167px; +} + +.changelog-table tr.first td a.iconbutton { + opacity: 0.3; + cursor: default; +} + +#event-partstat .changersvp { + cursor: pointer; + color: #333; + text-decoration: none; +} + +#event-partstat .iconbutton { + visibility: hidden; +} + +#event-partstat .changersvp:focus .iconbutton, +#event-partstat:hover .iconbutton { + visibility: visible; +} + +#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, +.calendarmain .eventdialog div.event-section, +#eventtabs div.event-section { + margin-top: 0.2em; + margin-bottom: 0.6em; +} + +#eventtabs .border-after { + padding-bottom: 0.8em; + margin-bottom: 0.8em; + border-bottom: 2px solid #fafafa; +} + +.calendarmain .eventdialog label, +#eventedit label, +.form-section label { + display: inline-block; + min-width: 7em; + padding-right: 0.5em; +} + +.calendarmain .eventdialog #event-url .event-text { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +#event-links .attachmentslist { + display: inline-block; +} + +#event-links label, +#edit-event-links label { + float: left; + margin-top: 0.3em; + padding-right: 0.75em; +} + +#edit-event-links .event-text { + margin-left: 8em; + min-height: 22px; +} + +#edit-event-links .attachmentslist li.message a.messagelink, +#event-links .attachmentslist li.message a.messagelink { + padding: 0 0 0 24px; +} + +#edit-event-links .attachmentslist li a.delete { + top: 0; + background-position: -6px -378px; +} + +#edit-event-links .attachmentslist li.deleted a.messagelink, +#edit-event-links .attachmentslist li.deleted a.messagelink:hover { + text-decoration: line-through; +} + +#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; +} + +#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; + border: 1px solid #ffdf0e; + background-color: #fef893; +} + +.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; + text-align: center; +} + +.libcal-rsvp-replymode li a { + cursor: default; +} + +#event-rsvp, +#edit-attendees-notify { + margin: 0.6em 0 0.3em 0; + padding: 0.5em; +} + +#event-rsvp .itip-reply-controls { + margin-top: 0.5em; +} + +#event-rsvp .itip-reply-controls label { + color: #333; +} + +#event-rsvp .itip-reply-controls textarea { + width: 95%; +} + +#eventedit .edit-attendees-table { + width: 100%; + margin-top: 0.5em; +} + +#eventedit .edit-attendees-table th.role, +#eventedit .edit-attendees-table td.role { + width: 9em; +} + +#eventedit .edit-attendees-table th.availability, +#eventedit .edit-attendees-table td.availability, +#eventedit .edit-attendees-table th.confirmstate, +#eventedit .edit-attendees-table td.confirmstate { + width: 4em; +} + +#eventedit .edit-attendees-table th.options, +#eventedit .edit-attendees-table td.options { + width: 16px; + padding: 2px 4px; +} + +#eventedit .edit-attendees-table th.invite, +#eventedit .edit-attendees-table td.invite { + width: 44px; + padding: 2px; +} + +#eventedit .edit-attendees-table th.invite label { + display: inline-block; + position: relative; + top: 4px; + width: 24px; + height: 18px; + min-width: 24px; + padding: 0; + overflow: hidden; + text-indent: -5000px; + white-space: nowrap; + background: url(images/sendinvitation.png) 1px 0 no-repeat; +} + +#eventedit .edit-attendees-table tbody tr:last-child td { + border-bottom: 0; +} + +#eventedit .edit-attendees-table th.name, +#eventedit .edit-attendees-table td.name { + width: auto; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +#eventedit .edit-attendees-table td.name select { + width: 100%; +} + +#eventedit .edit-attendees-table td.name .attendee-name { + display: block; + position: relative; + overflow: hidden; + text-overflow: ellipsis; + padding: 5px 7px 6px; + margin: -5px -7px -6px; +} + +#eventedit .edit-attendees-table a.deletelink { + display: inline-block; + width: 17px; + height: 17px; + padding: 0; + overflow: hidden; + text-indent: 1000px; +} + +#eventedit .edit-attendees-table a.expandlink { + position: absolute; + top: 4px; + right: 6px; + width: 16px; + height: 16px; +} + +#edit-attendees-form, +#edit-resources-form { + position: relative; + margin-top: 15px; +} + +#edit-attendees-form .attendees-invitebox { + text-align: right; + margin: 0; +} + +#edit-attendees-form .attendees-invitebox label { + padding-right: 3px; +} + +#edit-resources-form #edit-resource-find { + position: absolute; + top: 0; + right: 0; +} + +#edit-attendees-form #edit-attendee-schedule { + position: absolute; + right: 0; + top: 0; +} + +.edit-attendees-table select.edit-attendee-role { + border: 0; + padding: 2px; + background: white; + width: 100%; +} + +.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: #abd640; +} + +#schedule-freebusy-times td.busy, +.availability img.availabilityicon.busy { + background: #e26569; +} + +#schedule-freebusy-times td.tentative, +.availability img.availabilityicon.tentative { + background: #8383fc; +} + +#schedule-freebusy-times td.out-of-office, +.availability img.availabilityicon.out-of-office { + background: #fbaa68; +} + +#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.png) 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; +} + +.edit-attendees-table td.confirmstate span.delegated { + background-position: 5px -180px; +} + +#attendees-freebusy-table { + width: 100%; + table-layout: fixed; + border: 1px solid #bbd3da; +} + +#attendees-freebusy-table td.attendees { + width: 18em; + vertical-align: top; + overflow: hidden; +} + +#attendees-freebusy-table td.times { + width: auto; + vertical-align: top; +} + +#attendees-freebusy-table div.scroll { + position: relative; + overflow: auto; +} + +#attendees-freebusy-table h3.boxtitle { + margin: 0; + border-color: #ccc; +} + +.attendees-list .attendee { + padding: 4px 4px 4px 1px; + background: url(images/attendee-status.png) 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 .non-participant { + background-position: 2px -137px; +} + +.attendees-list .chair { + background-position: 2px -157px; +} + +.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: 4px; + border: 1px solid #ccc; +} + +#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; + color: #004658; +} + +#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.5em; + right: 0; + margin-right: 0; +} + +#eventfreebusy .schedule-find-buttons { + padding-bottom:0.5em; +} + +#eventfreebusy .schedule-find-buttons button { + min-width: 9em; + text-align: center; +} + +#eventedit .attendees-commentbox label { + display: block; +} + +#eventedit .ui-tabs-panel { + min-height: 24em; +} + +#rcmKSearchpane ul li.resource i.icon, +#rcmKSearchpane ul li.collection i.icon { + background-image: url(images/autocomplete.png); + background-position: -1px -2px; +} + +#rcmKSearchpane ul li.collection i.icon { + background-position: -1px -26px; +} + +a.dropdown-link { + font-size: 11px; + text-decoration: none; +} + +a.dropdown-link:after { + content: ' â–¼'; + font-size: 10px; + color: #666; +} + +.ui-dialog-buttonset a.dropdown-link { + position: relative; + top: 2px; + margin: 0 1em; + color: #333; +} + +#calendarsidebar .ui-datepicker-calendar { + table-layout: fixed; +} + +.ui-datepicker-calendar .ui-datepicker-week-col { + border: 0; + color: #999; + font-size: 90%; + text-align: right; + padding-right: 6px; + width: 20px; + overflow: hidden; +} + +.ui-autocomplete { + max-height: 160px; + overflow-y: auto; + overflow-x: hidden; +} + +.ui-autocomplete .ui-menu-item { + white-space: nowrap; +} + +* html .ui-autocomplete { + height: 160px; +} + +.calendarmain span.spacer { + padding-left: 3em; +} + +#agendaoptions { + position: absolute; + bottom: 0; + left: 0; + right: 0; + height: auto; + z-index: 10; + padding: 4px 5px; + border: 1px solid #c3c3c3; + border-top-color: #ddd; + border-bottom-color: #bbb; + border-radius: 0 0 4px 4px; + background: #ebebeb; + background: -moz-linear-gradient(top, #ebebeb 0%, #c6c6c6 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ebebeb), color-stop(100%,#c6c6c6)); + background: -o-linear-gradient(top, #ebebeb 0%, #c6c6c6 100%); + background: -ms-linear-gradient(top, #ebebeb 0%, #c6c6c6 100%); + background: linear-gradient(top, #ebebeb 0%, #c6c6c6 100%); +} + +#agendaoptions label { + text-shadow: 1px 1px #fff; + padding-right: 0.5em; +} + +#calendar-kolabform { + position: relative; + margin: 0 -8px; + min-width: 660px; + min-height: 400px; +} + +#calendar-kolabform table td.title { + font-weight: bold; + white-space: nowrap; + color: #666; + padding-right: 10px; +} + +#resource-selection { + position: absolute; + top: 0; + left: 8px; + right: 0; + bottom: 0; +} + +#resource-selection .scroller { + top: 34px; +} + +#resource-dialog-left { + position: absolute; + top: 10px; + left: 0; + width: 380px; + bottom: 10px; +} + +#resource-dialog-right { + position: absolute; + top: 10px; + left: 392px; + right: 8px; + bottom: 10px; +} + +#resource-info { + position: absolute; + top: 0; + left: 0; + right: 0; + height: 48%; +} + +#resource-info table { + margin: 8px; + width: 97%; +} + +#resource-info thead td { + background: none; + font-weight: bold; + font-size: 14px; +} + +#resource-availability { + position: absolute; + bottom: 0; + left: 0; + right: 0; + height: 49%; +} + +#resource-freebusy-calendar { + position: absolute; + top: 33px; + left: -1px; + right: -1px; + bottom: -1px; +} + +#resource-freebusy-calendar .fc-content { + top: 0; +} + +#resource-freebusy-calendar .fc-content .fc-event-bg { + background: 0; +} + +#resource-freebusy-calendar .fc-event.status-busy, +#resource-freebusy-calendar .status-busy .fc-event-skin { + border-color: #e26569; + background-color: #e26569; +} + +#resource-freebusy-calendar .fc-event.status-tentative, +#resource-freebusy-calendar .status-tentative .fc-event-skin { + border-color: #8383fc; + background: #8383fc; +} + +#resource-freebusy-calendar .fc-event.status-outofoffice, +#resource-freebusy-calendar .status-outofoffice .fc-event-skin { + border-color: #fbaa68; + background: #fbaa68; +} + +#resourcequicksearch { + padding: 4px; + background: #c7e3ef; +} + +#resourcesearchbox { + width: 100%; + height: 26px; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +#resourcequicksearch .iconbutton.searchoptions { + position: absolute; + top: 5px; + left: 6px; + width: 16px; +} + +.searchbox .iconbutton.reset { + position: absolute; + top: 4px; + right: 1px; +} + + + +/* fullcalendar style overrides */ + +.rcube-fc-content { + overflow: hidden; + border: 0; + border-radius: 4px; + 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; +} + +.calendarmain .fc-content { + position: absolute !important; + top: 40px; + left: 0; + right: 0; + bottom: 0; + background: #fff; +} + +.calendarmain.quickview-active .fc-content { + background-image: url('images/focusview.png'); + background-position: center; + background-repeat: no-repeat; +} + +#fish-eye-view .fc-content { + top: 2px; + bottom: 2px; +} + +#quickview-calendar { + padding: 8px; + overflow: hidden; +} + +.calendarmain .fc-button, +.calendarmain .fc-button.fc-state-default, +.calendarmain .fc-button.fc-state-hover { + background-color: #f5f5f5; + background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); + background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); + background-position: 0 0; +} + +.calendarmain #calendar .fc-button, +.calendarmain #calendar .fc-button.fc-state-default, +.calendarmain #calendar .fc-button.fc-state-hover { + margin: 0 0 0 0; + height: 20px; + line-height: 20px; + color: #505050; + text-shadow: 0px 1px 1px #fff; + border: 1px solid #e6e6e6; + background: #d8d8d8; + background: -moz-linear-gradient(top, #d8d8d8 0%, #bababa 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#d8d8d8), color-stop(100%,#bababa)); + background: -o-linear-gradient(top, #d8d8d8 0%, #bababa 100%); + background: -ms-linear-gradient(top, #d8d8d8 0%, #bababa 100%); + background: linear-gradient(top, #d8d8d8 0%, #bababa 100%); + box-shadow: 0 1px 1px 0 #999; + -o-box-shadow: 0 1px 1px 0 #999; + -webkit-box-shadow: 0 1px 1px 0 #999; + -moz-box-shadow: 0 1px 1px 0 #999; + text-decoration: none; +} + +.calendarmain #calendar .fc-button.fc-state-disabled { + color: #999; + background: #d8d8d8; +} + +.calendarmain .fc-button.fc-state-active, +.calendarmain .fc-button.fc-state-down, +.calendarmain #calendar .fc-button.fc-state-active, +.calendarmain #calendar .fc-button.fc-state-down { + 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 #calendar .fc-header .fc-button { + margin-left: -1px; + margin-right: 0; +} + +.calendarmain #calendar .fc-header-left .fc-button { + display: inline-block; + margin: 0; + text-align: center; + font-size: 10px; + color: #555; + min-width: 50px; + max-width: 75px; + height: 13px; + line-height: 1em; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + margin: -7px 0 0 0; + padding: 28px 2px 0 2px; + text-shadow: 0px 1px 1px #EEE; + border: 0; + background: url(images/toolbar.png) center 100px no-repeat; + box-shadow: none; + -o-box-shadow: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + outline: none; +} + +.calendarmain #calendar .fc-header-left .fc-button:focus { + color: #fff; + text-shadow: 0px 1px 1px #666; + background-color: rgba(30,150,192, 0.5); + border-radius: 3px; +} + +.calendarmain #calendar .fc-header-left .fc-button.fc-state-active { + font-weight: bold; + color: #222; + text-shadow: none; + background-color: transparent; +} + +.calendarmain #calendar .fc-header-left .fc-button-agendaDay { + background-position: center -120px; +} + +.calendarmain #calendar .fc-header-left .fc-button-agendaDay.fc-state-active { + background-position: center -160px; +} + +.calendarmain #calendar .fc-header-left .fc-button-agendaWeek { + background-position: center -200px; +} + +.calendarmain #calendar .fc-header-left .fc-button-agendaWeek.fc-state-active { + background-position: center -240px; +} + +.calendarmain #calendar .fc-header-left .fc-button-month { + background-position: center -280px; +} + +.calendarmain #calendar .fc-header-left .fc-button-month.fc-state-active { + background-position: center -320px; +} + +.calendarmain #calendar .fc-header-left .fc-button-table { + background-position: center -360px; +} + +.calendarmain #calendar .fc-header-left .fc-button-table.fc-state-active { + background-position: center -400px; +} + +.calendarmain #calendar .fc-header-right { + padding-right: 252px; + padding-top: 4px; +} + +.calendarmain #calendar .fc-header-title { + padding-top: 5px; +} + +.fc-event { + font-size: 1em !important; +} + +.fc-event-hori.fc-type-freebusy, +.fc-event-vert.fc-type-freebusy { + opacity: 0.60; +/* + color: #fff !important; + background: rgba(80,80,80,0.85) !important; + background: -moz-linear-gradient(top, rgba(80,80,80,0.85) 0%, rgba(48,48,48,0.9) 100%) !important; + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(80,80,80,0.85)), color-stop(100%,rgba(48,48,48,0.9))) !important; + background: -webkit-linear-gradient(top, rgba(80,80,80,0.85) 0%, rgba(48,48,48,0.85) 100%) !important; + background: -o-linear-gradient(top, rgba(80,80,80,0.85) 0%, rgba(48,48,48,0.85) 100%) !important; + background: -ms-linear-gradient(top, rgba(80,80,80,0.85) 0%, rgba(48,48,48,0.85) 100%) !important; + background: linear-gradient(to bottom, rgba(80,80,80,0.85) 0%, rgba(48,48,48,0.85) 100%) !important; + border-color: #444 !important; + cursor: default !important; +*/ + -moz-box-shadow: inset 0px 1px 0 0px #888; + -webkit-box-shadow: inset 0px 1px 0 0px #888; + -o-box-shadow: inset 0px 1px 0 0px #888; + box-shadow: inset 0px 1px 0 0px #888; +} + +.fc-event-row.fc-type-freebusy td { + color: #999; +} + +.fc-event-hori.fc-type-freebusy .fc-event-skin, +.fc-event-hori.fc-type-freebusy .fc-event-inner, +.fc-event-vert.fc-type-freebusy .fc-event-skin, +.fc-event-vert.fc-type-freebusy .fc-event-inner { +/* + background-color: transparent !important; + border-color: #444 !important; + color: #fff !important; + text-shadow: 0 1px 1px #000; +*/ +} + +.fc-event-hori.fc-type-freebusy .fc-event-title, +.fc-event-vert.fc-type-freebusy .fc-event-title { + position: absolute; + top: -5000px; +} + +.fc-event-vert.fc-invitation-needs-action, +.fc-event-hori.fc-invitation-needs-action { + border: 1px dashed #5757c7 !important; +} + +.fc-event-vert.fc-invitation-tentative, +.fc-event-hori.fc-invitation-tentative { + border: 1px dashed #eb8900 !important; +} + +.fc-event-vert.fc-invitation-declined, +.fc-event-hori.fc-invitation-declined { + border: 1px dashed #c00 !important; +} + +.fc-event-vert.fc-event-ns-other.fc-invitation-declined, +.fc-event-hori.fc-event-ns-other.fc-invitation-declined { + opacity: 0.7; +} + +.fc-event-ns-other.fc-invitation-declined .fc-event-title { + text-decoration: line-through; +} + +.fc-event-vert.fc-invitation-tentative .fc-event-head, +.fc-event-vert.fc-invitation-declined .fc-event-head, +.fc-event-vert.fc-invitation-needs-action .fc-event-head { +/* background-color: transparent !important; */ +} + +.fc-event-vert.fc-invitation-tentative .fc-event-bg { + background: url(data:image/gif;base64,R0lGODlhCAAIAPABAOuJAP///yH/C1hNUCBEYXRhWE1QAT8AIfkEBQAAAQAsAAAAAAgACAAAAg4Egmipx+ZaDPCtVPFNBQA7) 0 0 repeat #fff; +} + +.fc-event-vert.fc-invitation-needs-action .fc-event-bg { + background: url(data:image/gif;base64,R0lGODlhCAAIAPABAFdXx////yH/C1hNUCBEYXRhWE1QAT8AIfkEBQAAAQAsAAAAAAgACAAAAg4Egmipx+ZaDPCtVPFNBQA7) 0 0 repeat #fff; +} + +.fc-event-vert.fc-invitation-declined .fc-event-bg { + background: url(data:image/gif;base64,R0lGODlhCAAIAPABAMwAAP///yH/C1hNUCBEYXRhWE1QAT8AIfkEBQAAAQAsAAAAAAgACAAAAg4Egmipx+ZaDPCtVPFNBQA7) 0 0 repeat #fff; +} + +.fc-view-table tr.fc-invitation-tentative td, +.fc-view-table tr.fc-invitation-declined td, +.fc-view-table tr.fc-invitation-needs-action td { + color: #888; +} + +.fc-view-table tr.fc-invitation-tentative td.fc-event-title, +.fc-view-table tr.fc-invitation-declined td.fc-event-title, +.fc-view-table tr.fc-invitation-needs-action td.fc-event-title { + font-weight: normal; +} + +#quickview-calendar .fc-view-table tr.fc-invitation-tentative td, +#quickview-calendar .fc-view-table tr.fc-invitation-declined td, +#quickview-calendar .fc-view-table tr.fc-invitation-needs-action td { + color: #333; +} + +.calendarmain .fc-event:focus { + outline: 1px solid rgba(71,135,177, 0.4); + -webkit-box-shadow: 0 0 2px 3px rgba(71,135,177, 0.6); + -moz-box-shadow: 0 0 2px 3px rgba(71,135,177, 0.6); + -o-box-shadow: 0 0 2px 3px rgba(71,135,177, 0.6); + box-shadow: 0 0 2px 3px rgba(71,135,177, 0.6); +} +.fc-event-title { + font-weight: bold; +} + +.cal-event-status-cancelled .fc-event-title { + text-decoration: line-through; +} + +.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; +} + +.calendarmain .fc-event-vert .fc-event-inner { + z-index: 0; +} + +.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: rgba(198,198,198, 0.08); +} + +.calendarmain .fc-state-highlight { + background-color: rgba(233,198,14, 0.12); +} + +.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.png) 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; +} + +.calendarmain .fc-view-table td.fc-list-header { + color: #004458; + font-size: 12px; +} + +.calendarmain .fc-view-table tr.fc-event td { + border-color: #ddd; + padding: 4px 7px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.calendarmain .fc-view-table tr.fc-event td.fc-event-handle { + padding: 5px 0 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; + margin: -1px; + 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); +} + +.calendarmain .fc-view-table col.fc-event-location { + width: 25%; +} + +.fc-view-table table.fc-list-smart { +/* table-layout: auto; */ +} + +.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 */ + +.messagelist tbody .attachment span.ical { + display: inline-block; + vertical-align: middle; + height: 18px; + width: 20px; + padding: 0; + background: url(images/ical-attachment.png) 2px 1px no-repeat; +} + +ul.toolbarmenu li a.calendarlink span.calendar, +#attachmentmenu li a.calendarlink span.calendar { + background-position: 0px -2197px; +} + +div.calendar-invitebox { + min-height: 20px; + margin: 5px 8px; + padding: 3px 6px 6px 34px; + border: 1px solid #ffdf0e; + background: url(images/calendar.png) 6px 5px no-repeat #fef893; +} + +div.calendar-invitebox td.ititle { + font-weight: bold; + padding-right: 0.5em; +} + +div.calendar-invitebox td { + padding: 2px; +} + +div.calendar-invitebox td.label { + color: #666; + padding-right: 1em; +} + +div.calendar-invitebox td.sensitivity { + color: #d31400; + font-weight: bold; +} + +div.calendar-invitebox td.recurrence-id { + text-transform: uppercase; + font-style: italic; +} + +div.calendar-invitebox td em { + font-weight: bold; +} + +#event-rsvp .rsvp-buttons, +div.calendar-invitebox .itip-buttons div { + margin-top: 0.5em; +} + +#event-rsvp input.button, +div.calendar-invitebox input.button { + font-weight: bold; + margin-right: 0.5em; +} + +div.calendar-invitebox input.button.preview { + margin-left: 1em; + margin-right: 0; +} + +div.calendar-invitebox .folder-select { + font-weight: 10px; + margin-left: 1em; + white-space: nowrap; +} + +div.calendar-invitebox .rsvp-status { + padding-left: 2px; +} + +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.hint { + color: #666; + text-shadow: none; + font-style: italic; +} + +#event-partstat .changersvp, +div.calendar-invitebox .rsvp-status.declined, +div.calendar-invitebox .rsvp-status.tentative, +div.calendar-invitebox .rsvp-status.accepted, +div.calendar-invitebox .rsvp-status.delegated, +div.calendar-invitebox .rsvp-status.needs-action { + padding: 0 0 1px 22px; + background: url(images/attendee-status.png) 2px -20px no-repeat; +} + +#event-partstat .changersvp.declined, +div.calendar-invitebox .rsvp-status.declined { + background-position: 2px -40px; +} + +#event-partstat .changersvp.tentative, +div.calendar-invitebox .rsvp-status.tentative { + background-position: 2px -60px; +} + +#event-partstat .changersvp.delegated, +div.calendar-invitebox .rsvp-status.delegated { + background-position: 2px -180px; +} + +#event-partstat .changersvp.needs-action, +div.calendar-invitebox .rsvp-status.needs-action { + background-position: 2px 0; +} + +div.calendar-invitebox .calendar-agenda-preview { + display: none; + border-top: 1px solid #dfdfdf; + margin-top: 1em; + padding-top: 0.6em; +} + +div.calendar-invitebox .calendar-agenda-preview h3.preview-title { + margin: 0 0 0.5em 0; + font-size: 12px; + color: #333; +} + +div.calendar-invitebox .calendar-agenda-preview .event-row { + color: #777; + padding: 2px 0; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +div.calendar-invitebox .calendar-agenda-preview .event-row.current { + color: #333; + font-weight: bold; +} + +div.calendar-invitebox .calendar-agenda-preview .event-row.no-event { + font-style: italic; +} + +div.calendar-invitebox .calendar-agenda-preview .event-date { + display: inline-block; + min-width: 8em; + margin-right: 1em; + white-space: nowrap; +} + + +/* iTIP attend reply page */ + +.calendaritipattend .centerbox { + width: 40em; + min-height: 7em; + margin: 80px auto 0 auto; + padding: 10px 10px 10px 90px; + background: url(images/invitation.png) 10px 10px no-repeat #fff; +} + +.calendaritipattend #message { + width: 46em; + margin: 0 auto; + padding: 10px; +} + +.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%; +} + +.calendaritipattend .itip-reply-controls .noreply-toggle, +.calendaritipattend .itip-reply-controls #noreply-event-rsvp { + display: none; +} + +.calendaritipattend .itip-reply-controls a.reply-comment-toggle { + margin-left: 2px; +} + diff --git a/calendar/skins/larry/fullcalendar.css b/calendar/skins/larry/fullcalendar.css new file mode 100644 index 0000000..daefdf2 --- /dev/null +++ b/calendar/skins/larry/fullcalendar.css @@ -0,0 +1,711 @@ +/*! + * FullCalendar v1.6.4-rcube-1.0 Stylesheet + * Docs & License: http://arshaw.com/fullcalendar/ + * (c) 2013 Adam Shaw, 2014 Kolab Systems AG + */ + + +.fc { + direction: ltr; + text-align: left; + } + +.fc table { + border-collapse: collapse; + border-spacing: 0; + } + +html .fc, +.fc table { + font-size: 1em; + } + +.fc td, +.fc th { + padding: 0; + vertical-align: top; + } + + + +/* Header +------------------------------------------------------------------------*/ + +.fc-header td { + white-space: nowrap; + } + +.fc-header-left { + width: 25%; + text-align: left; + } + +.fc-header-center { + text-align: center; + } + +.fc-header-right { + width: 25%; + text-align: right; + } + +.fc-header-title { + display: inline-block; + vertical-align: top; + } + +.fc-header-title h2 { + margin-top: 0; + white-space: nowrap; + } + +.fc .fc-header-space { + padding-left: 10px; + } + +.fc-header .fc-button { + margin-bottom: 1em; + vertical-align: top; + } + +/* buttons edges butting together */ + +.fc-header .fc-button { + margin-right: -1px; + } + +.fc-header .fc-corner-right, /* non-theme */ +.fc-header .ui-corner-right { /* theme */ + margin-right: 0; /* back to normal */ + } + +/* button layering (for border precedence) */ + +.fc-header .fc-state-hover, +.fc-header .ui-state-hover { + z-index: 2; + } + +.fc-header .fc-state-down { + z-index: 3; + } + +.fc-header .fc-state-active, +.fc-header .ui-state-active { + z-index: 4; + } + + + +/* Content +------------------------------------------------------------------------*/ + +.fc-content { + clear: both; + zoom: 1; /* for IE7, gives accurate coordinates for [un]freezeContentHeight */ + } + +.fc-view { + width: 100%; + overflow: hidden; + } + + + +/* Cell Styles +------------------------------------------------------------------------*/ + +.fc-widget-header, /* <th>, usually */ +.fc-widget-content { /* <td>, usually */ + border: 1px solid #ddd; + } + +.fc-state-highlight { /* <td> today cell */ /* TODO: add .fc-today to <th> */ + background: #fcf8e3; + } + +.fc-cell-overlay { /* semi-transparent rectangle while dragging */ + background: #bce8f1; + opacity: .3; + filter: alpha(opacity=30); /* for IE */ + } + + + +/* Buttons +------------------------------------------------------------------------*/ + +.fc-button { + position: relative; + display: inline-block; + padding: 0 .6em; + overflow: hidden; + height: 1.9em; + line-height: 1.9em; + white-space: nowrap; + cursor: pointer; + } + +.fc-state-default { /* non-theme */ + border: 1px solid; + } + +.fc-state-default.fc-corner-left { /* non-theme */ + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + } + +.fc-state-default.fc-corner-right { /* non-theme */ + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + } + +/* + Our default prev/next buttons use HTML entities like ‹ › « » + and we'll try to make them look good cross-browser. +*/ + +.fc-text-arrow { + margin: 0 .1em; + font-size: 2em; + font-family: "Courier New", Courier, monospace; + vertical-align: baseline; /* for IE7 */ + } + +.fc-button-prev .fc-text-arrow, +.fc-button-next .fc-text-arrow { /* for ‹ › */ + font-weight: bold; + } + +/* icon (for jquery ui) */ + +.fc-button .fc-icon-wrap { + position: relative; + float: left; + top: 50%; + } + +.fc-button .ui-icon { + position: relative; + float: left; + margin-top: -50%; + *margin-top: 0; + *top: -50%; + } + +/* + button states + borrowed from twitter bootstrap (http://twitter.github.com/bootstrap/) +*/ + +.fc-state-default { + background-color: #f5f5f5; + background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); + background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); + background-repeat: repeat-x; + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + color: #333; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + } + +.fc-state-hover, +.fc-state-down, +.fc-state-active, +.fc-state-disabled { + color: #333333; + background-color: #e6e6e6; + } + +.fc-state-hover { + color: #333333; + text-decoration: none; + background-position: 0 -15px; + -webkit-transition: background-position 0.1s linear; + -moz-transition: background-position 0.1s linear; + -o-transition: background-position 0.1s linear; + transition: background-position 0.1s linear; + } + +.fc-state-down, +.fc-state-active { + background-color: #cccccc; + background-image: none; + outline: 0; + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + } + +.fc-state-disabled { + cursor: default; + background-image: none; + opacity: 0.65; + filter: alpha(opacity=65); + box-shadow: none; + } + + + +/* Global Event Styles +------------------------------------------------------------------------*/ + +.fc-event-container > * { + z-index: 8; + } + +.fc-event-container > .ui-draggable-dragging, +.fc-event-container > .ui-resizable-resizing { + z-index: 9; + } + +.fc-event { + border: 1px solid #3a87ad; /* default BORDER color */ + background-color: #3a87ad; /* default BACKGROUND color */ + color: #fff; /* default TEXT color */ + font-size: .85em; + cursor: default; + } + +.fc-event:focus { + outline: 2px solid ActiveBorder; + } + +a.fc-event { + text-decoration: none; + } + +a.fc-event, +.fc-event-draggable { + cursor: pointer; + } + +.fc-rtl .fc-event { + text-align: right; + } + +.fc-event-inner { + width: 100%; + height: 100%; + overflow: hidden; + } + +.fc-event-time, +.fc-event-title { + padding: 0 1px; + } + +.fc .ui-resizable-handle { + display: block; + position: absolute; + z-index: 99999; + overflow: hidden; /* hacky spaces (IE6/7) */ + font-size: 300%; /* */ + line-height: 50%; /* */ + } + + + +/* Horizontal Events +------------------------------------------------------------------------*/ + +.fc-event-hori { + border-width: 1px 0; + margin-bottom: 1px; + } + +.fc-ltr .fc-event-hori.fc-event-start, +.fc-rtl .fc-event-hori.fc-event-end { + border-left-width: 1px; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + } + +.fc-ltr .fc-event-hori.fc-event-end, +.fc-rtl .fc-event-hori.fc-event-start { + border-right-width: 1px; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + } + +/* resizable */ + +.fc-event-hori .ui-resizable-e { + top: 0 !important; /* importants override pre jquery ui 1.7 styles */ + right: -3px !important; + width: 7px !important; + height: 100% !important; + cursor: e-resize; + } + +.fc-event-hori .ui-resizable-w { + top: 0 !important; + left: -3px !important; + width: 7px !important; + height: 100% !important; + cursor: w-resize; + } + +.fc-event-hori .ui-resizable-handle { + _padding-bottom: 14px; /* IE6 had 0 height */ + } + + + +/* Reusable Separate-border Table +------------------------------------------------------------*/ + +table.fc-border-separate { + border-collapse: separate; + } + +.fc-border-separate th, +.fc-border-separate td { + border-width: 1px 0 0 1px; + } + +.fc-border-separate th.fc-last, +.fc-border-separate td.fc-last { + border-right-width: 1px; + } + +.fc-border-separate tr.fc-last th, +.fc-border-separate tr.fc-last td { + border-bottom-width: 1px; + } + +.fc-border-separate tbody tr.fc-first td, +.fc-border-separate tbody tr.fc-first th { + border-top-width: 0; + } + + + +/* Month View, Basic Week View, Basic Day View +------------------------------------------------------------------------*/ + +.fc-grid th { + text-align: center; + } + +.fc .fc-week-number { + width: 22px; + text-align: center; + } + +.fc .fc-week-number div { + padding: 0 2px; + } + +.fc-grid .fc-day-number { + float: right; + padding: 0 2px; + } + +.fc-grid .fc-other-month .fc-day-number { + opacity: 0.3; + filter: alpha(opacity=30); /* for IE */ + /* opacity with small font can sometimes look too faded + might want to set the 'color' property instead + making day-numbers bold also fixes the problem */ + } + +.fc-grid .fc-day-content { + clear: both; + padding: 2px 2px 1px; /* distance between events and day edges */ + } + +/* event styles */ + +.fc-grid .fc-event-time { + font-weight: bold; + } + +/* right-to-left */ + +.fc-rtl .fc-grid .fc-day-number { + float: left; + } + +.fc-rtl .fc-grid .fc-event-time { + float: right; + } + +.fc-more-link { + font-size: 0.85em; + white-space: nowrap; + text-decoration: none; + cursor: pointer; + padding: 1px; +} + +/* Agenda Week View, Agenda Day View +------------------------------------------------------------------------*/ + +.fc-agenda table { + border-collapse: separate; + } + +.fc-agenda-days th { + text-align: center; + } + +.fc-agenda .fc-agenda-axis { + width: 50px; + padding: 0 4px; + vertical-align: middle; + text-align: right; + white-space: nowrap; + font-weight: normal; + } + +.fc-agenda .fc-week-number { + font-weight: bold; + } + +.fc-agenda .fc-day-content { + padding: 2px 2px 1px; + } + +/* make axis border take precedence */ + +.fc-agenda-days .fc-agenda-axis { + border-right-width: 1px; + } + +.fc-agenda-days .fc-col0 { + border-left-width: 0; + } + +/* all-day area */ + +.fc-agenda-allday th { + border-width: 0 1px; + } + +.fc-agenda-allday .fc-day-content { + min-height: 34px; /* TODO: doesnt work well in quirksmode */ + _height: 34px; + } + +/* divider (between all-day and slots) */ + +.fc-agenda-divider-inner { + height: 2px; + overflow: hidden; + } + +.fc-widget-header .fc-agenda-divider-inner { + background: #eee; + } + +/* slot rows */ + +.fc-agenda-slots th { + border-width: 1px 1px 0; + } + +.fc-agenda-slots td { + border-width: 1px 0 0; + background: none; + } + +.fc-agenda-slots td div { + height: 20px; + } + +.fc-agenda-slots tr.fc-slot0 th, +.fc-agenda-slots tr.fc-slot0 td { + border-top-width: 0; + } + +.fc-agenda-slots tr.fc-minor th, +.fc-agenda-slots tr.fc-minor td { + border-top-style: dotted; + } + +.fc-agenda-slots tr.fc-minor th.ui-widget-header { + *border-top-style: solid; /* doesn't work with background in IE6/7 */ + } + + + +/* Vertical Events +------------------------------------------------------------------------*/ + +.fc-event-vert { + border-width: 0 1px; + } + +.fc-event-vert .fc-event-head, +.fc-event-vert .fc-event-content { + position: relative; + z-index: 2; + width: 100%; + overflow: hidden; + } + +.fc-event-vert.fc-event-start { + border-top-width: 1px; + border-top-left-radius: 3px; + border-top-right-radius: 3px; + } + +.fc-event-vert.fc-event-end { + border-bottom-width: 1px; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; + } + +.fc-event-vert .fc-event-time { + white-space: nowrap; + font-size: 10px; + } + +.fc-event-vert .fc-event-inner { + position: relative; + z-index: 2; + } + +.fc-event-vert .fc-event-bg { /* makes the event lighter w/ a semi-transparent overlay */ + position: absolute; + z-index: 1; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: #fff; + opacity: .25; + filter: alpha(opacity=25); + } + +.fc .ui-draggable-dragging .fc-event-bg, /* TODO: something nicer like .fc-opacity */ +.fc-select-helper .fc-event-bg { + display: none\9; /* for IE6/7/8. nested opacity filters while dragging don't work */ + } + +/* resizable */ + +.fc-event-vert .ui-resizable-s { + bottom: 0 !important; /* importants override pre jquery ui 1.7 styles */ + width: 100% !important; + height: 8px !important; + overflow: hidden !important; + line-height: 8px !important; + font-size: 11px !important; + font-family: monospace; + text-align: center; + cursor: s-resize; + } + +.fc-agenda .ui-resizable-resizing { /* TODO: better selector */ + _overflow: hidden; + } + +.fc-timeline { + position: absolute; + width: 100%; + left: 0; + margin: 0; + padding: 0; + border: none; + border-top: 2px solid #3ec400; + z-index: 999; +} + +/* List view (by bruederli@kolabsys.com) +------------------------------------------------------------------------*/ + +.fc-view-list, +.fc-view-table { + border: 1px solid #ccc; + width: auto; +} + +.fc-view-list .fc-list-header, +.fc-view-table td.fc-list-header { + border-width: 0; + border-bottom-width: 1px; + padding: 3px 5px; +} + +.fc-view-table .fc-first td.fc-list-header { + border-top-width: 0; +} + +.fc-list-section { + padding: 4px 2px; + border-width: 0; + border-bottom-width: 1px; +} + +.fc-view-list .fc-last { + border-bottom-width: 0; +} + +.fc-list-section .fc-event { + position: relative; + margin: 1px 2px 3px 2px; +} + +.fc-view-table tr.fc-event { + background: inherit; + color: inherit; +} + +.fc-view-table tr.fc-event td { + padding: 2px; + border-bottom: 1px solid #ccc; +} + +.fc-view-table tr.fc-event td.fc-event-handle { + padding: 3px 8px 3px 3px; +} + +.fc-view-table .fc-event-handle .fc-event-skin { + border-radius: 2px; + -moz-border-radius: 2px; +} + +.fc-view-table .fc-event-handle .fc-event-inner { + display: block; + width: 8px; + height: 10px; + border-radius: 2px; + -moz-border-radius: 2px; +} + +.fc-view-table table { + table-layout: fixed; + width: 100%; +} + +.fc-view-table col.fc-event-handle { + width: 18px; +} + +.fc-event-handle .fc-event-inner { + border-color: inherit; + background-color: inherit; +} + +.fc-view-table col.fc-event-date { + width: 7em; +} + +.fc-view-table .fc-list-day col.fc-event-date { + width: 1px; +} + +.fc-view-table col.fc-event-time { + width: 9em; +} + +.fc-view-table td.fc-event-date, +.fc-view-table td.fc-event-time { + white-space: nowrap; + padding-right: 1em; +} + diff --git a/calendar/skins/larry/iehacks.css b/calendar/skins/larry/iehacks.css new file mode 100644 index 0000000..d6e122d --- /dev/null +++ b/calendar/skins/larry/iehacks.css @@ -0,0 +1,77 @@ +/* CSS hacks for IE 7 */ + +#calendarsidebar, +#calendarsidebartoggle { + height: expression((parseInt(this.parentNode.offsetHeight)-37)+'px'); +} + +#calendar { + width: expression((parseInt(this.parentNode.offsetWidth)-parseInt(document.getElementById('calendarsidebartoggle').offsetWidth)-parseInt(document.getElementById('calendarsidebartoggle').offsetLeft)-4)+'px'); + height: expression((parseInt(this.parentNode.offsetHeight)-30)+'px'); +} + +#calendars { + height: expression((parseInt(this.parentNode.offsetHeight)-240)+'px'); +} + +#agendaoptions { + width: expression((parseInt(this.parentNode.offsetWidth)-12)+'px'); +} + +#calendartoolbar a.buttonPas { + filter: alpha(opacity=35); +} + +#datepicker a.ui-priority-secondary { + filter: alpha(opacity=40); +} + +.calendarmain .fc-day-content { + cursor: default; +} + +.calendarmain .fc-view-table col.fc-event-date { + width: 8em; +} + +.calendarmain .fc-view-table col.fc-event-time { + width: 9em; +} + +.calendarmain .fc-header-title h2 { + font-size: 16px; +} + +.calendarmain .fc-header-left { + width: 248px; +} + +.calendarmain .fc-header-center { + width: auto; +} + +.calendarmain .fc-header-right { + width: 144px; + white-space: nowrap; +} + +.calendarmain .fc-event-temp .fc-event-bg { + display: none; /* nested opacity filters while dragging don't work */ +} + +#schedule-event-time { + filter: alpha(opacity=40); +} + +#eventfreebusy .schedule-buttons, +#edit-attendees-form #edit-attendee-schedule { + right: 0.6em; +} + +#schedule-freebusy-times tr.times td.allday { + width: expression(Math.max(60, parseInt(this.offsetWidth))+'px'); +} + +.ui-dialog .ui-dialog-titlebar { + width: expression((parseInt(this.parentNode.offsetWidth)-26)+'px'); +} diff --git a/calendar/skins/larry/images/attendee-status.png b/calendar/skins/larry/images/attendee-status.png Binary files differnew file mode 100644 index 0000000..37adcc1 --- /dev/null +++ b/calendar/skins/larry/images/attendee-status.png diff --git a/calendar/skins/larry/images/autocomplete.png b/calendar/skins/larry/images/autocomplete.png Binary files differnew file mode 100644 index 0000000..593c007 --- /dev/null +++ b/calendar/skins/larry/images/autocomplete.png diff --git a/calendar/skins/larry/images/badge_cancelled.png b/calendar/skins/larry/images/badge_cancelled.png Binary files differnew file mode 100644 index 0000000..2eb4878 --- /dev/null +++ b/calendar/skins/larry/images/badge_cancelled.png diff --git a/calendar/skins/larry/images/badge_confidential.png b/calendar/skins/larry/images/badge_confidential.png Binary files differnew file mode 100644 index 0000000..04a2052 --- /dev/null +++ b/calendar/skins/larry/images/badge_confidential.png diff --git a/calendar/skins/larry/images/badge_private.png b/calendar/skins/larry/images/badge_private.png Binary files differnew file mode 100644 index 0000000..52e4dbe --- /dev/null +++ b/calendar/skins/larry/images/badge_private.png diff --git a/calendar/skins/larry/images/calendar.png b/calendar/skins/larry/images/calendar.png Binary files differnew file mode 100644 index 0000000..69d780d --- /dev/null +++ b/calendar/skins/larry/images/calendar.png diff --git a/calendar/skins/larry/images/calendars.png b/calendar/skins/larry/images/calendars.png Binary files differnew file mode 100644 index 0000000..5b5ca85 --- /dev/null +++ b/calendar/skins/larry/images/calendars.png diff --git a/calendar/skins/larry/images/eventicons.png b/calendar/skins/larry/images/eventicons.png Binary files differnew file mode 100644 index 0000000..9be2c03 --- /dev/null +++ b/calendar/skins/larry/images/eventicons.png diff --git a/calendar/skins/larry/images/focusview.png b/calendar/skins/larry/images/focusview.png Binary files differnew file mode 100644 index 0000000..ce99400 --- /dev/null +++ b/calendar/skins/larry/images/focusview.png diff --git a/calendar/skins/larry/images/freebusy-colors.png b/calendar/skins/larry/images/freebusy-colors.png Binary files differnew file mode 100644 index 0000000..8d9257d --- /dev/null +++ b/calendar/skins/larry/images/freebusy-colors.png diff --git a/calendar/skins/larry/images/ical-attachment.png b/calendar/skins/larry/images/ical-attachment.png Binary files differnew file mode 100644 index 0000000..653f4bc --- /dev/null +++ b/calendar/skins/larry/images/ical-attachment.png diff --git a/calendar/skins/larry/images/invitation.png b/calendar/skins/larry/images/invitation.png Binary files differnew file mode 100644 index 0000000..af85804 --- /dev/null +++ b/calendar/skins/larry/images/invitation.png diff --git a/calendar/skins/larry/images/loading_blue.gif b/calendar/skins/larry/images/loading_blue.gif Binary files differnew file mode 100644 index 0000000..2ea6b19 --- /dev/null +++ b/calendar/skins/larry/images/loading_blue.gif diff --git a/calendar/skins/larry/images/sendinvitation.png b/calendar/skins/larry/images/sendinvitation.png Binary files differnew file mode 100644 index 0000000..dea30fa --- /dev/null +++ b/calendar/skins/larry/images/sendinvitation.png diff --git a/calendar/skins/larry/images/toggle.gif b/calendar/skins/larry/images/toggle.gif Binary files differnew file mode 100644 index 0000000..d3be86f --- /dev/null +++ b/calendar/skins/larry/images/toggle.gif diff --git a/calendar/skins/larry/images/toolbar.png b/calendar/skins/larry/images/toolbar.png Binary files differnew file mode 100644 index 0000000..5e79c66 --- /dev/null +++ b/calendar/skins/larry/images/toolbar.png diff --git a/calendar/skins/larry/print.css b/calendar/skins/larry/print.css new file mode 100644 index 0000000..fc5de97 --- /dev/null +++ b/calendar/skins/larry/print.css @@ -0,0 +1,229 @@ +/*** Printing styles for Calendar plugin ***/ + +body { + margin: 0 0 1em 0; + color: #000; + background: #fff; +} + +body, td, th, div, p, h3, select, input, textarea { + font-family: "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; + font-size: 8pt; +} + +#calendar { + position: relative; + top: 0; + left: 0; + height: auto; + margin: 5em auto 0 auto; + overflow: visible; +} + +#calendar .fc-header-right { + padding-right: 0; +} + +#printconfig { + position: fixed; + top: 0; + left: 0; + width: 100%; + z-index: 10000; + padding: 0.5em; + background: #ebebeb; + border-bottom: 1px solid #999; + box-shadow: 0 3px 4px #ccc; + -moz-box-shadow: 0 3px 4px #ccc; + -webkit-box-shadow: 0 3px 4px #ccc; +} + +#printconfig .prop { + padding-right: 2em; +} + +#message { + position: absolute; + top: 5.5em; + left: 1em; +} + +#message div.loading { + color: #666; + font-style: italic; +} + +#calendarlist { + list-style: none; + margin: 2em 0; + padding-left: 1em; +} + +#calendarlist ul { + float: left; + list-style: none; + padding-left: 0; +} + +#calendarlist li { + float: left; + padding-left: 0; + padding-right: 0; + margin-left: 0; + font-weight: bold; +} + +#calendarlist li div { + float: left; + padding-right: 3em; + padding-bottom: 1em; +} + +#calendarlist input, +#calendarlist .handle { + display: none; +} + +#calendarlist li.x-invitations div { + color: #999; + font-style: italic; +} + +.calwidth { + width: 700px; + margin: 0 auto; +} + +.rightalign { + float: right; + padding-top: 0.3em; +} + +@media print { + .noprint, + .fc-header-right span { + display: none; + } + + #calendar { + margin-top: 0; + } +} + +/* fullcalendar style overrides */ + +.fc-view { + overflow: visible; +} + +.fc-event-skin, +.fc-event-inner .fc-event-skin { + color: black; + background-color: #fff !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; +} + +.fc-event-location { + font-size: 90%; +} + +.fc-agenda-slots td div { + height: 1.4em; +} + +.fc-widget-header, +.fc-mon, .fc-tue, .fc-wed, .fc-thu, .fc-fri { + background-color: #fff; +} + +.fc-widget-header, .fc-widget-content { + border-color: #ccc; +} + +.fc-icon-alarms, +.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-view-list, .fc-view-table { + border: 0; +} + +.fc-view-list div.fc-list-header, +.fc-view-table td.fc-list-header { + padding: 0.3em; + background: #fff; + font-weight: bold; + font-size: 1.2em; + color: #333; + border-color: #333; + border-style: solid; + border-width: 1px 0; + filter: none; +} + +.fc-list-section .fc-event { + cursor: auto; +} + +.fc-view-table tr.fc-event td, +.fc-view-table tr.fc-event td.fc-event-handle { + border-color: #999; + padding-top: 0.5em; + padding-bottom: 0.5em; +} + +.fc-view-table tr.fc-last td { + border: 0; +} + +.fc-view-table tr.fc-event .fc-event-description { + padding-left: 2em; + padding-top: 0em; +} + +.fc-event-vert .fc-event-description { + font-size: 90%; + font-style: italic; +} + +.fc-view-month .fc-event-hori .fc-event-inner { + background: #fff !important; +} + +.fc-view-table col.fc-event-location { + width: 20%; +} diff --git a/calendar/skins/larry/print.iehacks.css b/calendar/skins/larry/print.iehacks.css new file mode 100644 index 0000000..5322ff9 --- /dev/null +++ b/calendar/skins/larry/print.iehacks.css @@ -0,0 +1,25 @@ +/* CSS hacks for IE 7 */ + +#calendar { + top: 5em; +} + +.calwidth { + width: 172mm; +} + +.fc-header-title h2 { + font-size: 16px; +} + +#calendarlist li { + float: none; + padding: 0; + margin-left: 1em; +} + +@media print { + #calendar { + top: 0; + } +}
\ No newline at end of file diff --git a/calendar/skins/larry/templates/attachment.html b/calendar/skins/larry/templates/attachment.html new file mode 100644 index 0000000..17fccc5 --- /dev/null +++ b/calendar/skins/larry/templates/attachment.html @@ -0,0 +1,64 @@ +<roundcube:object name="doctype" value="html5" /> +<html> +<head> +<title><roundcube:object name="pagetitle" /></title> +<roundcube:include file="/includes/links.html" /> +</head> +<body class="extwin calendar attachmentwin"> + +<div id="header"> +<div id="topline" role="banner" aria-labelledby="aria-label-topnav"> + <div class="topleft"> + <roundcube:container name="topline-left" id="topline-left" /> + </div> + <roundcube:container name="topline-center" id="topline-center" /> + <div class="topright"> + <roundcube:container name="topline-right" id="topline-right" /> + <roundcube:button name="close" type="link" label="close" class="closelink" onclick="self.close()" /> + </div> +</div> +</div> + +<div id="mainscreen"> + +<h1 class="voice"><roundcube:label name="attachment" />: <roundcube:var name="env:filename" /></h1> + +<h2 id="aria-label-toolbar" class="voice"><roundcube:label name="arialabeltoolbar" /></h2> +<div id="attachmenttoolbar" class="toolbar fullwidth" role="toolbar" aria-labelledby="aria-label-toolbar"> + <roundcube:button command="download-attachment" type="link" class="button download disabled" classAct="button download" classSel="button download pressed" label="download" title="download" /> + <roundcube:button command="print-attachment" type="link" class="button print disabled" classAct="button print" classSel="button print pressed" label="print" title="print" /> + <roundcube:container name="toolbar" id="messagetoolbar" /> +</div> + +<div id="mainscreencontent"> + + <div id="partheader" class="uibox listbox" role="contentinfo" aria-labelledby="aria-label-contentinfo"> + <h2 class="boxtitle" id="aria-label-contentinfo"><roundcube:label name="properties" /></h2> + <div class="scroller"> + <roundcube:object name="plugin.attachmentcontrols" class="listing" /> + </div> + </div> + + <div id="attachmentcontainer" class="uibox" role="main" aria-labelledby="aria-label-messagepart"> + <h2 id="aria-label-messagepart" class="voice"><roundcube:label name="arialabelattachmentpreview" /></h2> + <div class="iframebox"> + <roundcube:object name="plugin.attachmentframe" id="attachmentframe" frameborder="0" title="arialabelattachmentpreview" /> + </div> + </div> + +</div> + +</div> + +<script type="text/javascript"> + +$(document).ready(function() { + if (window.rcube_splitter) { + new rcube_splitter({ id:'mailpartsplitterv', p1:'#partheader', p2:'#attachmentcontainer', + orientation:'v', relative:true, start:226, min:150, size:12}).init(); + } +}); + +</script> +</body> +</html> diff --git a/calendar/skins/larry/templates/calendar.html b/calendar/skins/larry/templates/calendar.html new file mode 100644 index 0000000..e659ecc --- /dev/null +++ b/calendar/skins/larry/templates/calendar.html @@ -0,0 +1,537 @@ +<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="/this/iehacks.css" /><![endif]--> +</head> +<roundcube:if condition="env:extwin" /><body class="calendarmain extwin"><roundcube:else /><body class="calendarmain"><roundcube:endif /> + +<roundcube:include file="/includes/header.html" /> + +<h1 class="voice"><roundcube:label name="calendar.calendar" /></h1> + +<div id="mainscreen"> + <div id="calendarsidebar"> + <h2 id="aria-label-toolbar" class="voice"><roundcube:label name="arialabeltoolbar" /></h2> + <div id="calendartoolbar" class="toolbar" role="toolbar" aria-labelledby="aria-label-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="events-import" type="link" class="button import disabled" classAct="button import" classSel="button import pressed" label="import" title="calendar.importevents" /> + <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> + + <h2 id="aria-label-minical" class="voice"><roundcube:label name="calendar.arialabelminical" /></h2> + <div id="datepicker" class="uibox" role="presentation"></div> + + <div id="calendars" class="uibox listbox" style="visibility:hidden" role="navigation" aria-labelledby="aria-label-calendarlist"> + <h2 class="boxtitle" id="aria-label-calendarlist"><roundcube:label name="calendar.calendars" /> + <a href="#calendars" class="iconbutton search" title="<roundcube:label name='calendar.findcalendars' />" tabindex="0"><roundcube:label name='calendar.findcalendars' /></a> + </h2> + <div class="listsearchbox"> + <div class="searchbox" role="search" aria-labelledby="aria-label-calsearchform" aria-controls="calendarslist"> + <h3 id="aria-label-calsearchform" class="voice"><roundcube:label name="calendar.arialabelcalsearchform" /></h3> + <label for="calendarlistsearch" class="voice"><roundcube:label name="calendar.searchterms" /></label> + <input type="text" name="q" id="calendarlistsearch" placeholder="<roundcube:label name='calendar.findcalendars' />" /> + <a class="iconbutton searchicon"></a> + <roundcube:button command="reset-listsearch" id="calendarlistsearch-reset" class="iconbutton reset" title="resetsearch" label="resetsearch" /> + </div> + </div> + <div class="scroller withfooter"> + <roundcube:object name="plugin.calendar_list" id="calendarslist" class="treelist listing" /> + </div> + <div class="boxfooter"> + <roundcube:button name="calendarcreatelink" id="calendarcreatemenulink" type="link" title="create" class="listbutton add" onclick="UI.show_popup('calendarcreatemenu', undefined, { above:true });return false" innerClass="inner" content="⚙" /><roundcube:button name="calendaroptionslink" id="calendaroptionsmenulink" type="link" title="moreactions" class="listbutton groupactions" onclick="UI.show_popup('calendaroptionsmenu', undefined, { above:true });return false" innerClass="inner" content="⚙" /> + </div> + </div> + </div> + + <div id="quicksearchbar" class="searchbox" role="search" aria-labelledby="aria-label-searchform"> + <h2 id="aria-label-searchform" class="voice"><roundcube:label name="calendar.arialabelsearchform" /></h2> + <label for="quicksearchbox" class="voice"><roundcube:label name="calendar.arialabelquicksearchbox" /></label> + <roundcube:object name="plugin.searchform" id="quicksearchbox" /> + <a id="searchmenulink" class="iconbutton searchoptions" tabindex="-1"> </a> + <roundcube:button command="reset-search" id="searchreset" class="iconbutton reset" title="resetsearch" label="resetsearch" /> + </div> + + <h2 id="aria-label-calendarview" class="voice"><roundcube:label name="calendar.arialabelcalendarview" /></h2> + <div id="calendar" role="main" aria-labelledby="aria-label-calendarview"> + <roundcube:object name="plugin.angenda_options" class="boxfooter" id="agendaoptions" /> + </div> +</div> + +<div id="calendarcreatemenu" class="popupmenu"> + <ul class="toolbarmenu"> + <roundcube:object name="plugin.calendar_create_menu" /> + </ul> +</div> +<div id="timezonedisplay"><roundcube:var name="env:timezone" /></div> + +<roundcube:object name="message" id="messagestack" /> + +<div id="calendaroptionsmenu" class="popupmenu" aria-hidden="true"> + <h3 id="aria-label-calendaroptions" class="voice"><roundcube:label name="calendar.calendaractions" /></h3> + <ul id="calendaroptionsmenu-menu" class="toolbarmenu" role="menu" aria-labelledby="aria-label-calendaroptions"> + <li role="menuitem"><roundcube:button command="calendar-edit" label="calendar.edit" classAct="active" /></li> + <li role="menuitem"><roundcube:button command="calendar-delete" label="delete" classAct="active" /></li> + <roundcube:if condition="env:calendar_driver == 'kolab'" /> + <li role="menuitem"><roundcube:button command="calendar-remove" label="calendar.removelist" classAct="active" /></li> + <roundcube:endif /> + <li role="menuitem"><roundcube:button command="calendar-showurl" label="calendar.showurl" classAct="active" /></li> + <roundcube:if condition="env:calendar_driver == 'kolab'" /> + <li role="menuitem"><roundcube:button command="folders" task="settings" type="link" label="managefolders" classAct="active" /></li> + <roundcube:endif /> + </ul> +</div> + +<div id="eventshow" class="uidialog eventdialog" aria-hidden="true"> + <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-url"> + <h5 class="label"><roundcube:label name="calendar.url" /></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 event-attendees" id="event-attendees"> + <h5 class="label"><roundcube:label name="calendar.tabattendees" /></h5> + <div class="event-text"></div> + </div> + <div class="event-line" id="event-partstat"> + <label><roundcube:label name="calendar.mystatus" /></label> + <span class="changersvp" role="button" tabindex="0" title="<roundcube:label name='calendar.changepartstat' />"> + <span class="event-text"></span> + <a class="iconbutton edit"><roundcube:label name='calendar.changepartstat' /></a> + </span> + </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-status"> + <label><roundcube:label name="calendar.status" /></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-links"> + <label><roundcube:label name="calendar.links" /></label> + <span class="event-text"></span> + <br style="clear:left"> + </div> + <div class="event-section" id="event-attachments"> + <label><roundcube:label name="attachments" /></label> + <div class="event-text"></div> + </div> + <div class="event-line" id="event-created-changed"> + <label><roundcube:label name="calendar.created" /></label> + <span class="event-text event-created"></span> + <label><roundcube:label name="calendar.changed" /></label> + <span class="event-text event-changed"></span> + </div> + <div class="event-line" id="event-rsvp-comment"> + <label><roundcube:label name="calendar.rsvpcomment" /></label> + <span class="event-text"></span> + </div> + + <roundcube:object name="plugin.event_rsvp_buttons" id="event-rsvp" class="event-dialog-message" style="display:none" /> +</div> + +<div id="eventoptionsmenu" class="popupmenu" aria-hidden="true"> + <h3 id="aria-label-eventoptions" class="voice"><roundcube:label name="calendar.eventoptions" /></h3> + <ul id="eventoptionsmenu-menu" class="toolbarmenu" role="menu" aria-labelledby="aria-label-eventoptions"> + <li role="menuitem"><roundcube:button command="event-download" label="download" classAct="active" /></li> + <li role="menuitem"><roundcube:button command="event-sendbymail" label="send" classAct="active" /></li> + <roundcube:if condition="env:calendar_driver == 'kolab' && config:kolab_bonnie_api" /> + <li role="menuitem"><roundcube:button command="event-history" type="link" label="calendar.eventhistory" classAct="active" /></li> + <roundcube:endif /> + </ul> +</div> + +<div id="eventdiff" class="uidialog eventdialog" aria-hidden="true"> + <h1 class="event-title">Event Title</h1> + <h1 class="event-title-new event-text-new"></h1> + <div class="event-section event-date"></div> + <div class="event-section event-location"> + <h5 class="label"><roundcube:label name="calendar.location" /></h5> + <div class="event-text-old"></div> + <div class="event-text-new"></div> + </div> + <div class="event-section event-description"> + <h5 class="label"><roundcube:label name="calendar.description" /></h5> + <div class="event-text-diff" style="white-space:pre-wrap"></div> + <div class="event-text-old"></div> + <div class="event-text-new"></div> + </div> + <div class="event-section event-url"> + <h5 class="label"><roundcube:label name="calendar.url" /></h5> + <div class="event-text-old"></div> + <div class="event-text-new"></div> + </div> + <div class="event-section event-recurrence"> + <h5 class="label"><roundcube:label name="calendar.repeat" /></h5> + <div class="event-text-old"></div> + <div class="event-text-new"></div> + </div> + <div class="event-section event-alarms"> + <h5 class="label"><roundcube:label name="calendar.alarms" /><span class="index"></span></h5> + <div class="event-text-old"></div> + <div class="event-text-new"></div> + </div> + <div class="event-line event-start"> + <label><roundcube:label name="calendar.start" /></label> + <span class="event-text-old"></span> ⇢ + <span class="event-text-new"></span> + </div> + <div class="event-line event-end"> + <label><roundcube:label name="calendar.end" /></label> + <span class="event-text-old"></span> ⇢ + <span class="event-text-new"></span> + </div> + <div class="event-line event-attendees"> + <label><roundcube:label name="calendar.tabattendees" /><span class="index"></span></label> + <span class="event-text-old"></span> ⇢ + <span class="event-text-new"></span> + </div> + <div class="event-line event-calendar"> + <label><roundcube:label name="calendar.calendar" /></label> + <span class="event-text-old"></span> ⇢ + <span class="event-text-new"></span> + </div> + <div class="event-line event-categories"> + <label><roundcube:label name="calendar.category" /></label> + <span class="event-text-old"></span> ⇢ + <span class="event-text-new"></span> + </div> + <div class="event-line event-status"> + <label><roundcube:label name="calendar.status" /></label> + <span class="event-text-old"></span> ⇢ + <span class="event-text-new"></span> + </div> + <div class="event-line event-free_busy"> + <label><roundcube:label name="calendar.freebusy" /></label> + <span class="event-text-old"></span> ⇢ + <span class="event-text-new"></span> + </div> + <div class="event-line event-priority"> + <label><roundcube:label name="calendar.priority" /></label> + <span class="event-text-old"></span> ⇢ + <span class="event-text-new"></span> + </div> + <div class="event-line event-sensitivity"> + <label><roundcube:label name="calendar.sensitivity" /></label> + <span class="event-text-old"></span> ⇢ + <span class="event-text-new"></span> + </div> + <div class="event-section event-attachments"> + <label><roundcube:label name="attachments" /><span class="index"></span></label> + <div class="event-text-old"></div> + <div class="event-text-new"></div> + </div> +</div> + +<roundcube:include file="/templates/eventedit.html" /> + +<div id="eventresourcesdialog" class="uidialog" aria-hidden="true"> + <div id="resource-dialog-left"> + <div id="resource-selection" class="uibox listbox" role="navigation" aria-labelledby="aria-label-resourceselection"> + <h2 class="voice" id="aria-label-resourceselection"><roundcube:label name="calendar.arialabelresourceselection" /></h2> + <div id="resourcequicksearch"> + <div class="searchbox" role="search" aria-labelledby="aria-label-resourcesearchform" aria-controls="resources-list"> + <h3 id="aria-label-resourcesearchform" class="voice"><roundcube:label name="calendar.arialabelresourcesearchform" /></h3> + <label for="resourcesearchbox" class="voice"><roundcube:label name="calendar.searchterms" /></label> + <roundcube:object name="plugin.resources_searchform" id="resourcesearchbox" /> + <a id="resourcesearchmenulink" class="iconbutton searchoptions"> </a> + <roundcube:button command="reset-resource-search" id="resourcesearchreset" class="iconbutton reset" title="resetsearch" label="resetsearch" /> + </div> + </div> + <div class="scroller"> + <roundcube:object name="plugin.resources_list" id="resources-list" class="listing treelist" /> + </div> + </div> + </div> + + <div id="resource-dialog-right"> + <div id="resource-info" class="uibox contentbox" role="region" aria-labelledby="aria-label-resourcedetails"> + <h2 class="boxtitle" id="aria-label-resourcedetails"><roundcube:label name="calendar.resourcedetails" /></h2> + <div class="scroller"> + <roundcube:object name="plugin.resource_info" id="resource-details" class="propform" aria-live="polite" aria-relevant="text" aria-atomic="true" /> + </div> + </div> + + <div id="resource-availability" class="uibox contentbox" role="region" aria-labelledby="aria-label-resourceavailability"> + <h2 class="boxtitle" id="aria-label-resourceavailability"><roundcube:label name="calendar.resourceavailability" /></h2> + <roundcube:object name="plugin.resource_calendar" id="resource-freebusy-calendar" /> + <div class="boxpagenav"> + <roundcube:button name="resource-cal-prev" id="resource-calendar-prev" type="link" class="icon prevpage" title="calendar.prevslot" label="calendar.prevweek" /> + <roundcube:button name="resource-cal-next" id="resource-calendar-next" type="link" class="icon nextpage" title="calendar.nextslot" label="calendar.nextweek" /> + </div> + </div> + </div> +</div> + +<div id="eventfreebusy" class="uidialog" aria-hidden="true"> + <roundcube:object name="plugin.attendees_freebusy_table" id="attendees-freebusy-table" cellpadding="0" /> + + <div class="schedule-options"> + + <div class="schedule-buttons"> + <button id="shedule-freebusy-prev" title="<roundcube:label name='previouspage' />">◄</button><button id="shedule-freebusy-next" title="<roundcube:label name='nextpage' />">►</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="11" id="schedule-startdate" disabled="true" /> + <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="11" id="schedule-enddate" disabled="true" /> + <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">◄ <roundcube:label name="calendar.prevslot" /></button> + <button id="shedule-find-next"><roundcube:label name="calendar.nextslot" /> ►</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 non-participant"><roundcube:label name="calendar.rolenonparticipant" /></span> + <span class="attendee chair"><roundcube:label name="calendar.rolechair" /></span> + </div> +</div> + +<div id="eventhistory" class="uidialog" aria-hidden="true"> + <roundcube:object name="plugin.object_changelog_table" id="event-changelog-table" class="records-table changelog-table" domain="calendar" /> + <div class="compare-button"><input type="button" class="button" value="↳ <roundcube:label name='calendar.compare' />" /></div> +</div> + +<div id="calendarform" class="uidialog" aria-hidden="true"> + <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="eventsexport" class="uidialog"> + <roundcube:object name="plugin.events_export_form" id="events-export-form" /> +</div> + +<div id="calendarurlbox" class="uidialog"> + <p><roundcube:label name="calendar.showurldescription" /></p> + <textarea id="calfeedurl" rows="2" readonly="readonly"></textarea> + <div id="calendarcaldavurl" style="display:none"> + <p><roundcube:label name="calendar.caldavurldescription" html="yes" /></p> + <textarea id="caldavurl" rows="2" readonly="readonly"></textarea> + </div> +</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(); + + new calendarview_splitter({ id:'calsidebarsplitter', p1:'#calendarsidebar', p2:'#calendar', + orientation:'v', relative:true, start:280, min:260, size:12, offset:0 }); + + new rcube_splitter({ id:'calresourceviewsplitter', p1:'#resource-dialog-left', p2:'#resource-dialog-right', + orientation:'v', relative:true, start:380, min:220, size:10, offset:-3 }).init(); + + // animation to unfold list search box + $('#calendars .boxtitle a.search').click(function(e){ + var title = $('#calendars .boxtitle'), + box = $('#calendars .listsearchbox'), + dir = box.is(':visible') ? -1 : 1; + + if (!rcube_event.is_keyboard(e)) + $(this).blur(); + + box.slideToggle({ + duration: 160, + progress: function(animation, progress) { + if (dir < 0) progress = 1 - progress; + $('#calendars .scroller').css('top', (title.outerHeight() + 34 * progress) + 'px'); + }, + complete: function() { + box.toggleClass('expanded'); + if (box.is(':visible')) { + box.find('input[type=text]').focus(); + } + else { + $('#calendarlistsearch-reset').click(); + } + // TODO: save state in localStorage + } + }); + + return false; + }); + +}); + + +/** + * Extended rcube_splitter class that entirely collapses the calendar sidebar + */ +function calendarview_splitter(p) +{ + this.collapsed = false; + this.dragging = false; + this.threshold = 80; + this.lastpos = -1; + this._lastpos = -1; + this._min = p.min; + + var me = this; + p.callback = function(e){ + if (me.lastpos != me._lastpos) { + me.dragging = true; + setTimeout(function(){ me.dragging = false; }, 50); + me._lastpos = me.lastpos; + } + }; + + // extend base class + p.min = 20; + rcube_splitter.call(this, p); + + // @override + this.resize = function() + { + if (this.pos < this.threshold) { + if (!this.collapsed) + this.collapse(); + } + else if (this.pos < this._min && this.pos > this._min / 2) { + if (this.collapsed) + this.expand(); + } + else if (this.pos >= this._min) { + this.p1.css('width', Math.floor(this.pos - this.p1pos.left - this.halfsize) + 'px'); + this.p2.css('left', Math.ceil(this.pos + this.halfsize) + 'px'); + this.handle.css('left', Math.round(this.pos - this.halfsize + this.offset + 3)+'px'); + if (bw.ie) { + var new_width = parseInt(this.parent.outerWidth(), 10) - parseInt(this.p2.css('left'), 10) ; + this.p2.css('width', (new_width > 0 ? new_width : 0) + 'px'); + } + + this.p2.resize(); + this.p1.resize(); + this.lastpos = this.pos; + + if (this._lastpos == -1) + this._lastpos = this.pos; + + // also resize iframe covers + if (this.drag_active) { + $('iframe').each(function(i, elem) { + var pos = $(this).offset(); + $('#iframe-splitter-fix-'+i).css({ top: pos.top+'px', left: pos.left+'px', width:elem.offsetWidth+'px', height: elem.offsetHeight+'px' }); + }); + } + + if (typeof this.render == 'function') + this.render(this); + } + } + + this.collapse = function(animated) + { + var me = this, time = 250; + if (animated) { + this.p1.animate({ left:'0px' }, time, function(){ $(this).hide(); }); + this.p2.animate({ left:this.p.size + 'px' }, time, function(){ $(this).resize(); }); + this.handle.animate({ left:'3px'}, time, function(){ $(this).addClass('sidebarclosed') }); + } + else { + this.p1.css('left', 0).hide(); + this.p2.css('left', this.p.size + 'px'); + this.handle.css('left', '3px').addClass('sidebarclosed'); + this.p2.resize(); + } + + // stop dragging + if (this.drag_active) { + this.drag_active = false; + $(document).unbind('.'+this.id); + $('div.iframe-splitter-fix').remove(); + } + + this.pos = 10; + this.collapsed = true; + this.set_cookie(); + } + + this.expand = function() + { + var me = this, time = 250; + this.handle.removeClass('sidebarclosed'); + this.pos = this.lastpos > 0 ? this.lastpos : this._min; + this.p1pos.left = 10; + this.p1.show().animate({ left:'10px', width:(this.pos - this.p1pos.left - this.halfsize) + 'px' }, time); + this.p2.animate({ left:(this.pos + this.halfsize) + 'px' }, time, function(){ me.resize(); }); + this.handle.animate({ left:(this.pos - this.halfsize + this.offset + 3) + 'px' }, time); + + this.collapsed = false; + this.set_cookie(); + } + + this.init(); + + var me = this; + this.handle.bind('click', function(e){ + if (!me.collapsed && !me.dragging) + me.collapse(true); + else if (!me.dragging) + me.expand(); + }); +} + +</script> + +</body> +</html> diff --git a/calendar/skins/larry/templates/eventedit.html b/calendar/skins/larry/templates/eventedit.html new file mode 100644 index 0000000..4d0585b --- /dev/null +++ b/calendar/skins/larry/templates/eventedit.html @@ -0,0 +1,133 @@ +<div id="eventedit" class="uidialog uidialog-tabbed" aria-hidden="true"> + <form id="eventtabs" action="#" method="post" enctype="multipart/form-data"> + <ul> + <li><a href="#event-panel-summary"><roundcube:label name="calendar.tabsummary" /></a></li><li id="edit-tab-recurrence"><a href="#event-panel-recurrence"><roundcube:label name="calendar.tabrecurrence" /></a></li><li id="edit-tab-attendees"><a href="#event-panel-attendees"><roundcube:label name="calendar.tabattendees" /></a></li><li id="edit-tab-resources"><a href="#event-panel-resources"><roundcube:label name="calendar.tabresources" /></a></li><li id="edit-tab-attachments"><a href="#event-panel-attachments"><roundcube:label name="calendar.tabattachments" /></a></li> + </ul> + <!-- basic info --> + <div id="event-panel-summary"> + <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" required="true" /> + </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 for="edit-url"><roundcube:label name="calendar.url" /></label> + <br /> + <input type="text" class="text" name="vurl" id="edit-url" size="40" /> + </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="11" id="edit-startdate" required="true" /> + <input type="text" name="starttime" size="6" id="edit-starttime" aria-label="<roundcube:label name='calendar.starttime' />" /> + </div> + <div class="event-section"> + <label for="edit-enddate"><roundcube:label name="calendar.end" /></label> + <input type="text" name="enddate" size="11" id="edit-enddate" required="true" /> + <input type="text" name="endtime" size="6" id="edit-endtime" aria-label="<roundcube:label name='calendar.endtime' />" /> + </div> + <div class="event-section" id="edit-alarms"> + <div class="edit-alarm-item first"> + <label for="edit-alarm-item"><roundcube:label name="calendar.alarms" /></label> + <roundcube:object name="plugin.alarm_select" id="edit-alarm-item" /> + <span class="edit-alarm-buttons"> + <a href="#add" class="iconbutton add add-alarm"><roundcube:label name="libcalendaring.addalarm" /></a> + <a href="#delete" class="iconbutton remove delete-alarm"><roundcube:label name="libcalendaring.removealarm" /></a> + </span> + </div> + </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-event-status"><roundcube:label name="calendar.status" /></label> + <roundcube:object name="plugin.status_select" id="edit-event-status" /> + </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 class="event-section" id="edit-event-links"> + <label><roundcube:label name="calendar.links" /></label> + <div class="event-text"></div> + <br style="clear:left"> + </div> + </div> + <!-- recurrence settings --> + <div id="event-panel-recurrence"> + <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 class="recurrence-form" id="recurrence-form-rdate"> + <roundcube:object name="plugin.recurrence_form" part="rdate" class="event-section" /> + </div> + </div> + <!-- attendees list --> + <div id="event-panel-attendees"> + <h3 id="aria-label-attendeestable" class="voice"><roundcube:label name="calendar.arialabeleventattendees" /></h3> + <roundcube:object name="plugin.attendees_list" id="edit-attendees-table" class="records-table edit-attendees-table" coltitle="attendee" aria-labelledby="aria-label-attendeestable" /> + <roundcube:object name="plugin.attendees_form" id="edit-attendees-form" /> + <roundcube:include file="/templates/freebusylegend.html" /> + </div> + <!-- resources list --> + <div id="event-panel-resources"> + <h3 id="aria-label-resourcestable" class="voice"><roundcube:label name="calendar.arialabeleventresources" /></h3> + <roundcube:object name="plugin.attendees_list" id="edit-resources-table" class="records-table edit-attendees-table" coltitle="resource" aria-labelledby="aria-label-resourcestable" /> + <roundcube:object name="plugin.resources_form" id="edit-resources-form" /> + <roundcube:include file="/templates/freebusylegend.html" /> + </div> + <!-- attachments list (with upload form) --> + <div id="event-panel-attachments"> + <div id="edit-attachments"> + <roundcube:object name="plugin.attachments_list" id="attachment-list" class="attachmentslist" /> + </div> + <div id="edit-attachments-form" role="region" aria-labelledby="aria-label-attachmentuploadform"> + <h3 id="aria-label-attachmentuploadform" class="voice"><roundcube:label name="arialabelattachmentuploadform" /></h2> + <roundcube:object name="plugin.attachments_form" id="calendar-attachment-form" attachmentFieldSize="30" /> + </div> + <roundcube:object name="plugin.filedroparea" id="event-panel-attachments" /> + </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/calendar/skins/larry/templates/freebusylegend.html b/calendar/skins/larry/templates/freebusylegend.html new file mode 100644 index 0000000..41de703 --- /dev/null +++ b/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/resources/blank.gif" /> <roundcube:label name="calendar.availfree" /></span> + <span class="legend"><img class="availabilityicon busy" src="program/resources/blank.gif" /> <roundcube:label name="calendar.availbusy" /></span> + <span class="legend"><img class="availabilityicon tentative" src="program/resources/blank.gif" /> <roundcube:label name="calendar.availtentative" /></span> + <!--<span class="legend"><img class="availabilityicon out-of-office" src="program/resources/blank.gif" /> <roundcube:label name="calendar.availoutofoffice" /></span>--> + <span class="legend"><img class="availabilityicon unknown" src="program/resources/blank.gif" /> <roundcube:label name="calendar.availunknown" /></span> + </div> diff --git a/calendar/skins/larry/templates/itipattend.html b/calendar/skins/larry/templates/itipattend.html new file mode 100644 index 0000000..545d018 --- /dev/null +++ b/calendar/skins/larry/templates/itipattend.html @@ -0,0 +1,37 @@ +<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 uibox"> + <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" delegate="false" /> + </form> +</div> + +<roundcube:object name="message" id="message" /> + +</div> + +</body> +</html>
\ No newline at end of file diff --git a/calendar/skins/larry/templates/kolabacl.html b/calendar/skins/larry/templates/kolabacl.html new file mode 100644 index 0000000..ed9b0c7 --- /dev/null +++ b/calendar/skins/larry/templates/kolabacl.html @@ -0,0 +1,26 @@ +<roundcube:object name="doctype" value="html5" /> +<html> +<head> +<title><roundcube:object name="pagetitle" /></title> +<roundcube:include file="/includes/links.html" /> +<style type="text/css" media="screen"> + +body.aclform { + background: #efefef; + margin: 0; +} + +body.aclform .hint { + margin: 1em; +} + +</style> +</head> +<body class="iframe aclform"> + +<roundcube:object name="folderacl" /> + +<roundcube:include file="/includes/footer.html" /> + +</body> +</html> diff --git a/calendar/skins/larry/templates/kolabform.html b/calendar/skins/larry/templates/kolabform.html new file mode 100644 index 0000000..77a1c30 --- /dev/null +++ b/calendar/skins/larry/templates/kolabform.html @@ -0,0 +1,9 @@ +<div id="calendar-kolabform" class="propform tabbed"> + <roundcube:object name="calendarform" /> +</div> +<style type="text/css"> +#calendarpropform { min-width:680px; margin-top:-12px; } +</style> +<script type="text/javascript"> +UI.init_tabs('#calendar-kolabform'); +</script>
\ No newline at end of file diff --git a/calendar/skins/larry/templates/print.html b/calendar/skins/larry/templates/print.html new file mode 100644 index 0000000..e679f72 --- /dev/null +++ b/calendar/skins/larry/templates/print.html @@ -0,0 +1,29 @@ +<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" /> + <br style="clear:both"> +</div> + +<roundcube:object name="plugin.calendar_css" printmode="true" /> + +<!--[if lte IE 7]><link rel="stylesheet" type="text/css" href="plugins/calendar/skins/classic/print.iehacks.css" /><![endif]--> +</body> +</html>
\ No newline at end of file |