summaryrefslogtreecommitdiff
path: root/skins/classic
diff options
context:
space:
mode:
Diffstat (limited to 'skins/classic')
-rw-r--r--skins/classic/addressbook.css18
-rw-r--r--skins/classic/common.css87
-rw-r--r--skins/classic/functions.js10
-rw-r--r--skins/classic/images/icons/folders.gifbin2568 -> 2596 bytes
-rw-r--r--skins/classic/images/icons/folders.pngbin4822 -> 5356 bytes
-rw-r--r--skins/classic/images/mail_toolbar.pngbin40806 -> 39276 bytes
-rw-r--r--skins/classic/images/messageactions.gifbin1916 -> 2097 bytes
-rw-r--r--skins/classic/images/messageactions.pngbin2211 -> 3223 bytes
-rw-r--r--skins/classic/includes/messagetoolbar.html5
-rw-r--r--skins/classic/mail.css141
-rw-r--r--skins/classic/settings.css20
-rw-r--r--skins/classic/splitter.js85
-rw-r--r--skins/classic/templates/compose.html11
-rw-r--r--skins/classic/templates/message.html4
-rw-r--r--skins/classic/templates/responseedit.html24
-rw-r--r--skins/classic/templates/responses.html46
16 files changed, 370 insertions, 81 deletions
diff --git a/skins/classic/addressbook.css b/skins/classic/addressbook.css
index 9575ae25f..2fcb1715a 100644
--- a/skins/classic/addressbook.css
+++ b/skins/classic/addressbook.css
@@ -224,6 +224,24 @@
-o-text-overflow: ellipsis;
}
+/* This padding-left should be equal to the focused border-left + the focused padding-left */
+#contacts-table thead tr td:first-child,
+#contacts-table tbody tr td:first-child {
+ border-left: 0;
+ padding-left: 8px;
+}
+
+/* because of border-collapse, we make the left border twice what we want it to be - half will be hidden to the left */
+#contacts-table tbody tr.focused > td:first-child {
+ border-left: 2px solid #d4d4d4;
+ padding-left: 6px;
+}
+
+#contacts-table tbody tr.selected.focused > td:first-child {
+ border-left: 1px solid #ccc;
+ padding-left: 7px;
+}
+
#contacts-table .contact.readonly td
{
font-style: italic;
diff --git a/skins/classic/common.css b/skins/classic/common.css
index 3c322f0ed..b1ec7c7df 100644
--- a/skins/classic/common.css
+++ b/skins/classic/common.css
@@ -483,6 +483,9 @@ body.iframe .boxtitle
top: 32px;
left: 90px;
width: auto;
+ max-height: 70%;
+ overflow: -moz-scrollbars-vertical;
+ overflow-y: auto;
display: none;
background-color: #fff;
background-color: rgba(255, 255, 255, 0.95);
@@ -492,6 +495,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;
}
@@ -511,16 +515,25 @@ body.iframe .boxtitle
margin: 3px -4px;
}
-.popupmenu li a
+.popupmenu li a,
+.popupmenu li label
{
display: block;
color: #a0a0a0;
- padding: 2px 10px;
+ padding: 2px 16px 2px 10px;
text-decoration: none;
min-height: 14px;
background: transparent;
}
+.popupmenu li label.comment
+{
+ color: #999;
+ font-style: italic;
+ padding-top: 4px;
+ padding-bottom: 3px;
+}
+
.popupmenu li a.active,
.popupmenu li a.active:active,
.popupmenu li a.active:visited
@@ -704,6 +717,24 @@ ul.treelist li div.expanded
outline: none;
}
+.propform div.prop
+{
+ margin-bottom: 0.5em;
+}
+
+.propform div.prop.block label
+{
+ display: block;
+ margin-bottom: 2px;
+}
+
+.propform div.prop.block input,
+.propform div.prop.block textarea
+{
+ width: 97%;
+}
+
+
/***** roundcube webmail pre-defined classes *****/
#rcmversion
@@ -734,6 +765,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;
}
@@ -935,6 +967,57 @@ ul.toolbarmenu li.separator_above
}
+/*** folder selector ***/
+
+#folder-selector li a
+{
+ padding: 0;
+}
+
+#folder-selector li a span
+{
+ background: url(images/icons/folders.png) no-repeat 6px 0;
+ display: block;
+ height: 15px;
+ min-height: 14px;
+ padding: 2px 4px 2px 28px;
+ overflow: hidden;
+ max-width: 120px;
+ text-overflow: ellipsis;
+}
+
+#folder-selector li a.virtual
+{
+ color: #A0A0A0;
+}
+
+#folder-selector li a.active:hover span
+{
+ color: white;
+}
+
+#folder-selector li a.inbox span
+{
+ background-position: 6px -18px;
+}
+#folder-selector li a.drafts span
+{
+ background-position: 6px -37px;
+}
+#folder-selector li a.sent span
+{
+ background-position: 6px -54px;
+}
+#folder-selector li a.trash span
+{
+ background-position: 6px -91px;
+}
+#folder-selector li a.junk span
+{
+ background-position: 6px -73px;
+}
+
+
/***** tabbed interface elements *****/
div.tabsbar,
diff --git a/skins/classic/functions.js b/skins/classic/functions.js
index 4ad13136f..049e4d5d4 100644
--- a/skins/classic/functions.js
+++ b/skins/classic/functions.js
@@ -419,6 +419,7 @@ body_mouseup: function(evt, p)
&& !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)))
+ && !$(target).is('.folder-selector-link') && !$(target).children('.folder-selector-link').length
) {
window.setTimeout('rcmail_ui.show_popup("'+i+'",false);', 50);
}
@@ -625,7 +626,7 @@ prev_sibling: function(elm)
enable_command: function(p)
{
- if (p.command == 'reply-list') {
+ if (p.command == 'reply-list' && rcmail.env.reply_all_mode == 1) {
var label = rcmail.gettext(p.status ? 'replylist' : 'replyall');
$('a.button.replyAll').attr('title', label);
}
@@ -975,8 +976,6 @@ function rcube_init_mail_ui()
rcmail.addEventListener('responseaftercheck-recent', rcube_render_mailboxlist);
rcmail.addEventListener('responseafterrefresh', rcube_render_mailboxlist);
rcmail.addEventListener('afterimport-messages', function(){ rcmail_ui.show_popup('uploadform', false); });
-
- new rcmail_scroller('#mailboxlist-content', '#mailboxlist-title', '#mailboxlist-footer');
}
if (rcmail.env.action == 'compose')
@@ -984,15 +983,12 @@ function rcube_init_mail_ui()
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); }));
+ $(this).append($('<a class="drop"></a>').click(function() { rcmail_ui.show_attachmentmenu(this); }));
});
}
else if (rcmail.env.task == 'addressbook') {
rcmail.addEventListener('afterupload-photo', function(){ rcmail_ui.show_popup('uploadform', false); });
- if (rcmail.gui_objects.folderlist)
- new rcmail_scroller('#directorylist-content', '#directorylist-title', '#directorylist-footer');
-
rcmail.gui_object('dragmenu', 'dragmenu');
}
else if (rcmail.env.task == 'settings') {
diff --git a/skins/classic/images/icons/folders.gif b/skins/classic/images/icons/folders.gif
index eb06bd8c1..279519496 100644
--- a/skins/classic/images/icons/folders.gif
+++ b/skins/classic/images/icons/folders.gif
Binary files differ
diff --git a/skins/classic/images/icons/folders.png b/skins/classic/images/icons/folders.png
index 4c27052a5..92432521c 100644
--- a/skins/classic/images/icons/folders.png
+++ b/skins/classic/images/icons/folders.png
Binary files differ
diff --git a/skins/classic/images/mail_toolbar.png b/skins/classic/images/mail_toolbar.png
index 4a8431715..3ef003f23 100644
--- a/skins/classic/images/mail_toolbar.png
+++ b/skins/classic/images/mail_toolbar.png
Binary files differ
diff --git a/skins/classic/images/messageactions.gif b/skins/classic/images/messageactions.gif
index b73fbb354..3bdd0d735 100644
--- a/skins/classic/images/messageactions.gif
+++ b/skins/classic/images/messageactions.gif
Binary files differ
diff --git a/skins/classic/images/messageactions.png b/skins/classic/images/messageactions.png
index 2ea7b4f54..0dc655487 100644
--- a/skins/classic/images/messageactions.png
+++ b/skins/classic/images/messageactions.png
Binary files differ
diff --git a/skins/classic/includes/messagetoolbar.html b/skins/classic/includes/messagetoolbar.html
index 8f8efd291..6936c7def 100644
--- a/skins/classic/includes/messagetoolbar.html
+++ b/skins/classic/includes/messagetoolbar.html
@@ -20,9 +20,6 @@
<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=" " />
-<roundcube:if condition="template:name == 'message'" />
-<roundcube:object name="mailboxlist" type="select" noSelection="moveto" maxlength="25" onchange="rcmail.command('move', this.options[this.selectedIndex].value)" class="mboxlist" folder_filter="mail" />
-<roundcube:endif />
</div>
<div id="forwardmenu" class="popupmenu">
@@ -46,6 +43,8 @@
<li><roundcube:button class="printlink" command="print" label="printmessage" classAct="printlink active" /></li>
<li><roundcube:button class="downloadlink" command="download" label="emlsave" classAct="downloadlink active" /></li>
<li><roundcube:button class="editlink" command="edit" prop="new" label="editasnew" classAct="editlink active" /></li>
+ <li><roundcube:button class="movelink" command="move" label="moveto" classAct="movelink active" innerclass="folder-selector-link" /></li>
+ <li><roundcube:button class="copylink" command="copy" label="copyto" classAct="copylink active" innerclass="folder-selector-link" /></li>
<li class="separator_below"><roundcube:button class="sourcelink" command="viewsource" label="viewsource" classAct="sourcelink active" /></li>
<li><roundcube:button class="openlink" command="open" label="openinextwin" target="_blank" classAct="openlink active" /></li>
<roundcube:container name="messagemenu" id="messagemenu" />
diff --git a/skins/classic/mail.css b/skins/classic/mail.css
index 43367749c..10efd350f 100644
--- a/skins/classic/mail.css
+++ b/skins/classic/mail.css
@@ -171,21 +171,8 @@
background-position: -480px -32px;
}
-#messagetoolbar select.mboxlist
-{
- position: relative;
- margin: 0 8px;
- top: 7px;
-}
-
-#messagetoolbar select.mboxlist option
-{
- padding-left: 15px;
-}
-
-#messagetoolbar select.mboxlist option[value=""]
-{
- padding-left: 2px;
+#messagetoolbar a.responses {
+ background-position: -512px 0;
}
#messagemenu li a.active:hover,
@@ -222,12 +209,22 @@
#messagemenu li a.openlink,
#attachmentmenu li a.openlink
{
- background-position: 7px -53px;
+ background-position: 7px -52px;
}
#messagemenu li a.editlink
{
- background-position: 7px -71px;
+ background-position: 6px -70px;
+}
+
+#messagemenu li a.movelink
+{
+ background-position: 6px -161px;
+}
+
+#messagemenu li a.copylink
+{
+ background-position: 6px -143px;
}
#markmessagemenu li a,
@@ -408,38 +405,42 @@
display: block;
position: relative;
font-size: 11px;
- background: url(images/icons/folders.png) 5px 0 no-repeat;
border-bottom: 1px solid #EBEBEB;
}
#mailboxlist li ul li:last-child
{
- border-bottom: none;
+ border-bottom: 0 none;
}
-#mailboxlist li.inbox
+#mailboxlist li.inbox a
{
background-position: 5px -18px;
}
-#mailboxlist li.drafts
+#mailboxlist li.drafts a
{
background-position: 5px -37px;
}
-#mailboxlist li.sent
+#mailboxlist li.sent a
{
background-position: 5px -54px;
}
-#mailboxlist li.junk
+#mailboxlist li.junk a
{
background-position: 5px -73px;
}
-#mailboxlist li.trash
+#mailboxlist li.trash a
+{
+ background-position: 5px -180px;
+}
+
+#mailboxlist li.trash.empty a
{
- background-position: 5px -91px;
+ background-position: 5px -90px;
}
#mailboxlist li a
@@ -452,6 +453,7 @@
padding-bottom: 2px;
text-decoration: none;
height: 15px;
+ background: url(images/icons/folders.png) 5px 0 no-repeat;
}
#mailboxlist li.unread
@@ -493,13 +495,75 @@
padding: 0;
margin: 0;
border-top: 1px solid #EBEBEB;
- padding-left: 15px;
- background-position: 25px 1px;
background-color: #FFF;
- color: blue;
font-weight: normal;
}
+#mailboxlist li.mailbox ul li a {
+ padding-left: 40px; /* 24 + 1 x 16 */
+ background-position: 20px 0; /* 4 + 1 x 16 */
+}
+#mailboxlist li.mailbox ul li div.treetoggle {
+ left: 23px !important;
+}
+
+#mailboxlist li.mailbox ul ul li.mailbox a {
+ padding-left: 56px; /* 2x */
+ background-position: 36px 0;
+}
+#mailboxlist li.mailbox ul ul li div.treetoggle {
+ left: 39px !important;
+}
+
+#mailboxlist li.mailbox ul ul ul li.mailbox a {
+ padding-left: 72px; /* 3x */
+ background-position: 52px 0;
+}
+#mailboxlist li.mailbox ul ul ul li div.treetoggle {
+ left: 55px !important;
+}
+
+#mailboxlist li.mailbox ul ul ul ul li.mailbox a {
+ padding-left: 88px; /* 4x */
+ background-position: 68px 0;
+}
+#mailboxlist li.mailbox ul ul ul ul li div.treetoggle {
+ left: 71px !important;
+}
+
+/* indent folders on levels > 4 */
+#mailboxlist li.mailbox ul ul ul ul ul li {
+ padding-left: 16px;
+}
+#mailboxlist li.mailbox ul ul ul ul ul li div.treetoggle {
+ 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;
@@ -933,7 +997,7 @@ table.messagelist.fixedcopy
.messagelist tr td.date
{
- width: 118px;
+ width: 135px;
padding: 0 2px;
}
@@ -954,6 +1018,24 @@ table.messagelist.fixedcopy
color: #CC0000;
}
+/* This padding-left minus the focused padding left should be half of the focused border-left */
+.messagelist thead tr td:first-child,
+.messagelist tbody tr td:first-child {
+ border-left: 0;
+ padding-left: 6px;
+}
+
+/* because of border-collapse, we make the left border twice what we want it to be - half will be hidden to the left */
+.messagelist tbody tr.focused > td:first-child {
+ border-left: 4px solid #d4d4d4;
+ padding-left: 4px;
+}
+
+.messagelist tbody tr.selected.focused > td:first-child {
+ border-left: 2px solid #ccc;
+ padding-left: 5px;
+}
+
.messagelist tr.selected td
{
color: #FFFFFF;
@@ -985,6 +1067,7 @@ table.messagelist.fixedcopy
#listmenu
{
padding: 6px;
+ max-height: none;
}
#listmenu legend
diff --git a/skins/classic/settings.css b/skins/classic/settings.css
index 2433f5040..acd0b9fd0 100644
--- a/skins/classic/settings.css
+++ b/skins/classic/settings.css
@@ -34,6 +34,11 @@
height: 18px;
}
+#identities-table tbody tr.readonly td
+{
+ font-style: italic;
+}
+
#subscription-table tr.virtual td
{
color: #666;
@@ -81,6 +86,7 @@
}
#identity-details table td.title,
+#response-details table td.title,
#folder-details table td.title
{
font-weight: bold;
@@ -89,6 +95,14 @@
white-space: nowrap;
}
+#response-details table td.title
+{
+ text-align: left;
+ vertical-align: top;
+ width: 140px;
+ padding-top: 5px;
+}
+
#bottomboxes
{
position: absolute;
@@ -149,6 +163,12 @@ body.iframe,
float: right;
}
+#formfooter .footerindent
+{
+ padding: 10px 0;
+ margin-left: 155px;
+}
+
#quota
{
position: absolute;
diff --git a/skins/classic/splitter.js b/skins/classic/splitter.js
index 72ada5719..cec6a4713 100644
--- a/skins/classic/splitter.js
+++ b/skins/classic/splitter.js
@@ -17,6 +17,8 @@ function rcube_splitter(attrib)
this.drag_active = false;
this.callback = attrib.callback;
+ var me = this;
+
this.init = function()
{
this.p1 = document.getElementById(this.p1id);
@@ -42,9 +44,9 @@ function rcube_splitter(attrib)
this.elm.unselectable = 'on';
// add the mouse event listeners
- rcube_event.add_listener({element: this.elm, event:'mousedown', object:this, method:'onDragStart'});
+ $(this.elm).mousedown(onDragStart);
if (bw.ie)
- rcube_event.add_listener({element: window, event:'resize', object:this, method:'onResize'});
+ $(window).resize(onResize);
// read saved position from cookie
var cookie = rcmail.get_cookie(this.id);
@@ -90,19 +92,19 @@ function rcube_splitter(attrib)
/**
* Handler for mousedown events
*/
- this.onDragStart = function(e)
+ function onDragStart(e)
{
+ me.drag_active = true;
+
// disable text selection while dragging the splitter
if (bw.konq || bw.chrome || bw.safari)
document.body.style.webkitUserSelect = 'none';
- this.p1pos = this.relative ? $(this.p1).position() : $(this.p1).offset();
- this.p2pos = this.relative ? $(this.p2).position() : $(this.p2).offset();
- this.drag_active = true;
+ me.p1pos = me.relative ? $(me.p1).position() : $(me.p1).offset();
+ me.p2pos = me.relative ? $(me.p2).position() : $(me.p2).offset();
// start listening to mousemove events
- rcube_event.add_listener({element:document, event:'mousemove', object:this, method:'onDrag'});
- rcube_event.add_listener({element:document, event:'mouseup', object:this, method:'onDragStop'});
+ $(document).bind('mousemove.'+me.id, onDrag).bind('mouseup.'+me.id, onDragStop);
// enable dragging above iframes
$('iframe').each(function() {
@@ -119,59 +121,64 @@ function rcube_splitter(attrib)
/**
* Handler for mousemove events
*/
- this.onDrag = function(e)
+ function onDrag(e)
{
- if (!this.drag_active)
+ if (!me.drag_active)
return false;
+ // with timing events dragging action is more responsive
+ window.clearTimeout(me.ts);
+ me.ts = window.setTimeout(function() { onDragAction(e); }, 1);
+
+ return false;
+ };
+
+ function onDragAction(e)
+ {
var pos = rcube_event.get_mouse_pos(e);
- if (this.relative) {
- var parent = $(this.p1.parentNode).offset();
+ if (me.relative) {
+ var parent = $(me.p1.parentNode).offset();
pos.x -= parent.left;
pos.y -= parent.top;
}
- if (this.horizontal) {
- if (((pos.y - this.layer.height * 1.5) > this.p1pos.top) && ((pos.y + this.layer.height * 1.5) < (this.p2pos.top + this.p2.offsetHeight))) {
- this.pos = pos.y;
- this.resize();
+ if (me.horizontal) {
+ if (((pos.y - me.layer.height * 1.5) > me.p1pos.top) && ((pos.y + me.layer.height * 1.5) < (me.p2pos.top + me.p2.offsetHeight))) {
+ me.pos = pos.y;
+ me.resize();
}
}
- else {
- if (((pos.x - this.layer.width * 1.5) > this.p1pos.left) && ((pos.x + this.layer.width * 1.5) < (this.p2pos.left + this.p2.offsetWidth))) {
- this.pos = pos.x;
- this.resize();
- }
+ else if (((pos.x - me.layer.width * 1.5) > me.p1pos.left) && ((pos.x + me.layer.width * 1.5) < (me.p2pos.left + me.p2.offsetWidth))) {
+ me.pos = pos.x;
+ me.resize();
}
- this.p1pos = this.relative ? $(this.p1).position() : $(this.p1).offset();
- this.p2pos = this.relative ? $(this.p2).position() : $(this.p2).offset();
-
- return false;
+ me.p1pos = me.relative ? $(me.p1).position() : $(me.p1).offset();
+ me.p2pos = me.relative ? $(me.p2).position() : $(me.p2).offset();
};
/**
* Handler for mouseup events
*/
- this.onDragStop = function(e)
+ function onDragStop(e)
{
+ me.drag_active = false;
+
// resume the ability to highlight text
if (bw.konq || bw.chrome || bw.safari)
document.body.style.webkitUserSelect = 'auto';
// cancel the listening for drag events
- rcube_event.remove_listener({element:document, event:'mousemove', object:this, method:'onDrag'});
- rcube_event.remove_listener({element:document, event:'mouseup', object:this, method:'onDragStop'});
- this.drag_active = false;
+ $(document).unbind('.' + me.id);
// remove temp divs
- $('div.iframe-splitter-fix').each(function() { this.parentNode.removeChild(this); });
+ $('div.iframe-splitter-fix').remove();
- this.set_cookie();
+ me.set_cookie();
- if (typeof this.callback == 'function')
- this.callback(this);
+ if (typeof me.callback == 'function')
+ me.callback(me);
return bw.safari ? true : rcube_event.cancel(e);
};
@@ -179,15 +186,15 @@ function rcube_splitter(attrib)
/**
* Handler for window resize events
*/
- this.onResize = function(e)
+ function onResize(e)
{
- if (this.horizontal) {
- var new_height = parseInt(this.p2.parentNode.offsetHeight, 10) - parseInt(this.p2.style.top, 10) - (bw.ie8 ? 2 : 0);
- this.p2.style.height = (new_height > 0 ? new_height : 0) +'px';
+ if (me.horizontal) {
+ var new_height = parseInt(me.p2.parentNode.offsetHeight, 10) - parseInt(me.p2.style.top, 10) - (bw.ie8 ? 2 : 0);
+ me.p2.style.height = (new_height > 0 ? new_height : 0) +'px';
}
else {
- var new_width = parseInt(this.p2.parentNode.offsetWidth, 10) - parseInt(this.p2.style.left, 10);
- this.p2.style.width = (new_width > 0 ? new_width : 0) + 'px';
+ var new_width = parseInt(me.p2.parentNode.offsetWidth, 10) - parseInt(me.p2.style.left, 10);
+ me.p2.style.width = (new_width > 0 ? new_width : 0) + 'px';
}
};
diff --git a/skins/classic/templates/compose.html b/skins/classic/templates/compose.html
index 7d8aa1e43..74d25778b 100644
--- a/skins/classic/templates/compose.html
+++ b/skins/classic/templates/compose.html
@@ -40,6 +40,7 @@
<span id="spellmenulink" onclick="rcmail_ui.show_popup('spellmenu');return false"></span>
</span>
<roundcube:endif />
+ <a href="#responses" class="button responses" label="responses" title="<roundcube:label name='insertresponse' />" id="responsesmenulink" unselectable="on" onmousedown="return false" onclick="rcmail_ui.show_popup('responsesmenu');return false">&nbsp;</a>
<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>
@@ -198,6 +199,16 @@
</table>
</div>
+<div id="responsesmenu" class="popupmenu">
+ <ul id="textresponsesmenu">
+ <li><label class="comment"><roundcube:label name="insertresponse" /></label></li>
+ <roundcube:object name="responseslist" id="responseslist" tagname="ul" itemclass="active" />
+ <li><label class="comment"><roundcube:label name="manageresponses" /></label></li>
+ <li><roundcube:button command="save-response" type="link" label="savenewresponse" classAct="active" unselectable="on" /></li>
+ <li><roundcube:button command="responses" type="link" label="editresponses" classAct="active" /></li>
+ </ul>
+</div>
+
<div id="spellmenu" class="popupmenu selectable"></div>
</form>
diff --git a/skins/classic/templates/message.html b/skins/classic/templates/message.html
index bd4fbf277..3ab0a2e5e 100644
--- a/skins/classic/templates/message.html
+++ b/skins/classic/templates/message.html
@@ -30,11 +30,13 @@
<div id="mailboxlist-container">
<div id="mailboxlist-title" class="boxtitle"><roundcube:label name="mailboxlist" /></div>
<div class="boxlistcontent">
- <roundcube:object name="mailboxlist" id="mailboxlist" class="treelist" maxlength="25" />
+ <roundcube:object name="mailboxlist" id="mailboxlist" class="treelist" folder_filter="mail" />
</div>
<div class="boxfooter"></div>
</div>
</div>
+<roundcube:else />
+<roundcube:object name="mailboxlist" folder_filter="mail" type="js" />
<roundcube:endif />
<div id="messageframe">
diff --git a/skins/classic/templates/responseedit.html b/skins/classic/templates/responseedit.html
new file mode 100644
index 000000000..67ba35bac
--- /dev/null
+++ b/skins/classic/templates/responseedit.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<script type="text/javascript" src="/functions.js"></script>
+
+</head>
+<body class="iframe">
+
+<div id="prefs-title" class="boxtitle"><roundcube:object name="steptitle" /></div>
+
+<div id="response-details" class="boxcontent">
+ <roundcube:object name="responseform" class="propform" size="60" textareacols="60" textarearows="18" />
+
+ <div id="formfooter">
+ <div class="footerindent">
+ <roundcube:button command="save" type="input" class="button mainaction" label="save" condition="!env:readonly" />
+ </div>
+ </div>
+</div>
+
+</body>
+</html>
diff --git a/skins/classic/templates/responses.html b/skins/classic/templates/responses.html
new file mode 100644
index 000000000..2459827b0
--- /dev/null
+++ b/skins/classic/templates/responses.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<script type="text/javascript" src="/functions.js"></script>
+<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\\');') : ''" />
+}
+</style>
+
+</head>
+<body>
+
+<roundcube:include file="/includes/taskbar.html" />
+<roundcube:include file="/includes/header.html" />
+<roundcube:include file="/includes/settingstabs.html" />
+
+<div id="mainscreen">
+
+<div id="identities-list">
+<div id="identity-title" class="boxtitle"><roundcube:label name="responses" /></div>
+<div class="boxlistcontent">
+<roundcube:object name="responsesList" id="identities-table" class="records-table" cellspacing="0" summary="Responses list" noheader="true" editIcon="" />
+</div>
+<div class="boxfooter">
+<roundcube:button command="add" type="link" title="newidentity" class="buttonPas addgroup" classAct="button addgroup" content=" " condition="config:identities_level:0<2" /><roundcube:button command="delete" type="link" title="delete" class="buttonPas delgroup" classAct="button delgroup" content=" " condition="config:identities_level:0<2" />
+</div>
+</div>
+
+<script type="text/javascript">
+ var identviewsplit = new rcube_splitter({id:'identviewsplitter', p1: 'identities-list', p2: 'identity-box', orientation: 'v', relative: true, start: 300 });
+ rcmail.add_onload('identviewsplit.init()');
+</script>
+
+<div id="identity-box">
+ <roundcube:object name="responseframe" id="identity-frame" width="100%" height="100%" frameborder="0" src="/watermark.html" />
+</div>
+
+</div>
+
+</body>
+</html>