diff --git a/CHANGELOG b/CHANGELOG index 9ecbbe60d..5053438ad 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ CHANGELOG RoundCube Webmail =========================== +- Add button to hide/unhide the preview pane (#1484215) - Fix no-cache headers on https to prevent content caching by proxies (#1486798) - Fix attachment filenames broken with TNEF decoder using long filenames (#1486795) - Use user's timezone in Date header, not server's timezone (#1486119) diff --git a/program/localization/en_US/labels.inc b/program/localization/en_US/labels.inc index 20f9f7ecb..34de9159b 100644 --- a/program/localization/en_US/labels.inc +++ b/program/localization/en_US/labels.inc @@ -142,6 +142,7 @@ $labels['markunread'] = 'As unread'; $labels['markflagged'] = 'As flagged'; $labels['markunflagged'] = 'As unflagged'; $labels['messageactions'] = 'More actions...'; +$labels['preview'] = 'Preview'; $labels['select'] = 'Select'; $labels['all'] = 'All'; @@ -246,6 +247,7 @@ $labels['email'] = 'E-Mail'; $labels['addcontact'] = 'Add new contact'; $labels['editcontact'] = 'Edit contact'; +$labels['contacts'] = 'Contacts'; $labels['edit'] = 'Edit'; $labels['cancel'] = 'Cancel'; diff --git a/program/localization/pl_PL/labels.inc b/program/localization/pl_PL/labels.inc index 35b9d61dd..4f2646b21 100644 --- a/program/localization/pl_PL/labels.inc +++ b/program/localization/pl_PL/labels.inc @@ -345,5 +345,7 @@ $labels['japanese'] = 'japoński'; $labels['korean'] = 'koreański'; $labels['chinese'] = 'chiński'; $labels['folderactions'] = 'Działania na folderach...'; +$labels['contacts'] = 'Kontakty'; +$labels['preview'] = 'Podgląd'; ?> diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc index a63b50907..1614f4ccc 100644 --- a/program/steps/mail/func.inc +++ b/program/steps/mail/func.inc @@ -407,14 +407,15 @@ function rcmail_message_list_head($attrib, $a_show_cols) */ function rcmail_messagecontent_frame($attrib) { - global $OUTPUT; + global $OUTPUT, $RCMAIL; if (empty($attrib['id'])) $attrib['id'] = 'rcmailcontentwindow'; $attrib['name'] = $attrib['id']; - $OUTPUT->set_env('contentframe', $attrib['id']); + if ($RCMAIL->config->get('preview_pane')) + $OUTPUT->set_env('contentframe', $attrib['id']); $OUTPUT->set_env('blankpage', $attrib['src'] ? $OUTPUT->abs_url($attrib['src']) : 'program/blank.gif'); return html::iframe($attrib); diff --git a/skins/default/addressbook.css b/skins/default/addressbook.css index 73375ced0..dc9e865b7 100644 --- a/skins/default/addressbook.css +++ b/skins/default/addressbook.css @@ -74,18 +74,9 @@ #abookcountbar { - position: absolute; - bottom: 6px; - left: 225px; - width: 240px; - height: 20px; - text-align: left; -} - -#abookcountbar span -{ - font-size: 11px; - color: #333333; + margin-top: 4px; + margin-left: 4px; + min-width: 200px; } #addressscreen @@ -122,7 +113,7 @@ bottom: 0px; border: 1px solid #999999; background-color: #F9F9F9; - overflow: auto; + overflow: hidden; } #contactgroupslist diff --git a/skins/default/common.css b/skins/default/common.css index 66ea82dd0..583f8a157 100644 --- a/skins/default/common.css +++ b/skins/default/common.css @@ -243,73 +243,6 @@ img left: 20px; } -.pagenav a.button, -.pagenav a.buttonPas -{ - display: block; - float: left; - width: 11px; - height: 11px; - padding: 0; - margin: 1px; - overflow: hidden; - background: url(images/pagenav.gif) 0 0 no-repeat transparent; - opacity: 0.99; /* this is needed to make buttons appear correctly in Chrome */ -} - -.pagenav a.buttonPas { - opacity: 0.35; -} - -.pagenav a.firstpageSel { - background-position: 0 -11px; -} - -.pagenav a.prevpage { - background-position: -11px 0; -} - -.pagenav a.prevpageSel { - background-position: -11px -11px; -} - -.pagenav a.nextpage { - background-position: -22px 0; -} - -.pagenav a.nextpageSel { - background-position: -22px -11px; -} - -.pagenav a.lastpage { - background-position: -33px 0; -} - -.pagenav a.lastpageSel { - background-position: -33px -11px; -} - -.splitter -{ - user-select: none; - -moz-user-select: none; - -khtml-user-select: none; - position: absolute; - background: url(images/dimple.png) center no-repeat; -} - -.splitter-h -{ - cursor: n-resize; - background-position: center 2px; -} - -.splitter-v -{ - cursor: e-resize; - background-position: 2px center; -} - .boxtitle { height: 12px !important; @@ -350,6 +283,7 @@ img bottom: 0px; left: 0px; right: 0px; + overflow: hidden; height: 22px; border-top: 1px solid #999; background: url('images/listheader.gif') top left repeat-x #CCC; @@ -379,6 +313,80 @@ img opacity: 0.35; } +.pagenav span +{ + color: #666; + font-size: 11px; + text-shadow: white 1px 1px; +} + +.pagenav a.button, +.pagenav a.buttonPas +{ + display: block; + float: left; + width: 11px; + height: 11px; + padding: 0; + margin: 1px; + overflow: hidden; + background: url(images/pagenav.gif) 0 0 no-repeat transparent; + opacity: 0.99; /* this is needed to make buttons appear correctly in Chrome */ +} + +.pagenav a.buttonPas { + opacity: 0.35; +} + +.pagenav a.firstpageSel { + background-position: 0 -11px; +} + +.pagenav a.prevpage { + background-position: -11px 0; +} + +.pagenav a.prevpageSel { + background-position: -11px -11px; +} + +.pagenav a.nextpage { + background-position: -22px 0; +} + +.pagenav a.nextpageSel { + background-position: -22px -11px; +} + +.pagenav a.lastpage { + background-position: -33px 0; +} + +.pagenav a.lastpageSel { + background-position: -33px -11px; +} + +.splitter +{ + user-select: none; + -moz-user-select: none; + -khtml-user-select: none; + position: absolute; + background: url(images/dimple.png) center no-repeat; +} + +.splitter-h +{ + cursor: n-resize; + background-position: center 2px; +} + +.splitter-v +{ + cursor: e-resize; + background-position: 2px center; +} + .popupmenu { position: absolute; @@ -436,7 +444,6 @@ img } - /***** common table settings ******/ table.records-table thead tr td diff --git a/skins/default/functions.js b/skins/default/functions.js index 3a37b6d8d..4ef069b88 100644 --- a/skins/default/functions.js +++ b/skins/default/functions.js @@ -325,6 +325,38 @@ body_keypress: function(evt, p) this[k].hide(); } } +}, + +switch_preview_pane: function(elem) +{ + var uid, prev_frm = $('#mailpreviewframe'); + + if (elem.checked) { + rcmail.env.contentframe = 'messagecontframe'; + if (mailviewsplit.layer) { + mailviewsplit.resize(); + mailviewsplit.layer.elm.style.display = ''; + } else + mailviewsplit.init(); + prev_frm.show(); + if (uid = rcmail.message_list.get_single_selection()) + rcmail.show_message(uid, false, true); + rcmail.http_post('save-pref', '_name=preview_pane&_value=1'); + } else { + prev_frm.hide(); + if (bw.ie6 || bw.ie7) { + var fr = document.getElementById('mailcontframe'); + fr.style.bottom = 0; + fr.style.height = parseInt(fr.parentNode.offsetHeight)+'px'; + } + else + $('#mailcontframe').css({height: 'auto', bottom: 0}); + if (mailviewsplit.layer) + mailviewsplit.layer.elm.style.display = 'none'; + rcmail.env.contentframe = null; + rcmail.show_contentframe(false); + rcmail.http_post('save-pref', '_name=preview_pane&_value=0'); + } } }; diff --git a/skins/default/ie6hacks.css b/skins/default/ie6hacks.css index 5b42f1cfb..9fa3eb804 100644 --- a/skins/default/ie6hacks.css +++ b/skins/default/ie6hacks.css @@ -10,7 +10,7 @@ img behavior: url(skins/default/pngbehavior.htc); } -#header img +#logo { width: 178px; height: 47px; @@ -49,6 +49,11 @@ img padding-right: 10px; } +#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); @@ -76,6 +81,7 @@ ul.toolbarmenu li.separator_below .boxfooter { width: 100%; + bottom: -1px; } .boxtitle, @@ -86,6 +92,6 @@ ul.toolbarmenu li.separator_below .boxlistcontent { - height: expression((parseInt(this.parentNode.offsetHeight)-42)+'px'); - width: 100%; + top: 21px; + height: expression((parseInt(this.parentNode.offsetHeight)-24-parseInt(this.style.top?this.style.top:21))+'px'); } diff --git a/skins/default/iehacks.css b/skins/default/iehacks.css index cf27c3be8..d070ea328 100644 --- a/skins/default/iehacks.css +++ b/skins/default/iehacks.css @@ -61,8 +61,7 @@ input, textarea background-image: url(images/mail_toolbar.gif); } -#listcontrols a.buttonPas, -#mailboxcontrols a.buttonPas +#listcontrols a.buttonPas { filter: alpha(opacity=35); } @@ -75,12 +74,12 @@ input, textarea #mainscreen { width: expression((parseInt(document.documentElement.clientWidth)-40)+'px'); - height: expression((parseInt(document.documentElement.clientHeight)-101)+'px'); + height: expression((parseInt(document.documentElement.clientHeight)-96)+'px'); } #directorylistbox { - height: expression((parseInt(document.documentElement.clientHeight)-125)+'px'); + height: expression((parseInt(document.documentElement.clientHeight)-115)+'px'); } #addresslist, @@ -102,7 +101,7 @@ input, textarea #messagepartcontainer { width: expression((parseInt(document.documentElement.clientWidth)-40)+'px'); - height: expression((parseInt(document.documentElement.clientHeight)-100)+'px'); + height: expression((parseInt(document.documentElement.clientHeight)-90)+'px'); } #mailrightcontent @@ -148,11 +147,7 @@ input, textarea { width: expression((parseInt(this.parentNode.offsetWidth)-180)+'px'); height: expression((parseInt(this.parentNode.offsetHeight)-20)+'px'); -} - -#messagecanvas -{ - width: expression((parseInt(this.parentNode.offsetWidth)-20)+'px'); + overflow: hidden; } #countcontrols @@ -189,7 +184,7 @@ div.message-part div.pre #addressscreen { width: expression((parseInt(document.documentElement.clientWidth)-245)+'px'); - height: expression((parseInt(document.documentElement.clientHeight)-125)+'px'); + height: expression((parseInt(document.documentElement.clientHeight)-115)+'px'); } #prefsscreen @@ -201,7 +196,7 @@ div.message-part div.pre #importbox { width: expression((parseInt(document.documentElement.clientWidth)-40)+'px'); - height: expression((parseInt(document.documentElement.clientHeight)-145)+'px'); + height: expression((parseInt(document.documentElement.clientHeight)-140)+'px'); } #contacts-table @@ -266,3 +261,8 @@ table.records-table thead tr td margin: 0 4px; padding: 0.8em; } + +#listcontrols input +{ + margin-top: 2px; +} diff --git a/skins/default/images/mail_footer.gif b/skins/default/images/mail_footer.gif new file mode 100644 index 000000000..302b55870 Binary files /dev/null and b/skins/default/images/mail_footer.gif differ diff --git a/skins/default/images/mail_footer.png b/skins/default/images/mail_footer.png index 7e0867748..e0f82b578 100644 Binary files a/skins/default/images/mail_footer.png and b/skins/default/images/mail_footer.png differ diff --git a/skins/default/includes/header.html b/skins/default/includes/header.html index 14cc80caf..393ee9218 100644 --- a/skins/default/includes/header.html +++ b/skins/default/includes/header.html @@ -1,3 +1,3 @@ -
+