From f4254b5281183c1272b667a80dc1408696dbab3b Mon Sep 17 00:00:00 2001 From: Klaus Leithoff Date: Thu, 9 Jan 2014 08:36:22 +0000 Subject: [PATCH] try to improve speed and refresh behavior --- mail/inc/class.mail_bo.inc.php | 20 +++++++++++++++++--- mail/inc/class.mail_ui.inc.php | 19 ++++++++++++++----- mail/js/app.js | 14 ++++++++++---- 3 files changed, 41 insertions(+), 12 deletions(-) diff --git a/mail/inc/class.mail_bo.inc.php b/mail/inc/class.mail_bo.inc.php index 92a78bb9fb..fd0f28dc71 100644 --- a/mail/inc/class.mail_bo.inc.php +++ b/mail/inc/class.mail_bo.inc.php @@ -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); diff --git a/mail/inc/class.mail_ui.inc.php b/mail/inc/class.mail_ui.inc.php index d1ca828962..847ca1a7bb 100644 --- a/mail/inc/class.mail_ui.inc.php +++ b/mail/inc/class.mail_ui.inc.php @@ -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'); } diff --git a/mail/js/app.js b/mail/js/app.js index 51623dcc8a..693f95b011 100644 --- a/mail/js/app.js +++ b/mail/js/app.js @@ -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;