From 71cc6bf630f2a0bc12091515418f6d23e18d2720 Mon Sep 17 00:00:00 2001 From: thomascube Date: Tue, 19 Jul 2011 19:26:55 +0000 Subject: Add drop-target for root folder; fix row insertion when moving to a protected folder --- program/js/app.js | 46 +++++++++++++++++++++++++------------- program/steps/settings/folders.inc | 7 ++++++ 2 files changed, 38 insertions(+), 15 deletions(-) (limited to 'program') diff --git a/program/js/app.js b/program/js/app.js index 92a47fdcf..2987434f9 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -4460,6 +4460,10 @@ function rcube_webmail() row.obj.onmouseout = function() { p.unfocus_subscription(row.id); }; }; this.subscription_list.init(); + $('#mailboxroot') + .mouseover(function(){ p.focus_subscription(this.id); }) + .mouseout(function(){ p.unfocus_subscription(this.id); }) + .mouseup(function(){ if (p.drag_active) p.subscription_move_folder(); }); }; this.focus_subscription = function(id) @@ -4479,6 +4483,10 @@ function rcube_webmail() $(row).addClass('droptarget'); } } + else if (id == 'mailboxroot') { + this.set_env('dstfolder', ''); + $(row).addClass('droptarget'); + } else if (this.env.mailbox.match(new RegExp(delim))) { this.set_env('dstfolder', this.env.delimiter); $(this.subscription_list.frame).addClass('droptarget'); @@ -4523,11 +4531,13 @@ function rcube_webmail() (this.env.dstfolder != this.env.mailbox.replace(reg, '')) ) { reg = new RegExp('[^'+delim+']*['+delim+']', 'g'); - var lock = this.set_busy(true, 'foldermoving'), - basename = this.env.mailbox.replace(reg, ''), + var basename = this.env.mailbox.replace(reg, ''), newname = this.env.dstfolder==this.env.delimiter ? basename : this.env.dstfolder+this.env.delimiter+basename; - - this.http_post('rename-folder', '_folder_oldname='+urlencode(this.env.mailbox)+'&_folder_newname='+urlencode(newname), lock); + + if (newname != this.env.mailbox) { + this.http_post('rename-folder', '_folder_oldname='+urlencode(this.env.mailbox)+'&_folder_newname='+urlencode(newname), this.set_busy(true, 'foldermoving')); + this.subscription_list.draglayer.hide(); + } } this.drag_active = false; this.unfocus_subscription(this.get_folder_row_id(this.env.dstfolder)); @@ -4557,9 +4567,9 @@ function rcube_webmail() if (!this.gui_objects.subscriptionlist) return false; - var row, n, i, tmp, folders, len, list = [], slist = [], + var row, n, i, tmp, folders, rowid, list = [], slist = [], tbody = this.gui_objects.subscriptionlist.tBodies[0], - refrow = $('tr', tbody).get(0), + refrow = $('tr', tbody).get(1), id = 'rcmrow'+((new Date).getTime()); if (!refrow) { @@ -4586,7 +4596,10 @@ function rcube_webmail() this.env.subscriptionrows[id] = [name, display_name, 0]; // sort folders, to find a place where to insert the row - folders = this.env.subscriptionrows; + folders = []; + $.each(this.env.subscriptionrows, function(k,v){ folders.push(v) }); + folders.sort(function(a,b){ return a[0] < b[0] ? -1 : (a[0] > b[0] ? 1 : 0) }); + for (n in folders) { // protected folder if (folders[n][2]) { @@ -4602,19 +4615,22 @@ function rcube_webmail() tmp = null; } } - list.sort(); - // make sure protected folders (and their subs) are on top - list = slist.concat(list); + + // check if subfolder of a protected folder + for (n=0; nadd_row(array('id' => 'mailboxroot', 'class' => 'virtual root')); + $table->add('name', ' '); + $table->add(null, ' '); + + $a_js_folders['mailboxroot'] = array('.', '', true); + $checkbox_subscribe = new html_checkbox(array( 'name' => '_subscribed[]', 'title' => rcube_label('changesubscription'), -- cgit v1.2.3