summaryrefslogtreecommitdiff
path: root/skins/classic
diff options
context:
space:
mode:
authorAndy Wermke <andy@dev.next-step-software.com>2013-04-04 16:10:23 +0200
committerAndy Wermke <andy@dev.next-step-software.com>2013-04-04 16:10:23 +0200
commit92cd7f34b07e86062f2c024039e3309768b48ce6 (patch)
tree63b9f39280ebcab80742d9f2b4db6a139c1791e1 /skins/classic
parent029d18f13bcf01aa2f1f08dbdfc6400c081bf7cb (diff)
parent443b92a7ee19e321b350750240e0fc54ec5be357 (diff)
Merge branch 'master' of https://github.com/roundcube/roundcubemail
Diffstat (limited to 'skins/classic')
-rw-r--r--skins/classic/addressbook.css45
-rw-r--r--skins/classic/common.css37
-rw-r--r--skins/classic/embed.css39
-rw-r--r--skins/classic/functions.js76
-rw-r--r--skins/classic/googiespell.css1
-rw-r--r--skins/classic/ie6hacks.css16
-rw-r--r--skins/classic/iehacks.css20
-rw-r--r--skins/classic/images/icons/groupactions.gifbin567 -> 496 bytes
-rw-r--r--skins/classic/images/icons/groupactions.pngbin591 -> 1092 bytes
-rw-r--r--skins/classic/images/icons/html.pngbin0 -> 379 bytes
-rw-r--r--skins/classic/images/icons/text.pngbin0 -> 372 bytes
-rw-r--r--skins/classic/includes/messagetoolbar.html4
-rw-r--r--skins/classic/mail.css230
-rw-r--r--skins/classic/splitter.js9
-rw-r--r--skins/classic/templates/about.html2
-rw-r--r--skins/classic/templates/addressbook.html24
-rw-r--r--skins/classic/templates/compose.html88
-rw-r--r--skins/classic/templates/mail.html81
-rw-r--r--skins/classic/templates/message.html20
-rw-r--r--skins/classic/templates/messageerror.html2
-rw-r--r--skins/classic/templates/messagepreview.html22
21 files changed, 528 insertions, 188 deletions
diff --git a/skins/classic/addressbook.css b/skins/classic/addressbook.css
index a398325b4..5afa4592f 100644
--- a/skins/classic/addressbook.css
+++ b/skins/classic/addressbook.css
@@ -21,7 +21,7 @@
width: 32px;
height: 32px;
padding: 0;
- margin-right: 10px;
+ margin: 0 5px;
overflow: hidden;
background: url(images/abook_toolbar.png) 0 0 no-repeat transparent;
opacity: 0.99; /* this is needed to make buttons appear correctly in Chrome */
@@ -67,6 +67,14 @@
background-position: -128px -32px;
}
+#abooktoolbar a.exportAll {
+ background-position: -128px 0;
+}
+
+#abooktoolbar a.exportAllSel {
+ background-position: -128px -32px;
+}
+
#abooktoolbar span.separator {
width: 5px;
background-position: -162px 0;
@@ -110,7 +118,7 @@
#directorylistbox input
{
- margin: 0px;
+ margin: 0 0 0 20px;
font-size: 11px;
width: 90%;
}
@@ -136,7 +144,8 @@
width: 280px;
}
-#directorylist
+#directorylist,
+#directorylist li ul
{
list-style: none;
margin: 0;
@@ -144,11 +153,15 @@
background-color: #FFFFFF;
}
+#directorylist li ul
+{
+ border-top: 1px solid #EBEBEB;
+}
+
#directorylist li
{
display: block;
font-size: 11px;
- background: url(images/icons/folders.png) 5px -108px no-repeat;
border-bottom: 1px solid #EBEBEB;
white-space: nowrap;
}
@@ -160,31 +173,37 @@
padding-left: 25px;
padding-top: 2px;
padding-bottom: 2px;
+ height: 16px;
text-decoration: none;
white-space: nowrap;
+ background: url(images/icons/folders.png) 5px -108px no-repeat;
}
-#directorylist li.contactgroup
+#directorylist li ul li a
{
- padding-left: 15px;
- background-position: 20px -143px;
+ padding-left: 45px;
}
-#directorylist li.contactsearch
+#directorylist li ul li:last-child
{
- background-position: 6px -162px;
+ border-bottom: 0;
}
-#directorylist li.selected
+#directorylist li.contactgroup a
{
- background-color: #929292;
- border-bottom: 1px solid #898989;
+ background-position: 22px -143px;
}
-#directorylist li.selected a
+#directorylist li.contactsearch a
+{
+ background-position: 6px -162px;
+}
+
+#directorylist li.selected > a
{
color: #FFF;
font-weight: bold;
+ background-color: #929292;
}
#directorylist li.droptarget
diff --git a/skins/classic/common.css b/skins/classic/common.css
index 8115c1bfc..1f62fbe07 100644
--- a/skins/classic/common.css
+++ b/skins/classic/common.css
@@ -20,7 +20,7 @@ body.extwin
margin: 10px;
}
-td, th, div, p, select, input, textarea
+select, input, textarea
{
font-size: 12px;
font-family: inherit;
@@ -145,6 +145,14 @@ img
color: #999999;
}
+/* fixes vertical alignment of checkboxes and labels */
+label input,
+label span
+{
+ vertical-align: middle;
+}
+
+
/** common user interface objects */
#mainscreen
@@ -614,6 +622,32 @@ table.records-table tr.unfocused td
background-color: #929292;
}
+ul.treelist li
+{
+ position: relative;
+}
+
+ul.treelist li div.treetoggle
+{
+ position: absolute;
+ left: 8px !important;
+ left: -16px;
+ top: 1px;
+ width: 14px;
+ height: 16px;
+ cursor: pointer;
+}
+
+ul.treelist li div.collapsed
+{
+ background: url(images/icons/collapsed.png) bottom right no-repeat;
+}
+
+ul.treelist li div.expanded
+{
+ background: url(images/icons/expanded.png) bottom right no-repeat;
+}
+
/***** mac-style quicksearch field *****/
@@ -658,6 +692,7 @@ table.records-table tr.unfocused td
font-size: 11px;
padding: 0px;
border: none;
+ outline: none;
}
/***** roundcube webmail pre-defined classes *****/
diff --git a/skins/classic/embed.css b/skins/classic/embed.css
new file mode 100644
index 000000000..6d2c63c6a
--- /dev/null
+++ b/skins/classic/embed.css
@@ -0,0 +1,39 @@
+/**
+ * Roundcube webmail "embedded" stylesheets
+ *
+ * Copyright (c) 2013, 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.
+ */
+
+.rcmail-inline-message {
+ font-family: sans-serif;
+ font-size: 14px;
+ color: #000;
+ margin-bottom: .8em;
+ min-height: 30px;
+ padding: 10px 10px 6px 46px;
+ background: url(images/display/icons.png) 6px 3px no-repeat #F7FDCB;
+ border: 1px solid #C2D071;
+}
+
+.rcmail-inline-warning {
+ background-position: 6px -92px;
+}
+
+.rcmail-inline-message > button {
+ margin-left: 1em;
+ vertical-align: baseline;
+}
+
+.rcmail-inline-message em {
+ font-size: 90%;
+ color: #666;
+}
+
+.rcmail-inline-buttons {
+ margin-bottom: 0;
+}
diff --git a/skins/classic/functions.js b/skins/classic/functions.js
index 1742150f3..499783b3f 100644
--- a/skins/classic/functions.js
+++ b/skins/classic/functions.js
@@ -92,6 +92,7 @@ function rcube_mail_ui()
forwardmenu: {id:'forwardmenu', editable:1},
searchmenu: {id:'searchmenu', editable:1},
messagemenu: {id:'messagemenu'},
+ attachmentmenu: {id:'attachmentmenu'},
listmenu: {id:'listmenu', editable:1},
dragmessagemenu:{id:'dragmessagemenu', sticky:1},
groupmenu: {id:'groupoptionsmenu', above:1},
@@ -133,24 +134,24 @@ show_popupmenu: function(popup, show)
{
var obj = this.popups[popup].obj,
above = this.popups[popup].above,
- ref = rcube_find_object(popup+'link');
+ ref = $(this.popups[popup].link ? this.popups[popup].link : rcube_find_object(popup+'link'));
if (typeof show == 'undefined')
show = obj.is(':visible') ? false : true;
else if (this.popups[popup].toggle && show && this.popups[popup].obj.is(':visible') )
show = false;
- if (show && ref) {
- var parent = $(ref).parent(),
+ if (show && ref.length) {
+ var parent = ref.parent(),
win = $(window),
- pos = parent.hasClass('dropbutton') ? parent.offset() : $(ref).offset();
+ pos = parent.hasClass('dropbutton') ? parent.offset() : ref.offset();
- if (!above && pos.top + ref.offsetHeight + obj.height() > win.height())
+ if (!above && pos.top + ref.height() + obj.height() > win.height())
above = true;
if (pos.left + obj.width() > win.width())
pos.left = win.width() - obj.width() - 30;
- obj.css({ left:pos.left, top:(pos.top + (above ? -obj.height() : ref.offsetHeight)) });
+ obj.css({ left:pos.left, top:(pos.top + (above ? -obj.height() : ref.height())) });
}
obj[show?'show':'hide']();
@@ -325,7 +326,7 @@ listmenu: function(show)
};
},
-open_listmenu: function(e)
+open_listmenu: function()
{
this.listmenu();
},
@@ -355,7 +356,7 @@ spellmenu: function(show)
for (i in rcmail.env.spell_langs) {
li = $('<li>');
- link = $('<a href="#">').text(rcmail.env.spell_langs[i])
+ link = $('<a href="#"></a>').text(rcmail.env.spell_langs[i])
.addClass('active').data('lang', i)
.click(function() {
rcmail.spellcheck_lang_set($(this).data('lang'));
@@ -380,6 +381,35 @@ spellmenu: function(show)
this.show_popupmenu('spellmenu', show);
},
+show_attachmentmenu: function(elem)
+{
+ var id = elem.parentNode.id.replace(/^attach/, '');
+
+ $('#attachmenuopen').unbind('click').attr('onclick', '').click(function(e) {
+ return rcmail.command('open-attachment', id, this);
+ });
+
+ $('#attachmenudownload').unbind('click').attr('onclick', '').click(function() {
+ rcmail.command('download-attachment', id, this);
+ });
+
+ this.popups.attachmentmenu.link = elem;
+ rcmail.command('menu-open', {menu: 'attachmentmenu', id: id});
+},
+
+menu_open: function(p)
+{
+ if (p && p.props && p.props.menu == 'attachmentmenu')
+ this.show_popup('attachmentmenu');
+ else
+ this.open_listmenu();
+},
+
+menu_save: function(prop)
+{
+ this.save_listmenu();
+},
+
body_mouseup: function(evt, p)
{
var i, target = rcube_event.get_target(evt);
@@ -491,17 +521,26 @@ init_compose_form: function()
div.style.top = (parseInt(headers_div.offsetHeight, 10) + 3) + 'px';
$(window).resize();
+
+ // fixes contacts-table position when there's more than one addressbook
+ $('#contacts-table').css('top', $('#directorylist').height() + 24 + 'px');
+
+ // contacts search submit
+ $('#quicksearchbox').keydown(function(e) {
+ if (rcube_event.get_keycode(e) == 13)
+ rcmail.command('search');
+ });
},
resize_compose_body: function()
{
- var div = $('#compose-div .boxlistcontent'), w = div.width(), h = div.height();
- w -= 8; // 2 x 3px padding + 2 x 1px border
- h -= 4;
+ var div = $('#compose-div .boxlistcontent'),
+ w = div.width() - 2, h = div.height(),
+ x = bw.ie || bw.opera ? 4 : 0;
- $('#compose-body_tbl').width((w+6)+'px').height('');
- $('#compose-body_ifr').width((w+6)+'px').height((h-54)+'px');
- $('#compose-body').width(w+'px').height(h+'px');
+ $('#compose-body_tbl').width((w+3)+'px').height('');
+ $('#compose-body_ifr').width((w+3)+'px').height((h-54)+'px');
+ $('#compose-body').width((w-x)+'px').height(h+'px');
$('#googie_edit_layer').height(h+'px');
},
@@ -791,8 +830,8 @@ function rcube_init_mail_ui()
.contents().mouseup(function(e){rcmail_ui.body_mouseup(e)});
if (rcmail.env.task == 'mail') {
- rcmail.addEventListener('menu-open', 'open_listmenu', rcmail_ui);
- rcmail.addEventListener('menu-save', 'save_listmenu', rcmail_ui);
+ rcmail.addEventListener('menu-open', 'menu_open', rcmail_ui);
+ rcmail.addEventListener('menu-save', 'menu_save', rcmail_ui);
rcmail.addEventListener('aftersend-attachment', 'uploadmenu', rcmail_ui);
rcmail.addEventListener('aftertoggle-editor', 'resize_compose_body_ev', rcmail_ui);
rcmail.gui_object('message_dragmenu', 'dragmessagemenu');
@@ -808,6 +847,11 @@ function rcube_init_mail_ui()
if (rcmail.env.action == 'compose')
rcmail_ui.init_compose_form();
+ else if (rcmail.env.action == 'show' || rcmail.env.action == 'preview')
+ // add menu link for each attachment
+ $('#attachment-list > li[id^="attach"]').each(function() {
+ $(this).append($('<a class="drop">').click(function() { rcmail_ui.show_attachmentmenu(this); }));
+ });
}
else if (rcmail.env.task == 'addressbook') {
rcmail.addEventListener('afterupload-photo', function(){ rcmail_ui.show_popup('uploadform', false); });
diff --git a/skins/classic/googiespell.css b/skins/classic/googiespell.css
index 8adadc256..b4fab5bdb 100644
--- a/skins/classic/googiespell.css
+++ b/skins/classic/googiespell.css
@@ -12,7 +12,6 @@
padding: 0 4px;
font-size: 9pt;
font-family: monospace;
- border: 1px solid #999;
}
.googie_edit_layer span {
diff --git a/skins/classic/ie6hacks.css b/skins/classic/ie6hacks.css
index ac953867a..a431ee45e 100644
--- a/skins/classic/ie6hacks.css
+++ b/skins/classic/ie6hacks.css
@@ -3,6 +3,7 @@
#taskbar
{
background: url(images/taskbar.gif) top right no-repeat;
+ width: expression((parseInt(document.documentElement.clientWidth)-250)+'px');
}
img
@@ -38,11 +39,6 @@ body > #message div.confirmation,
background-image: url(images/icons/folders.gif);
}
-#attachment-list
-{
- height: expression(Math.min(16, parseInt(document.documentElement.clientHeight))+'px');
-}
-
#messagetoolbar a
{
display: block;
@@ -124,6 +120,11 @@ ul.toolbarmenu li.separator_below
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');
@@ -176,3 +177,8 @@ body.iframe .boxtitle
{
zoom: 1;
}
+
+#abookactions a
+{
+ background-image: url("images/icons/groupactions.gif");
+}
diff --git a/skins/classic/iehacks.css b/skins/classic/iehacks.css
index 2bd3ce865..fabf73db6 100644
--- a/skins/classic/iehacks.css
+++ b/skins/classic/iehacks.css
@@ -106,7 +106,7 @@ body.iframe div.messageheaderbox
#quicksearchbar
{
- z-index: 250;
+ z-index: 240;
}
#addresslist,
@@ -116,6 +116,7 @@ body.iframe div.messageheaderbox
#mailrightcontainer,
#compose-container,
#compose-attachments,
+#compose-contacts,
#mailcontframe,
#mailboxlist-container,
#mailrightcontent,
@@ -184,13 +185,7 @@ body.iframe div.messageheaderbox
overflow: hidden;
}
-#countcontrols
-{
- width: 24em;
- padding-right: 10px;
-}
-
-body.iframe
+body.iframe
{
width: expression((parseInt(document.documentElement.clientWidth))+'px');
}
@@ -207,11 +202,6 @@ div.message-part div.pre
width: expression((parseInt(document.documentElement.clientWidth)-245)+'px');
}
-#contacts-table
-{
- width: expression(document.getElementById('addresslist').clientWidth);
-}
-
#contacts-box,
#prefs-box,
#folder-box
@@ -294,8 +284,8 @@ table.records-table thead tr td
.contactfieldgroup legend
{
- padding: 0 0 0.5em 0;
- margin-left: -4px;
+ padding: 0 0 0.5em 0;
+ margin-left: -4px;
}
/* fix "jumping" login form in IE7 */
diff --git a/skins/classic/images/icons/groupactions.gif b/skins/classic/images/icons/groupactions.gif
index a399d106e..eba6a6caf 100644
--- a/skins/classic/images/icons/groupactions.gif
+++ b/skins/classic/images/icons/groupactions.gif
Binary files differ
diff --git a/skins/classic/images/icons/groupactions.png b/skins/classic/images/icons/groupactions.png
index 43c34a438..f29a36a0e 100644
--- a/skins/classic/images/icons/groupactions.png
+++ b/skins/classic/images/icons/groupactions.png
Binary files differ
diff --git a/skins/classic/images/icons/html.png b/skins/classic/images/icons/html.png
new file mode 100644
index 000000000..3f022f678
--- /dev/null
+++ b/skins/classic/images/icons/html.png
Binary files differ
diff --git a/skins/classic/images/icons/text.png b/skins/classic/images/icons/text.png
new file mode 100644
index 000000000..94891be80
--- /dev/null
+++ b/skins/classic/images/icons/text.png
Binary files differ
diff --git a/skins/classic/includes/messagetoolbar.html b/skins/classic/includes/messagetoolbar.html
index eebb55708..bd14f490f 100644
--- a/skins/classic/includes/messagetoolbar.html
+++ b/skins/classic/includes/messagetoolbar.html
@@ -5,8 +5,8 @@
<roundcube:button command="list" type="link" class="button back" classAct="button back" classSel="button backSel" title="backtolist" content=" " />
<roundcube:else />
<roundcube:button command="checkmail" type="link" class="button checkmail" classAct="button checkmail" classSel="button checkmailSel" title="checkmail" content=" " />
-<roundcube:button command="compose" type="link" class="button compose" classAct="button compose" classSel="button composeSel" title="writenewmessage" content=" " />
<roundcube:endif />
+<roundcube:button command="compose" type="link" class="button compose" classAct="button compose" classSel="button composeSel" title="writenewmessage" content=" " />
<roundcube:button command="reply" type="link" class="buttonPas reply" classAct="button reply" classSel="button replySel" title="replytomessage" content=" " />
<span class="dropbutton">
<roundcube:button command="reply-all" type="link" class="buttonPas replyAll" classAct="button replyAll" classSel="button replyAllSel" title="replytoallmessage" content=" " />
@@ -27,7 +27,7 @@
<div id="forwardmenu" class="popupmenu">
<ul>
- <li><roundcube:button command="forward" label="forwardinline" prop="sub" classAct="forwardlink active" class="forwardlink" /></li>
+ <li><roundcube:button command="forward-inline" label="forwardinline" prop="sub" classAct="forwardlink active" class="forwardlink" /></li>
<li><roundcube:button command="forward-attachment" label="forwardattachment" prop="sub" classAct="forwardattachmentlink active" class="forwardattachmentlink" /></li>
<roundcube:container name="forwardmenu" id="forwardmenu" />
</ul>
diff --git a/skins/classic/mail.css b/skins/classic/mail.css
index 85c53d569..7c350ca3d 100644
--- a/skins/classic/mail.css
+++ b/skins/classic/mail.css
@@ -173,13 +173,15 @@
}
#messagemenu li a.active:hover,
+#attachmentmenu li a.active:hover,
#markmessagemenu li a.active:hover
{
color: #fff;
background-color: #c00;
}
-#messagemenu li a
+#messagemenu li a,
+#attachmentmenu li a
{
background: url(images/messageactions.png) no-repeat 7px 0;
background-position: 7px 20px;
@@ -190,7 +192,8 @@
background-position: 7px 1px;
}
-#messagemenu li a.downloadlink
+#messagemenu li a.downloadlink,
+#attachmentmenu li a.downloadlink
{
background-position: 7px -17px;
}
@@ -200,7 +203,8 @@
background-position: 7px -35px;
}
-#messagemenu li a.openlink
+#messagemenu li a.openlink,
+#attachmentmenu li a.openlink
{
background-position: 7px -53px;
}
@@ -255,7 +259,7 @@
top: 0;
left: 0;
bottom: 0;
- width: 195px;
+ width: 160px;
}
#mailrightcontainer
@@ -393,32 +397,6 @@
border-bottom: none;
}
-#mailboxlist li div
-{
- position: absolute;
- left: 8px !important;
- left: -16px;
- top: 1px;
- width: 14px;
- height: 16px;
-}
-
-#mailboxlist li div.collapsed,
-#mailboxlist li div.expanded
-{
- cursor: pointer;
-}
-
-#mailboxlist li div.collapsed
-{
- background: url(images/icons/collapsed.png) bottom right no-repeat;
-}
-
-#mailboxlist li div.expanded
-{
- background: url(images/icons/expanded.png) bottom right no-repeat;
-}
-
#mailboxlist li.inbox
{
background-position: 5px -18px;
@@ -1070,6 +1048,17 @@ table.headers-table
background-color: #F4F4F4;
}
+#messagebody table.headers-table
+{
+ margin: 16px 6px 6px 6px;
+}
+
+div.message-partheaders + div.message-part
+{
+ border-top: 0;
+ padding-top: 4px;
+}
+
table.headers-table tr td
{
font-size: 11px;
@@ -1150,6 +1139,16 @@ table.headers-table tr td.header span
text-decoration: underline;
}
+#attachment-list li a.drop {
+ background: url(images/icons/down_small.gif) no-repeat center 6px;
+ width: 12px;
+ height: 7px;
+ cursor: pointer;
+ padding: 5px 0 0;
+ margin-left: 3px;
+ display: inline-block;
+}
+
#messagebody
{
position:relative;
@@ -1313,20 +1312,27 @@ div.message-htmlpart div.rcmBody
text-decoration: underline;
}
-#openextwinlink
+#messagelinks
{
position: absolute;
top: 8px;
right: 10px;
- width: 15px;
- height: 15px;
- border: 0;
+ height: 16px;
+ text-align: right;
+}
+
+#messageframe #messagelinks
+{
+ top: 2px;
+ right: 2px;
}
#compose-headers #openextwinlink
{
- top: 4px;
- right: 2px;
+ position: absolute;
+ height: 15px;
+ top: 4px;
+ right: 2px;
}
#full-headers
@@ -1381,7 +1387,7 @@ div.hide-headers
{
position: absolute;
top: 0;
- left: 185px;
+ left: 205px;
right: 0;
bottom: 0;
margin: 0;
@@ -1391,16 +1397,20 @@ div.hide-headers
{
position: absolute;
top: 85px;
+ right: 0;
+ left: 0;
bottom: 0;
margin: 0;
- width: 100%;
}
-#compose-div .boxfooter
+#compose-body-div
{
- height: 22px;
- background: none;
- border-top: 0;
+ position: absolute;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ right: 175px;
+ border: 1px solid #999;
}
#compose-div .boxlistcontent
@@ -1418,15 +1428,12 @@ div.hide-headers
margin: 0;
font-size: 9pt;
font-family: monospace;
- border: 1px solid #999;
resize: none;
+ border: none;
+ outline: none;
}
-#compose-body_tbl
-{
- border: 1px solid #999;
-}
-
+#compose-body_tbl,
#compose-body_tbl td
{
border: none;
@@ -1493,9 +1500,10 @@ input.from_address
#compose-editorfooter
{
position: absolute;
- right: 0;
+ right: 5px;
bottom: 0;
text-align: right;
+ line-height: 20px;
}
#compose-editorfooter label
@@ -1508,9 +1516,20 @@ input.from_address
#compose-buttons
{
position: absolute;
+ left: 5px;
+ bottom: 1px;
+ width: auto;
+}
+
+#compose-contacts
+{
+ position: absolute;
+ top: 0;
left: 0;
bottom: 0;
- width: auto;
+ width: 195px;
+ border: 1px solid #999;
+ background-color: #F9F9F9;
}
#compose-attachments
@@ -1518,8 +1537,8 @@ input.from_address
position: absolute;
top: 0;
left: 0;
+ right: 0;
bottom: 0;
- width: 175px;
border: 1px solid #999;
background-color: #F9F9F9;
}
@@ -1611,3 +1630,112 @@ input.from_address
right: 6px;
z-index: 101;
}
+
+/* addressbook in compose - copy from addressbook.css */
+
+#directorylist
+{
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ background-color: #FFFFFF;
+}
+
+#directorylist li
+{
+ display: block;
+ font-size: 11px;
+ background: url(images/icons/folders.png) 5px -108px no-repeat;
+ border-bottom: 1px solid #EBEBEB;
+ white-space: nowrap;
+}
+
+#directorylist li a
+{
+ cursor: default;
+ display: block;
+ padding-left: 25px;
+ padding-top: 2px;
+ padding-bottom: 2px;
+ text-decoration: none;
+ white-space: nowrap;
+ height: 15px;
+}
+
+#directorylist li.selected
+{
+ background-color: #929292;
+ border-bottom: 1px solid #898989;
+}
+
+#directorylist li.selected a
+{
+ color: #FFF;
+ font-weight: bold;
+}
+
+#contacts-table
+{
+ width: 100%;
+ table-layout: fixed;
+}
+
+#contacts-table tbody td
+{
+ cursor: default;
+ text-overflow: ellipsis;
+ -o-text-overflow: ellipsis;
+}
+
+#abookcountbar
+{
+ margin-top: 4px;
+ margin-left: 4px;
+ position: absolute;
+ margin-right: 5px;
+ right: 0;
+}
+
+#abookactions
+{
+ position: absolute;
+ text-underline: none;
+}
+
+#abookactions a
+{
+ font-weight: bold;
+ line-height: 22px;
+ height: 22px;
+ width: auto;
+ margin: 0;
+ padding-left: 5px;
+ padding-right: 5px;
+ text-shadow: 1px 1px white;
+ background: url("images/icons/groupactions.png") no-repeat right -70px;
+}
+
+#abookactions a.disabled
+{
+ color: #999;
+}
+
+#compose-contacts #quicksearchbar
+{
+ top: 2px;
+ left: 7px;
+}
+
+#compose-contacts #directorylist
+{
+ width: 100%;
+ top: 23px;
+ position: absolute;
+ border-top: 1px solid #eee;
+}
+
+#compose-contacts #contacts-table
+{
+ top: 45px;
+ position: absolute;
+}
diff --git a/skins/classic/splitter.js b/skins/classic/splitter.js
index 3f1c97302..72ada5719 100644
--- a/skins/classic/splitter.js
+++ b/skins/classic/splitter.js
@@ -28,13 +28,13 @@ function rcube_splitter(attrib)
if (this.horizontal) {
var top = this.p1pos.top + this.p1.offsetHeight;
- this.layer = new rcube_layer(this.id, {x: 0, y: top, height: 10,
- width: '100%', vis: 1, parent: this.p1.parentNode});
+ this.layer = new rcube_layer(this.id, {x: 0, y: top, height: 10,
+ width: '100%', vis: 1, parent: this.p1.parentNode});
}
else {
var left = this.p1pos.left + this.p1.offsetWidth;
- this.layer = new rcube_layer(this.id, {x: left, y: 0, width: 10,
- height: '100%', vis: 1, parent: this.p1.parentNode});
+ this.layer = new rcube_layer(this.id, {x: left, y: 0, width: 10,
+ height: '100%', vis: 1, parent: this.p1.parentNode});
}
this.elm = this.layer.elm;
@@ -147,6 +147,7 @@ function rcube_splitter(attrib)
this.p1pos = this.relative ? $(this.p1).position() : $(this.p1).offset();
this.p2pos = this.relative ? $(this.p2).position() : $(this.p2).offset();
+
return false;
};
diff --git a/skins/classic/templates/about.html b/skins/classic/templates/about.html
index d84ccbd3c..519acf773 100644
--- a/skins/classic/templates/about.html
+++ b/skins/classic/templates/about.html
@@ -16,7 +16,7 @@
<div id="license">
<roundcube:object name="aboutcontent" />
<h2 class="sysname">Roundcube Webmail <roundcube:object name="version" /></h2>
-<p class="copyright">Copyright &copy; 2005-2012, The Roundcube Dev Team</p>
+<p class="copyright">Copyright &copy; 2005-2013, 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 d77bb38d9..ba119891c 100644
--- a/skins/classic/templates/addressbook.html
+++ b/skins/classic/templates/addressbook.html
@@ -9,6 +9,7 @@
#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\\');') : ''" />
+}
#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\\');') : ''" />
@@ -27,7 +28,10 @@
<roundcube:button command="delete" type="link" class="buttonPas delete" classAct="button delete" classSel="button deleteSel" title="deletecontact" content=" " />
<span class="separator">&nbsp;</span>
<roundcube:button command="import" type="link" class="buttonPas import" classAct="button import" classSel="button importSel" title="importcontacts" content=" " />
+<span class="dropbutton">
<roundcube:button command="export" type="link" class="buttonPas export" classAct="button export" classSel="button exportSel" title="exportvcards" content=" " />
+<span id="exportmenulink" onclick="rcmail_ui.show_popup('exportmenu');return false"></span>
+</span>
<roundcube:button command="advanced-search" type="link" class="buttonPas search" classAct="button search" classSel="button searchSel" title="advsearch" content=" " />
<roundcube:container name="toolbar" id="abooktoolbar" />
</div>
@@ -38,13 +42,20 @@
<roundcube:button command="reset-search" id="searchreset" image="/images/icons/reset.gif" title="resetsearch" width="13" height="13" />
</div>
+<div id="exportmenu" class="popupmenu">
+ <ul>
+ <li><roundcube:button command="export" label="exportall" prop="sub" classAct="exportalllink active" class="exportalllink" /></li>
+ <li><roundcube:button command="export-selected" label="exportsel" prop="sub" classAct="exportsellink active" class="exportsellink" /></li>
+ </ul>
+</div>
+
<div id="searchmenu" class="popupmenu">
<ul class="toolbarmenu">
- <li><input type="checkbox" name="s_mods[]" value="name" id="s_mod_name" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_name"><roundcube:label name="name" /></label></li>
- <li><input type="checkbox" name="s_mods[]" value="firstname" id="s_mod_firstname" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_firstname"><roundcube:label name="firstname" /></label></li>
- <li><input type="checkbox" name="s_mods[]" value="surname" id="s_mod_surname" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_surname"><roundcube:label name="surname" /></label></li>
- <li><input type="checkbox" name="s_mods[]" value="email" id="s_mod_email" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_email"><roundcube:label name="email" /></label></li>
- <li><input type="checkbox" name="s_mods[]" value="*" id="s_mod_all" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_all"><roundcube:label name="allfields" /></label></li>
+ <li><label><input type="checkbox" name="s_mods[]" value="name" id="s_mod_name" onclick="rcmail_ui.set_searchmod(this)" /> <span><roundcube:label name="name" /></span></label></li>
+ <li><label><input type="checkbox" name="s_mods[]" value="firstname" id="s_mod_firstname" onclick="rcmail_ui.set_searchmod(this)" /> <span><roundcube:label name="firstname" /></span></label></li>
+ <li><label><input type="checkbox" name="s_mods[]" value="surname" id="s_mod_surname" onclick="rcmail_ui.set_searchmod(this)" /> <span><roundcube:label name="surname" /></span></label></li>
+ <li><label><input type="checkbox" name="s_mods[]" value="email" id="s_mod_email" onclick="rcmail_ui.set_searchmod(this)" /> <span><roundcube:label name="email" /></span></label></li>
+ <li><label><input type="checkbox" name="s_mods[]" value="*" id="s_mod_all" onclick="rcmail_ui.set_searchmod(this)" /> <span><roundcube:label name="allfields" /></span></label></li>
</ul>
</div>
@@ -53,8 +64,7 @@
<div id="directorylistbox">
<div id="directorylist-title" class="boxtitle"><roundcube:label name="groups" /></div>
<div id="directorylist-content" class="boxlistcontent">
- <roundcube:object name="directorylist" id="directorylist" />
- <roundcube:object name="groupslist" id="contactgroupslist" />
+ <roundcube:object name="directorylist" id="directorylist" class="treelist" />
</div>
<div id="directorylist-footer" class="boxfooter">
<roundcube:button command="group-create" type="link" title="newcontactgroup" class="buttonPas addgroup" classAct="button addgroup" content=" " />
diff --git a/skins/classic/templates/compose.html b/skins/classic/templates/compose.html
index f764d6bb8..5b0b47924 100644
--- a/skins/classic/templates/compose.html
+++ b/skins/classic/templates/compose.html
@@ -9,9 +9,9 @@
<script type="text/javascript" src="/functions.js"></script>
<script type="text/javascript" src="/splitter.js"></script>
<style type="text/css">
-#compose-attachments { width: <roundcube:exp expression="!empty(cookie:composesplitterv) ? cookie:composesplitterv-5 : 175" />px; }
-#compose-container { left: <roundcube:exp expression="!empty(cookie:composesplitterv) ? cookie:composesplitterv+5 : 185" />px;
-<roundcube:exp expression="browser:ie ? ('width: expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:composesplitterv) ? cookie:composesplitterv+5 : 180).')+\\'px\\');') : ''" />
+#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\\');') : ''" />
}
</style>
</head>
@@ -24,8 +24,6 @@
<roundcube:include file="/includes/header.html" />
<roundcube:endif />
-<form name="form" action="./" method="post">
-
<div id="messagetoolbar">
<roundcube:if condition="env:extwin" />
<roundcube:button command="close" type="link" class="button back" classAct="button back" classSel="button backSel" title="close" content=" " />
@@ -33,35 +31,53 @@
<roundcube:button command="list" type="link" class="button back" classAct="button back" classSel="button backSel" title="backtolist" content=" " />
<roundcube:endif />
<roundcube:button command="send" type="link" class="buttonPas send" classAct="button send" classSel="button sendSel" title="sendmessage" content=" " />
+ <roundcube:button name="addattachment" type="link" class="button attach" classAct="button attach" classSel="button attachSel" title="addattachment" onclick="rcmail_ui.show_popup('uploadmenu', true);return false" content=" " />
+ <roundcube:button command="insert-sig" type="link" class="buttonPas insertsig" classAct="button insertsig" classSel="button insertsigSel" title="insertsignature" content=" " />
+ <roundcube:button command="savedraft" type="link" class="buttonPas savedraft" classAct="button savedraft" classSel="button savedraftSel" title="savemessage" content=" " />
<roundcube:if condition="config:enable_spellcheck" />
<span class="dropbutton">
<roundcube:button command="spellcheck" type="link" class="buttonPas spellcheck" classAct="button spellcheck" classSel="button spellcheckSel" title="checkspelling" content=" " />
<span id="spellmenulink" onclick="rcmail_ui.show_popup('spellmenu');return false"></span>
</span>
<roundcube:endif />
- <roundcube:button name="addattachment" type="link" class="button attach" classAct="button attach" classSel="button attachSel" title="addattachment" onclick="rcmail_ui.show_popup('uploadmenu', true);return false" content=" " />
- <roundcube:button command="insert-sig" type="link" class="buttonPas insertsig" classAct="button insertsig" classSel="button insertsigSel" title="insertsignature" content=" " />
- <roundcube:button command="savedraft" type="link" class="buttonPas savedraft" classAct="button savedraft" classSel="button savedraftSel" title="savemessage" content=" " />
<roundcube:container name="toolbar" id="compose-toolbar" />
<roundcube:button name="messageoptions" id="composemenulink" type="link" class="button messagemenu" title="messageoptions" onclick="rcmail_ui.show_popup('composemenu', true);return false" content=" " />
</div>
+<form name="form" action="./" method="post">
+
<div id="mainscreen">
-<div id="compose-attachments">
-<div class="boxtitle"><roundcube:label name="attachments" /></div>
+<div id="compose-contacts">
+<div class="boxtitle"><roundcube:label name="contacts" /></div>
<div class="boxlistcontent">
- <roundcube:object name="composeAttachmentList" id="attachmentslist" loadingIcon="/images/display/loading_blue.gif" />
+ <div id="quicksearchbar">
+ <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" />
+ </div>
+ <roundcube:object name="addressbooks" id="directorylist" />
+ <roundcube:object name="addresslist" id="contacts-table" class="records-table" cellspacing="0" noheader="true" />
</div>
<div class="boxfooter">
- <roundcube:button name="uploadmenulink" id="uploadmenulink" type="link" title="addattachment" class="button addgroup" onclick="rcmail_ui.show_popup('uploadmenu', true);return false" content=" " />
+ <div id="abookactions" class="pagenav">
+ <roundcube:button command="add-recipient" prop="to" type="link" title="to" class="button disabled" classAct="button" content="To &amp;raquo;" />
+ <roundcube:button command="add-recipient" prop="cc" type="link" title="cc" class="button disabled" classAct="button" content="Cc &amp;raquo;" />
+ <roundcube:button command="add-recipient" prop="bcc" type="link" title="bcc" class="button disabled" classAct="button" content="Bcc &amp;raquo;" />
+ </div>
+ <div id="abookcountbar" class="pagenav">
+ <roundcube:button command="firstpage" type="link" class="buttonPas firstpage" classAct="button firstpage" classSel="button firstpageSel" title="firstpage" content=" " />
+ <roundcube:button command="previouspage" type="link" class="buttonPas prevpage" classAct="button prevpage" classSel="button prevpageSel" title="previouspage" content=" " />
+ <span style="float:left">&nbsp;</span>
+ <roundcube:button command="nextpage" type="link" class="buttonPas nextpage" classAct="button nextpage" classSel="button nextpageSel" title="nextpage" content=" " />
+ <roundcube:button command="lastpage" type="link" class="buttonPas lastpage" classAct="button lastpage" classSel="button lastpageSel" title="lastpage" content=" " />
+ </div>
</div>
</div>
-<roundcube:object name="fileDropArea" id="compose-attachments" />
<script type="text/javascript">
- var composesplitv = new rcube_splitter({id:'composesplitterv', p1: 'compose-attachments', p2: 'compose-container', orientation: 'v', relative: true, start: 175});
- rcmail.add_onload('composesplitv.init()');
+ var composesplitv1 = new rcube_splitter({id:'composesplitterv1', p1: 'compose-contacts', p2: 'compose-container', orientation: 'v', relative: true, start: 200});
+ rcmail.add_onload('composesplitv1.init()');
</script>
<div id="compose-container">
@@ -119,23 +135,39 @@
</table>
</div>
<div id="compose-div">
- <div class="boxlistcontent" style="overflow: hidden; top: 0">
- <roundcube:object name="composeBody" id="compose-body" form="form" cols="70" rows="20" tabindex="9" />
+ <div id="compose-body-div">
+ <div class="boxlistcontent" style="overflow: hidden; top: 0">
+ <roundcube:object name="composeBody" id="compose-body" form="form" cols="70" rows="20" tabindex="9" />
+ </div>
+ <div class="boxfooter">
+ <div id="compose-buttons">
+ <roundcube:button type="input" command="send" class="button mainaction" label="sendmessage" tabindex="10" />
+ <roundcube:button type="input" command="list" class="button" label="cancel" tabindex="11" />
+ </div>
+ <div id="compose-editorfooter" class="pagenav">
+ <roundcube:if condition="!in_array('htmleditor', (array)config:dont_override)" />
+ <span>
+ <label><roundcube:label name="editortype" /></label>
+ <roundcube:object name="editorSelector" editorid="compose-body" tabindex="12" />
+ </span>
+ <roundcube:endif />
+ </div>
+ </div>
</div>
- <div class="boxfooter">
- <div id="compose-buttons">
- <roundcube:button type="input" command="send" class="button mainaction" label="sendmessage" tabindex="10" />
- <roundcube:button type="input" command="list" class="button" label="cancel" tabindex="11" />
+<script type="text/javascript">
+ var composesplitv2 = new rcube_splitter({id:'composesplitterv2', p1: 'compose-body-div', p2: 'compose-attachments', orientation: 'v', relative: true, start: $('#compose-headers-div').width() - 175});
+ rcmail.add_onload('composesplitv2.init()');
+</script>
+ <div id="compose-attachments">
+ <div class="boxtitle"><roundcube:label name="attachments" /></div>
+ <div class="boxlistcontent">
+ <roundcube:object name="composeAttachmentList" id="attachmentslist" loadingIcon="/images/display/loading_blue.gif" />
</div>
- <div id="compose-editorfooter">
- <roundcube:if condition="!in_array('htmleditor', (array)config:dont_override)" />
- <span>
- <label><roundcube:label name="editortype" /></label>
- <roundcube:object name="editorSelector" editorid="compose-body" tabindex="12" />
- </span>
- <roundcube:endif />
+ <div class="boxfooter">
+ <roundcube:button name="uploadmenulink" id="uploadmenulink" type="link" title="addattachment" class="button addgroup" onclick="rcmail_ui.show_popup('uploadmenu', true);return false" content=" " />
</div>
</div>
+ <roundcube:object name="fileDropArea" id="compose-attachments" />
</div>
</div>
diff --git a/skins/classic/templates/mail.html b/skins/classic/templates/mail.html
index 96fe72ecd..c7010e87c 100644
--- a/skins/classic/templates/mail.html
+++ b/skins/classic/templates/mail.html
@@ -12,9 +12,9 @@
<roundcube:exp expression="browser:ie ? ('height: expression((parseInt(this.parentNode.offsetHeight)-'.(!empty(cookie:mailviewsplitter) ? cookie:mailviewsplitter+25 : 245).')+\\'px\\');') : ''" />
}
<roundcube:endif />
-#mailleftcontainer { width: <roundcube:exp expression="!empty(cookie:mailviewsplitterv) ? cookie:mailviewsplitterv-5 : 175" />px; }
-#mailrightcontainer { left: <roundcube:exp expression="!empty(cookie:mailviewsplitterv) ? cookie:mailviewsplitterv+5 : 185" />px;
-<roundcube:exp expression="browser:ie ? ('width: expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:mailviewsplitterv) ? cookie:mailviewsplitterv+5 : 180).')+\\'px\\');') : ''" />
+#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\\');') : ''" />
}
</style>
</head>
@@ -28,7 +28,7 @@
<div id="mailboxlist-container">
<div id="mailboxlist-title" class="boxtitle"><roundcube:label name="mailboxlist" /></div>
<div id="mailboxlist-content" class="boxlistcontent">
-<roundcube:object name="mailboxlist" id="mailboxlist" folder_filter="mail" />
+<roundcube:object name="mailboxlist" id="mailboxlist" class="treelist" folder_filter="mail" />
</div>
<div id="mailboxlist-footer" class="boxfooter">
<roundcube:button name="mailboxmenulink" id="mailboxmenulink" type="link" title="folderactions" class="button groupactions" onclick="rcmail_ui.show_popup('mailboxmenu');return false" content=" " />
@@ -76,7 +76,7 @@
<roundcube:button command="collapse-all" type="link" title="collapse-all" class="buttonPas collapse-all" classAct="button collapse-all" classSel="button collapse-allsel" content=" " />
<roundcube:endif />
<roundcube:if condition="!in_array('preview_pane', (array)config:dont_override)" />
- <span style="margin-left: 12px"><label for="prevpaneswitch"><roundcube:label name="previewpane" />:</label>
+ <span style="margin-left: 12px"><label for="prevpaneswitch"><span><roundcube:label name="previewpane" />:</span></label>
<input type="checkbox" id="prevpaneswitch" onclick="rcmail_ui.switch_preview_pane(this)"<roundcube:exp expression="config:preview_pane == true ? ' checked=checked' : ''" /> />
</span>
<roundcube:endif />
@@ -110,12 +110,13 @@
<div id="searchmenu" class="popupmenu">
<ul class="toolbarmenu">
- <li><input type="checkbox" name="s_mods[]" value="subject" id="s_mod_subject" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_subject"><roundcube:label name="subject" /></label></li>
- <li><input type="checkbox" name="s_mods[]" value="from" id="s_mod_from" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_from"><roundcube:label name="from" /></label></li>
- <li><input type="checkbox" name="s_mods[]" value="to" id="s_mod_to" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_to"><roundcube:label name="to" /></label></li>
- <li><input type="checkbox" name="s_mods[]" value="cc" id="s_mod_cc" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_cc"><roundcube:label name="cc" /></label></li>
- <li><input type="checkbox" name="s_mods[]" value="bcc" id="s_mod_bcc" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_bcc"><roundcube:label name="bcc" /></label></li>
- <li><input type="checkbox" name="s_mods[]" value="text" id="s_mod_text" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_text"><roundcube:label name="msgtext" /></label></li>
+ <li><label><input type="checkbox" name="s_mods[]" value="subject" id="s_mod_subject" onclick="rcmail_ui.set_searchmod(this)" /> <span><roundcube:label name="subject" /></span></label></li>
+ <li><label><input type="checkbox" name="s_mods[]" value="from" id="s_mod_from" onclick="rcmail_ui.set_searchmod(this)" /> <span><roundcube:label name="from" /></span></label></li>
+ <li><label><input type="checkbox" name="s_mods[]" value="to" id="s_mod_to" onclick="rcmail_ui.set_searchmod(this)" /> <span><roundcube:label name="to" /></span></label></li>
+ <li><label><input type="checkbox" name="s_mods[]" value="cc" id="s_mod_cc" onclick="rcmail_ui.set_searchmod(this)" /> <span><roundcube:label name="cc" /></span></label></li>
+ <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>
</ul>
</div>
@@ -149,52 +150,52 @@
<roundcube:if condition="env:threads" />
<fieldset class="thinbordered"><legend><roundcube:label name="listmode" /></legend>
<ul class="toolbarmenu">
- <li><input type="radio" name="view" value="list" id="view_default" /><label for="view_default"><roundcube:label name="list" /></label></li>
- <li><input type="radio" name="view" value="thread" id="view_thread" /><label for="view_thread"><roundcube:label name="threads" /></label></li>
+ <li><label><input type="radio" name="view" value="list" id="view_default" /> <span><roundcube:label name="list" /></span></label></li>
+ <li><label><input type="radio" name="view" value="thread" id="view_thread" /> <span><roundcube:label name="threads" /></span></label></li>
</ul>
</fieldset>
<roundcube:endif />
<roundcube:if condition="!in_array('list_cols', (array)config:dont_override)" />
<fieldset class="thinbordered"><legend><roundcube:label name="listcolumns" /></legend>
<ul class="toolbarmenu">
- <li><input type="checkbox" name="list_col[]" value="threads" id="cols_threads" checked="checked" disabled="disabled" /><label for="cols_threads" class="disabled"><roundcube:label name="threads" /></label></li>
- <li><input type="checkbox" name="list_col[]" value="subject" id="cols_subject" checked="checked" disabled="disabled" /><label for="cols_subject" class="disabled"><roundcube:label name="subject" /></label></li>
- <li><input type="checkbox" name="list_col[]" value="fromto" id="cols_fromto" /><label for="cols_fromto"><roundcube:label name="fromto" /></label></li>
- <li><input type="checkbox" name="list_col[]" value="from" id="cols_from" /><label for="cols_from"><roundcube:label name="from" /></label></li>
- <li><input type="checkbox" name="list_col[]" value="to" id="cols_to" /><label for="cols_to"><roundcube:label name="to" /></label></li>
- <li><input type="checkbox" name="list_col[]" value="replyto" id="cols_replyto" /><label for="cols_replyto"><roundcube:label name="replyto" /></label></li>
- <li><input type="checkbox" name="list_col[]" value="cc" id="cols_cc" /><label for="cols_cc"><roundcube:label name="cc" /></label></li>
- <li><input type="checkbox" name="list_col[]" value="date" id="cols_date" /><label for="cols_date"><roundcube:label name="date" /></label></li>
- <li><input type="checkbox" name="list_col[]" value="size" id="cols_size" /><label for="cols_size"><roundcube:label name="size" /></label></li>
- <li><input type="checkbox" name="list_col[]" value="status" id="cols_status" /><label for="cols_status"><roundcube:label name="readstatus" /></label></li>
- <li><input type="checkbox" name="list_col[]" value="attachment" id="cols_attachment" /><label for="cols_attachment"><roundcube:label name="attachment" /></label></li>
- <li><input type="checkbox" name="list_col[]" value="flag" id="cols_flag" /><label for="cols_flag"><roundcube:label name="flag" /></label></li>
- <li><input type="checkbox" name="list_col[]" value="priority" id="cols_priority" /><label for="cols_priority"><roundcube:label name="priority" /></label></li>
+ <li><label><input type="checkbox" name="list_col[]" value="threads" id="cols_threads" checked="checked" disabled="disabled" /> <span class="disabled"><roundcube:label name="threads" /></span></label></li>
+ <li><label><input type="checkbox" name="list_col[]" value="subject" id="cols_subject" checked="checked" disabled="disabled" /> <span class="disabled"><roundcube:label name="subject" /></span></label></li>
+ <li><label><input type="checkbox" name="list_col[]" value="fromto" id="cols_fromto" /> <span><roundcube:label name="fromto" /></span></label></li>
+ <li><label><input type="checkbox" name="list_col[]" value="from" id="cols_from" /> <span><roundcube:label name="from" /></span></label></li>
+ <li><label><input type="checkbox" name="list_col[]" value="to" id="cols_to" /> <span><roundcube:label name="to" /></span></label></li>
+ <li><label><input type="checkbox" name="list_col[]" value="replyto" id="cols_replyto" /> <span><roundcube:label name="replyto" /></span></label></li>
+ <li><label><input type="checkbox" name="list_col[]" value="cc" id="cols_cc" /> <span><roundcube:label name="cc" /></span></label></li>
+ <li><label><input type="checkbox" name="list_col[]" value="date" id="cols_date" /> <span><roundcube:label name="date" /></span></label></li>
+ <li><label><input type="checkbox" name="list_col[]" value="size" id="cols_size" /> <span><roundcube:label name="size" /></span></label></li>
+ <li><label><input type="checkbox" name="list_col[]" value="status" id="cols_status" /> <span><roundcube:label name="readstatus" /></span></label></li>
+ <li><label><input type="checkbox" name="list_col[]" value="attachment" id="cols_attachment" /> <span><roundcube:label name="attachment" /></span></label></li>
+ <li><label><input type="checkbox" name="list_col[]" value="flag" id="cols_flag" /> <span><roundcube:label name="flag" /></span></label></li>
+ <li><label><input type="checkbox" name="list_col[]" value="priority" id="cols_priority" /> <span><roundcube:label name="priority" /></span></label></li>
</ul>
</fieldset>
<roundcube:endif />
<roundcube:if condition="!in_array('message_sort_col', (array)config:dont_override)" />
<fieldset class="thinbordered"><legend><roundcube:label name="listsorting" /></legend>
<ul class="toolbarmenu">
- <li><input type="radio" name="sort_col" value="" id="sort_default" /><label for="sort_default"><roundcube:label name="nonesort" /></label></li>
- <li><input type="radio" name="sort_col" value="arrival" id="sort_arrival" /><label for="sort_arrival"><roundcube:label name="arrival" /></label></li>
- <li><input type="radio" name="sort_col" value="date" id="sort_date" /><label for="sort_date"><roundcube:label name="sentdate" /></label></li>
- <li><input type="radio" name="sort_col" value="subject" id="sort_subject" /><label for="sort_subject"><roundcube:label name="subject" /></label></li>
- <li><input type="radio" name="sort_col" value="fromto" id="sort_fromto" /><label for="sort_fromto"><roundcube:label name="fromto" /></label></li>
- <li><input type="radio" name="sort_col" value="from" id="sort_from" /><label for="sort_from"><roundcube:label name="from" /></label></li>
- <li><input type="radio" name="sort_col" value="to" id="sort_to" /><label for="sort_to"><roundcube:label name="to" /></label></li>
- <li><input type="radio" name="sort_col" value="to" id="sort_replyto" /><label for="sort_replyto"><roundcube:label name="replyto" /></label></li>
- <li><input type="radio" name="sort_col" value="cc" id="sort_cc" /><label for="sort_cc"><roundcube:label name="cc" /></label></li>
- <li><input type="radio" name="sort_col" value="size" id="sort_size" /><label for="sort_size"><roundcube:label name="size" /></label></li>
+ <li><label><input type="radio" name="sort_col" value="" id="sort_default" /> <span><roundcube:label name="nonesort" /></span></label></li>
+ <li><label><input type="radio" name="sort_col" value="arrival" id="sort_arrival" /> <span><roundcube:label name="arrival" /></span></label></li>
+ <li><label><input type="radio" name="sort_col" value="date" id="sort_date" /> <span><roundcube:label name="sentdate" /></span></label></li>
+ <li><label><input type="radio" name="sort_col" value="subject" id="sort_subject" /> <span><roundcube:label name="subject" /></span></label></li>
+ <li><label><input type="radio" name="sort_col" value="fromto" id="sort_fromto" /> <span><roundcube:label name="fromto" /></span></label></li>
+ <li><label><input type="radio" name="sort_col" value="from" id="sort_from" /> <span><roundcube:label name="from" /></span></label></li>
+ <li><label><input type="radio" name="sort_col" value="to" id="sort_to" /> <span><roundcube:label name="to" /></span></label></li>
+ <li><label><input type="radio" name="sort_col" value="to" id="sort_replyto" /> <span><roundcube:label name="replyto" /></span></label></li>
+ <li><label><input type="radio" name="sort_col" value="cc" id="sort_cc" /> <span><roundcube:label name="cc" /></span></label></li>
+ <li><label><input type="radio" name="sort_col" value="size" id="sort_size" /> <span><roundcube:label name="size" /></span></label></li>
</ul>
</fieldset>
<roundcube:endif />
<roundcube:if condition="!in_array('message_sort_order', (array)config:dont_override)" />
<fieldset><legend><roundcube:label name="listorder" /></legend>
- <ul class="toolbarmenu">
- <li><input type="radio" name="sort_ord" value="ASC" id="sort_asc" /><label for="sort_asc"><roundcube:label name="asc" /></label></li>
- <li><input type="radio" name="sort_ord" value="DESC" id="sort_desc" /><label for="sort_desc"><roundcube:label name="desc" /></label></li>
- </ul>
+ <ul class="toolbarmenu">
+ <li><label><input type="radio" name="sort_ord" value="ASC" id="sort_asc" /> <span><roundcube:label name="asc" /></span></label></li>
+ <li><label><input type="radio" name="sort_ord" value="DESC" id="sort_desc" /> <span><roundcube:label name="desc" /></span></label></li>
+ </ul>
</fieldset>
<roundcube:endif />
<div>
diff --git a/skins/classic/templates/message.html b/skins/classic/templates/message.html
index fcf0b22c8..11e58c711 100644
--- a/skins/classic/templates/message.html
+++ b/skins/classic/templates/message.html
@@ -30,7 +30,7 @@
<div id="mailboxlist-container">
<div id="mailboxlist-title" class="boxtitle"><roundcube:label name="mailboxlist" /></div>
<div class="boxlistcontent">
- <roundcube:object name="mailboxlist" id="mailboxlist" maxlength="25" />
+ <roundcube:object name="mailboxlist" id="mailboxlist" class="treelist" maxlength="25" />
</div>
<div class="boxfooter"></div>
</div>
@@ -39,6 +39,14 @@
<div id="messageframe">
<div class="boxlistcontent" style="top:0; overflow-x:auto">
+ <div id="messagelinks">
+ <roundcube:if condition="env:optional_format=='text'" />
+ <roundcube:button command="change-format" prop="text" image="/images/icons/text.png" width="15" height="15" title="changeformattext" id="changeformattext" />
+ <roundcube:endif />
+ <roundcube:if condition="env:optional_format=='html'" />
+ <roundcube:button command="change-format" prop="html" image="/images/icons/html.png" width="15" height="15" title="changeformathtml" id="changeformathtml" />
+ <roundcube:endif />
+ </div>
<roundcube:object name="messageHeaders" class="headers-table" cellspacing="0" cellpadding="2" addicon="/images/icons/silhouette.png" summary="Message headers" />
<roundcube:object name="messageFullHeaders" id="full-headers" />
<roundcube:object name="messageAttachments" id="attachment-list" />
@@ -58,10 +66,20 @@
</div>
+<roundcube:if condition="!env:extwin" />
<script type="text/javascript">
var mailviewsplitv = new rcube_splitter({id:'mailviewsplitterv', p1: 'mailboxlist-container', p2: 'messageframe', orientation: 'v', relative: true, start: 165});
rcmail.add_onload('mailviewsplitv.init()');
</script>
+<roundcube:endif />
+
+<div id="attachmentmenu" class="popupmenu">
+ <ul class="toolbarmenu">
+ <li><roundcube:button command="open-attachment" id="attachmenuopen" type="link" label="open" class="openlink" classAct="openlink active" innerclass="openlink" /></li>
+ <li><roundcube:button command="download-attachment" id="attachmenudownload" type="link" label="download" class="downloadlink" classAct="downloadlink active" innerclass="downloadlink" /></li>
+ <roundcube:container name="attachmentmenu" id="attachmentmenu" />
+ </ul>
+</div>
</body>
</html>
diff --git a/skins/classic/templates/messageerror.html b/skins/classic/templates/messageerror.html
index 918e3092a..d02508942 100644
--- a/skins/classic/templates/messageerror.html
+++ b/skins/classic/templates/messageerror.html
@@ -42,7 +42,7 @@
<div id="mailboxlist-container">
<div class="boxtitle"><roundcube:label name="mailboxlist" /></div>
<div class="boxlistcontent">
- <roundcube:object name="mailboxlist" id="mailboxlist" folder_filter="mail" />
+ <roundcube:object name="mailboxlist" id="mailboxlist" class="treelist" folder_filter="mail" />
</div>
<div class="boxfooter"></div>
</div>
diff --git a/skins/classic/templates/messagepreview.html b/skins/classic/templates/messagepreview.html
index 78b2306f6..80dbe381a 100644
--- a/skins/classic/templates/messagepreview.html
+++ b/skins/classic/templates/messagepreview.html
@@ -3,11 +3,21 @@
<head>
<title><roundcube:object name="pagetitle" /></title>
<roundcube:include file="/includes/links.html" />
+<script type="text/javascript" src="/splitter.js"></script>
+<script type="text/javascript" src="/functions.js"></script>
</head>
-<body class="iframe">
+<body class="iframe" onload="rcube_init_mail_ui()">
<div class="messageheaderbox">
-<roundcube:button command="extwin" image="/images/icons/extwin.png" width="15" height="15" title="openinextwin" id="openextwinlink" />
+ <div id="messagelinks">
+ <roundcube:if condition="env:optional_format=='text'" />
+ <roundcube:button command="change-format" prop="text" image="/images/icons/text.png" width="15" height="15" title="changeformattext" id="changeformattext" />
+ <roundcube:endif />
+ <roundcube:if condition="env:optional_format=='html'" />
+ <roundcube:button command="change-format" prop="html" image="/images/icons/html.png" width="15" height="15" title="changeformathtml" id="changeformathtml" />
+ <roundcube:endif />
+ <roundcube:button command="extwin" image="/images/icons/extwin.png" width="15" height="15" title="openinextwin" id="openextwinlink" />
+ </div>
<roundcube:object name="messageHeaders" class="headers-table" cellspacing="0" cellpadding="2" addicon="/images/icons/silhouette.png" summary="Message headers" />
<roundcube:object name="messageFullHeaders" id="full-headers" />
<roundcube:object name="messageAttachments" id="attachment-list" />
@@ -16,5 +26,13 @@
<roundcube:object name="messageObjects" id="message-objects" />
<roundcube:object name="messageBody" id="messagebody" />
+<div id="attachmentmenu" class="popupmenu">
+ <ul class="toolbarmenu">
+ <li><roundcube:button command="open-attachment" id="attachmenuopen" type="link" label="open" class="openlink" classAct="openlink active" innerclass="openlink" /></li>
+ <li><roundcube:button command="download-attachment" id="attachmenudownload" type="link" label="download" class="downloadlink" classAct="downloadlink active" innerclass="downloadlink" /></li>
+ <roundcube:container name="attachmentmenu" id="attachmentmenu" />
+ </ul>
+</div>
+
</body>
</html>