first steps to change profile by click on profileNode

This commit is contained in:
Klaus Leithoff 2013-02-20 11:31:57 +00:00
parent 3bce17e854
commit c8d6d4b436
3 changed files with 82 additions and 7 deletions

View File

@ -207,7 +207,8 @@ class mail_bo
$loadfailed = false;
self::$instances[$_profileID]->mailPreferences = self::$instances[$_profileID]->bopreferences->getPreferences(true,$_profileID);
//error_log(__METHOD__.__LINE__." ReRead the Prefs for ProfileID ".$_profileID.' called from:'.function_backtrace());
if (self::$instances[$_profileID]->mailPreferences) {
if (self::$instances[$_profileID]->mailPreferences)
{
self::$instances[$_profileID]->icServer = self::$instances[$_profileID]->mailPreferences->getIncomingServer($_profileID);
// if we do not get an icServer object, session restore failed on bopreferences->getPreferences
if (!self::$instances[$_profileID]->icServer) $loadfailed=true;
@ -289,6 +290,7 @@ class mail_bo
}
}
if (self::$debug) error_log(__METHOD__.'::'.__LINE__.' ProfileSelected:'.$_profileID.' -> '.$identities[$_profileID]);
return $_profileID;
}
@ -2536,7 +2538,7 @@ class mail_bo
*/
function getMessageAttachments($_uid, $_partID='', $_structure='', $fetchEmbeddedImages=true, $fetchTextCalendar=false, $resolveTNEF=true)
{
if (self::$debug) echo __METHOD__."$_uid, $_partID<br>";
if (self::$debug) error_log( __METHOD__.":$_uid, $_partID");
if(is_object($_structure)) {
$structure = $_structure;
@ -2547,7 +2549,7 @@ class mail_bo
$structure = $this->_getSubStructure($structure, $_partID);
}
}
if (self::$debug) _debug_array($structure);
if (self::$debug) error_log(__METHOD__.__LINE__.array2string($structure));
$attachments = array();
// this kind of messages contain only the attachment and no body
if($structure->type == 'APPLICATION' || $structure->type == 'AUDIO' || $structure->type == 'VIDEO' || $structure->type == 'IMAGE' || ($structure->type == 'TEXT' && $structure->disposition == 'ATTACHMENT') )

View File

@ -45,8 +45,11 @@ class mail_ui
if (!empty($_GET["resetConnection"])) $connectionReset = html::purify($_GET["resetConnection"]);
unset($_GET["resetConnection"]);
$icServerID =& egw_cache::getSession('mail','activeProfileID');
//$icServerID =& egw_cache::getSession('mail','activeProfileID');
if (isset($GLOBALS['egw_info']['user']['preferences']['mail']['ActiveProfileID']) && !empty($GLOBALS['egw_info']['user']['preferences']['mail']['ActiveProfileID']))
{
$icServerID = (int)$GLOBALS['egw_info']['user']['preferences']['mail']['ActiveProfileID'];
}
if ($connectionReset)
{
error_log(__METHOD__.__LINE__.' Connection Reset triggered:'.$connectionReset.' for Profile with ID:'.$icServerID);
@ -54,13 +57,36 @@ class mail_ui
}
$this->mail_bo = mail_bo::getInstance(false,$icServerID);
error_log(__METHOD__.__LINE__.' Fetched IC Server:'.$icServerID.function_backtrace());
error_log(__METHOD__.__LINE__.' Fetched IC Server:'.$icServerID.'/'.$this->mail_bo->profileID.':'.function_backtrace());
// no icServer Object: something failed big time
if (!isset($this->mail_bo->icServer)) exit; // ToDo: Exception or the dialog for setting up a server config
if (!($this->mail_bo->icServer->_connected == 1)) $this->mail_bo->openConnection($icServerID);
}
/**
* changeProfile
*
* @param int $icServerID
*/
function changeProfile($icServerID)
{
error_log(__METHOD__.__LINE__.'->'.$icServerID);
emailadmin_bo::unsetCachedObjects($icServerID);
$this->mail_bo = mail_bo::getInstance(false,$icServerID);
error_log(__METHOD__.__LINE__.' Fetched IC Server:'.$icServerID.'/'.$this->mail_bo->profileID.':'.function_backtrace());
// no icServer Object: something failed big time
if (!isset($this->mail_bo->icServer)) exit; // ToDo: Exception or the dialog for setting up a server config
/*if (!($this->mail_bo->icServer->_connected == 1))*/ $this->mail_bo->openConnection($icServerID);
// save session varchar
$oldicServerID =& egw_cache::getSession('mail','activeProfileID');
$oldicServerID = $icServerID;
// save pref
$GLOBALS['egw']->preferences->add('mail','ActiveProfileID',$icServerID,'user');
$GLOBALS['egw']->preferences->save_repository(true);
$GLOBALS['egw_info']['user']['preferences']['mail']['ActiveProfileID'] = $icServerID;
}
/**
* Main mail page
*
@ -328,8 +354,12 @@ class mail_ui
* )
* );
*/
function getFolderTree($_fetchCounters=false)
function getFolderTree($_fetchCounters=false, $_profileID=null)
{
if ($_profileID && $_profileID != $this->mail_bo->profileID)
{
$this->changeProfile($_profileID);
}
$folderObjects = $this->mail_bo->getFolderObjects(true,false,true);
$trashFolder = $this->mail_bo->getTrashFolder();
$templateFolder = $this->mail_bo->getTemplateFolder();
@ -1303,6 +1333,18 @@ error_log(__METHOD__.__LINE__.' SelectedFolder:'.$query['selectedFolder'].' Star
}
}
/**
* empty changeProfile - its called via json, so the function must start with ajax (or the class-name must contain ajax)
*
* @return nothing
*/
function ajax_changeProfile($icServerID)
{
$this->changeProfile($icServerID);
$response = egw_json_response::get();
$response->call('egw_refresh',lang('changed profile'),'mail');
}
/**
* empty trash folder - its called via json, so the function must start with ajax (or the class-name must contain ajax)
*

View File

@ -30,6 +30,12 @@ function mail_startTimerFolderStatusUpdate(_refreshTimeOut) {
if(_refreshTimeOut > 9999) {//we do not set _refreshTimeOut's less than 10 seconds (our initial call)
mail_doTimedRefresh = window.setInterval("mail_refreshFolderStatus()", _refreshTimeOut);
}
// initial call done -> now set the timeout to the timeout defined by pref
if(_refreshTimeOut == 10000)
{
var minutes = egw.preference('refreshTime','mail');
mail_refreshTimeOut = _refreshTimeOut= 1000*60*(minutes?minutes:3); // either the prefs or 3 Minutes
}
}
/**
@ -176,8 +182,24 @@ function mail_compressFolder() {
request.sendRequest();
}
/**
* mail_changeProfile
* @param folder, the ID of the selected Node -> should be an integer
* @param _widget, handle to the tree widget
*/
function mail_changeProfile(folder,_widget) {
// alert(folder);
var request = new egw_json_request('mail.mail_ui.ajax_changeProfile',[folder]);
request.sendRequest(false);
mail_refreshMessageGrid();
return true;
}
/**
* mail_changeFolder
* @param folder, the ID of the selected Node
* @param _widget, handle to the tree widget
*/
function mail_changeFolder(folder,_widget) {
//alert('change Folder called:'+folder);
@ -185,6 +207,14 @@ function mail_changeFolder(folder,_widget) {
var img = _widget.getSelectedNode().images[0]; // fetch first image
if (!(img.search(eval('/'+'NoSelect'+'/'))<0) || !(img.search(eval('/'+'thunderbird'+'/'))<0))
{
if (!(img.search(eval('/'+'thunderbird'+'/'))<0))
{
rv = mail_changeProfile(folder,_widget);
if (rv)
{
return rv;
}
}
if (_widget.event_args.length==2)
{
folder = _widget.event_args[1];
@ -213,6 +243,7 @@ function mail_changeFolder(folder,_widget) {
app_refresh(myMsg, 'mail');
}
mail_refreshFolderStatus(folder,'forced');
mail_startTimerFolderStatusUpdate(mail_refreshTimeOut);
}
/**