Here's a pretty simple patch for doing the drag over a folder thing.
The other thing it does is keeps track of whether the "folder" portion of the screen or the "mail" portion of the screen has the "focus" and changes the color accordingly.
For example if you've clicked on the Inbox folder, the folder will be colored red. If you then select a message, the Inbox folder will now be highlighted in grey and the message you've selected will be red. If you click back on to the Inbox folder, the message you've selected will turn grey and "Inbox" will turn back red.
If you go back to the message list, select a message and drag it over the folder list, the folder's will turn red as your mouse hovers over them.
I've tested this a little, but of course it could always use more testing. Please let me know your thoughts on this patch.
-Charles
--- program/js/app.js (revision 274) +++ program/js/app.js (working copy) @@ -244,7 +244,6 @@ // load body click event document.onmousedown = function(){ return rcube_webmail_client.reset_click(); }; document.onkeydown = function(e){ return rcube_webmail_client.key_pressed(e, msg_list_frame); };
// flag object as complete this.loaded = true;
@@ -285,6 +284,14 @@ } }
var s_mbox = String(this.env.mailbox).toLowerCase().replace(this.mbox_expression, '');
var mbox_li = document.getElementById('rcmbx'+s_mbox);
if (mbox_li)
this.set_classname(mbox_li, 'unfocused', true);
@@ -1161,9 +1168,10 @@ // onmouseup handler for mailboxlist item this.mbox_mouse_up = function(mbox) {
this.unfocus_mailbox(mbox);
this.command('moveto', mbox);
} else this.command('list', mbox);
return false;
@@ -1529,8 +1537,7 @@ if (this.env.search_request) add_url += '&_search='+this.env.search_request;
this.select_mailbox(mbox);
this.select_mailbox(mbox);
// load message list remotely if (this.gui_objects.messagelist)
@@ -1634,7 +1641,26 @@ return true; };
var s_mbox = String(mbox).toLowerCase().replace(this.mbox_expression, '');
var mbox_li = document.getElementById('rcmbx'+s_mbox);
if (mbox_li)
this.set_classname(mbox_li, 'selected', true);
var s_mbox = String(mbox).toLowerCase().replace(this.mbox_expression, '');
var mbox_li = document.getElementById('rcmbx'+s_mbox);
if (mbox_li)
this.set_classname(mbox_li, 'selected', false);
@@ -2199,7 +2225,6 @@ highlight.removeAttribute('id'); //highlight.removeAttribute('class'); this.set_classname(highlight, 'selected', false);
this.set_classname(highlight, 'unfocused', false);
}
if (next)
@@ -2990,7 +3015,7 @@ // mark a mailbox as selected and set environment variable this.select_mailbox = function(mbox) {
@@ -3003,8 +3028,10 @@ if (current_li) { this.set_classname(current_li, 'selected', false); this.set_classname(current_li, 'unfocused', false);
}
if (mbox_li)
}
if (mbox_li || this.env.mailbox == mbox)
this.set_classname(mbox_li, 'unfocused', false);
this.set_classname(mbox_li, 'selected', true);
}
--- program/steps/mail/func.inc (revision 274) +++ program/steps/mail/func.inc (working copy) @@ -216,6 +216,8 @@
$out .= sprintf('<li id="rcmbx%s" class="mailbox %s %s%s%s"><a href="%s&_mbox=%s"'.
' onclick="return %s.command(\'list\',\'%s\')"'.
' onmouseover="return %s.focus_mailbox(\'%s\')"' .
' onmouseout="return %s.unfocus_mailbox(\'%s\')"' .
' onmouseup="return %s.mbox_mouse_up(\'%s\')"%s>%s</a>',
$folder_css,
$class_name,
@@ -227,7 +229,12 @@ $JS_OBJECT_NAME, addslashes($folder['id']), $JS_OBJECT_NAME,
addslashes($folder['id']),
$JS_OBJECT_NAME,
addslashes($folder['id']),
$JS_OBJECT_NAME,
addslashes($folder['id']),
$title,
rep_specialchars_output($foldername, 'html', 'all'));
--- skins/default/mail.css (revision 274) +++ skins/default/mail.css (working copy) @@ -266,7 +266,7 @@
#mailboxlist li.selected {
}
@@ -276,7 +276,18 @@ font-weight: bold; }
+#mailboxlist li.unfocused +{
+}
+#mailboxlist li.unfocused a +{
+}
/* styles for nested folders */ #mailboxlist ul { list-style: none;
Hi Charles,
Sounds like this should go into roundcube without discussion... Have you commited this already or is there a reason to keep this as a separate patch?
Regards,
Mark
Charles McNulty wrote:
Here's a pretty simple patch for doing the drag over a folder thing.
The other thing it does is keeps track of whether the "folder" portion of the screen or the "mail" portion of the screen has the "focus" and changes the color accordingly.
For example if you've clicked on the Inbox folder, the folder will be colored red. If you then select a message, the Inbox folder will now be highlighted in grey and the message you've selected will be red. If you click back on to the Inbox folder, the message you've selected will turn grey and "Inbox" will turn back red.
If you go back to the message list, select a message and drag it over the folder list, the folder's will turn red as your mouse hovers over them.
I've tested this a little, but of course it could always use more testing. Please let me know your thoughts on this patch.
-Charles
Index: program/js/app.js
--- program/js/app.js (revision 274) +++ program/js/app.js (working copy) @@ -244,7 +244,6 @@ // load body click event document.onmousedown = function(){ return rcube_webmail_client.reset_click(); }; document.onkeydown = function(e){ return rcube_webmail_client.key_pressed(e, msg_list_frame); };
// flag object as complete this.loaded = true;
@@ -285,6 +284,14 @@ } }
- if (this.gui_objects.mailboxlist) {
var s_mbox = String(this.env.mailbox).toLowerCase().replace(this.mbox_expression, '');
var mbox_li = document.getElementById('rcmbx'+s_mbox);
if (mbox_li)
this.set_classname(mbox_li, 'unfocused', true);
- }
- this.in_message_list = true; e.cancelBubble = true; };
@@ -1161,9 +1168,10 @@ // onmouseup handler for mailboxlist item this.mbox_mouse_up = function(mbox) {
- if (this.drag_active)
- if (this.drag_active){
this.unfocus_mailbox(mbox); this.command('moveto', mbox);
- else
} else this.command('list', mbox);
return false;
@@ -1529,8 +1537,7 @@ if (this.env.search_request) add_url += '&_search='+this.env.search_request;
- if (this.env.mailbox!=mbox)
this.select_mailbox(mbox);
this.select_mailbox(mbox);
// load message list remotely if (this.gui_objects.messagelist)
@@ -1634,7 +1641,26 @@ return true; };
- this.focus_mailbox = function(mbox) {
- if (this.gui_objects.mailboxlist && this.drag_active) {
var s_mbox = String(mbox).toLowerCase().replace(this.mbox_expression, '');
var mbox_li = document.getElementById('rcmbx'+s_mbox);
if (mbox_li)
this.set_classname(mbox_li, 'selected', true);
- }
- }
- this.unfocus_mailbox = function(mbox) {
- if (this.gui_objects.mailboxlist && this.drag_active) {
var s_mbox = String(mbox).toLowerCase().replace(this.mbox_expression, '');
var mbox_li = document.getElementById('rcmbx'+s_mbox);
if (mbox_li)
this.set_classname(mbox_li, 'selected', false);
- }
- }
- // move selected messages to the specified mailbox this.move_messages = function(mbox) {
@@ -2199,7 +2225,6 @@ highlight.removeAttribute('id'); //highlight.removeAttribute('class'); this.set_classname(highlight, 'selected', false);
this.set_classname(highlight, 'unfocused', false); } if (next)
@@ -2990,7 +3015,7 @@ // mark a mailbox as selected and set environment variable this.select_mailbox = function(mbox) {
- if (this.gui_objects.mailboxlist)
- if (this.gui_objects.mailboxlist ) { var item, reg, text_obj; var s_current = this.env.mailbox.toLowerCase().replace(this.mbox_expression, '');
@@ -3003,8 +3028,10 @@ if (current_li) { this.set_classname(current_li, 'selected', false); this.set_classname(current_li, 'unfocused', false);
}
if (mbox_li)
}
if (mbox_li || this.env.mailbox == mbox)
this.set_classname(mbox_li, 'unfocused', false); this.set_classname(mbox_li, 'selected', true); }
Index: program/steps/mail/func.inc
--- program/steps/mail/func.inc (revision 274) +++ program/steps/mail/func.inc (working copy) @@ -216,6 +216,8 @@
$out .= sprintf('<li id="rcmbx%s" class="mailbox %s %s%s%s"><a href="%s&_mbox=%s"'. ' onclick="return %s.command(\'list\',\'%s\')"'.
' onmouseover="return %s.focus_mailbox(\'%s\')"' .
' onmouseout="return %s.unfocus_mailbox(\'%s\')"' . ' onmouseup="return %s.mbox_mouse_up(\'%s\')"%s>%s</a>', $folder_css, $class_name,
@@ -227,7 +229,12 @@ $JS_OBJECT_NAME, addslashes($folder['id']), $JS_OBJECT_NAME,
addslashes($folder['id']),
$JS_OBJECT_NAME,
addslashes($folder['id']),
$JS_OBJECT_NAME, addslashes($folder['id']),
$title, rep_specialchars_output($foldername, 'html', 'all'));
Index: skins/default/mail.css
--- skins/default/mail.css (revision 274) +++ skins/default/mail.css (working copy) @@ -266,7 +266,7 @@
#mailboxlist li.selected {
- background-color: #929292;
- background-color: #CC3333; border-bottom: 1px solid #898989;
}
@@ -276,7 +276,18 @@ font-weight: bold; }
+#mailboxlist li.unfocused +{
- background-color: #929292;
- border-bottom: 1px solid #898989;
+}
+#mailboxlist li.unfocused a +{
- color: #FFF;
- font-weight: bold;
+}
/* styles for nested folders */ #mailboxlist ul { list-style: none;
Hi Charles,
I've applied your patch and it looks very nice. Good Work! You can commit it to the trunk if you're redy. There's only one little thing I'd like to change: We should use another style for the highlighted mailboxes that the one for the selected state. Just add
#mailboxlist li.droptarget { background-color: #FFFFA6; }
and set the class name to "droptarget" instead of "selected" and we're fine.
And finally another detail. I've found the following code about 6 times within app.js: var s_mbox = String(mbox).toLowerCase().replace(this.mbox_expression,''); var mbox_li = document.getElementById('rcmbx'+s_mbox);
I guess that's enough to create a new method that returns the dom node of a specific mailbox LI.
Thanks a lot for your contribution! Thomas
Charles McNulty schrieb:
Here's a pretty simple patch for doing the drag over a folder thing.
The other thing it does is keeps track of whether the "folder" portion of the screen or the "mail" portion of the screen has the "focus" and changes the color accordingly.
For example if you've clicked on the Inbox folder, the folder will be colored red. If you then select a message, the Inbox folder will now be highlighted in grey and the message you've selected will be red. If you click back on to the Inbox folder, the message you've selected will turn grey and "Inbox" will turn back red.
If you go back to the message list, select a message and drag it over the folder list, the folder's will turn red as your mouse hovers over them.
I've tested this a little, but of course it could always use more testing. Please let me know your thoughts on this patch.
-Charles
Hi Charles,
Just wanted to let you know, that I applied your path to the repository. Works great!
Thomas
Charles McNulty schrieb:
Here's a pretty simple patch for doing the drag over a folder thing.
The other thing it does is keeps track of whether the "folder" portion of the screen or the "mail" portion of the screen has the "focus" and changes the color accordingly.
For example if you've clicked on the Inbox folder, the folder will be colored red. If you then select a message, the Inbox folder will now be highlighted in grey and the message you've selected will be red. If you click back on to the Inbox folder, the message you've selected will turn grey and "Inbox" will turn back red.
If you go back to the message list, select a message and drag it over the folder list, the folder's will turn red as your mouse hovers over them.
I've tested this a little, but of course it could always use more testing. Please let me know your thoughts on this patch.
-Charles
Thomas Bruederli wrote:
Hi Charles,
Just wanted to let you know, that I applied your path to the repository. Works great!
Thomas
Thank you. I had been meaning to clean it up a little, implement your suggestion about the style name and so on, but just didn't have time. I see that you've done all of that in the patch! Thanks again!
-Charles