From a9e830c9a32f7ff21b0e74677010f39c075009c7 Mon Sep 17 00:00:00 2001 From: Thomas Bruederli Date: Wed, 29 Jun 2011 14:08:05 +0200 Subject: [PATCH] Added basic compatibility for IE6; some visual details and performance issues remain --- plugins/calendar/calendar_ui.js | 15 ++++-- .../calendar/drivers/kolab/kolab_calendar.php | 18 ++++++- plugins/calendar/lib/js/fullcalendar.js | 12 ++++- plugins/calendar/skins/default/calendar.css | 8 ++-- plugins/calendar/skins/default/iehacks.css | 45 ++++++++++++++++++ .../skins/default/images/calendar.gif | Bin 0 -> 546 bytes .../calendar/skins/default/images/toolbar.gif | Bin 0 -> 6186 bytes .../skins/default/templates/calendar.html | 1 + 8 files changed, 87 insertions(+), 12 deletions(-) create mode 100644 plugins/calendar/skins/default/iehacks.css create mode 100644 plugins/calendar/skins/default/images/calendar.gif create mode 100644 plugins/calendar/skins/default/images/toolbar.gif diff --git a/plugins/calendar/calendar_ui.js b/plugins/calendar/calendar_ui.js index e937c346..eff093b7 100644 --- a/plugins/calendar/calendar_ui.js +++ b/plugins/calendar/calendar_ui.js @@ -52,7 +52,7 @@ function rcube_calendar_ui(settings) monthNamesShort: settings['months'], changeMonth: false, showOtherMonths: true, - selectOtherMonths: true, + selectOtherMonths: true }; @@ -780,6 +780,8 @@ function rcube_calendar_ui(settings) defaultView: settings['default_view'], allDayText: rcmail.gettext('all-day', 'calendar'), buttonText: { + prev: (bw.ie6 ? ' << ' : ' ◄ '), + next: (bw.ie6 ? ' >> ' : ' ► '), today: settings['today'], day: rcmail.gettext('day', 'calendar'), week: rcmail.gettext('week', 'calendar'), @@ -875,7 +877,7 @@ function rcube_calendar_ui(settings) id: event.id, calendar: event.calendar, start: date2unixtime(event.start), - end: date2unixtime(event.end), + end: date2unixtime(event.end) }; if (event.recurrence) recurring_edit_confirm(data, 'resize'); @@ -884,7 +886,8 @@ function rcube_calendar_ui(settings) }, viewDisplay: function(view) { me.eventcount = []; - window.setTimeout(function(){ $('div.fc-content').css('overflow', view.name == 'month' ? 'auto' : 'hidden') }, 10); + if (!bw.ie) + window.setTimeout(function(){ $('div.fc-content').css('overflow', view.name == 'month' ? 'auto' : 'hidden') }, 10); }, windowResize: function(view) { me.eventcount = []; @@ -928,7 +931,7 @@ function rcube_calendar_ui(settings) d.setMonth(month - 1); minical.data('year', year).data('month', month); //fc.fullCalendar('gotoDate', d).fullCalendar('setDate', d); - }, + } })); window.setTimeout(init_week_events, 10); @@ -1034,6 +1037,10 @@ function rcube_calendar_ui(settings) $('#calendar-color').miniColors(); + // add proprietary css styles if not IE + if (!bw.ie) + $('div.fc-content').addClass('rcube-fc-content'); + // hide event dialog when clicking somewhere into document $(document).bind('mousedown', dialog_check); diff --git a/plugins/calendar/drivers/kolab/kolab_calendar.php b/plugins/calendar/drivers/kolab/kolab_calendar.php index 3abc7d3a..47dc573f 100644 --- a/plugins/calendar/drivers/kolab/kolab_calendar.php +++ b/plugins/calendar/drivers/kolab/kolab_calendar.php @@ -30,6 +30,7 @@ class kolab_calendar private $id2uid; private $imap_folder = 'INBOX/Calendar'; private $namespace; + private $search_fields = array('title', 'description', 'location'); private $sensitivity_map = array('public', 'private', 'confidential'); private $priority_map = array('low', 'normal', 'high'); @@ -180,10 +181,23 @@ class kolab_calendar $events = array(); foreach ($this->events as $id => $event) { - // TODO: filter events by search query - + // filter events by search query if (!empty($search)) { + $hit = false; + foreach ($this->search_fields as $col) { + if (empty($event[$col])) + continue; + + // do a simple substring matching (to be improved) + $val = mb_strtolower($event[$col]); + if (strpos($val, $search) !== false) { + $hit = true; + break; + } + } + if (!$hit) // skip this event if not match with search term + continue; } // list events in requested time window diff --git a/plugins/calendar/lib/js/fullcalendar.js b/plugins/calendar/lib/js/fullcalendar.js index 8dfd2abd..36813fa3 100644 --- a/plugins/calendar/lib/js/fullcalendar.js +++ b/plugins/calendar/lib/js/fullcalendar.js @@ -5666,9 +5666,17 @@ function TableEventRenderer() { } } s += ""; + + // IE doesn't like innerHTML on tbody elements so we insert every row individually + if (document.all) { + $(s).appendTo(segContainer); + s = ''; + } } - - segContainer[0].innerHTML = s; + + if (!document.all) + segContainer[0].innerHTML = s; + eventElements = segContainer.children(); // retrieve elements, run through eventRender callback, bind event handlers diff --git a/plugins/calendar/skins/default/calendar.css b/plugins/calendar/skins/default/calendar.css index 304bebfc..22cc5155 100644 --- a/plugins/calendar/skins/default/calendar.css +++ b/plugins/calendar/skins/default/calendar.css @@ -43,7 +43,7 @@ body.calendarmain { position: absolute; left: 244px; width: 8px; - top: 27px; + top: 37px; bottom: 0; background: url('images/toggle.gif') 0 48% no-repeat transparent; cursor: pointer; @@ -226,7 +226,7 @@ pre { } #quicksearchbar { - right: 10px; + right: 4px; } #eventshow, @@ -469,7 +469,7 @@ a.alarm-action-snooze:after { /* fullcalendar style overrides */ -.fc-content { +.rcube-fc-content { position: absolute !important; top: 37px; left: 0; @@ -543,7 +543,7 @@ div.fc-event-location { background: #dddddd; background-image: -moz-linear-gradient(center top, #f4f4f4, #d2d2d2); background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0.00, #f4f4f4), color-stop(1.00, #d2d2d2)); - filter: progid:DXImageTransform.Microsoft.gradient(enabled='true', startColorstr=#f4f4f4, endColorstr=#d2d2d2, GradientType=1); + filter: progid:DXImageTransform.Microsoft.gradient(enabled='true', startColorstr=#f4f4f4, endColorstr=#d2d2d2, GradientType=0); font-weight: bold; color: #333; } diff --git a/plugins/calendar/skins/default/iehacks.css b/plugins/calendar/skins/default/iehacks.css new file mode 100644 index 00000000..55505861 --- /dev/null +++ b/plugins/calendar/skins/default/iehacks.css @@ -0,0 +1,45 @@ +/* CSS hacks for IE 6/7 */ + +#main { + width: expression(Math.max(300, parseInt(document.documentElement.clientWidth)-10)+'px'); + height: expression(Math.max(300, parseInt(document.documentElement.clientHeight)-100)+'px'); +} + +#sidebar, +#sidebartoggle { + height: expression((parseInt(this.parentNode.offsetHeight)-37)+'px'); +} + +#calendar { + width: expression((parseInt(this.parentNode.offsetWidth)-parseInt(document.getElementById('sidebartoggle').offsetWidth)-parseInt(document.getElementById('sidebartoggle').offsetLeft)-4)+'px'); + height: expression(parseInt(this.parentNode.offsetHeight)+'px'); +} + +#calendars { + height: expression((parseInt(this.parentNode.offsetHeight)-220)+'px'); +} + +#calendartoolbar a.buttonPas { + filter: alpha(opacity=35); +} + +html #taskbar a.button-calendar { + background-image: url(images/calendar.gif); +} + +html #calendartoolbar a.button, +html #calendartoolbar a.buttonPas { + background-image: url(images/toolbar.gif); +} + +html.ie #datepicker a.ui-priority-secondary { + filter: alpha(opacity=40); +} + +#datepicker .ui-widget-header { + width: 102%; +} + +.fc-header-title h2 { + font-size: 16px; +} diff --git a/plugins/calendar/skins/default/images/calendar.gif b/plugins/calendar/skins/default/images/calendar.gif new file mode 100644 index 0000000000000000000000000000000000000000..4b25de072c75b10e3aa3658b2966c7651dcc0dda GIT binary patch literal 546 zcmV+-0^R*bNk%w1VHf}y0M$PL=}=JG;^JCsYwPXp);v6lnwpAuc=Pk~c87=btE>5B zWS4}5)ZN|D*4C}Jx9j=&!OP2>ii+gqh|{K@bJdc(t?wd`276w`ugSc^!)z* zzRSzE#KfASqJ?^To~^A(T3Y>aas7UN?DX{M^77&B?f3ip^!fS0FE5`bC&tFc;Ymq# zVq*V;gOPuK&NMWFZ*TTwWbpR(@?Ku-Q&ZdN>E7$>;^N}^{QTnc^VsO<@K{)AS6Bc4 z|NQ*?A^8LW002J#EC2ui02lxm000L6z@KnPEEvI{U|jYKI`N<^>M@CH*BG z7bX;_&@aG*4*v2DG4P;*!-p0GaB#>#K!=A93@oHzqNB%%985R}LDEA<3L1qNpm3w* zjU5gqcyLLxCCVW&G}zb)B7^`x5IchkwV@%#kQN$tC|%05sZtFsjy}*qwW`&tR3AkB kG2lawuVBN94f|ohj{^fF;8@GHt=qK{1{`2Qmq`!+JEQRkw*UYD literal 0 HcmV?d00001 diff --git a/plugins/calendar/skins/default/images/toolbar.gif b/plugins/calendar/skins/default/images/toolbar.gif new file mode 100644 index 0000000000000000000000000000000000000000..2cf2693c5a7957cfc0faff3d83fc24b8551b170d GIT binary patch literal 6186 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 <roundcube:object name="pagetitle" /> +