From e059785d00bda35e0e74a7eeff7675a7f43eac90 Mon Sep 17 00:00:00 2001 From: Thomas Bruederli Date: Thu, 18 Oct 2012 12:23:17 +0200 Subject: [PATCH] Some tweaks to make tasklist work in IE<9 --- plugins/tasklist/skins/larry/iehacks.css | 90 ++++++++++++++++++ plugins/tasklist/skins/larry/sprites.png | Bin 2944 -> 3016 bytes plugins/tasklist/skins/larry/tasklist.css | 37 ++++++- .../skins/larry/templates/mainview.html | 1 + plugins/tasklist/tasklist.js | 24 +++-- plugins/tasklist/tasklist_ui.php | 2 +- 6 files changed, 142 insertions(+), 12 deletions(-) create mode 100644 plugins/tasklist/skins/larry/iehacks.css diff --git a/plugins/tasklist/skins/larry/iehacks.css b/plugins/tasklist/skins/larry/iehacks.css new file mode 100644 index 00000000..9b51999f --- /dev/null +++ b/plugins/tasklist/skins/larry/iehacks.css @@ -0,0 +1,90 @@ +/** + * Roundcube Taklist plugin CSS hacks for IE < 9 + * + * Copyright (c) 2012, Kolab Systems AG + * + * The contents are subject to the Creative Commons Attribution-ShareAlike + * License. It is allowed to copy, distribute, transmit and to adapt the work + * by keeping credits to the original autors in the README file. + * See http://creativecommons.org/licenses/by-sa/3.0/ for details. + * + * $Id$ + */ + +#tasksview { + background: transparent; + filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#33ffffff,endColorstr=#33ffffff); + zoom: 1; +} + +#tasksview .buttonbar { + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#dfdfdf', GradientType=0); +} + +html.ie #taskselector li .count:after { + bottom: -4px; +} + +#thelist .taskitem.dragging .taskhead { + filter: alpha(opacity=50); +} + +#thelist .taskhead.complete { + filter: alpha(opacity=60); +} + +#thelist .taskhead { + filter: progid:DXImageTransform.Microsoft.Shadow(color=#33666666,direction=180,strength=2); +} + +/*** Special hacks for IE7 only ***/ + +html.ie7 #taskselector li .count { + position: relative; + top: 0px; + left: 5px; +} + +html.ie7 #taskselector li.selected .count { + background: #d9ecf4; + color: #004458; +} + +html.ie7 #taskselector li.selected.overdue .count { + background: #ff3800; + color: #fff; +} + +html.ie7 #tagslist li, +html.ie7 #taskselector li { + float: left; +} + +html.ie7 .taskitem { + +} + +html.ie7 .taskhead .title { + position: relative; + top: -3px; +} + +html.ie7 .taskitem .childtoggle { + display: block; + /* workaround for text-indent which also offsets the background image */ + text-indent: 0; + font-size: 0; + line-height: 0; + text-align: right; + text-decoration: none; +} + +html.ie7 .taskhead .tags { + height: 18px; +} + +html.ie7 .taskhead .tags .tag { + display: inline-block; + padding-bottom: 2px; +} + diff --git a/plugins/tasklist/skins/larry/sprites.png b/plugins/tasklist/skins/larry/sprites.png index 8d82f774449d3352636643507a2fc38ebc742fdb..5224f6f7b6d6733ba78808d24de9f801f7bd3c4c 100644 GIT binary patch delta 2973 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 T(!)0F00000NkvXXu0mjf5!j@W delta 2900 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 <roundcube:object name="pagetitle" /> + diff --git a/plugins/tasklist/tasklist.js b/plugins/tasklist/tasklist.js index 0b394944..aaa017d0 100644 --- a/plugins/tasklist/tasklist.js +++ b/plugins/tasklist/tasklist.js @@ -158,7 +158,7 @@ function rcube_tasklist_ui(settings) // clear form this.reset(); return false; - }); + }).find('input[type=text]').placeholder(rcmail.gettext('createnewtask','tasklist')); // click-handler on tags list $(rcmail.gui_objects.tagslist).click(function(e){ @@ -169,7 +169,7 @@ function rcube_tasklist_ui(settings) tag = item.data('value'); // reset selection on regular clicks - var index = tagsfilter.indexOf(tag); + var index = $.inArray(tag, tagsfilter); var shift = e.shiftKey || e.ctrlKey || e.metaKey; if (!shift) { @@ -193,6 +193,10 @@ function rcube_tasklist_ui(settings) list_tasks(); + // clear text selection in IE after shift+click + if (shift && document.selection) + document.selection.empty(); + e.preventDefault(); return false; }) @@ -254,7 +258,7 @@ function rcube_tasklist_ui(settings) } input.datepicker('destroy').remove(); link.html(dateText || rcmail.gettext('nodate','tasklist')); - }, + } }, extended_datepicker_settings) ) .datepicker('setDate', rec.date) @@ -320,7 +324,7 @@ function rcube_tasklist_ui(settings) $(input).datepicker('setDate', null).datepicker('hide'); }); }, 1); - }, + } }, datepicker_settings); } @@ -490,7 +494,7 @@ function rcube_tasklist_ui(settings) // find new tags var newtags = []; for (var i=0; i < taglist.length; i++) { - if (tags.indexOf(taglist[i]) < 0) + if ($.inArray(taglist[i], tags) < 0) newtags.push(taglist[i]); } tags = tags.concat(newtags); @@ -540,7 +544,7 @@ function rcube_tasklist_ui(settings) var id = rec.id, oldid = rec.tempid || id, - oldindex = listindex.indexOf(oldid), + oldindex = $.inArray(oldid, listindex), list = me.tasklists[rec.list]; if (oldindex >= 0) @@ -551,7 +555,7 @@ function rcube_tasklist_ui(settings) listdata[id] = rec; // register a forward-pointer to child tasks - if (rec.parent_id && listdata[rec.parent_id] && listdata[rec.parent_id].children && listdata[rec.parent_id].children.indexOf(id) >= 0) + if (rec.parent_id && listdata[rec.parent_id] && listdata[rec.parent_id].children && $.inArray(id, listdata[rec.parent_id].children) >= 0) listdata[rec.parent_id].children.push(id); if (list.active) @@ -676,7 +680,7 @@ function rcube_tasklist_ui(settings) // remove from list index var oldlist = listindex.join('%%%'); - var oldindex = listindex.indexOf(rec.id); + var oldindex = $.inArray(rec.id, listindex); if (oldindex >= 0) { slice = listindex.slice(0,oldindex); listindex = slice.concat(listindex.slice(oldindex+1)); @@ -704,7 +708,7 @@ function rcube_tasklist_ui(settings) } }); - index = listindex.indexOf(next_id); + index = $.inArray(next_id, listindex); if (next_li) { if (animated) insert_animated(li, null, next_li); @@ -1297,7 +1301,7 @@ function rcube_tasklist_ui(settings) if (match && tagsfilter.length) { match = rec.tags && rec.tags.length; for (var i=0; match && i < tagsfilter.length; i++) { - if (rec.tags.indexOf(tagsfilter[i]) < 0) + if ($.inArray(tagsfilter[i], rec.tags) < 0) match = false; } } diff --git a/plugins/tasklist/tasklist_ui.php b/plugins/tasklist/tasklist_ui.php index cd91c765..0a9f3f1f 100644 --- a/plugins/tasklist/tasklist_ui.php +++ b/plugins/tasklist/tasklist_ui.php @@ -181,7 +181,7 @@ class tasklist_ui { $attrib += array('action' => $this->rc->url('add'), 'method' => 'post', 'id' => 'quickaddform'); - $input = new html_inputfield(array('name' => 'text', 'id' => 'quickaddinput', 'placeholder' => $this->plugin->gettext('createnewtask'))); + $input = new html_inputfield(array('name' => 'text', 'id' => 'quickaddinput')); $button = html::tag('input', array('type' => 'submit', 'value' => '+', 'class' => 'button mainaction')); $this->rc->output->add_gui_object('quickaddform', $attrib['id']);