try to improve speed and refresh behavior

This commit is contained in:
Klaus Leithoff 2014-01-09 08:36:22 +00:00
parent b59524c4f6
commit f4254b5281
3 changed files with 41 additions and 12 deletions

View File

@ -978,7 +978,7 @@ class mail_bo
{
return $retValue;
}
$subscribedFolders = $this->icServer->listsubscribedMailboxes('', $_folderName);
$subscribedFolders = $this->icServer->listSubscribedMailboxes('', $_folderName);
if(is_array($subscribedFolders) && count($subscribedFolders) == 1) {
$retValue['subscribed'] = true;
}
@ -1827,6 +1827,20 @@ class mail_bo
return true;
}
/**
* fetchUnSubscribedFolders: get unsubscribed IMAP folder list
*
* returns an array of unsubscribed IMAP folder names.
*
* @return array with folder names. eg.: 1 => INBOX/TEST
*/
function fetchUnSubscribedFolders()
{
$unSubscribedMailboxes = $this->icServer->listUnSubscribedMailboxes();
//error_log(__MEtHOD__.__LINE__.array2string($unSubscribedMailboxes));
return $unSubscribedMailboxes;
}
/**
* get IMAP folder objects
*
@ -1898,10 +1912,10 @@ class mail_bo
if(is_array($singleNameSpace)) {
// fetch and sort the subscribed folders
$subscribedMailboxes = $this->icServer->listsubscribedMailboxes($foldersNameSpace[$type]['prefix']);
$subscribedMailboxes = $this->icServer->listSubscribedMailboxes($foldersNameSpace[$type]['prefix']);
if (empty($subscribedMailboxes) && $type == 'shared')
{
$subscribedMailboxes = $this->icServer->listsubscribedMailboxes('',0);
$subscribedMailboxes = $this->icServer->listSubscribedMailboxes('',0);
}
//echo "subscribedMailboxes";_debug_array($subscribedMailboxes);

View File

@ -276,7 +276,7 @@ class mail_ui
$sel_options[self::$nm_index]['foldertree'] = $this->getFolderTree(false);
//$zendtime = microtime(true) - $zstarttime;
//error_log(__METHOD__.__LINE__. " time used: ".$zendtime);
//$this->mail_bo->fetchUnSubscribedFolders();
//$sessionFolder = $this->mail_bo->sessionData['mailbox'];// already set and tested this earlier
//if ($this->mail_bo->folderExists($sessionFolder))
//{
@ -697,7 +697,7 @@ class mail_ui
}
else
{
$oA['im0'] = "MailFolderPlain.png"; // one Level
$oA['im0'] = "MailFolderPlain.png"; // one Level
$oA['im1'] = "folderOpen.gif";
$oA['im2'] = "MailFolderClosed.png"; // has Children
}
@ -1150,6 +1150,13 @@ class mail_ui
'group' => ++$group,
'onExecute' => 'javaScript:app.mail.mail_delete',
),
/*
'select_all' => array(
'caption' => 'Select all',
'group' => ++$group,
'shortcut' => egw_keymanager::shortcut(egw_keymanager::A, false, true),
),
*/
'drag_mail' => array(
'dragType' => array('mail','file'),
'type' => 'drag',
@ -1323,6 +1330,8 @@ unset($query['actions']);
//error_log(__METHOD__.__LINE__.array2string($rows));
$endtime = microtime(true) - $starttime;
//error_log(__METHOD__.__LINE__. " time used: ".$endtime.' for Folder:'.$_folderName.' Start:'.$query['start'].' NumRows:'.$query['num_rows']);
$response = egw_json_response::get();
$response->call('app.mail.mail_refreshFolderStatus',array('_nodeID'=>$_profileID.self::$delimiter.$_folderName,'mode'=>null,'_refreshGridArea'=>false),'mail');
return $rowsFetched['messages'];
}
@ -3528,7 +3537,7 @@ $success=true;
$_newName = $namePart;
$oldParentFolder = implode($del,$pA);
$parentFolder = $_newLocation;
if (strtoupper($folderName)!= 'INBOX')
if (strtoupper($folderName)!= 'INBOX' && (strlen($parentFolder)>strlen($folderName) && strpos($parentFolder,$folderName)===false))
{
//error_log(__METHOD__.__LINE__."$folderName, $parentFolder, $_newName");
$oldFolderInfo = $this->mail_bo->getFolderStatus($folderName,false);
@ -3612,8 +3621,8 @@ $success=true;
$profileID.self::$delimiter.$oldParentFolder=>$oldFolderInfo['shortDisplayName'],
$profileID.self::$delimiter.$parentFolder=>$folderInfo['shortDisplayName']);
// if we move the folder within the same parent-branch of the tree, there is no need no refresh the upper part
if (strpos($profileID.self::$delimiter.$parentFolder,$profileID.self::$delimiter.$oldParentFolder)!==false) unset($refreshData[$profileID.self::$delimiter.$parentFolder]);
if (count($refreshData)>1 && strpos($profileID.self::$delimiter.$oldParentFolder,$profileID.self::$delimiter.$parentFolder)!==false) unset($refreshData[$profileID.self::$delimiter.$oldParentFolder]);
if (strlen($parentFolder)>strlen($oldParentFolder) && strpos($parentFolder,$oldParentFolder)!==false) unset($refreshData[$profileID.self::$delimiter.$parentFolder]);
if (count($refreshData)>1 && strlen($oldParentFolder)>strlen($parentFolder) && strpos($oldParentFolder,$parentFolder)!==false) unset($refreshData[$profileID.self::$delimiter.$oldParentFolder]);
$response->call('app.mail.mail_reloadNode',$refreshData,'mail');
}

View File

@ -677,10 +677,10 @@ app.classes.mail = AppJS.extend(
window.clearTimeout(this.mail_doTimedRefresh);
}
if(_refreshTimeOut > 9999) {//we do not set _refreshTimeOut's less than 10 seconds
var self = this;
this.mail_doTimedRefresh = window.setInterval(function() {
self.mail_refreshFolderStatus.call(self,undefined,undefined,true);
},_refreshTimeOut);
//var self = this;
//this.mail_doTimedRefresh = window.setInterval(function() {
// self.mail_refreshFolderStatus.call(self,undefined,undefined,true);
//},_refreshTimeOut);
}
},
@ -691,6 +691,12 @@ app.classes.mail = AppJS.extend(
* @param mode
*/
mail_refreshFolderStatus: function(_nodeID,mode,_refreshGridArea) {
if (typeof _nodeID != 'undefined' && typeof _nodeID[_nodeID] != 'undefined' && _nodeID[_nodeID])
{
_refreshGridArea = _nodeID[_refreshGridArea];
mode = _nodeID[mode];
_nodeID = _nodeID[_nodeID];
}
var nodeToRefresh = 0;
var mode2use = "none";
if (typeof _refreshGridArea == 'undefined') _refreshGridArea=true;