diff options
Diffstat (limited to 'skins')
58 files changed, 646 insertions, 1338 deletions
diff --git a/skins/classic/addressbook.css b/skins/classic/addressbook.css index 2fcb1715a..ebf9ab9d9 100644 --- a/skins/classic/addressbook.css +++ b/skins/classic/addressbook.css @@ -144,28 +144,6 @@ width: 280px; } -#directorylist, -#directorylist li ul -{ - list-style: none; - margin: 0; - padding: 0; - background-color: #FFFFFF; -} - -#directorylist li ul -{ - border-top: 1px solid #EBEBEB; -} - -#directorylist li -{ - display: block; - font-size: 11px; - border-bottom: 1px solid #EBEBEB; - white-space: nowrap; -} - #directorylist li a { cursor: default; @@ -176,7 +154,9 @@ height: 16px; text-decoration: none; white-space: nowrap; - background: url(images/icons/folders.png) 5px -108px no-repeat; + background-image: url(images/icons/folders.png); + background-position: 5px -108px; + background-repeat: no-repeat; } #directorylist li ul li a @@ -184,11 +164,6 @@ padding-left: 45px; } -#directorylist li ul li:last-child -{ - border-bottom: 0; -} - #directorylist li.contactgroup a { background-position: 22px -143px; @@ -199,18 +174,6 @@ background-position: 6px -162px; } -#directorylist li.selected > a -{ - color: #FFF; - font-weight: bold; - background-color: #929292; -} - -#directorylist li.droptarget -{ - background-color: #FFFFA6; -} - #contacts-table { width: 100%; diff --git a/skins/classic/common.css b/skins/classic/common.css index 3ebe82dab..ddcf53a3a 100644 --- a/skins/classic/common.css +++ b/skins/classic/common.css @@ -55,6 +55,13 @@ a.tab text-align: center; } +a.disabled +{ + color: #999; + text-decoration: none; + cursor: default; +} + hr { height: 1px; @@ -495,6 +502,7 @@ body.iframe .boxtitle border-radius: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; + box-shadow: 1px 1px 12px #999; -moz-box-shadow: 1px 1px 12px #999; -webkit-box-shadow: #999 1px 1px 12px; } @@ -538,6 +546,7 @@ body.iframe .boxtitle .popupmenu li a.active:visited { color: #333; + cursor: pointer; } .popupmenu li a.active:hover, @@ -660,6 +669,12 @@ ul.treelist li div.treetoggle cursor: pointer; } +ul.treelist li ul li div.treetoggle +{ + left: 28px !important; + left: 4px; +} + ul.treelist li div.collapsed { background: url(images/icons/collapsed.png) bottom right no-repeat; @@ -671,20 +686,89 @@ ul.treelist li div.expanded } +ul.treelist, +ul.treelist li ul +{ + list-style: none; + margin: 0; + padding: 0; + background-color: #FFFFFF; +} + +ul.treelist li ul +{ + border-top: 1px solid #EBEBEB; +} + +ul.treelist li +{ + display: block; + font-size: 11px; + border-bottom: 1px solid #EBEBEB; + white-space: nowrap; +} + +ul.treelist li a +{ + cursor: default; + display: block; + padding-left: 25px; + padding-top: 2px; + padding-bottom: 2px; + height: 16px; + text-decoration: none; + white-space: nowrap; +} + +ul.treelist li ul li a +{ + padding-left: 45px; +} + +ul.treelist ul ul li a +{ + padding-left: 65px; +} + +ul.treelist li ul li:last-child +{ + border-bottom: 0; +} + +ul.treelist li.selected > a +{ + color: #FFF; + font-weight: bold; + background-color: #929292; +} + +ul.treelist li.droptarget +{ + background-color: #FFFFA6; +} + + /***** mac-style quicksearch field *****/ +div.searchbox, #quicksearchbar { - position: absolute; - top: 55px; - right: 10px; + position: relative; width: 190px; height: 20px; text-align: right; background: url(images/searchfield.gif) top left no-repeat; } -#searchreset +#quicksearchbar +{ + position: absolute; + top: 55px; + right: 10px; +} + +#searchreset, +div.searchbox a.searchreset { position: absolute; top: 3px; @@ -692,19 +776,42 @@ ul.treelist li div.expanded text-decoration: none; } -#searchmenulink +#searchmenulink, +div.searchbox a.searchmenu, +div.searchbox a.searchicon { position: absolute; top: 3px; right: 168px; } +div.searchbox a.searchreset +{ + display: block; + width: 14px; + height: 14px; + overflow: hidden; + white-space: nowrap; + text-indent: 50000px; + background: url(images/icons/reset.gif) top left no-repeat; +} + +div.searchbox a.searchicon +{ + display: inline-block; + width: 16px; + height: 16px; + overflow: hidden; + background: url(images/icons/glass.png) top left no-repeat; +} + #quicksearchbar img { vertical-align: middle; } -#quicksearchbox +#quicksearchbox, +div.searchbox > input { position: absolute; top: 2px; @@ -765,6 +872,7 @@ ul.treelist li div.expanded border-radius: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; + box-shadow: 1px 1px 12px #999; -moz-box-shadow: 1px 1px 12px #999; -webkit-box-shadow: #999 1px 1px 12px; } @@ -865,11 +973,6 @@ a.rcmContactAddress:hover font-weight: bold; } -#console -{ - opacity: 0.8; -} - .disabled, a.disabled { @@ -881,6 +984,10 @@ font.bold font-weight: bold; } +.formbuttons +{ + text-align: center; +} /***** onclick menu list *****/ diff --git a/skins/classic/editor_content.css b/skins/classic/editor_content.css index aabed07b5..67480ab77 100644 --- a/skins/classic/editor_content.css +++ b/skins/classic/editor_content.css @@ -12,20 +12,15 @@ body { margin-top: 2px; } -pre -{ +div.pre { margin: 0; padding: 0; - white-space: -moz-pre-wrap !important; - white-space: pre-wrap !important; - white-space: pre; - word-wrap: break-word; /* IE (and Safari) */ + font-family: monospace; } blockquote { - padding-left: 5px; border-left: #1010ff 2px solid; - margin-left: 5px; - width: 100%; + margin: 0; + padding: 0 0.4em; } diff --git a/skins/classic/functions.js b/skins/classic/functions.js index aaaf393e7..b4f6ed766 100644 --- a/skins/classic/functions.js +++ b/skins/classic/functions.js @@ -1,5 +1,18 @@ /** * Roundcube functions for default skin interface + * + * @licstart The following is the entire license notice for the + * JavaScript code in this file. + * + * Copyright (c) 2006-2014, The Roundcube Dev Team + * + * The JavaScript code in this page is free software: you can redistribute it + * and/or modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 of + * the License, or (at your option) any later version. + * + * @licend The above is the entire license notice + * for the JavaScript code in this file. */ /** @@ -99,6 +112,7 @@ function rcube_mail_ui() mailboxmenu: {id:'mailboxoptionsmenu', above:1}, composemenu: {id:'composeoptionsmenu', editable:1, overlap:1}, spellmenu: {id:'spellmenu'}, + responsesmenu: {id:'responsesmenu'}, // toggle: #1486823, #1486930 uploadmenu: {id:'attachment-form', editable:1, above:1, toggle:!bw.ie&&!bw.linux }, uploadform: {id:'upload-form', editable:1, toggle:!bw.ie&&!bw.linux } @@ -155,11 +169,6 @@ show_popupmenu: function(popup, show) } obj[show?'show':'hide'](); - - if (bw.ie6 && this.popups[popup].overlap) { - $('select').css('visibility', show?'hidden':'inherit'); - $('select', obj).css('visibility', 'inherit'); - } }, dragmenu: function(show) @@ -207,11 +216,13 @@ searchmenu: function(show) var n, all, list = $('input:checkbox[name="s_mods[]"]', obj), mbox = rcmail.env.mailbox, - mods = rcmail.env.search_mods; + mods = rcmail.env.search_mods, + scope = rcmail.env.search_scope || 'base'; if (rcmail.env.task == 'mail') { mods = mods[mbox] ? mods[mbox] : mods['*']; all = 'text'; + $('input:radio[name="s_scope"]').prop('checked', false).filter('#s_scope_'+scope).prop('checked', true); } else { all = '*'; @@ -236,7 +247,11 @@ set_searchmod: function(elem) { var all, m, task = rcmail.env.task, mods = rcmail.env.search_mods, - mbox = rcmail.env.mailbox; + mbox = rcmail.env.mailbox, + scope = $('input[name="s_scope"]:checked').val(); + + if (scope == 'all') + mbox = '*'; if (!mods) mods = {}; @@ -258,23 +273,24 @@ set_searchmod: function(elem) m[elem.value] = 1; // mark all fields - if (elem.value != all) - return; - - $('input:checkbox[name="s_mods[]"]').map(function() { - if (this == elem) - return; + if (elem.value == all) { + $('input:checkbox[name="s_mods[]"]').map(function() { + if (this == elem) + return; + + this.checked = true; + if (elem.checked) { + this.disabled = true; + delete m[this.value]; + } + else { + this.disabled = false; + m[this.value] = 1; + } + }); + } - this.checked = true; - if (elem.checked) { - this.disabled = true; - delete m[this.value]; - } - else { - this.disabled = false; - m[this.value] = 1; - } - }); + rcmail.set_searchmods(m); }, listmenu: function(show) @@ -319,9 +335,6 @@ listmenu: function(show) } }); $('#listmenu fieldset').css("min-height", maxheight+"px") - // IE6 complains if you set this attribute using either method: - //$('#listmenu fieldset').css({'height':'auto !important'}); - //$('#listmenu fieldset').css("height","auto !important"); .height(maxheight); }; }, @@ -410,20 +423,21 @@ menu_save: function(prop) this.save_listmenu(); }, -body_mouseup: function(evt, p) +body_mouseup: function(e) { - var i, target = rcube_event.get_target(evt); + var target = e.target; ref = this; - for (i in this.popups) { - if (this.popups[i].obj.is(':visible') && target != rcube_find_object(i+'link') - && !this.popups[i].toggle - && (!this.popups[i].editable || !this.target_overlaps(target, this.popups[i].id)) - && (!this.popups[i].sticky || !rcube_mouse_is_over(evt, rcube_find_object(this.popups[i].id))) + $.each(this.popups, function(i, popup) { + if (popup.obj.is(':visible') && target != rcube_find_object(i + 'link') + && !popup.toggle + && target != popup.obj.get(0) // check if scroll bar was clicked (#1489832) + && (!popup.editable || !ref.target_overlaps(target, popup.id)) + && (!popup.sticky || !rcube_mouse_is_over(e, rcube_find_object(popup.id))) && !$(target).is('.folder-selector-link') && !$(target).children('.folder-selector-link').length ) { window.setTimeout('rcmail_ui.show_popup("'+i+'",false);', 50); } - } + }); }, target_overlaps: function (target, elementid) @@ -437,9 +451,9 @@ target_overlaps: function (target, elementid) return false; }, -body_keydown: function(evt, p) +body_keydown: function(e) { - if (rcube_event.get_keycode(evt) == 27) { + if (e.keyCode == 27) { for (var k in this.popups) { if (this.popups[k].obj.is(':visible')) this.show_popup(k, false); @@ -470,7 +484,7 @@ switch_preview_pane: function(elem) } else { prev_frm.hide(); - if (bw.ie6 || bw.ie7) { + if (bw.ie7) { var fr = document.getElementById('mailcontframe'); fr.style.bottom = 0; fr.style.height = parseInt(fr.parentNode.offsetHeight)+'px'; @@ -786,7 +800,7 @@ function iframe_events() // this==iframe try { var doc = this.contentDocument ? this.contentDocument : this.contentWindow ? this.contentWindow.document : null; - rcube_event.add_listener({ element: doc, object:rcmail_ui, method:'body_mouseup', event:'mouseup' }); + $(doc).mouseup(function(e) { rcmail_ui.body_mouseup(e); }); } catch (e) { // catch possible "Permission denied" error in IE @@ -946,8 +960,9 @@ var rcmail_ui; function rcube_init_mail_ui() { rcmail_ui = new rcube_mail_ui(); - rcube_event.add_listener({ object:rcmail_ui, method:'body_mouseup', event:'mouseup' }); - rcube_event.add_listener({ object:rcmail_ui, method:'body_keydown', event:'keydown' }); + + $(document.body).mouseup(function(e) { rcmail_ui.body_mouseup(e); }) + .mousedown(function(e) { rcmail_ui.body_keydown(e); }); rcmail.addEventListener('init', function() { if (rcmail.env.quota_content) @@ -955,7 +970,7 @@ function rcube_init_mail_ui() rcmail.addEventListener('setquota', update_quota); $('iframe').load(iframe_events) - .contents().mouseup(function(e){rcmail_ui.body_mouseup(e)}); + .contents().mouseup(function(e) { rcmail_ui.body_mouseup(e); }); if (rcmail.env.task == 'mail') { rcmail.addEventListener('enable-command', 'enable_command', rcmail_ui); diff --git a/skins/classic/ie6hacks.css b/skins/classic/ie6hacks.css deleted file mode 100644 index a431ee45e..000000000 --- a/skins/classic/ie6hacks.css +++ /dev/null @@ -1,184 +0,0 @@ -/* CSS hacks for IE versions 5,6 */ - -#taskbar -{ - background: url(images/taskbar.gif) top right no-repeat; - width: expression((parseInt(document.documentElement.clientWidth)-250)+'px'); -} - -img -{ - behavior: url(skins/classic/pngbehavior.htc); -} - -#logo -{ - width: 178px; - height: 47px; -} - -body > #message div.notice, -body > #message div.error, -body > #message div.warning, -body > #message div.confirmation, -#message-objects div.notice, -#message-objects div.error, -#message-objects div.warning, -#message-objects div.confirmation -{ - background-image: url(images/display/icons.gif); -} - -#messagemenu li a -{ - background-image: url(images/messageactions.gif); -} - -#mailboxlist li -{ - background-image: url(images/icons/folders.gif); -} - -#messagetoolbar a -{ - display: block; - float: left; - padding-right: 10px; -} - -.boxfooter a.button, -.boxfooter a.buttonPas -{ - background-image: url(images/icons/groupactions.gif); -} - -.pagenav -{ - width: 250px; -} - -.pagenav a.button, -.pagenav a.buttonPas -{ - background-image: url(images/pagenav.gif); -} - -#listcontrols a.button, -#listcontrols a.buttonPas { - background-image: url(images/mail_footer.gif); -} - -#messagetoolbar a.button, -#messagetoolbar a.buttonPas { - background-image: url(images/mail_toolbar.gif); -} - -#abooktoolbar a.button, -#abooktoolbar a.buttonPas, -#abooktoolbar span.separator { - background-image: url(images/abook_toolbar.gif); -} - -ul.toolbarmenu li a, -.popupmenu li a -{ - clear: left; - height: expression(Math.min(14, parseInt(document.documentElement.clientHeight))+'px'); - width: expression(Math.min(130, parseInt(document.documentElement.clientWidth))+'px'); -} - -ul.toolbarmenu li.separator_below -{ - padding-bottom: 3px; -} - -.boxfooter -{ - width: 100%; - bottom: -1px; -} - -.boxtitle, -#directorylist li a -{ - width: auto; -} - -#directorylist li -{ - background-image: url(images/icons/folders.gif); -} - -.boxlistcontent -{ - top: 21px; - height: expression((parseInt(this.parentNode.offsetHeight)-24-parseInt(this.style.top?this.style.top:21))+'px'); -} - -#compose-div .boxlistcontent -{ - height: expression((parseInt(this.parentNode.offsetHeight)-23-parseInt(this.style.top?this.style.top:21))+'px'); -} - -#compose-body-div -{ - height: expression(parseInt(this.parentNode.offsetHeight)+'px'); -} - -#folder-manager -{ - height: expression((parseInt(document.documentElement.clientHeight)-105)+'px'); -} - -#messagelist tr td div.collapsed, -#messagelist tr td div.expanded, -#messagelist tr td.threads div.listmenu, -#messagelist tr td.attachment span.attachment, -#messagelist tr td.attachment span.report, -#messagelist tr td.priority span.priority, -#messagelist tr td.priority span.prio1, -#messagelist tr td.priority span.prio2, -#messagelist tr td.priority span.prio3, -#messagelist tr td.priority span.prio4, -#messagelist tr td.priority span.prio5, -#messagelist tr td.flag span.flagged, -#messagelist tr td.flag span.unflagged:hover, -#messagelist tr td.status span.status, -#messagelist tr td.status span.msgicon, -#messagelist tr td.status span.deleted, -#messagelist tr td.status span.unread, -#messagelist tr td.status span.unreadchildren, -#messagelist tr td.subject span.msgicon, -#messagelist tr td.subject span.deleted, -#messagelist tr td.subject span.unread, -#messagelist tr td.subject span.replied, -#messagelist tr td.subject span.forwarded, -#messagelist tr td.subject span.unreadchildren -{ - background-image: url(images/messageicons.gif); -} - -#messagelist tr td div.collapsed, -#messagelist tr td div.expanded { - background-color: #fff; -} - -body.iframe .boxtitle -{ - position: absolute; -} - -#subscription-table -{ - width: auto; -} - -#sourcename -{ - zoom: 1; -} - -#abookactions a -{ - background-image: url("images/icons/groupactions.gif"); -} diff --git a/skins/classic/iehacks.css b/skins/classic/iehacks.css deleted file mode 100644 index fabf73db6..000000000 --- a/skins/classic/iehacks.css +++ /dev/null @@ -1,295 +0,0 @@ - -input, textarea -{ - border-style: expression(this.type=='checkbox' || this.type=='radio' || this.id=='quicksearchbox' ? 'none' : 'solid'); - border-width: expression(this.type=='checkbox' || this.type=='radio' ? '0' : '1px'); - border-color: expression(this.type=='checkbox' || this.type=='radio' ? '' : '#666666'); - background-color: expression(this.type=='checkbox' || this.type=='radio' ? 'transparent' : '#ffffff'); -} - -body.iframe -{ - margin-top: 0px; -} - -body.iframe div.boxcontent -{ - margin-top: 20px; - z-index: 2; -} - -body.iframe div.boxtitle -{ - z-index: 100; -} - -body.iframe #prefs-details -{ - padding-top: 1px; -} - -#login-form form -{ - margin-top: 0; -} - -.pagenav a.buttonPas -{ - filter: alpha(opacity=35); -} - -body > #message -{ - filter: alpha(opacity=85); -} - -.popupmenu -{ - background-color: #ffffff; -} - -#tabsbar, -#partheader -{ - width: expression((parseInt(document.documentElement.clientWidth)-240)+'px'); -} - -#mainscreen -{ - height: expression((parseInt(document.documentElement.clientHeight)-105)+'px'); -} - -#mainscreen, -#messagepartcontainer -{ - width: expression((parseInt(document.documentElement.clientWidth)-40)+'px'); -} - -#messagetoolbar -{ - width: expression((parseInt(document.documentElement.clientWidth)-215)+'px'); - z-index: 240; -} - -#messagetoolbar select.mboxlist -{ - margin: 0 8px; - top: 8px; -} - -div.messageheaderbox -{ - margin-top: 0px; -} - -body.iframe div.messageheaderbox -{ - margin-top: 6px; -} - -#abooktoolbar a.buttonPas -{ - filter: alpha(opacity=35); - background-image: url(images/abook_toolbar.gif); -} - -#messagetoolbar a.buttonPas -{ - filter: alpha(opacity=35); - background-image: url(images/mail_toolbar.gif); -} - -#listcontrols a.buttonPas -{ - filter: alpha(opacity=35); -} - -#quicksearchbar -{ - z-index: 240; -} - -#addresslist, -#sectionslist, -#identities-list, -#mailleftcontainer, -#mailrightcontainer, -#compose-container, -#compose-attachments, -#compose-contacts, -#mailcontframe, -#mailboxlist-container, -#mailrightcontent, -#messageframe, -#identity-details, -#contacts-box, -#prefs-box, -#folder-box, -#directorylistbox, -#addressscreen -{ - height: expression(parseInt(this.parentNode.offsetHeight)+'px'); -} - -#mailrightcontainer -{ - width: expression((parseInt(this.parentNode.offsetWidth)-170)+'px'); -} - -#messagepartcontainer -{ - height: expression((parseInt(document.documentElement.clientHeight)-90)+'px'); -} - -#mailrightcontent -{ - width: 100%; -} - -#compose-div -{ - height: expression((parseInt(this.parentNode.offsetHeight)-1-parseInt(document.getElementById('compose-headers').offsetHeight))+'px'); -} - -#compose-attachments ul li -{ - width: 1000px; /* for IE7 */ -} - -#compose-attachments li a -{ - float: left; /* for IE7 */ -} - -#messagelist -{ - width: inherit; - *width: auto; /* IE6/7 conditional hack */ - border-collapse: collapse; -} - -#messagelist thead tr td, -#messagelist tbody tr td -{ - height: 18px; -} - -#messagelist tbody tr.unroot td.subject -{ - text-decoration: underline; -} - -#messageframe -{ - width: expression((parseInt(this.parentNode.offsetWidth)-180)+'px'); - overflow: hidden; -} - -body.iframe -{ - width: expression((parseInt(document.documentElement.clientWidth))+'px'); -} - -div.message-part pre, -div.message-htmlpart pre, -div.message-part div.pre -{ - word-wrap: break-word; -} - -#addressscreen -{ - width: expression((parseInt(document.documentElement.clientWidth)-245)+'px'); -} - -#contacts-box, -#prefs-box, -#folder-box -{ - width: expression((parseInt(this.parentNode.offsetWidth)-555)+'px'); - overflow: hidden; -} - -#rcmdraglayer -{ - filter: alpha(opacity=82); - padding-left: 20px; -} - -div.draglayercopy -{ - border-color: #00cc00; - background: url(images/messageactions.png) 0 -125px no-repeat #fff; -} - -html.ie8 .draglayercopy:before -{ - content: ""; - display: none; -} - -ul.toolbarmenu -{ - margin: 0 0 -4px 0; -} - -.popupmenu ul li, -ul.toolbarmenu li -{ - min-width: auto; -} - -.popupmenu ul li a, -ul.toolbarmenu li a -{ - min-height: auto; -} - -.popupmenu li.block a -{ - clear: none; - display: inline-block; - padding-left: 2px; -} - -#console -{ - filter: alpha(opacity=80); -} - -table.records-table thead tr td -{ - height: 19px; -} - -#listmenu fieldset -{ - margin: 0 4px; - padding: 0.8em; -} - -#listcontrols input -{ - margin-top: 2px; -} - -#contact-details -{ - margin-top: 20px; -} - -#contact-details form { - margin-top: -1px; -} - -.contactfieldgroup legend -{ - padding: 0 0 0.5em 0; - margin-left: -4px; -} - -/* fix "jumping" login form in IE7 */ -#login-form div.boxcontent -{ - overflow: hidden; -} diff --git a/skins/classic/images/abook_toolbar.gif b/skins/classic/images/abook_toolbar.gif Binary files differdeleted file mode 100644 index 2e8f4e259..000000000 --- a/skins/classic/images/abook_toolbar.gif +++ /dev/null diff --git a/skins/classic/images/icons/folders.gif b/skins/classic/images/icons/folders.gif Binary files differdeleted file mode 100644 index 279519496..000000000 --- a/skins/classic/images/icons/folders.gif +++ /dev/null diff --git a/skins/classic/images/icons/glass.gif b/skins/classic/images/icons/glass.gif Binary files differdeleted file mode 100644 index d86aec5c0..000000000 --- a/skins/classic/images/icons/glass.gif +++ /dev/null diff --git a/skins/classic/images/icons/groupactions.gif b/skins/classic/images/icons/groupactions.gif Binary files differdeleted file mode 100644 index eba6a6caf..000000000 --- a/skins/classic/images/icons/groupactions.gif +++ /dev/null diff --git a/skins/classic/images/mail_footer.gif b/skins/classic/images/mail_footer.gif Binary files differdeleted file mode 100644 index 302b55870..000000000 --- a/skins/classic/images/mail_footer.gif +++ /dev/null diff --git a/skins/classic/images/mail_toolbar.gif b/skins/classic/images/mail_toolbar.gif Binary files differdeleted file mode 100644 index 4bddf5b45..000000000 --- a/skins/classic/images/mail_toolbar.gif +++ /dev/null diff --git a/skins/classic/images/mail_toolbar.png b/skins/classic/images/mail_toolbar.png Binary files differindex 3ef003f23..357357795 100644 --- a/skins/classic/images/mail_toolbar.png +++ b/skins/classic/images/mail_toolbar.png diff --git a/skins/classic/images/messageactions.gif b/skins/classic/images/messageactions.gif Binary files differdeleted file mode 100644 index 3bdd0d735..000000000 --- a/skins/classic/images/messageactions.gif +++ /dev/null diff --git a/skins/classic/images/messageicons.gif b/skins/classic/images/messageicons.gif Binary files differdeleted file mode 100644 index 178e88597..000000000 --- a/skins/classic/images/messageicons.gif +++ /dev/null diff --git a/skins/classic/images/quota.gif b/skins/classic/images/quota.gif Binary files differdeleted file mode 100644 index b029e7d56..000000000 --- a/skins/classic/images/quota.gif +++ /dev/null diff --git a/skins/classic/images/taskbar.gif b/skins/classic/images/taskbar.gif Binary files differdeleted file mode 100644 index fe1adc325..000000000 --- a/skins/classic/images/taskbar.gif +++ /dev/null diff --git a/skins/classic/includes/links.html b/skins/classic/includes/links.html index 6d8d03c52..2f6ef0119 100644 --- a/skins/classic/includes/links.html +++ b/skins/classic/includes/links.html @@ -5,10 +5,6 @@ <roundcube:if condition="in_array(env:task, array('mail', 'addressbook', 'settings'))" /> <link rel="stylesheet" type="text/css" href="/<roundcube:var name="env:task" />.css" /> <roundcube:endif /> -<roundcube:if condition="browser:ie" /> -<!--[if lte IE 8]><link rel="stylesheet" type="text/css" href="/iehacks.css" /><![endif]--> -<!--[if lte IE 6]><link rel="stylesheet" type="text/css" href="/ie6hacks.css" /><![endif]--> -<roundcube:endif /> <roundcube:if condition="browser:safari" /> <link rel="stylesheet" type="text/css" href="/safari.css" /> <roundcube:endif />
\ No newline at end of file diff --git a/skins/classic/includes/messagetoolbar.html b/skins/classic/includes/messagetoolbar.html index 6936c7def..b6b16d635 100644 --- a/skins/classic/includes/messagetoolbar.html +++ b/skins/classic/includes/messagetoolbar.html @@ -17,6 +17,10 @@ <span id="forwardmenulink" onclick="rcmail_ui.show_popup('forwardmenu');return false"></span> </span> <roundcube:button command="delete" type="link" class="buttonPas delete" classAct="button delete" classSel="button deleteSel" title="deletemessage" content=" " /> +<roundcube:if condition="template:name == 'message'" /> + <roundcube:button command="move" type="link" class="buttonPas move" classAct="button move" classSel="button moveSel" label="move" title="moveto" content=" " data-menu-pos="bottom" /> + <roundcube:button command="print" type="link" class="buttonPas print" classAct="button print" classSel="button printSel" label="print" title="printmessage" content=" " /> +<roundcube:endif /> <roundcube:container name="toolbar" id="messagetoolbar" /> <roundcube:button name="markmenulink" id="markmenulink" type="link" class="button markmessage" title="markmessages" onclick="rcmail_ui.show_popup('markmenu');return false" content=" " /> <roundcube:button name="messagemenulink" id="messagemenulink" type="link" class="button messagemenu" title="moreactions" onclick="rcmail_ui.show_popup('messagemenu');return false" content=" " /> diff --git a/skins/classic/mail.css b/skins/classic/mail.css index f6459627f..a0d1f17cd 100644 --- a/skins/classic/mail.css +++ b/skins/classic/mail.css @@ -108,59 +108,68 @@ } #messagetoolbar a.print { - background-position: -224px 0; + background-position: -256px 0; } #messagetoolbar a.printSel { - background-position: -224px -32px; + background-position: -256px -32px; } #messagetoolbar a.markmessage { - background-position: -256px 0; + background-position: -288px 0; } #messagetoolbar a.messagemenu { - background-position: -288px 0; + background-position: -320px 0; + width: 34px; } #messagetoolbar a.spellcheck { - background-position: -384px 0; + background-position: -418px 0; } #messagetoolbar a.spellcheckSel { - background-position: -384px -32px; + background-position: -418px -32px; } #messagetoolbar a.attach { - background-position: -352px 0; + background-position: -386px 0; } #messagetoolbar a.attachSel { - background-position: -352px -32px; + background-position: -386px -32px; } #messagetoolbar a.insertsig { - background-position: -448px 0; + background-position: -482px 0; } #messagetoolbar a.insertsigSel { - background-position: -448px -32px; + background-position: -482px -32px; } #messagetoolbar a.savedraft { - background-position: -322px 0; + background-position: -354px 0; } #messagetoolbar a.savedraftSel { - background-position: -322px -32px; + background-position: -354px -32px; } #messagetoolbar a.send { - background-position: -416px 0; + background-position: -450px 0; } #messagetoolbar a.sendSel { - background-position: -416px -32px; + background-position: -450px -32px; +} + +#messagetoolbar a.move { + background-position: -580px 0; +} + +#messagetoolbar a.moveSel { + background-position: -580px -32px; } #messagetoolbar a.download { @@ -172,7 +181,7 @@ } #messagetoolbar a.responses { - background-position: -512px 0; + background-position: -548px 0; } #messagemenu li a.active:hover, @@ -539,6 +548,31 @@ left: 87px !important; } +#mailboxlist li.mailbox ul li.drafts a +{ + background-position: 21px -37px; +} + +#mailboxlist li.mailbox ul li.sent a +{ + background-position: 21px -54px; +} + +#mailboxlist li.mailbox ul li.junk a +{ + background-position: 21px -73px; +} + +#mailboxlist li.mailbox ul li.trash a +{ + background-position: 21px -180px; +} + +#mailboxlist li.mailbox ul li.trash.empty a +{ + background-position: 21px -90px; +} + #listcontrols { position: relative; @@ -976,6 +1010,16 @@ table.messagelist.fixedcopy padding: 0 2px; } +.messagelist tr td.folder +{ + width: 135px; +} + +.messagelist tr td.hidden +{ + display: none; +} + .messagelist tr.message { background-color: #FFF; @@ -1262,17 +1306,12 @@ div.message-htmlpart a color: #0000CC; } -div.message-part pre, -div.message-htmlpart pre, div.message-part div.pre { margin: 0px; padding: 0px; font-family: monospace; font-size: 12px; - white-space: -moz-pre-wrap !important; - white-space: pre-wrap !important; - white-space: pre; } div.message-part span.sig @@ -1286,8 +1325,10 @@ div.message-part blockquote border-left: 2px solid blue; border-right: 2px solid blue; background-color: #F6F6F6; - margin: 2px 0px; - padding: 1px 8px 1px 10px; + margin: 2px 0; + padding: 0 0.4em; + overflow: hidden; + text-overflow: ellipsis; } div.message-part blockquote blockquote @@ -1808,7 +1849,7 @@ input.from_address color: #999; } -#compose-contacts #quicksearchbar +#compose-contacts .searchbox { top: 2px; left: 7px; diff --git a/skins/classic/pngbehavior.htc b/skins/classic/pngbehavior.htc deleted file mode 100644 index 6f892df64..000000000 --- a/skins/classic/pngbehavior.htc +++ /dev/null @@ -1,84 +0,0 @@ -<public:component lightWeight="true"> -<public:attach event="onpropertychange" onevent="propertyChanged()" /> -<public:attach event="onbeforeprint" onevent="beforePrint()" for="window"/> -<public:attach event="onafterprint" onevent="afterPrint()" for="window"/> -<script> - -/* - * PNG Behavior - * - * This script was created by Erik Arvidsson (http://webfx.eae.net/contact.html#erik) - * for WebFX (http://webfx.eae.net) - * Copyright 2002-2004 - * - * For usage see license at http://webfx.eae.net/license.html - * - * Version: 1.02 - * Created: 2001-??-?? First working version - * Updated: 2002-03-28 Fixed issue when starting with a non png image and - * switching between non png images - * 2003-01-06 Fixed RegExp to correctly work with IE 5.0x - * 2004-05-09 When printing revert to original - * - */ - -var supported = /MSIE ((5\.5)|6)/.test(navigator.userAgent) && navigator.platform == "Win32", - realSrc, - blankSrc = "program/resources/blank.gif", - isPrinting = false; - -if (supported) fixImage(); - -function propertyChanged() { - if (!supported || isPrinting) return; - - var pName = event.propertyName; - if (pName != "src") return; - // if not set to blank - if (!new RegExp(blankSrc).test(src)) - fixImage(); -}; - -function fixImage() { - // get src - var src = element.src; - - // check for real change - if (src == realSrc && /\.png$/i.test(src)) { - element.src = blankSrc; - return; - } - - if ( ! new RegExp(blankSrc).test(src)) { - // backup old src - realSrc = src; - } - - // test for png - if (/\.png$/i.test(realSrc)) { - // set blank image - element.src = blankSrc; - // set filter - element.runtimeStyle.filter = "progid:DXImageTransform.Microsoft." + - "AlphaImageLoader(src='" + src + "',sizingMethod='scale')"; - } - else { - // remove filter - element.runtimeStyle.filter = ""; - } -} - -function beforePrint() { - isPrinting = true; - element.src = realSrc; - element.runtimeStyle.filter = ""; - realSrc = null; -} - -function afterPrint() { - isPrinting = false; - fixImage(); -} - -</script> -</public:component> diff --git a/skins/classic/splitter.js b/skins/classic/splitter.js index cec6a4713..d509f3b02 100644 --- a/skins/classic/splitter.js +++ b/skins/classic/splitter.js @@ -1,7 +1,19 @@ - /** * Roundcube splitter GUI class * + * @licstart The following is the entire license notice for the + * JavaScript code in this file. + * + * Copyright (c) 2006-2014, The Roundcube Dev Team + * + * The JavaScript code in this page is free software: you can redistribute it + * and/or modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 of + * the License, or (at your option) any later version. + * + * @licend The above is the entire license notice + * for the JavaScript code in this file. + * * @constructor */ function rcube_splitter(attrib) @@ -11,7 +23,6 @@ function rcube_splitter(attrib) this.id = attrib.id ? attrib.id : this.p1id + '_' + this.p2id + '_splitter'; this.orientation = attrib.orientation; this.horizontal = (this.orientation == 'horizontal' || this.orientation == 'h'); - this.offset = bw.ie6 ? 2 : 0; this.pos = attrib.start ? attrib.start * 1 : 0; this.relative = attrib.relative ? true : false; this.drag_active = false; @@ -67,7 +78,7 @@ function rcube_splitter(attrib) this.resize = function() { if (this.horizontal) { - var lh = this.layer.height - this.offset * 2; + var lh = this.layer.height; this.p1.style.height = Math.floor(this.pos - this.p1pos.top - lh / 2) + 'px'; this.p2.style.top = Math.ceil(this.pos + lh / 2) + 'px'; this.layer.move(this.layer.x, Math.round(this.pos - lh / 2 + 1)); diff --git a/skins/classic/templates/about.html b/skins/classic/templates/about.html index 429dfcf5f..36fb65739 100644 --- a/skins/classic/templates/about.html +++ b/skins/classic/templates/about.html @@ -20,7 +20,7 @@ <div id="license"> <roundcube:object name="aboutcontent" /> <h2 class="sysname">Roundcube Webmail <roundcube:object name="version" /></h2> -<p class="copyright">Copyright © 2005-2013, The Roundcube Dev Team</p> +<p class="copyright">Copyright © 2005-2014, The Roundcube Dev Team</p> <p class="license">This program is free software; you can redistribute it and/or modify it under the terms of the <a href="http://www.gnu.org/licenses/gpl.html" target="_blank">GNU General Public License</a> as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.<br/> diff --git a/skins/classic/templates/addressbook.html b/skins/classic/templates/addressbook.html index 429b83438..98658f28b 100644 --- a/skins/classic/templates/addressbook.html +++ b/skins/classic/templates/addressbook.html @@ -7,13 +7,9 @@ <script type="text/javascript" src="/functions.js"></script> <style type="text/css"> #addresslist { width: <roundcube:exp expression="!empty(cookie:addressviewsplitter) ? cookie:addressviewsplitter-5 : 245" />px; } -#contacts-box { left: <roundcube:exp expression="!empty(cookie:addressviewsplitter) ? cookie:addressviewsplitter+5 : 255" />px; - <roundcube:exp expression="browser:ie ? ('width:expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:addressviewsplitter) ? cookie:addressviewsplitter+5 : 255).')+\\'px\\');') : ''" /> -} +#contacts-box { left: <roundcube:exp expression="!empty(cookie:addressviewsplitter) ? cookie:addressviewsplitter+5 : 255" />px; } #directorylistbox { width: <roundcube:exp expression="!empty(cookie:addressviewsplitterd) ? cookie:addressviewsplitterd-5 : 195" />px; } -#addressscreen { left: <roundcube:exp expression="!empty(cookie:addressviewsplitterd) ? cookie:addressviewsplitterd+5 : 205" />px; - <roundcube:exp expression="browser:ie ? ('width:expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:addressviewsplitterd) ? cookie:addressviewsplitterd+5 : 205).')+\\'px\\');') : ''" /> -} +#addressscreen { left: <roundcube:exp expression="!empty(cookie:addressviewsplitterd) ? cookie:addressviewsplitterd+5 : 205" />px; } </style> </head> diff --git a/skins/classic/templates/compose.html b/skins/classic/templates/compose.html index 74d25778b..4705600c7 100644 --- a/skins/classic/templates/compose.html +++ b/skins/classic/templates/compose.html @@ -10,9 +10,7 @@ <script type="text/javascript" src="/splitter.js"></script> <style type="text/css"> #compose-contacts { width: <roundcube:exp expression="!empty(cookie:composesplitterv1) ? cookie:composesplitterv1-5 : 195" />px; } -#compose-container { left: <roundcube:exp expression="!empty(cookie:composesplitterv1) ? cookie:composesplitterv1+5 : 205" />px; -<roundcube:exp expression="browser:ie ? ('width: expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:composesplitterv1) ? cookie:composesplitterv1+5 : 200).')+\\'px\\');') : ''" /> -} +#compose-container { left: <roundcube:exp expression="!empty(cookie:composesplitterv1) ? cookie:composesplitterv1+5 : 205" />px; } </style> </head> <roundcube:if condition="env:extwin" /> @@ -52,7 +50,7 @@ <div id="compose-contacts"> <div class="boxtitle"><roundcube:label name="contacts" /></div> <div class="boxlistcontent"> - <div id="quicksearchbar"> + <div class="searchbox"> <img id="searchmenulink" src="/images/icons/glass.png" width="16" height="16" /> <roundcube:object name="searchform" id="quicksearchbox" form="true" tabindex="13" /> <roundcube:button command="reset-search" id="searchreset" image="/images/icons/reset.gif" title="resetsearch" width="13" height="13" /> diff --git a/skins/classic/templates/folders.html b/skins/classic/templates/folders.html index f86be092b..f00c23b22 100644 --- a/skins/classic/templates/folders.html +++ b/skins/classic/templates/folders.html @@ -7,9 +7,7 @@ <script type="text/javascript" src="/splitter.js"></script> <style type="text/css"> #folder-manager { width: <roundcube:exp expression="!empty(cookie:folderviewsplitter) ? cookie:folderviewsplitter-5 : 295" />px; } -#folder-box { left: <roundcube:exp expression="!empty(cookie:folderviewsplitter) ? cookie:folderviewsplitter+5 : 305" />px; - <roundcube:exp expression="browser:ie ? ('width:expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:folderviewsplitter) ? cookie:folderviewsplitter+5 : 305).')+\\'px\\');') : ''" /> -} +#folder-box { left: <roundcube:exp expression="!empty(cookie:folderviewsplitter) ? cookie:folderviewsplitter+5 : 305" />px; } </style> </head> <body> @@ -31,7 +29,7 @@ <roundcube:button name="mailboxmenulink" id="mailboxmenulink" type="link" title="folderactions" class="button groupactions" onclick="rcmail_ui.show_popup('mailboxmenu');return false" content=" " /> <roundcube:if condition="env:quota" /> - <img id="quotaimg" src="/images/quota.<roundcube:exp expression="browser:ie && browser:ver < 7 ? 'gif' : 'png'" />" alt="" width="102" height="16" /> + <img id="quotaimg" src="/images/quota.png" alt="" width="102" height="16" /> <div id="quota"> <roundcube:object name="quotaDisplay" display="image" width="100" height="14" id="quotadisplay" /> </div> diff --git a/skins/classic/templates/identities.html b/skins/classic/templates/identities.html index 464afd545..89937ad51 100644 --- a/skins/classic/templates/identities.html +++ b/skins/classic/templates/identities.html @@ -7,9 +7,7 @@ <script type="text/javascript" src="/splitter.js"></script> <style type="text/css"> #identities-list { width: <roundcube:exp expression="!empty(cookie:identviewsplitter) ? cookie:identviewsplitter-5 : 295" />px; } -#identity-box { left: <roundcube:exp expression="!empty(cookie:identviewsplitter) ? cookie:identviewsplitter+5 : 305" />px; - <roundcube:exp expression="browser:ie ? ('width:expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:identviewsplitter) ? cookie:identviewsplitter+5 : 305).')+\\'px\\');') : ''" /> -} +#identity-box { left: <roundcube:exp expression="!empty(cookie:identviewsplitter) ? cookie:identviewsplitter+5 : 305" />px; } </style> </head> diff --git a/skins/classic/templates/identityedit.html b/skins/classic/templates/identityedit.html index 3b33752ca..b0ecef9ac 100644 --- a/skins/classic/templates/identityedit.html +++ b/skins/classic/templates/identityedit.html @@ -7,9 +7,7 @@ <script type="text/javascript" src="/splitter.js"></script> <style type="text/css"> #identities-list { width: <roundcube:exp expression="!empty(cookie:identviewsplitter) ? cookie:identviewsplitter-5 : 295" />px; } -#identity-details { left: <roundcube:exp expression="!empty(cookie:identviewsplitter) ? cookie:identviewsplitter+5 : 305" />px; - <roundcube:exp expression="browser:ie ? ('width:expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:identviewsplitter) ? cookie:identviewsplitter+5 : 305).')+\\'px\\');') : ''" /> -} +#identity-details { left: <roundcube:exp expression="!empty(cookie:identviewsplitter) ? cookie:identviewsplitter+5 : 305" />px; } </style> </head> diff --git a/skins/classic/templates/login.html b/skins/classic/templates/login.html index 2dacd48ff..8b549df0d 100644 --- a/skins/classic/templates/login.html +++ b/skins/classic/templates/login.html @@ -16,11 +16,9 @@ <div class="boxcontent"> <roundcube:form name="form" method="post"> -<roundcube:object name="loginform" form="form" /> - -<p style="text-align:center;"><input type="submit" class="button mainaction" value="<roundcube:label name='login' />" /></p> - +<roundcube:object name="loginform" form="form" submit=true /> </form> + </div> </div> diff --git a/skins/classic/templates/mail.html b/skins/classic/templates/mail.html index 10aebc96d..7a169c8ab 100644 --- a/skins/classic/templates/mail.html +++ b/skins/classic/templates/mail.html @@ -8,14 +8,10 @@ <style type="text/css"> <roundcube:if condition="config:preview_pane == true" /> #mailcontframe { height: <roundcube:exp expression="!empty(cookie:mailviewsplitter) ? cookie:mailviewsplitter-5 : 195" />px; } -#mailpreviewframe { top: <roundcube:exp expression="!empty(cookie:mailviewsplitter) ? cookie:mailviewsplitter+5 : 205" />px; -<roundcube:exp expression="browser:ie ? ('height: expression((parseInt(this.parentNode.offsetHeight)-'.(!empty(cookie:mailviewsplitter) ? cookie:mailviewsplitter+25 : 245).')+\\'px\\');') : ''" /> -} +#mailpreviewframe { top: <roundcube:exp expression="!empty(cookie:mailviewsplitter) ? cookie:mailviewsplitter+5 : 205" />px; } <roundcube:endif /> #mailleftcontainer { width: <roundcube:exp expression="!empty(cookie:mailviewsplitterv) ? cookie:mailviewsplitterv-5 : 160" />px; } -#mailrightcontainer { left: <roundcube:exp expression="!empty(cookie:mailviewsplitterv) ? cookie:mailviewsplitterv+5 : 170" />px; -<roundcube:exp expression="browser:ie ? ('width: expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:mailviewsplitterv) ? cookie:mailviewsplitterv+5 : 165).')+\\'px\\');') : ''" /> -} +#mailrightcontainer { left: <roundcube:exp expression="!empty(cookie:mailviewsplitterv) ? cookie:mailviewsplitterv+5 : 170" />px; } </style> </head> <body> @@ -34,7 +30,7 @@ <roundcube:button name="mailboxmenulink" id="mailboxmenulink" type="link" title="folderactions" class="button groupactions" onclick="rcmail_ui.show_popup('mailboxmenu');return false" content=" " /> <roundcube:if condition="env:quota" /> -<img id="quotaimg" src="/images/quota.<roundcube:exp expression="browser:ie && browser:ver < 7 ? 'gif' : 'png'" />" alt="" width="102" height="16" /> +<img id="quotaimg" src="/images/quota.png" alt="" width="102" height="16" /> <div id="quota"> <roundcube:object name="quotaDisplay" display="image" width="100" height="14" id="quotadisplay" /> </div> @@ -118,6 +114,10 @@ <li><label><input type="checkbox" name="s_mods[]" value="bcc" id="s_mod_bcc" onclick="rcmail_ui.set_searchmod(this)" /> <span><roundcube:label name="bcc" /></span></label></li> <li><label><input type="checkbox" name="s_mods[]" value="body" id="s_mod_body" onclick="rcmail_ui.set_searchmod(this)" /> <span><roundcube:label name="body" /></span></label></li> <li><label><input type="checkbox" name="s_mods[]" value="text" id="s_mod_text" onclick="rcmail_ui.set_searchmod(this)" /> <span><roundcube:label name="msgtext" /></span></label></li> + <li><label class="comment"><roundcube:label name="searchscope" /></label></li> + <li><label><input type="radio" name="s_scope" value="base" id="s_scope_base" onclick="rcmail.set_searchscope(this.value)" /> <span><roundcube:label name="currentfolder" /></span></label></li> + <li><label><input type="radio" name="s_scope" value="sub" id="s_scope_sub" onclick="rcmail.set_searchscope(this.value)" /> <span><roundcube:label name="subfolders" /></span></label></li> + <li><label><input type="radio" name="s_scope" value="all" id="s_scope_all" onclick="rcmail.set_searchscope(this.value)" /> <span><roundcube:label name="allfolders" /></span></label></li> </ul> </div> @@ -142,7 +142,7 @@ <ul> <li><roundcube:button command="expunge" type="link" label="compact" classAct="active" /></li> <li><roundcube:button command="purge" type="link" label="empty" classAct="active" /></li> - <li class="separator_below"><roundcube:button name="messageimport" type="link" class="active" label="importmessages" id="uploadformlink" onclick="rcmail_ui.show_popup('uploadform', true); return false" /></li> + <li class="separator_below"><roundcube:button command="import-messages" name="messageimport" type="link" classAct="active" label="importmessages" id="uploadformlink" onclick="if(rcmail.command_enabled('import-messages'))rcmail_ui.show_popup('uploadform', true); return false" /></li> <li><roundcube:button command="folders" task="settings" type="link" label="managefolders" classAct="active" /></li> <roundcube:container name="mailboxoptions" id="mailboxoptionsmenu" /> </ul> diff --git a/skins/classic/templates/message.html b/skins/classic/templates/message.html index 3ab0a2e5e..088b7018d 100644 --- a/skins/classic/templates/message.html +++ b/skins/classic/templates/message.html @@ -7,9 +7,7 @@ <script type="text/javascript" src="/functions.js"></script> <style type="text/css"> #mailboxlist-container { width: <roundcube:exp expression="!empty(cookie:mailviewsplitterv) ? cookie:mailviewsplitterv-5 : 170" />px; } -#messageframe { left: <roundcube:exp expression="!empty(cookie:mailviewsplitterv) ? cookie:mailviewsplitterv+5 : 180" />px; -<roundcube:exp expression="browser:ie ? ('width: expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:mailviewsplitterv) ? cookie:mailviewsplitterv+5 : 180).')+\\'px\\');') : ''" /> -} +#messageframe { left: <roundcube:exp expression="!empty(cookie:mailviewsplitterv) ? cookie:mailviewsplitterv+5 : 180" />px; } </style> </head> <roundcube:if condition="env:extwin" /> diff --git a/skins/classic/templates/messageerror.html b/skins/classic/templates/messageerror.html index eb8c7e058..590296c81 100644 --- a/skins/classic/templates/messageerror.html +++ b/skins/classic/templates/messageerror.html @@ -21,9 +21,7 @@ <script type="text/javascript" src="/functions.js"></script> <style type="text/css"> #mailboxlist-container { width: <roundcube:exp expression="!empty(cookie:mailviewsplitterv) ? cookie:mailviewsplitterv-5 : 170" />px; } -#messageframe { left: <roundcube:exp expression="!empty(cookie:mailviewsplitterv) ? cookie:mailviewsplitterv+5 : 180" />px; -<roundcube:exp expression="browser:ie ? ('width: expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:mailviewsplitterv) ? cookie:mailviewsplitterv+5 : 180).')+\\'px\\');') : ''" /> -} +#messageframe { left: <roundcube:exp expression="!empty(cookie:mailviewsplitterv) ? cookie:mailviewsplitterv+5 : 180" />px; } </style> </head> diff --git a/skins/classic/templates/messagepart.html b/skins/classic/templates/messagepart.html index 9f2215679..91dc13641 100644 --- a/skins/classic/templates/messagepart.html +++ b/skins/classic/templates/messagepart.html @@ -7,9 +7,7 @@ <script type="text/javascript" src="/functions.js"></script> <style type="text/css"> #messagepartheader { width: <roundcube:exp expression="!empty(cookie:mailpartsplitter) ? cookie:mailpartsplitter-5 : 170" />px; } -#messagepartcontainer { left: <roundcube:exp expression="!empty(cookie:mailpartsplitter) ? cookie:mailpartsplitter+5 : 180" />px; -<roundcube:exp expression="browser:ie ? ('width: expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:mailpartsplitter) ? cookie:mailpartsplitter+5 : 180).')+\\'px\\');') : ''" /> -} +#messagepartcontainer { left: <roundcube:exp expression="!empty(cookie:mailpartsplitter) ? cookie:mailpartsplitter+5 : 180" />px; } </style> </head> <body class="extwin"> diff --git a/skins/classic/templates/responses.html b/skins/classic/templates/responses.html index 2459827b0..b15053738 100644 --- a/skins/classic/templates/responses.html +++ b/skins/classic/templates/responses.html @@ -7,9 +7,7 @@ <script type="text/javascript" src="/splitter.js"></script> <style type="text/css"> #identities-list { width: <roundcube:exp expression="!empty(cookie:identviewsplitter) ? cookie:identviewsplitter-5 : 295" />px; } -#identity-box { left: <roundcube:exp expression="!empty(cookie:identviewsplitter) ? cookie:identviewsplitter+5 : 305" />px; - <roundcube:exp expression="browser:ie ? ('width:expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:identviewsplitter) ? cookie:identviewsplitter+5 : 305).')+\\'px\\');') : ''" /> -} +#identity-box { left: <roundcube:exp expression="!empty(cookie:identviewsplitter) ? cookie:identviewsplitter+5 : 305" />px; } </style> </head> diff --git a/skins/classic/templates/settings.html b/skins/classic/templates/settings.html index 0cd623f75..0055722ba 100644 --- a/skins/classic/templates/settings.html +++ b/skins/classic/templates/settings.html @@ -8,9 +8,7 @@ <style type="text/css"> #sectionslist { width: <roundcube:exp expression="!empty(cookie:prefsviewsplitter) ? cookie:prefsviewsplitter-5 : 190" />px; } -#prefs-box { left: <roundcube:exp expression="!empty(cookie:prefsviewsplitter) ? cookie:prefsviewsplitter+5 : 200" />px; -<roundcube:exp expression="browser:ie ? ('width:expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:prefsviewsplitter) ? cookie:prefsviewsplitter+5 : 200).')+\\'px\\');') : ''" /> -} +#prefs-box { left: <roundcube:exp expression="!empty(cookie:prefsviewsplitter) ? cookie:prefsviewsplitter+5 : 200" />px; } </style> </head> diff --git a/skins/larry/addressbook.css b/skins/larry/addressbook.css index 54a14da0b..bfdd68127 100644 --- a/skins/larry/addressbook.css +++ b/skins/larry/addressbook.css @@ -39,7 +39,7 @@ #directorylistbox { position: absolute; - top: 42px; + top: 0; left: 0; width: 100%; bottom: 0; @@ -47,7 +47,7 @@ #addresslist { position: absolute; - top: 42px; + top: 0; left: 0; width: 280px; bottom: 0; @@ -55,7 +55,7 @@ #contacts-box { position: absolute; - top: 42px; + top: 0; left: 292px; right: 0; bottom: 0; @@ -71,7 +71,6 @@ background-position: -100px 0; background-repeat: no-repeat; overflow: hidden; - padding-left: 36px; text-overflow: ellipsis; } @@ -83,21 +82,11 @@ background-position: 6px -791px; } -#directorylist li.addressbook ul li:last-child { - border-bottom: 0; -} - -#directorylist li.addressbook ul.groups { - margin: 0; - padding: 0; -} - #directorylist li.addressbook ul.groups li { width: 100%; } #directorylist li.contactgroup a { - padding-left: 62px; background-position: 32px -1555px; } diff --git a/skins/larry/editor_content.css b/skins/larry/editor_content.css index aabed07b5..67480ab77 100644 --- a/skins/larry/editor_content.css +++ b/skins/larry/editor_content.css @@ -12,20 +12,15 @@ body { margin-top: 2px; } -pre -{ +div.pre { margin: 0; padding: 0; - white-space: -moz-pre-wrap !important; - white-space: pre-wrap !important; - white-space: pre; - word-wrap: break-word; /* IE (and Safari) */ + font-family: monospace; } blockquote { - padding-left: 5px; border-left: #1010ff 2px solid; - margin-left: 5px; - width: 100%; + margin: 0; + padding: 0 0.4em; } diff --git a/skins/larry/ie7hacks.css b/skins/larry/ie7hacks.css deleted file mode 100644 index 60adff7a1..000000000 --- a/skins/larry/ie7hacks.css +++ /dev/null @@ -1,213 +0,0 @@ -/** - * Roundcube webmail CSS hacks for IE 7 - * - * Copyright (c) 2012, The Roundcube Dev Team - * - * 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. - */ - -/* #1488618 */ -#mainscreen { - height: expression((parseInt(document.documentElement.clientHeight)-108)+'px'); -} -#mainscreen.offset { - height: expression((parseInt(document.documentElement.clientHeight)-150)+'px'); -} - -.minimal #mainscreen { - height: expression((parseInt(document.documentElement.clientHeight)-82)+'px'); -} - -.minimal #mainscreen.offset { - height: expression((parseInt(document.documentElement.clientHeight)-120)+'px'); -} - -#messagepartframe { - height: expression((parseInt(this.parentNode.offsetHeight)-1)+'px'); -} - -input.button { - display: inline; - font-size: 90%; -} - -a.iconbutton, -a.deletebutton, -.boxpagenav a.icon, -.pagenav a.button span.inner, -.boxfooter .listbutton .inner, -.attachmentslist li a.delete, -.attachmentslist li a.cancelupload, -#contacts-table td.action a, -.previewheader .iconlink, -.minimal #taskbar .button-inner, -#preferences-details fieldset.advanced .advanced-toggle { - /* workaround for text-indent which also offsets the background image */ - text-indent: 0; - font-size: 0; - line-height: 0; - overflow: hidden; - text-align: right; - text-decoration: none; -} - -.boxpagenav a.icon { - color: #bbd3da; -} - -.pagenav a.button, -.pagenav a.button span.inner, -.previewheader .iconlink, -#uploadform a.iconlink { - display: inline; -} - -.pagenavbuttons { - top: 4px; -} - -.dropbutton .dropbuttontip { - right: -2px; -} - -#login-form .box-inner form { - margin: 0; -} - -#login-form #message div { - float: left; - display: block; - width: 200px; - margin-left: 130px; - white-space: nowrap; - text-align: left; -} - -#messageheader.previewheader .iconlink { - color: #fff; - height: 14px; -} - -#uploadform a.iconlink { - text-indent: 0px; -} - -.boxfooter .countdisplay { - top: -12px; -} - -ul.toolbarmenu li a { - width: 140px; -} - -#threadselectmenu li a { - width: 160px; -} - -#messagemenu li a { - width: 170px; -} - -#rcmKSearchpane { - width: 400px; -} -#rcmKSearchpane ul li { - width: 380px; - text-overflow: ellipsis; -} - - -table.listing, -table.records-table { - display: block; - width: auto; - border-collapse: expression('separate', cellSpacing = '0'); -} - -.records-table tbody td span { - white-space: nowrap; -} - -table.listing { - width: 100%; -} - -ul.toolbarmenu li label { - margin: 0; - padding: 3px 8px; -} - -.searchbox input { - padding-top: 4px; - padding-bottom: 2px; -} - -#messagelistfooter #listcontrols, -#messagelistfooter #listselectors, -#messagelistfooter #countcontrols, -.pagenav .countdisplay { - display: inline; -} - -#messagelistfooter #countcontrols { - position: relative; - top: -4px; -} - -#messagecontframe, -#preferences-frame { - position: absolute; - left: 0; - right: 0; - top: 0; - bottom: 0; -} - -#composeoptionstoggle { - display: inline; - top: 3px; -} - -.propform { - margin: 0; -} - -.propform fieldset legend { - color: #333; - margin-left: -5px; - padding-left: 0; -} - -.contactfieldgroup legend { - margin-left: -14px; -} - -.contactfieldcontent .contactfieldbutton { - top: -6px; -} - -.tabsbar { - height: 15px; - padding-bottom: 15px; -} - -.tabsbar .tablink { - padding: 0 1px 0 0; -} - -.minimal #topline { - width: 100%; - height: 18px; - box-sizing: border-box; -} - - -.minimal #taskbar a:hover .tooltip { - right: 34px; - top: 1px; -} - - diff --git a/skins/larry/iehacks.css b/skins/larry/iehacks.css deleted file mode 100644 index 7c1585107..000000000 --- a/skins/larry/iehacks.css +++ /dev/null @@ -1,170 +0,0 @@ -/** - * Roundcube webmail CSS hacks for IE < 9 - * - * Copyright (c) 2012, The Roundcube Dev Team - * - * 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. - */ - -input.button { - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9f9f9', endColorstr='#e6e6e6', GradientType=0); -} - -.formbuttons input.button { - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7b7b7b', endColorstr='#606060', GradientType=0); -} - -.formbuttons input.button:active { - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5c5c5c', endColorstr='#7b7b7b', GradientType=0); -} - -input.button.mainaction { - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#505050', endColorstr='#2a2e31', GradientType=0); -} - -input.button.mainaction:active { - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#2a2e31', endColorstr='#505050', GradientType=0); -} - -a.button, -.buttongroup { - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9f9f9', endColorstr='#e6e6e6', GradientType=0); -} - -a.button.pressed, -a.button:active, -input.button:active { - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e6e6e6', endColorstr='#f9f9f9', GradientType=0); -} - -.pagenav.dark a.button { - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#d8d8d8', endColorstr='#bababa', GradientType=0); -} - -.pagenav.dark a.button.pressed { - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bababa', endColorstr='#d8d8d8', GradientType=0); -} - -.buttongroup a.button.selected { - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#909090', endColorstr='#858585', GradientType=0); -} - -#message.statusbar { - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eaeaea', endColorstr='#c8c8c8', GradientType=0); -} - -#messagestack div { - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e0404040', endColorstr='#e0303030', GradientType=0); -} - -.ui-dialog.popupmessage .ui-dialog-titlebar { - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e3e3e3', endColorstr='#cfcfcf', GradientType=0); -} - -.ui-dialog.popupmessage .ui-widget-content { - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#dcdcdc', GradientType=0); -} - -#topnav { - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#404040', endColorstr='#060606', GradientType=0); -} - -#toplogo { - position: absolute; - top: 0px; - left: 10px; -} - -.records-table tr.selected td { - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#019bc6', endColorstr='#017cb4', GradientType=0); -} - -.contentbox .boxtitle, -body.iframe .boxtitle { - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#dfdfdf', GradientType=0); -} - -#login-form input.button { - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9f9f9', endColorstr='#e2e2e2', GradientType=0); -} - -#login-form input.button:active { - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#dcdcdc', endColorstr='#f9f9f9', GradientType=0); -} - -.toolbar a.button { - filter: none; -} - -a.menuselector { - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f8f8f8', endColorstr='#dddddd', GradientType=0); -} - -a.menuselector:active { - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#dddddd', endColorstr='#f8f8f8', GradientType=0); -} - -.googie_list td.googie_list_onhover, -ul.toolbarmenu li a.active:hover, -#rcmKSearchpane ul li.selected { - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00aad6', endColorstr='#008fc9', GradientType=0); -} - -.tabsbar .tablink { - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f8f8f8', endColorstr='#d3d3d3 50%, #f8f8f8', GradientType=0); -} - -.tabsbar .selected a { - background-color: #fff; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#efefef', GradientType=0); -} - -.toolbar a.button.disabled, -.boxpagenav a.icon.disabled, -.pagenav a.button.disabled span.inner, -.boxfooter .listbutton.disabled .inner, -.dropbutton a.button.disabled + .dropbuttontip { - background-image: url(images/buttons.gif); -} - -/*** addressbook.css ***/ - -.contactfieldgroup { - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f7f7f7', endColorstr='#eeeeee', GradientType=0); -} - -.contactfieldgroup legend { - margin: -8px -8px 8px -8px; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f0f0f0', endColorstr='#d6d6d6', GradientType=0); -} - - -/*** mail.css ***/ - -#messagelistfooter { - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb', endColorstr='#c6c6c6', GradientType=0); -} - -#mailboxlist li.mailbox .unreadcount { - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#82acb5', endColorstr='#6a939f', GradientType=0); -} - -#mailboxlist li.mailbox.selected > a .unreadcount { - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#005d76', endColorstr='#004558', GradientType=0); -} - -#messageheader, #partheader, #composeheaders { - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f0f0f0', GradientType=0); -} - -.moreheaderstoggle { - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbfbfb', endColorstr='#e9e9e9', GradientType=1); -} - -#messagelist tbody tr td span.branch div { - float: left; - height: 18px; -} diff --git a/skins/larry/images/buttons.gif b/skins/larry/images/buttons.gif Binary files differdeleted file mode 100644 index 8a4a78ee4..000000000 --- a/skins/larry/images/buttons.gif +++ /dev/null diff --git a/skins/larry/images/buttons.png b/skins/larry/images/buttons.png Binary files differindex 8e2560198..21298ab59 100644 --- a/skins/larry/images/buttons.png +++ b/skins/larry/images/buttons.png diff --git a/skins/larry/images/listicons.png b/skins/larry/images/listicons.png Binary files differindex 63a52d2d4..77a263aef 100644 --- a/skins/larry/images/listicons.png +++ b/skins/larry/images/listicons.png diff --git a/skins/larry/includes/footer.html b/skins/larry/includes/footer.html index 5cf9d1ec5..f421ec5b0 100644 --- a/skins/larry/includes/footer.html +++ b/skins/larry/includes/footer.html @@ -10,16 +10,3 @@ $(document).ready(function(){ }); </script> -<!--[if lte IE 8]> -<script type="text/javascript"> - -// fix missing :last-child selectors -$(document).ready(function(){ - $('ul.treelist ul').each(function(i,ul){ - $('li:last-child', ul).css('border-bottom', 0); - }); -}); - -</script> -<![endif]--> - diff --git a/skins/larry/includes/links.html b/skins/larry/includes/links.html index 69e477c2d..ce9863a6c 100644 --- a/skins/larry/includes/links.html +++ b/skins/larry/includes/links.html @@ -6,6 +6,4 @@ <link rel="stylesheet" type="text/css" href="/<roundcube:var name="env:task" />.css" /> <roundcube:endif /> <!--[if IE 9]><link rel="stylesheet" type="text/css" href="/svggradients.css" /><![endif]--> -<!--[if lte IE 8]><link rel="stylesheet" type="text/css" href="/iehacks.css" /><![endif]--> -<!--[if lte IE 7]><link rel="stylesheet" type="text/css" href="/ie7hacks.css" /><![endif]--> <script type="text/javascript" src="/ui.js"></script>
\ No newline at end of file diff --git a/skins/larry/includes/mailtoolbar.html b/skins/larry/includes/mailtoolbar.html index 5708a94f1..ac08a3200 100644 --- a/skins/larry/includes/mailtoolbar.html +++ b/skins/larry/includes/mailtoolbar.html @@ -11,6 +11,7 @@ </span> <roundcube:button command="delete" type="link" class="button delete disabled" classAct="button delete" classSel="button delete pressed" label="delete" title="deletemessage" /> <roundcube:if condition="template:name == 'message'" /> +<roundcube:button command="move" type="link" class="button move disabled" classAct="button move" classSel="button move pressed" label="move" title="moveto" data-menu-pos="bottom" /> <roundcube:button command="print" type="link" class="button print disabled" classAct="button print" classSel="button print pressed" label="print" title="printmessage" /> <roundcube:endif /> <roundcube:container name="toolbar" id="mailtoolbar" /> diff --git a/skins/larry/mail.css b/skins/larry/mail.css index ca29c79b4..e258cad88 100644 --- a/skins/larry/mail.css +++ b/skins/larry/mail.css @@ -34,12 +34,16 @@ #mailview-top { position: absolute; - top: 42px; + top: 0; left: 0; right: 0; bottom: 0px; } +html.ie #mailview-top { + overflow: visible; /* fixes display issues of fixed list header in IE */ +} + #mailview-bottom { display: none; position: absolute; @@ -58,7 +62,7 @@ #mailboxcontainer, #messagelistcontainer { position: absolute; - top: 42px; + top: 0; left: 0; width: 100%; bottom: 0; @@ -91,6 +95,7 @@ html>/**/body #messagelist { background: -ms-linear-gradient(top, #ebebeb 0%, #c6c6c6 100%); background: linear-gradient(top, #ebebeb 0%, #c6c6c6 100%); border-radius: 0 0 4px 4px; + white-space: nowrap; } #messagelistfooter.rightalign { @@ -201,6 +206,14 @@ a.iconbutton.threadmode.selected { background-position: 6px -406px; } +#mailboxlist li.mailbox.trash.empty > a { + background-position: 6px -1924px; +} + +#mailboxlist li.mailbox.trash.empty.selected > a { + background-position: 6px -1948px; +} + #mailboxlist li.mailbox.archive > a { background-position: 6px -1699px; } @@ -241,6 +254,14 @@ a.iconbutton.threadmode.selected { background-position: 23px -406px; } +#mailboxlist li.mailbox ul li.trash.empty > a { + background-position: 23px -1924px; +} + +#mailboxlist li.mailbox ul li.trash.empty.selected > a { + background-position: 23px -1948px; +} + #mailboxlist li.mailbox ul li.archive > a { background-position: 23px -1699px; } @@ -281,10 +302,10 @@ a.iconbutton.threadmode.selected { #mailboxlist li.mailbox ul li a { padding-left: 52px; /* 36 + 1 x 16 */ - background-position: 22px -93px; /* 6 + 1 x 16 */ + background-position: 22px -95px; /* 6 + 1 x 16 */ } #mailboxlist li.mailbox ul li.selected > a { - background-position: 22px -117px; + background-position: 22px -119px; } #mailboxlist li.mailbox ul li div.treetoggle { left: 33px; @@ -293,10 +314,10 @@ a.iconbutton.threadmode.selected { #mailboxlist li.mailbox ul ul li.mailbox a { padding-left: 68px; /* 2x */ - background-position: 38px -93px; + background-position: 38px -95px; } #mailboxlist li.mailbox ul ul li.selected > a { - background-position: 38px -117px; + background-position: 38px -119px; } #mailboxlist li.mailbox ul ul li div.treetoggle { left: 48px; @@ -304,10 +325,10 @@ a.iconbutton.threadmode.selected { #mailboxlist li.mailbox ul ul ul li.mailbox a { padding-left: 84px; /* 3x */ - background-position: 54px -93px; + background-position: 54px -95px; } #mailboxlist li.mailbox ul ul ul li.selected > a { - background-position: 54px -117px; + background-position: 54px -119px; } #mailboxlist li.mailbox ul ul ul li div.treetoggle { left: 64px; @@ -315,10 +336,10 @@ a.iconbutton.threadmode.selected { #mailboxlist li.mailbox ul ul ul ul li.mailbox a { padding-left: 100px; /* 4x */ - background-position: 70px -93px; + background-position: 70px -95px; } #mailboxlist li.mailbox ul ul ul ul li.selected > a { - background-position: 70px -117px; + background-position: 70px -119px; } #mailboxlist li.mailbox ul ul ul ul li div.treetoggle { left: 80px; @@ -337,6 +358,7 @@ a.iconbutton.threadmode.selected { top: 3px; right: 6px; min-width: 1.8em; + line-height: 15px; padding: 2px 4px; background: #82acb5; background: -moz-linear-gradient(top, #82acb5 0%, #6a939f 100%); @@ -497,6 +519,14 @@ table.messagelist.fixedcopy { width: 155px; } +.messagelist tr td.folder { + width: 135px; +} + +.messagelist tr td.hidden { + display: none; +} + .messagelist tr.message { /* background-color: #fff; */ } @@ -738,7 +768,7 @@ table.messagelist.fixedcopy { #messagecontframe { border: 0; - border-radius: 4px 4px 0 0; + border-radius: 4px; } #messagecontent { @@ -1049,20 +1079,20 @@ div.hide-headers { margin: 8px; } -#message-objects div.notice, -#message-buttons div.notice { +#message-objects div.notice { display: block; color: #960; border: 1px solid #ffdf0e; background-color: #fef893; background-position: 5px -83px; - padding: 6px 12px 4px 30px; + padding: 6px 12px 6px 30px; white-space: normal; } #message-objects div a.button, #messagebody span.part-notice a.button { margin-left: 10px; + margin-top: -1px; } div.message-part, @@ -1077,16 +1107,11 @@ div.message-partheaders { border-top: 0; } -div.message-part pre, -div.message-htmlpart pre, div.message-part div.pre { margin: 0; padding: 0; font-family: monospace; font-size: 12px; - white-space: -moz-pre-wrap !important; - white-space: pre-wrap !important; - white-space: pre; } div.message-part span.sig { @@ -1098,8 +1123,10 @@ div.message-part blockquote { border-left: 2px solid blue; border-right: 2px solid blue; background-color: #F6F6F6; - margin: 2px 0 2px 0; - padding: 1px 8px 1px 10px; + margin: 2px 0; + padding: 0 0.4em; + overflow: hidden; + text-overflow: ellipsis; } div.message-part blockquote blockquote { @@ -1186,7 +1213,7 @@ div.message-partheaders .headers-table td.header { #messagepartcontainer { position: absolute; - top: 42px; + top: 0; left: 232px; right: 0; bottom: 0; @@ -1200,7 +1227,7 @@ div.message-partheaders .headers-table td.header { #messagepartheader { position: absolute; - top: 42px; + top: 0; left: 0; width: 220px; bottom: 0; @@ -1242,29 +1269,12 @@ div.message-partheaders .headers-table td.header { #compose-contacts { position: absolute; - top: 42px; + top: 0; left: 0; width: 100%; bottom: 0; } -#composequicksearch { - position: relative; - padding: 4px; - background: #c7e3ef; -} - -#composequicksearch .searchbox input { - width: 100%; - height: 26px; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -#composequicksearch #searchmenulink { - width: 15px; -} - #compose-contacts #directorylist { border-bottom: 4px solid #c7e3ef; } @@ -1345,7 +1355,7 @@ div.message-partheaders .headers-table td.header { #compose-content { position: absolute; - top: 42px; + top: 0; left: 0; right: 0; bottom: 0px; @@ -1435,7 +1445,6 @@ div.message-partheaders .headers-table td.header { -o-box-shadow: inset 0 1px 0 0 #fff; -webkit-box-shadow: inset 0 1px 0 0 #fff; -moz-box-shadow: inset 0 1px 0 0 #fff; - } .composeoption { diff --git a/skins/larry/settings.css b/skins/larry/settings.css index af667b9e7..6d4d13ca4 100644 --- a/skins/larry/settings.css +++ b/skins/larry/settings.css @@ -45,7 +45,7 @@ #preferences-frame { border: 0; - border-radius: 4px 4px 0 0; + border-radius: 4px; } #preferences-details fieldset.advanced legend { @@ -243,7 +243,7 @@ #subscription-table tr.root td { font-size: 5%; - height: 5px; + line-height: 5px; padding: 2px; } @@ -255,7 +255,7 @@ #subscription-table td.subscribed { min-width: 30px; - padding: 3px 12px 3px 3px; + padding: 0 14px 0 2px; text-align: right; } @@ -319,3 +319,8 @@ img.skinthumbnail { #rcmfd_signature_toolbar2 td { width: auto; } + +.mailtoprotohandler-status { + padding-left: 1em; + font-style: italic; +} diff --git a/skins/larry/styles.css b/skins/larry/styles.css index 5bade1c0c..61bf17d3e 100644 --- a/skins/larry/styles.css +++ b/skins/larry/styles.css @@ -325,6 +325,7 @@ input.button:active { margin-bottom: 0; } +a.button span.icon, .pagenav a.button span.inner { display: inline-block; width: 16px; @@ -334,56 +335,77 @@ input.button:active { background: url(images/buttons.png) -6px -211px no-repeat; } +a.button.prevpage span.icon, .pagenav a.prevpage span.inner { background-position: -7px -226px; } +a.button.nextpage span.icon, .pagenav a.nextpage span.inner { background-position: -28px -226px; } +a.button.lastpage span.icon, .pagenav a.lastpage span.inner { background-position: -28px -211px; } +a.button.pageup span.icon, .pagenav a.pageup span.inner { background-position: -7px -241px; } +a.button.pagedown span.icon, .pagenav a.pagedown span.inner { background-position: -29px -241px; } +a.button.reply span.icon, .pagenav a.reply span.inner { background-position: -7px -256px; } +a.button.forward span.icon, .pagenav a.forward span.inner { background-position: -29px -256px; } +a.button.replyall span.icon, .pagenav a.replyall span.inner { background-position: -7px -271px; } +a.button.extwin span.icon, .pagenav a.extwin span.inner { background-position: -29px -271px; } +a.button.changeformat.html span.icon, .pagenav a.changeformat.html span.inner { background-position: -7px -1859px; } +a.button.changeformat.html.selected span.icon, .pagenav a.changeformat.html.selected span.inner { background-position: -29px -1859px; } +a.button.changeformat.text span.icon, .pagenav a.changeformat.text span.inner { background-position: -7px -1874px; } +a.button.changeformat.text.selected span.icon, .pagenav a.changeformat.text.selected span.inner { background-position: -29px -1874px; } +a.button.add span.icon { + background-position: -7px -2009px; +} + +a.button.delete span.icon { + background-position: -29px -2009px; +} + .pagenav .countdisplay { display: inline-block; padding: 3px 1em 0 1em; @@ -398,7 +420,7 @@ input.button:active { a.iconbutton { display: inline-block; - width: 24px; + width: 20px; height: 18px; text-decoration: none; text-indent: -5000px; @@ -411,18 +433,51 @@ a.iconbutton.disabled { cursor: default; } +a.iconbutton.searchicon, a.iconbutton.searchoptions { + width: 24px; background-position: -2px -317px; } +a.iconbutton.searchicon { + width: 15px; +} + a.iconbutton.reset { + width: 24px; background-position: -25px -317px; } +a.iconbutton.remove, a.iconbutton.cancel { - background-position: -7px -377px; + background-position: -7px -378px; +} + +a.iconbutton.delete { + background-position: -7px -338px; } +a.iconbutton.add { + background-position: -7px -358px; +} + +a.iconbutton.remove { + background-position: -7px -379px; +} + +a.iconbutton.cancel { + background-position: -7px -398px; +} + +a.iconbutton.edit { + background-position: -7px -418px; +} + +a.iconbutton.upload { + background-position: -6px -438px; +} + + a.iconlink { display: inline-block; color: #888; @@ -861,15 +916,11 @@ a.iconlink.upload { border-width: 0 4px 4px; border-color: #888 transparent; /* reduce the damage in FF3.0 */ - display: block; + display: block; width: 0; z-index: 251; } -.ie8 .minimal #taskbar .tooltip:after { - top: -6px; -} - .minimal #taskbar a:hover .tooltip { display: block; top: 39px; @@ -964,6 +1015,14 @@ a.iconlink.upload { bottom: 20px; } +#mainscreencontent { + position: absolute; + top: 42px; + left: 0; + right: 0; + bottom: 0; +} + .minimal #mainscreen { top: 62px; } @@ -996,11 +1055,6 @@ a.iconlink.upload { } .minwidth { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 100%; min-width: 1024px; } @@ -1064,19 +1118,14 @@ a.iconlink.upload { .uibox .listing thead td { font-size: 12px; font-weight: bold; - padding: 10px 8px 3px 8px; - height: 20px; /* doesn't affect table-cells in FF */ + padding: 7px 8px 6px 8px; + line-height: 20px; margin: 0; text-shadow: 0px 1px 1px #fff; border-bottom: 1px solid #bbd3da; white-space: nowrap; } -.uibox .listing thead td { - padding-bottom: 8px; - height: auto; -} - .uibox .boxtitle, .uibox .listing thead td { background: #b0ccd7; @@ -1104,14 +1153,13 @@ a.iconlink.upload { text-shadow: 0px 1px 1px #fff; text-decoration: none; cursor: default; - padding: 6px 8px 2px 8px; - height: 17px; /* doesn't affect table-cells in FF */ + padding: 4px 8px; + line-height: 17px; white-space: nowrap; } .listing tbody td { display: table-cell; - padding-bottom: 5px; height: auto; min-height: 14px; } @@ -1175,16 +1223,61 @@ ul.treelist li { position: relative; } +ul.treelist li ul { + margin: 0; + padding: 0; +} + +ul.treelist li ul li:last-child { + border-bottom: 0; +} + +ul.treelist li a { + display: block; + padding-left: 20px; + overflow: hidden; + text-overflow: ellipsis; +} + +ul.treelist ul li a { + padding-left: 38px; +} + +ul.treelist ul ul li a { + padding-left: 54px; +} + +ul.treelist.iconized li a { + padding-left: 36px; +} + +ul.treelist.iconized li ul li a { + padding-left: 62px; +} + ul.treelist li div.treetoggle { position: absolute; - top: 13px; - left: 19px; + top: 7px; + left: 4px; width: 13px; height: 13px; background: url(images/listicons.png) -3px -144px no-repeat; cursor: pointer; } +ul.treelist li ul li div.treetoggle { + left: 22px; +} + +ul.treelist.iconized li div.treetoggle { + top: 13px; + left: 19px; +} + +ul.treelist.iconized li ul li div.treetoggle { + left: 35px; +} + ul.treelist li div.treetoggle.expanded { background-position: -3px -168px; } @@ -1424,7 +1517,7 @@ table.records-table { .records-table tr.unfocused td { color: #fff !important; - background: #4db0d2 !important; + background-color: #4db0d2 !important; } .records-table tr.unfocused td a, @@ -1564,6 +1657,12 @@ body.iframe .footerleft.floating:before, width: 95%; } +.propform a.disabled { + color: #999; + text-decoration: none; + cursor: default; +} + fieldset.floating { float: left; margin-right: 10px; @@ -1763,6 +1862,7 @@ ul.proplist li { font-size: 11px; } +.searchbox .searchicon, .searchbox #searchmenulink, #quicksearchbar #searchmenulink { position: absolute; @@ -1771,12 +1871,25 @@ ul.proplist li { } .searchbox #searchreset, +.searchbox .iconbutton.reset, #quicksearchbar #searchreset { position: absolute; top: 4px; right: 1px; } +.listsearchbox { + position: relative; + padding: 4px; + background: #c7e3ef; +} + +.listsearchbox input { + width: 100%; + height: 26px; + -moz-box-sizing: border-box; + box-sizing: border-box; +} /*** toolbar ***/ @@ -1895,6 +2008,10 @@ ul.proplist li { background-position: center -1094px; } +.toolbar a.button.move { + background-position: center -1971px; +} + .toolbar a.button.more { background-position: center -850px; } @@ -2092,7 +2209,7 @@ ul.toolbarmenu li a { text-shadow: 0px 1px 1px #333; text-decoration: none; min-height: 14px; - padding: 6px 10px 6px 10px; + padding: 6px 16px 6px 10px; } .googie_list td span { @@ -2339,6 +2456,10 @@ ul.toolbarmenu li span.copy { /*** folder selector ***/ +#folder-selector { + z-index: 1000; +} + #folder-selector li a span { background: url("images/listicons.png") 4px -2021px no-repeat; display: block; @@ -2387,6 +2508,11 @@ ul.toolbarmenu li span.copy { margin-bottom: 1px; } +.attachmentslist li.txt, +.attachmentslist li.text { + background-position: 0 -416px; +} + .attachmentslist li.pdf { background-position: 0 -26px; } @@ -2446,11 +2572,6 @@ ul.toolbarmenu li span.copy { background-position: 0 -338px; } -.attachmentslist li.txt, -.attachmentslist li.text { - background-position: 0 -416px; -} - .attachmentslist li.ics, .attachmentslist li.calendar { background-position: 0 -364px; diff --git a/skins/larry/templates/about.html b/skins/larry/templates/about.html index e2bd0b019..b0d36d177 100644 --- a/skins/larry/templates/about.html +++ b/skins/larry/templates/about.html @@ -14,7 +14,7 @@ <roundcube:object name="aboutcontent" /> <h2 class="sysname">Roundcube Webmail <roundcube:object name="version" /></h2> -<p class="copyright">Copyright © 2005-2013, The Roundcube Dev Team</p> +<p class="copyright">Copyright © 2005-2014, The Roundcube Dev Team</p> <p class="license">This program is free software; you can redistribute it and/or modify it under the terms of the <a href="http://www.gnu.org/licenses/gpl.html" target="_blank">GNU General Public License</a> as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.<br/> diff --git a/skins/larry/templates/addressbook.html b/skins/larry/templates/addressbook.html index 9f83853b2..97efdc6f3 100644 --- a/skins/larry/templates/addressbook.html +++ b/skins/larry/templates/addressbook.html @@ -24,13 +24,22 @@ <roundcube:container name="toolbar" id="addressbooktoolbar" /> </div> +<!-- search box --> +<div id="quicksearchbar" class="searchbox"> +<roundcube:object name="searchform" id="quicksearchbox" /> +<roundcube:button name="searchmenulink" id="searchmenulink" class="iconbutton searchoptions" onclick="UI.show_popup('searchmenu');return false" title="searchmod" content=" " /> +<roundcube:button command="reset-search" id="searchreset" class="iconbutton reset" title="resetsearch" content=" " /> +</div> + +<div id="mainscreencontent"> + <div id="addressview-left"> <!-- sources/groups list --> <div id="directorylistbox" class="uibox listbox"> <h2 id="directorylist-header" class="boxtitle"><roundcube:label name="groups" /></h2> <div id="directorylist-content" class="scroller withfooter"> - <roundcube:object name="directorylist" id="directorylist" class="treelist listing" /> + <roundcube:object name="directorylist" id="directorylist" class="treelist listing iconized" /> </div> <div id="directorylist-footer" class="boxfooter"> <roundcube:button command="group-create" type="link" title="newcontactgroup" class="listbutton add disabled" classAct="listbutton add" innerClass="inner" content="+" /><roundcube:button name="groupoptions" id="groupoptionslink" type="link" title="moreactions" class="listbutton groupactions" onclick="UI.show_popup('groupoptions');return false" innerClass="inner" content="⚙" /> @@ -41,13 +50,6 @@ <div id="addressview-right"> -<!-- search box --> -<div id="quicksearchbar" class="searchbox"> -<roundcube:object name="searchform" id="quicksearchbox" /> -<roundcube:button name="searchmenulink" id="searchmenulink" class="iconbutton searchoptions" onclick="UI.show_popup('searchmenu');return false" title="searchmod" content=" " /> -<roundcube:button command="reset-search" id="searchreset" class="iconbutton reset" title="resetsearch" content=" " /> -</div> - <!-- contacts list --> <div id="addresslist" class="uibox listbox"> <roundcube:object name="addresslisttitle" label="contacts" tag="h2" class="boxtitle" /> @@ -73,9 +75,10 @@ </div> </div> - </div><!-- end addressview-right --> +</div><!-- end mainscreencontent --> + </div><!-- end mainscreen --> <div id="exportmenu" class="popupmenu"> diff --git a/skins/larry/templates/compose.html b/skins/larry/templates/compose.html index 11662d185..90df4f3a8 100644 --- a/skins/larry/templates/compose.html +++ b/skins/larry/templates/compose.html @@ -35,16 +35,18 @@ </div> </div> +<div id="mainscreencontent"> + <div id="composeview-left"> <!-- inline address book --> <div id="compose-contacts" class="uibox listbox"> <h2 class="boxtitle"><roundcube:label name="contacts" /></h2> - <div id="composequicksearch"> + <div class="listsearchbox"> <div class="searchbox"> <roundcube:object name="searchform" id="contactsearchbox" /> - <a id="searchmenulink" class="iconbutton searchoptions"> </a> - <roundcube:button command="reset-search" id="searchreset" class="iconbutton reset" title="resetsearch" content=" " /> + <a id="searchmenulink" class="iconbutton searchicon"> </a> + <roundcube:button command="reset-search" class="iconbutton reset" title="resetsearch" content=" " /> </div> </div> <roundcube:object name="addressbooks" id="directorylist" class="listing" /> @@ -122,8 +124,8 @@ </tbody> </table> -<div id="composebuttons" class="pagenav formbuttons"> - <roundcube:button command="extwin" type="link" class="button extwin" classSel="button extwin pressed" innerClass="inner" title="openinextwin" content="[]" condition="!env:extwin" /> +<div id="composebuttons" class="formbuttons"> + <roundcube:button command="extwin" type="link" class="button extwin" classSel="button extwin pressed" innerClass="icon" title="openinextwin" content="[]" condition="!env:extwin" /> </div> <!-- (collapsable) message options --> @@ -181,6 +183,8 @@ </div><!-- end mailview-right --> +</div><!-- end mainscreencontent --> + </div><!-- end mainscreen --> <div id="upload-dialog" class="propform popupdialog" title="<roundcube:label name='addattachment' />"> diff --git a/skins/larry/templates/login.html b/skins/larry/templates/login.html index 8da941189..64ff6be92 100644 --- a/skins/larry/templates/login.html +++ b/skins/larry/templates/login.html @@ -12,11 +12,9 @@ <roundcube:object name="logo" src="/images/roundcube_logo.png" id="logo" /> <roundcube:form name="form" method="post"> -<roundcube:object name="loginform" form="form" size="40" /> - -<p class="formbuttons"><input type="submit" class="button mainaction" value="<roundcube:label name='login' />" /></p> - +<roundcube:object name="loginform" form="form" size="40" submit=true /> </form> + </div> <div class="box-bottom"> diff --git a/skins/larry/templates/mail.html b/skins/larry/templates/mail.html index ff5f7549c..1e4a3ce8c 100644 --- a/skins/larry/templates/mail.html +++ b/skins/larry/templates/mail.html @@ -11,9 +11,8 @@ <roundcube:endif /> </style> </head> -<body> +<body class="minwidth"> -<div class="minwidth"> <roundcube:include file="/includes/header.html" /> <div id="mainscreen"> @@ -24,6 +23,23 @@ <roundcube:include file="/includes/mailtoolbar.html" /> </div> +<div id="messagesearchtools"> + +<!-- search filter --> +<div id="searchfilter"> + <roundcube:object name="searchfilter" class="searchfilter decorated" /> +</div> + +<!-- search box --> +<div id="quicksearchbar" class="searchbox"> +<roundcube:object name="searchform" id="quicksearchbox" /> +<roundcube:button name="searchmenulink" id="searchmenulink" class="iconbutton searchoptions" onclick="UI.show_popup('searchmenu');return false" title="searchmod" content=" " /> +<roundcube:button command="reset-search" id="searchreset" class="iconbutton reset" title="resetsearch" content=" " /> +</div> + +</div> + +<div id="mainscreencontent"> <div id="mailview-left"> <!-- folders list --> @@ -43,22 +59,6 @@ <div id="mailview-right"> -<div id="messagesearchtools"> - -<!-- search filter --> -<div id="searchfilter"> - <roundcube:object name="searchfilter" class="searchfilter decorated" /> -</div> - -<!-- search box --> -<div id="quicksearchbar" class="searchbox"> -<roundcube:object name="searchform" id="quicksearchbox" /> -<roundcube:button name="searchmenulink" id="searchmenulink" class="iconbutton searchoptions" onclick="UI.show_popup('searchmenu');return false" title="searchmod" content=" " /> -<roundcube:button command="reset-search" id="searchreset" class="iconbutton reset" title="resetsearch" content=" " /> -</div> - -</div> - <roundcube:if condition="config:preview_pane == true" /> <div id="mailview-top" class="uibox"> <roundcube:else /> @@ -76,13 +76,8 @@ <!-- list footer --> <div id="messagelistfooter"> <div id="listcontrols"> - <roundcube:if condition="env:threads" /> - <a href="#list" class="iconbutton listmode" id="maillistmode" title="<roundcube:label name='list' />">List</a> - <a href="#threads" class="iconbutton threadmode" id="mailthreadmode" title="<roundcube:label name='threads' />">Threads</a> - <roundcube:else /> - <a href="#list" class="iconbutton listmode selected" title="<roundcube:label name='list' />" onclick="return false">List</a> - <a href="#threads" class="iconbutton threadmode disabled" title="<roundcube:label name='threads' />" onclick="return false">Threads</a> - <roundcube:endif /> + <roundcube:button href="#list" command="set-listmode" prop="list" class="iconbutton listmode disabled" classAct="iconbutton listmode" id="maillistmode" title="list" content="List" /> + <roundcube:button href="#threads" command="set-listmode" prop="threads" class="iconbutton threadmode disabled" classAct="iconbutton threadmode" id="mailthreadmode" title="threads" content="Threads" /> </div> <div id="listselectors"> @@ -119,9 +114,9 @@ </div><!-- end mailview-right --> -</div><!-- end mainscreen --> +</div><!-- end mainscreencontent --> -</div><!-- end minwidth --> +</div><!-- end mainscreen --> <div id="searchmenu" class="popupmenu"> <ul class="toolbarmenu"> @@ -132,6 +127,10 @@ <li><label><input type="checkbox" name="s_mods[]" value="bcc" id="s_mod_bcc" onclick="UI.set_searchmod(this)" /> <span><roundcube:label name="bcc" /></span></label></li> <li><label><input type="checkbox" name="s_mods[]" value="body" id="s_mod_body" onclick="UI.set_searchmod(this)" /> <span><roundcube:label name="body" /></span></label></li> <li><label><input type="checkbox" name="s_mods[]" value="text" id="s_mod_text" onclick="UI.set_searchmod(this)" /> <span><roundcube:label name="msgtext" /></span></label></li> + <li class="separator"><label><roundcube:label name="searchscope" /></label></li> + <li><label><input type="radio" name="s_scope" value="base" id="s_scope_base" onclick="UI.set_searchscope(this)" /> <span><roundcube:label name="currentfolder" /></span></label></li> + <li><label><input type="radio" name="s_scope" value="sub" id="s_scope_sub" onclick="UI.set_searchscope(this)" /> <span><roundcube:label name="subfolders" /></span></label></li> + <li><label><input type="radio" name="s_scope" value="all" id="s_scope_all" onclick="UI.set_searchscope(this)" /> <span><roundcube:label name="allfolders" /></span></label></li> </ul> </div> @@ -146,7 +145,7 @@ <ul class="toolbarmenu" id="mailboxoptionsmenu"> <li><roundcube:button command="expunge" type="link" label="compact" classAct="active" /></li> <li><roundcube:button command="purge" type="link" label="empty" classAct="active" /></li> - <li><roundcube:button name="messageimport" type="link" class="active" label="importmessages" onclick="UI.show_uploadform()" /></li> + <li><roundcube:button command="import-messages" name="messageimport" type="link" classAct="active" label="importmessages" onclick="if(rcmail.command_enabled('import-messages'))UI.show_uploadform();return false" /></li> <li><roundcube:button command="folders" task="settings" type="link" label="managefolders" classAct="active" /></li> <roundcube:container name="mailboxoptions" id="mailboxoptionsmenu" /> </ul> diff --git a/skins/larry/templates/message.html b/skins/larry/templates/message.html index df92b7511..a661f5720 100644 --- a/skins/larry/templates/message.html +++ b/skins/larry/templates/message.html @@ -20,6 +20,8 @@ <roundcube:if condition="!env:extwin" /> +<div id="mainscreencontent"> + <div id="mailview-left"> <!-- folders list --> @@ -31,7 +33,7 @@ </div> -<div id="mailview-right" class="offset uibox"> +<div id="mailview-right" class="uibox"> <roundcube:else /> <roundcube:object name="mailboxlist" folder_filter="mail" type="js" /> @@ -55,15 +57,15 @@ </div> <roundcube:if condition="env:optional_format=='text'" /> -<div class="pagenav" id="formatcontrols"> +<div id="formatcontrols"> <span class="buttongroup"> - <roundcube:button command="change-format" prop="html" type="link" class="button first changeformat html selected" innerClass="inner" title="changeformathtml" /><roundcube:button command="change-format" prop="text" type="link" class="button last changeformat text" classSel="button last changeformat text pressed" innerClass="inner" title="changeformattext" /> + <roundcube:button command="change-format" prop="html" type="link" class="button first changeformat html selected" innerClass="icon" title="changeformathtml" /><roundcube:button command="change-format" prop="text" type="link" class="button last changeformat text" classSel="button last changeformat text pressed" innerClass="icon" title="changeformattext" /> </span> </div> <roundcube:elseif condition="env:optional_format=='html'" /> -<div class="pagenav" id="formatcontrols"> +<div id="formatcontrols"> <span class="buttongroup"> - <roundcube:button command="change-format" prop="html" type="link" class="button first changeformat html" classSel="button first changeformat html pressed" innerClass="inner" title="changeformathtml" /><roundcube:button command="change-format" prop="text" type="link" class="button last changeformat text selected" innerClass="inner" title="changeformattext" /> + <roundcube:button command="change-format" prop="html" type="link" class="button first changeformat html" classSel="button first changeformat html pressed" innerClass="icon" title="changeformathtml" /><roundcube:button command="change-format" prop="text" type="link" class="button last changeformat text selected" innerClass="icon" title="changeformattext" /> </span> </div> <roundcube:endif /> @@ -84,6 +86,10 @@ </div><!-- end mailview-right --> +<roundcube:if condition="!env:extwin" /> +</div><!-- end mainscreencontent --> +<roundcube:endif /> + </div><!-- end mainscreen --> <div id="attachmentmenu" class="popupmenu"> diff --git a/skins/larry/templates/messageerror.html b/skins/larry/templates/messageerror.html index dbe373a12..d509ce804 100644 --- a/skins/larry/templates/messageerror.html +++ b/skins/larry/templates/messageerror.html @@ -23,6 +23,8 @@ </div> </div> +<div id="mainscreencontent"> + <div id="mailview-left"> <!-- folders list --> @@ -40,6 +42,8 @@ </div><!-- end mailview-right --> +</div><!-- end mainscreencontent --> + </div><!-- end mainscreen --> <roundcube:include file="/includes/footer.html" /> diff --git a/skins/larry/templates/messagepart.html b/skins/larry/templates/messagepart.html index 0ec935873..3b878c9d7 100644 --- a/skins/larry/templates/messagepart.html +++ b/skins/larry/templates/messagepart.html @@ -16,6 +16,8 @@ <roundcube:container name="toolbar" id="messagetoolbar" /> </div> +<div id="mainscreencontent"> + <div id="messagepartheader" class="uibox listbox"> <h2 class="boxtitle"><roundcube:label name="properties" /></h2> <div class="scroller"> @@ -30,6 +32,7 @@ </div> </div> +</div> <roundcube:include file="/includes/footer.html" /> diff --git a/skins/larry/templates/messagepreview.html b/skins/larry/templates/messagepreview.html index f69f65125..4a6d76ead 100644 --- a/skins/larry/templates/messagepreview.html +++ b/skins/larry/templates/messagepreview.html @@ -29,25 +29,25 @@ <roundcube:object name="messageFullHeaders" id="full-headers" /> <!-- record navigation --> -<div id="countcontrols" class="pagenav"> +<div id="countcontrols"> <roundcube:if condition="env:optional_format=='text'" /> <span class="buttongroup"> - <roundcube:button command="change-format" prop="html" type="link" class="button first changeformat html selected" innerClass="inner" title="changeformathtml" content="HTML" /><roundcube:button command="change-format" prop="text" type="link" class="button last changeformat text" classSel="button changeformat text pressed" innerClass="inner" title="changeformattext" content="Text" /> + <roundcube:button command="change-format" prop="html" type="link" class="button first changeformat html selected" innerClass="icon" title="changeformathtml" content="HTML" /><roundcube:button command="change-format" prop="text" type="link" class="button last changeformat text" classSel="button changeformat text pressed" innerClass="icon" title="changeformattext" content="Text" /> </span> <roundcube:elseif condition="env:optional_format=='html'" /> <span class="buttongroup"> - <roundcube:button command="change-format" prop="html" type="link" class="button first changeformat html" classSel="button changeformat html pressed" innerClass="inner" title="changeformathtml" content="HTML" /><roundcube:button command="change-format" prop="text" type="link" class="button last changeformat text selected" innerClass="inner" title="changeformattext" content="Text" /> + <roundcube:button command="change-format" prop="html" type="link" class="button first changeformat html" classSel="button changeformat html pressed" innerClass="icon" title="changeformathtml" content="HTML" /><roundcube:button command="change-format" prop="text" type="link" class="button last changeformat text selected" innerClass="icon" title="changeformattext" content="Text" /> </span> <roundcube:endif /> <roundcube:if condition="env:mailbox != config:drafts_mbox"> - <roundcube:button command="reply" type="link" class="button reply" classSel="button reply pressed" innerClass="inner" title="replytomessage" content="<-" /> - <roundcube:button command="reply-all" type="link" class="button replyall" classSel="button replyall pressed" innerClass="inner" title="replytoallmessage" content="<<-" /> - <roundcube:button command="forward" type="link" class="button forward" classSel="button forward pressed" innerClass="inner" title="forwardmessage" content="->" /> + <roundcube:button command="reply" type="link" class="button reply" classSel="button reply pressed" innerClass="icon" title="replytomessage" content="<-" /> + <roundcube:button command="reply-all" type="link" class="button replyall" classSel="button replyall pressed" innerClass="icon" title="replytoallmessage" content="<<-" /> + <roundcube:button command="forward" type="link" class="button forward" classSel="button forward pressed" innerClass="icon" title="forwardmessage" content="->" /> <roundcube:endif /> - <roundcube:button command="extwin" type="link" class="button extwin" classSel="button extwin pressed" innerClass="inner" title="openinextwin" content="[]" /> + <roundcube:button command="extwin" type="link" class="button extwin" classSel="button extwin pressed" innerClass="icon" title="openinextwin" content="[]" /> </div> </div> diff --git a/skins/larry/ui.js b/skins/larry/ui.js index 5ae3962d0..391e7ab9d 100644 --- a/skins/larry/ui.js +++ b/skins/larry/ui.js @@ -1,3 +1,5 @@ +// @license http://creativecommons.org/publicdomain/zero/1.0/legalcode CC0 + /** * Roundcube functions for default skin interface * @@ -9,7 +11,6 @@ * See http://creativecommons.org/licenses/by-sa/3.0/ for details. */ - function rcube_mail_ui() { var env = {}; @@ -41,6 +42,7 @@ function rcube_mail_ui() this.show_popup = show_popup; this.add_popup = add_popup; this.set_searchmod = set_searchmod; + this.set_searchscope = set_searchscope; this.show_uploadform = show_uploadform; this.show_header_row = show_header_row; this.hide_header_row = hide_header_row; @@ -138,7 +140,8 @@ function rcube_mail_ui() if (rcmail.env.task == 'mail') { rcmail.addEventListener('menu-open', menu_open) .addEventListener('menu-save', menu_save) - .addEventListener('responseafterlist', function(e){ switch_view_mode(rcmail.env.threading ? 'thread' : 'list') }); + .addEventListener('responseafterlist', function(e){ switch_view_mode(rcmail.env.threading ? 'thread' : 'list', true) }) + .addEventListener('responseaftersearch', function(e){ switch_view_mode(rcmail.env.threading ? 'thread' : 'list', true) }); var dragmenu = $('#dragmessagemenu'); if (dragmenu.length) { @@ -253,6 +256,10 @@ function rcube_mail_ui() new rcube_splitter({ id:'identviewsplitter', p1:'#identitieslist', p2:'#identity-details', orientation:'v', relative:true, start:266, min:180, size:12 }).init(); } + else if (rcmail.env.action == 'responses') { + new rcube_splitter({ id:'responseviewsplitter', p1:'#identitieslist', p2:'#identity-details', + orientation:'v', relative:true, start:266, min:180, size:12 }).init(); + } else if (rcmail.env.action == 'preferences' || !rcmail.env.action) { new rcube_splitter({ id:'prefviewsplitter', p1:'#sectionslist', p2:'#preferences-box', orientation:'v', relative:true, start:266, min:180, size:12 }).init(); @@ -329,7 +336,7 @@ function rcube_mail_ui() }); // set min-width to show all toolbar buttons - var screen = $('body > div.minwidth'); + var screen = $('body.minwidth'); if (screen.length) { screen.css('min-width', $('.toolbar').width() + $('#quicksearchbar').width() + $('#searchfilter').width() + 30); } @@ -378,6 +385,7 @@ function rcube_mail_ui() config = popupconfig[id]; if (obj.is(':visible') && target.id != id+'link' + && target != obj.get(0) // check if scroll bar was clicked (#1489832) && !config.toggle && (!config.editable || !target_overlaps(target, obj.get(0))) && (!config.sticky || !rcube_mouse_is_over(e, obj.get(0))) @@ -633,12 +641,6 @@ function rcube_mail_ui() obj[show?'show':'hide'](); - // hide drop-down elements on buggy browsers - if (bw.ie6 && config.overlap) { - $('select').css('visibility', show?'hidden':'inherit'); - $('select', obj).css('visibility', 'inherit'); - } - return show; } @@ -729,13 +731,12 @@ function rcube_mail_ui() /** * */ - function switch_view_mode(mode) + function switch_view_mode(mode, force) { - if (rcmail.env.threading != (mode == 'thread')) - rcmail.set_list_options(null, undefined, undefined, mode == 'thread' ? 1 : 0); - - $('#maillistmode, #mailthreadmode').removeClass('selected'); - $('#mail'+mode+'mode').addClass('selected'); + if (force || !$('#mail'+mode+'mode').hasClass('disabled')) { + $('#maillistmode, #mailthreadmode').removeClass('selected'); + $('#mail'+mode+'mode').addClass('selected'); + } } @@ -761,11 +762,15 @@ function rcube_mail_ui() obj = popups['searchmenu'], list = $('input:checkbox[name="s_mods[]"]', obj), mbox = rcmail.env.mailbox, - mods = rcmail.env.search_mods; + mods = rcmail.env.search_mods, + scope = rcmail.env.search_scope || 'base'; if (rcmail.env.task == 'mail') { + if (scope == 'all') + mbox = '*'; mods = mods[mbox] ? mods[mbox] : mods['*']; all = 'text'; + $('input:radio[name="s_scope"]').prop('checked', false).filter('#s_scope_'+scope).prop('checked', true); } else { all = '*'; @@ -856,7 +861,7 @@ function rcube_mail_ui() // set checkboxes $('input[name="list_col[]"]').each(function() { - $(this).prop('checked', $.inArray(this.value, rcmail.env.coltypes) != -1); + $(this).prop('checked', $.inArray(this.value, rcmail.env.listcols) != -1); }); $dialog.dialog({ @@ -896,7 +901,11 @@ function rcube_mail_ui() { var all, m, task = rcmail.env.task, mods = rcmail.env.search_mods, - mbox = rcmail.env.mailbox; + mbox = rcmail.env.mailbox, + scope = $('input[name="s_scope"]:checked').val(); + + if (scope == 'all') + mbox = '*'; if (!mods) mods = {}; @@ -918,23 +927,29 @@ function rcube_mail_ui() m[elem.value] = 1; // mark all fields - if (elem.value != all) - return; + if (elem.value == all) { + $('input:checkbox[name="s_mods[]"]').map(function() { + if (this == elem) + return; + + this.checked = true; + if (elem.checked) { + this.disabled = true; + delete m[this.value]; + } + else { + this.disabled = false; + m[this.value] = 1; + } + }); + } - $('input:checkbox[name="s_mods[]"]').map(function() { - if (this == elem) - return; + rcmail.set_searchmods(m); + } - this.checked = true; - if (elem.checked) { - this.disabled = true; - delete m[this.value]; - } - else { - this.disabled = false; - m[this.value] = 1; - } - }); + function set_searchscope(elem) + { + rcmail.set_searchscope(elem.value); } function push_contactgroup(p) @@ -1210,6 +1225,7 @@ function rcube_splitter(p) { this.p1 = $(this.p.p1); this.p2 = $(this.p.p2); + this.parent = this.p1.parent(); // check if referenced elements exist, otherwise abort if (!this.p1.length || !this.p2.length) @@ -1222,7 +1238,7 @@ function rcube_splitter(p) .attr('id', this.id) .attr('unselectable', 'on') .addClass('splitter ' + (this.horizontal ? 'splitter-h' : 'splitter-v')) - .appendTo(this.p1.parent()) + .appendTo(this.parent) .bind('mousedown', onDragStart); if (this.horizontal) { @@ -1261,7 +1277,7 @@ function rcube_splitter(p) this.p2.css('top', Math.ceil(this.pos + this.halfsize + 2) + 'px'); this.handle.css('top', Math.round(this.pos - this.halfsize + this.offset)+'px'); if (bw.ie) { - var new_height = parseInt(this.p2.parent().outerHeight(), 10) - parseInt(this.p2.css('top'), 10) - (bw.ie8 ? 2 : 0); + var new_height = parseInt(this.parent.outerHeight(), 10) - parseInt(this.p2.css('top'), 10) - (bw.ie8 ? 2 : 0); this.p2.css('height', (new_height > 0 ? new_height : 0) + 'px'); } } @@ -1270,7 +1286,7 @@ function rcube_splitter(p) 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.p2.parent().outerWidth(), 10) - parseInt(this.p2.css('left'), 10) ; + 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'); } } @@ -1343,7 +1359,7 @@ function rcube_splitter(p) var pos = rcube_event.get_mouse_pos(e); if (me.relative) { - var parent = me.p1.parent().offset(); + var parent = me.parent.offset(); pos.x -= parent.left; pos.y -= parent.top; } @@ -1351,12 +1367,18 @@ function rcube_splitter(p) if (me.horizontal) { if (((pos.y - me.halfsize) > me.p1pos.top) && ((pos.y + me.halfsize) < (me.p2pos.top + me.p2.outerHeight()))) { me.pos = Math.max(me.min, pos.y - me.offset); + if (me.pos > me.min) + me.pos = Math.min(me.pos, me.parent.height() - me.min); + me.resize(); } } else { if (((pos.x - me.halfsize) > me.p1pos.left) && ((pos.x + me.halfsize) < (me.p2pos.left + me.p2.outerWidth()))) { me.pos = Math.max(me.min, pos.x - me.offset); + if (me.pos > me.min) + me.pos = Math.min(me.pos, me.parent.width() - me.min); + me.resize(); } } @@ -1395,11 +1417,11 @@ function rcube_splitter(p) function onResize(e) { if (me.horizontal) { - var new_height = parseInt(me.p2.parent().outerHeight(), 10) - parseInt(me.p2[0].style.top, 10) - (bw.ie8 ? 2 : 0); + var new_height = parseInt(me.parent.outerHeight(), 10) - parseInt(me.p2[0].style.top, 10) - (bw.ie8 ? 2 : 0); me.p2.css('height', (new_height > 0 ? new_height : 0) +'px'); } else { - var new_width = parseInt(me.p2.parent().outerWidth(), 10) - parseInt(me.p2[0].style.left, 10); + var new_width = parseInt(me.parent.outerWidth(), 10) - parseInt(me.p2[0].style.left, 10); me.p2.css('width', (new_width > 0 ? new_width : 0) + 'px'); } }; @@ -1431,3 +1453,5 @@ rcube_splitter.get_instance = function(id) { return rcube_splitter._instances[id]; }; + +// @license-end |