Clicking on profile in tree changes profile & selects inbox

This commit is contained in:
Nathan Gray 2014-01-22 09:32:18 +00:00
parent e103145a53
commit 4f9c9a8892
2 changed files with 32 additions and 6 deletions

View File

@ -3707,9 +3707,11 @@ blockquote[type=cite] {
/** /**
* empty changeProfile - its called via json, so the function must start with ajax (or the class-name must contain ajax) * empty changeProfile - its called via json, so the function must start with ajax (or the class-name must contain ajax)
* *
* @param int $icServerId New profile / server ID
* @param bool $getFolders The client needs the folders for the profile
* @return nothing * @return nothing
*/ */
function ajax_changeProfile($icServerID) function ajax_changeProfile($icServerID, $getFolders = true)
{ {
//lang('Connect to Profile %1',$icServerID); //lang('Connect to Profile %1',$icServerID);
if ($icServerID && $icServerID != $this->mail_bo->profileID) if ($icServerID && $icServerID != $this->mail_bo->profileID)
@ -3718,7 +3720,16 @@ blockquote[type=cite] {
$this->changeProfile($icServerID); $this->changeProfile($icServerID);
} }
$response = egw_json_response::get(); $response = egw_json_response::get();
$response->call('egw_refresh',lang('changed profile'),'mail'); //$folderInfo = $this->mail_bo->getFolderStatus($icServerID,false);
// Send full info back in the response
if($getFolders)
{
$refreshData = array(
$icServerID => $this->getFolderTree(true, $icServerID, true)
);
$response->call('app.mail.mail_reloadNode',$refreshData);
}
} }
/** /**

View File

@ -1071,12 +1071,27 @@ app.classes.mail = AppJS.extend(
* mail_changeProfile * mail_changeProfile
* @param folder, the ID of the selected Node -> should be an integer * @param folder, the ID of the selected Node -> should be an integer
* @param _widget, handle to the tree widget * @param _widget, handle to the tree widget
* @param {boolean} getFolders Flag to indicate that the profile needs the mail
* folders. False means they're already loaded in the tree, and we don't need
* them again
*/ */
mail_changeProfile: function(folder,_widget) { mail_changeProfile: function(folder,_widget, getFolders) {
if(typeof getFolders == 'undefined')
{
getFolders = true;
}
// alert(folder); // alert(folder);
egw_message(this.egw.lang('Connect to Profile %1',_widget.getSelectedLabel())); egw_message(this.egw.lang('Connect to Profile %1',_widget.getSelectedLabel()));
egw.json('mail.mail_ui.ajax_changeProfile',[folder])
.sendRequest(); this.lock_tree();
egw.json('mail.mail_ui.ajax_changeProfile',[folder, getFolders], jQuery.proxy(function() {
// Profile changed, select inbox
var inbox = folder + '::INBOX';
_widget.reSelectItem(inbox)
this.mail_changeFolder(inbox,_widget,'');
this.unlock_tree();
},this))
.sendRequest(true);
return true; return true;
}, },
@ -1106,7 +1121,7 @@ app.classes.mail = AppJS.extend(
if (server[0] != previousServer[0] && profile_selected) if (server[0] != previousServer[0] && profile_selected)
{ {
// mail_changeProfile triggers a refresh, no need to do any more // mail_changeProfile triggers a refresh, no need to do any more
return this.mail_changeProfile(_folder,_widget); return this.mail_changeProfile(_folder,_widget, _widget.getSelectedNode().childsCount == 0);
} }
// Apply new selected folder to list, which updates data // Apply new selected folder to list, which updates data